@happyvertical/smrt-jobs 0.57.36 → 0.57.37

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/AGENTS.md CHANGED
@@ -57,6 +57,7 @@ A job `timeout` only races the handler's promise — JavaScript cannot preempt a
57
57
  Recovery keys on **worker-process liveness**, never per-job heartbeat freshness (a CPU-bound synchronous handler used to starve the heartbeat and false-recover its own running jobs).
58
58
 
59
59
  - **`SmrtWorker` / `_smrt_workers`**: one lease row per runner *incarnation* (`workerId` is per-incarnation unique via `createWorkerKey`, so a restart never looks like it still owns the previous crash's jobs). `leaseExpiresAt` is a `datetime` (an integer epoch-ms column overflows `int4`/`INT32` on Postgres/DuckDB). Stage 1 writes/compares it against the host clock — the same approach the old heartbeat recovery used, so it's no more skew-sensitive than the code it replaced.
60
+ - **`SmrtWorker.queues`** (nullable JSON `string[]`, #3902): the runner's configured `queues`, written at `registerWorker` and re-written on every lease renewal (main-loop and off-loop ticker). `SmrtWorkerCollection.liveWorkerKeysForQueue(queue)` returns fresh-lease workers that poll a queue; rows with `queues = null` (older runners, schedule runners) never match. Existing databases need `smrt db:migrate` (additive column) before an upgraded runner starts.
60
61
  - **Process-global live set** (`worker-liveness.ts`, `globalThis.__smrtLiveWorkers`): checked synchronously, so it can't be starved by a blocked loop. Covers all same-process topologies.
61
62
  - **Off-loop ticker** (`worker-liveness-ticker.ts` + `worker-liveness-thread.ts`): for engines a second connection can reach (Postgres, file-backed SQLite — `offLoopEligible()`), `start()` spawns a `node:worker_threads` ticker that renews the lease on its own thread, so a CPU-bound synchronous handler on the main loop can't starve it. In-memory SQLite / DuckDB, a thread-spawn failure, a start-handshake timeout, or the thread dying mid-run all fall back to main-loop renewal; the in-process live set keeps same-process correct regardless. The worker entry is a separate build entry resolved via `import.meta.resolve('@happyvertical/smrt-jobs/worker-liveness-thread')`.
62
63
  - **Recovery rule** (both runners): a `running` job is orphaned iff its worker is *not alive* = not in the live set **and** no fresh `_smrt_workers` lease. The live set takes precedence over a stale lease. TaskRunner also never recovers a job in its own `activeJobs`. If `_smrt_workers` is absent, recovery skips lease checks (never mass-recovers). Recovery is swept at most once per lease tick, and terminal/recovery writes use `RETURNING id` (not `rowCount`, which DuckDB/JSON adapters always report as ≥1).
@@ -10,7 +10,7 @@ import { AsyncLocalStorage } from "node:async_hooks";
10
10
  import { EventEmitter } from "node:events";
11
11
  import { Worker } from "node:worker_threads";
12
12
  //#region src/__smrt-register__.ts
13
- ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-jobs","packageVersion":"0.57.36","objects":{"@happyvertical/smrt-jobs:ForgeDelivery":{"name":"forgedelivery","className":"ForgeDelivery","qualifiedName":"@happyvertical/smrt-jobs:ForgeDelivery","collection":"forgedeliveries","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/forge-projection.ts","packageName":"@happyvertical/smrt-jobs","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"provider":{"type":"text","required":true,"_meta":{"required":true}},"deliveryId":{"type":"text","required":true,"_meta":{"required":true}},"installationKey":{"type":"text","required":false,"_meta":{"nullable":true}},"repositoryKey":{"type":"text","required":false,"_meta":{"nullable":true}},"eventName":{"type":"text","required":true,"_meta":{"required":true}},"payload":{"type":"json","required":false,"_meta":{}},"status":{"type":"text","required":true,"default":"pending","_meta":{"required":true,"default":"pending"},"enum":["pending","leased","retry","completed","dead_letter"]},"attempts":{"type":"integer","required":true,"default":0,"_meta":{"required":true,"default":0}},"maxAttempts":{"type":"integer","required":true,"default":5,"_meta":{"required":true,"default":5}},"receivedAt":{"type":"datetime","required":true,"_meta":{"required":true}},"nextAttemptAt":{"type":"datetime","required":true,"_meta":{"required":true}},"leaseOwner":{"type":"text","required":false,"_meta":{"nullable":true}},"leaseToken":{"type":"text","required":false,"_meta":{"nullable":true}},"leaseExpiresAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"lastError":{"type":"text","required":false,"_meta":{"nullable":true}},"completedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"replayCount":{"type":"integer","required":true,"default":0,"_meta":{"required":true,"default":0}}},"methods":{},"decoratorConfig":{"tableName":"_smrt_forge_deliveries","conflictColumns":["tenant_id","provider","delivery_id"],"api":false,"cli":false,"mcp":false,"indexes":[{"name":"_smrt_forge_deliveries_status_next_attempt_at_idx","columns":["status","nextAttemptAt"]},{"name":"_smrt_forge_deliveries_status_lease_expires_at_idx","columns":["status","leaseExpiresAt"]}],"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"ForgeDelivery","collectionExportName":"ForgeDeliveryCollection","validationRules":[{"field":"provider","rule":"required","fieldType":"text"},{"field":"deliveryId","rule":"required","fieldType":"text"},{"field":"eventName","rule":"required","fieldType":"text"},{"field":"status","rule":"required","fieldType":"text"},{"field":"attempts","rule":"required","fieldType":"integer"},{"field":"maxAttempts","rule":"required","fieldType":"integer"},{"field":"receivedAt","rule":"required","fieldType":"datetime"},{"field":"nextAttemptAt","rule":"required","fieldType":"datetime"},{"field":"replayCount","rule":"required","fieldType":"integer"}],"schema":{"tableName":"_smrt_forge_deliveries","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_forge_deliveries\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"provider\\" TEXT NOT NULL,\\n \\"delivery_id\\" TEXT NOT NULL,\\n \\"installation_key\\" TEXT,\\n \\"repository_key\\" TEXT,\\n \\"event_name\\" TEXT NOT NULL,\\n \\"payload\\" JSON,\\n \\"status\\" TEXT NOT NULL DEFAULT 'pending',\\n \\"attempts\\" INTEGER NOT NULL DEFAULT 0,\\n \\"max_attempts\\" INTEGER NOT NULL DEFAULT 5,\\n \\"received_at\\" TIMESTAMP NOT NULL,\\n \\"next_attempt_at\\" TIMESTAMP NOT NULL,\\n \\"lease_owner\\" TEXT,\\n \\"lease_token\\" TEXT,\\n \\"lease_expires_at\\" TIMESTAMP,\\n \\"last_error\\" TEXT,\\n \\"completed_at\\" TIMESTAMP,\\n \\"replay_count\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"provider":{"type":"TEXT","notNull":true,"unique":false},"delivery_id":{"type":"TEXT","notNull":true,"unique":false},"installation_key":{"type":"TEXT","notNull":false,"unique":false},"repository_key":{"type":"TEXT","notNull":false,"unique":false},"event_name":{"type":"TEXT","notNull":true,"unique":false},"payload":{"type":"JSON","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":true,"unique":false,"default":"pending"},"attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"max_attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":5},"received_at":{"type":"TIMESTAMP","notNull":true,"unique":false},"next_attempt_at":{"type":"TIMESTAMP","notNull":true,"unique":false},"lease_owner":{"type":"TEXT","notNull":false,"unique":false},"lease_token":{"type":"TEXT","notNull":false,"unique":false},"lease_expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"last_error":{"type":"TEXT","notNull":false,"unique":false},"completed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"replay_count":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"_smrt_forge_deliveries_tenant_id_provider_idx","columns":["tenant_id","provider","delivery_id"],"unique":true},{"name":"_smrt_forge_deliveries_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_forge_deliveries_status_next_attempt_at_idx","columns":["status","next_attempt_at"]},{"name":"_smrt_forge_deliveries_status_lease_expires_at_idx","columns":["status","lease_expires_at"]},{"name":"_smrt_forge_deliveries_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"38d3f476"},"importPath":"@happyvertical/smrt-jobs"},"@happyvertical/smrt-jobs:ForgeProjectionCheckpoint":{"name":"forgeprojectioncheckpoint","className":"ForgeProjectionCheckpoint","qualifiedName":"@happyvertical/smrt-jobs:ForgeProjectionCheckpoint","collection":"forgeprojectioncheckpoints","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/forge-projection.ts","packageName":"@happyvertical/smrt-jobs","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"projection":{"type":"text","required":true,"_meta":{"required":true}},"subjectKey":{"type":"text","required":true,"_meta":{"required":true}},"observationVersion":{"type":"integer","required":true,"_meta":{"required":true}},"deliveryId":{"type":"text","required":true,"_meta":{"required":true}},"observedAt":{"type":"datetime","required":true,"_meta":{"required":true}}},"methods":{},"decoratorConfig":{"tableName":"_smrt_forge_projection_checkpoints","conflictColumns":["tenant_id","projection","subject_key"],"api":false,"cli":false,"mcp":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"ForgeProjectionCheckpoint","collectionExportName":"ForgeProjectionCheckpointCollection","validationRules":[{"field":"projection","rule":"required","fieldType":"text"},{"field":"subjectKey","rule":"required","fieldType":"text"},{"field":"observationVersion","rule":"required","fieldType":"integer"},{"field":"deliveryId","rule":"required","fieldType":"text"},{"field":"observedAt","rule":"required","fieldType":"datetime"}],"schema":{"tableName":"_smrt_forge_projection_checkpoints","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_forge_projection_checkpoints\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"projection\\" TEXT NOT NULL,\\n \\"subject_key\\" TEXT NOT NULL,\\n \\"observation_version\\" INTEGER NOT NULL,\\n \\"delivery_id\\" TEXT NOT NULL,\\n \\"observed_at\\" TIMESTAMP NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"projection":{"type":"TEXT","notNull":true,"unique":false},"subject_key":{"type":"TEXT","notNull":true,"unique":false},"observation_version":{"type":"INTEGER","notNull":true,"unique":false},"delivery_id":{"type":"TEXT","notNull":true,"unique":false},"observed_at":{"type":"TIMESTAMP","notNull":true,"unique":false}},"indexes":[{"name":"_smrt_forge_projection_checkpoints_tenant_id_projection_idx","columns":["tenant_id","projection","subject_key"],"unique":true},{"name":"_smrt_forge_projection_checkpoints_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_forge_projection_checkpoints_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"39c12493"},"importPath":"@happyvertical/smrt-jobs"},"@happyvertical/smrt-jobs:ForgeDeliveryCollection":{"name":"forgedeliverycollection","className":"ForgeDeliveryCollection","qualifiedName":"@happyvertical/smrt-jobs:ForgeDeliveryCollection","collection":"forgedeliveries","description":"Durable provider delivery inbox.","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/forge-projection.ts","packageName":"@happyvertical/smrt-jobs","fields":{},"methods":{"accept":{"name":"accept","async":true,"parameters":[{"name":"input","type":"AcceptForgeDeliveryInput","optional":false},{"name":"audit","type":"ForgeProjectionAuditHook","optional":true}],"returnType":"Promise<AcceptedForgeDelivery>","isStatic":false,"isPublic":true},"claimReady":{"name":"claimReady","async":true,"parameters":[{"name":"options","type":"ClaimForgeDeliveryOptions","optional":false},{"name":"audit","type":"ForgeProjectionAuditHook","optional":true}],"returnType":"Promise<ForgeDelivery | null>","isStatic":false,"isPublic":true},"replay":{"name":"replay","async":true,"parameters":[{"name":"id","type":"string","optional":false},{"name":"audit","type":"ForgeProjectionAuditHook","optional":true}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"cli":false,"mcp":false,"tableName":"_smrt_forge_deliveries"},"extends":"SmrtCollection","extendsTypeArg":"ForgeDelivery","exportName":"ForgeDeliveryCollection","collectionExportName":"ForgeDeliveryCollectionCollection","schema":{"tableName":"_smrt_forge_deliveries","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_forge_deliveries\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"provider\\" TEXT NOT NULL,\\n \\"delivery_id\\" TEXT NOT NULL,\\n \\"installation_key\\" TEXT,\\n \\"repository_key\\" TEXT,\\n \\"event_name\\" TEXT NOT NULL,\\n \\"payload\\" JSON,\\n \\"status\\" TEXT NOT NULL DEFAULT 'pending',\\n \\"attempts\\" INTEGER NOT NULL DEFAULT 0,\\n \\"max_attempts\\" INTEGER NOT NULL DEFAULT 5,\\n \\"received_at\\" TIMESTAMP NOT NULL,\\n \\"next_attempt_at\\" TIMESTAMP NOT NULL,\\n \\"lease_owner\\" TEXT,\\n \\"lease_token\\" TEXT,\\n \\"lease_expires_at\\" TIMESTAMP,\\n \\"last_error\\" TEXT,\\n \\"completed_at\\" TIMESTAMP,\\n \\"replay_count\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"provider":{"type":"TEXT","notNull":true,"unique":false},"delivery_id":{"type":"TEXT","notNull":true,"unique":false},"installation_key":{"type":"TEXT","notNull":false,"unique":false},"repository_key":{"type":"TEXT","notNull":false,"unique":false},"event_name":{"type":"TEXT","notNull":true,"unique":false},"payload":{"type":"JSON","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":true,"unique":false,"default":"pending"},"attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"max_attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":5},"received_at":{"type":"TIMESTAMP","notNull":true,"unique":false},"next_attempt_at":{"type":"TIMESTAMP","notNull":true,"unique":false},"lease_owner":{"type":"TEXT","notNull":false,"unique":false},"lease_token":{"type":"TEXT","notNull":false,"unique":false},"lease_expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"last_error":{"type":"TEXT","notNull":false,"unique":false},"completed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"replay_count":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"_smrt_forge_deliveries_tenant_id_provider_idx","columns":["tenant_id","provider","delivery_id"],"unique":true},{"name":"_smrt_forge_deliveries_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_forge_deliveries_status_next_attempt_at_idx","columns":["status","next_attempt_at"]},{"name":"_smrt_forge_deliveries_status_lease_expires_at_idx","columns":["status","lease_expires_at"]},{"name":"_smrt_forge_deliveries_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"38d3f476"},"importPath":"@happyvertical/smrt-jobs"},"@happyvertical/smrt-jobs:SmrtJobEvent":{"name":"smrtjobevent","className":"SmrtJobEvent","qualifiedName":"@happyvertical/smrt-jobs:SmrtJobEvent","collection":"smrtjobevents","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/smrt-job-event.ts","packageName":"@happyvertical/smrt-jobs","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"jobId":{"type":"foreignKey","required":true,"related":"SmrtJob","_meta":{"required":true,"constraint":false}},"type":{"type":"text","required":true,"default":"log","_meta":{"required":true,"default":"log"}},"level":{"type":"text","required":true,"default":"info","_meta":{"required":true,"default":"info"},"enum":["debug","info","warn","error"]},"stage":{"type":"text","required":false,"_meta":{"nullable":true}},"progress":{"type":"integer","required":false,"_meta":{"nullable":true}},"message":{"type":"text","required":true,"default":"","_meta":{"required":true,"default":""}},"data":{"type":"json","required":false,"_meta":{}},"createdAt":{"type":"datetime","required":true,"_meta":{"required":true}}},"methods":{"toCursor":{"name":"toCursor","async":false,"parameters":[],"returnType":"string","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"_smrt_job_events","api":false,"cli":{"include":["list","get"],"http":false,"skipApiCheck":true},"mcp":false,"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"SmrtJobEvent","collectionExportName":"SmrtJobEventCollection","validationRules":[{"field":"jobId","rule":"required","fieldType":"foreignKey"},{"field":"type","rule":"required","fieldType":"text"},{"field":"level","rule":"required","fieldType":"text"},{"field":"message","rule":"required","fieldType":"text"},{"field":"createdAt","rule":"required","fieldType":"datetime"}],"schema":{"tableName":"_smrt_job_events","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_job_events\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"job_id\\" UUID NOT NULL,\\n \\"type\\" TEXT NOT NULL DEFAULT 'log',\\n \\"level\\" TEXT NOT NULL DEFAULT 'info',\\n \\"stage\\" TEXT,\\n \\"progress\\" INTEGER,\\n \\"message\\" TEXT NOT NULL DEFAULT '',\\n \\"data\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"job_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false},"type":{"type":"TEXT","notNull":true,"unique":false,"default":"log"},"level":{"type":"TEXT","notNull":true,"unique":false,"default":"info"},"stage":{"type":"TEXT","notNull":false,"unique":false},"progress":{"type":"INTEGER","notNull":false,"unique":false},"message":{"type":"TEXT","notNull":true,"unique":false,"default":""},"data":{"type":"JSON","notNull":false,"unique":false}},"indexes":[{"name":"_smrt_job_events_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_job_events_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"_smrt_job_events_job_id_idx","columns":["job_id"]}],"version":"8a9faeec"},"importPath":"@happyvertical/smrt-jobs"},"@happyvertical/smrt-jobs:SmrtJobEventCollection":{"name":"smrtjobeventcollection","className":"SmrtJobEventCollection","qualifiedName":"@happyvertical/smrt-jobs:SmrtJobEventCollection","collection":"smrtjobevents","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/smrt-job-event.ts","packageName":"@happyvertical/smrt-jobs","fields":{},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"append":{"name":"append","async":true,"parameters":[{"name":"input","type":"SmrtJobEventData","optional":false}],"returnType":"Promise<SmrtJobEvent>","isStatic":false,"isPublic":true},"listByJob":{"name":"listByJob","async":true,"parameters":[{"name":"jobId","type":"string","optional":false},{"name":"options","type":"ListJobEventsOptions","optional":true}],"returnType":"Promise<SmrtJobEvent[]>","isStatic":false,"isPublic":true},"listSinceCursor":{"name":"listSinceCursor","async":true,"parameters":[{"name":"options","type":"any","optional":true,"typeUnresolved":true}],"returnType":"Promise<SmrtJobEvent[]>","isStatic":false,"isPublic":true},"latestProgressByJobIds":{"name":"latestProgressByJobIds","async":true,"parameters":[{"name":"jobIds","type":"string[]","optional":false},{"name":"options","type":"object","optional":true,"memberTypes":["string | null"]}],"returnType":"Promise<Map<string, SmrtJobEvent>>","isStatic":false,"isPublic":true},"listTerminalOutcomes":{"name":"listTerminalOutcomes","async":true,"parameters":[{"name":"options","type":"ListTerminalOutcomesOptions","optional":false}],"returnType":"Promise<SmrtJobTerminalOutcomePage>","isStatic":false,"isPublic":true},"cleanup":{"name":"cleanup","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["Date","boolean"]}],"returnType":"Promise<number>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"_smrt_job_events","api":false,"mcp":false,"cli":{"include":["list","get"],"skipApiCheck":true}},"extends":"SmrtCollection","extendsTypeArg":"SmrtJobEvent","exportName":"SmrtJobEventCollection","collectionExportName":"SmrtJobEventCollectionCollection","schema":{"tableName":"_smrt_job_events","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_job_events\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"job_id\\" UUID NOT NULL,\\n \\"type\\" TEXT NOT NULL DEFAULT 'log',\\n \\"level\\" TEXT NOT NULL DEFAULT 'info',\\n \\"stage\\" TEXT,\\n \\"progress\\" INTEGER,\\n \\"message\\" TEXT NOT NULL DEFAULT '',\\n \\"data\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"job_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false},"type":{"type":"TEXT","notNull":true,"unique":false,"default":"log"},"level":{"type":"TEXT","notNull":true,"unique":false,"default":"info"},"stage":{"type":"TEXT","notNull":false,"unique":false},"progress":{"type":"INTEGER","notNull":false,"unique":false},"message":{"type":"TEXT","notNull":true,"unique":false,"default":""},"data":{"type":"JSON","notNull":false,"unique":false}},"indexes":[{"name":"_smrt_job_events_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_job_events_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"_smrt_job_events_job_id_idx","columns":["job_id"]}],"version":"8a9faeec"},"importPath":"@happyvertical/smrt-jobs"},"@happyvertical/smrt-jobs:SmrtJob":{"name":"smrtjob","className":"SmrtJob","qualifiedName":"@happyvertical/smrt-jobs:SmrtJob","collection":"smrtjobs","description":"Persistent job record stored in the _smrt_jobs system table.","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/smrt-job.ts","packageName":"@happyvertical/smrt-jobs","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"queue":{"type":"text","required":true,"default":"default","_meta":{"required":true,"default":"default"}},"objectType":{"type":"text","required":true,"_meta":{"required":true}},"objectId":{"type":"text","required":false,"_meta":{"nullable":true}},"method":{"type":"text","required":true,"_meta":{"required":true}},"args":{"type":"json","required":false,"_meta":{}},"runAt":{"type":"datetime","required":true,"_meta":{"required":true,"indexed":true}},"priority":{"type":"integer","required":true,"default":50,"_meta":{"required":true,"default":50}},"status":{"type":"text","required":true,"default":"pending","_meta":{"required":true,"default":"pending","indexed":true},"enum":["pending","ready","running","completed","failed","cancelled"]},"attempts":{"type":"integer","required":true,"default":0,"_meta":{"required":true,"default":0}},"maxAttempts":{"type":"integer","required":true,"default":3,"_meta":{"required":true,"default":3}},"timeout":{"type":"integer","required":true,"default":300000,"_meta":{"required":true,"default":300000}},"timeoutBehavior":{"type":"text","required":true,"default":"fail","_meta":{"required":true,"default":"fail"},"enum":["fail","kill","warn"]},"startedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"completedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"lastError":{"type":"text","required":false,"_meta":{"nullable":true}},"resultPointer":{"type":"text","required":false,"_meta":{"nullable":true}},"taskId":{"type":"text","required":false,"_meta":{"nullable":true,"unique":true}},"taskOwnerId":{"type":"text","required":false,"_meta":{"nullable":true}},"taskResult":{"type":"json","required":false,"_meta":{"nullable":true}},"taskInputRequests":{"type":"json","required":false,"_meta":{"nullable":true}},"taskInputResponses":{"type":"json","required":false,"_meta":{"nullable":true}},"retryStrategy":{"type":"json","required":false,"_meta":{}},"workerId":{"type":"text","required":false,"_meta":{"nullable":true}},"workerHeartbeat":{"type":"datetime","required":false,"_meta":{"nullable":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"retry":{"name":"retry","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"cancel":{"name":"cancel","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getDescription":{"name":"getDescription","async":false,"parameters":[],"returnType":"string","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"_smrt_jobs","api":false,"cli":{"include":["list","get","retry","cancel"],"skipApiCheck":true,"http":false},"mcp":false,"indexes":[{"name":"_smrt_jobs_status_run_at_idx","columns":["status","runAt"]},{"name":"_smrt_jobs_ready_idx","columns":["status","runAt"],"where":"status = 'pending' AND (task_input_requests IS NULL OR task_input_responses IS NOT NULL)"}],"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"SmrtJob","collectionExportName":"SmrtJobCollection","validationRules":[{"field":"queue","rule":"required","fieldType":"text"},{"field":"objectType","rule":"required","fieldType":"text"},{"field":"method","rule":"required","fieldType":"text"},{"field":"runAt","rule":"required","fieldType":"datetime"},{"field":"priority","rule":"required","fieldType":"integer"},{"field":"status","rule":"required","fieldType":"text"},{"field":"attempts","rule":"required","fieldType":"integer"},{"field":"maxAttempts","rule":"required","fieldType":"integer"},{"field":"timeout","rule":"required","fieldType":"integer"},{"field":"timeoutBehavior","rule":"required","fieldType":"text"}],"schema":{"tableName":"_smrt_jobs","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_jobs\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"queue\\" TEXT NOT NULL DEFAULT 'default',\\n \\"object_type\\" TEXT NOT NULL,\\n \\"object_id\\" TEXT,\\n \\"method\\" TEXT NOT NULL,\\n \\"args\\" JSON,\\n \\"run_at\\" TIMESTAMP NOT NULL,\\n \\"priority\\" INTEGER NOT NULL DEFAULT 50,\\n \\"status\\" TEXT NOT NULL DEFAULT 'pending',\\n \\"attempts\\" INTEGER NOT NULL DEFAULT 0,\\n \\"max_attempts\\" INTEGER NOT NULL DEFAULT 3,\\n \\"timeout\\" INTEGER NOT NULL DEFAULT 300000,\\n \\"timeout_behavior\\" TEXT NOT NULL DEFAULT 'fail',\\n \\"started_at\\" TIMESTAMP,\\n \\"completed_at\\" TIMESTAMP,\\n \\"last_error\\" TEXT,\\n \\"result_pointer\\" TEXT,\\n \\"task_id\\" TEXT UNIQUE,\\n \\"task_owner_id\\" TEXT,\\n \\"task_result\\" JSON,\\n \\"task_input_requests\\" JSON,\\n \\"task_input_responses\\" JSON,\\n \\"retry_strategy\\" JSON,\\n \\"worker_id\\" TEXT,\\n \\"worker_heartbeat\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"queue":{"type":"TEXT","notNull":true,"unique":false,"default":"default"},"object_type":{"type":"TEXT","notNull":true,"unique":false},"object_id":{"type":"TEXT","notNull":false,"unique":false},"method":{"type":"TEXT","notNull":true,"unique":false},"args":{"type":"JSON","notNull":false,"unique":false},"run_at":{"type":"TIMESTAMP","notNull":true,"unique":false},"priority":{"type":"INTEGER","notNull":true,"unique":false,"default":50},"status":{"type":"TEXT","notNull":true,"unique":false,"default":"pending"},"attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"max_attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":3},"timeout":{"type":"INTEGER","notNull":true,"unique":false,"default":300000},"timeout_behavior":{"type":"TEXT","notNull":true,"unique":false,"default":"fail"},"started_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"completed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"last_error":{"type":"TEXT","notNull":false,"unique":false},"result_pointer":{"type":"TEXT","notNull":false,"unique":false},"task_id":{"type":"TEXT","notNull":false,"unique":true},"task_owner_id":{"type":"TEXT","notNull":false,"unique":false},"task_result":{"type":"JSON","notNull":false,"unique":false},"task_input_requests":{"type":"JSON","notNull":false,"unique":false},"task_input_responses":{"type":"JSON","notNull":false,"unique":false},"retry_strategy":{"type":"JSON","notNull":false,"unique":false},"worker_id":{"type":"TEXT","notNull":false,"unique":false},"worker_heartbeat":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"_smrt_jobs_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_jobs_run_at_idx","columns":["run_at"]},{"name":"_smrt_jobs_status_idx","columns":["status"]},{"name":"_smrt_jobs_status_run_at_idx","columns":["status","run_at"]},{"name":"_smrt_jobs_ready_idx","columns":["status","run_at"],"where":"status = 'pending' AND (task_input_requests IS NULL OR task_input_responses IS NOT NULL)"},{"name":"_smrt_jobs_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"43e1324f"},"importPath":"@happyvertical/smrt-jobs"},"@happyvertical/smrt-jobs:SmrtJobCollection":{"name":"smrtjobcollection","className":"SmrtJobCollection","qualifiedName":"@happyvertical/smrt-jobs:SmrtJobCollection","collection":"smrtjobs","description":"Collection for managing SmrtJob objects","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/smrt-job.ts","packageName":"@happyvertical/smrt-jobs","fields":{},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"listByStatus":{"name":"listByStatus","async":true,"parameters":[{"name":"status","type":"JobStatus | JobStatus[]","optional":false,"unionBranches":[{"type":"JobStatus"},{"type":"JobStatus[]"}]},{"name":"options","type":"object","optional":true,"memberTypes":["number","string"]}],"returnType":"Promise<SmrtJob[]>","isStatic":false,"isPublic":true},"listReady":{"name":"listReady","async":true,"parameters":[{"name":"options","type":"object","optional":true,"memberTypes":["number","string[]"]}],"returnType":"Promise<SmrtJob[]>","isStatic":false,"isPublic":true},"claimReady":{"name":"claimReady","async":true,"parameters":[{"name":"options","type":"ClaimReadyOptions","optional":false}],"returnType":"Promise<SmrtJob[]>","isStatic":false,"isPublic":true},"countInFlightForTenant":{"name":"countInFlightForTenant","async":true,"parameters":[{"name":"tenantId","type":"string | null","optional":false,"unionBranches":[{"type":"string"},{"type":"null"}]}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"enqueueJob":{"name":"enqueueJob","async":true,"parameters":[{"name":"data","type":"SmrtJobData","optional":false},{"name":"options","type":"EnqueueJobOptions","optional":true}],"returnType":"Promise<SmrtJob>","isStatic":false,"isPublic":true},"stats":{"name":"stats","async":true,"parameters":[{"name":"queue","type":"string","optional":true}],"returnType":"Promise<object>","isStatic":false,"isPublic":true},"cleanup":{"name":"cleanup","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["Date","number","boolean"]}],"returnType":"Promise<number>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"_smrt_jobs","api":false,"mcp":false,"cli":{"include":["list","get"],"skipApiCheck":true}},"extends":"SmrtCollection","extendsTypeArg":"SmrtJob","exportName":"SmrtJobCollection","collectionExportName":"SmrtJobCollectionCollection","schema":{"tableName":"_smrt_jobs","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_jobs\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"queue\\" TEXT NOT NULL DEFAULT 'default',\\n \\"object_type\\" TEXT NOT NULL,\\n \\"object_id\\" TEXT,\\n \\"method\\" TEXT NOT NULL,\\n \\"args\\" JSON,\\n \\"run_at\\" TIMESTAMP NOT NULL,\\n \\"priority\\" INTEGER NOT NULL DEFAULT 50,\\n \\"status\\" TEXT NOT NULL DEFAULT 'pending',\\n \\"attempts\\" INTEGER NOT NULL DEFAULT 0,\\n \\"max_attempts\\" INTEGER NOT NULL DEFAULT 3,\\n \\"timeout\\" INTEGER NOT NULL DEFAULT 300000,\\n \\"timeout_behavior\\" TEXT NOT NULL DEFAULT 'fail',\\n \\"started_at\\" TIMESTAMP,\\n \\"completed_at\\" TIMESTAMP,\\n \\"last_error\\" TEXT,\\n \\"result_pointer\\" TEXT,\\n \\"task_id\\" TEXT UNIQUE,\\n \\"task_owner_id\\" TEXT,\\n \\"task_result\\" JSON,\\n \\"task_input_requests\\" JSON,\\n \\"task_input_responses\\" JSON,\\n \\"retry_strategy\\" JSON,\\n \\"worker_id\\" TEXT,\\n \\"worker_heartbeat\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"queue":{"type":"TEXT","notNull":true,"unique":false,"default":"default"},"object_type":{"type":"TEXT","notNull":true,"unique":false},"object_id":{"type":"TEXT","notNull":false,"unique":false},"method":{"type":"TEXT","notNull":true,"unique":false},"args":{"type":"JSON","notNull":false,"unique":false},"run_at":{"type":"TIMESTAMP","notNull":true,"unique":false},"priority":{"type":"INTEGER","notNull":true,"unique":false,"default":50},"status":{"type":"TEXT","notNull":true,"unique":false,"default":"pending"},"attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"max_attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":3},"timeout":{"type":"INTEGER","notNull":true,"unique":false,"default":300000},"timeout_behavior":{"type":"TEXT","notNull":true,"unique":false,"default":"fail"},"started_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"completed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"last_error":{"type":"TEXT","notNull":false,"unique":false},"result_pointer":{"type":"TEXT","notNull":false,"unique":false},"task_id":{"type":"TEXT","notNull":false,"unique":true},"task_owner_id":{"type":"TEXT","notNull":false,"unique":false},"task_result":{"type":"JSON","notNull":false,"unique":false},"task_input_requests":{"type":"JSON","notNull":false,"unique":false},"task_input_responses":{"type":"JSON","notNull":false,"unique":false},"retry_strategy":{"type":"JSON","notNull":false,"unique":false},"worker_id":{"type":"TEXT","notNull":false,"unique":false},"worker_heartbeat":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"_smrt_jobs_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_jobs_run_at_idx","columns":["run_at"]},{"name":"_smrt_jobs_status_idx","columns":["status"]},{"name":"_smrt_jobs_status_run_at_idx","columns":["status","run_at"]},{"name":"_smrt_jobs_ready_idx","columns":["status","run_at"],"where":"status = 'pending' AND (task_input_requests IS NULL OR task_input_responses IS NOT NULL)"},{"name":"_smrt_jobs_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"43e1324f"},"importPath":"@happyvertical/smrt-jobs"},"@happyvertical/smrt-jobs:SmrtWorker":{"name":"smrtworker","className":"SmrtWorker","qualifiedName":"@happyvertical/smrt-jobs:SmrtWorker","collection":"smrtworkers","description":"Liveness record for a single TaskRunner / ScheduleRunner incarnation, stored in the _smrt_workers system table.","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/smrt-worker.ts","packageName":"@happyvertical/smrt-jobs","fields":{"workerId":{"type":"text","required":true,"_meta":{"required":true}},"pid":{"type":"integer","required":false,"_meta":{"nullable":true}},"hostname":{"type":"text","required":false,"_meta":{"nullable":true}},"startedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"heartbeatAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"leaseExpiresAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"status":{"type":"text","required":true,"default":"running","_meta":{"required":true,"default":"running"}}},"methods":{},"decoratorConfig":{"tableName":"_smrt_workers","conflictColumns":["worker_id"],"api":false,"cli":false,"mcp":false},"extends":"SmrtObject","exportName":"SmrtWorker","collectionExportName":"SmrtWorkerCollection","validationRules":[{"field":"workerId","rule":"required","fieldType":"text"},{"field":"status","rule":"required","fieldType":"text"}],"schema":{"tableName":"_smrt_workers","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_workers\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"worker_id\\" TEXT NOT NULL,\\n \\"pid\\" INTEGER,\\n \\"hostname\\" TEXT,\\n \\"started_at\\" TIMESTAMP,\\n \\"heartbeat_at\\" TIMESTAMP,\\n \\"lease_expires_at\\" TIMESTAMP,\\n \\"status\\" TEXT NOT NULL DEFAULT 'running'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"worker_id":{"type":"TEXT","notNull":true,"unique":false},"pid":{"type":"INTEGER","notNull":false,"unique":false},"hostname":{"type":"TEXT","notNull":false,"unique":false},"started_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"heartbeat_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"lease_expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":true,"unique":false,"default":"running"}},"indexes":[{"name":"_smrt_workers_worker_id_idx","columns":["worker_id"],"unique":true},{"name":"_smrt_workers_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_workers_created_at_idx","columns":["created_at"]}],"version":"bfaad669"},"importPath":"@happyvertical/smrt-jobs"},"@happyvertical/smrt-jobs:SmrtWorkerCollection":{"name":"smrtworkercollection","className":"SmrtWorkerCollection","qualifiedName":"@happyvertical/smrt-jobs:SmrtWorkerCollection","collection":"smrtworkers","description":"Collection for managing _smrt_workers liveness rows.","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/smrt-worker.ts","packageName":"@happyvertical/smrt-jobs","fields":{},"methods":{"assertReady":{"name":"assertReady","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"tableReady":{"name":"tableReady","async":true,"parameters":[],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"registerWorker":{"name":"registerWorker","async":true,"parameters":[{"name":"input","type":"RegisterWorkerInput","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"renewLease":{"name":"renewLease","async":true,"parameters":[{"name":"workerKey","type":"string","optional":false},{"name":"leaseTtlMs","type":"number","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"expireWorker":{"name":"expireWorker","async":true,"parameters":[{"name":"workerKey","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"freshLeaseWorkerKeys":{"name":"freshLeaseWorkerKeys","async":true,"parameters":[],"returnType":"Promise<Set<string>>","isStatic":false,"isPublic":true},"pruneExpired":{"name":"pruneExpired","async":true,"parameters":[{"name":"graceMs","type":"number","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"_smrt_workers","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"SmrtWorker","exportName":"SmrtWorkerCollection","collectionExportName":"SmrtWorkerCollectionCollection","schema":{"tableName":"_smrt_workers","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_workers\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"worker_id\\" TEXT NOT NULL,\\n \\"pid\\" INTEGER,\\n \\"hostname\\" TEXT,\\n \\"started_at\\" TIMESTAMP,\\n \\"heartbeat_at\\" TIMESTAMP,\\n \\"lease_expires_at\\" TIMESTAMP,\\n \\"status\\" TEXT NOT NULL DEFAULT 'running'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"worker_id":{"type":"TEXT","notNull":true,"unique":false},"pid":{"type":"INTEGER","notNull":false,"unique":false},"hostname":{"type":"TEXT","notNull":false,"unique":false},"started_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"heartbeat_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"lease_expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":true,"unique":false,"default":"running"}},"indexes":[{"name":"_smrt_workers_worker_id_idx","columns":["worker_id"],"unique":true},{"name":"_smrt_workers_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_workers_created_at_idx","columns":["created_at"]}],"version":"bfaad669"},"importPath":"@happyvertical/smrt-jobs"}},"moduleType":"smrt","smrtDependencies":["@happyvertical/smrt-core","@happyvertical/smrt-tenancy"],"browser":{"status":"server-only","issues":["#3615","#3624","#3627"],"reason":"worker_threads runner (the edge commerce inherits), node:events/crypto, bull/bullmq/cloud-tasks SDK graph","via":["@happyvertical/smrt-tenancy"]},"stampsConstructors":true}`));
13
+ ObjectRegistry.registerPackageManifest(JSON.parse(`{"version":"1.0.0","timestamp":0,"packageName":"@happyvertical/smrt-jobs","packageVersion":"0.57.37","objects":{"@happyvertical/smrt-jobs:ForgeDelivery":{"name":"forgedelivery","className":"ForgeDelivery","qualifiedName":"@happyvertical/smrt-jobs:ForgeDelivery","collection":"forgedeliveries","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/forge-projection.ts","packageName":"@happyvertical/smrt-jobs","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"provider":{"type":"text","required":true,"_meta":{"required":true}},"deliveryId":{"type":"text","required":true,"_meta":{"required":true}},"installationKey":{"type":"text","required":false,"_meta":{"nullable":true}},"repositoryKey":{"type":"text","required":false,"_meta":{"nullable":true}},"eventName":{"type":"text","required":true,"_meta":{"required":true}},"payload":{"type":"json","required":false,"_meta":{}},"status":{"type":"text","required":true,"default":"pending","_meta":{"required":true,"default":"pending"},"enum":["pending","leased","retry","completed","dead_letter"]},"attempts":{"type":"integer","required":true,"default":0,"_meta":{"required":true,"default":0}},"maxAttempts":{"type":"integer","required":true,"default":5,"_meta":{"required":true,"default":5}},"receivedAt":{"type":"datetime","required":true,"_meta":{"required":true}},"nextAttemptAt":{"type":"datetime","required":true,"_meta":{"required":true}},"leaseOwner":{"type":"text","required":false,"_meta":{"nullable":true}},"leaseToken":{"type":"text","required":false,"_meta":{"nullable":true}},"leaseExpiresAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"lastError":{"type":"text","required":false,"_meta":{"nullable":true}},"completedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"replayCount":{"type":"integer","required":true,"default":0,"_meta":{"required":true,"default":0}}},"methods":{},"decoratorConfig":{"tableName":"_smrt_forge_deliveries","conflictColumns":["tenant_id","provider","delivery_id"],"api":false,"cli":false,"mcp":false,"indexes":[{"name":"_smrt_forge_deliveries_status_next_attempt_at_idx","columns":["status","nextAttemptAt"]},{"name":"_smrt_forge_deliveries_status_lease_expires_at_idx","columns":["status","leaseExpiresAt"]}],"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"ForgeDelivery","collectionExportName":"ForgeDeliveryCollection","validationRules":[{"field":"provider","rule":"required","fieldType":"text"},{"field":"deliveryId","rule":"required","fieldType":"text"},{"field":"eventName","rule":"required","fieldType":"text"},{"field":"status","rule":"required","fieldType":"text"},{"field":"attempts","rule":"required","fieldType":"integer"},{"field":"maxAttempts","rule":"required","fieldType":"integer"},{"field":"receivedAt","rule":"required","fieldType":"datetime"},{"field":"nextAttemptAt","rule":"required","fieldType":"datetime"},{"field":"replayCount","rule":"required","fieldType":"integer"}],"schema":{"tableName":"_smrt_forge_deliveries","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_forge_deliveries\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"provider\\" TEXT NOT NULL,\\n \\"delivery_id\\" TEXT NOT NULL,\\n \\"installation_key\\" TEXT,\\n \\"repository_key\\" TEXT,\\n \\"event_name\\" TEXT NOT NULL,\\n \\"payload\\" JSON,\\n \\"status\\" TEXT NOT NULL DEFAULT 'pending',\\n \\"attempts\\" INTEGER NOT NULL DEFAULT 0,\\n \\"max_attempts\\" INTEGER NOT NULL DEFAULT 5,\\n \\"received_at\\" TIMESTAMP NOT NULL,\\n \\"next_attempt_at\\" TIMESTAMP NOT NULL,\\n \\"lease_owner\\" TEXT,\\n \\"lease_token\\" TEXT,\\n \\"lease_expires_at\\" TIMESTAMP,\\n \\"last_error\\" TEXT,\\n \\"completed_at\\" TIMESTAMP,\\n \\"replay_count\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"provider":{"type":"TEXT","notNull":true,"unique":false},"delivery_id":{"type":"TEXT","notNull":true,"unique":false},"installation_key":{"type":"TEXT","notNull":false,"unique":false},"repository_key":{"type":"TEXT","notNull":false,"unique":false},"event_name":{"type":"TEXT","notNull":true,"unique":false},"payload":{"type":"JSON","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":true,"unique":false,"default":"pending"},"attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"max_attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":5},"received_at":{"type":"TIMESTAMP","notNull":true,"unique":false},"next_attempt_at":{"type":"TIMESTAMP","notNull":true,"unique":false},"lease_owner":{"type":"TEXT","notNull":false,"unique":false},"lease_token":{"type":"TEXT","notNull":false,"unique":false},"lease_expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"last_error":{"type":"TEXT","notNull":false,"unique":false},"completed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"replay_count":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"_smrt_forge_deliveries_tenant_id_provider_idx","columns":["tenant_id","provider","delivery_id"],"unique":true},{"name":"_smrt_forge_deliveries_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_forge_deliveries_status_next_attempt_at_idx","columns":["status","next_attempt_at"]},{"name":"_smrt_forge_deliveries_status_lease_expires_at_idx","columns":["status","lease_expires_at"]},{"name":"_smrt_forge_deliveries_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"38d3f476"},"importPath":"@happyvertical/smrt-jobs"},"@happyvertical/smrt-jobs:ForgeProjectionCheckpoint":{"name":"forgeprojectioncheckpoint","className":"ForgeProjectionCheckpoint","qualifiedName":"@happyvertical/smrt-jobs:ForgeProjectionCheckpoint","collection":"forgeprojectioncheckpoints","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/forge-projection.ts","packageName":"@happyvertical/smrt-jobs","fields":{"tenantId":{"type":"text","required":true,"_meta":{"sqlType":"UUID","__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":true,"autoPopulate":true,"nullable":false,"mode":"required","field":"tenantId","allowSuperAdminBypass":false}}},"projection":{"type":"text","required":true,"_meta":{"required":true}},"subjectKey":{"type":"text","required":true,"_meta":{"required":true}},"observationVersion":{"type":"integer","required":true,"_meta":{"required":true}},"deliveryId":{"type":"text","required":true,"_meta":{"required":true}},"observedAt":{"type":"datetime","required":true,"_meta":{"required":true}}},"methods":{},"decoratorConfig":{"tableName":"_smrt_forge_projection_checkpoints","conflictColumns":["tenant_id","projection","subject_key"],"api":false,"cli":false,"mcp":false,"tenantScoped":{"mode":"required"}},"extends":"SmrtObject","exportName":"ForgeProjectionCheckpoint","collectionExportName":"ForgeProjectionCheckpointCollection","validationRules":[{"field":"projection","rule":"required","fieldType":"text"},{"field":"subjectKey","rule":"required","fieldType":"text"},{"field":"observationVersion","rule":"required","fieldType":"integer"},{"field":"deliveryId","rule":"required","fieldType":"text"},{"field":"observedAt","rule":"required","fieldType":"datetime"}],"schema":{"tableName":"_smrt_forge_projection_checkpoints","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_forge_projection_checkpoints\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"projection\\" TEXT NOT NULL,\\n \\"subject_key\\" TEXT NOT NULL,\\n \\"observation_version\\" INTEGER NOT NULL,\\n \\"delivery_id\\" TEXT NOT NULL,\\n \\"observed_at\\" TIMESTAMP NOT NULL\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"projection":{"type":"TEXT","notNull":true,"unique":false},"subject_key":{"type":"TEXT","notNull":true,"unique":false},"observation_version":{"type":"INTEGER","notNull":true,"unique":false},"delivery_id":{"type":"TEXT","notNull":true,"unique":false},"observed_at":{"type":"TIMESTAMP","notNull":true,"unique":false}},"indexes":[{"name":"_smrt_forge_projection_checkpoints_tenant_id_projection_idx","columns":["tenant_id","projection","subject_key"],"unique":true},{"name":"_smrt_forge_projection_checkpoints_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_forge_projection_checkpoints_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"39c12493"},"importPath":"@happyvertical/smrt-jobs"},"@happyvertical/smrt-jobs:ForgeDeliveryCollection":{"name":"forgedeliverycollection","className":"ForgeDeliveryCollection","qualifiedName":"@happyvertical/smrt-jobs:ForgeDeliveryCollection","collection":"forgedeliveries","description":"Durable provider delivery inbox.","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/forge-projection.ts","packageName":"@happyvertical/smrt-jobs","fields":{},"methods":{"accept":{"name":"accept","async":true,"parameters":[{"name":"input","type":"AcceptForgeDeliveryInput","optional":false},{"name":"audit","type":"ForgeProjectionAuditHook","optional":true}],"returnType":"Promise<AcceptedForgeDelivery>","isStatic":false,"isPublic":true},"claimReady":{"name":"claimReady","async":true,"parameters":[{"name":"options","type":"ClaimForgeDeliveryOptions","optional":false},{"name":"audit","type":"ForgeProjectionAuditHook","optional":true}],"returnType":"Promise<ForgeDelivery | null>","isStatic":false,"isPublic":true},"replay":{"name":"replay","async":true,"parameters":[{"name":"id","type":"string","optional":false},{"name":"audit","type":"ForgeProjectionAuditHook","optional":true}],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true}},"decoratorConfig":{"api":false,"cli":false,"mcp":false,"tableName":"_smrt_forge_deliveries"},"extends":"SmrtCollection","extendsTypeArg":"ForgeDelivery","exportName":"ForgeDeliveryCollection","collectionExportName":"ForgeDeliveryCollectionCollection","schema":{"tableName":"_smrt_forge_deliveries","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_forge_deliveries\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID NOT NULL,\\n \\"provider\\" TEXT NOT NULL,\\n \\"delivery_id\\" TEXT NOT NULL,\\n \\"installation_key\\" TEXT,\\n \\"repository_key\\" TEXT,\\n \\"event_name\\" TEXT NOT NULL,\\n \\"payload\\" JSON,\\n \\"status\\" TEXT NOT NULL DEFAULT 'pending',\\n \\"attempts\\" INTEGER NOT NULL DEFAULT 0,\\n \\"max_attempts\\" INTEGER NOT NULL DEFAULT 5,\\n \\"received_at\\" TIMESTAMP NOT NULL,\\n \\"next_attempt_at\\" TIMESTAMP NOT NULL,\\n \\"lease_owner\\" TEXT,\\n \\"lease_token\\" TEXT,\\n \\"lease_expires_at\\" TIMESTAMP,\\n \\"last_error\\" TEXT,\\n \\"completed_at\\" TIMESTAMP,\\n \\"replay_count\\" INTEGER NOT NULL DEFAULT 0\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":true,"unique":false},"provider":{"type":"TEXT","notNull":true,"unique":false},"delivery_id":{"type":"TEXT","notNull":true,"unique":false},"installation_key":{"type":"TEXT","notNull":false,"unique":false},"repository_key":{"type":"TEXT","notNull":false,"unique":false},"event_name":{"type":"TEXT","notNull":true,"unique":false},"payload":{"type":"JSON","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":true,"unique":false,"default":"pending"},"attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"max_attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":5},"received_at":{"type":"TIMESTAMP","notNull":true,"unique":false},"next_attempt_at":{"type":"TIMESTAMP","notNull":true,"unique":false},"lease_owner":{"type":"TEXT","notNull":false,"unique":false},"lease_token":{"type":"TEXT","notNull":false,"unique":false},"lease_expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"last_error":{"type":"TEXT","notNull":false,"unique":false},"completed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"replay_count":{"type":"INTEGER","notNull":true,"unique":false,"default":0}},"indexes":[{"name":"_smrt_forge_deliveries_tenant_id_provider_idx","columns":["tenant_id","provider","delivery_id"],"unique":true},{"name":"_smrt_forge_deliveries_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_forge_deliveries_status_next_attempt_at_idx","columns":["status","next_attempt_at"]},{"name":"_smrt_forge_deliveries_status_lease_expires_at_idx","columns":["status","lease_expires_at"]},{"name":"_smrt_forge_deliveries_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"38d3f476"},"importPath":"@happyvertical/smrt-jobs"},"@happyvertical/smrt-jobs:SmrtJobEvent":{"name":"smrtjobevent","className":"SmrtJobEvent","qualifiedName":"@happyvertical/smrt-jobs:SmrtJobEvent","collection":"smrtjobevents","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/smrt-job-event.ts","packageName":"@happyvertical/smrt-jobs","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"jobId":{"type":"foreignKey","required":true,"related":"SmrtJob","_meta":{"required":true,"constraint":false}},"type":{"type":"text","required":true,"default":"log","_meta":{"required":true,"default":"log"}},"level":{"type":"text","required":true,"default":"info","_meta":{"required":true,"default":"info"},"enum":["debug","info","warn","error"]},"stage":{"type":"text","required":false,"_meta":{"nullable":true}},"progress":{"type":"integer","required":false,"_meta":{"nullable":true}},"message":{"type":"text","required":true,"default":"","_meta":{"required":true,"default":""}},"data":{"type":"json","required":false,"_meta":{}},"createdAt":{"type":"datetime","required":true,"_meta":{"required":true}}},"methods":{"toCursor":{"name":"toCursor","async":false,"parameters":[],"returnType":"string","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"_smrt_job_events","api":false,"cli":{"include":["list","get"],"http":false,"skipApiCheck":true},"mcp":false,"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"SmrtJobEvent","collectionExportName":"SmrtJobEventCollection","validationRules":[{"field":"jobId","rule":"required","fieldType":"foreignKey"},{"field":"type","rule":"required","fieldType":"text"},{"field":"level","rule":"required","fieldType":"text"},{"field":"message","rule":"required","fieldType":"text"},{"field":"createdAt","rule":"required","fieldType":"datetime"}],"schema":{"tableName":"_smrt_job_events","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_job_events\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"job_id\\" UUID NOT NULL,\\n \\"type\\" TEXT NOT NULL DEFAULT 'log',\\n \\"level\\" TEXT NOT NULL DEFAULT 'info',\\n \\"stage\\" TEXT,\\n \\"progress\\" INTEGER,\\n \\"message\\" TEXT NOT NULL DEFAULT '',\\n \\"data\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"job_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false},"type":{"type":"TEXT","notNull":true,"unique":false,"default":"log"},"level":{"type":"TEXT","notNull":true,"unique":false,"default":"info"},"stage":{"type":"TEXT","notNull":false,"unique":false},"progress":{"type":"INTEGER","notNull":false,"unique":false},"message":{"type":"TEXT","notNull":true,"unique":false,"default":""},"data":{"type":"JSON","notNull":false,"unique":false}},"indexes":[{"name":"_smrt_job_events_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_job_events_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"_smrt_job_events_job_id_idx","columns":["job_id"]}],"version":"8a9faeec"},"importPath":"@happyvertical/smrt-jobs"},"@happyvertical/smrt-jobs:SmrtJobEventCollection":{"name":"smrtjobeventcollection","className":"SmrtJobEventCollection","qualifiedName":"@happyvertical/smrt-jobs:SmrtJobEventCollection","collection":"smrtjobevents","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/smrt-job-event.ts","packageName":"@happyvertical/smrt-jobs","fields":{},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"append":{"name":"append","async":true,"parameters":[{"name":"input","type":"SmrtJobEventData","optional":false}],"returnType":"Promise<SmrtJobEvent>","isStatic":false,"isPublic":true},"listByJob":{"name":"listByJob","async":true,"parameters":[{"name":"jobId","type":"string","optional":false},{"name":"options","type":"ListJobEventsOptions","optional":true}],"returnType":"Promise<SmrtJobEvent[]>","isStatic":false,"isPublic":true},"listSinceCursor":{"name":"listSinceCursor","async":true,"parameters":[{"name":"options","type":"any","optional":true,"typeUnresolved":true}],"returnType":"Promise<SmrtJobEvent[]>","isStatic":false,"isPublic":true},"latestProgressByJobIds":{"name":"latestProgressByJobIds","async":true,"parameters":[{"name":"jobIds","type":"string[]","optional":false},{"name":"options","type":"object","optional":true,"memberTypes":["string | null"]}],"returnType":"Promise<Map<string, SmrtJobEvent>>","isStatic":false,"isPublic":true},"listTerminalOutcomes":{"name":"listTerminalOutcomes","async":true,"parameters":[{"name":"options","type":"ListTerminalOutcomesOptions","optional":false}],"returnType":"Promise<SmrtJobTerminalOutcomePage>","isStatic":false,"isPublic":true},"cleanup":{"name":"cleanup","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["Date","boolean"]}],"returnType":"Promise<number>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"_smrt_job_events","api":false,"mcp":false,"cli":{"include":["list","get"],"skipApiCheck":true}},"extends":"SmrtCollection","extendsTypeArg":"SmrtJobEvent","exportName":"SmrtJobEventCollection","collectionExportName":"SmrtJobEventCollectionCollection","schema":{"tableName":"_smrt_job_events","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_job_events\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"job_id\\" UUID NOT NULL,\\n \\"type\\" TEXT NOT NULL DEFAULT 'log',\\n \\"level\\" TEXT NOT NULL DEFAULT 'info',\\n \\"stage\\" TEXT,\\n \\"progress\\" INTEGER,\\n \\"message\\" TEXT NOT NULL DEFAULT '',\\n \\"data\\" JSON\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"job_id":{"type":"UUID","referenceKind":"foreignKey","notNull":true,"unique":false},"type":{"type":"TEXT","notNull":true,"unique":false,"default":"log"},"level":{"type":"TEXT","notNull":true,"unique":false,"default":"info"},"stage":{"type":"TEXT","notNull":false,"unique":false},"progress":{"type":"INTEGER","notNull":false,"unique":false},"message":{"type":"TEXT","notNull":true,"unique":false,"default":""},"data":{"type":"JSON","notNull":false,"unique":false}},"indexes":[{"name":"_smrt_job_events_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_job_events_tenant_id_created_at_idx","columns":["tenant_id","created_at"]},{"name":"_smrt_job_events_job_id_idx","columns":["job_id"]}],"version":"8a9faeec"},"importPath":"@happyvertical/smrt-jobs"},"@happyvertical/smrt-jobs:SmrtJob":{"name":"smrtjob","className":"SmrtJob","qualifiedName":"@happyvertical/smrt-jobs:SmrtJob","collection":"smrtjobs","description":"Persistent job record stored in the _smrt_jobs system table.","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/smrt-job.ts","packageName":"@happyvertical/smrt-jobs","fields":{"tenantId":{"type":"text","required":false,"_meta":{"sqlType":"UUID","nullable":true,"__tenancy":{"isTenantIdField":true,"autoFilter":true,"required":false,"autoPopulate":true,"nullable":true,"mode":"optional","field":"tenantId","allowSuperAdminBypass":false}}},"queue":{"type":"text","required":true,"default":"default","_meta":{"required":true,"default":"default"}},"objectType":{"type":"text","required":true,"_meta":{"required":true}},"objectId":{"type":"text","required":false,"_meta":{"nullable":true}},"method":{"type":"text","required":true,"_meta":{"required":true}},"args":{"type":"json","required":false,"_meta":{}},"runAt":{"type":"datetime","required":true,"_meta":{"required":true,"indexed":true}},"priority":{"type":"integer","required":true,"default":50,"_meta":{"required":true,"default":50}},"status":{"type":"text","required":true,"default":"pending","_meta":{"required":true,"default":"pending","indexed":true},"enum":["pending","ready","running","completed","failed","cancelled"]},"attempts":{"type":"integer","required":true,"default":0,"_meta":{"required":true,"default":0}},"maxAttempts":{"type":"integer","required":true,"default":3,"_meta":{"required":true,"default":3}},"timeout":{"type":"integer","required":true,"default":300000,"_meta":{"required":true,"default":300000}},"timeoutBehavior":{"type":"text","required":true,"default":"fail","_meta":{"required":true,"default":"fail"},"enum":["fail","kill","warn"]},"startedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"completedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"lastError":{"type":"text","required":false,"_meta":{"nullable":true}},"resultPointer":{"type":"text","required":false,"_meta":{"nullable":true}},"taskId":{"type":"text","required":false,"_meta":{"nullable":true,"unique":true}},"taskOwnerId":{"type":"text","required":false,"_meta":{"nullable":true}},"taskResult":{"type":"json","required":false,"_meta":{"nullable":true}},"taskInputRequests":{"type":"json","required":false,"_meta":{"nullable":true}},"taskInputResponses":{"type":"json","required":false,"_meta":{"nullable":true}},"retryStrategy":{"type":"json","required":false,"_meta":{}},"workerId":{"type":"text","required":false,"_meta":{"nullable":true}},"workerHeartbeat":{"type":"datetime","required":false,"_meta":{"nullable":true}}},"methods":{"save":{"name":"save","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"retry":{"name":"retry","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"cancel":{"name":"cancel","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"getDescription":{"name":"getDescription","async":false,"parameters":[],"returnType":"string","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"_smrt_jobs","api":false,"cli":{"include":["list","get","retry","cancel"],"skipApiCheck":true,"http":false},"mcp":false,"indexes":[{"name":"_smrt_jobs_status_run_at_idx","columns":["status","runAt"]},{"name":"_smrt_jobs_ready_idx","columns":["status","runAt"],"where":"status = 'pending' AND (task_input_requests IS NULL OR task_input_responses IS NOT NULL)"}],"tenantScoped":{"mode":"optional"},"conflictColumns":["tenant_id","slug","context"]},"extends":"SmrtObject","exportName":"SmrtJob","collectionExportName":"SmrtJobCollection","validationRules":[{"field":"queue","rule":"required","fieldType":"text"},{"field":"objectType","rule":"required","fieldType":"text"},{"field":"method","rule":"required","fieldType":"text"},{"field":"runAt","rule":"required","fieldType":"datetime"},{"field":"priority","rule":"required","fieldType":"integer"},{"field":"status","rule":"required","fieldType":"text"},{"field":"attempts","rule":"required","fieldType":"integer"},{"field":"maxAttempts","rule":"required","fieldType":"integer"},{"field":"timeout","rule":"required","fieldType":"integer"},{"field":"timeoutBehavior","rule":"required","fieldType":"text"}],"schema":{"tableName":"_smrt_jobs","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_jobs\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"queue\\" TEXT NOT NULL DEFAULT 'default',\\n \\"object_type\\" TEXT NOT NULL,\\n \\"object_id\\" TEXT,\\n \\"method\\" TEXT NOT NULL,\\n \\"args\\" JSON,\\n \\"run_at\\" TIMESTAMP NOT NULL,\\n \\"priority\\" INTEGER NOT NULL DEFAULT 50,\\n \\"status\\" TEXT NOT NULL DEFAULT 'pending',\\n \\"attempts\\" INTEGER NOT NULL DEFAULT 0,\\n \\"max_attempts\\" INTEGER NOT NULL DEFAULT 3,\\n \\"timeout\\" INTEGER NOT NULL DEFAULT 300000,\\n \\"timeout_behavior\\" TEXT NOT NULL DEFAULT 'fail',\\n \\"started_at\\" TIMESTAMP,\\n \\"completed_at\\" TIMESTAMP,\\n \\"last_error\\" TEXT,\\n \\"result_pointer\\" TEXT,\\n \\"task_id\\" TEXT UNIQUE,\\n \\"task_owner_id\\" TEXT,\\n \\"task_result\\" JSON,\\n \\"task_input_requests\\" JSON,\\n \\"task_input_responses\\" JSON,\\n \\"retry_strategy\\" JSON,\\n \\"worker_id\\" TEXT,\\n \\"worker_heartbeat\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"queue":{"type":"TEXT","notNull":true,"unique":false,"default":"default"},"object_type":{"type":"TEXT","notNull":true,"unique":false},"object_id":{"type":"TEXT","notNull":false,"unique":false},"method":{"type":"TEXT","notNull":true,"unique":false},"args":{"type":"JSON","notNull":false,"unique":false},"run_at":{"type":"TIMESTAMP","notNull":true,"unique":false},"priority":{"type":"INTEGER","notNull":true,"unique":false,"default":50},"status":{"type":"TEXT","notNull":true,"unique":false,"default":"pending"},"attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"max_attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":3},"timeout":{"type":"INTEGER","notNull":true,"unique":false,"default":300000},"timeout_behavior":{"type":"TEXT","notNull":true,"unique":false,"default":"fail"},"started_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"completed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"last_error":{"type":"TEXT","notNull":false,"unique":false},"result_pointer":{"type":"TEXT","notNull":false,"unique":false},"task_id":{"type":"TEXT","notNull":false,"unique":true},"task_owner_id":{"type":"TEXT","notNull":false,"unique":false},"task_result":{"type":"JSON","notNull":false,"unique":false},"task_input_requests":{"type":"JSON","notNull":false,"unique":false},"task_input_responses":{"type":"JSON","notNull":false,"unique":false},"retry_strategy":{"type":"JSON","notNull":false,"unique":false},"worker_id":{"type":"TEXT","notNull":false,"unique":false},"worker_heartbeat":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"_smrt_jobs_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_jobs_run_at_idx","columns":["run_at"]},{"name":"_smrt_jobs_status_idx","columns":["status"]},{"name":"_smrt_jobs_status_run_at_idx","columns":["status","run_at"]},{"name":"_smrt_jobs_ready_idx","columns":["status","run_at"],"where":"status = 'pending' AND (task_input_requests IS NULL OR task_input_responses IS NOT NULL)"},{"name":"_smrt_jobs_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"43e1324f"},"importPath":"@happyvertical/smrt-jobs"},"@happyvertical/smrt-jobs:SmrtJobCollection":{"name":"smrtjobcollection","className":"SmrtJobCollection","qualifiedName":"@happyvertical/smrt-jobs:SmrtJobCollection","collection":"smrtjobs","description":"Collection for managing SmrtJob objects","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/smrt-job.ts","packageName":"@happyvertical/smrt-jobs","fields":{},"methods":{"initialize":{"name":"initialize","async":true,"parameters":[],"returnType":"Promise<this>","isStatic":false,"isPublic":true},"listByStatus":{"name":"listByStatus","async":true,"parameters":[{"name":"status","type":"JobStatus | JobStatus[]","optional":false,"unionBranches":[{"type":"JobStatus"},{"type":"JobStatus[]"}]},{"name":"options","type":"object","optional":true,"memberTypes":["number","string"]}],"returnType":"Promise<SmrtJob[]>","isStatic":false,"isPublic":true},"listReady":{"name":"listReady","async":true,"parameters":[{"name":"options","type":"object","optional":true,"memberTypes":["number","string[]"]}],"returnType":"Promise<SmrtJob[]>","isStatic":false,"isPublic":true},"claimReady":{"name":"claimReady","async":true,"parameters":[{"name":"options","type":"ClaimReadyOptions","optional":false}],"returnType":"Promise<SmrtJob[]>","isStatic":false,"isPublic":true},"countInFlightForTenant":{"name":"countInFlightForTenant","async":true,"parameters":[{"name":"tenantId","type":"string | null","optional":false,"unionBranches":[{"type":"string"},{"type":"null"}]}],"returnType":"Promise<number>","isStatic":false,"isPublic":true},"enqueueJob":{"name":"enqueueJob","async":true,"parameters":[{"name":"data","type":"SmrtJobData","optional":false},{"name":"options","type":"EnqueueJobOptions","optional":true}],"returnType":"Promise<SmrtJob>","isStatic":false,"isPublic":true},"stats":{"name":"stats","async":true,"parameters":[{"name":"queue","type":"string","optional":true}],"returnType":"Promise<object>","isStatic":false,"isPublic":true},"cleanup":{"name":"cleanup","async":true,"parameters":[{"name":"options","type":"object","optional":false,"memberTypes":["Date","number","boolean"]}],"returnType":"Promise<number>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"_smrt_jobs","api":false,"mcp":false,"cli":{"include":["list","get"],"skipApiCheck":true}},"extends":"SmrtCollection","extendsTypeArg":"SmrtJob","exportName":"SmrtJobCollection","collectionExportName":"SmrtJobCollectionCollection","schema":{"tableName":"_smrt_jobs","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_jobs\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"tenant_id\\" UUID,\\n \\"queue\\" TEXT NOT NULL DEFAULT 'default',\\n \\"object_type\\" TEXT NOT NULL,\\n \\"object_id\\" TEXT,\\n \\"method\\" TEXT NOT NULL,\\n \\"args\\" JSON,\\n \\"run_at\\" TIMESTAMP NOT NULL,\\n \\"priority\\" INTEGER NOT NULL DEFAULT 50,\\n \\"status\\" TEXT NOT NULL DEFAULT 'pending',\\n \\"attempts\\" INTEGER NOT NULL DEFAULT 0,\\n \\"max_attempts\\" INTEGER NOT NULL DEFAULT 3,\\n \\"timeout\\" INTEGER NOT NULL DEFAULT 300000,\\n \\"timeout_behavior\\" TEXT NOT NULL DEFAULT 'fail',\\n \\"started_at\\" TIMESTAMP,\\n \\"completed_at\\" TIMESTAMP,\\n \\"last_error\\" TEXT,\\n \\"result_pointer\\" TEXT,\\n \\"task_id\\" TEXT UNIQUE,\\n \\"task_owner_id\\" TEXT,\\n \\"task_result\\" JSON,\\n \\"task_input_requests\\" JSON,\\n \\"task_input_responses\\" JSON,\\n \\"retry_strategy\\" JSON,\\n \\"worker_id\\" TEXT,\\n \\"worker_heartbeat\\" TIMESTAMP\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"tenant_id":{"type":"UUID","referenceKind":"tenantId","notNull":false,"unique":false},"queue":{"type":"TEXT","notNull":true,"unique":false,"default":"default"},"object_type":{"type":"TEXT","notNull":true,"unique":false},"object_id":{"type":"TEXT","notNull":false,"unique":false},"method":{"type":"TEXT","notNull":true,"unique":false},"args":{"type":"JSON","notNull":false,"unique":false},"run_at":{"type":"TIMESTAMP","notNull":true,"unique":false},"priority":{"type":"INTEGER","notNull":true,"unique":false,"default":50},"status":{"type":"TEXT","notNull":true,"unique":false,"default":"pending"},"attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":0},"max_attempts":{"type":"INTEGER","notNull":true,"unique":false,"default":3},"timeout":{"type":"INTEGER","notNull":true,"unique":false,"default":300000},"timeout_behavior":{"type":"TEXT","notNull":true,"unique":false,"default":"fail"},"started_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"completed_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"last_error":{"type":"TEXT","notNull":false,"unique":false},"result_pointer":{"type":"TEXT","notNull":false,"unique":false},"task_id":{"type":"TEXT","notNull":false,"unique":true},"task_owner_id":{"type":"TEXT","notNull":false,"unique":false},"task_result":{"type":"JSON","notNull":false,"unique":false},"task_input_requests":{"type":"JSON","notNull":false,"unique":false},"task_input_responses":{"type":"JSON","notNull":false,"unique":false},"retry_strategy":{"type":"JSON","notNull":false,"unique":false},"worker_id":{"type":"TEXT","notNull":false,"unique":false},"worker_heartbeat":{"type":"TIMESTAMP","notNull":false,"unique":false}},"indexes":[{"name":"_smrt_jobs_slug_context_idx","columns":["tenant_id","slug","context"],"unique":true,"nullsNotDistinct":true},{"name":"_smrt_jobs_run_at_idx","columns":["run_at"]},{"name":"_smrt_jobs_status_idx","columns":["status"]},{"name":"_smrt_jobs_status_run_at_idx","columns":["status","run_at"]},{"name":"_smrt_jobs_ready_idx","columns":["status","run_at"],"where":"status = 'pending' AND (task_input_requests IS NULL OR task_input_responses IS NOT NULL)"},{"name":"_smrt_jobs_tenant_id_created_at_idx","columns":["tenant_id","created_at"]}],"version":"43e1324f"},"importPath":"@happyvertical/smrt-jobs"},"@happyvertical/smrt-jobs:SmrtWorker":{"name":"smrtworker","className":"SmrtWorker","qualifiedName":"@happyvertical/smrt-jobs:SmrtWorker","collection":"smrtworkers","description":"Liveness record for a single TaskRunner / ScheduleRunner incarnation, stored in the _smrt_workers system table.","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/smrt-worker.ts","packageName":"@happyvertical/smrt-jobs","fields":{"workerId":{"type":"text","required":true,"_meta":{"required":true}},"pid":{"type":"integer","required":false,"_meta":{"nullable":true}},"hostname":{"type":"text","required":false,"_meta":{"nullable":true}},"startedAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"heartbeatAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"leaseExpiresAt":{"type":"datetime","required":false,"_meta":{"nullable":true}},"queues":{"type":"json","required":false,"_meta":{"nullable":true}},"status":{"type":"text","required":true,"default":"running","_meta":{"required":true,"default":"running"}}},"methods":{},"decoratorConfig":{"tableName":"_smrt_workers","conflictColumns":["worker_id"],"api":false,"cli":false,"mcp":false},"extends":"SmrtObject","exportName":"SmrtWorker","collectionExportName":"SmrtWorkerCollection","validationRules":[{"field":"workerId","rule":"required","fieldType":"text"},{"field":"status","rule":"required","fieldType":"text"}],"schema":{"tableName":"_smrt_workers","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_workers\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"worker_id\\" TEXT NOT NULL,\\n \\"pid\\" INTEGER,\\n \\"hostname\\" TEXT,\\n \\"started_at\\" TIMESTAMP,\\n \\"heartbeat_at\\" TIMESTAMP,\\n \\"lease_expires_at\\" TIMESTAMP,\\n \\"queues\\" JSON,\\n \\"status\\" TEXT NOT NULL DEFAULT 'running'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"worker_id":{"type":"TEXT","notNull":true,"unique":false},"pid":{"type":"INTEGER","notNull":false,"unique":false},"hostname":{"type":"TEXT","notNull":false,"unique":false},"started_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"heartbeat_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"lease_expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"queues":{"type":"JSON","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":true,"unique":false,"default":"running"}},"indexes":[{"name":"_smrt_workers_worker_id_idx","columns":["worker_id"],"unique":true},{"name":"_smrt_workers_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_workers_created_at_idx","columns":["created_at"]}],"version":"07ec368f"},"importPath":"@happyvertical/smrt-jobs"},"@happyvertical/smrt-jobs:SmrtWorkerCollection":{"name":"smrtworkercollection","className":"SmrtWorkerCollection","qualifiedName":"@happyvertical/smrt-jobs:SmrtWorkerCollection","collection":"smrtworkers","description":"Collection for managing _smrt_workers liveness rows.","filePath":"/home/runner/work/smrt/smrt/packages/jobs/src/smrt-worker.ts","packageName":"@happyvertical/smrt-jobs","fields":{},"methods":{"assertReady":{"name":"assertReady","async":true,"parameters":[],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"tableReady":{"name":"tableReady","async":true,"parameters":[],"returnType":"Promise<boolean>","isStatic":false,"isPublic":true},"registerWorker":{"name":"registerWorker","async":true,"parameters":[{"name":"input","type":"RegisterWorkerInput","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"renewLease":{"name":"renewLease","async":true,"parameters":[{"name":"workerKey","type":"string","optional":false},{"name":"leaseTtlMs","type":"number","optional":false},{"name":"queues","type":"string[] | null","optional":true,"unionBranches":[{"type":"string[]"},{"type":"null"}]}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"expireWorker":{"name":"expireWorker","async":true,"parameters":[{"name":"workerKey","type":"string","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true},"freshLeaseWorkerKeys":{"name":"freshLeaseWorkerKeys","async":true,"parameters":[],"returnType":"Promise<Set<string>>","isStatic":false,"isPublic":true},"liveWorkerKeysForQueue":{"name":"liveWorkerKeysForQueue","async":true,"parameters":[{"name":"queue","type":"string","optional":false}],"returnType":"Promise<Set<string>>","isStatic":false,"isPublic":true},"pruneExpired":{"name":"pruneExpired","async":true,"parameters":[{"name":"graceMs","type":"number","optional":false}],"returnType":"Promise<void>","isStatic":false,"isPublic":true}},"decoratorConfig":{"tableName":"_smrt_workers","api":false,"mcp":false,"cli":false},"extends":"SmrtCollection","extendsTypeArg":"SmrtWorker","exportName":"SmrtWorkerCollection","collectionExportName":"SmrtWorkerCollectionCollection","schema":{"tableName":"_smrt_workers","ddl":"CREATE TABLE IF NOT EXISTS \\"_smrt_workers\\" (\\n \\"id\\" UUID PRIMARY KEY NOT NULL,\\n \\"slug\\" TEXT NOT NULL,\\n \\"context\\" TEXT NOT NULL DEFAULT '',\\n \\"created_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"updated_at\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\"worker_id\\" TEXT NOT NULL,\\n \\"pid\\" INTEGER,\\n \\"hostname\\" TEXT,\\n \\"started_at\\" TIMESTAMP,\\n \\"heartbeat_at\\" TIMESTAMP,\\n \\"lease_expires_at\\" TIMESTAMP,\\n \\"queues\\" JSON,\\n \\"status\\" TEXT NOT NULL DEFAULT 'running'\\n);","columns":{"id":{"type":"UUID","primaryKey":true,"referenceKind":"id","notNull":true},"slug":{"type":"TEXT","notNull":true},"context":{"type":"TEXT","notNull":true,"default":""},"created_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"updated_at":{"type":"TIMESTAMP","notNull":true,"default":"current_timestamp"},"worker_id":{"type":"TEXT","notNull":true,"unique":false},"pid":{"type":"INTEGER","notNull":false,"unique":false},"hostname":{"type":"TEXT","notNull":false,"unique":false},"started_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"heartbeat_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"lease_expires_at":{"type":"TIMESTAMP","notNull":false,"unique":false},"queues":{"type":"JSON","notNull":false,"unique":false},"status":{"type":"TEXT","notNull":true,"unique":false,"default":"running"}},"indexes":[{"name":"_smrt_workers_worker_id_idx","columns":["worker_id"],"unique":true},{"name":"_smrt_workers_slug_context_idx","columns":["slug","context"]},{"name":"_smrt_workers_created_at_idx","columns":["created_at"]}],"version":"07ec368f"},"importPath":"@happyvertical/smrt-jobs"}},"moduleType":"smrt","smrtDependencies":["@happyvertical/smrt-core","@happyvertical/smrt-tenancy"],"browser":{"status":"server-only","issues":["#3615","#3624","#3627"],"reason":"worker_threads runner (the edge commerce inherits), node:events/crypto, bull/bullmq/cloud-tasks SDK graph","via":["@happyvertical/smrt-tenancy"]},"stampsConstructors":true}`));
14
14
  //#endregion
15
15
  //#region src/background-policy.ts
16
16
  var MAX_JOB_RETRIES = 25;
@@ -1479,6 +1479,7 @@ var SmrtWorker = class extends SmrtObject {
1479
1479
  startedAt = null;
1480
1480
  heartbeatAt = null;
1481
1481
  leaseExpiresAt = null;
1482
+ queues = null;
1482
1483
  status = "running";
1483
1484
  };
1484
1485
  __publicField(SmrtWorker, "__smrtPackage__", "@happyvertical/smrt-jobs");
@@ -1506,6 +1507,10 @@ __decorateClass([field({
1506
1507
  type: "datetime",
1507
1508
  nullable: true
1508
1509
  })], SmrtWorker.prototype, "leaseExpiresAt", 2);
1510
+ __decorateClass([field({
1511
+ type: "json",
1512
+ nullable: true
1513
+ })], SmrtWorker.prototype, "queues", 2);
1509
1514
  __decorateClass([field({
1510
1515
  type: "text",
1511
1516
  required: true,
@@ -1518,6 +1523,16 @@ SmrtWorker = __decorateClass([smrt({
1518
1523
  cli: false,
1519
1524
  mcp: false
1520
1525
  })], SmrtWorker);
1526
+ function parseQueues(value) {
1527
+ let parsed = value;
1528
+ if (typeof value === "string") try {
1529
+ parsed = JSON.parse(value);
1530
+ } catch {
1531
+ return null;
1532
+ }
1533
+ if (!Array.isArray(parsed)) return null;
1534
+ return parsed.filter((q) => typeof q === "string");
1535
+ }
1521
1536
  var SmrtWorkerCollection = class extends SmrtCollection {
1522
1537
  static _itemClass = SmrtWorker;
1523
1538
  /**
@@ -1554,16 +1569,26 @@ var SmrtWorkerCollection = class extends SmrtCollection {
1554
1569
  startedAt: now,
1555
1570
  heartbeatAt: now,
1556
1571
  leaseExpiresAt: new Date(now.getTime() + input.leaseTtlMs),
1572
+ queues: input.queues ? [...input.queues] : null,
1557
1573
  status: "running"
1558
1574
  });
1559
1575
  }
1560
1576
  /** Renew a worker's lease to `now + ttl`. */
1561
- async renewLease(workerKey, leaseTtlMs) {
1577
+ async renewLease(workerKey, leaseTtlMs, queues) {
1562
1578
  const now = /* @__PURE__ */ new Date();
1579
+ const expiresAt = new Date(now.getTime() + leaseTtlMs).toISOString();
1580
+ if (queues) {
1581
+ await this.db.query(`UPDATE _smrt_workers
1582
+ SET lease_expires_at = ?,
1583
+ heartbeat_at = ?,
1584
+ queues = ?
1585
+ WHERE worker_id = ?`, expiresAt, now.toISOString(), JSON.stringify(queues), workerKey);
1586
+ return;
1587
+ }
1563
1588
  await this.db.query(`UPDATE _smrt_workers
