@keystrokehq/scheduler 0.1.113 → 0.1.115

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.
@@ -1,5 +1,5 @@
1
1
  //#region src/types.d.ts
2
- type JobKind = "workflow" | "agent" | "trigger" | "trigger-overview" | "workflow-canvas-annotations" | "workflow-overview" | "runtime" | "maintenance" | "platform-agent" | "image-rollout" | "wake" | "sleep";
2
+ type JobKind = "workflow" | "agent" | "trigger" | "trigger-overview" | "workflow-canvas-annotations" | "workflow-overview" | "runtime" | "maintenance" | "platform-agent" | "image-rollout" | "project-agent-sandbox-grace" | "project-agent-env-image" | "wake" | "sleep";
3
3
  type JobTrigger = "api" | "cron" | "webhook" | "poll" | "retry" | "prompt";
4
4
  /**
5
5
  * Identifies a run that dispatched this job as a child. The parent metadata
@@ -157,4 +157,4 @@ type SchedulerPlugin = {
157
157
  declare function defineSchedulerPlugin(plugin: SchedulerPlugin): SchedulerPlugin;
158
158
  //#endregion
159
159
  export { Scheduler as C, retryDelayMs as E, ScheduleTickerOptions as S, WorkerOptions as T, JobParent as _, TriggerScheduleSpec as a, JobTrigger as b, TriggerSchedulerStartOptions as c, CreateJobQueueOptions as d, CreateSchedulerOptions as f, JobKind as g, JobHandler as h, SchedulerScope as i, defineSchedulerPlugin as l, EnqueueInput as m, SchedulerPlugin as n, TriggerScheduleSyncOptions as o, DEFAULT_RETRY_DELAY_MS as p, SchedulerPluginContext as r, TriggerScheduler as s, DatabaseDialect as t, CancelHandler as u, JobPayload as v, StopFn as w, ScheduleSyncOptions as x, JobQueue as y };
160
- //# sourceMappingURL=contract-DUoMR12k.d.cts.map
160
+ //# sourceMappingURL=contract-BKZC5l8b.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-BKZC5l8b.d.cts","names":[],"sources":["../src/types.ts","../src/contract.ts"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  //#region src/types.d.ts
2
- type JobKind = "workflow" | "agent" | "trigger" | "trigger-overview" | "workflow-canvas-annotations" | "workflow-overview" | "runtime" | "maintenance" | "platform-agent" | "image-rollout" | "wake" | "sleep";
2
+ type JobKind = "workflow" | "agent" | "trigger" | "trigger-overview" | "workflow-canvas-annotations" | "workflow-overview" | "runtime" | "maintenance" | "platform-agent" | "image-rollout" | "project-agent-sandbox-grace" | "project-agent-env-image" | "wake" | "sleep";
3
3
  type JobTrigger = "api" | "cron" | "webhook" | "poll" | "retry" | "prompt";
4
4
  /**
5
5
  * Identifies a run that dispatched this job as a child. The parent metadata
@@ -157,4 +157,4 @@ type SchedulerPlugin = {
157
157
  declare function defineSchedulerPlugin(plugin: SchedulerPlugin): SchedulerPlugin;
158
158
  //#endregion
159
159
  export { Scheduler as C, retryDelayMs as E, ScheduleTickerOptions as S, WorkerOptions as T, JobParent as _, TriggerScheduleSpec as a, JobTrigger as b, TriggerSchedulerStartOptions as c, CreateJobQueueOptions as d, CreateSchedulerOptions as f, JobKind as g, JobHandler as h, SchedulerScope as i, defineSchedulerPlugin as l, EnqueueInput as m, SchedulerPlugin as n, TriggerScheduleSyncOptions as o, DEFAULT_RETRY_DELAY_MS as p, SchedulerPluginContext as r, TriggerScheduler as s, DatabaseDialect as t, CancelHandler as u, JobPayload as v, StopFn as w, ScheduleSyncOptions as x, JobQueue as y };
160
- //# sourceMappingURL=contract-DUoMR12k.d.mts.map
160
+ //# sourceMappingURL=contract-BKZC5l8b.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-BKZC5l8b.d.mts","names":[],"sources":["../src/types.ts","../src/contract.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"contract-C5JvbyQ-.cjs","names":[],"sources":["../src/types.ts","../src/contract.ts"],"sourcesContent":["export type JobKind =\n | \"workflow\"\n | \"agent\"\n | \"trigger\"\n | \"trigger-overview\"\n | \"workflow-canvas-annotations\"\n | \"workflow-overview\"\n | \"runtime\"\n | \"maintenance\"\n | \"platform-agent\"\n | \"image-rollout\"\n | \"wake\"\n | \"sleep\";\n\nexport type JobTrigger = \"api\" | \"cron\" | \"webhook\" | \"poll\" | \"retry\" | \"prompt\";\n\n/**\n * Identifies a run that dispatched this job as a child. The parent metadata\n * survives the queue boundary so the child can resume its parent at a terminal\n * outcome without treating the child as a separately-billable dispatch.\n */\nexport type JobParent = {\n kind: \"workflow\" | \"agent\";\n runId: string;\n targetId: string;\n correlationId?: string;\n};\n\nexport type JobPayload = {\n kind: JobKind;\n targetId: string;\n runId: string;\n trigger: JobTrigger;\n payload: unknown;\n attempt: number;\n maxAttempts: number;\n /** True when this delivery is the final retry attempt. */\n exhaustedRetries?: boolean;\n scheduledAt: Date;\n jobId: string;\n /** Project scope for org-wide worker queues. */\n projectId?: string;\n /**\n * Deploy artifact this job must run against on an org worker.\n * Stamped at enqueue from the project's active artifact (or inherited from a parent).\n */\n artifactId?: string;\n /** Object-storage key for reloading {@link artifactId} after eviction. */\n artifactStorageKey?: string;\n /** Parent run that dispatched this child job, when applicable. */\n parent?: JobParent;\n /** Optional W3C trace context carrier (sibling of user payload). */\n traceContext?: Record<string, string>;\n};\n\nexport type EnqueueInput = {\n kind: JobKind;\n targetId: string;\n runId: string;\n trigger: JobTrigger;\n payload?: unknown;\n scheduledAt?: Date;\n attempt?: number;\n maxAttempts?: number;\n /** Dedupe key — pg-boss singletonKey / BullMQ jobId. */\n dedupeKey?: string;\n /** Project scope for org-wide worker queues. */\n projectId?: string;\n /** Deploy artifact this job must run against on an org worker. */\n artifactId?: string;\n /** Object-storage key for reloading {@link artifactId} after eviction. */\n artifactStorageKey?: string;\n /** Parent run that dispatched this child job, when applicable. */\n parent?: JobParent;\n /** Optional W3C trace context carrier (sibling of user payload). */\n traceContext?: Record<string, string>;\n};\n\nexport type JobHandler = (job: JobPayload) => Promise<void>;\n\nexport type CancelHandler = (runId: string) => void | Promise<void>;\n\nexport type StopFn = () => Promise<void> | void;\n\nexport type WorkerOptions = {\n workerId?: string;\n pollIntervalMs?: number;\n leaseSweepIntervalMs?: number;\n};\n\nexport type JobQueue = {\n enqueue(input: EnqueueInput): Promise<string>;\n startWorker(handler: JobHandler, options?: WorkerOptions): Promise<StopFn>;\n /**\n * Temporarily lends a worker slot to a child while an agent job waits on it.\n * Backends without a hard concurrency cap may omit it.\n */\n withLentSlot?<T>(fn: () => Promise<T>): Promise<T>;\n publishCancel(runId: string): Promise<void>;\n subscribeCancel(handler: CancelHandler): Promise<StopFn>;\n /** Pause workers before machine suspend (BullMQ). Redis stays connected for a final next-due peek. */\n prepareForSuspend?(): Promise<void>;\n /** Drop Redis TCP after the final next-due check, before machine suspend (BullMQ). */\n disconnectForSuspend?(): Promise<void>;\n /** Reconnect Redis and resume workers after machine resume (BullMQ). */\n resumeAfterSuspend?(): Promise<void>;\n /**\n * Earliest org-queue work: `\"ready\"` if waiting now, a future due time, or\n * `null` when the queue is empty. Used to register one platform wake before suspend.\n */\n getNextDueAt?(): Promise<Date | \"ready\" | null>;\n};\n\nimport type { SchedulerPlugin, SchedulerScope, TriggerScheduleSpec } from \"./contract\";\n\nexport type { TriggerScheduleSpec };\n\nexport type CreateJobQueueOptions = {\n url?: string;\n dialect?: \"postgres\" | \"sqlite\";\n adapter?: JobQueue;\n plugin?: SchedulerPlugin;\n scope?: SchedulerScope;\n projectId?: string;\n organizationId?: string;\n};\n\nexport type ScheduleSyncOptions = {\n schedules: TriggerScheduleSpec[];\n scheduleOverrides?: {\n global?: string;\n byTrigger?: Record<string, string>;\n };\n};\n\nexport type ScheduleTickerOptions = {\n pollIntervalMs?: number;\n batchSize?: number;\n /** When `organization`, claims due schedules across all projects in the org schema. */\n scope?: \"project\" | \"organization\";\n};\n\nexport type Scheduler = JobQueue & {\n syncTriggerSchedules(options: ScheduleSyncOptions): Promise<void>;\n startScheduleTicker(options?: ScheduleTickerOptions): Promise<StopFn>;\n fireDueSchedules(asOf?: Date): Promise<number>;\n upsertTriggerSchedule?(\n spec: TriggerScheduleSpec,\n overrides?: ScheduleSyncOptions[\"scheduleOverrides\"],\n ): Promise<void>;\n removeTriggerSchedule?(triggerSlug: string, projectId?: string): Promise<void>;\n};\n\nexport type CreateSchedulerOptions = CreateJobQueueOptions;\n\nexport const DEFAULT_RETRY_DELAY_MS = 5_000;\n\nexport function retryDelayMs(attempt: number): number {\n return DEFAULT_RETRY_DELAY_MS * 2 ** Math.max(0, attempt - 1);\n}\n","export type {\n JobKind,\n JobTrigger,\n JobPayload,\n JobParent,\n EnqueueInput,\n JobHandler,\n CancelHandler,\n StopFn,\n WorkerOptions,\n JobQueue,\n} from \"./types\";\nexport { retryDelayMs, DEFAULT_RETRY_DELAY_MS } from \"./types\";\n\nimport type { JobQueue, StopFn } from \"./types\";\n\n/**\n * Inlined to keep the contract database-free — structurally identical to\n * `@keystrokehq/database`'s `DatabaseDialect`. Importing it from the database\n * package would re-introduce the dependency `./contract` exists to avoid.\n */\nexport type DatabaseDialect = \"postgres\" | \"sqlite\";\n\nexport type SchedulerScope = \"platform\" | \"project\" | \"organization\";\n\nexport type SchedulerPluginContext = {\n scope: SchedulerScope;\n url?: string;\n dialect?: DatabaseDialect;\n projectId?: string;\n organizationId?: string;\n};\n\nexport type TriggerScheduleSpec = {\n triggerSlug: string;\n kind: \"cron\" | \"poll\";\n schedule: string;\n /** IANA timezone for schedule wall-clock fields. When omitted, UTC. */\n timezone?: string;\n /** Project scope for org-wide worker queues. */\n projectId?: string;\n};\n\nexport type TriggerScheduleSyncOptions = {\n schedules: TriggerScheduleSpec[];\n scheduleOverrides?: {\n global?: string;\n byTrigger?: Record<string, string>;\n };\n};\n\nexport type TriggerSchedulerStartOptions = {\n pollIntervalMs?: number;\n batchSize?: number;\n /** When `organization`, claims due schedules across all projects in the org schema. */\n scope?: \"project\" | \"organization\";\n};\n\nexport type TriggerScheduler = {\n sync(options: TriggerScheduleSyncOptions): Promise<void>;\n start(options?: TriggerSchedulerStartOptions): Promise<StopFn>;\n /** Register or refresh one trigger schedule in the firing backend. */\n upsert?(\n spec: TriggerScheduleSpec,\n overrides?: TriggerScheduleSyncOptions[\"scheduleOverrides\"],\n ): Promise<void>;\n remove?(triggerSlug: string, projectId?: string): Promise<void>;\n fireDue?(asOf?: Date): Promise<number>;\n};\n\nexport type SchedulerPlugin = {\n name: string;\n createJobQueue(ctx: SchedulerPluginContext): Promise<JobQueue>;\n createTriggerScheduler?(ctx: SchedulerPluginContext, queue: JobQueue): Promise<TriggerScheduler>;\n};\n\nexport function defineSchedulerPlugin(plugin: SchedulerPlugin): SchedulerPlugin {\n return plugin;\n}\n"],"mappings":";AA2JA,MAAa,yBAAyB;AAEtC,SAAgB,aAAa,SAAyB;CACpD,OAAO,yBAAyB,KAAK,KAAK,IAAI,GAAG,UAAU,CAAC;AAC9D;;;ACnFA,SAAgB,sBAAsB,QAA0C;CAC9E,OAAO;AACT"}
1
+ {"version":3,"file":"contract-C5JvbyQ-.cjs","names":[],"sources":["../src/types.ts","../src/contract.ts"],"sourcesContent":["export type JobKind =\n | \"workflow\"\n | \"agent\"\n | \"trigger\"\n | \"trigger-overview\"\n | \"workflow-canvas-annotations\"\n | \"workflow-overview\"\n | \"runtime\"\n | \"maintenance\"\n | \"platform-agent\"\n | \"image-rollout\"\n | \"project-agent-sandbox-grace\"\n | \"project-agent-env-image\"\n | \"wake\"\n | \"sleep\";\n\nexport type JobTrigger = \"api\" | \"cron\" | \"webhook\" | \"poll\" | \"retry\" | \"prompt\";\n\n/**\n * Identifies a run that dispatched this job as a child. The parent metadata\n * survives the queue boundary so the child can resume its parent at a terminal\n * outcome without treating the child as a separately-billable dispatch.\n */\nexport type JobParent = {\n kind: \"workflow\" | \"agent\";\n runId: string;\n targetId: string;\n correlationId?: string;\n};\n\nexport type JobPayload = {\n kind: JobKind;\n targetId: string;\n runId: string;\n trigger: JobTrigger;\n payload: unknown;\n attempt: number;\n maxAttempts: number;\n /** True when this delivery is the final retry attempt. */\n exhaustedRetries?: boolean;\n scheduledAt: Date;\n jobId: string;\n /** Project scope for org-wide worker queues. */\n projectId?: string;\n /**\n * Deploy artifact this job must run against on an org worker.\n * Stamped at enqueue from the project's active artifact (or inherited from a parent).\n */\n artifactId?: string;\n /** Object-storage key for reloading {@link artifactId} after eviction. */\n artifactStorageKey?: string;\n /** Parent run that dispatched this child job, when applicable. */\n parent?: JobParent;\n /** Optional W3C trace context carrier (sibling of user payload). */\n traceContext?: Record<string, string>;\n};\n\nexport type EnqueueInput = {\n kind: JobKind;\n targetId: string;\n runId: string;\n trigger: JobTrigger;\n payload?: unknown;\n scheduledAt?: Date;\n attempt?: number;\n maxAttempts?: number;\n /** Dedupe key — pg-boss singletonKey / BullMQ jobId. */\n dedupeKey?: string;\n /** Project scope for org-wide worker queues. */\n projectId?: string;\n /** Deploy artifact this job must run against on an org worker. */\n artifactId?: string;\n /** Object-storage key for reloading {@link artifactId} after eviction. */\n artifactStorageKey?: string;\n /** Parent run that dispatched this child job, when applicable. */\n parent?: JobParent;\n /** Optional W3C trace context carrier (sibling of user payload). */\n traceContext?: Record<string, string>;\n};\n\nexport type JobHandler = (job: JobPayload) => Promise<void>;\n\nexport type CancelHandler = (runId: string) => void | Promise<void>;\n\nexport type StopFn = () => Promise<void> | void;\n\nexport type WorkerOptions = {\n workerId?: string;\n pollIntervalMs?: number;\n leaseSweepIntervalMs?: number;\n};\n\nexport type JobQueue = {\n enqueue(input: EnqueueInput): Promise<string>;\n startWorker(handler: JobHandler, options?: WorkerOptions): Promise<StopFn>;\n /**\n * Temporarily lends a worker slot to a child while an agent job waits on it.\n * Backends without a hard concurrency cap may omit it.\n */\n withLentSlot?<T>(fn: () => Promise<T>): Promise<T>;\n publishCancel(runId: string): Promise<void>;\n subscribeCancel(handler: CancelHandler): Promise<StopFn>;\n /** Pause workers before machine suspend (BullMQ). Redis stays connected for a final next-due peek. */\n prepareForSuspend?(): Promise<void>;\n /** Drop Redis TCP after the final next-due check, before machine suspend (BullMQ). */\n disconnectForSuspend?(): Promise<void>;\n /** Reconnect Redis and resume workers after machine resume (BullMQ). */\n resumeAfterSuspend?(): Promise<void>;\n /**\n * Earliest org-queue work: `\"ready\"` if waiting now, a future due time, or\n * `null` when the queue is empty. Used to register one platform wake before suspend.\n */\n getNextDueAt?(): Promise<Date | \"ready\" | null>;\n};\n\nimport type { SchedulerPlugin, SchedulerScope, TriggerScheduleSpec } from \"./contract\";\n\nexport type { TriggerScheduleSpec };\n\nexport type CreateJobQueueOptions = {\n url?: string;\n dialect?: \"postgres\" | \"sqlite\";\n adapter?: JobQueue;\n plugin?: SchedulerPlugin;\n scope?: SchedulerScope;\n projectId?: string;\n organizationId?: string;\n};\n\nexport type ScheduleSyncOptions = {\n schedules: TriggerScheduleSpec[];\n scheduleOverrides?: {\n global?: string;\n byTrigger?: Record<string, string>;\n };\n};\n\nexport type ScheduleTickerOptions = {\n pollIntervalMs?: number;\n batchSize?: number;\n /** When `organization`, claims due schedules across all projects in the org schema. */\n scope?: \"project\" | \"organization\";\n};\n\nexport type Scheduler = JobQueue & {\n syncTriggerSchedules(options: ScheduleSyncOptions): Promise<void>;\n startScheduleTicker(options?: ScheduleTickerOptions): Promise<StopFn>;\n fireDueSchedules(asOf?: Date): Promise<number>;\n upsertTriggerSchedule?(\n spec: TriggerScheduleSpec,\n overrides?: ScheduleSyncOptions[\"scheduleOverrides\"],\n ): Promise<void>;\n removeTriggerSchedule?(triggerSlug: string, projectId?: string): Promise<void>;\n};\n\nexport type CreateSchedulerOptions = CreateJobQueueOptions;\n\nexport const DEFAULT_RETRY_DELAY_MS = 5_000;\n\nexport function retryDelayMs(attempt: number): number {\n return DEFAULT_RETRY_DELAY_MS * 2 ** Math.max(0, attempt - 1);\n}\n","export type {\n JobKind,\n JobTrigger,\n JobPayload,\n JobParent,\n EnqueueInput,\n JobHandler,\n CancelHandler,\n StopFn,\n WorkerOptions,\n JobQueue,\n} from \"./types\";\nexport { retryDelayMs, DEFAULT_RETRY_DELAY_MS } from \"./types\";\n\nimport type { JobQueue, StopFn } from \"./types\";\n\n/**\n * Inlined to keep the contract database-free — structurally identical to\n * `@keystrokehq/database`'s `DatabaseDialect`. Importing it from the database\n * package would re-introduce the dependency `./contract` exists to avoid.\n */\nexport type DatabaseDialect = \"postgres\" | \"sqlite\";\n\nexport type SchedulerScope = \"platform\" | \"project\" | \"organization\";\n\nexport type SchedulerPluginContext = {\n scope: SchedulerScope;\n url?: string;\n dialect?: DatabaseDialect;\n projectId?: string;\n organizationId?: string;\n};\n\nexport type TriggerScheduleSpec = {\n triggerSlug: string;\n kind: \"cron\" | \"poll\";\n schedule: string;\n /** IANA timezone for schedule wall-clock fields. When omitted, UTC. */\n timezone?: string;\n /** Project scope for org-wide worker queues. */\n projectId?: string;\n};\n\nexport type TriggerScheduleSyncOptions = {\n schedules: TriggerScheduleSpec[];\n scheduleOverrides?: {\n global?: string;\n byTrigger?: Record<string, string>;\n };\n};\n\nexport type TriggerSchedulerStartOptions = {\n pollIntervalMs?: number;\n batchSize?: number;\n /** When `organization`, claims due schedules across all projects in the org schema. */\n scope?: \"project\" | \"organization\";\n};\n\nexport type TriggerScheduler = {\n sync(options: TriggerScheduleSyncOptions): Promise<void>;\n start(options?: TriggerSchedulerStartOptions): Promise<StopFn>;\n /** Register or refresh one trigger schedule in the firing backend. */\n upsert?(\n spec: TriggerScheduleSpec,\n overrides?: TriggerScheduleSyncOptions[\"scheduleOverrides\"],\n ): Promise<void>;\n remove?(triggerSlug: string, projectId?: string): Promise<void>;\n fireDue?(asOf?: Date): Promise<number>;\n};\n\nexport type SchedulerPlugin = {\n name: string;\n createJobQueue(ctx: SchedulerPluginContext): Promise<JobQueue>;\n createTriggerScheduler?(ctx: SchedulerPluginContext, queue: JobQueue): Promise<TriggerScheduler>;\n};\n\nexport function defineSchedulerPlugin(plugin: SchedulerPlugin): SchedulerPlugin {\n return plugin;\n}\n"],"mappings":";AA6JA,MAAa,yBAAyB;AAEtC,SAAgB,aAAa,SAAyB;CACpD,OAAO,yBAAyB,KAAK,KAAK,IAAI,GAAG,UAAU,CAAC;AAC9D;;;ACrFA,SAAgB,sBAAsB,QAA0C;CAC9E,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"contract-E1QJBH6_.mjs","names":[],"sources":["../src/types.ts","../src/contract.ts"],"sourcesContent":["export type JobKind =\n | \"workflow\"\n | \"agent\"\n | \"trigger\"\n | \"trigger-overview\"\n | \"workflow-canvas-annotations\"\n | \"workflow-overview\"\n | \"runtime\"\n | \"maintenance\"\n | \"platform-agent\"\n | \"image-rollout\"\n | \"wake\"\n | \"sleep\";\n\nexport type JobTrigger = \"api\" | \"cron\" | \"webhook\" | \"poll\" | \"retry\" | \"prompt\";\n\n/**\n * Identifies a run that dispatched this job as a child. The parent metadata\n * survives the queue boundary so the child can resume its parent at a terminal\n * outcome without treating the child as a separately-billable dispatch.\n */\nexport type JobParent = {\n kind: \"workflow\" | \"agent\";\n runId: string;\n targetId: string;\n correlationId?: string;\n};\n\nexport type JobPayload = {\n kind: JobKind;\n targetId: string;\n runId: string;\n trigger: JobTrigger;\n payload: unknown;\n attempt: number;\n maxAttempts: number;\n /** True when this delivery is the final retry attempt. */\n exhaustedRetries?: boolean;\n scheduledAt: Date;\n jobId: string;\n /** Project scope for org-wide worker queues. */\n projectId?: string;\n /**\n * Deploy artifact this job must run against on an org worker.\n * Stamped at enqueue from the project's active artifact (or inherited from a parent).\n */\n artifactId?: string;\n /** Object-storage key for reloading {@link artifactId} after eviction. */\n artifactStorageKey?: string;\n /** Parent run that dispatched this child job, when applicable. */\n parent?: JobParent;\n /** Optional W3C trace context carrier (sibling of user payload). */\n traceContext?: Record<string, string>;\n};\n\nexport type EnqueueInput = {\n kind: JobKind;\n targetId: string;\n runId: string;\n trigger: JobTrigger;\n payload?: unknown;\n scheduledAt?: Date;\n attempt?: number;\n maxAttempts?: number;\n /** Dedupe key — pg-boss singletonKey / BullMQ jobId. */\n dedupeKey?: string;\n /** Project scope for org-wide worker queues. */\n projectId?: string;\n /** Deploy artifact this job must run against on an org worker. */\n artifactId?: string;\n /** Object-storage key for reloading {@link artifactId} after eviction. */\n artifactStorageKey?: string;\n /** Parent run that dispatched this child job, when applicable. */\n parent?: JobParent;\n /** Optional W3C trace context carrier (sibling of user payload). */\n traceContext?: Record<string, string>;\n};\n\nexport type JobHandler = (job: JobPayload) => Promise<void>;\n\nexport type CancelHandler = (runId: string) => void | Promise<void>;\n\nexport type StopFn = () => Promise<void> | void;\n\nexport type WorkerOptions = {\n workerId?: string;\n pollIntervalMs?: number;\n leaseSweepIntervalMs?: number;\n};\n\nexport type JobQueue = {\n enqueue(input: EnqueueInput): Promise<string>;\n startWorker(handler: JobHandler, options?: WorkerOptions): Promise<StopFn>;\n /**\n * Temporarily lends a worker slot to a child while an agent job waits on it.\n * Backends without a hard concurrency cap may omit it.\n */\n withLentSlot?<T>(fn: () => Promise<T>): Promise<T>;\n publishCancel(runId: string): Promise<void>;\n subscribeCancel(handler: CancelHandler): Promise<StopFn>;\n /** Pause workers before machine suspend (BullMQ). Redis stays connected for a final next-due peek. */\n prepareForSuspend?(): Promise<void>;\n /** Drop Redis TCP after the final next-due check, before machine suspend (BullMQ). */\n disconnectForSuspend?(): Promise<void>;\n /** Reconnect Redis and resume workers after machine resume (BullMQ). */\n resumeAfterSuspend?(): Promise<void>;\n /**\n * Earliest org-queue work: `\"ready\"` if waiting now, a future due time, or\n * `null` when the queue is empty. Used to register one platform wake before suspend.\n */\n getNextDueAt?(): Promise<Date | \"ready\" | null>;\n};\n\nimport type { SchedulerPlugin, SchedulerScope, TriggerScheduleSpec } from \"./contract\";\n\nexport type { TriggerScheduleSpec };\n\nexport type CreateJobQueueOptions = {\n url?: string;\n dialect?: \"postgres\" | \"sqlite\";\n adapter?: JobQueue;\n plugin?: SchedulerPlugin;\n scope?: SchedulerScope;\n projectId?: string;\n organizationId?: string;\n};\n\nexport type ScheduleSyncOptions = {\n schedules: TriggerScheduleSpec[];\n scheduleOverrides?: {\n global?: string;\n byTrigger?: Record<string, string>;\n };\n};\n\nexport type ScheduleTickerOptions = {\n pollIntervalMs?: number;\n batchSize?: number;\n /** When `organization`, claims due schedules across all projects in the org schema. */\n scope?: \"project\" | \"organization\";\n};\n\nexport type Scheduler = JobQueue & {\n syncTriggerSchedules(options: ScheduleSyncOptions): Promise<void>;\n startScheduleTicker(options?: ScheduleTickerOptions): Promise<StopFn>;\n fireDueSchedules(asOf?: Date): Promise<number>;\n upsertTriggerSchedule?(\n spec: TriggerScheduleSpec,\n overrides?: ScheduleSyncOptions[\"scheduleOverrides\"],\n ): Promise<void>;\n removeTriggerSchedule?(triggerSlug: string, projectId?: string): Promise<void>;\n};\n\nexport type CreateSchedulerOptions = CreateJobQueueOptions;\n\nexport const DEFAULT_RETRY_DELAY_MS = 5_000;\n\nexport function retryDelayMs(attempt: number): number {\n return DEFAULT_RETRY_DELAY_MS * 2 ** Math.max(0, attempt - 1);\n}\n","export type {\n JobKind,\n JobTrigger,\n JobPayload,\n JobParent,\n EnqueueInput,\n JobHandler,\n CancelHandler,\n StopFn,\n WorkerOptions,\n JobQueue,\n} from \"./types\";\nexport { retryDelayMs, DEFAULT_RETRY_DELAY_MS } from \"./types\";\n\nimport type { JobQueue, StopFn } from \"./types\";\n\n/**\n * Inlined to keep the contract database-free — structurally identical to\n * `@keystrokehq/database`'s `DatabaseDialect`. Importing it from the database\n * package would re-introduce the dependency `./contract` exists to avoid.\n */\nexport type DatabaseDialect = \"postgres\" | \"sqlite\";\n\nexport type SchedulerScope = \"platform\" | \"project\" | \"organization\";\n\nexport type SchedulerPluginContext = {\n scope: SchedulerScope;\n url?: string;\n dialect?: DatabaseDialect;\n projectId?: string;\n organizationId?: string;\n};\n\nexport type TriggerScheduleSpec = {\n triggerSlug: string;\n kind: \"cron\" | \"poll\";\n schedule: string;\n /** IANA timezone for schedule wall-clock fields. When omitted, UTC. */\n timezone?: string;\n /** Project scope for org-wide worker queues. */\n projectId?: string;\n};\n\nexport type TriggerScheduleSyncOptions = {\n schedules: TriggerScheduleSpec[];\n scheduleOverrides?: {\n global?: string;\n byTrigger?: Record<string, string>;\n };\n};\n\nexport type TriggerSchedulerStartOptions = {\n pollIntervalMs?: number;\n batchSize?: number;\n /** When `organization`, claims due schedules across all projects in the org schema. */\n scope?: \"project\" | \"organization\";\n};\n\nexport type TriggerScheduler = {\n sync(options: TriggerScheduleSyncOptions): Promise<void>;\n start(options?: TriggerSchedulerStartOptions): Promise<StopFn>;\n /** Register or refresh one trigger schedule in the firing backend. */\n upsert?(\n spec: TriggerScheduleSpec,\n overrides?: TriggerScheduleSyncOptions[\"scheduleOverrides\"],\n ): Promise<void>;\n remove?(triggerSlug: string, projectId?: string): Promise<void>;\n fireDue?(asOf?: Date): Promise<number>;\n};\n\nexport type SchedulerPlugin = {\n name: string;\n createJobQueue(ctx: SchedulerPluginContext): Promise<JobQueue>;\n createTriggerScheduler?(ctx: SchedulerPluginContext, queue: JobQueue): Promise<TriggerScheduler>;\n};\n\nexport function defineSchedulerPlugin(plugin: SchedulerPlugin): SchedulerPlugin {\n return plugin;\n}\n"],"mappings":";AA2JA,MAAa,yBAAyB;AAEtC,SAAgB,aAAa,SAAyB;CACpD,OAAO,yBAAyB,KAAK,KAAK,IAAI,GAAG,UAAU,CAAC;AAC9D;;;ACnFA,SAAgB,sBAAsB,QAA0C;CAC9E,OAAO;AACT"}
1
+ {"version":3,"file":"contract-E1QJBH6_.mjs","names":[],"sources":["../src/types.ts","../src/contract.ts"],"sourcesContent":["export type JobKind =\n | \"workflow\"\n | \"agent\"\n | \"trigger\"\n | \"trigger-overview\"\n | \"workflow-canvas-annotations\"\n | \"workflow-overview\"\n | \"runtime\"\n | \"maintenance\"\n | \"platform-agent\"\n | \"image-rollout\"\n | \"project-agent-sandbox-grace\"\n | \"project-agent-env-image\"\n | \"wake\"\n | \"sleep\";\n\nexport type JobTrigger = \"api\" | \"cron\" | \"webhook\" | \"poll\" | \"retry\" | \"prompt\";\n\n/**\n * Identifies a run that dispatched this job as a child. The parent metadata\n * survives the queue boundary so the child can resume its parent at a terminal\n * outcome without treating the child as a separately-billable dispatch.\n */\nexport type JobParent = {\n kind: \"workflow\" | \"agent\";\n runId: string;\n targetId: string;\n correlationId?: string;\n};\n\nexport type JobPayload = {\n kind: JobKind;\n targetId: string;\n runId: string;\n trigger: JobTrigger;\n payload: unknown;\n attempt: number;\n maxAttempts: number;\n /** True when this delivery is the final retry attempt. */\n exhaustedRetries?: boolean;\n scheduledAt: Date;\n jobId: string;\n /** Project scope for org-wide worker queues. */\n projectId?: string;\n /**\n * Deploy artifact this job must run against on an org worker.\n * Stamped at enqueue from the project's active artifact (or inherited from a parent).\n */\n artifactId?: string;\n /** Object-storage key for reloading {@link artifactId} after eviction. */\n artifactStorageKey?: string;\n /** Parent run that dispatched this child job, when applicable. */\n parent?: JobParent;\n /** Optional W3C trace context carrier (sibling of user payload). */\n traceContext?: Record<string, string>;\n};\n\nexport type EnqueueInput = {\n kind: JobKind;\n targetId: string;\n runId: string;\n trigger: JobTrigger;\n payload?: unknown;\n scheduledAt?: Date;\n attempt?: number;\n maxAttempts?: number;\n /** Dedupe key — pg-boss singletonKey / BullMQ jobId. */\n dedupeKey?: string;\n /** Project scope for org-wide worker queues. */\n projectId?: string;\n /** Deploy artifact this job must run against on an org worker. */\n artifactId?: string;\n /** Object-storage key for reloading {@link artifactId} after eviction. */\n artifactStorageKey?: string;\n /** Parent run that dispatched this child job, when applicable. */\n parent?: JobParent;\n /** Optional W3C trace context carrier (sibling of user payload). */\n traceContext?: Record<string, string>;\n};\n\nexport type JobHandler = (job: JobPayload) => Promise<void>;\n\nexport type CancelHandler = (runId: string) => void | Promise<void>;\n\nexport type StopFn = () => Promise<void> | void;\n\nexport type WorkerOptions = {\n workerId?: string;\n pollIntervalMs?: number;\n leaseSweepIntervalMs?: number;\n};\n\nexport type JobQueue = {\n enqueue(input: EnqueueInput): Promise<string>;\n startWorker(handler: JobHandler, options?: WorkerOptions): Promise<StopFn>;\n /**\n * Temporarily lends a worker slot to a child while an agent job waits on it.\n * Backends without a hard concurrency cap may omit it.\n */\n withLentSlot?<T>(fn: () => Promise<T>): Promise<T>;\n publishCancel(runId: string): Promise<void>;\n subscribeCancel(handler: CancelHandler): Promise<StopFn>;\n /** Pause workers before machine suspend (BullMQ). Redis stays connected for a final next-due peek. */\n prepareForSuspend?(): Promise<void>;\n /** Drop Redis TCP after the final next-due check, before machine suspend (BullMQ). */\n disconnectForSuspend?(): Promise<void>;\n /** Reconnect Redis and resume workers after machine resume (BullMQ). */\n resumeAfterSuspend?(): Promise<void>;\n /**\n * Earliest org-queue work: `\"ready\"` if waiting now, a future due time, or\n * `null` when the queue is empty. Used to register one platform wake before suspend.\n */\n getNextDueAt?(): Promise<Date | \"ready\" | null>;\n};\n\nimport type { SchedulerPlugin, SchedulerScope, TriggerScheduleSpec } from \"./contract\";\n\nexport type { TriggerScheduleSpec };\n\nexport type CreateJobQueueOptions = {\n url?: string;\n dialect?: \"postgres\" | \"sqlite\";\n adapter?: JobQueue;\n plugin?: SchedulerPlugin;\n scope?: SchedulerScope;\n projectId?: string;\n organizationId?: string;\n};\n\nexport type ScheduleSyncOptions = {\n schedules: TriggerScheduleSpec[];\n scheduleOverrides?: {\n global?: string;\n byTrigger?: Record<string, string>;\n };\n};\n\nexport type ScheduleTickerOptions = {\n pollIntervalMs?: number;\n batchSize?: number;\n /** When `organization`, claims due schedules across all projects in the org schema. */\n scope?: \"project\" | \"organization\";\n};\n\nexport type Scheduler = JobQueue & {\n syncTriggerSchedules(options: ScheduleSyncOptions): Promise<void>;\n startScheduleTicker(options?: ScheduleTickerOptions): Promise<StopFn>;\n fireDueSchedules(asOf?: Date): Promise<number>;\n upsertTriggerSchedule?(\n spec: TriggerScheduleSpec,\n overrides?: ScheduleSyncOptions[\"scheduleOverrides\"],\n ): Promise<void>;\n removeTriggerSchedule?(triggerSlug: string, projectId?: string): Promise<void>;\n};\n\nexport type CreateSchedulerOptions = CreateJobQueueOptions;\n\nexport const DEFAULT_RETRY_DELAY_MS = 5_000;\n\nexport function retryDelayMs(attempt: number): number {\n return DEFAULT_RETRY_DELAY_MS * 2 ** Math.max(0, attempt - 1);\n}\n","export type {\n JobKind,\n JobTrigger,\n JobPayload,\n JobParent,\n EnqueueInput,\n JobHandler,\n CancelHandler,\n StopFn,\n WorkerOptions,\n JobQueue,\n} from \"./types\";\nexport { retryDelayMs, DEFAULT_RETRY_DELAY_MS } from \"./types\";\n\nimport type { JobQueue, StopFn } from \"./types\";\n\n/**\n * Inlined to keep the contract database-free — structurally identical to\n * `@keystrokehq/database`'s `DatabaseDialect`. Importing it from the database\n * package would re-introduce the dependency `./contract` exists to avoid.\n */\nexport type DatabaseDialect = \"postgres\" | \"sqlite\";\n\nexport type SchedulerScope = \"platform\" | \"project\" | \"organization\";\n\nexport type SchedulerPluginContext = {\n scope: SchedulerScope;\n url?: string;\n dialect?: DatabaseDialect;\n projectId?: string;\n organizationId?: string;\n};\n\nexport type TriggerScheduleSpec = {\n triggerSlug: string;\n kind: \"cron\" | \"poll\";\n schedule: string;\n /** IANA timezone for schedule wall-clock fields. When omitted, UTC. */\n timezone?: string;\n /** Project scope for org-wide worker queues. */\n projectId?: string;\n};\n\nexport type TriggerScheduleSyncOptions = {\n schedules: TriggerScheduleSpec[];\n scheduleOverrides?: {\n global?: string;\n byTrigger?: Record<string, string>;\n };\n};\n\nexport type TriggerSchedulerStartOptions = {\n pollIntervalMs?: number;\n batchSize?: number;\n /** When `organization`, claims due schedules across all projects in the org schema. */\n scope?: \"project\" | \"organization\";\n};\n\nexport type TriggerScheduler = {\n sync(options: TriggerScheduleSyncOptions): Promise<void>;\n start(options?: TriggerSchedulerStartOptions): Promise<StopFn>;\n /** Register or refresh one trigger schedule in the firing backend. */\n upsert?(\n spec: TriggerScheduleSpec,\n overrides?: TriggerScheduleSyncOptions[\"scheduleOverrides\"],\n ): Promise<void>;\n remove?(triggerSlug: string, projectId?: string): Promise<void>;\n fireDue?(asOf?: Date): Promise<number>;\n};\n\nexport type SchedulerPlugin = {\n name: string;\n createJobQueue(ctx: SchedulerPluginContext): Promise<JobQueue>;\n createTriggerScheduler?(ctx: SchedulerPluginContext, queue: JobQueue): Promise<TriggerScheduler>;\n};\n\nexport function defineSchedulerPlugin(plugin: SchedulerPlugin): SchedulerPlugin {\n return plugin;\n}\n"],"mappings":";AA6JA,MAAa,yBAAyB;AAEtC,SAAgB,aAAa,SAAyB;CACpD,OAAO,yBAAyB,KAAK,KAAK,IAAI,GAAG,UAAU,CAAC;AAC9D;;;ACrFA,SAAgB,sBAAsB,QAA0C;CAC9E,OAAO;AACT"}
@@ -1,2 +1,2 @@
1
- import { E as retryDelayMs, T as WorkerOptions, _ as JobParent, a as TriggerScheduleSpec, b as JobTrigger, c as TriggerSchedulerStartOptions, g as JobKind, h as JobHandler, i as SchedulerScope, l as defineSchedulerPlugin, m as EnqueueInput, n as SchedulerPlugin, o as TriggerScheduleSyncOptions, p as DEFAULT_RETRY_DELAY_MS, r as SchedulerPluginContext, s as TriggerScheduler, t as DatabaseDialect, u as CancelHandler, v as JobPayload, w as StopFn, y as JobQueue } from "./contract-DUoMR12k.cjs";
1
+ import { E as retryDelayMs, T as WorkerOptions, _ as JobParent, a as TriggerScheduleSpec, b as JobTrigger, c as TriggerSchedulerStartOptions, g as JobKind, h as JobHandler, i as SchedulerScope, l as defineSchedulerPlugin, m as EnqueueInput, n as SchedulerPlugin, o as TriggerScheduleSyncOptions, p as DEFAULT_RETRY_DELAY_MS, r as SchedulerPluginContext, s as TriggerScheduler, t as DatabaseDialect, u as CancelHandler, v as JobPayload, w as StopFn, y as JobQueue } from "./contract-BKZC5l8b.cjs";
2
2
  export { type CancelHandler, DEFAULT_RETRY_DELAY_MS, DatabaseDialect, type EnqueueInput, type JobHandler, type JobKind, type JobParent, type JobPayload, type JobQueue, type JobTrigger, SchedulerPlugin, SchedulerPluginContext, SchedulerScope, type StopFn, TriggerScheduleSpec, TriggerScheduleSyncOptions, TriggerScheduler, TriggerSchedulerStartOptions, type WorkerOptions, defineSchedulerPlugin, retryDelayMs };
@@ -1,2 +1,2 @@
1
- import { E as retryDelayMs, T as WorkerOptions, _ as JobParent, a as TriggerScheduleSpec, b as JobTrigger, c as TriggerSchedulerStartOptions, g as JobKind, h as JobHandler, i as SchedulerScope, l as defineSchedulerPlugin, m as EnqueueInput, n as SchedulerPlugin, o as TriggerScheduleSyncOptions, p as DEFAULT_RETRY_DELAY_MS, r as SchedulerPluginContext, s as TriggerScheduler, t as DatabaseDialect, u as CancelHandler, v as JobPayload, w as StopFn, y as JobQueue } from "./contract-DUoMR12k.mjs";
1
+ import { E as retryDelayMs, T as WorkerOptions, _ as JobParent, a as TriggerScheduleSpec, b as JobTrigger, c as TriggerSchedulerStartOptions, g as JobKind, h as JobHandler, i as SchedulerScope, l as defineSchedulerPlugin, m as EnqueueInput, n as SchedulerPlugin, o as TriggerScheduleSyncOptions, p as DEFAULT_RETRY_DELAY_MS, r as SchedulerPluginContext, s as TriggerScheduler, t as DatabaseDialect, u as CancelHandler, v as JobPayload, w as StopFn, y as JobQueue } from "./contract-BKZC5l8b.mjs";
2
2
  export { type CancelHandler, DEFAULT_RETRY_DELAY_MS, DatabaseDialect, type EnqueueInput, type JobHandler, type JobKind, type JobParent, type JobPayload, type JobQueue, type JobTrigger, SchedulerPlugin, SchedulerPluginContext, SchedulerScope, type StopFn, TriggerScheduleSpec, TriggerScheduleSyncOptions, TriggerScheduler, TriggerSchedulerStartOptions, type WorkerOptions, defineSchedulerPlugin, retryDelayMs };
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { C as Scheduler, E as retryDelayMs, S as ScheduleTickerOptions, T as WorkerOptions, _ as JobParent, a as TriggerScheduleSpec, b as JobTrigger, d as CreateJobQueueOptions, f as CreateSchedulerOptions, h as JobHandler, i as SchedulerScope, l as defineSchedulerPlugin, m as EnqueueInput, n as SchedulerPlugin, o as TriggerScheduleSyncOptions, p as DEFAULT_RETRY_DELAY_MS, r as SchedulerPluginContext, s as TriggerScheduler, v as JobPayload, w as StopFn, x as ScheduleSyncOptions, y as JobQueue } from "./contract-DUoMR12k.cjs";
1
+ import { C as Scheduler, E as retryDelayMs, S as ScheduleTickerOptions, T as WorkerOptions, _ as JobParent, a as TriggerScheduleSpec, b as JobTrigger, d as CreateJobQueueOptions, f as CreateSchedulerOptions, h as JobHandler, i as SchedulerScope, l as defineSchedulerPlugin, m as EnqueueInput, n as SchedulerPlugin, o as TriggerScheduleSyncOptions, p as DEFAULT_RETRY_DELAY_MS, r as SchedulerPluginContext, s as TriggerScheduler, v as JobPayload, w as StopFn, x as ScheduleSyncOptions, y as JobQueue } from "./contract-BKZC5l8b.cjs";
2
2
  import { PgBoss } from "pg-boss";