1564
1589
  SET lease_expires_at = ?,
1565
1590
  heartbeat_at = ?
1566
- WHERE worker_id = ?`, new Date(now.getTime() + leaseTtlMs).toISOString(), now.toISOString(), workerKey);
1591
+ WHERE worker_id = ?`, expiresAt, now.toISOString(), workerKey);
1567
1592
  }
1568
1593
  /** Remove a worker incarnation (graceful shutdown). */
1569
1594
  async expireWorker(workerKey) {
@@ -1579,6 +1604,22 @@ var SmrtWorkerCollection = class extends SmrtCollection {
1579
1604
  for (const row of result.rows) if (typeof row.worker_id === "string") keys.add(row.worker_id);
1580
1605
  return keys;
1581
1606
  }
1607
+ /**
1608
+ * Worker keys holding a fresh lease whose recorded `queues` include `queue`.
1609
+ * Rows with no recorded queues (older runners, schedule runners) never match.
1610
+ */
1611
+ async liveWorkerKeysForQueue(queue) {
1612
+ const result = await this.db.query(`SELECT worker_id, queues
1613
+ FROM _smrt_workers
1614
+ WHERE lease_expires_at IS NOT NULL
1615
+ AND lease_expires_at >= ?`, (/* @__PURE__ */ new Date()).toISOString());
1616
+ const keys = /* @__PURE__ */ new Set();
1617
+ for (const row of result.rows) {
1618
+ if (typeof row.worker_id !== "string") continue;
1619
+ if (parseQueues(row.queues)?.includes(queue)) keys.add(row.worker_id);
1620
+ }
1621
+ return keys;
1622
+ }
1582
1623
  /** Delete worker rows whose lease expired more than `graceMs` ago. */
1583
1624
  async pruneExpired(graceMs) {
1584
1625
  const cutoff = new Date(Date.now() - Math.max(0, graceMs)).toISOString();
@@ -1712,7 +1753,8 @@ var TaskRunner = class extends EventEmitter {
1712
1753
  workerKey: this.workerKey,
1713
1754
  pid: typeof process !== "undefined" ? process.pid : null,
1714
1755
  hostname: typeof process !== "undefined" ? process.env.HOSTNAME ?? null : null,
1715
- leaseTtlMs: this.effectiveLeaseTtlMs
1756
+ leaseTtlMs: this.effectiveLeaseTtlMs,
1757
+ queues: this.config.queues
1716
1758
  });
1717
1759
  registerLiveWorker(this.workerKey);
1718
1760
  this.running = true;
@@ -2322,7 +2364,7 @@ var TaskRunner = class extends EventEmitter {
2322
2364
  startLeaseRenewal() {
2323
2365
  this.leaseTimer = setInterval(async () => {
2324
2366
  try {
2325
- await this.workerCollection?.renewLease(this.workerKey, this.effectiveLeaseTtlMs);
2367
+ await this.workerCollection?.renewLease(this.workerKey, this.effectiveLeaseTtlMs, this.config.queues);
2326
2368
  } catch {}
2327
2369
  }, this.config.leaseTickMs);
2328
2370
  }
@@ -2347,7 +2389,8 @@ var TaskRunner = class extends EventEmitter {
2347
2389
  type: resolveEngine(this.db),
2348
2390
  workerKey: this.workerKey,
2349
2391
  leaseTtlMs: this.effectiveLeaseTtlMs,
2350
- leaseTickMs: this.config.leaseTickMs
2392
+ leaseTickMs: this.config.leaseTickMs,
2393
+ queues: this.config.queues
2351
2394
  } });