3
3
 
4
4
  //#region src/create-scheduler.d.ts
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { C as Scheduler, E as retryDelayMs, S as ScheduleTickerOptions, T as WorkerOptions, _ as JobParent, a as TriggerScheduleSpec, b as JobTrigger, d as CreateJobQueueOptions, f as CreateSchedulerOptions, h as JobHandler, i as SchedulerScope, l as defineSchedulerPlugin, m as EnqueueInput, n as SchedulerPlugin, o as TriggerScheduleSyncOptions, p as DEFAULT_RETRY_DELAY_MS, r as SchedulerPluginContext, s as TriggerScheduler, v as JobPayload, w as StopFn, x as ScheduleSyncOptions, y as JobQueue } from "./contract-DUoMR12k.mjs";
1
+ import { C as Scheduler, E as retryDelayMs, S as ScheduleTickerOptions, T as WorkerOptions, _ as JobParent, a as TriggerScheduleSpec, b as JobTrigger, d as CreateJobQueueOptions, f as CreateSchedulerOptions, h as JobHandler, i as SchedulerScope, l as defineSchedulerPlugin, m as EnqueueInput, n as SchedulerPlugin, o as TriggerScheduleSyncOptions, p as DEFAULT_RETRY_DELAY_MS, r as SchedulerPluginContext, s as TriggerScheduler, v as JobPayload, w as StopFn, x as ScheduleSyncOptions, y as JobQueue } from "./contract-BKZC5l8b.mjs";
2
2
  import { PgBoss } from "pg-boss";
3
3
 
4
4
  //#region src/create-scheduler.d.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keystrokehq/scheduler",
3
- "version": "0.1.113",
3
+ "version": "0.1.115",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -41,16 +41,16 @@
41
41
  "tsdown": "^0.22.0",
42
42
  "typescript": "npm:@typescript/typescript6@^6.0.2",
43
43
  "vitest": "^4.1.7",
44
- "@keystrokehq/database": "0.0.207",
45
- "@keystrokehq/tsconfig": "0.0.3",
46
- "@keystrokehq/trigger": "0.0.263",
44
+ "@keystrokehq/database": "0.0.209",
47
45
  "@keystrokehq/oxlint-config": "0.0.4",
46
+ "@keystrokehq/trigger": "0.0.265",
47
+ "@keystrokehq/tsconfig": "0.0.3",
48
48
  "@keystrokehq/tsdown-config": "0.0.5",
49
49
  "@keystrokehq/vitest-config": "0.0.7"
50
50
  },
51
51
  "peerDependencies": {
52
- "@keystrokehq/database": "0.0.207",
53
- "@keystrokehq/trigger": "0.0.263"
52
+ "@keystrokehq/database": "0.0.209",
53
+ "@keystrokehq/trigger": "0.0.265"
54
54
  },
55
55
  "peerDependenciesMeta": {
56
56
  "@keystrokehq/database": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"contract-DUoMR12k.d.cts","names":[],"sources":["../src/types.ts","../src/contract.ts"],"mappings":";KAAY,OAAA;AAAA,KAcA,UAAA;;;;AAdO;AAcnB;KAOY,SAAA;EACV,IAAA;EACA,KAAA;EACA,QAAA;EACA,aAAA;AAAA;AAAA,KAGU,UAAA;EACV,IAAA,EAAM,OAAA;EACN,QAAA;EACA,KAAA;EACA,OAAA,EAAS,UAAA;EACT,OAAA;EACA,OAAA;EACA,WAAA,UAPU;EASV,gBAAA;EACA,WAAA,EAAa,IAAA;EACb,KAAA,UAPS;EAST,SAAA;EASS;;;;EAJT,UAAA,WAjBM;EAmBN,kBAAA,WAjBA;EAmBA,MAAA,GAAS,SAAA,EAlBA;EAoBT,YAAA,GAAe,MAAA;AAAA;AAAA,KAGL,YAAA;EACV,IAAA,EAAM,OAAA;EACN,QAAA;EACA,KAAA;EACA,OAAA,EAAS,UAAA;EACT,OAAA;EACA,WAAA,GAAc,IAAA;EACd,OAAA;EACA,WAAA,WAbS;EAeT,SAAA,WAbe;EAef,SAAA,WAfqB;EAiBrB,UAAA,WAdsB;EAgBtB,kBAAA,WAfM;EAiBN,MAAA,GAAS,SAAA,EAZK;EAcd,YAAA,GAAe,MAAA;AAAA;AAAA,KAGL,UAAA,IAAc,GAAA,EAAK,UAAA,KAAe,OAAO;AAAA,KAEzC,aAAA,IAAiB,KAAA,oBAAyB,OAAO;AAAA,KAEjD,MAAA,SAAe,OAAO;AAAA,KAEtB,aAAA;EACV,QAAA;EACA,cAAA;EACA,oBAAA;AAAA;AAAA,KAGU,QAAA;EACV,OAAA,CAAQ,KAAA,EAAO,YAAA,GAAe,OAAA;EAC9B,WAAA,CAAY,OAAA,EAAS,UAAA,EAAY,OAAA,GAAU,aAAA,GAAgB,OAAA,CAAQ,MAAA;EA9BnE;;;;EAmCA,YAAA,KAAiB,EAAA,QAAU,OAAA,CAAQ,CAAA,IAAK,OAAA,CAAQ,CAAA;EAChD,aAAA,CAAc,KAAA,WAAgB,OAAA;EAC9B,eAAA,CAAgB,OAAA,EAAS,aAAA,GAAgB,OAAA,CAAQ,MAAA,GA1BxC;EA4BT,iBAAA,KAAsB,OAAA,QA1BP;EA4Bf,oBAAA,KAAyB,OAAA,QA5BJ;EA8BrB,kBAAA,KAAuB,OAAA;EA3BH;;;;EAgCpB,YAAA,KAAiB,OAAA,CAAQ,IAAA;AAAA;AAAA,KAOf,qBAAA;EACV,GAAA;EACA,OAAA;EACA,OAAA,GAAU,QAAA;EACV,MAAA,GAAS,eAAA;EACT,KAAA,GAAQ,cAAA;EACR,SAAA;EACA,cAAA;AAAA;AAAA,KAGU,mBAAA;EACV,SAAA,EAAW,mBAAA;EACX,iBAAA;IACE,MAAA;IACA,SAAA,GAAY,MAAM;EAAA;AAAA;AAAA,KAIV,qBAAA;EACV,cAAA;EACA,SAAA,WA/CU;EAiDV,KAAA;AAAA;AAAA,KAGU,SAAA,GAAY,QAAA;EACtB,oBAAA,CAAqB,OAAA,EAAS,mBAAA,GAAsB,OAAA;EACpD,mBAAA,CAAoB,OAAA,GAAU,qBAAA,GAAwB,OAAA,CAAQ,MAAA;EAC9D,gBAAA,CAAiB,IAAA,GAAO,IAAA,GAAO,OAAA;EAC/B,qBAAA,EACE,IAAA,EAAM,mBAAA,EACN,SAAA,GAAY,mBAAA,wBACX,OAAA;EACH,qBAAA,EAAuB,WAAA,UAAqB,SAAA,YAAqB,OAAA;AAAA;AAAA,KAGvD,sBAAA,GAAyB,qBAAqB;AAAA,cAE7C,sBAAA;AAAA,iBAEG,YAAA,CAAa,OAAe;;;;;AA7JzB;AAcnB;;KCOY,eAAA;AAAA,KAEA,cAAA;AAAA,KAEA,sBAAA;EACV,KAAA,EAAO,cAAA;EACP,GAAA;EACA,OAAA,GAAU,eAAe;EACzB,SAAA;EACA,cAAA;AAAA;AAAA,KAGU,mBAAA;EACV,WAAA;EACA,IAAA;EACA,QAAA,UDRU;ECUV,QAAA;EAEA,SAAA;AAAA;AAAA,KAGU,0BAAA;EACV,SAAA,EAAW,mBAAA;EACX,iBAAA;IACE,MAAA;IACA,SAAA,GAAY,MAAM;EAAA;AAAA;AAAA,KAIV,4BAAA;EACV,cAAA;EACA,SAAA,WDrBS;ECuBT,KAAA;AAAA;AAAA,KAGU,gBAAA;EACV,IAAA,CAAK,OAAA,EAAS,0BAAA,GAA6B,OAAA;EAC3C,KAAA,CAAM,OAAA,GAAU,4BAAA,GAA+B,OAAA,CAAQ,MAAA,GDtB1C;ECwBb,MAAA,EACE,IAAA,EAAM,mBAAA,EACN,SAAA,GAAY,0BAAA,wBACX,OAAA;EACH,MAAA,EAAQ,WAAA,UAAqB,SAAA,YAAqB,OAAA;EAClD,OAAA,EAAS,IAAA,GAAO,IAAA,GAAO,OAAA;AAAA;AAAA,KAGb,eAAA;EACV,IAAA;EACA,cAAA,CAAe,GAAA,EAAK,sBAAA,GAAyB,OAAA,CAAQ,QAAA;EACrD,sBAAA,EAAwB,GAAA,EAAK,sBAAA,EAAwB,KAAA,EAAO,QAAA,GAAW,OAAA,CAAQ,gBAAA;AAAA;AAAA,iBAGjE,qBAAA,CAAsB,MAAA,EAAQ,eAAA,GAAkB,eAAe"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"contract-DUoMR12k.d.mts","names":[],"sources":["../src/types.ts","../src/contract.ts"],"mappings":"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"}