2352
2395
  } catch {
2353
2396
  return false;
@@ -2466,4 +2509,4 @@ function createTaskRunner(config) {
2466
2509
  //#endregion
2467
2510
  export { SmrtJobCollection as A, isBackgroundEligibleMethod as B, DEFAULT_RETENTION_SWEEP_INTERVAL_MS as C, startRetentionSweeper as D, registerJobRetentionTasks as E, TenantJobCapExceededError as F, assertWithinTenantCreationCap as I, backgroundEligible as L, SmrtJobEventCollection as M, DEFAULT_TENANT_JOB_CAP as N, unregisterJobRetentionTasks as O, MAX_JOB_RETRIES as P, clampRetries as R, DEFAULT_JOB_RETENTION as S, JOB_EVENTS_RETENTION_TASK as T, markBackgroundEligible as V, requestMcpTaskInput as _, isRunnerExecutionContext as a, redactErrorForPersistence as b, SmrtWorkerCollection as c, McpTaskNotFoundError as d, McpTaskStore as f, requestMcpTaskContinuation as g, getMcpTaskMarker as h, getActiveJobExecutionContext as i, SmrtJobEvent as j, SmrtJob as k, MCP_TASKS_EXTENSION as l, createMcpTaskResult as m, TaskRunner as n, DEFAULT_TASK_HEARTBEAT_INTERVAL_MS as o, McpTaskSuspendedError as p, createTaskRunner as r, SmrtWorker as s, JobTimeoutError as t, McpTaskCancelledError as u, taskFromJob as v, JOBS_RETENTION_TASK as w, redactErrorMessage as x, JobContextLogger as y, getBackgroundEligibleMethods as z };
2468
2511
 
2469
- //# sourceMappingURL=runner-DRWC-X-i.js.map
2512
+ //# sourceMappingURL=runner-D1X1L7VI.js.map