---
title: Jobs API
description: Generated public TypeScript reference for @relkit/jobs.
search:
  exclude: true
sidebar:
  icon: braces
---

{/* Generated by apps/docs/scripts/generate.ts. Do not edit. */}

## Common APIs

- [defineTask](/docs/api/jobs#definetask)
- [defineJob](/docs/api/jobs#definejob)

For configuration and examples, read [quickstart](/docs/modules/jobs/quickstart), [schedules](/docs/modules/jobs/schedules), [comparison](/docs/modules/jobs/providers/comparison).

## Frontend usage

[Trigger and observe a job](/docs/modules/jobs/clients#use-from-react) shows the client side of this capability.

## Public imports

- `@relkit/jobs` — 413 exports
- `@relkit/jobs/adapter` — 34 exports
- `@relkit/jobs/server` — 9 exports
- `@relkit/jobs/legacy` — 33 exports

## All exported APIs

Names link to their complete contracts. Re-exports share their original contract; legacy exports keep their separate identity. Examples link to the API's inline sample, a maintained repository usage, or the shared module walkthrough.

| API                                                                                               | Kind  | Import from                            | Example                                                                                                                    |
| ------------------------------------------------------------------------------------------------- | ----- | -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| [assertAdapterMethods](/docs/api/jobs#assertadaptermethods)                                       | Value | `@relkit/jobs`, `@relkit/jobs/adapter` | [API example](/docs/api/jobs#assertadaptermethods)                                                                         |
| [assertAdapterMethodsEffect](/docs/api/jobs#assertadaptermethodseffect)                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertadaptermethodseffect)                                                                   |
| [assertAuthorizedOperation](/docs/api/jobs#assertauthorizedoperation)                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertauthorizedoperation)                                                                    |
| [assertAuthorizedOperationEffect](/docs/api/jobs#assertauthorizedoperationeffect)                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertauthorizedoperationeffect)                                                              |
| [assertBoundedString](/docs/api/jobs#assertboundedstring)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertboundedstring)                                                                          |
| [assertBoundedStringEffect](/docs/api/jobs#assertboundedstringeffect)                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertboundedstringeffect)                                                                    |
| [assertCanonicalScalarKey](/docs/api/jobs#assertcanonicalscalarkey)                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertcanonicalscalarkey)                                                                     |
| [assertCanonicalScalarKeyEffect](/docs/api/jobs#assertcanonicalscalarkeyeffect)                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertcanonicalscalarkeyeffect)                                                               |
| [assertFieldName](/docs/api/jobs#assertfieldname)                                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertfieldname)                                                                              |
| [assertFieldNameEffect](/docs/api/jobs#assertfieldnameeffect)                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertfieldnameeffect)                                                                        |
| [assertJobDescriptor](/docs/api/jobs#assertjobdescriptor)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertjobdescriptor)                                                                          |
| [assertJobDescriptorEffect](/docs/api/jobs#assertjobdescriptoreffect)                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertjobdescriptoreffect)                                                                    |
| [assertJobGrant](/docs/api/jobs#assertjobgrant)                                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertjobgrant)                                                                               |
| [assertJobGrantEffect](/docs/api/jobs#assertjobgranteffect)                                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertjobgranteffect)                                                                         |
| [assertJobName](/docs/api/jobs#assertjobname-1)                                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertjobname-1)                                                                              |
| [assertJobNameEffect](/docs/api/jobs#assertjobnameeffect-1)                                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertjobnameeffect-1)                                                                        |
| [assertJobsAdapterRuntime](/docs/api/jobs#assertjobsadapterruntime)                               | Value | `@relkit/jobs`, `@relkit/jobs/adapter` | [API example](/docs/api/jobs#assertjobsadapterruntime)                                                                     |
| [assertJobsAdapterRuntimeEffect](/docs/api/jobs#assertjobsadapterruntimeeffect)                   | Value | `@relkit/jobs`, `@relkit/jobs/adapter` | [API example](/docs/api/jobs#assertjobsadapterruntimeeffect)                                                               |
| [assertJobsCapability](/docs/api/jobs#assertjobscapability-1)                                     | Value | `@relkit/jobs`, `@relkit/jobs/adapter` | [API example](/docs/api/jobs#assertjobscapability-1)                                                                       |
| [assertJobsCapabilityEffect](/docs/api/jobs#assertjobscapabilityeffect)                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertjobscapabilityeffect)                                                                   |
| [assertRfc3339Instant](/docs/api/jobs#assertrfc3339instant-1)                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertrfc3339instant-1)                                                                       |
| [assertRfc3339InstantEffect](/docs/api/jobs#assertrfc3339instanteffect-1)                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertrfc3339instanteffect-1)                                                                 |
| [assertSupportedJobsServiceOptions](/docs/api/jobs#assertsupportedjobsserviceoptions)             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertsupportedjobsserviceoptions)                                                            |
| [assertSupportedJobsServiceOptionsEffect](/docs/api/jobs#assertsupportedjobsserviceoptionseffect) | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#assertsupportedjobsserviceoptionseffect)                                                      |
| [assertTaskDescriptor](/docs/api/jobs#asserttaskdescriptor)                                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#asserttaskdescriptor)                                                                         |
| [assertTaskDescriptorEffect](/docs/api/jobs#asserttaskdescriptoreffect)                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#asserttaskdescriptoreffect)                                                                   |
| [authorize](/docs/api/jobs#authorize)                                                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#authorize)                                                                                    |
| [authorizeJobAccess](/docs/api/jobs#authorizejobaccess)                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#authorizejobaccess)                                                                           |
| [authorizeJobAccessEffect](/docs/api/jobs#authorizejobaccesseffect)                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#authorizejobaccesseffect)                                                                     |
| [BindingSource](/docs/api/jobs#bindingsource-type-alias)                                          | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [cancelRun](/docs/api/jobs#cancelrun)                                                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#cancelrun)                                                                                    |
| [cancelRunEffect](/docs/api/jobs#cancelruneffect)                                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#cancelruneffect)                                                                              |
| [CanonicalTaskSubmissionOptions](/docs/api/jobs#canonicaltasksubmissionoptions-interface)         | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [copyConcurrency](/docs/api/jobs#copyconcurrency)                                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#copyconcurrency)                                                                              |
| [copyConcurrencyEffect](/docs/api/jobs#copyconcurrencyeffect)                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#copyconcurrencyeffect)                                                                        |
| [copyLogging](/docs/api/jobs#copylogging)                                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#copylogging)                                                                                  |
| [copyLoggingEffect](/docs/api/jobs#copyloggingeffect)                                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#copyloggingeffect)                                                                            |
| [copyResources](/docs/api/jobs#copyresources)                                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#copyresources)                                                                                |
| [copyResourcesEffect](/docs/api/jobs#copyresourceseffect)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#copyresourceseffect)                                                                          |
| [copyTaskTags](/docs/api/jobs#copytasktags)                                                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#copytasktags)                                                                                 |
| [copyTaskTagsEffect](/docs/api/jobs#copytasktagseffect)                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#copytasktagseffect)                                                                           |
| [copyTriggerOptions](/docs/api/jobs#copytriggeroptions-1)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#copytriggeroptions-1)                                                                         |
| [createCursor](/docs/api/jobs#createcursor)                                                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#createcursor)                                                                                 |
| [createJobClient](/docs/api/jobs#createjobclient)                                                 | Value | `@relkit/jobs/legacy`                  | [API example](/docs/api/jobs#createjobclient)                                                                              |
| [createJobClientEffect](/docs/api/jobs#createjobclienteffect)                                     | Value | `@relkit/jobs/legacy`                  | [API example](/docs/api/jobs#createjobclienteffect)                                                                        |
| [createJobCursor](/docs/api/jobs#createjobcursor)                                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#createjobcursor)                                                                              |
| [createJobCursorEffect](/docs/api/jobs#createjobcursoreffect)                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#createjobcursoreffect)                                                                        |
| [createJobsControls](/docs/api/jobs#createjobscontrols)                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#createjobscontrols)                                                                           |
| [createJobsControlsEffect](/docs/api/jobs#createjobscontrolseffect)                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#createjobscontrolseffect)                                                                     |
| [createJobsRuntime](/docs/api/jobs#createjobsruntime)                                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#createjobsruntime)                                                                            |
| [createJobsRuntimeEffect](/docs/api/jobs#createjobsruntimeeffect)                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#createjobsruntimeeffect)                                                                      |
| [createRunLocator](/docs/api/jobs#createrunlocator)                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#createrunlocator)                                                                             |
| [createRunLocatorEffect](/docs/api/jobs#createrunlocatoreffect)                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#createrunlocatoreffect)                                                                       |
| [createScheduleControls](/docs/api/jobs#createschedulecontrols)                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#createschedulecontrols)                                                                       |
| [createScheduleControlsEffect](/docs/api/jobs#createschedulecontrolseffect)                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#createschedulecontrolseffect)                                                                 |
| [createSubmissionPipeline](/docs/api/jobs#createsubmissionpipeline)                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#createsubmissionpipeline)                                                                     |
| [createSubmissionPipelineEffect](/docs/api/jobs#createsubmissionpipelineeffect)                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#createsubmissionpipelineeffect)                                                               |
| [createTaskProgressEmitter](/docs/api/jobs#createtaskprogressemitter)                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#createtaskprogressemitter)                                                                    |
| [createTaskProgressEmitterEffect](/docs/api/jobs#createtaskprogressemittereffect)                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#createtaskprogressemittereffect)                                                              |
| [createTaskStreamEmitter](/docs/api/jobs#createtaskstreamemitter)                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#createtaskstreamemitter)                                                                      |
| [createTaskStreamEmitterEffect](/docs/api/jobs#createtaskstreamemittereffect)                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#createtaskstreamemittereffect)                                                                |
| [currentJobsRuntime](/docs/api/jobs#currentjobsruntime)                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#currentjobsruntime)                                                                           |
| [currentJobsRuntimeEffect](/docs/api/jobs#currentjobsruntimeeffect)                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#currentjobsruntimeeffect)                                                                     |
| [decodeCursor](/docs/api/jobs#decodecursor)                                                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#decodecursor)                                                                                 |
| [decodeJobWire](/docs/api/jobs#decodejobwire)                                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#decodejobwire)                                                                                |
| [decodeJobWireEffect](/docs/api/jobs#decodejobwireeffect)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#decodejobwireeffect)                                                                          |
| [decodeRunLocator](/docs/api/jobs#decoderunlocator)                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#decoderunlocator)                                                                             |
| [defineJob](/docs/api/jobs#definejob)                                                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#definejob)                                                                                    |
| [defineJob](/docs/api/jobs#definejob-1)                                                           | Value | `@relkit/jobs/legacy`                  | [API example](/docs/api/jobs#definejob-1)                                                                                  |
| [defineJobEffect](/docs/api/jobs#definejobeffect)                                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#definejobeffect)                                                                              |
| [defineJobEffect](/docs/api/jobs#definejobeffect-1)                                               | Value | `@relkit/jobs/legacy`                  | [API example](/docs/api/jobs#definejobeffect-1)                                                                            |
| [DefineJobOptions](/docs/api/jobs#definejoboptions-type-alias)                                    | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [DefineJobOptions](/docs/api/jobs#definejoboptions-interface)                                     | Type  | `@relkit/jobs/legacy`                  | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [defineTask](/docs/api/jobs#definetask)                                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#definetask)                                                                                   |
| [defineTaskEffect](/docs/api/jobs#definetaskeffect)                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#definetaskeffect)                                                                             |
| [DefineTaskOptions](/docs/api/jobs#definetaskoptions-interface)                                   | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [deserializeJobsServiceOptions](/docs/api/jobs#deserializejobsserviceoptions)                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#deserializejobsserviceoptions)                                                                |
| [deserializeJobsServiceOptionsEffect](/docs/api/jobs#deserializejobsserviceoptionseffect)         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#deserializejobsserviceoptionseffect)                                                          |
| [diagnoseJobMigration](/docs/api/jobs#diagnosejobmigration)                                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#diagnosejobmigration)                                                                         |
| [diagnoseJobMigrationEffect](/docs/api/jobs#diagnosejobmigrationeffect)                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#diagnosejobmigrationeffect)                                                                   |
| [diagnoseLegacyCompatibility](/docs/api/jobs#diagnoselegacycompatibility)                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#diagnoselegacycompatibility)                                                                  |
| [diagnoseLegacyCompatibilityEffect](/docs/api/jobs#diagnoselegacycompatibilityeffect)             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#diagnoselegacycompatibilityeffect)                                                            |
| [DurationInput](/docs/api/jobs#durationinput-type-alias)                                          | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [durationToMillis](/docs/api/jobs#durationtomillis)                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#durationtomillis)                                                                             |
| [durationToMillisEffect](/docs/api/jobs#durationtomilliseffect)                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#durationtomilliseffect)                                                                       |
| [DurationUnit](/docs/api/jobs#durationunit-type-alias)                                            | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [DurationValidationError](/docs/api/jobs#durationvalidationerror-class)                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#durationvalidationerror-class)                                                                |
| [EffectJobClient](/docs/api/jobs#effectjobclient-interface)                                       | Type  | `@relkit/jobs/legacy`                  | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [EffectTaskEmitter](/docs/api/jobs#effecttaskemitter-interface)                                   | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [encodeJobWire](/docs/api/jobs#encodejobwire)                                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#encodejobwire)                                                                                |
| [encodeJobWireEffect](/docs/api/jobs#encodejobwireeffect)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#encodejobwireeffect)                                                                          |
| [encodeRunLocator](/docs/api/jobs#encoderunlocator)                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#encoderunlocator)                                                                             |
| [encodeTaskInput](/docs/api/jobs#encodetaskinput)                                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#encodetaskinput)                                                                              |
| [encodeTaskInputEffect](/docs/api/jobs#encodetaskinputeffect)                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#encodetaskinputeffect)                                                                        |
| [encodeTaskOutput](/docs/api/jobs#encodetaskoutput)                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#encodetaskoutput)                                                                             |
| [encodeTaskOutputEffect](/docs/api/jobs#encodetaskoutputeffect)                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#encodetaskoutputeffect)                                                                       |
| [getRun](/docs/api/jobs#getrun)                                                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#getrun)                                                                                       |
| [getRunEffect](/docs/api/jobs#getruneffect)                                                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#getruneffect)                                                                                 |
| [getScheduleEffect](/docs/api/jobs#getscheduleeffect)                                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#getscheduleeffect)                                                                            |
| [IdempotencyDefinition](/docs/api/jobs#idempotencydefinition-interface)                           | Type  | `@relkit/jobs/legacy`                  | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [InputOf](/docs/api/jobs#inputof-type-alias)                                                      | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [InstantValidationError](/docs/api/jobs#instantvalidationerror-class)                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#instantvalidationerror-class)                                                                 |
| [isDurationInput](/docs/api/jobs#isdurationinput)                                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#isdurationinput)                                                                              |
| [isDurationInputEffect](/docs/api/jobs#isdurationinputeffect)                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#isdurationinputeffect)                                                                        |
| [isJobDescriptor](/docs/api/jobs#isjobdescriptor)                                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#isjobdescriptor)                                                                              |
| [isJobDescriptorEffect](/docs/api/jobs#isjobdescriptoreffect)                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#isjobdescriptoreffect)                                                                        |
| [isJobName](/docs/api/jobs#isjobname-1)                                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#isjobname-1)                                                                                  |
| [isJobNameEffect](/docs/api/jobs#isjobnameeffect-1)                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#isjobnameeffect-1)                                                                            |
| [isJobsAdapterRuntime](/docs/api/jobs#isjobsadapterruntime)                                       | Value | `@relkit/jobs`, `@relkit/jobs/adapter` | [API example](/docs/api/jobs#isjobsadapterruntime)                                                                         |
| [isJobsAdapterRuntimeEffect](/docs/api/jobs#isjobsadapterruntimeeffect)                           | Value | `@relkit/jobs`, `@relkit/jobs/adapter` | [API example](/docs/api/jobs#isjobsadapterruntimeeffect)                                                                   |
| [isRfc3339Instant](/docs/api/jobs#isrfc3339instant-1)                                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#isrfc3339instant-1)                                                                           |
| [isRfc3339InstantEffect](/docs/api/jobs#isrfc3339instanteffect-1)                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#isrfc3339instanteffect-1)                                                                     |
| [isTaskDescriptor](/docs/api/jobs#istaskdescriptor)                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#istaskdescriptor)                                                                             |
| [isTaskDescriptorEffect](/docs/api/jobs#istaskdescriptoreffect)                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#istaskdescriptoreffect)                                                                       |
| [isValidJobName](/docs/api/jobs#isvalidjobname-1)                                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#isvalidjobname-1)                                                                             |
| [JOB_NAME_MAX_LENGTH](/docs/api/app#job_name_max_length)                                          | Value | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JOB_NAME_PATTERN](/docs/api/jobs#job_name_pattern-1)                                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#job_name_pattern-1)                                                                           |
| [JOB_NAME_RESERVED](/docs/api/jobs#job_name_reserved-1)                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#job_name_reserved-1)                                                                          |
| [JOB_PROFILE_DEPRECATED_CODE](/docs/api/jobs#job_profile_deprecated_code)                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#job_profile_deprecated_code)                                                                  |
| [JobAccessGrant](/docs/api/app#jobaccessgrant-interface)                                          | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobAccessRequest](/docs/api/app#jobaccessrequest-interface)                                      | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobAdmission](/docs/api/jobs#jobadmission-interface)                                             | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobAuthorizationContext](/docs/api/jobs#jobauthorizationcontext-interface)                       | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobAuthorizationError](/docs/api/jobs#jobauthorizationerror-class)                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobauthorizationerror-class)                                                                  |
| [JobAuthorizationFailure](/docs/api/jobs#jobauthorizationfailure-class)                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobauthorizationfailure-class)                                                                |
| [JobBindingErrorCode](/docs/api/jobs#jobbindingerrorcode-type-alias)                              | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobBindingFailure](/docs/api/jobs#jobbindingfailure-class)                                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobbindingfailure-class)                                                                      |
| [JobBindingMigration](/docs/api/jobs#jobbindingmigration-type-alias)                              | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobBindingResolutionError](/docs/api/jobs#jobbindingresolutionerror-class)                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobbindingresolutionerror-class)                                                              |
| [JobCancelOptions](/docs/api/jobs#jobcanceloptions-interface)                                     | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobClient](/docs/api/jobs#jobclient-interface)                                                   | Type  | `@relkit/jobs/legacy`                  | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobClientAccess](/docs/api/jobs#jobclientaccess-type-alias)                                      | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobClientFailure](/docs/api/jobs#jobclientfailure-class)                                         | Value | `@relkit/jobs/legacy`                  | [API example](/docs/api/jobs#jobclientfailure-class)                                                                       |
| [JobClientField](/docs/api/jobs#jobclientfield-type-alias)                                        | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobClientOperation](/docs/api/app#jobclientoperation-type-alias)                                 | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobClientOptions](/docs/api/jobs#jobclientoptions-interface)                                     | Type  | `@relkit/jobs/legacy`                  | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobControlFailure](/docs/api/jobs#jobcontrolfailure-class)                                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobcontrolfailure-class)                                                                      |
| [JobControlUnknownError](/docs/api/jobs#jobcontrolunknownerror-class)                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobcontrolunknownerror-class)                                                                 |
| [JobCursorBinding](/docs/api/jobs#jobcursorbinding-interface)                                     | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobCursorError](/docs/api/jobs#jobcursorerror-class)                                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobcursorerror-class)                                                                         |
| [JobCursorFailure](/docs/api/jobs#jobcursorfailure-class)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobcursorfailure-class)                                                                       |
| [JobCursorOptions](/docs/api/jobs#jobcursoroptions-interface)                                     | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobDeclaredEdge](/docs/api/jobs#jobdeclarededge-interface)                                       | Type  | `@relkit/jobs/legacy`                  | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobDefinitionFailure](/docs/api/jobs#jobdefinitionfailure-class)                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobdefinitionfailure-class)                                                                   |
| [JobDependencyError](/docs/api/jobs#jobdependencyerror-class)                                     | Value | `@relkit/jobs/legacy`                  | [API example](/docs/api/jobs#jobdependencyerror-class)                                                                     |
| [JobDescriptor](/docs/api/jobs#jobdescriptor-type-alias)                                          | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobDescriptor](/docs/api/jobs#jobdescriptor-interface)                                           | Type  | `@relkit/jobs/legacy`                  | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobDescriptorAny](/docs/api/jobs#jobdescriptorany-type-alias)                                    | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/packages/jobs/tests/jobs-quality.test.ts#L42)                 |
| [JobDescriptorForThisTask](/docs/api/jobs#jobdescriptorforthistask-type-alias)                    | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobEnqueueOptions](/docs/api/functions#jobenqueueoptions-interface)                              | Type  | `@relkit/jobs/legacy`                  | [API example](/docs/api/functions#jobenqueueoptions-interface)                                                             |
| [JobEnqueueResult](/docs/api/functions#jobenqueueresult-interface)                                | Type  | `@relkit/jobs/legacy`                  | [API example](/docs/api/functions#jobenqueueresult-interface)                                                              |
| [JobErrorEnvelope](/docs/api/app#joberrorenvelope-interface)                                      | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobIdentityError](/docs/api/jobs#jobidentityerror-class)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobidentityerror-class)                                                                       |
| [JobInputValidationError](/docs/api/jobs#jobinputvalidationerror-class)                           | Value | `@relkit/jobs/legacy`                  | [API example](/docs/api/jobs#jobinputvalidationerror-class)                                                                |
| [JobInvocationBridge](/docs/api/jobs#jobinvocationbridge-interface)                               | Type  | `@relkit/jobs/legacy`                  | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobInvocationBridgeOptions](/docs/api/jobs#jobinvocationbridgeoptions-interface)                 | Type  | `@relkit/jobs/legacy`                  | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobMigrationDiagnostic](/docs/api/jobs#jobmigrationdiagnostic-interface)                         | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobMigrationSeverity](/docs/api/jobs#jobmigrationseverity-type-alias)                            | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobMigrationSnapshot](/docs/api/jobs#jobmigrationsnapshot-interface)                             | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobName](/docs/api/jobs#jobname-type-alias)                                                      | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobNameValidationError](/docs/api/jobs#jobnamevalidationerror-class)                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobnamevalidationerror-class)                                                                 |
| [JobObservationTimeoutError](/docs/api/jobs#jobobservationtimeouterror-class)                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobobservationtimeouterror-class)                                                             |
| [JobObservedEdge](/docs/api/jobs#jobobservededge-interface)                                       | Type  | `@relkit/jobs/legacy`                  | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobObserveOptions](/docs/api/jobs#jobobserveoptions-interface)                                   | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobOperationCancelledError](/docs/api/jobs#joboperationcancellederror-class)                     | Value | `@relkit/jobs/legacy`                  | [API example](/docs/api/jobs#joboperationcancellederror-class)                                                             |
| [JobOperationContext](/docs/api/jobs#joboperationcontext-interface)                               | Type  | `@relkit/jobs/legacy`                  | [Source example](https://github.com/rel-kit/relkit/blob/main/packages/jobs/tests/client.test.ts#L26)                       |
| [JobOperationTimeoutError](/docs/api/jobs#joboperationtimeouterror-class)                         | Value | `@relkit/jobs/legacy`                  | [API example](/docs/api/jobs#joboperationtimeouterror-class)                                                               |
| [JobProfileError](/docs/api/jobs#jobprofileerror-class)                                           | Value | `@relkit/jobs/legacy`                  | [API example](/docs/api/jobs#jobprofileerror-class)                                                                        |
| [JobProvider](/docs/api/jobs#jobprovider-interface)                                               | Type  | `@relkit/jobs/legacy`                  | [Source example](https://github.com/rel-kit/relkit/blob/main/packages/jobs/tests/client.test.ts#L27)                       |
| [JobProviderError](/docs/api/jobs#jobprovidererror-class)                                         | Value | `@relkit/jobs/legacy`                  | [API example](/docs/api/jobs#jobprovidererror-class)                                                                       |
| [JobProviderResult](/docs/api/jobs#jobproviderresult-type-alias)                                  | Type  | `@relkit/jobs/legacy`                  | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobReceiptError](/docs/api/jobs#jobreceipterror-class)                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobreceipterror-class)                                                                        |
| [JobResultUnavailableError](/docs/api/jobs#jobresultunavailableerror-class)                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobresultunavailableerror-class)                                                              |
| [JobRetryOptions](/docs/api/jobs#jobretryoptions-interface)                                       | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobRunResultOptions](/docs/api/jobs#jobrunresultoptions-type-alias)                              | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobRunStatus](/docs/api/app#jobrunstatus-type-alias)                                             | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JOBS_ADAPTER_PROTOCOL_VERSION](/docs/api/jobs#jobs_adapter_protocol_version)                     | Value | `@relkit/jobs`, `@relkit/jobs/adapter` | [API example](/docs/api/jobs#jobs_adapter_protocol_version)                                                                |
| [JobsAdapterRuntime](/docs/api/jobs#jobsadapterruntime-interface)                                 | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Source example](https://github.com/rel-kit/relkit/blob/main/packages/jobs/tests/adapter-effect.test.ts#L32)               |
| [JobsAdapterValidationError](/docs/api/jobs#jobsadaptervalidationerror-class)                     | Value | `@relkit/jobs`, `@relkit/jobs/adapter` | [API example](/docs/api/jobs#jobsadaptervalidationerror-class)                                                             |
| [JobsCapability](/docs/api/jobs#jobscapability-interface)                                         | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobsCapabilityError](/docs/api/jobs#jobscapabilityerror-class)                                   | Value | `@relkit/jobs`, `@relkit/jobs/adapter` | [API example](/docs/api/jobs#jobscapabilityerror-class)                                                                    |
| [JobsCapabilityFailure](/docs/api/jobs#jobscapabilityfailure-class)                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobscapabilityfailure-class)                                                                  |
| [JobsCapabilityName](/docs/api/jobs#jobscapabilityname-type-alias)                                | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobsCapabilityReport](/docs/api/jobs#jobscapabilityreport-interface)                             | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobsCapabilitySupport](/docs/api/jobs#jobscapabilitysupport-type-alias)                          | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobScheduleClient](/docs/api/jobs#jobscheduleclient-interface)                                   | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobScheduleControlFailure](/docs/api/jobs#jobschedulecontrolfailure-class)                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobschedulecontrolfailure-class)                                                              |
| [JobsControls](/docs/api/jobs#jobscontrols-interface)                                             | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobServiceSelection](/docs/api/jobs#jobserviceselection-type-alias)                              | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobsManifestLike](/docs/api/jobs#jobsmanifestlike-interface)                                     | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobsManifestReader](/docs/api/jobs#jobsmanifestreader-class)                                     | Value | `@relkit/jobs/server`                  | [API example](/docs/api/jobs#jobsmanifestreader-class)                                                                     |
| [JobsManifestReaderLive](/docs/api/jobs#jobsmanifestreaderlive)                                   | Value | `@relkit/jobs/server`                  | [API example](/docs/api/jobs#jobsmanifestreaderlive)                                                                       |
| [JobsOperationOptions](/docs/api/jobs#jobsoperationoptions-type-alias)                            | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobsRuntime](/docs/api/jobs#jobsruntime-interface)                                               | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/packages/jobs/tests/control-result-effect.test.ts#L12)        |
| [JobsRuntimeBinding](/docs/api/jobs#jobsruntimebinding-interface)                                 | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/packages/jobs/tests/submission-support-effect.test.ts#L37)    |
| [JobsRuntimeCallbackError](/docs/api/jobs#jobsruntimecallbackerror-class)                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobsruntimecallbackerror-class)                                                               |
| [JobsRuntimeError](/docs/api/jobs#jobsruntimeerror-class)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobsruntimeerror-class)                                                                       |
| [JobsRuntimeOptions](/docs/api/jobs#jobsruntimeoptions-interface)                                 | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobsServerError](/docs/api/jobs#jobsservererror-class)                                           | Value | `@relkit/jobs/server`                  | [API example](/docs/api/jobs#jobsservererror-class)                                                                        |
| [JobsServiceBehavior](/docs/api/jobs#jobsservicebehavior-type-alias)                              | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobsServiceOptionName](/docs/api/jobs#jobsserviceoptionname-type-alias)                          | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobsServiceOptions](/docs/api/jobs#jobsserviceoptions-interface)                                 | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/packages/jobs/tests/service-options-validation.test.ts#L9)    |
| [JobsServiceOptionsError](/docs/api/jobs#jobsserviceoptionserror-class)                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobsserviceoptionserror-class)                                                                |
| [JobState](/docs/api/functions#jobstate-type-alias)                                               | Type  | `@relkit/jobs/legacy`                  | [API example](/docs/api/functions#jobstate-type-alias)                                                                     |
| [JobStatus](/docs/api/functions#jobstatus-interface)                                              | Type  | `@relkit/jobs/legacy`                  | [API example](/docs/api/functions#jobstatus-interface)                                                                     |
| [JobsTelemetry](/docs/api/jobs#jobstelemetry-class)                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobstelemetry-class)                                                                          |
| [JobsTelemetryLive](/docs/api/jobs#jobstelemetrylive-1)                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobstelemetrylive-1)                                                                          |
| [JobSubmissionCancelledError](/docs/api/jobs#jobsubmissioncancellederror-class)                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobsubmissioncancellederror-class)                                                            |
| [JobSubmissionError](/docs/api/jobs#jobsubmissionerror-class)                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobsubmissionerror-class)                                                                     |
| [JobSubmissionPipelineFailure](/docs/api/jobs#jobsubmissionpipelinefailure-class)                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobsubmissionpipelinefailure-class)                                                           |
| [JobSubmissionUnknownError](/docs/api/jobs#jobsubmissionunknownerror-class)                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#jobsubmissionunknownerror-class)                                                              |
| [JobTriggerClients](/docs/api/jobs#jobtriggerclients-type-alias)                                  | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobUnknownOutcome](/docs/api/app#jobunknownoutcome-interface)                                    | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JobWireEnvelope](/docs/api/app#jobwireenvelope-type-alias)                                       | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [JsonWireEnvelope](/docs/api/app#jsonwireenvelope-interface)                                      | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [LegacyCompatibilitySnapshot](/docs/api/jobs#legacycompatibilitysnapshot-interface)               | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [LegacyJobValidationError](/docs/api/jobs#legacyjobvalidationerror-class)                         | Value | `@relkit/jobs/legacy`                  | [API example](/docs/api/jobs#legacyjobvalidationerror-class)                                                               |
| [listRuns](/docs/api/jobs#listruns)                                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#listruns)                                                                                     |
| [listRunsEffect](/docs/api/jobs#listrunseffect)                                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#listrunseffect)                                                                               |
| [listSchedulesEffect](/docs/api/jobs#listscheduleseffect)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#listscheduleseffect)                                                                          |
| [memoryBytes](/docs/api/jobs#memorybytes)                                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#memorybytes)                                                                                  |
| [memoryBytesEffect](/docs/api/jobs#memorybyteseffect)                                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#memorybyteseffect)                                                                            |
| [MemoryInput](/docs/api/jobs#memoryinput-type-alias)                                              | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [NamedStreamFrame](/docs/api/app#namedstreamframe-type-alias)                                     | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [namespaceHash](/docs/api/jobs#namespacehash-1)                                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#namespacehash-1)                                                                              |
| [namespaceHashEffect](/docs/api/jobs#namespacehasheffect)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#namespacehasheffect)                                                                          |
| [NativeCancelRequest](/docs/api/jobs#nativecancelrequest-interface)                               | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [NativeControlReceipt](/docs/api/jobs#nativecontrolreceipt-type-alias)                            | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [NativeDurableSleep](/docs/api/jobs#nativedurablesleep-interface)                                 | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [NativeLocator](/docs/api/jobs#nativelocator-type-alias)                                          | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [NativeObservation](/docs/api/jobs#nativeobservation-type-alias)                                  | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [NativeOwnedScheduleRecord](/docs/api/jobs#nativeownedschedulerecord-interface)                   | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [NativeProgressWriter](/docs/api/jobs#nativeprogresswriter-interface)                             | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [NativeReceipt](/docs/api/jobs#nativereceipt-type-alias)                                          | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [NativeRetryRequest](/docs/api/jobs#nativeretryrequest-interface)                                 | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [NativeRun](/docs/api/jobs#nativerun-type-alias)                                                  | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [NativeRunPage](/docs/api/jobs#nativerunpage-type-alias)                                          | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [NativeRunQuery](/docs/api/jobs#nativerunquery-type-alias)                                        | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [nativeScheduleLayer](/docs/api/jobs#nativeschedulelayer)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#nativeschedulelayer)                                                                          |
| [NativeScheduleOperations](/docs/api/jobs#nativescheduleoperations-interface)                     | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Source example](https://github.com/rel-kit/relkit/blob/main/packages/jobs/tests/schedule-controls-operations.test.ts#L19) |
| [NativeScheduleService](/docs/api/jobs#nativescheduleservice-class)                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#nativescheduleservice-class)                                                                  |
| [NativeStreamWriter](/docs/api/jobs#nativestreamwriter-interface)                                 | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [NativeStreamWriters](/docs/api/jobs#nativestreamwriters-type-alias)                              | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [NativeSubmission](/docs/api/jobs#nativesubmission-interface)                                     | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Source example](https://github.com/rel-kit/relkit/blob/main/packages/providers-local/tests/native-jobs.test.ts#L19)       |
| [NativeTaskWork](/docs/api/jobs#nativetaskwork-interface)                                         | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Source example](https://github.com/rel-kit/relkit/blob/main/tests/integration/fixtures/commerce-layout-task-run.ts#L59)   |
| [NativeTaskWorker](/docs/api/jobs#nativetaskworker-interface)                                     | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [NativeWatchRequest](/docs/api/jobs#nativewatchrequest-interface)                                 | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [NormalizedTaskRetryPolicy](/docs/api/jobs#normalizedtaskretrypolicy-interface)                   | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/packages/jobs/tests/jobs-quality.test.ts#L27)                 |
| [normalizeJobName](/docs/api/jobs#normalizejobname-1)                                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#normalizejobname-1)                                                                           |
| [observeRun](/docs/api/jobs#observerun)                                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#observerun)                                                                                   |
| [observeRunEffect](/docs/api/jobs#observeruneffect)                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#observeruneffect)                                                                             |
| [OperationContext](/docs/api/jobs#operationcontext-interface)                                     | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Source example](https://github.com/rel-kit/relkit/blob/main/packages/jobs/tests/schedule-reconciliation.test.ts#L18)      |
| [OutputOf](/docs/api/jobs#outputof-type-alias)                                                    | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [parseDuration](/docs/api/jobs#parseduration)                                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#parseduration)                                                                                |
| [prepareCanonicalSubmission](/docs/api/jobs#preparecanonicalsubmission)                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#preparecanonicalsubmission)                                                                   |
| [prepareCanonicalSubmissionEffect](/docs/api/jobs#preparecanonicalsubmissioneffect)               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#preparecanonicalsubmissioneffect)                                                             |
| [prepareSubmission](/docs/api/jobs#preparesubmission)                                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#preparesubmission)                                                                            |
| [prepareSubmissionEffect](/docs/api/jobs#preparesubmissioneffect)                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#preparesubmissioneffect)                                                                      |
| [ProgressEmitReceipt](/docs/api/app#progressemitreceipt-interface)                                | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [projectRun](/docs/api/jobs#projectrun)                                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#projectrun)                                                                                   |
| [projectRunPage](/docs/api/jobs#projectrunpage)                                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#projectrunpage)                                                                               |
| [projectRunPageEffect](/docs/api/jobs#projectrunpageeffect)                                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#projectrunpageeffect)                                                                         |
| [projectRunSnapshot](/docs/api/jobs#projectrunsnapshot)                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#projectrunsnapshot)                                                                           |
| [projectRunSnapshotEffect](/docs/api/jobs#projectrunsnapshoteffect)                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#projectrunsnapshoteffect)                                                                     |
| [PublishedEventName](/docs/api/jobs#publishedeventname-type-alias)                                | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [readJobCursor](/docs/api/jobs#readjobcursor)                                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#readjobcursor)                                                                                |
| [readJobCursorEffect](/docs/api/jobs#readjobcursoreffect)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#readjobcursoreffect)                                                                          |
| [reconcileNativeSchedules](/docs/api/jobs#reconcilenativeschedules)                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#reconcilenativeschedules)                                                                     |
| [reconcileNativeSchedulesEffect](/docs/api/jobs#reconcilenativescheduleseffect)                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#reconcilenativescheduleseffect)                                                               |
| [requireJobsRuntime](/docs/api/jobs#requirejobsruntime)                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#requirejobsruntime)                                                                           |
| [requireJobsRuntimeEffect](/docs/api/jobs#requirejobsruntimeeffect)                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#requirejobsruntimeeffect)                                                                     |
| [resolveBinding](/docs/api/jobs#resolvebinding)                                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#resolvebinding)                                                                               |
| [ResolveBindingOptions](/docs/api/jobs#resolvebindingoptions-interface)                           | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [ResolvedTaskBinding](/docs/api/jobs#resolvedtaskbinding-interface)                               | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [resolveTaskBinding](/docs/api/jobs#resolvetaskbinding)                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#resolvetaskbinding)                                                                           |
| [resolveTaskBindingEffect](/docs/api/jobs#resolvetaskbindingeffect)                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#resolvetaskbindingeffect)                                                                     |
| [ResultAvailability](/docs/api/app#resultavailability-type-alias)                                 | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [retryDelayMillis](/docs/api/jobs#retrydelaymillis)                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#retrydelaymillis)                                                                             |
| [retryDelayMillisEffect](/docs/api/jobs#retrydelaymilliseffect)                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#retrydelaymilliseffect)                                                                       |
| [RetryJitter](/docs/api/jobs#retryjitter-type-alias)                                              | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [RetryJitter](/docs/api/jobs#retryjitter-type-alias-1)                                            | Type  | `@relkit/jobs/legacy`                  | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [retryOperationIdentity](/docs/api/jobs#retryoperationidentity)                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#retryoperationidentity)                                                                       |
| [retryOperationIdentityEffect](/docs/api/jobs#retryoperationidentityeffect)                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#retryoperationidentityeffect)                                                                 |
| [RetryPolicy](/docs/api/jobs#retrypolicy-interface)                                               | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [RetryPolicy](/docs/api/jobs#retrypolicy-interface-1)                                             | Type  | `@relkit/jobs/legacy`                  | [Source example](https://github.com/rel-kit/relkit/blob/main/tests/contracts/events.ts#L19)                                |
| [retryRun](/docs/api/jobs#retryrun)                                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#retryrun)                                                                                     |
| [retryRunEffect](/docs/api/jobs#retryruneffect)                                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#retryruneffect)                                                                               |
| [rotateRunLocatorKeys](/docs/api/jobs#rotaterunlocatorkeys)                                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#rotaterunlocatorkeys)                                                                         |
| [rotateRunLocatorKeysEffect](/docs/api/jobs#rotaterunlocatorkeyseffect)                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#rotaterunlocatorkeyseffect)                                                                   |
| [RUN_LOCATOR_MAX_BYTES](/docs/api/jobs#run_locator_max_bytes)                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#run_locator_max_bytes)                                                                        |
| [RUN_LOCATOR_VERSION](/docs/api/jobs#run_locator_version)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#run_locator_version)                                                                          |
| [RunAvailability](/docs/api/app#runavailability-interface)                                        | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [RunCancellationReceipt](/docs/api/app#runcancellationreceipt-interface)                          | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [RunConnection](/docs/api/app#runconnection-type-alias)                                           | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [RunHandle](/docs/api/app#runhandle-interface)                                                    | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/tests/types/jobs-client.ts#L36)                               |
| [runInJobsRuntime](/docs/api/jobs#runinjobsruntime)                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#runinjobsruntime)                                                                             |
| [runInJobsRuntimeEffect](/docs/api/jobs#runinjobsruntimeeffect)                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#runinjobsruntimeeffect)                                                                       |
| [RunListQuery](/docs/api/app#runlistquery-interface)                                              | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [RunLocatorCreateOptions](/docs/api/jobs#runlocatorcreateoptions-interface)                       | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [RunLocatorError](/docs/api/jobs#runlocatorerror-class)                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#runlocatorerror-class)                                                                        |
| [RunLocatorFailure](/docs/api/jobs#runlocatorfailure-class)                                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#runlocatorfailure-class)                                                                      |
| [RunLocatorGeneration](/docs/api/jobs#runlocatorgeneration-interface)                             | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [RunLocatorGenerationStorage](/docs/api/jobs#runlocatorgenerationstorage-class)                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#runlocatorgenerationstorage-class)                                                            |
| [RunLocatorGenerationStore](/docs/api/jobs#runlocatorgenerationstore-interface)                   | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [RunLocatorKeyRing](/docs/api/jobs#runlocatorkeyring-interface)                                   | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [RunLocatorKeyRingStore](/docs/api/jobs#runlocatorkeyringstore-interface)                         | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [RunLocatorPayload](/docs/api/jobs#runlocatorpayload-interface)                                   | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [RunLocatorRouter](/docs/api/jobs#runlocatorrouter-class)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#runlocatorrouter-class)                                                                       |
| [RunLocatorStoreFailure](/docs/api/jobs#runlocatorstorefailure-class)                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#runlocatorstorefailure-class)                                                                 |
| [runLocatorStoreLayer](/docs/api/jobs#runlocatorstorelayer)                                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#runlocatorstorelayer)                                                                         |
| [RunLocatorVerifyOptions](/docs/api/jobs#runlocatorverifyoptions-interface)                       | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [RunPage](/docs/api/app#runpage-interface)                                                        | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/packages/inspector-api/tests/compatibility/jobs.test.ts#L85)  |
| [RunResultOptions](/docs/api/jobs#runresultoptions-interface)                                     | Type  | `@relkit/jobs`, `@relkit/jobs/server`  | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [RunRetryReceipt](/docs/api/app#runretryreceipt-interface)                                        | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [RunSnapshot](/docs/api/app#runsnapshot-type-alias)                                               | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/packages/client/tests/compatibility/jobs-watch.test.ts#L557)  |
| [RunWatchFrame](/docs/api/app#runwatchframe-type-alias)                                           | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/packages/client/tests/compatibility/jobs-watch.test.ts#L615)  |
| [runWithJobs](/docs/api/jobs#runwithjobs)                                                         | Value | `@relkit/jobs/server`                  | [API example](/docs/api/jobs#runwithjobs)                                                                                  |
| [RunWithJobsConfig](/docs/api/jobs#runwithjobsconfig-interface)                                   | Type  | `@relkit/jobs/server`                  | [API example](/docs/api/jobs#runwithjobsconfig-interface)                                                                  |
| [runWithJobsEffect](/docs/api/jobs#runwithjobseffect)                                             | Value | `@relkit/jobs/server`                  | [API example](/docs/api/jobs#runwithjobseffect)                                                                            |
| [runWithJobsRuntime](/docs/api/jobs#runwithjobsruntime)                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#runwithjobsruntime)                                                                           |
| [runWithJobsRuntimeEffect](/docs/api/jobs#runwithjobsruntimeeffect)                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#runwithjobsruntimeeffect)                                                                     |
| [ScheduleDefinition](/docs/api/jobs#scheduledefinition-type-alias)                                | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/packages/jobs/tests/schedule-controls.test.ts#L70)            |
| [ScheduleDefinition](/docs/api/jobs#scheduledefinition-interface)                                 | Type  | `@relkit/jobs/legacy`                  | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [ScheduleListOptions](/docs/api/jobs#schedulelistoptions-interface)                               | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [ScheduleMisfire](/docs/api/jobs#schedulemisfire-type-alias)                                      | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [scheduleOccurrenceIdentity](/docs/api/jobs#scheduleoccurrenceidentity)                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#scheduleoccurrenceidentity)                                                                   |
| [scheduleOccurrenceIdentityEffect](/docs/api/jobs#scheduleoccurrenceidentityeffect)               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#scheduleoccurrenceidentityeffect)                                                             |
| [scheduleOperationId](/docs/api/jobs#scheduleoperationid)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#scheduleoperationid)                                                                          |
| [scheduleOperationIdEffect](/docs/api/jobs#scheduleoperationideffect)                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#scheduleoperationideffect)                                                                    |
| [ScheduleOverlap](/docs/api/jobs#scheduleoverlap-type-alias-1)                                    | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [ScheduleOverlap](/docs/api/jobs#scheduleoverlap-type-alias)                                      | Type  | `@relkit/jobs/legacy`                  | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [scheduleOwner](/docs/api/jobs#scheduleowner)                                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#scheduleowner)                                                                                |
| [scheduleOwnerEffect](/docs/api/jobs#scheduleownereffect)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#scheduleownereffect)                                                                          |
| [ScheduleReadReceipt](/docs/api/jobs#schedulereadreceipt-interface)                               | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [ScheduleReconciliationFailure](/docs/api/jobs#schedulereconciliationfailure-class)               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#schedulereconciliationfailure-class)                                                          |
| [ScheduleReconciliationOptions](/docs/api/jobs#schedulereconciliationoptions-interface)           | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [ScheduleReconciliationResult](/docs/api/jobs#schedulereconciliationresult-interface)             | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [ScheduleRecord](/docs/api/jobs#schedulerecord-interface)                                         | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [ScheduleWriteOptions](/docs/api/jobs#schedulewriteoptions-interface)                             | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [ScheduleWriteOutcome](/docs/api/jobs#schedulewriteoutcome-type-alias)                            | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [ScheduleWriteReceipt](/docs/api/jobs#schedulewritereceipt-type-alias)                            | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [serializeJobsServiceOptions](/docs/api/jobs#serializejobsserviceoptions)                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#serializejobsserviceoptions)                                                                  |
| [serializeJobsServiceOptionsEffect](/docs/api/jobs#serializejobsserviceoptionseffect)             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#serializejobsserviceoptionseffect)                                                            |
| [ServerTriggerOptions](/docs/api/jobs#servertriggeroptions-interface)                             | Type  | `@relkit/jobs`, `@relkit/jobs/server`  | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [stableIdentityTuple](/docs/api/jobs#stableidentitytuple)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#stableidentitytuple)                                                                          |
| [stableIdentityTupleEffect](/docs/api/jobs#stableidentitytupleeffect)                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#stableidentitytupleeffect)                                                                    |
| [StreamIdentity](/docs/api/app#streamidentity-interface)                                          | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [StreamItem](/docs/api/app#streamitem-type-alias)                                                 | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [SubmissionAdmission](/docs/api/jobs#submissionadmission-interface)                               | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [SubmissionPipeline](/docs/api/jobs#submissionpipeline-interface)                                 | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [submitCanonicalTask](/docs/api/jobs#submitcanonicaltask)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#submitcanonicaltask)                                                                          |
| [submitCanonicalTaskEffect](/docs/api/jobs#submitcanonicaltaskeffect)                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#submitcanonicaltaskeffect)                                                                    |
| [submitJob](/docs/api/jobs#submitjob)                                                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#submitjob)                                                                                    |
| [submitJobEffect](/docs/api/jobs#submitjobeffect)                                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#submitjobeffect)                                                                              |
| [submitPreparedSubmission](/docs/api/jobs#submitpreparedsubmission)                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#submitpreparedsubmission)                                                                     |
| [submitTask](/docs/api/jobs#submittask)                                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#submittask)                                                                                   |
| [submitTaskEffect](/docs/api/jobs#submittaskeffect)                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#submittaskeffect)                                                                             |
| [TASK_INPUT_MAX_BYTES](/docs/api/jobs#task_input_max_bytes-2)                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#task_input_max_bytes-2)                                                                       |
| [TASK_ITEM_MAX_BYTES](/docs/api/jobs#task_item_max_bytes-2)                                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#task_item_max_bytes-2)                                                                        |
| [TASK_KEY_MAX_BYTES](/docs/api/jobs#task_key_max_bytes-2)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#task_key_max_bytes-2)                                                                         |
| [TASK_MAX_TAGS](/docs/api/jobs#task_max_tags-2)                                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#task_max_tags-2)                                                                              |
| [TASK_OUTPUT_MAX_BYTES](/docs/api/jobs#task_output_max_bytes-2)                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#task_output_max_bytes-2)                                                                      |
| [TASK_REASON_MAX_BYTES](/docs/api/jobs#task_reason_max_bytes-2)                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#task_reason_max_bytes-2)                                                                      |
| [TaskAuthContext](/docs/api/jobs#taskauthcontext-interface)                                       | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskBlockingWaitError](/docs/api/jobs#taskblockingwaiterror-class)                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#taskblockingwaiterror-class)                                                                  |
| [TaskCallerInput](/docs/api/jobs#taskcallerinput-type-alias)                                      | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/tests/types/jobs-names.test-d.ts#L80)                         |
| [TaskCanonicalInput](/docs/api/jobs#taskcanonicalinput-type-alias)                                | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/tests/types/jobs-names.test-d.ts#L81)                         |
| [TaskClientFor](/docs/api/jobs#taskclientfor-type-alias)                                          | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskClients](/docs/api/jobs#taskclients-type-alias)                                              | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskConcurrency](/docs/api/jobs#taskconcurrency-interface)                                       | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskContext](/docs/api/jobs#taskcontext-type-alias)                                              | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskContextBase](/docs/api/jobs#taskcontextbase-interface)                                       | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskDefinitionFailure](/docs/api/jobs#taskdefinitionfailure-class)                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#taskdefinitionfailure-class)                                                                  |
| [TaskDependencies](/docs/api/jobs#taskdependencies-interface)                                     | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskDescriptor](/docs/api/jobs#taskdescriptor-interface)                                         | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskDescriptorAny](/docs/api/jobs#taskdescriptorany-type-alias)                                  | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/packages/jobs/tests/jobs-quality.test.ts#L32)                 |
| [TaskEmissionError](/docs/api/jobs#taskemissionerror-class)                                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#taskemissionerror-class)                                                                      |
| [TaskEmissionErrorCode](/docs/api/jobs#taskemissionerrorcode-type-alias)                          | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskEmissionFailure](/docs/api/jobs#taskemissionfailure-class)                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#taskemissionfailure-class)                                                                    |
| [TaskEmissionSink](/docs/api/jobs#taskemissionsink-type-alias)                                    | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskEmitterOptions](/docs/api/jobs#taskemitteroptions-interface)                                 | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskExecution](/docs/api/jobs#taskexecution-type-alias)                                          | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskExecutionBinding](/docs/api/jobs#taskexecutionbinding-interface)                             | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskExecutionEnvelope](/docs/api/jobs#taskexecutionenvelope-interface)                           | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskExecutor](/docs/api/jobs#taskexecutor-interface)                                             | Type  | `@relkit/jobs`, `@relkit/jobs/adapter` | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskFailureHook](/docs/api/jobs#taskfailurehook-type-alias)                                      | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskHandler](/docs/api/jobs#taskhandler-type-alias)                                              | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/tests/types/jobs-names.test-d.ts#L94)                         |
| [TaskHandlerResult](/docs/api/jobs#taskhandlerresult-type-alias)                                  | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskHookContext](/docs/api/jobs#taskhookcontext-type-alias)                                      | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskInput](/docs/api/jobs#taskinput-type-alias)                                                  | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskLogging](/docs/api/jobs#tasklogging-interface)                                               | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskObservation](/docs/api/jobs#taskobservation-interface)                                       | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [taskOperationIdentity](/docs/api/jobs#taskoperationidentity)                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#taskoperationidentity)                                                                        |
| [taskOperationIdentityEffect](/docs/api/jobs#taskoperationidentityeffect)                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#taskoperationidentityeffect)                                                                  |
| [TaskOutput](/docs/api/jobs#taskoutput-type-alias)                                                | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskPolicyRandom](/docs/api/jobs#taskpolicyrandom-class)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#taskpolicyrandom-class)                                                                       |
| [taskPolicyRandomLayer](/docs/api/jobs#taskpolicyrandomlayer)                                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#taskpolicyrandomlayer)                                                                        |
| [TaskProgressEmitter](/docs/api/jobs#taskprogressemitter-interface)                               | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskProgressInput](/docs/api/jobs#taskprogressinput-type-alias)                                  | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/tests/types/jobs-names.test-d.ts#L86)                         |
| [TaskProgressOutput](/docs/api/jobs#taskprogressoutput-type-alias)                                | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/tests/types/jobs-names.test-d.ts#L87)                         |
| [TaskRawHandlerOutput](/docs/api/jobs#taskrawhandleroutput-type-alias)                            | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/tests/types/jobs-names.test-d.ts#L82)                         |
| [TaskResources](/docs/api/jobs#taskresources-interface)                                           | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskRetryPolicy](/docs/api/jobs#taskretrypolicy-interface)                                       | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskRunContext](/docs/api/jobs#taskruncontext-interface)                                         | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskSleepOptions](/docs/api/jobs#tasksleepoptions-interface)                                     | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskStartHook](/docs/api/jobs#taskstarthook-type-alias)                                          | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskStreamEmitter](/docs/api/jobs#taskstreamemitter-interface)                                   | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskStreamEmitterOptions](/docs/api/jobs#taskstreamemitteroptions-interface)                     | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskStreamEmitters](/docs/api/jobs#taskstreamemitters-type-alias)                                | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskStreamFrames](/docs/api/jobs#taskstreamframes-type-alias)                                    | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskStreamInput](/docs/api/jobs#taskstreaminput-type-alias)                                      | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/tests/types/jobs-names.test-d.ts#L88)                         |
| [TaskStreamItem](/docs/api/jobs#taskstreamitem-type-alias)                                        | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskStreamOutput](/docs/api/jobs#taskstreamoutput-type-alias)                                    | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/tests/types/jobs-names.test-d.ts#L89)                         |
| [TaskStreamSchemas](/docs/api/jobs#taskstreamschemas-type-alias)                                  | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskStreamSink](/docs/api/jobs#taskstreamsink-type-alias)                                        | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskSubmissionMetadata](/docs/api/jobs#tasksubmissionmetadata-interface)                         | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/packages/jobs/tests/submission-write-effect.test.ts#L16)      |
| [TaskSuccessHook](/docs/api/jobs#tasksuccesshook-type-alias)                                      | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/tests/types/jobs-names.test-d.ts#L90)                         |
| [TaskTriggerOptions](/docs/api/jobs#tasktriggeroptions-interface)                                 | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskValidatedOutput](/docs/api/jobs#taskvalidatedoutput-type-alias)                              | Type  | `@relkit/jobs`                         | [Source example](https://github.com/rel-kit/relkit/blob/main/tests/types/jobs-names.test-d.ts#L83)                         |
| [TaskWireErrorCode](/docs/api/jobs#taskwireerrorcode-type-alias)                                  | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [TaskWireFailure](/docs/api/jobs#taskwirefailure-class)                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#taskwirefailure-class)                                                                        |
| [TaskWireValidationError](/docs/api/jobs#taskwirevalidationerror-class)                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#taskwirevalidationerror-class)                                                                |
| [TriggerOptions](/docs/api/jobs#triggeroptions-interface)                                         | Type  | `@relkit/jobs`, `@relkit/jobs/server`  | [Source example](https://github.com/rel-kit/relkit/blob/main/tests/types/jobs-names.test-d.ts#L224)                        |
| [TrustedJobScope](/docs/api/jobs#trustedjobscope-interface)                                       | Type  | `@relkit/jobs`                         | [API example](/docs/api/jobs#trustedjobscope-interface)                                                                    |
| [utf8Bytes](/docs/api/jobs#utf8bytes)                                                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#utf8bytes)                                                                                    |
| [utf8BytesEffect](/docs/api/jobs#utf8byteseffect)                                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#utf8byteseffect)                                                                              |
| [validateCanonicalInput](/docs/api/jobs#validatecanonicalinput)                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#validatecanonicalinput)                                                                       |
| [validateCanonicalInputEffect](/docs/api/jobs#validatecanonicalinputeffect)                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#validatecanonicalinputeffect)                                                                 |
| [validateCanonicalOutput](/docs/api/jobs#validatecanonicaloutput)                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#validatecanonicaloutput)                                                                      |
| [validateCanonicalOutputEffect](/docs/api/jobs#validatecanonicaloutputeffect)                     | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#validatecanonicaloutputeffect)                                                                |
| [validateDuration](/docs/api/jobs#validateduration)                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#validateduration)                                                                             |
| [validateJobName](/docs/api/jobs#validatejobname-1)                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#validatejobname-1)                                                                            |
| [validateJobNameEffect](/docs/api/jobs#validatejobnameeffect-1)                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#validatejobnameeffect-1)                                                                      |
| [validateJobsCapabilityReport](/docs/api/jobs#validatejobscapabilityreport-1)                     | Value | `@relkit/jobs`, `@relkit/jobs/adapter` | [API example](/docs/api/jobs#validatejobscapabilityreport-1)                                                               |
| [validateJobsCapabilityReportEffect](/docs/api/jobs#validatejobscapabilityreporteffect)           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#validatejobscapabilityreporteffect)                                                           |
| [validateJobsServiceOptions](/docs/api/jobs#validatejobsserviceoptions)                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#validatejobsserviceoptions)                                                                   |
| [validateJobsServiceOptionsEffect](/docs/api/jobs#validatejobsserviceoptionseffect)               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#validatejobsserviceoptionseffect)                                                             |
| [validateResultOptions](/docs/api/jobs#validateresultoptions-1)                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#validateresultoptions-1)                                                                      |
| [validateRunLocatorKeyRing](/docs/api/jobs#validaterunlocatorkeyring-1)                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#validaterunlocatorkeyring-1)                                                                  |
| [validateRunLocatorKeyRingEffect](/docs/api/jobs#validaterunlocatorkeyringeffect)                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#validaterunlocatorkeyringeffect)                                                              |
| [validateTaskInput](/docs/api/jobs#validatetaskinput)                                             | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#validatetaskinput)                                                                            |
| [validateTaskInputEffect](/docs/api/jobs#validatetaskinputeffect)                                 | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#validatetaskinputeffect)                                                                      |
| [validateTaskOutput](/docs/api/jobs#validatetaskoutput)                                           | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#validatetaskoutput)                                                                           |
| [validateTaskOutputEffect](/docs/api/jobs#validatetaskoutputeffect)                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#validatetaskoutputeffect)                                                                     |
| [ValidJobName](/docs/api/jobs#validjobname-type-alias)                                            | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [VerifiedRunLocator](/docs/api/jobs#verifiedrunlocator-interface)                                 | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [verifyRunLocator](/docs/api/jobs#verifyrunlocator)                                               | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#verifyrunlocator)                                                                             |
| [verifyRunLocatorEffect](/docs/api/jobs#verifyrunlocatoreffect)                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#verifyrunlocatoreffect)                                                                       |
| [VoidWireEnvelope](/docs/api/app#voidwireenvelope-interface)                                      | Type  | `@relkit/jobs`                         | [Module example](/docs/modules/jobs/quickstart)                                                                            |
| [waitForResult](/docs/api/jobs#waitforresult-1)                                                   | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#waitforresult-1)                                                                              |
| [waitForResultEffect](/docs/api/jobs#waitforresulteffect-1)                                       | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#waitforresulteffect-1)                                                                        |
| [writeScheduleEffect](/docs/api/jobs#writescheduleeffect)                                         | Value | `@relkit/jobs`                         | [API example](/docs/api/jobs#writescheduleeffect)                                                                          |

## `adapter-methods.ts`

### assertAdapterMethods

Synchronous adapter method check.

**Throws**

JobsCapabilityError when a method is missing.

**Example**

```ts
assertAdapterMethods(adapter);
```

**Signature**

```ts
declare const assertAdapterMethods: (adapter: JobsAdapterRuntime) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter-methods.ts#L51)

### assertAdapterMethodsEffect

Checks the methods promised by a jobs adapter.

**Example**

```ts
Effect.runSync(assertAdapterMethodsEffect(adapter));
```

**Signature**

```ts
declare const assertAdapterMethodsEffect: (
  adapter: JobsAdapterRuntime,
) => Effect.Effect<undefined, JobsCapabilityFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter-methods.ts#L10)

## `adapter-requests.types.ts`

### NativeCancelRequest (interface)

Provider-facing cancel request contract at the adapter boundary.

**Signature**

```ts
export interface NativeCancelRequest {
  readonly runId: string;
  readonly operationId: string;
  readonly reason?: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter-requests.types.ts#L66)

### NativeControlReceipt (type alias)

Provider acknowledgement for a run control operation.

**Signature**

```ts
type NativeControlReceipt = RunCancellationReceipt | RunRetryReceipt | JobUnknownOutcome;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter-requests.types.ts#L57)

### NativeReceipt (type alias)

Provider acknowledgement for an accepted submission.

**Signature**

```ts
type NativeReceipt = RunHandle | JobUnknownOutcome;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter-requests.types.ts#L55)

### NativeRetryRequest (interface)

Provider-facing retry request contract at the adapter boundary.

**Signature**

```ts
export interface NativeRetryRequest {
  readonly runId: string;
  readonly operationId: string;
  readonly retryIdentity?: string;
  readonly canonicalInput?: JobWireEnvelope;
  readonly inputHash?: string;
  readonly inputSchemaHash?: string;
  readonly taskId?: string;
  readonly jobId?: string;
  readonly taskVersion?: string;
  readonly buildId?: string;
  readonly scope?: string;
  readonly acceptanceIdentity?: string;
  readonly canonicalAdmission?: {
    readonly validatePinnedInput: true;
    readonly allocateFreshBudget: true;
    readonly clearInitialDelay: true;
  };
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter-requests.types.ts#L73)

### NativeSubmission (interface)

Provider request created from a validated job submission.

**Signature**

```ts
export interface NativeSubmission {
  readonly jobId: string;
  readonly taskId: string;
  readonly taskVersion: string;
  readonly buildId: string;
  readonly execution?: "durable" | "retryable";
  readonly scope?: string;
  readonly input: JsonValue;
  readonly operationId: string;
  readonly idempotencyKey?: string;
  readonly canonicalInput?: JobWireEnvelope;
  readonly inputHash?: string;
  readonly inputSchemaHash?: string;
  readonly policy?: JsonValue;
  readonly scheduledFor?: string;
  readonly tags?: readonly string[];
  readonly correlationId?: string;
  readonly parentRunId?: string;
  readonly propagation?: TracePropagation;
  readonly acceptanceIdentity?: string;
  readonly occurrenceIdentity?: string;
  readonly retryOfRunId?: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter-requests.types.ts#L30)

### NativeWatchRequest (interface)

Provider-facing watch request contract at the adapter boundary.

**Signature**

```ts
export interface NativeWatchRequest {
  readonly runId: string;
  readonly after?: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter-requests.types.ts#L60)

### OperationContext (interface)

Scope, signal, and tracing data passed to one provider operation.

**Signature**

```ts
export interface OperationContext {
  readonly signal: AbortSignal;
  readonly application: string;
  readonly environment: string;
  readonly scope: string;
  readonly service: string;
  readonly serviceGeneration: string;
  readonly operationId?: string;
  readonly deadlineMs?: number;
  readonly correlationId?: string;
  readonly parentRunId?: string;
  readonly propagation?: TracePropagation;
  readonly acceptanceIdentity?: string;
  readonly occurrenceIdentity?: string;
  readonly inputSchemaHash?: string;
  readonly retryOfRunId?: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter-requests.types.ts#L11)

## `adapter.ts`

### JOBS_ADAPTER_PROTOCOL_VERSION

Protocol version required by all jobs adapters.

**Example**

```ts
adapter.protocolVersion === JOBS_ADAPTER_PROTOCOL_VERSION;
```

**Signature**

```ts
declare const JOBS_ADAPTER_PROTOCOL_VERSION: 1;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L47)

### JobsAdapterRuntime

**Signature**

```ts
declare const JobsAdapterRuntime: JobsAdapterRuntime;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L32)

### JobsAdapterValidationError (class)

Invalid jobs adapter shape or protocol.

**Example**

```ts
if (error instanceof JobsAdapterValidationError) console.log(error.message);
```

**Signature**

```ts
declare class JobsAdapterValidationError
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L51)

### JobsCapabilityError

**Signature**

```ts
declare const JobsCapabilityError: typeof JobsCapabilityError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L39)

### JobsCapabilityReport

**Signature**

```ts
declare const JobsCapabilityReport: JobsCapabilityReport;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L37)

### NativeCancelRequest

**Signature**

```ts
declare const NativeCancelRequest: NativeCancelRequest;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L11)

### NativeControlReceipt

**Signature**

```ts
declare const NativeControlReceipt: NativeControlReceipt;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L12)

### NativeDurableSleep

**Signature**

```ts
declare const NativeDurableSleep: NativeDurableSleep;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L29)

### NativeLocator

**Signature**

```ts
declare const NativeLocator: string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L24)

### NativeObservation

**Signature**

```ts
declare const NativeObservation: NativeObservation;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L23)

### NativeProgressWriter

**Signature**

```ts
declare const NativeProgressWriter: NativeProgressWriter;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L26)

### NativeReceipt

**Signature**

```ts
declare const NativeReceipt: NativeReceipt;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L13)

### NativeRetryRequest

**Signature**

```ts
declare const NativeRetryRequest: NativeRetryRequest;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L14)

### NativeRun

**Signature**

```ts
declare const NativeRun: NativeRun;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L20)

### NativeRunPage

**Signature**

```ts
declare const NativeRunPage: NativeRunPage;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L22)

### NativeRunQuery

**Signature**

```ts
declare const NativeRunQuery: RunListQuery;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L21)

### NativeScheduleOperations

**Signature**

```ts
declare const NativeScheduleOperations: NativeScheduleOperations;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L25)

### NativeStreamWriter

**Signature**

```ts
declare const NativeStreamWriter: NativeStreamWriter;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L27)

### NativeStreamWriters

**Signature**

```ts
declare const NativeStreamWriters: Readonly<Record<string, NativeStreamWriter>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L28)

### NativeSubmission

**Signature**

```ts
declare const NativeSubmission: NativeSubmission;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L15)

### NativeTaskWork

**Signature**

```ts
declare const NativeTaskWork: NativeTaskWork;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L33)

### NativeTaskWorker

**Signature**

```ts
declare const NativeTaskWorker: NativeTaskWorker;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L34)

### NativeWatchRequest

**Signature**

```ts
declare const NativeWatchRequest: NativeWatchRequest;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L16)

### OperationContext

**Signature**

```ts
declare const OperationContext: OperationContext;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L17)

### TaskExecutionBinding

**Signature**

```ts
declare const TaskExecutionBinding: TaskExecutionBinding;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L35)

### TaskExecutionEnvelope

**Signature**

```ts
declare const TaskExecutionEnvelope: TaskExecutionEnvelope;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L30)

### TaskExecutor

**Signature**

```ts
declare const TaskExecutor: TaskExecutor;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L31)

### assertAdapterMethods

**Signature**

```ts
declare const assertAdapterMethods: (adapter: JobsAdapterRuntime) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L40)

### assertJobsAdapterRuntime

Synchronous adapter shape assertion.

**Throws**

TypeError or JobsCapabilityError when invalid.

**Example**

```ts
assertJobsAdapterRuntime(adapter);
```

**Signature**

```ts
declare const assertJobsAdapterRuntime: (value: unknown) => asserts value is JobsAdapterRuntime;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L87)

### assertJobsAdapterRuntimeEffect

Validates an untrusted jobs adapter in Effect.

**Example**

```ts
Effect.runSync(assertJobsAdapterRuntimeEffect(adapter));
```

**Signature**

```ts
declare const assertJobsAdapterRuntimeEffect: (
  value: unknown,
) => Effect.Effect<JobsAdapterRuntime, JobsCapabilityFailure | JobsAdapterValidationError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L60)

### assertJobsCapability

**Signature**

```ts
declare const assertJobsCapability: (report: JobsCapabilityReport, capability: string) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L41)

### isJobsAdapterRuntime

Synchronous jobs adapter brand check.

**Example**

```ts
isJobsAdapterRuntime(value);
```

**Signature**

```ts
declare const isJobsAdapterRuntime: (value: unknown) => value is JobsAdapterRuntime;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L115)

### isJobsAdapterRuntimeEffect

Checks the jobs adapter brand in Effect.

**Example**

```ts
Effect.runSync(isJobsAdapterRuntimeEffect(value));
```

**Signature**

```ts
declare const isJobsAdapterRuntimeEffect: (value: unknown) => Effect.Effect<boolean, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L99)

### validateJobsCapabilityReport

**Signature**

```ts
declare const validateJobsCapabilityReport: (value: unknown) => JobsCapabilityReport;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.ts#L42)

## `adapter.types.ts`

### JobsAdapterRuntime (interface)

Provider protocol for submitting, reading, controlling, and observing jobs.

**Signature**

```ts
export interface JobsAdapterRuntime {
  readonly kind: "jobs-adapter-runtime";
  readonly protocolVersion: typeof JOBS_PROTOCOL_VERSION;
  readonly capabilities: JobsCapabilityReport;
  readonly submit: (request: NativeSubmission, context: OperationContext) => Promise<NativeReceipt>;
  readonly get: (locator: NativeLocator, context: OperationContext) => Promise<NativeRun>;
  readonly list: (query: NativeRunQuery, context: OperationContext) => Promise<NativeRunPage>;
  readonly observe: (
    request: NativeWatchRequest,
    context: OperationContext,
  ) => AsyncIterable<NativeObservation>;
  readonly cancel: (
    request: NativeCancelRequest,
    context: OperationContext,
  ) => Promise<NativeControlReceipt>;
  readonly retry?: (
    request: NativeRetryRequest,
    context: OperationContext,
  ) => Promise<NativeControlReceipt>;
  readonly close: () => Promise<void>;
  readonly worker?: NativeTaskWorker;
  readonly schedules?: NativeScheduleOperations;
  readonly streams?: Readonly<Record<string, unknown>>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.types.ts#L93)

### NativeDurableSleep (interface)

Provider-facing durable sleep contract at the adapter boundary.

**Signature**

```ts
export interface NativeDurableSleep {
  readonly sleep: (key: string, durationMs: number) => Promise<void>;
  readonly sleepUntil?: (key: string, instant: string) => Promise<void>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.types.ts#L60)

### NativeLocator (type alias)

Provider-facing locator contract at the adapter boundary.

**Signature**

```ts
type NativeLocator = string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.types.ts#L30)

### NativeObservation (type alias)

Provider-facing observation contract at the adapter boundary.

**Signature**

```ts
type NativeObservation = RunWatchFrame<NativeRun>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.types.ts#L28)

### NativeProgressWriter (interface)

Provider-facing progress writer contract at the adapter boundary.

**Signature**

```ts
export interface NativeProgressWriter {
  readonly emit: (
    value: JsonValue,
    context?: OperationContext,
  ) => MaybePromise<ProgressEmitReceipt | void>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.types.ts#L44)

### NativeRun (type alias)

Provider-facing run contract at the adapter boundary.

**Signature**

```ts
type NativeRun = RunSnapshot;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.types.ts#L22)

### NativeRunPage (type alias)

Provider-facing run page contract at the adapter boundary.

**Signature**

```ts
type NativeRunPage = RunPage<NativeRun>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.types.ts#L26)

### NativeRunQuery (type alias)

Provider-facing run query contract at the adapter boundary.

**Signature**

```ts
type NativeRunQuery = RunListQuery;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.types.ts#L24)

### NativeScheduleOperations (interface)

Provider-facing schedule operations contract at the adapter boundary.

**Signature**

```ts
export interface NativeScheduleOperations {
  readonly list: (
    query: Readonly<Record<string, unknown>>,
    context: OperationContext,
  ) => Promise<unknown>;
  readonly get: (id: string, context: OperationContext) => Promise<unknown>;
  readonly upsert: (definition: JsonValue, context: OperationContext) => Promise<unknown>;
  readonly pause: (id: string, context: OperationContext) => Promise<unknown>;
  readonly resume: (id: string, context: OperationContext) => Promise<unknown>;
  readonly delete: (id: string, context: OperationContext) => Promise<unknown>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.types.ts#L32)

### NativeStreamWriter (interface)

Provider-facing stream writer contract at the adapter boundary.

**Signature**

```ts
export interface NativeStreamWriter {
  readonly emit: (
    value: JsonValue,
    context?: OperationContext,
  ) => MaybePromise<ProgressEmitReceipt | void>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.types.ts#L51)

### NativeStreamWriters (type alias)

Provider-facing stream writers contract at the adapter boundary.

**Signature**

```ts
type NativeStreamWriters = Readonly<Record<string, NativeStreamWriter>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.types.ts#L58)

### NativeTaskWork (interface)

Provider-facing task work contract at the adapter boundary.

**Signature**

```ts
export interface NativeTaskWork {
  readonly envelope: TaskExecutionEnvelope;
  readonly binding: TaskExecutionBinding;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.types.ts#L118)

### NativeTaskWorker (interface)

Provider worker operations for accepting and completing task work.

**Signature**

```ts
export interface NativeTaskWorker {
  readonly next: (context: OperationContext) => Promise<NativeTaskWork | undefined>;
  readonly complete: (runId: string, output: unknown, context: OperationContext) => Promise<void>;
  readonly fail: (runId: string, error: unknown, context: OperationContext) => Promise<void>;
  /** Returns an intentional provider park/yield to the native continuation owner. */
  readonly suspend?: (runId: string, value: unknown, context: OperationContext) => Promise<void>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.types.ts#L123)

### TaskExecutionBinding (interface)

Provider-owned context and sinks supplied to one task execution.

**Signature**

```ts
export interface TaskExecutionBinding {
  readonly run: {
    readonly runId: string;
    readonly jobId: string;
    readonly taskId: string;
    readonly taskVersion: string;
    readonly buildId: string;
    readonly service?: string;
    readonly serviceGeneration?: string;
    readonly attempt?: number;
    readonly acceptedAt?: string;
    readonly scheduledFor?: string;
    readonly parentRunId?: string;
    readonly deadlineMs?: number;
    readonly scope?: string;
    readonly inputSchemaHash?: string;
    readonly acceptanceIdentity?: string;
    readonly occurrenceIdentity?: string;
    readonly propagation?: TracePropagation;
  };
  readonly signal: AbortSignal;
  readonly isSuspension?: (cause: unknown) => boolean;
  readonly sleep?: NativeDurableSleep;
  readonly progress?: NativeProgressWriter;
  readonly streams?: NativeStreamWriters;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.types.ts#L131)

### TaskExecutionEnvelope (interface)

Provider-owned envelope containing the accepted task input and run identity.

**Signature**

```ts
export interface TaskExecutionEnvelope {
  readonly runId: string;
  readonly jobId: string;
  readonly taskId: string;
  readonly taskVersion: string;
  readonly buildId: string;
  readonly input: JobWireEnvelope;
  readonly inputHash?: string;
  readonly inputSchemaHash?: string;
  readonly acceptedAt?: string;
  readonly scheduledFor?: string;
  readonly attempt?: number;
  readonly parentRunId?: string;
  readonly service?: string;
  readonly serviceGeneration?: string;
  readonly scope?: string;
  readonly acceptanceIdentity?: string;
  readonly occurrenceIdentity?: string;
  readonly propagation?: TracePropagation;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.types.ts#L65)

### TaskExecutor (interface)

Execution callback used by a native task worker.

**Signature**

```ts
export interface TaskExecutor {
  readonly execute: (
    envelope: TaskExecutionEnvelope,
    binding: TaskExecutionBinding,
  ) => Promise<unknown>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/adapter.types.ts#L86)

## `authorization-cursor-codec.ts`

### createCursorValue

Encodes a bounded authorization cursor, signing it when keys are supplied.

**Throws**

JobCursorError for invalid binding, key, or encoded size.

**Example**

```ts
createCursorValue(binding, { key: "secret" });
```

**Signature**

```ts
declare const createCursorValue: (binding: JobCursorBinding, options?: JobCursorOptions) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-cursor-codec.ts#L13)

### readCursorValue

Decodes and verifies a cursor against the caller's trusted authorization binding.

**Throws**

JobCursorError for invalid encoding, signature, or binding mismatch.

**Example**

```ts
readCursorValue(cursor, expected, { key: "secret" });
```

**Signature**

```ts
declare const readCursorValue: (
  cursor: string,
  expected: JobCursorBinding,
  options?: JobCursorOptions,
) => JobCursorBinding;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-cursor-codec.ts#L47)

## `authorization-cursor.ts`

### JobCursorBinding

**Signature**

```ts
declare const JobCursorBinding: JobCursorBinding;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-cursor.ts#L4)

### JobCursorFailure (class)

A rejected cursor creation or verification.

**Example**

```ts
if (error instanceof JobCursorFailure) console.log(error.message);
```

**Signature**

```ts
declare class JobCursorFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-cursor.ts#L10)

### JobCursorOptions

**Signature**

```ts
declare const JobCursorOptions: JobCursorOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-cursor.ts#L4)

### createJobCursor

Synchronous cursor creator.

**Throws**

JobCursorError when the binding or encoded cursor is invalid.

**Example**

```ts
createJobCursor(binding, { key: "secret" });
```

**Signature**

```ts
declare const createJobCursor: (binding: JobCursorBinding, options?: JobCursorOptions) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-cursor.ts#L39)

### createJobCursorEffect

Creates a bound, optionally signed job cursor in Effect.

**Example**

```ts
Effect.runSync(createJobCursorEffect(binding, { key: "secret" }));
```

**Signature**

```ts
declare const createJobCursorEffect: (
  binding: JobCursorBinding,
  options?: JobCursorOptions | undefined,
) => Effect.Effect<string, JobCursorFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-cursor.ts#L19)

### readJobCursor

Synchronous bound cursor reader.

**Throws**

JobCursorError when the cursor is invalid or has a different binding.

**Example**

```ts
readJobCursor(cursor, expected, { key: "secret" });
```

**Signature**

```ts
declare const readJobCursor: (
  cursor: string,
  expected: JobCursorBinding,
  options?: JobCursorOptions,
) => JobCursorBinding;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-cursor.ts#L72)

### readJobCursorEffect

Reads and verifies a cursor against its expected binding in Effect.

**Example**

```ts
Effect.runSync(readJobCursorEffect(cursor, expected, { key: "secret" }));
```

**Signature**

```ts
declare const readJobCursorEffect: (
  cursor: string,
  expected: JobCursorBinding,
  options?: JobCursorOptions | undefined,
) => Effect.Effect<JobCursorBinding, JobCursorFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-cursor.ts#L51)

## `authorization-cursor.types.ts`

### JobCursorBinding (interface)

Trusted job and scope identity bound into a pagination cursor.

**Signature**

```ts
export interface JobCursorBinding {
  readonly application?: string;
  readonly environment?: string;
  readonly scope: string;
  readonly subject?: string;
  readonly jobId: string;
  readonly operation: JobClientOperation;
  readonly filters: JsonValue;
  readonly schema: string;
  readonly position: JsonValue;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-cursor.types.ts#L4)

### JobCursorOptions (interface)

Options accepted for job cursor operations.

**Signature**

```ts
export interface JobCursorOptions {
  readonly key: string | Uint8Array;
  readonly keyId?: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-cursor.types.ts#L16)

## `authorization-errors.ts`

A caller attempted a job operation outside its trusted grant.

**Example**

```ts
new JobAuthorizationError("Run belongs to another subject");
```

### JobAuthorizationError (class)

A caller attempted a job operation outside its trusted grant.

**Example**

```ts
new JobAuthorizationError("Run belongs to another subject");
```

**Signature**

```ts
declare class JobAuthorizationError {
  constructor(message = "Job operation is not authorized");
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-errors.ts#L4)

### code (property)

**Signature**

```ts
readonly code: "RELKIT_JOB_ACCESS_DENIED"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-errors.ts#L5)

### JobCursorError (class)

A continuation cursor is malformed or bound to another request.

**Example**

```ts
new JobCursorError();
```

**Signature**

```ts
declare class JobCursorError {
  constructor();
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-errors.ts#L17)

### code (property)

**Signature**

```ts
readonly code: "RELKIT_JOB_CURSOR_INVALID"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-errors.ts#L18)

## `authorization-failure.ts`

### JobAuthorizationFailure (class)

A denied or malformed jobs authorization decision.

**Example**

```ts
new JobAuthorizationFailure({ reason: "scope" });
```

**Signature**

```ts
declare class JobAuthorizationFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-failure.ts#L6)

## `authorization-grant.ts`

### assertAuthorizedOperation

Synchronous compatibility assertion for an authorized operation.

**Throws**

JobAuthorizationError for an invalid grant or request.

**Example**

```ts
assertAuthorizedOperation(grant, request, trusted);
```

**Signature**

```ts
declare const assertAuthorizedOperation: (
  grant: JobAccessGrant,
  request: JobAccessRequest,
  trusted: TrustedJobScope,
  now?: number,
) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-grant.ts#L93)

### assertAuthorizedOperationEffect

Validates a grant and the requested operation in Effect.

**Example**

```ts
Effect.runPromise(assertAuthorizedOperationEffect(grant, request, trusted));
```

**Signature**

```ts
declare const assertAuthorizedOperationEffect: (
  grant: JobAccessGrant,
  request: JobAccessRequest,
  trusted: TrustedJobScope,
  now?: number | undefined,
) => Effect.Effect<undefined, JobAuthorizationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-grant.ts#L70)

### assertJobGrant

Synchronous compatibility assertion for policy grants.

**Throws**

JobAuthorizationError for an invalid or expired grant.

**Example**

```ts
assertJobGrant({ scope: "tenant:a" }, trusted);
```

**Signature**

```ts
declare const assertJobGrant: (
  value: unknown,
  trusted: TrustedJobScope,
  now?: number,
) => asserts value is JobAccessGrant;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-grant.ts#L53)

### assertJobGrantEffect

Validates a grant against a trusted tenant scope and current time.

**Example**

```ts
Effect.runPromise(assertJobGrantEffect({ scope: "tenant:a" }, trusted));
```

**Signature**

```ts
declare const assertJobGrantEffect: (
  value: unknown,
  trusted: TrustedJobScope,
  now?: number | undefined,
) => Effect.Effect<JobAccessGrant, JobAuthorizationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-grant.ts#L16)

### boundedTextEffect

Checks bounded trusted and grant strings.

**Example**

```ts
Effect.runPromise(boundedTextEffect("tenant:a"));
```

**Signature**

```ts
declare const boundedTextEffect: (
  value: unknown,
) => Effect.Effect<undefined, JobAuthorizationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-grant.ts#L110)

## `authorization-projection.ts`

### JobProjectionOptions

**Signature**

```ts
declare const JobProjectionOptions: JobProjectionOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-projection.ts#L7)

### projectRunPage

Synchronous compatibility projection of a page.

**Example**

```ts
projectRunPage(page, ["progress"]);
```

**Signature**

```ts
declare const projectRunPage: (
  page: RunPage<RunSnapshot>,
  fields?: readonly JobClientField[],
  options?: JobProjectionOptions,
) => RunPage<RunSnapshot>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-projection.ts#L104)

### projectRunPageEffect

Projects a page of runs without exposing fields outside the grant.

**Example**

```ts
Effect.runSync(projectRunPageEffect(page, ["progress"]));
```

**Signature**

```ts
declare const projectRunPageEffect: (
  page: RunPage<RunSnapshot>,
  fields?: ReadonlyArray<JobClientField> | undefined,
  options?: JobProjectionOptions | undefined,
) => Effect.Effect<RunPage<RunSnapshot>, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-projection.ts#L86)

### projectRunSnapshot

Synchronous compatibility projection of one run.

**Example**

```ts
projectRunSnapshot(run, ["output"]);
```

**Signature**

```ts
declare const projectRunSnapshot: (
  run: RunSnapshot,
  fields?: readonly JobClientField[],
  options?: JobProjectionOptions,
) => RunSnapshot;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-projection.ts#L29)

### projectRunSnapshotEffect

Copies only authorized run fields into a safe client snapshot.

**Example**

```ts
Effect.runSync(projectRunSnapshotEffect(run, ["output"]));
```

**Signature**

```ts
declare const projectRunSnapshotEffect: (
  run: RunSnapshot,
  fields?: ReadonlyArray<JobClientField> | undefined,
  options?: JobProjectionOptions | undefined,
) => Effect.Effect<RunSnapshot, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-projection.ts#L15)

## `authorization-projection.types.ts`

Fields needed to disclose a declared job error safely.

### JobProjectionOptions (interface)

Fields needed to disclose a declared job error safely.

**Signature**

```ts
export interface JobProjectionOptions {
  readonly declaredErrorIds?: readonly string[];
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization-projection.types.ts#L2)

## `authorization.ts`

### JobAuthorizationError

**Signature**

```ts
declare const JobAuthorizationError: typeof JobAuthorizationError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L12)

### JobAuthorizationFailure

**Signature**

```ts
declare const JobAuthorizationFailure: typeof JobAuthorizationFailure;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L13)

### JobCursorBinding

**Signature**

```ts
declare const JobCursorBinding: any;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L27)

### JobCursorError

**Signature**

```ts
declare const JobCursorError: typeof JobCursorError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L12)

### JobCursorFailure

**Signature**

```ts
declare const JobCursorFailure: typeof JobCursorFailure;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L25)

### JobCursorOptions

**Signature**

```ts
declare const JobCursorOptions: any;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L26)

### TrustedJobScope

**Signature**

```ts
declare const TrustedJobScope: TrustedJobScope;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L11)

### assertAuthorizedOperation

**Signature**

```ts
declare const assertAuthorizedOperation: (
  grant: JobAccessGrant,
  request: JobAccessRequest,
  trusted: TrustedJobScope,
  now?: number,
) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L17)

### assertAuthorizedOperationEffect

**Signature**

```ts
declare const assertAuthorizedOperationEffect: (
  grant: JobAccessGrant,
  request: JobAccessRequest,
  trusted: TrustedJobScope,
  now?: number | undefined,
) => Effect.Effect<undefined, JobAuthorizationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L18)

### assertJobGrant

**Signature**

```ts
declare const assertJobGrant: (
  value: unknown,
  trusted: TrustedJobScope,
  now?: number,
) => asserts value is JobAccessGrant;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L15)

### assertJobGrantEffect

**Signature**

```ts
declare const assertJobGrantEffect: (
  value: unknown,
  trusted: TrustedJobScope,
  now?: number | undefined,
) => Effect.Effect<JobAccessGrant, JobAuthorizationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L16)

### authorize

Compatibility alias for authorizeJobAccess.

**Example**

```ts
await authorize(job, request, trusted);
```

**Signature**

```ts
declare const authorize: (
  job: JobDescriptorAny,
  request: JobAccessRequest,
  trusted: TrustedJobScope,
  context?: JobAuthorizationContext,
) => Promise<JobAccessGrant>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L120)

### authorizeJobAccess

Promise compatibility adapter for job authorization.
Preflight denials still throw synchronously before a Promise is returned.

**Throws**

JobAuthorizationError for invalid preflight or policy decisions.

**Example**

```ts
await authorizeJobAccess(job, request, trusted);
```

**Signature**

```ts
declare const authorizeJobAccess: (
  job: JobDescriptorAny,
  request: JobAccessRequest,
  trusted: TrustedJobScope,
  context?: JobAuthorizationContext,
) => Promise<JobAccessGrant>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L81)

### authorizeJobAccessEffect

Authorizes a job operation against trusted scope in Effect.
Policy callback failures are redacted to a tagged authorization failure.

**Example**

```ts
Effect.runPromise(authorizeJobAccessEffect(job, request, trusted));
```

**Signature**

```ts
declare const authorizeJobAccessEffect: (
  job: JobDescriptorAny,
  request: JobAccessRequest,
  trusted: TrustedJobScope,
  context?: JobAuthorizationContext | undefined,
) => Effect.Effect<Readonly<{ scope: string }>, JobAuthorizationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L44)

### createCursor

Compatibility alias for createJobCursor.

**Example**

```ts
createCursor(options);
```

**Signature**

```ts
declare const createCursor: (binding: JobCursorBinding, options?: JobCursorOptions) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L128)

### createJobCursor

**Signature**

```ts
declare const createJobCursor: (binding: JobCursorBinding, options?: JobCursorOptions) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L21)

### createJobCursorEffect

**Signature**

```ts
declare const createJobCursorEffect: (
  binding: JobCursorBinding,
  options?: JobCursorOptions | undefined,
) => Effect.Effect<string, JobCursorFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L22)

### decodeCursor

Compatibility alias for readJobCursor.

**Example**

```ts
decodeCursor(cursor, options);
```

**Signature**

```ts
declare const decodeCursor: (
  cursor: string,
  expected: JobCursorBinding,
  options?: JobCursorOptions,
) => JobCursorBinding;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L132)

### projectRun

Compatibility alias for projectRunSnapshot.

**Example**

```ts
projectRun(snapshot, grant);
```

**Signature**

```ts
declare const projectRun: (
  run: RunSnapshot,
  fields?: readonly JobClientField[],
  options?: JobProjectionOptions,
) => RunSnapshot;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L124)

### projectRunPage

**Signature**

```ts
declare const projectRunPage: (
  page: RunPage<RunSnapshot>,
  fields?: readonly JobClientField[],
  options?: JobProjectionOptions,
) => RunPage<RunSnapshot>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L30)

### projectRunPageEffect

**Signature**

```ts
declare const projectRunPageEffect: (
  page: RunPage<RunSnapshot>,
  fields?: ReadonlyArray<JobClientField> | undefined,
  options?: JobProjectionOptions | undefined,
) => Effect.Effect<RunPage<RunSnapshot>, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L31)

### projectRunSnapshot

**Signature**

```ts
declare const projectRunSnapshot: (
  run: RunSnapshot,
  fields?: readonly JobClientField[],
  options?: JobProjectionOptions,
) => RunSnapshot;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L32)

### projectRunSnapshotEffect

**Signature**

```ts
declare const projectRunSnapshotEffect: (
  run: RunSnapshot,
  fields?: ReadonlyArray<JobClientField> | undefined,
  options?: JobProjectionOptions | undefined,
) => Effect.Effect<RunSnapshot, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L33)

### readJobCursor

**Signature**

```ts
declare const readJobCursor: (
  cursor: string,
  expected: JobCursorBinding,
  options?: JobCursorOptions,
) => JobCursorBinding;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L23)

### readJobCursorEffect

**Signature**

```ts
declare const readJobCursorEffect: (
  cursor: string,
  expected: JobCursorBinding,
  options?: JobCursorOptions | undefined,
) => Effect.Effect<JobCursorBinding, JobCursorFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.ts#L24)

## `authorization.types.ts`

Trusted application and tenant context for a jobs authorization decision.
The scope may be narrowed by a policy but never broadened.

**Example**

```ts
const trusted: TrustedJobScope = { application: "app", environment: "test", scope: "tenant:a" };
```

### TrustedJobScope (interface)

Trusted application and tenant context for a jobs authorization decision.
The scope may be narrowed by a policy but never broadened.

**Example**

```ts
const trusted: TrustedJobScope = { application: "app", environment: "test", scope: "tenant:a" };
```

**Signature**

```ts
export interface TrustedJobScope {
  readonly application: string;
  readonly environment: string;
  readonly scope: string;
  readonly subject?: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/authorization.types.ts#L5)

## `canonical-support.ts`

### CanonicalProjectionError (class)

A task schema that cannot be represented as faithful canonical JSON.

**Example**

```ts
new CanonicalProjectionError({ name: "input", reason: "invalid schema" });
```

**Signature**

```ts
declare class CanonicalProjectionError
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/canonical-support.ts#L7)

### assertCanonicalProjection

Synchronous canonical-schema assertion.

**Throws**

TypeError when the projection is not faithful canonical JSON.

**Example**

```ts
assertCanonicalProjection({ type: "string" }, "input");
```

**Signature**

```ts
declare const assertCanonicalProjection: (
  value: unknown,
  name: string,
  allowVoid?: boolean,
) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/canonical-support.ts#L34)

### assertCanonicalProjectionEffect

Traverses a projected schema in Effect, preserving exact validation failures.

**Example**

```ts
Effect.runPromise(assertCanonicalProjectionEffect({ type: "string" }, "input"));
```

**Signature**

```ts
declare const assertCanonicalProjectionEffect: (
  value: unknown,
  name: string,
  allowVoid?: any,
) => Effect.Effect<void, CanonicalProjectionError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/canonical-support.ts#L19)

## `capabilities.ts`

### JobsCapability

**Signature**

```ts
declare const JobsCapability: JobsCapability;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.ts#L9)

### JobsCapabilityError (class)

Compatibility error raised by synchronous capability checks.

**Example**

```ts
if (error instanceof JobsCapabilityError) console.log(error.message);
```

**Signature**

```ts
declare class JobsCapabilityError {
  constructor(capability: string, message = `Jobs capability "${capability}" is unavailable`);
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.ts#L25)

### code (property)

**Signature**

```ts
readonly code: "RELKIT_JOB_CAPABILITY_UNSUPPORTED"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.ts#L26)

### capability (property)

**Signature**

```ts
readonly capability: string
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.ts#L27)

### JobsCapabilityFailure (class)

A capability rejected by the Effect jobs boundary.

**Example**

```ts
if (error instanceof JobsCapabilityFailure) console.log(error.message);
```

**Signature**

```ts
declare class JobsCapabilityFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.ts#L18)

### JobsCapabilityName

**Signature**

```ts
declare const JobsCapabilityName: JobsCapabilityName;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.ts#L10)

### JobsCapabilityReport

**Signature**

```ts
declare const JobsCapabilityReport: JobsCapabilityReport;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.ts#L11)

### JobsCapabilitySupport

**Signature**

```ts
declare const JobsCapabilitySupport: JobsCapabilitySupport;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.ts#L12)

### assertAdapterMethods

**Signature**

```ts
declare const assertAdapterMethods: (adapter: JobsAdapterRuntime) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.ts#L14)

### assertAdapterMethodsEffect

**Signature**

```ts
declare const assertAdapterMethodsEffect: (
  adapter: JobsAdapterRuntime,
) => Effect.Effect<undefined, JobsCapabilityFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.ts#L14)

### assertJobsCapability

Synchronously requires a supported jobs capability.

**Throws**

JobsCapabilityError when unsupported.

**Example**

```ts
assertJobsCapability(report, "submission");
```

**Signature**

```ts
declare const assertJobsCapability: (report: JobsCapabilityReport, capability: string) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.ts#L59)

### assertJobsCapabilityEffect

Requires support for one jobs capability.

**Example**

```ts
Effect.runSync(assertJobsCapabilityEffect(report, "submission"));
```

**Signature**

```ts
declare const assertJobsCapabilityEffect: (
  report: JobsCapabilityReport,
  capability: string,
) => Effect.Effect<undefined, JobsCapabilityFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.ts#L40)

### validateJobsCapabilityReport

Synchronously validates and freezes a provider report.

**Throws**

JobsCapabilityError when invalid.

**Example**

```ts
validateJobsCapabilityReport(candidate);
```

**Signature**

```ts
declare const validateJobsCapabilityReport: (value: unknown) => JobsCapabilityReport;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.ts#L89)

### validateJobsCapabilityReportEffect

Validates and freezes an untrusted provider report in Effect.

**Example**

```ts
Effect.runSync(validateJobsCapabilityReportEffect(candidate));
```

**Signature**

```ts
declare const validateJobsCapabilityReportEffect: (
  value: unknown,
) => Effect.Effect<JobsCapabilityReport, JobsCapabilityFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.ts#L71)

## `capabilities.types.ts`

Level of support reported by a jobs provider.

### JobsCapability (interface)

Evidence and constraints for one provider capability.

**Signature**

```ts
export interface JobsCapability {
  readonly support: JobsCapabilitySupport;
  readonly constraints?: Readonly<Record<string, unknown>>;
  readonly evidence?: readonly string[];
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.types.ts#L4)

### JobsCapabilityName (type alias)

Standard jobs capability names.

**Signature**

```ts
type JobsCapabilityName =
  "submission" | "read" | "list" | "observation" | "cancel" | "retry" | "schedules" | "streams";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.types.ts#L20)

### JobsCapabilityReport (interface)

Provider capabilities validated at the jobs boundary.

**Signature**

```ts
export interface JobsCapabilityReport {
  readonly service: string;
  readonly provider?: string;
  readonly adapterId?: string;
  readonly protocolVersion?: 1;
  readonly features: Readonly<Record<string, boolean>>;
  readonly capabilities?: Readonly<Record<string, JobsCapability>>;
  readonly limits?: Readonly<Record<string, number>>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.types.ts#L10)

### JobsCapabilitySupport (type alias)

Level of support reported by a jobs provider.

**Signature**

```ts
type JobsCapabilitySupport = "native" | "adapter" | "unsupported" | "unverified";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/capabilities.types.ts#L2)

## `client-abort.ts`

### JobClientAbortFailure (class)

Cancelled, timed out, or failed client enqueue, with the original cause.

**Example**

```ts
if (error instanceof JobClientAbortFailure) console.log(error.message);
```

**Signature**

```ts
declare class JobClientAbortFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-abort.ts#L8)

### runAbortable

Promise compatibility adapter for abortable client work.

**Throws**

The original cancellation, timeout, or provider error.

**Example**

```ts
await runAbortable(signal, undefined, () => Promise.resolve("ok"));
```

**Signature**

```ts
declare const runAbortable: <A>(
  signal: AbortSignal,
  deadlineMs: number | undefined,
  work: (signal: AbortSignal) => Promise<A>,
) => Promise<A>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-abort.ts#L77)

### runAbortableEffect

Runs client work with an Effect owned abort listener and deadline.

**Example**

```ts
Effect.runPromise(runAbortableEffect(signal, undefined, () => Promise.resolve("ok")));
```

**Signature**

```ts
declare const runAbortableEffect: <A>(
  signal: AbortSignal,
  deadlineMs: number | undefined,
  work: (signal: AbortSignal) => Promise<A>,
) => Effect.Effect<Awaited<A>, JobClientAbortFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-abort.ts#L19)

## `client-abort.types.ts`

Cancellation and deadline state owned by one client enqueue.

### JobClientAbortRegistration (interface)

Cancellation and deadline state owned by one client enqueue.

**Signature**

```ts
export interface JobClientAbortRegistration {
  readonly stopped: Promise<Error>;
  readonly failure: () => Error | undefined;
  readonly dispose: () => void;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-abort.types.ts#L2)

## `client-errors.ts`

### JobDependencyError (class)

A job call crossed an undeclared function dependency boundary.

**Example**

```ts
new JobDependencyError("billing.charge");
```

**Signature**

```ts
declare class JobDependencyError { constructor(readonly jobId: string) }
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-errors.ts#L39)

### code (property)

**Signature**

```ts
readonly code: "RELKIT_JOB_DEPENDENCY_UNDECLARED"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-errors.ts#L40)

### JobInputValidationError (class)

Invalid caller input with the schema issues retained for clients.

**Example**

```ts
new JobInputValidationError(issues);
```

**Signature**

```ts
declare class JobInputValidationError { constructor(readonly issues: readonly StandardIssue[]) }
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-errors.ts#L6)

### code (property)

**Signature**

```ts
readonly code: "RELKIT_JOB_INPUT_VALIDATION"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-errors.ts#L7)

### JobOperationCancelledError (class)

Caller cancellation before the job operation completed.

**Example**

```ts
new JobOperationCancelledError();
```

**Signature**

```ts
declare class JobOperationCancelledError {
  constructor();
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-errors.ts#L51)

### code (property)

**Signature**

```ts
readonly code: "ABORT_ERR"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-errors.ts#L52)

### JobOperationTimeoutError (class)

A job client operation exceeded its configured timeout.

**Example**

```ts
new JobOperationTimeoutError();
```

**Signature**

```ts
declare class JobOperationTimeoutError {
  constructor();
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-errors.ts#L62)

### code (property)

**Signature**

```ts
readonly code: "ETIMEDOUT"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-errors.ts#L63)

### JobProfileError (class)

Requested job provider profile is absent from client configuration.

**Example**

```ts
new JobProfileError("primary");
```

**Signature**

```ts
declare class JobProfileError { constructor(readonly profile: string) }
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-errors.ts#L17)

### code (property)

**Signature**

```ts
readonly code: "RELKIT_JOB_PROFILE_UNKNOWN"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-errors.ts#L18)

### JobProviderError (class)

The selected provider does not implement job enqueue.

**Example**

```ts
new JobProviderError();
```

**Signature**

```ts
declare class JobProviderError {
  constructor();
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-errors.ts#L28)

### code (property)

**Signature**

```ts
readonly code: "RELKIT_JOB_PROVIDER_UNAVAILABLE"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-errors.ts#L29)

## `client-utils-error.ts`

### ClientUtilityFailure (class)

Expected client helper failure with its original compatibility error.

**Example**

```ts
if (error instanceof ClientUtilityFailure) console.log(error.message);
```

**Signature**

```ts
declare class ClientUtilityFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-error.ts#L6)

## `client-utils-output.ts`

### normalizeResult

Synchronous provider receipt normalizer.

**Throws**

Original normalization error.

**Example**

```ts
normalizeResult(receipt, "default", undefined);
```

**Signature**

```ts
declare const normalizeResult: (
  value: JobProviderResult | undefined,
  profile: string,
  correlationId: string | undefined,
) => JobEnqueueResult;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-output.ts#L36)

### normalizeResultEffect

Normalizes a provider receipt in Effect.

**Example**

```ts
Effect.runSync(normalizeResultEffect(receipt, "default", undefined));
```

**Signature**

```ts
declare const normalizeResultEffect: (
  value: JobProviderResult | undefined,
  profile: string,
  correlationId: string | undefined,
) => Effect.Effect<JobEnqueueResult, ClientUtilityFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-output.ts#L18)

### notify

Synchronous client edge hook notification.

**Example**

```ts
notify(onEdge, edge);
```

**Signature**

```ts
declare const notify: <T>(
  hook: ((value: T) => void) | undefined,
  value: T,
  enabled?: boolean,
) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-output.ts#L68)

### notifyEffect

Delivers a client edge hook without changing enqueue outcome in Effect.

**Example**

```ts
Effect.runSync(notifyEffect(onEdge, edge));
```

**Signature**

```ts
declare const notifyEffect: <T>(
  hook: ((value: T) => void) | undefined,
  value: T,
  enabled?: boolean | undefined,
) => Effect.Effect<void, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-output.ts#L54)

### resolveCorrelation

Synchronous correlation id resolver.

**Throws**

Original callback error.

**Example**

```ts
resolveCorrelation(() => "request");
```

**Signature**

```ts
declare const resolveCorrelation: (value: JobClientOptions["correlationId"]) => string | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-output.ts#L92)

### resolveCorrelationEffect

Resolves a configured correlation id in Effect.

**Example**

```ts
Effect.runSync(resolveCorrelationEffect(() => "request"));
```

**Signature**

```ts
declare const resolveCorrelationEffect: (
  value: string | (() => string | undefined) | undefined,
) => Effect.Effect<string | undefined, ClientUtilityFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-output.ts#L76)

## `client-utils-validation.ts`

### assertOptionalText

Synchronous optional client text assertion.

**Throws**

TypeError for invalid text.

**Example**

```ts
assertOptionalText("request", "correlationId");
```

**Signature**

```ts
declare const assertOptionalText: (value: unknown, name: string) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-validation.ts#L128)

### assertOptionalTextEffect

Validates optional client text in Effect.

**Example**

```ts
Effect.runSync(assertOptionalTextEffect("request", "correlationId"));
```

**Signature**

```ts
declare const assertOptionalTextEffect: (
  value: unknown,
  name: string,
) => Effect.Effect<void, ClientUtilityFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-validation.ts#L111)

### assertOptions

Synchronous enqueue options assertion.

**Throws**

TypeError for invalid options.

**Example**

```ts
assertOptions({ correlationId: "request" });
```

**Signature**

```ts
declare const assertOptions: (
  value: unknown,
) => asserts value is { readonly correlationId?: string };
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-validation.ts#L99)

### assertOptionsEffect

Validates enqueue options in Effect.

**Example**

```ts
Effect.runSync(assertOptionsEffect({ correlationId: "request" }));
```

**Signature**

```ts
declare const assertOptionsEffect: (
  value: unknown,
) => Effect.Effect<void, ClientUtilityFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-validation.ts#L84)

### parseInput

Promise compatibility input validator.

**Throws**

Original input validation error.

**Example**

```ts
await parseInput(z.string(), "value");
```

**Signature**

```ts
declare const parseInput: (
  schema: StandardSchemaV1 | undefined,
  input: unknown,
) => Promise<unknown>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-validation.ts#L71)

### parseInputEffect

Validates client input against an optional schema in Effect.

**Example**

```ts
Effect.runPromise(parseInputEffect(z.string(), "value"));
```

**Signature**

```ts
declare const parseInputEffect: (
  schema: StandardSchemaV1<unknown, unknown> | undefined,
  input: unknown,
) => Effect.Effect<unknown, ClientUtilityFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-validation.ts#L54)

### resolveProvider

Synchronous provider resolver.

**Throws**

Original profile or provider error.

**Example**

```ts
resolveProvider(source, "default", undefined);
```

**Signature**

```ts
declare const resolveProvider: (
  source: unknown,
  profile: string,
  resolveProfile: ((profile: string) => unknown) | undefined,
) => JobProvider;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-validation.ts#L37)

### resolveProviderEffect

Resolves a job provider in Effect.

**Example**

```ts
Effect.runSync(resolveProviderEffect(source, "default"));
```

**Signature**

```ts
declare const resolveProviderEffect: (
  source: unknown,
  profile: string,
  resolveProfile: ((profile: string) => unknown) | undefined,
) => Effect.Effect<JobProvider, ClientUtilityFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-validation.ts#L19)

## `client-utils-value.ts`

### assertOptionalTextValue

Requires a present optional text field to be nonempty.

**Throws**

TypeError for nontext or blank text.

**Example**

```ts
assertOptionalTextValue("request-1", "correlationId");
```

**Signature**

```ts
declare const assertOptionalTextValue: (value: unknown, name: string) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-value.ts#L117)

### assertOptionsValue

Validates the client enqueue options shape and correlation identifier.

**Throws**

TypeError for missing object shape or invalid correlation text.

**Example**

```ts
assertOptionsValue({ correlationId: "request-1" });
```

**Signature**

```ts
declare const assertOptionsValue: (
  value: unknown,
) => asserts value is { readonly correlationId?: string };
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-value.ts#L104)

### normalizeResultValue

Normalizes a provider acceptance into the public enqueue receipt.

**Example**

```ts
normalizeResultValue(result, "primary", "request-1");
```

**Signature**

```ts
declare const normalizeResultValue: (
  value: JobProviderResult | undefined,
  profile: string,
  correlationId: string | undefined,
) => JobEnqueueResult;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-value.ts#L52)

### notifyValue

Calls an optional observer without letting hook errors change acceptance.

**Example**

```ts
notifyValue(onAccepted, receipt);
```

**Signature**

```ts
declare const notifyValue: <T>(
  hook: ((value: T) => void) | undefined,
  value: T,
  enabled?: boolean,
) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-value.ts#L76)

### parseInputValue

Validates authored client input before enqueueing.

**Throws**

JobInputValidationError for schema issues.

**Example**

```ts
await parseInputValue(schema, { id: "one" });
```

**Signature**

```ts
declare const parseInputValue: (
  schema: StandardSchemaV1 | undefined,
  input: unknown,
) => Promise<unknown>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-value.ts#L36)

### resolveCorrelationValue

Resolves a literal or lazy client correlation identifier.

**Example**

```ts
resolveCorrelationValue(() => "request-1");
```

**Signature**

```ts
declare const resolveCorrelationValue: (
  value: JobClientOptions["correlationId"],
) => string | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-value.ts#L93)

### resolveProviderValue

Resolves an enqueue provider from a named profile or explicit resolver.

**Throws**

JobProfileError or JobProviderError when unavailable.

**Example**

```ts
resolveProviderValue(providers, "primary", undefined);
```

**Signature**

```ts
declare const resolveProviderValue: (
  source: unknown,
  profile: string,
  resolveProfile: ((profile: string) => unknown) | undefined,
) => JobProvider;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils-value.ts#L13)

## `client-utils.ts`

### "./client-utils-output.js" (namespace export)

Re-exports all named exports from the "./client-utils-output.js" module.

**Signature**

```ts
export * from "./client-utils-output.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils.ts#L2)

### "./client-utils-validation.js" (namespace export)

Re-exports all named exports from the "./client-utils-validation.js" module.

**Signature**

```ts
export * from "./client-utils-validation.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils.ts#L1)

### ClientUtilityFailure

**Signature**

```ts
declare const ClientUtilityFailure: typeof ClientUtilityFailure;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils.ts#L4)

### JobClientAbortFailure

**Signature**

```ts
declare const JobClientAbortFailure: typeof JobClientAbortFailure;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils.ts#L3)

### runAbortable

**Signature**

```ts
declare const runAbortable: <A>(
  signal: AbortSignal,
  deadlineMs: number | undefined,
  work: (signal: AbortSignal) => Promise<A>,
) => Promise<A>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils.ts#L3)

### runAbortableEffect

**Signature**

```ts
declare const runAbortableEffect: <A>(
  signal: AbortSignal,
  deadlineMs: number | undefined,
  work: (signal: AbortSignal) => Promise<A>,
) => Effect<Awaited<A>, JobClientAbortFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client-utils.ts#L3)

## `client.ts`

### EffectJobClient

**Signature**

```ts
declare const EffectJobClient: EffectJobClient<Input>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L27)

### JobClient

**Signature**

```ts
declare const JobClient: JobClient<Input>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L26)

### JobClientFailure (class)

Expected client setup or enqueue failure, preserving its original cause.

**Example**

```ts
if (error instanceof JobClientFailure) console.log(error.message);
```

**Signature**

```ts
declare class JobClientFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L47)

### JobClientOptions

**Signature**

```ts
declare const JobClientOptions: JobClientOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L25)

### JobDeclaredEdge

**Signature**

```ts
declare const JobDeclaredEdge: JobDeclaredEdge;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L23)

### JobDependencyError

**Signature**

```ts
declare const JobDependencyError: typeof JobDependencyError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L33)

### JobEnqueueOptions

**Signature**

```ts
declare const JobEnqueueOptions: JobEnqueueOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L16)

### JobEnqueueResult

**Signature**

```ts
declare const JobEnqueueResult: JobEnqueueResult;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L16)

### JobInputValidationError

**Signature**

```ts
declare const JobInputValidationError: typeof JobInputValidationError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L30)

### JobInvocationBridge

**Signature**

```ts
declare const JobInvocationBridge: JobInvocationBridge;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L22)

### JobInvocationBridgeOptions

**Signature**

```ts
declare const JobInvocationBridgeOptions: JobInvocationBridgeOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L21)

### JobObservedEdge

**Signature**

```ts
declare const JobObservedEdge: JobObservedEdge;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L24)

### JobOperationCancelledError

**Signature**

```ts
declare const JobOperationCancelledError: typeof JobOperationCancelledError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L34)

### JobOperationContext

**Signature**

```ts
declare const JobOperationContext: JobOperationContext;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L18)

### JobOperationTimeoutError

**Signature**

```ts
declare const JobOperationTimeoutError: typeof JobOperationTimeoutError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L35)

### JobProfileError

**Signature**

```ts
declare const JobProfileError: typeof JobProfileError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L31)

### JobProvider

**Signature**

```ts
declare const JobProvider: JobProvider;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L19)

### JobProviderError

**Signature**

```ts
declare const JobProviderError: typeof JobProviderError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L32)

### JobProviderResult

**Signature**

```ts
declare const JobProviderResult: JobProviderResult;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L20)

### JobState

**Signature**

```ts
declare const JobState: JobState;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L16)

### JobStatus

**Signature**

```ts
declare const JobStatus: JobStatus;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L16)

### createJobClient

Synchronous compatibility client factory.

**Throws**

The original invalid profile or provider error.

**Example**

```ts
createJobClient(options);
```

**Signature**

```ts
declare const createJobClient: (options: JobClientOptions) => EffectJobClient;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L71)

### createJobClientEffect

Creates a jobs enqueue client in Effect.

**Example**

```ts
Effect.runSync(createJobClientEffect(options));
```

**Signature**

```ts
declare const createJobClientEffect: (
  options: JobClientOptions,
) => Effect.Effect<EffectJobClient<unknown>, JobClientFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.ts#L55)

## `client.types.ts`

### EffectJobClient (interface)

A client whose enqueue operation is directly available in Effect.

**Signature**

```ts
export interface EffectJobClient<Input = unknown> extends JobClient<Input> {
  readonly enqueueEffect: (
    input: Input,
    options?: JobEnqueueOptions,
  ) => Effect.Effect<JobEnqueueResult, JobClientFailure>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.types.ts#L84)

### JobClient (interface)

Client operations exposed for a job through its provider.

**Signature**

```ts
export interface JobClient<Input = unknown> {
  readonly enqueue: (input: Input, options?: JobEnqueueOptions) => Promise<JobEnqueueResult>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.types.ts#L80)

### JobClientOptions (interface)

Options accepted for job client operations.

**Signature**

```ts
export interface JobClientOptions {
  readonly ownerId: string;
  readonly jobId: string;
  readonly source: unknown;
  readonly inputSchema?: StandardSchemaV1;
  readonly profile?: string;
  readonly resolveProfile?: (profile: string) => unknown;
  readonly bridge?: JobInvocationBridge;
  readonly signal?: () => AbortSignal;
  readonly deadline?: () => number | undefined;
  readonly correlationId?: string | (() => string | undefined);
  readonly declared?: boolean;
  readonly onDeclaredEdge?: (edge: JobDeclaredEdge) => void;
  readonly onObservedEdge?: (edge: JobObservedEdge) => void;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.types.ts#L64)

### JobClientState (interface)

Resolved dependencies shared by a client's enqueue operations.

**Signature**

```ts
export interface JobClientState {
  readonly options: JobClientOptions;
  readonly ownerId: string;
  readonly jobId: string;
  readonly profile: string;
  readonly declared: boolean;
  readonly provider: JobProvider;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.types.ts#L91)

### JobDeclaredEdge (interface)

Declared dependency between a task and job.

**Signature**

```ts
export interface JobDeclaredEdge {
  readonly kind: "enqueues-job";
  readonly from: string;
  readonly to: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.types.ts#L52)

### JobInvocationBridge (interface)

Bridge for invoking jobs from a task execution context.

**Signature**

```ts
export interface JobInvocationBridge {
  readonly run: <A>(
    operation: () => MaybePromise<A>,
    options?: JobInvocationBridgeOptions,
  ) => Promise<A>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.types.ts#L45)

### JobInvocationBridgeOptions (interface)

Options accepted for job invocation bridge operations.

**Signature**

```ts
export interface JobInvocationBridgeOptions {
  readonly name: string;
  readonly attributes: Readonly<Record<string, unknown>>;
  readonly signal: AbortSignal;
  readonly kind?: "producer";
  readonly input?: unknown;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.types.ts#L37)

### JobObservedEdge (interface)

Job edge recorded during a concrete invocation.

**Signature**

```ts
export interface JobObservedEdge {
  readonly relationship: "enqueues-job";
  readonly from: string;
  readonly to: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.types.ts#L58)

### JobOperationContext (interface)

Trusted job, scope, and signal data available during a client operation.

**Signature**

```ts
export interface JobOperationContext {
  readonly operation: "enqueue";
  readonly signal: AbortSignal;
  readonly profile: string;
  readonly deadlineMs?: number;
  readonly correlationId?: string;
  readonly propagation?: TracePropagation;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.types.ts#L7)

### JobProvider (interface)

Provider callback used to resolve the jobs runtime.

**Signature**

```ts
export interface JobProvider {
  readonly enqueue: (
    input: unknown,
    options: JobEnqueueOptions,
    context: JobOperationContext,
  ) => MaybePromise<JobProviderResult>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.types.ts#L16)

### JobProviderResult (type alias)

Runtime or handle returned by the job provider.

**Signature**

```ts
type JobProviderResult = Pick<JobEnqueueResult, "instanceId" | "accepted"> &
  Partial<
    Pick<
      JobEnqueueResult,
      | "status"
      | "profile"
      | "correlationId"
      | "duplicate"
      | "idempotencyKey"
      | "idempotencyExpiresAt"
    >
  >;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/client.types.ts#L24)

## `control-errors.ts`

### JobControlUnknownError (class)

A native control write may have committed; callers can recover by operation ID.

**Example**

```ts
new JobControlUnknownError("cancel-1", "same-key");
```

**Signature**

```ts
declare class JobControlUnknownError { constructor(
    readonly operationId: string,
    readonly idempotencyKey?: string,
    recovery: JobUnknownOutcome["recovery"] = { action: "inspect-native" },
  ) }
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-errors.ts#L6)

### toJSON (method)

Serializes the bounded recovery contract for callers.

**Example**

```ts
error.toJSON();
```

**Signature**

```ts
declare const toJSON: () => JobUnknownOutcome;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-errors.ts#L31)

### code (property)

**Signature**

```ts
readonly code: "RELKIT_JOB_CONTROL_UNKNOWN"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-errors.ts#L7)

### outcome (property)

**Signature**

```ts
readonly outcome: "unknown"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-errors.ts#L8)

### recovery (property)

**Signature**

```ts
readonly recovery: { readonly action: "retry-with-same-key" | "inspect-native" | "unavailable"; readonly expiresAt?: string; }
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-errors.ts#L9)

### JobObservationTimeoutError (class)

A native observation read exceeded its bounded timeout.

**Example**

```ts
new JobObservationTimeoutError(5_000);
```

**Signature**

```ts
declare class JobObservationTimeoutError { constructor(readonly timeoutMs: number) }
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-errors.ts#L75)

### code (property)

**Signature**

```ts
readonly code: "RELKIT_JOB_OBSERVATION_TIMEOUT"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-errors.ts#L76)

### JobResultUnavailableError (class)

A completed run has no result available to this caller.

**Example**

```ts
new JobResultUnavailableError("expired");
```

**Signature**

```ts
declare class JobResultUnavailableError { constructor(
    readonly availability: string,
    message = "The requested job result is unavailable",
  ) }
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-errors.ts#L45)

### code (property)

**Signature**

```ts
readonly code: "RELKIT_JOB_RESULT_UNAVAILABLE"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-errors.ts#L46)

### TaskBlockingWaitError (class)

Task execution cannot synchronously wait for another task result.

**Example**

```ts
new TaskBlockingWaitError();
```

**Signature**

```ts
declare class TaskBlockingWaitError {
  constructor();
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-errors.ts#L63)

### code (property)

**Signature**

```ts
readonly code: "RELKIT_TASK_BLOCKING_WAIT_UNSUPPORTED"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-errors.ts#L64)

## `control-observe.ts`

### JobObserveFailure (class)

Expected run observation failure with its original cause.

**Example**

```ts
if (error instanceof JobObserveFailure) console.log(error.message);
```

**Signature**

```ts
declare class JobObserveFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-observe.ts#L8)

### observeWithTimeout

Compatibility async iterable with scoped iterator cleanup.

**Throws**

Original read, cancellation, or timeout error while consuming.

**Example**

```ts
for await (const frame of observeWithTimeout(source, signal, 1000)) console.log(frame);
```

**Signature**

```ts
declare const observeWithTimeout: (
  source: AsyncIterable<RunWatchFrame<RunSnapshot>>,
  signal: AbortSignal,
  timeoutMs: number,
) => AsyncIterable<RunWatchFrame<RunSnapshot>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-observe.ts#L31)

### observeWithTimeoutEffect

Creates a scoped run observation stream in Effect.

**Example**

```ts
Effect.runPromise(
  Effect.flatMap(observeWithTimeoutEffect(source, signal, 1000), Stream.runCollect),
);
```

**Signature**

```ts
declare const observeWithTimeoutEffect: (
  source: AsyncIterable<RunWatchFrame<RunSnapshot>>,
  signal: AbortSignal,
  timeoutMs: number,
) => Effect.Effect<
  Stream.Stream<RunWatchFrame<RunSnapshot>, JobObserveFailure, never>,
  never,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-observe.ts#L19)

## `control-result.ts`

### JobResultFailure (class)

Expected result polling failure retaining its original cause.

**Example**

```ts
if (error instanceof JobResultFailure) console.log(error.message);
```

**Signature**

```ts
declare class JobResultFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-result.ts#L27)

### ReadRun

**Signature**

```ts
declare const ReadRun: ReadRun;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-result.ts#L11)

### ResultRunReader (class)

Injectable run snapshot reader for result polling.

**Example**

```ts
const service = yield * ResultRunReader;
```

**Signature**

```ts
declare class ResultRunReader
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-result.ts#L15)

### resultRunReaderLayer

Provides a snapshot reader for deterministic result polling.

**Example**

```ts
Effect.provide(waitForResultEffect(runtime, id, options), resultRunReaderLayer(readRun));
```

**Signature**

```ts
declare const resultRunReaderLayer: (
  readRun: ReadRun,
) => Layer.Layer<ResultRunReader, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-result.ts#L23)

### waitForResult

Promise compatibility result polling.

**Throws**

Original validation, cancellation, read, or availability error.

**Example**

```ts
await waitForResult(runtime, id, options, readRun);
```

**Signature**

```ts
declare const waitForResult: (
  runtime: JobsRuntime,
  runId: string,
  options: RunResultOptions,
  readRun: ReadRun,
) => Promise<unknown>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-result.ts#L131)

### waitForResultEffect

Polls for a terminal result with Effect Clock and an owned abort listener.

**Example**

```ts
Effect.runPromise(
  Effect.provide(waitForResultEffect(runtime, id, options), resultRunReaderLayer(readRun)),
);
```

**Signature**

```ts
declare const waitForResultEffect: (
  runtime: JobsRuntime,
  runId: string,
  options: RunResultOptions,
) => Effect.Effect<unknown, JobResultFailure, ResultRunReader>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-result.ts#L37)

## `control-result.types.ts`

### ReadRun (type alias)

Substitutable snapshot reader for result polling.

**Signature**

```ts
type ReadRun = (runtime: JobsRuntime, runId: string, signal?: AbortSignal) => Promise<RunSnapshot>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-result.types.ts#L4)

## `control-support-methods.ts`

### operationContext

Synchronous native operation context creator.

**Throws**

Original runtime context error.

**Example**

```ts
operationContext(runtime, undefined);
```

**Signature**

```ts
declare const operationContext: (
  runtime: JobsRuntime,
  signal: AbortSignal | undefined,
  operationId?: string,
) => OperationContext;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-methods.ts#L31)

### operationContextEffect

Creates a native operation context in Effect.

**Example**

```ts
Effect.runSync(operationContextEffect(runtime, undefined));
```

**Signature**

```ts
declare const operationContextEffect: (
  runtime: JobsRuntime,
  signal: AbortSignal | undefined,
  operationId?: string | undefined,
) => Effect.Effect<OperationContext, ControlSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-methods.ts#L17)

### requireMethod

Synchronous native method and capability assertion.

**Throws**

JobsCapabilityError when unavailable.

**Example**

```ts
requireMethod(runtime, "read", "get");
```

**Signature**

```ts
declare const requireMethod: (
  runtime: JobsRuntime,
  capability: string,
  method: keyof JobsRuntime["adapter"],
) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-methods.ts#L59)

### requireMethodEffect

Requires a native adapter method and capability in Effect.

**Example**

```ts
Effect.runSync(requireMethodEffect(runtime, "read", "get"));
```

**Signature**

```ts
declare const requireMethodEffect: (
  runtime: JobsRuntime,
  capability: string,
  method: keyof JobsAdapterRuntime,
) => Effect.Effect<void, ControlSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-methods.ts#L45)

### requireOperationId

Synchronous bounded control operation ID assertion.

**Throws**

TypeError when missing or too long.

**Example**

```ts
requireOperationId("cancel-1");
```

**Signature**

```ts
declare const requireOperationId: (value: string) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-methods.ts#L81)

### requireOperationIdEffect

Validates a bounded control operation ID in Effect.

**Example**

```ts
Effect.runSync(requireOperationIdEffect("cancel-1"));
```

**Signature**

```ts
declare const requireOperationIdEffect: (
  value: string,
) => Effect.Effect<void, ControlSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-methods.ts#L71)

## `control-support-observation.ts`

### isControlRecordEffect

Tests for a nonarray record in Effect.

**Example**

```ts
Effect.runSync(isControlRecordEffect({ id: "run" }));
```

**Signature**

```ts
declare const isControlRecordEffect: (
  value: unknown,
) => Effect.Effect<boolean, ControlSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-observation.ts#L52)

### isRecord

Synchronous nonarray record type guard.

**Example**

```ts
isRecord({ id: "run" });
```

**Signature**

```ts
declare const isRecord: (value: unknown) => value is Record<string, unknown>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-observation.ts#L60)

### isTerminal

Synchronous terminal run status test.

**Example**

```ts
isTerminal(run);
```

**Signature**

```ts
declare const isTerminal: (run: RunSnapshot) => boolean;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-observation.ts#L24)

### isTerminalEffect

Tests whether a run is terminal in Effect.

**Example**

```ts
Effect.runSync(isTerminalEffect(run));
```

**Signature**

```ts
declare const isTerminalEffect: (
  run: RunSnapshot,
) => Effect.Effect<boolean, ControlSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-observation.ts#L16)

### observerTimeout

Synchronous bounded native observation timeout.

**Throws**

RangeError for an unsafe duration.

**Example**

```ts
observerTimeout(runtime);
```

**Signature**

```ts
declare const observerTimeout: (runtime: JobsRuntime, authored?: DurationInput) => number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-observation.ts#L44)

### observerTimeoutEffect

Computes a bounded native observation read timeout in Effect.

**Example**

```ts
Effect.runSync(observerTimeoutEffect(runtime));
```

**Signature**

```ts
declare const observerTimeoutEffect: (
  runtime: JobsRuntime,
  authored?:
    | `${number} second`
    | `${number} seconds`
    | `${number} minute`
    | `${number} minutes`
    | `${number} hour`
    | `${number} hours`
    | `${number} day`
    | `${number} days`
    | `${number} week`
    | `${number} weeks`
    | `${number} millisecond`
    | `${number} milliseconds`
    | undefined,
) => Effect.Effect<number, ControlSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-observation.ts#L33)

## `control-support-receipts.ts`

### isUnknown

Synchronous uncertain outcome type guard.

**Example**

```ts
if (isUnknown(response)) console.log(response.operationId);
```

**Signature**

```ts
declare const isUnknown: (value: unknown) => value is UnknownControlOutcome;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-receipts.ts#L77)

### isUnknownEffect

Tests an uncertain native outcome in Effect.

**Example**

```ts
Effect.runSync(isUnknownEffect(response));
```

**Signature**

```ts
declare const isUnknownEffect: (
  value: unknown,
) => Effect.Effect<boolean, ControlSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-receipts.ts#L69)

### normalizeCancellationReceipt

Synchronous cancellation receipt normalizer.

**Throws**

TypeError for a mismatched or malformed receipt.

**Example**

```ts
normalizeCancellationReceipt(value, "run", "cancel");
```

**Signature**

```ts
declare const normalizeCancellationReceipt: (
  value: unknown,
  runId: string,
  operationId: string,
) => RunCancellationReceipt;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-receipts.ts#L37)

### normalizeCancellationReceiptEffect

Normalizes a native cancellation receipt in Effect.

**Example**

```ts
Effect.runSync(normalizeCancellationReceiptEffect(value, "run", "cancel"));
```

**Signature**

```ts
declare const normalizeCancellationReceiptEffect: (
  value: unknown,
  runId: string,
  operationId: string,
) => Effect.Effect<RunCancellationReceipt, ControlSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-receipts.ts#L23)

### normalizeRetryReceipt

Synchronous retry receipt normalizer.

**Throws**

TypeError for a mismatched or malformed receipt.

**Example**

```ts
normalizeRetryReceipt(value, "run-1");
```

**Signature**

```ts
declare const normalizeRetryReceipt: (value: unknown, originalRunId: string) => RunRetryReceipt;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-receipts.ts#L61)

### normalizeRetryReceiptEffect

Normalizes a native retry receipt in Effect.

**Example**

```ts
Effect.runSync(normalizeRetryReceiptEffect(value, "run-1"));
```

**Signature**

```ts
declare const normalizeRetryReceiptEffect: (
  value: unknown,
  originalRunId: string,
) => Effect.Effect<RunRetryReceipt, ControlSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-receipts.ts#L50)

### unknownKey

Synchronous uncertain outcome key reader.

**Example**

```ts
unknownKey(response);
```

**Signature**

```ts
declare const unknownKey: (value: unknown) => string | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-receipts.ts#L93)

### unknownKeyEffect

Reads an uncertain outcome's idempotency key in Effect.

**Example**

```ts
Effect.runSync(unknownKeyEffect(response));
```

**Signature**

```ts
declare const unknownKeyEffect: (
  value: unknown,
) => Effect.Effect<string | undefined, ControlSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-receipts.ts#L85)

### unknownRecovery

Synchronous uncertain outcome recovery reader.

**Example**

```ts
unknownRecovery(response);
```

**Signature**

```ts
declare const unknownRecovery: (value: unknown) => JobUnknownOutcome["recovery"] | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-receipts.ts#L109)

### unknownRecoveryEffect

Reads bounded recovery guidance in Effect.

**Example**

```ts
Effect.runSync(unknownRecoveryEffect(response));
```

**Signature**

```ts
declare const unknownRecoveryEffect: (value: unknown) => Effect.Effect<
  | {
      readonly action: "retry-with-same-key" | "inspect-native" | "unavailable";
      readonly expiresAt?: string;
    }
  | undefined,
  ControlSupportFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-receipts.ts#L101)

## `control-support-run.ts`

### ControlSupportFailure (class)

Expected run control helper failure with its original cause.

**Example**

```ts
if (error instanceof ControlSupportFailure) console.log(error.message);
```

**Signature**

```ts
declare class ControlSupportFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-run.ts#L7)

### controlSupportEffect

Runs a control helper inside an observed Effect.

**Example**

```ts
controlSupportEffect("controls.read", () => receipt);
```

**Signature**

```ts
declare const controlSupportEffect: <A>(
  operation: JobsOperation,
  compute: () => A,
) => Effect.Effect<A, ControlSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-run.ts#L17)

### runControlSupport

Synchronous control helper compatibility runner.

**Throws**

The original helper error on failure.

**Example**

```ts
runControlSupport(controlSupportEffect("controls.read", () => receipt));
```

**Signature**

```ts
declare const runControlSupport: <A>(effect: Effect.Effect<A, ControlSupportFailure>) => A;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-run.ts#L32)

## `control-support-value-observation.ts`

### isTerminal

Tests whether a run has reached a terminal state.

**Example**

```ts
isTerminal(snapshot);
```

**Signature**

```ts
declare const isTerminal: (run: RunSnapshot) => boolean;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-value-observation.ts#L10)

### observerTimeout

Resolves a bounded per-read observation timeout.

**Throws**

RangeError for invalid or oversized timeouts.

**Example**

```ts
observerTimeout(runtime, "2 seconds");
```

**Signature**

```ts
declare const observerTimeout: (runtime: JobsRuntime, authored?: DurationInput) => number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-value-observation.ts#L26)

## `control-support-value.ts`

### isRecord

Tests for a nonarray native response record.

**Example**

```ts
isRecord({ outcome: "requested" });
```

**Signature**

```ts
declare const isRecord: (value: unknown) => value is Record<string, unknown>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-value.ts#L178)

### isTerminal

**Signature**

```ts
declare const isTerminal: (run: RunSnapshot) => boolean;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-value.ts#L11)

### isUnknown

Recognizes an uncertain native control outcome.

**Example**

```ts
isUnknown(response);
```

**Signature**

```ts
declare const isUnknown: (value: unknown) => value is UnknownControlOutcome;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-value.ts#L137)

### normalizeCancellationReceipt

Validates and freezes a native cancellation receipt.

**Throws**

TypeError for mismatched identities or invalid fields.

**Example**

```ts
normalizeCancellationReceipt(receipt, "run-1", "cancel-1");
```

**Signature**

```ts
declare const normalizeCancellationReceipt: (
  value: unknown,
  runId: string,
  operationId: string,
) => RunCancellationReceipt;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-value.ts#L75)

### normalizeRetryReceipt

Validates that a native retry created a new run from the original.

**Throws**

TypeError for missing durable identity or reused run ID.

**Example**

```ts
normalizeRetryReceipt(receipt, "run-1");
```

**Signature**

```ts
declare const normalizeRetryReceipt: (value: unknown, originalRunId: string) => RunRetryReceipt;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-value.ts#L108)

### observerTimeout

**Signature**

```ts
declare const observerTimeout: (runtime: JobsRuntime, authored?: DurationInput) => number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-value.ts#L11)

### operationContext

Builds a native context with a caller signal and optional operation ID.

**Example**

```ts
operationContext(runtime, undefined, "cancel-1");
```

**Signature**

```ts
declare const operationContext: (
  runtime: JobsRuntime,
  signal: AbortSignal | undefined,
  operationId?: string,
) => OperationContext;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-value.ts#L19)

### requireMethod

Requires a provider method and its reported capability.

**Throws**

JobsCapabilityError when unavailable.

**Example**

```ts
requireMethod(runtime, "read", "get");
```

**Signature**

```ts
declare const requireMethod: (
  runtime: JobsRuntime,
  capability: string,
  method: keyof JobsRuntime["adapter"],
) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-value.ts#L37)

### requireOperationId

Validates a bounded idempotent control operation identity.

**Throws**

TypeError for blank or oversized IDs.

**Example**

```ts
requireOperationId("cancel-1");
```

**Signature**

```ts
declare const requireOperationId: (value: string) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-value.ts#L58)

### unknownKey

Reads an optional idempotency key from an uncertain outcome.

**Example**

```ts
unknownKey(response);
```

**Signature**

```ts
declare const unknownKey: (value: unknown) => string | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-value.ts#L148)

### unknownRecovery

Copies a recognized native recovery action from an uncertain outcome.

**Example**

```ts
unknownRecovery(response);
```

**Signature**

```ts
declare const unknownRecovery: (value: unknown) => JobUnknownOutcome["recovery"] | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support-value.ts#L158)

## `control-support.ts`

### "./control-support-methods.js" (namespace export)

Re-exports all named exports from the "./control-support-methods.js" module.

**Signature**

```ts
export * from "./control-support-methods.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support.ts#L1)

### "./control-support-observation.js" (namespace export)

Re-exports all named exports from the "./control-support-observation.js" module.

**Signature**

```ts
export * from "./control-support-observation.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support.ts#L3)

### "./control-support-receipts.js" (namespace export)

Re-exports all named exports from the "./control-support-receipts.js" module.

**Signature**

```ts
export * from "./control-support-receipts.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support.ts#L2)

### ControlSupportFailure

**Signature**

```ts
declare const ControlSupportFailure: typeof ControlSupportFailure;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support.ts#L4)

### JobObserveFailure

**Signature**

```ts
declare const JobObserveFailure: typeof JobObserveFailure;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support.ts#L8)

### JobObserveOptions

**Signature**

```ts
declare const JobObserveOptions: JobObserveOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support.ts#L10)

### UnknownControlOutcome

**Signature**

```ts
declare const UnknownControlOutcome: UnknownControlOutcome;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support.ts#L10)

### observeWithTimeout

**Signature**

```ts
declare const observeWithTimeout: (
  source: AsyncIterable<RunWatchFrame<RunSnapshot>>,
  signal: AbortSignal,
  timeoutMs: number,
) => AsyncIterable<RunWatchFrame<RunSnapshot>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support.ts#L6)

### observeWithTimeoutEffect

**Signature**

```ts
declare const observeWithTimeoutEffect: (
  source: AsyncIterable<RunWatchFrame<RunSnapshot>>,
  signal: AbortSignal,
  timeoutMs: number,
) => Effect<Stream<RunWatchFrame<RunSnapshot>, JobObserveFailure, never>, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support.ts#L7)

## `control-support.types.ts`

### JobObserveOptions (interface)

Signal and per-read timeout for native run observation.

**Signature**

```ts
export interface JobObserveOptions {
  readonly signal?: AbortSignal;
  readonly timeout?: DurationInput;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support.types.ts#L4)

### UnknownControlOutcome (interface)

Native control response with an uncertain outcome.

**Signature**

```ts
export interface UnknownControlOutcome {
  readonly operationId: string;
  readonly idempotencyKey?: string;
  readonly outcome: "unknown";
  readonly recovery?: JobUnknownOutcome["recovery"];
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-support.types.ts#L9)

## `control-write.ts`

### JobControlWriteFailure (class)

A cancelled, uncertain, or provider-failed native control write.

**Example**

```ts
new JobControlWriteFailure({ operationId: "op", kind: "unknown", cause: new Error() });
```

**Signature**

```ts
declare class JobControlWriteFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-write.ts#L9)

### controlWrite

Promise compatibility adapter for native control writes.

**Throws**

The original cancellation, unknown-outcome, or provider error.

**Example**

```ts
await controlWrite(() => Promise.resolve("ok"), undefined, "op");
```

**Signature**

```ts
declare const controlWrite: <A>(
  call: () => Promise<A>,
  signal: AbortSignal | undefined,
  operationId: string,
) => Promise<A>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-write.ts#L72)

### controlWriteEffect

Calls a native control write with an Effect-managed abort listener.
Cancellation before the provider begins prevents the call. Cancellation
after start produces an unknown outcome requiring operation-id recovery.

**Example**

```ts
Effect.runPromise(controlWriteEffect(() => Promise.resolve("ok"), undefined, "op"));
```

**Signature**

```ts
declare const controlWriteEffect: <A>(
  call: () => Promise<A>,
  signal: AbortSignal | undefined,
  operationId: string,
) => Effect.Effect<A, JobControlWriteFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-write.ts#L23)

## `control-write.types.ts`

Lifetime of one registered abort listener for a native control write.

### ControlWriteRegistration (interface)

Lifetime of one registered abort listener for a native control write.

**Signature**

```ts
export interface ControlWriteRegistration {
  readonly aborted: Promise<void>;
  readonly isAborted: () => boolean;
  readonly dispose: () => void;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/control-write.types.ts#L2)

## `controls-factory.ts`

### createJobsControls

Synchronous factory for a run controls facade.

**Example**

```ts
createJobsControls(runtime);
```

**Signature**

```ts
declare const createJobsControls: (runtime?: JobsRuntime) => JobsControls;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-factory.ts#L44)

### createJobsControlsEffect

Builds a run controls facade in Effect.

**Example**

```ts
Effect.runSync(createJobsControlsEffect(runtime));
```

**Signature**

```ts
declare const createJobsControlsEffect: (
  runtime: JobsRuntime,
) => Effect.Effect<JobsControls, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-factory.ts#L16)

## `controls-observe.ts`

### observeRun

Synchronous compatibility adapter for run observation.

**Throws**

The original capability or provider error during setup.

**Example**

```ts
for await (const frame of observeRun(runtime, request)) console.log(frame);
```

**Signature**

```ts
declare const observeRun: (
  runtime: JobsRuntime,
  request: NativeWatchRequest,
  options?: JobObserveOptions,
) => AsyncIterable<RunWatchFrame<RunSnapshot>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-observe.ts#L35)

### observeRunEffect

Acquires an async run observation iterator in Effect.
The caller owns iterator consumption and should close it on early exit.

**Example**

```ts
Effect.runSync(observeRunEffect(runtime, request));
```

**Signature**

```ts
declare const observeRunEffect: (
  runtime: JobsRuntime,
  request: NativeWatchRequest,
  options?: JobObserveOptions | undefined,
) => Effect.Effect<AsyncIterable<RunWatchFrame<RunSnapshot>>, JobControlFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-observe.ts#L17)

## `controls-operations.ts`

### cancelRunValue

**Signature**

```ts
declare const cancelRunValue: (
  runtime: JobsRuntime,
  runId: string,
  options: JobCancelOptions,
) => Promise<RunCancellationReceipt>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-operations.ts#L12)

### getRunValue

**Signature**

```ts
declare const getRunValue: (
  runtime: JobsRuntime,
  locator: string,
  signal?: AbortSignal,
) => Promise<RunSnapshot>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-operations.ts#L11)

### listRunsValue

**Signature**

```ts
declare const listRunsValue: (
  runtime: JobsRuntime,
  query?: RunListQuery,
  signal?: AbortSignal,
) => Promise<RunPage<RunSnapshot>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-operations.ts#L11)

### observeRunValue

Builds a native run observation with a scoped iterator timeout.
The consumer owns the iterator and must close it on early exit.

**Throws**

The original capability or observer setup error.

**Example**

```ts
for await (const frame of observeRunValue(runtime, request)) console.log(frame);
```

**Signature**

```ts
declare const observeRunValue: (
  runtime: JobsRuntime,
  request: NativeWatchRequest,
  options?: JobObserveOptions,
) => AsyncIterable<RunWatchFrame<RunSnapshot>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-operations.ts#L22)

### retryRunValue

**Signature**

```ts
declare const retryRunValue: (
  runtime: JobsRuntime,
  runId: string,
  options: JobRetryOptions,
) => Promise<RunRetryReceipt>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-operations.ts#L12)

## `controls-read.ts`

### ControlReadFailure (class)

Expected native run read failure with its original compatibility cause.

**Example**

```ts
new ControlReadFailure({ cause: new Error("read unavailable") });
```

**Signature**

```ts
declare class ControlReadFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-read.ts#L8)

### getRunOperationEffect

Checks read capability and requests one native run in Effect.

**Example**

```ts
Effect.runPromise(getRunOperationEffect(runtime, "run-1"));
```

**Signature**

```ts
declare const getRunOperationEffect: (
  runtime: JobsRuntime,
  locator: string,
  signal?: AbortSignal | undefined,
) => Effect.Effect<NativeRun, ControlReadFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-read.ts#L19)

### getRunValue

Promise compatibility read for internal control consumers.

**Throws**

The original capability, context, or provider error.

**Example**

```ts
await getRunValue(runtime, "run-1");
```

**Signature**

```ts
declare const getRunValue: (
  runtime: JobsRuntime,
  locator: string,
  signal?: AbortSignal,
) => Promise<RunSnapshot>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-read.ts#L45)

### listRunsOperationEffect

Checks list capability and validates the page limit before native IO.

**Example**

```ts
Effect.runPromise(listRunsOperationEffect(runtime, { limit: 25 }));
```

**Signature**

```ts
declare const listRunsOperationEffect: (
  runtime: JobsRuntime,
  query?: RunListQuery | undefined,
  signal?: AbortSignal | undefined,
) => Effect.Effect<NativeRunPage, ControlReadFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-read.ts#L63)

### listRunsValue

Promise compatibility listing for internal control consumers.

**Throws**

The original capability, limit, context, or provider error.

**Example**

```ts
await listRunsValue(runtime, { limit: 25 });
```

**Signature**

```ts
declare const listRunsValue: (
  runtime: JobsRuntime,
  query?: RunListQuery,
  signal?: AbortSignal,
) => Promise<RunPage<RunSnapshot>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-read.ts#L94)

## `controls-write-operations.ts`

### ControlOperationFailure (class)

Expected native control operation failure with its compatibility cause.

**Example**

```ts
new ControlOperationFailure({ cause: new Error("provider rejected") });
```

**Signature**

```ts
declare class ControlOperationFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-write-operations.ts#L21)

### cancelRunOperationEffect

Validates and submits an idempotent native cancellation in Effect.

**Example**

```ts
Effect.runPromise(cancelRunOperationEffect(runtime, "run", { operationId: "op" }));
```

**Signature**

```ts
declare const cancelRunOperationEffect: (
  runtime: JobsRuntime,
  runId: string,
  options: JobCancelOptions,
) => Effect.Effect<RunCancellationReceipt, ControlOperationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-write-operations.ts#L32)

### cancelRunValue

Promise compatibility cancellation for internal control consumers.

**Throws**

The original capability, cancellation, provider, or receipt error.

**Example**

```ts
await cancelRunValue(runtime, "run", { operationId: "op" });
```

**Signature**

```ts
declare const cancelRunValue: (
  runtime: JobsRuntime,
  runId: string,
  options: JobCancelOptions,
) => Promise<RunCancellationReceipt>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-write-operations.ts#L81)

### retryRunOperationEffect

Reuses pinned run identity to request a fresh native retry in Effect.

**Example**

```ts
Effect.runPromise(retryRunOperationEffect(runtime, "run", { operationId: "op" }));
```

**Signature**

```ts
declare const retryRunOperationEffect: (
  runtime: JobsRuntime,
  runId: string,
  options: JobRetryOptions,
) => Effect.Effect<RunRetryReceipt, ControlOperationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-write-operations.ts#L99)

### retryRunValue

Promise compatibility retry for internal control consumers.

**Throws**

The original capability, provider, cancellation, or receipt error.

**Example**

```ts
await retryRunValue(runtime, "run", { operationId: "op" });
```

**Signature**

```ts
declare const retryRunValue: (
  runtime: JobsRuntime,
  runId: string,
  options: JobRetryOptions,
) => Promise<RunRetryReceipt>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls-write-operations.ts#L175)

## `controls.ts`

### JobCancelOptions

**Signature**

```ts
declare const JobCancelOptions: JobCancelOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L19)

### JobControlFailure (class)

Expected failure while reading or changing a job run.

**Example**

```ts
if (error instanceof JobControlFailure) console.log(error.message);
```

**Signature**

```ts
declare class JobControlFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L24)

### JobObserveOptions

**Signature**

```ts
declare const JobObserveOptions: JobObserveOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L20)

### JobRetryOptions

**Signature**

```ts
declare const JobRetryOptions: JobRetryOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L19)

### JobsControls

**Signature**

```ts
declare const JobsControls: JobsControls;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L19)

### cancelRun

Promise compatibility adapter for cancellation.

**Throws**

The original provider or control error.

**Example**

```ts
await cancelRun(runtime, "run-1", { operationId: "op" });
```

**Signature**

```ts
declare const cancelRun: (
  runtime: JobsRuntime,
  runId: string,
  options: JobCancelOptions,
) => Promise<RunCancellationReceipt>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L119)

### cancelRunEffect

Cancels a run in Effect.

**Example**

```ts
Effect.runPromise(cancelRunEffect(runtime, "run-1", { operationId: "op" }));
```

**Signature**

```ts
declare const cancelRunEffect: (
  runtime: JobsRuntime,
  runId: string,
  options: JobCancelOptions,
) => Effect.Effect<RunCancellationReceipt, JobControlFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L101)

### createJobsControls

**Signature**

```ts
declare const createJobsControls: (runtime?: JobsRuntime) => JobsControls;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L28)

### createJobsControlsEffect

**Signature**

```ts
declare const createJobsControlsEffect: (
  runtime: JobsRuntime,
) => Effect.Effect<JobsControls, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L28)

### getRun

Promise compatibility adapter for native run reads.

**Throws**

The original provider or capability error.

**Example**

```ts
await getRun(runtime, "run-1");
```

**Signature**

```ts
declare const getRun: (
  runtime: JobsRuntime,
  locator: string,
  signal?: AbortSignal,
) => Promise<RunSnapshot>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L54)

### getRunEffect

Reads a native run in Effect.

**Example**

```ts
Effect.runPromise(getRunEffect(runtime, "run-1"));
```

**Signature**

```ts
declare const getRunEffect: (
  runtime: JobsRuntime,
  locator: string,
  signal?: AbortSignal | undefined,
) => Effect.Effect<NativeRun, JobControlFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L36)

### listRuns

Promise compatibility adapter for native run listings.

**Throws**

The original provider, capability, or limit error.

**Example**

```ts
await listRuns(runtime);
```

**Signature**

```ts
declare const listRuns: (
  runtime: JobsRuntime,
  query?: RunListQuery,
  signal?: AbortSignal,
) => Promise<RunPage<RunSnapshot>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L86)

### listRunsEffect

Lists native runs in Effect.

**Example**

```ts
Effect.runPromise(listRunsEffect(runtime));
```

**Signature**

```ts
declare const listRunsEffect: (
  runtime: JobsRuntime,
  query?: RunListQuery | undefined,
  signal?: AbortSignal | undefined,
) => Effect.Effect<NativeRunPage, JobControlFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L68)

### observeRun

**Signature**

```ts
declare const observeRun: (
  runtime: JobsRuntime,
  request: NativeWatchRequest,
  options?: JobObserveOptions,
) => AsyncIterable<RunWatchFrame<RunSnapshot>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L93)

### observeRunEffect

**Signature**

```ts
declare const observeRunEffect: (
  runtime: JobsRuntime,
  request: NativeWatchRequest,
  options?: JobObserveOptions | undefined,
) => Effect.Effect<AsyncIterable<RunWatchFrame<RunSnapshot>>, JobControlFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L93)

### retryRun

Promise compatibility adapter for retry.

**Throws**

The original provider or control error.

**Example**

```ts
await retryRun(runtime, "run-1", { operationId: "op" });
```

**Signature**

```ts
declare const retryRun: (
  runtime: JobsRuntime,
  runId: string,
  options: JobRetryOptions,
) => Promise<RunRetryReceipt>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L151)

### retryRunEffect

Retries a run in Effect.

**Example**

```ts
Effect.runPromise(retryRunEffect(runtime, "run-1", { operationId: "op" }));
```

**Signature**

```ts
declare const retryRunEffect: (
  runtime: JobsRuntime,
  runId: string,
  options: JobRetryOptions,
) => Effect.Effect<RunRetryReceipt, JobControlFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L133)

### waitForResult

Promise compatibility adapter for result waiting.

**Throws**

The original observation or result error.

**Example**

```ts
await waitForResult(runtime, "run-1", { timeout: "1 second" });
```

**Signature**

```ts
declare const waitForResult: (
  runtime: JobsRuntime,
  runId: string,
  options: RunResultOptions,
) => Promise<unknown>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L186)

### waitForResultEffect

Waits for a run result in Effect.

**Example**

```ts
Effect.runPromise(waitForResultEffect(runtime, "run-1", { timeout: "1 second" }));
```

**Signature**

```ts
declare const waitForResultEffect: (
  runtime: JobsRuntime,
  runId: string,
  options: RunResultOptions,
) => Effect.Effect<unknown, JobControlFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.ts#L165)

## `controls.types.ts`

### JobCancelOptions (interface)

Options accepted for job cancel operations.

**Signature**

```ts
export interface JobCancelOptions {
  readonly operationId: string;
  readonly reason?: string;
  readonly signal?: AbortSignal;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.types.ts#L14)

### JobRetryOptions (interface)

Options accepted for job retry operations.

**Signature**

```ts
export interface JobRetryOptions {
  readonly operationId: string;
  readonly signal?: AbortSignal;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.types.ts#L20)

### JobsControls (interface)

Run read, observation, cancellation, retry, result, and schedule operations.

**Signature**

```ts
export interface JobsControls {
  readonly get: (
    locator: string,
    options?: { readonly signal?: AbortSignal },
  ) => Promise<RunSnapshot>;
  readonly list: (
    query?: RunListQuery,
    options?: { readonly signal?: AbortSignal },
  ) => Promise<RunPage<RunSnapshot>>;
  readonly observe: (
    request: NativeWatchRequest,
    options?: JobObserveOptions,
  ) => AsyncIterable<RunWatchFrame<RunSnapshot>>;
  readonly cancel: (runId: string, options: JobCancelOptions) => Promise<RunCancellationReceipt>;
  readonly retry: (runId: string, options: JobRetryOptions) => Promise<RunRetryReceipt>;
  readonly result: (runId: string, options: RunResultOptions) => Promise<unknown>;
  readonly schedules?: JobScheduleClient;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/controls.types.ts#L25)

## `define-job-value.ts`

### defineJobValue

Binds a task to a named job with immutable scheduling and client policy metadata.

**Example**

```ts
import { defineJob } from "@relkit/app/jobs";
import { defineTask } from "@relkit/app/tasks";
import { z } from "@relkit/app/schema";
const task = defineTask({
  id: "receipts.send",
  version: "1",
  input: z.object({ orderId: z.string() }),
  output: z.object({ sent: z.boolean() }),
  handler: async () => ({ sent: true }),
});
const job = defineJob({ name: "sendReceipt", task });
void job;
```

**Signature**

```ts
declare const defineJobValue: <
  const Name extends string,
  const Task extends TaskDescriptorAny,
  const Id extends string = Name,
>(
  options: DefineJobOptions<Name, Task, Id>,
) => JobDescriptor<Name, Id, Task>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-job-value.ts#L64)

Since v0.4.1

### JOB_PROFILE_DEPRECATED_CODE

Diagnostic code used when the one-release profile spelling is consumed as service.

**Example**

```ts
JOB_PROFILE_DEPRECATED_CODE === "RELKIT_JOB_PROFILE_DEPRECATED";
```

**Signature**

```ts
declare const JOB_PROFILE_DEPRECATED_CODE: "RELKIT_JOB_PROFILE_DEPRECATED";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-job-value.ts#L17)

### RetryJitter

**Signature**

```ts
declare const RetryJitter: RetryJitter;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-job-value.ts#L19)

### RetryPolicy

**Signature**

```ts
declare const RetryPolicy: RetryPolicy;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-job-value.ts#L19)

### isJobDescriptorValue

Checks the runtime descriptor brand and task association.

**Example**

```ts
isJobDescriptorValue(candidate);
```

**Signature**

```ts
declare const isJobDescriptorValue: (value: unknown) => value is JobDescriptorAny;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-job-value.ts#L122)

## `define-job.ts`

### defineJob

Binds a task to an immutable job descriptor.

**Throws**

Original validation error for invalid definitions.

**Example**

```ts
import { defineJob, defineTask } from "@relkit/jobs";
import { z } from "@relkit/schema";
const echo = defineTask({
  id: "echo",
  version: "1",
  input: z.string(),
  output: z.string(),
  execution: "retryable",
  handler: async (input) => input,
});
const echoJob = defineJob({ name: "echoJob", task: echo });
```

**Signature**

```ts
declare const defineJob: <
  const Name extends string,
  const Task extends TaskDescriptorAny,
  const Id extends string = Name,
>(
  options: DefineJobOptions<Name, Task, Id>,
) => JobDescriptor<Name, Id, Task>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-job.ts#L49)

Since v0.4.1

#### Backend and frontend example

**Backend** — these maintained files define the operation used by the frontend below.

```ts title="examples/commerce/src/services/orders/jobs/export-orders.job.ts"
/** Registers the export task as a public job exposing trigger, get, list and watch with progress/output fields. */
import { defineJob } from "@relkit/app/jobs";
import exportOrders from "../tasks/export-orders.task.js";

const exportOrdersJob = defineJob({
  name: "exportOrders",
  id: "orders.export-orders",
  task: exportOrders,
  client: {
    public: true,
    operations: ["trigger", "get", "list", "watch"],
    fields: ["status", "progress", "output"],
  },
});

export default exportOrdersJob;
```

**Frontend**

After [frontend setup and pulling the commerce contract](/guides/frontend/connect-react), render
this component under the provider. It selects this job's public `exportOrders` name:

```tsx title="src/ExportOrders.tsx"
"use client";

/** Submits one commerce export and observes the accepted run without replaying an uncertain submission. */
import { useJobRun, useJobTrigger, useRelkitClient } from "@relkit/client/react";

/** Keeps the accepted receipt separate from the task's eventual output.
 * @returns One explicit submission button and its receipt, observation, or failure state. */
export function ExportOrders() {
  const { status } = useRelkitClient();
  const submit = useJobTrigger("exportOrders");
  const run = useJobRun("exportOrders", submit.data ? { runId: submit.data.runId } : {});

  return (
    <section>
      <button
        disabled={status !== "ready" || !submit.isIdle}
        onClick={() => submit.mutate({ input: { orderIds: ["order-1"] } })}
      >
        Export orders
      </button>
      {submit.isPending && <p role="status">Submitting…</p>}
      {submit.isError && (
        <p role="alert">{String(submit.error)}. Check the outcome before submitting again.</p>
      )}
      {submit.data && <p>Run ID: {submit.data.runId}</p>}
      <p role="status">
        Connection: {run.connection}; run: {run.run?.status ?? "not accepted"}
      </p>
    </section>
  );
}
```

The task determines the `orderIds` input. The job's `client.operations` permits triggering and
observation, while `client.fields` selects public run data. The returned `runId` is an admission
receipt; completion and output arrive through the run observer. The example keeps uncertain
submissions visible instead of automatically sending them again.

Reference: [`useJobTrigger`](/docs/api/client#usejobtrigger), [`useJobRun`](/docs/api/client#usejobrun).
Continue with [job clients and recovery](/docs/modules/jobs/clients).

### JOB_PROFILE_DEPRECATED_CODE

**Signature**

```ts
declare const JOB_PROFILE_DEPRECATED_CODE: "RELKIT_JOB_PROFILE_DEPRECATED";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-job.ts#L6)

### JobDefinitionFailure (class)

Expected job definition failure, retaining the original validation error.

**Example**

```ts
if (error instanceof JobDefinitionFailure) console.log(error.message);
```

**Signature**

```ts
declare class JobDefinitionFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-job.ts#L11)

### RetryJitter

**Signature**

```ts
declare const RetryJitter: RetryJitter;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-job.ts#L7)

### RetryPolicy

**Signature**

```ts
declare const RetryPolicy: RetryPolicy;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-job.ts#L7)

### assertJobDescriptor

Synchronous job descriptor assertion.

**Throws**

TypeError for an invalid descriptor.

**Example**

```ts
assertJobDescriptor(job);
```

**Signature**

```ts
declare const assertJobDescriptor: (value: unknown) => asserts value is JobDescriptorAny;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-job.ts#L97)

### assertJobDescriptorEffect

Asserts a valid job descriptor in Effect.

**Example**

```ts
Effect.runSync(assertJobDescriptorEffect(job));
```

**Signature**

```ts
declare const assertJobDescriptorEffect: (
  value: unknown,
) => Effect.Effect<undefined, JobDefinitionFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-job.ts#L82)

### defineJobEffect

Defines an immutable job descriptor in Effect.

**Example**

```ts
Effect.runSync(defineJobEffect({ name: "sendReceipt", task }));
```

**Signature**

```ts
declare const defineJobEffect: <
  const Name extends string,
  const Task extends TaskDescriptorAny,
  const Id extends string = Name,
>(
  options: DefineJobOptions<Name, Task, Id>,
) => Effect.Effect<JobDescriptor<Name, Id, Task>, JobDefinitionFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-job.ts#L20)

### isJobDescriptor

Synchronous job descriptor type guard.

**Example**

```ts
if (isJobDescriptor(value)) console.log(value.name);
```

**Signature**

```ts
declare const isJobDescriptor: (value: unknown) => value is JobDescriptorAny;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-job.ts#L74)

### isJobDescriptorEffect

Tests a value for a valid job descriptor in Effect.

**Example**

```ts
Effect.runSync(isJobDescriptorEffect(value));
```

**Signature**

```ts
declare const isJobDescriptorEffect: (value: unknown) => Effect.Effect<boolean, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-job.ts#L63)

## `define-task-support.ts`

### TaskSupportError (class)

An invalid task authoring helper input.

**Example**

```ts
new TaskSupportError({ reason: "Task tags must be unique" });
```

**Signature**

```ts
declare class TaskSupportError
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task-support.ts#L8)

### assertHook

Synchronous optional hook assertion.

**Throws**

TypeError when the hook is not a function.

**Example**

```ts
assertHook(() => {}, "onStart");
```

**Signature**

```ts
declare const assertHook: (value: unknown, name: string) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task-support.ts#L85)

### assertHookEffect

Validates an optional lifecycle hook in Effect.

**Example**

```ts
Effect.runPromise(assertHookEffect(() => {}, "onStart"));
```

**Signature**

```ts
declare const assertHookEffect: (
  value: unknown,
  name: string,
) => Effect.Effect<undefined, TaskSupportError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task-support.ts#L68)

### copyStrings

Synchronous authoring string adapter.

**Throws**

TypeError for invalid or duplicate strings.

**Example**

```ts
copyStrings(["red"], "tags");
```

**Signature**

```ts
declare const copyStrings: (value: unknown, name: string) => readonly string[] | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task-support.ts#L56)

### copyStringsEffect

Copies unique, bounded authoring strings in Effect.

**Example**

```ts
Effect.runPromise(copyStringsEffect(["red"], "tags"));
```

**Signature**

```ts
declare const copyStringsEffect: (
  value: unknown,
  name: string,
) => Effect.Effect<ReadonlyArray<string> | undefined, TaskSupportError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task-support.ts#L19)

### hasOwn

Synchronous own-property predicate.

**Throws**

A runtime defect if the Effect cannot execute synchronously.

**Example**

```ts
hasOwn({ id: 1 }, "id");
```

**Signature**

```ts
declare const hasOwn: (value: object, key: PropertyKey) => boolean;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task-support.ts#L137)

### hasOwnEffect

Checks property ownership in Effect.

**Example**

```ts
Effect.runSync(hasOwnEffect({ id: 1 }, "id"));
```

**Signature**

```ts
declare const hasOwnEffect: (
  value: object,
  key: PropertyKey,
) => Effect.Effect<boolean, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task-support.ts#L123)

### isRecord

Synchronous non-array record predicate.

**Throws**

A runtime defect if the Effect cannot execute synchronously.

**Example**

```ts
isRecord({ id: 1 });
```

**Signature**

```ts
declare const isRecord: (value: unknown) => value is Record<PropertyKey, unknown>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task-support.ts#L159)

### isRecordEffect

Tests for a non-array record in Effect.

**Example**

```ts
Effect.runSync(isRecordEffect({ id: 1 }));
```

**Signature**

```ts
declare const isRecordEffect: (value: unknown) => Effect.Effect<boolean, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task-support.ts#L146)

### isSchema

Synchronous Standard Schema v1 predicate.

**Throws**

A runtime defect if the Effect cannot execute synchronously.

**Example**

```ts
isSchema({ "~standard": { version: 1, validate() {} } });
```

**Signature**

```ts
declare const isSchema: (value: unknown) => boolean;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task-support.ts#L113)

### isSchemaEffect

Detects a Standard Schema v1 value in Effect.

**Example**

```ts
Effect.runSync(isSchemaEffect({ "~standard": { version: 1, validate() {} } }));
```

**Signature**

```ts
declare const isSchemaEffect: (value: unknown) => Effect.Effect<boolean, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task-support.ts#L95)

## `define-task-value.ts`

### defineTaskValue

Declares a typed task with an immutable execution contract and handler.

**Example**

```ts
import { defineTask } from "@relkit/app/tasks";
import { z } from "@relkit/app/schema";
const exportOrders = defineTask({
  id: "orders.export",
  version: "1",
  input: z.object({ orderIds: z.array(z.string()) }),
  output: z.object({ exported: z.number() }),
  handler: async ({ orderIds }) => ({ exported: orderIds.length }),
});
void exportOrders;
```

**Signature**

```ts
declare const defineTaskValue: <
  const Id extends string,
  const Version extends string,
  const InputSchema extends StandardSchemaV1,
  const OutputSchema extends StandardSchemaV1,
  const Dependencies extends TaskDependencies = {},
  const Errors extends readonly ErrorDescriptorAny[] = readonly [],
  const Publishes extends readonly PublishedEventName[] = readonly [],
  const ProgressSchema extends StandardSchemaV1 | undefined = undefined,
  const Streams extends TaskStreamSchemas = {},
  const Execution extends TaskExecution = "durable",
>(
  options: DefineTaskOptions<
    Id,
    Version,
    InputSchema,
    OutputSchema,
    Dependencies,
    Errors,
    Publishes,
    ProgressSchema,
    Streams,
    Execution
  >,
) => TaskDescriptor<
  Id,
  Version,
  InputSchema,
  OutputSchema,
  Dependencies,
  Errors,
  Publishes,
  ProgressSchema,
  Streams,
  Execution
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task-value.ts#L52)

Since v0.4.1

### isTaskDescriptorValue

Checks a candidate for the branded task descriptor shape.

**Example**

```ts
isTaskDescriptorValue(candidate);
```

**Signature**

```ts
declare const isTaskDescriptorValue: (value: unknown) => value is TaskDescriptorAny;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task-value.ts#L177)

## `define-task.ts`

### defineTask

Declares a typed immutable task with an execution contract and handler.

**Throws**

Original validation error for invalid definitions.

**Example**

```ts
import { defineTask } from "@relkit/jobs";
import { z } from "@relkit/schema";
const echo = defineTask({
  id: "echo",
  version: "1",
  input: z.string(),
  output: z.string(),
  execution: "retryable",
  handler: async (input) => input,
});
```

**Signature**

```ts
declare const defineTask: <
  const Id extends string,
  const Version extends string,
  const InputSchema extends StandardSchemaV1,
  const OutputSchema extends StandardSchemaV1,
  const Dependencies extends TaskDependencies = {},
  const Errors extends readonly ErrorDescriptorAny[] = readonly [],
  const Publishes extends readonly PublishedEventName[] = readonly [],
  const ProgressSchema extends StandardSchemaV1 | undefined = undefined,
  const Streams extends TaskStreamSchemas = {},
  const Execution extends TaskExecution = "durable",
>(
  options: DefineTaskOptions<
    Id,
    Version,
    InputSchema,
    OutputSchema,
    Dependencies,
    Errors,
    Publishes,
    ProgressSchema,
    Streams,
    Execution
  >,
) => TaskDescriptor<
  Id,
  Version,
  InputSchema,
  OutputSchema,
  Dependencies,
  Errors,
  Publishes,
  ProgressSchema,
  Streams,
  Execution
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task.ts#L77)

Since v0.4.1

### TaskDefinitionFailure (class)

Expected task definition failure, retaining the original validation error.

**Example**

```ts
if (error instanceof TaskDefinitionFailure) console.log(error.message);
```

**Signature**

```ts
declare class TaskDefinitionFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task.ts#L18)

### assertTaskDescriptor

Synchronous task descriptor assertion.

**Throws**

TypeError for invalid descriptors.

**Example**

```ts
assertTaskDescriptor(task);
```

**Signature**

```ts
declare const assertTaskDescriptor: (value: unknown) => asserts value is TaskDescriptorAny;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task.ts#L158)

### assertTaskDescriptorEffect

Asserts a task descriptor in Effect.

**Example**

```ts
Effect.runSync(assertTaskDescriptorEffect(task));
```

**Signature**

```ts
declare const assertTaskDescriptorEffect: (
  value: unknown,
) => Effect.Effect<undefined, TaskDefinitionFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task.ts#L141)

### defineTaskEffect

Defines an immutable task descriptor in Effect.

**Example**

```ts
Effect.runSync(defineTaskEffect({ id: "send", version: "1", input, output, handler }));
```

**Signature**

```ts
declare const defineTaskEffect: <
  const Id extends string,
  const Version extends string,
  const InputSchema extends StandardSchemaV1,
  const OutputSchema extends StandardSchemaV1,
  const Dependencies extends TaskDependencies = {},
  const Errors extends readonly ErrorDescriptorAny[] = readonly [],
  const Publishes extends readonly PublishedEventName[] = readonly [],
  const ProgressSchema extends StandardSchemaV1 | undefined = undefined,
  const Streams extends Readonly<Record<string, StandardSchemaV1<unknown, unknown>>> = {},
  const Execution extends TaskExecution = "durable",
>(
  options: DefineTaskOptions<
    Id,
    Version,
    InputSchema,
    OutputSchema,
    Dependencies,
    Errors,
    Publishes,
    ProgressSchema,
    Streams,
    Execution
  >,
) => Effect.Effect<
  TaskDescriptor<
    Id,
    Version,
    InputSchema,
    OutputSchema,
    Dependencies,
    Errors,
    Publishes,
    ProgressSchema,
    Streams,
    Execution
  >,
  TaskDefinitionFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task.ts#L27)

### isTaskDescriptor

Synchronous task descriptor type guard.

**Example**

```ts
if (isTaskDescriptor(value)) console.log(value.id);
```

**Signature**

```ts
declare const isTaskDescriptor: (value: unknown) => value is TaskDescriptorAny;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task.ts#L133)

### isTaskDescriptorEffect

Checks a task descriptor candidate in Effect.

**Example**

```ts
Effect.runSync(isTaskDescriptorEffect(value));
```

**Signature**

```ts
declare const isTaskDescriptorEffect: (value: unknown) => Effect.Effect<boolean, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/define-task.ts#L122)

## `duration.ts`

### DurationInput

**Signature**

```ts
declare const DurationInput:
  | `${number} second`
  | `${number} seconds`
  | `${number} minute`
  | `${number} minutes`
  | `${number} hour`
  | `${number} hours`
  | `${number} day`
  | `${number} days`
  | `${number} week`
  | `${number} weeks`
  | `${number} millisecond`
  | `${number} milliseconds`;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/duration.ts#L5)

### DurationUnit

**Signature**

```ts
declare const DurationUnit: DurationUnit;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/duration.ts#L5)

### DurationValidationError (class)

A malformed, inexact, or unsafe authored duration.

**Example**

```ts
new DurationValidationError({ input: "1.1 milliseconds", reason: "Invalid duration" });
```

**Signature**

```ts
declare class DurationValidationError
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/duration.ts#L10)

### durationToMillis

Compatibility adapter for authored duration parsing.

**Throws**

TypeError when the duration is invalid or cannot be represented safely.

**Example**

```ts
durationToMillis("1.5 seconds");
```

**Signature**

```ts
declare const durationToMillis: (value: DurationInput) => number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/duration.ts#L107)

### durationToMillisEffect

Converts an authored duration to exact, safe milliseconds.

**Example**

```ts
Effect.runPromise(durationToMillisEffect("1.5 seconds"));
```

**Signature**

```ts
declare const durationToMillisEffect: (
  value:
    | `${number} second`
    | `${number} seconds`
    | `${number} minute`
    | `${number} minutes`
    | `${number} hour`
    | `${number} hours`
    | `${number} day`
    | `${number} days`
    | `${number} week`
    | `${number} weeks`
    | `${number} millisecond`
    | `${number} milliseconds`,
) => Effect.Effect<number, DurationValidationError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/duration.ts#L60)

### isDurationInput

Tests authored duration syntax.

**Throws**

A runtime defect if the Effect cannot execute synchronously.

**Example**

```ts
isDurationInput("1 second");
```

**Signature**

```ts
declare const isDurationInput: (value: unknown) => value is DurationInput;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/duration.ts#L51)

### isDurationInputEffect

Tests authored duration syntax in the Effect path.

**Example**

```ts
Effect.runSync(isDurationInputEffect("1 second"));
```

**Signature**

```ts
declare const isDurationInputEffect: (value: unknown) => Effect.Effect<boolean, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/duration.ts#L38)

### parseDuration

Alias for durationToMillis.

**Throws**

TypeError when the duration is invalid or unsafe.

**Example**

```ts
parseDuration("1 second");
```

**Signature**

```ts
declare const parseDuration: (value: DurationInput) => number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/duration.ts#L119)

### validateDuration

Alias for durationToMillis.

**Throws**

TypeError when the duration is invalid or unsafe.

**Example**

```ts
validateDuration("1 second");
```

**Signature**

```ts
declare const validateDuration: (value: DurationInput) => number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/duration.ts#L127)

## `duration.types.ts`

Units accepted by the authored duration syntax.

### DurationInput (type alias)

An authored decimal amount followed by one duration unit.

**Signature**

```ts
type DurationInput = `${number} ${DurationUnit}`;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/duration.types.ts#L17)

### DurationUnit (type alias)

Units accepted by the authored duration syntax.

**Signature**

```ts
type DurationUnit =
  | "millisecond"
  | "milliseconds"
  | "second"
  | "seconds"
  | "minute"
  | "minutes"
  | "hour"
  | "hours"
  | "day"
  | "days"
  | "week"
  | "weeks";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/duration.types.ts#L2)

## `identity.ts`

### JobIdentityError (class)

An identity tuple containing a value that cannot be encoded as JSON.

**Example**

```ts
new JobIdentityError({ operation: "stableTuple", cause: new Error("invalid") });
```

**Signature**

```ts
declare class JobIdentityError
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/identity.ts#L9)

### retryOperationIdentity

Synchronous retry-operation identity adapter.

**Throws**

A JSON validation error for unsupported values.

**Example**

```ts
retryOperationIdentity("r", "op");
```

**Signature**

```ts
declare const retryOperationIdentity: (runId: string, operationId: string) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/identity.ts#L87)

### retryOperationIdentityEffect

Builds a retry-operation identity in Effect.

**Example**

```ts
Effect.runPromise(retryOperationIdentityEffect("r", "op"));
```

**Signature**

```ts
declare const retryOperationIdentityEffect: (
  runId: string,
  operationId: string,
) => Effect.Effect<string, JobIdentityError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/identity.ts#L73)

### scheduleOccurrenceIdentity

Synchronous schedule-occurrence identity adapter.

**Throws**

A JSON validation error for unsupported values.

**Example**

```ts
scheduleOccurrenceIdentity("s", "2026-01-01T00:00:00Z");
```

**Signature**

```ts
declare const scheduleOccurrenceIdentity: (scheduleId: string, scheduledFor: string) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/identity.ts#L111)

### scheduleOccurrenceIdentityEffect

Builds a schedule-occurrence identity in Effect.

**Example**

```ts
Effect.runPromise(scheduleOccurrenceIdentityEffect("s", "2026-01-01T00:00:00Z"));
```

**Signature**

```ts
declare const scheduleOccurrenceIdentityEffect: (
  scheduleId: string,
  scheduledFor: string,
) => Effect.Effect<string, JobIdentityError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/identity.ts#L97)

### stableIdentityTuple

Synchronous compatibility adapter for identity tuples.

**Throws**

The original JSON validation error for unsupported values.

**Example**

```ts
stableIdentityTuple([1, "1"]);
```

**Signature**

```ts
declare const stableIdentityTuple: (values: readonly unknown[]) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/identity.ts#L35)

### stableIdentityTupleEffect

Encodes typed tuple members in Effect so numeric and string values differ.

**Example**

```ts
Effect.runPromise(stableIdentityTupleEffect([1, "1"]));
```

**Signature**

```ts
declare const stableIdentityTupleEffect: (
  values: ReadonlyArray<unknown>,
) => Effect.Effect<string, JobIdentityError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/identity.ts#L19)

### taskOperationIdentity

Synchronous task-operation identity adapter.

**Throws**

A JSON validation error for unsupported values.

**Example**

```ts
taskOperationIdentity("a", "send");
```

**Signature**

```ts
declare const taskOperationIdentity: (acceptanceIdentity: string, operation: string) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/identity.ts#L63)

### taskOperationIdentityEffect

Builds a task-operation identity in Effect.

**Example**

```ts
Effect.runPromise(taskOperationIdentityEffect("a", "send"));
```

**Signature**

```ts
declare const taskOperationIdentityEffect: (
  acceptanceIdentity: string,
  operation: string,
) => Effect.Effect<string, JobIdentityError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/identity.ts#L45)

## `identity.types.ts`

### IdentityValue (type alias)

JSON-safe representation of one identity tuple component.

**Signature**

```ts
type IdentityValue = JsonValue;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/identity.types.ts#L4)

## `index.ts`

### "./adapter.js" (namespace export)

Re-exports all named exports from the "./adapter.js" module.

**Signature**

```ts
export * from "./adapter.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L9)

### "./authorization.js" (namespace export)

Re-exports all named exports from the "./authorization.js" module.

**Signature**

```ts
export * from "./authorization.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L15)

### "./capabilities.js" (namespace export)

Re-exports all named exports from the "./capabilities.js" module.

**Signature**

```ts
export * from "./capabilities.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L10)

### "./control-errors.js" (namespace export)

Re-exports all named exports from the "./control-errors.js" module.

**Signature**

```ts
export * from "./control-errors.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L16)

### "./controls.js" (namespace export)

Re-exports all named exports from the "./controls.js" module.

**Signature**

```ts
export * from "./controls.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L17)

### "./define-job.js" (namespace export)

Re-exports all named exports from the "./define-job.js" module.

**Signature**

```ts
export * from "./define-job.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L2)

### "./define-task.js" (namespace export)

Re-exports all named exports from the "./define-task.js" module.

**Signature**

```ts
export * from "./define-task.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L1)

### "./identity.js" (namespace export)

Re-exports all named exports from the "./identity.js" module.

**Signature**

```ts
export * from "./identity.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L8)

### "./migration.js" (namespace export)

Re-exports all named exports from the "./migration.js" module.

**Signature**

```ts
export * from "./migration.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L21)

### "./resolve-binding.js" (namespace export)

Re-exports all named exports from the "./resolve-binding.js" module.

**Signature**

```ts
export * from "./resolve-binding.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L3)

### "./run-id-router.js" (namespace export)

Re-exports all named exports from the "./run-id-router.js" module.

**Signature**

```ts
export * from "./run-id-router.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L14)

### "./run-id.js" (namespace export)

Re-exports all named exports from the "./run-id.js" module.

**Signature**

```ts
export * from "./run-id.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L13)

### "./runtime.js" (namespace export)

Re-exports all named exports from the "./runtime.js" module.

**Signature**

```ts
export * from "./runtime.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L11)

### "./schedule-controls.js" (namespace export)

Re-exports all named exports from the "./schedule-controls.js" module.

**Signature**

```ts
export * from "./schedule-controls.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L18)

### "./schedule-reconciliation.js" (namespace export)

Re-exports all named exports from the "./schedule-reconciliation.js" module.

**Signature**

```ts
export * from "./schedule-reconciliation.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L19)

### "./service-options.js" (namespace export)

Re-exports all named exports from the "./service-options.js" module.

**Signature**

```ts
export * from "./service-options.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L20)

### "./submission.js" (namespace export)

Re-exports all named exports from the "./submission.js" module.

**Signature**

```ts
export * from "./submission.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L12)

### "./task-policy-validation.js" (namespace export)

Re-exports all named exports from the "./task-policy-validation.js" module.

**Signature**

```ts
export * from "./task-policy-validation.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L5)

### "./task-progress.js" (namespace export)

Re-exports all named exports from the "./task-progress.js" module.

**Signature**

```ts
export * from "./task-progress.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L7)

### "./task-types.js" (namespace export)

Re-exports all named exports from the "./task-types.js" module.

**Signature**

```ts
export * from "./task-types.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L4)

### "./task-wire.js" (namespace export)

Re-exports all named exports from the "./task-wire.js" module.

**Signature**

```ts
export * from "./task-wire.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L6)

### DefineJobOptions

**Signature**

```ts
declare const DefineJobOptions: DefineJobOptions<Name, Task, Id>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L64)

### DurationInput

**Signature**

```ts
declare const DurationInput:
  | `${number} second`
  | `${number} seconds`
  | `${number} minute`
  | `${number} minutes`
  | `${number} hour`
  | `${number} hours`
  | `${number} day`
  | `${number} days`
  | `${number} week`
  | `${number} weeks`
  | `${number} millisecond`
  | `${number} milliseconds`;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L94)

### DurationUnit

**Signature**

```ts
declare const DurationUnit: DurationUnit;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L94)

### DurationValidationError

**Signature**

```ts
declare const DurationValidationError: typeof DurationValidationError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L85)

### InstantValidationError

**Signature**

```ts
declare const InstantValidationError: typeof InstantValidationError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L25)

### JOB_NAME_MAX_LENGTH

**Signature**

```ts
declare const JOB_NAME_MAX_LENGTH: 64;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L109)

### JOB_NAME_PATTERN

**Signature**

```ts
declare const JOB_NAME_PATTERN: RegExp;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L105)

### JOB_NAME_RESERVED

**Signature**

```ts
declare const JOB_NAME_RESERVED: readonly [
  "then",
  "constructor",
  "prototype",
  "toJSON",
  "toString",
  "valueOf",
  "hasOwnProperty",
  "isPrototypeOf",
  "propertyIsEnumerable",
  "toLocaleString",
  "__proto__",
];
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L106)

### JobAccessGrant

**Signature**

```ts
declare const JobAccessGrant: JobAccessGrant;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L39)

### JobAccessRequest

**Signature**

```ts
declare const JobAccessRequest: JobAccessRequest;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L40)

### JobAdmission

**Signature**

```ts
declare const JobAdmission: JobAdmission<Input>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L65)

### JobAuthorizationContext

**Signature**

```ts
declare const JobAuthorizationContext: JobAuthorizationContext;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L66)

### JobClientAccess

**Signature**

```ts
declare const JobClientAccess: JobClientAccess<Streams>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L67)

### JobClientField

**Signature**

```ts
declare const JobClientField: JobClientField;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L68)

### JobClientOperation

**Signature**

```ts
declare const JobClientOperation: JobClientOperation;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L41)

### JobDescriptor

**Signature**

```ts
declare const JobDescriptor: JobDescriptor<Name, Id, Task>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L69)

### JobDescriptorAny

**Signature**

```ts
declare const JobDescriptorAny: JobDescriptorAny;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L70)

### JobErrorEnvelope

**Signature**

```ts
declare const JobErrorEnvelope: JobErrorEnvelope;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L42)

### JobName

**Signature**

```ts
declare const JobName: JobName<Name>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L108)

### JobNameValidationError

**Signature**

```ts
declare const JobNameValidationError: typeof JobNameValidationError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L102)

### JobRunResultOptions

**Signature**

```ts
declare const JobRunResultOptions: RunResultOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L72)

### JobRunStatus

**Signature**

```ts
declare const JobRunStatus: JobRunStatus;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L43)

### JobScheduleClient

**Signature**

```ts
declare const JobScheduleClient: JobScheduleClient<Definition>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L71)

### JobServiceSelection

**Signature**

```ts
declare const JobServiceSelection: JobServiceSelection;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L73)

### JobUnknownOutcome

**Signature**

```ts
declare const JobUnknownOutcome: JobUnknownOutcome;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L44)

### JobWireEnvelope

**Signature**

```ts
declare const JobWireEnvelope: JobWireEnvelope;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L46)

### JobsTelemetry

**Signature**

```ts
declare const JobsTelemetry: typeof JobsTelemetry;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L93)

### JobsTelemetryLive

**Signature**

```ts
declare const JobsTelemetryLive: Layer<JobsTelemetry, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L93)

### JsonWireEnvelope

**Signature**

```ts
declare const JsonWireEnvelope: JsonWireEnvelope;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L45)

### NamedStreamFrame

**Signature**

```ts
declare const NamedStreamFrame: NamedStreamFrame<Item>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L47)

### ProgressEmitReceipt

**Signature**

```ts
declare const ProgressEmitReceipt: ProgressEmitReceipt;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L48)

### ResultAvailability

**Signature**

```ts
declare const ResultAvailability: ResultAvailability;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L49)

### RunAvailability

**Signature**

```ts
declare const RunAvailability: RunAvailability;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L50)

### RunCancellationReceipt

**Signature**

```ts
declare const RunCancellationReceipt: RunCancellationReceipt;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L51)

### RunConnection

**Signature**

```ts
declare const RunConnection: RunConnection;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L52)

### RunHandle

**Signature**

```ts
declare const RunHandle: RunHandle;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L53)

### RunListQuery

**Signature**

```ts
declare const RunListQuery: RunListQuery;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L54)

### RunPage

**Signature**

```ts
declare const RunPage: RunPage<Run>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L55)

### RunRetryReceipt

**Signature**

```ts
declare const RunRetryReceipt: RunRetryReceipt;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L56)

### RunSnapshot

**Signature**

```ts
declare const RunSnapshot: RunSnapshot<Input, Output, Progress, Failure>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L57)

### RunWatchFrame

**Signature**

```ts
declare const RunWatchFrame: RunWatchFrame<Run>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L58)

### ScheduleDefinition

**Signature**

```ts
declare const ScheduleDefinition: ScheduleDefinition<Input>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L74)

### ScheduleListOptions

**Signature**

```ts
declare const ScheduleListOptions: ScheduleListOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L79)

### ScheduleMisfire

**Signature**

```ts
declare const ScheduleMisfire: ScheduleMisfire;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L75)

### ScheduleOverlap

**Signature**

```ts
declare const ScheduleOverlap: ScheduleOverlap;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L76)

### ScheduleReadReceipt

**Signature**

```ts
declare const ScheduleReadReceipt: ScheduleReadReceipt<Definition>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L77)

### ScheduleRecord

**Signature**

```ts
declare const ScheduleRecord: ScheduleRecord<Definition>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L78)

### ScheduleWriteOptions

**Signature**

```ts
declare const ScheduleWriteOptions: ScheduleWriteOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L80)

### ScheduleWriteOutcome

**Signature**

```ts
declare const ScheduleWriteOutcome: ScheduleWriteOutcome;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L81)

### ScheduleWriteReceipt

**Signature**

```ts
declare const ScheduleWriteReceipt: ScheduleWriteReceipt<Definition>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L82)

### StreamIdentity

**Signature**

```ts
declare const StreamIdentity: StreamIdentity;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L59)

### StreamItem

**Signature**

```ts
declare const StreamItem: JsonValue;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L60)

### TASK_INPUT_MAX_BYTES

**Signature**

```ts
declare const TASK_INPUT_MAX_BYTES: 1048576;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L31)

### TASK_ITEM_MAX_BYTES

**Signature**

```ts
declare const TASK_ITEM_MAX_BYTES: number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L33)

### TASK_KEY_MAX_BYTES

**Signature**

```ts
declare const TASK_KEY_MAX_BYTES: 256;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L34)

### TASK_MAX_TAGS

**Signature**

```ts
declare const TASK_MAX_TAGS: 20;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L36)

### TASK_OUTPUT_MAX_BYTES

**Signature**

```ts
declare const TASK_OUTPUT_MAX_BYTES: 1048576;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L32)

### TASK_REASON_MAX_BYTES

**Signature**

```ts
declare const TASK_REASON_MAX_BYTES: 1024;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L35)

### ValidJobName

**Signature**

```ts
declare const ValidJobName: ValidJobName<Name>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L108)

### VoidWireEnvelope

**Signature**

```ts
declare const VoidWireEnvelope: VoidWireEnvelope;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L61)

### assertJobName

**Signature**

```ts
declare const assertJobName: (value: unknown, source?: string) => asserts value is JobName;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L96)

### assertJobNameEffect

**Signature**

```ts
declare const assertJobNameEffect: (
  value: unknown,
  source?: any,
) => Effect<undefined, JobNameValidationError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L97)

### assertRfc3339Instant

**Signature**

```ts
declare const assertRfc3339Instant: (value: unknown, name?: string) => asserts value is string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L23)

### assertRfc3339InstantEffect

**Signature**

```ts
declare const assertRfc3339InstantEffect: (
  value: unknown,
  name?: any,
) => Effect<undefined, InstantValidationError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L24)

### copyTriggerOptions

**Signature**

```ts
declare const copyTriggerOptions: (value: unknown) => CopiedTriggerOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L29)

### durationToMillis

**Signature**

```ts
declare const durationToMillis: (value: DurationInput) => number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L86)

### durationToMillisEffect

**Signature**

```ts
declare const durationToMillisEffect: (
  value:
    | `${number} second`
    | `${number} seconds`
    | `${number} minute`
    | `${number} minutes`
    | `${number} hour`
    | `${number} hours`
    | `${number} day`
    | `${number} days`
    | `${number} week`
    | `${number} weeks`
    | `${number} millisecond`
    | `${number} milliseconds`,
) => Effect<number, DurationValidationError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L87)

### isDurationInput

**Signature**

```ts
declare const isDurationInput: (value: unknown) => value is DurationInput;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L88)

### isDurationInputEffect

**Signature**

```ts
declare const isDurationInputEffect: (value: unknown) => Effect<boolean, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L89)

### isJobName

**Signature**

```ts
declare const isJobName: (value: unknown) => value is JobName;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L98)

### isJobNameEffect

**Signature**

```ts
declare const isJobNameEffect: (value: unknown) => Effect<boolean, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L99)

### isRfc3339Instant

**Signature**

```ts
declare const isRfc3339Instant: (value: unknown) => value is string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L26)

### isRfc3339InstantEffect

**Signature**

```ts
declare const isRfc3339InstantEffect: (value: unknown) => Effect<boolean, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L27)

### isValidJobName

**Signature**

```ts
declare const isValidJobName: (value: unknown) => value is JobName;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L100)

### normalizeJobName

**Signature**

```ts
declare const normalizeJobName: <const Name extends string>(value: Name) => ValidJobName<Name>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L101)

### parseDuration

**Signature**

```ts
declare const parseDuration: (value: DurationInput) => number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L90)

### validateDuration

**Signature**

```ts
declare const validateDuration: (value: DurationInput) => number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L91)

### validateJobName

**Signature**

```ts
declare const validateJobName: <const Name extends string>(value: Name) => ValidJobName<Name>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L103)

### validateJobNameEffect

**Signature**

```ts
declare const validateJobNameEffect: <const Name extends string>(
  value: Name,
) => Effect<ValidJobName<Name>, JobNameValidationError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L104)

### validateResultOptions

**Signature**

```ts
declare const validateResultOptions: (value: unknown) => RunResultOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/index.ts#L29)

## `instant-validation.ts`

### InstantValidationError (class)

An invalid authored RFC 3339 instant.

**Example**

```ts
new InstantValidationError({ name: "instant", reason: "invalid" });
```

**Signature**

```ts
declare class InstantValidationError
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/instant-validation.ts#L11)

### assertRfc3339Instant

Synchronous RFC 3339 assertion.

**Throws**

TypeError when the instant is invalid.

**Example**

```ts
assertRfc3339Instant("2026-01-01T00:00:00Z");
```

**Signature**

```ts
declare const assertRfc3339Instant: (value: unknown, name?: string) => asserts value is string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/instant-validation.ts#L96)

### assertRfc3339InstantEffect

Requires an RFC 3339 instant in Effect.

**Example**

```ts
Effect.runPromise(assertRfc3339InstantEffect("2026-01-01T00:00:00Z"));
```

**Signature**

```ts
declare const assertRfc3339InstantEffect: (
  value: unknown,
  name?: any,
) => Effect.Effect<undefined, InstantValidationError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/instant-validation.ts#L76)

### isRfc3339Instant

Synchronous RFC 3339 predicate.

**Throws**

A runtime defect if the Effect cannot execute synchronously.

**Example**

```ts
isRfc3339Instant("2026-01-01T00:00:00Z");
```

**Signature**

```ts
declare const isRfc3339Instant: (value: unknown) => value is string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/instant-validation.ts#L66)

### isRfc3339InstantEffect

Checks RFC 3339 syntax and calendar bounds in Effect.

**Example**

```ts
Effect.runSync(isRfc3339InstantEffect("2026-01-01T00:00:00Z"));
```

**Signature**

```ts
declare const isRfc3339InstantEffect: (value: unknown) => Effect.Effect<boolean, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/instant-validation.ts#L21)

## `job-name.ts`

### JOB_NAME_PATTERN

ASCII job names start with a lowercase letter and continue with letters or digits.

**Example**

```ts
JOB_NAME_PATTERN.test("sendEmail");
```

**Signature**

```ts
declare const JOB_NAME_PATTERN: RegExp;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-name.ts#L11)

### JOB_NAME_RESERVED

JavaScript promise and object keys that cannot name callable jobs.

**Example**

```ts
JOB_NAME_RESERVED.includes("then");
```

**Signature**

```ts
declare const JOB_NAME_RESERVED: readonly [
  "then",
  "constructor",
  "prototype",
  "toJSON",
  "toString",
  "valueOf",
  "hasOwnProperty",
  "isPrototypeOf",
  "propertyIsEnumerable",
  "toLocaleString",
  "__proto__",
];
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-name.ts#L15)

### JobName

**Signature**

```ts
declare const JobName: JobName<Name>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-name.ts#L6)

### JobNameValidationError (class)

A rejected authored job name with a stable validation tag.

**Example**

```ts
new JobNameValidationError({ source: "job name", reason: "Invalid name" });
```

**Signature**

```ts
declare class JobNameValidationError
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-name.ts#L32)

### ValidJobName

**Signature**

```ts
declare const ValidJobName: ValidJobName<Name>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-name.ts#L6)

### assertJobName

Asserts the job-name grammar for synchronous callers.

**Throws**

TypeError when the candidate is not a valid job name.

**Example**

```ts
assertJobName("sendEmail");
```

**Signature**

```ts
declare const assertJobName: (value: unknown, source?: string) => asserts value is JobName;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-name.ts#L99)

### assertJobNameEffect

Validates a job name in the Effect error channel.

**Example**

```ts
Effect.runPromise(assertJobNameEffect("sendEmail"));
```

**Signature**

```ts
declare const assertJobNameEffect: (
  value: unknown,
  source?: any,
) => Effect.Effect<undefined, JobNameValidationError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-name.ts#L79)

### isJobName

Tests a candidate against the job-name grammar.

**Throws**

A runtime defect if the Effect cannot execute synchronously.

**Example**

```ts
isJobName("sendEmail");
```

**Signature**

```ts
declare const isJobName: (value: unknown) => value is JobName;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-name.ts#L61)

### isJobNameEffect

Tests a candidate against the job-name grammar in Effect.

**Example**

```ts
Effect.runSync(isJobNameEffect("sendEmail"));
```

**Signature**

```ts
declare const isJobNameEffect: (value: unknown) => Effect.Effect<boolean, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-name.ts#L42)

### isValidJobName

Alias for isJobName.

**Throws**

A runtime defect if the Effect cannot execute synchronously.

**Example**

```ts
isValidJobName("sendEmail");
```

**Signature**

```ts
declare const isValidJobName: (value: unknown) => value is JobName;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-name.ts#L71)

### normalizeJobName

Alias for validateJobName.

**Throws**

TypeError when the name is invalid.

**Example**

```ts
normalizeJobName("sendEmail");
```

**Signature**

```ts
declare const normalizeJobName: <const Name extends string>(value: Name) => ValidJobName<Name>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-name.ts#L135)

### validateJobName

Validates a literal job name for synchronous authors.

**Throws**

TypeError when the name is invalid.

**Example**

```ts
validateJobName("sendEmail");
```

**Signature**

```ts
declare const validateJobName: <const Name extends string>(value: Name) => ValidJobName<Name>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-name.ts#L123)

### validateJobNameEffect

Validates a literal name in Effect while retaining its literal type.

**Example**

```ts
Effect.runPromise(validateJobNameEffect("sendEmail"));
```

**Signature**

```ts
declare const validateJobNameEffect: <const Name extends string>(
  value: Name,
) => Effect.Effect<ValidJobName<Name>, JobNameValidationError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-name.ts#L109)

## `job-name.types.ts`

### JobName (type alias)

A validated job name, preserving literal types when available.

**Signature**

```ts
type JobName<Name extends string = string> = string extends Name ? string : ValidJobName<Name>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-name.types.ts#L63)

### ValidJobName (type alias)

Compile-time predicate for a literal job name.

**Signature**

```ts
type ValidJobName<Name extends string = string> = string extends Name
  ? never
  : Name extends (typeof JOB_NAME_RESERVED)[number]
    ? never
    : Name extends `${LowercaseLetter}${infer Rest}`
      ? ValidCharacters<Rest> extends true
        ? AtMost64<Name> extends true
          ? Name
          : never
        : never
      : never;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-name.types.ts#L50)

## `job-validation-value.ts`

### copyAdmission

Validates and freezes job admission policy against the canonical input schema.

**Throws**

TypeError for unsupported or unsafe admission values.

**Example**

```ts
copyAdmission({ idempotency: { key: "orderId" } }, inputSchema);
```

**Signature**

```ts
declare const copyAdmission: <Input>(
  value: unknown,
  canonicalSchema?: StandardSchemaV1,
) => JobAdmission<Input> | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-validation-value.ts#L25)

### copyClient

Validates the client operations and projected fields exposed by a job.

**Throws**

TypeError for an undeclared operation or invalid field.

**Example**

```ts
copyClient({ public: true, operations: ["status"] }, declarations);
```

**Signature**

```ts
declare const copyClient: (
  value: unknown,
  declarations: ClientDeclarations,
) => JobClientAccess | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-validation-value.ts#L79)

## `job-validation.ts`

### ClientDeclarations

**Signature**

```ts
declare const ClientDeclarations: ClientDeclarations;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-validation.ts#L10)

### JobValidationFailure (class)

Expected job policy validation failure with its original cause.

**Example**

```ts
if (error instanceof JobValidationFailure) console.log(error.message);
```

**Signature**

```ts
declare class JobValidationFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-validation.ts#L14)

### copyAdmission

Synchronous job admission policy copier.

**Throws**

Original invalid policy error.

**Example**

```ts
copyAdmission({ pastAt: "run" });
```

**Signature**

```ts
declare const copyAdmission: <Input>(
  value: unknown,
  canonicalSchema?: StandardSchemaV1,
) => JobAdmission<Input> | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-validation.ts#L41)

### copyAdmissionEffect

Copies job admission policy in Effect.

**Example**

```ts
Effect.runSync(copyAdmissionEffect({ pastAt: "run" }));
```

**Signature**

```ts
declare const copyAdmissionEffect: <Input>(
  value: unknown,
  canonicalSchema?: StandardSchemaV1<unknown, unknown> | undefined,
) => Effect.Effect<JobAdmission<Input> | undefined, JobValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-validation.ts#L24)

### copyClient

Synchronous job client access policy copier.

**Throws**

Original invalid policy error.

**Example**

```ts
copyClient({ public: true, operations: ["trigger"] }, {});
```

**Signature**

```ts
declare const copyClient: (
  value: unknown,
  declarations: ClientDeclarations,
) => JobClientAccess | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-validation.ts#L72)

### copyClientEffect

Copies job client access policy in Effect.

**Example**

```ts
Effect.runSync(copyClientEffect({ public: true, operations: ["trigger"] }, {}));
```

**Signature**

```ts
declare const copyClientEffect: (
  value: unknown,
  declarations: ClientDeclarations,
) => Effect.Effect<JobClientAccess | undefined, JobValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-validation.ts#L55)

## `job-validation.types.ts`

Task schemas available when authoring job client access.

### ClientDeclarations (interface)

Task schemas available when authoring job client access.

**Signature**

```ts
export interface ClientDeclarations {
  readonly progress?: unknown;
  readonly streams?: unknown;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job-validation.types.ts#L2)

## `job.types.ts`

### DefineJobOptions (type alias)

Options accepted for define job operations.

**Signature**

```ts
type DefineJobOptions<
  Name extends string,
  Task extends TaskDescriptorAny,
  Id extends string = Name,
> = DescriptorMetadata &
  JobServiceSelection & {
    readonly name: Name & ValidJobName<Name>;
    readonly id?: Id;
    readonly task: Task;
    readonly default?: boolean;
    readonly schedules?: readonly ScheduleDefinition<InferInput<Task["input"]>>[];
    readonly admission?: JobAdmission<InferOutput<Task["input"]>>;
    readonly client?: JobClientAccess<StreamsOf<Task>>;
  };
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L110)

### JobAdmission (interface)

Policy for late schedules and idempotent submissions.

**Signature**

```ts
export interface JobAdmission<Input = unknown> {
  readonly pastAt?: "run" | "reject";
  readonly idempotency?: {
    readonly key?: Extract<keyof Input, string>;
    readonly retention?: DurationInput;
  };
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L60)

### JobAuthorizationContext (interface)

Trusted scope and optional subject data passed to an access policy.

**Signature**

```ts
export interface JobAuthorizationContext {
  readonly application: string;
  readonly environment: string;
  readonly scope: string;
  readonly subject?: string;
  readonly auth?: unknown;
  readonly run?: import("@relkit/contracts/jobs").RunSnapshot;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L71)

### JobClientAccess (type alias)

Public or policy-guarded operations and fields exposed to clients.

**Signature**

```ts
type JobClientAccess<Streams extends TaskStreamSchemas = TaskStreamSchemas> =
  | {
      readonly public: true;
      readonly operations: readonly JobClientOperation[];
      readonly fields?: readonly JobClientField[];
      readonly streams?: readonly (keyof Streams & string)[];
    }
  | {
      readonly authorize: (
        request: JobAccessRequest,
        context: JobAuthorizationContext,
      ) => MaybePromise<JobAccessGrant>;
      readonly public?: never;
      readonly operations: readonly JobClientOperation[];
      readonly fields?: readonly JobClientField[];
      readonly streams?: readonly (keyof Streams & string)[];
    };
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L80)

### JobClientField (type alias)

Run fields that authorization may expose to a client.

**Signature**

```ts
type JobClientField = "status" | "input" | "progress" | "output" | "error";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L69)

### JobDescriptor (type alias)

Validated job definition and its task-specific trigger operation.

**Signature**

```ts
type JobDescriptor<
  Name extends string,
  Id extends string,
  Task extends TaskDescriptorAny,
> = DescriptorBase<"job", Id> &
  JobRef<Id, Task["input"], Task["output"], Task> & {
    readonly name: Name;
    readonly task: Task;
    readonly input: Task["input"];
    readonly output: Task["output"];
    readonly errors?: Task["errors"];
    readonly progress?: Task["progress"];
    readonly streams?: Task["streams"];
    readonly execution: Task["execution"];
    readonly observation?: TaskObservation<
      Task["streams"] extends TaskStreamSchemas ? Task["streams"] : {}
    >;
    readonly service?: string;
    readonly default?: boolean;
    readonly schedules?: readonly ScheduleDefinition<InferOutput<Task["input"]>>[];
    readonly admission?: JobAdmission<InferOutput<Task["input"]>>;
    readonly client?: JobClientAccess<StreamsOf<Task>>;
    readonly trigger: (
      input: InferInput<Task["input"]>,
      options?: ServerTriggerOptions,
    ) => Promise<RunHandle>;
  };
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L126)

### JobDescriptorAny (type alias)

Erases task-specific admission keys at runtime boundaries without making concrete jobs invariant.

**Signature**

```ts
type JobDescriptorAny = Omit<
  JobDescriptor<string, string, TaskDescriptorAny>,
  "admission" | "trigger"
> & {
  readonly admission?: JobAdmission<any>;
  readonly trigger: (input: any, options?: ServerTriggerOptions) => Promise<RunHandle>;
};
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L158)

### JobRunResultOptions (type alias)

Options accepted for job run result operations.

**Signature**

```ts
type JobRunResultOptions = RunResultOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L155)

### JobScheduleClient

**Signature**

```ts
declare const JobScheduleClient: JobScheduleClient<Definition>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L34)

### JobServiceSelection (type alias)

Mutually exclusive service and deprecated profile selectors.

**Signature**

```ts
type JobServiceSelection =
  | { readonly service?: string; readonly profile?: never }
  | { readonly service?: never; readonly profile?: string };
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L99)

### RetryJitter (type alias)

Jitter strategy for the compatibility retry policy.

**Signature**

```ts
type RetryJitter = "none" | "full" | "equal";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L49)

### RetryPolicy (interface)

Compatibility retry attempts, delays, multiplier, and jitter.

**Signature**

```ts
export interface RetryPolicy {
  readonly maxAttempts: number;
  readonly initialDelayMs: number;
  readonly maxDelayMs: number;
  readonly multiplier: number;
  readonly jitter: RetryJitter;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L51)

### RunResultOptions

**Signature**

```ts
declare const RunResultOptions: RunResultOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L46)

### ScheduleDefinition

**Signature**

```ts
declare const ScheduleDefinition: ScheduleDefinition<Input>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L35)

### ScheduleListOptions

**Signature**

```ts
declare const ScheduleListOptions: ScheduleListOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L36)

### ScheduleMisfire

**Signature**

```ts
declare const ScheduleMisfire: ScheduleMisfire;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L37)

### ScheduleOverlap

**Signature**

```ts
declare const ScheduleOverlap: ScheduleOverlap;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L38)

### ScheduleReadReceipt

**Signature**

```ts
declare const ScheduleReadReceipt: ScheduleReadReceipt<Definition>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L39)

### ScheduleRecord

**Signature**

```ts
declare const ScheduleRecord: ScheduleRecord<Definition>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L40)

### ScheduleWriteOptions

**Signature**

```ts
declare const ScheduleWriteOptions: ScheduleWriteOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L41)

### ScheduleWriteOutcome

**Signature**

```ts
declare const ScheduleWriteOutcome: ScheduleWriteOutcome;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L42)

### ScheduleWriteReceipt

**Signature**

```ts
declare const ScheduleWriteReceipt: ScheduleWriteReceipt<Definition>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L43)

### ServerTriggerOptions

**Signature**

```ts
declare const ServerTriggerOptions: ServerTriggerOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L46)

### TriggerOptions

**Signature**

```ts
declare const TriggerOptions: TriggerOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/job.types.ts#L46)

## `jobs-observability.ts`

### JobsTelemetry (class)

Injectable observer for jobs Effect operations.

**Example**

```ts
Effect.provide(durationToMillisEffect("1 second"), JobsTelemetryLive);
```

**Signature**

```ts
declare class JobsTelemetry
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/jobs-observability.ts#L7)

### JobsTelemetryLive

Live spans and bounded jobs operation metrics.

**Example**

```ts
Effect.provide(durationToMillisEffect("1 second"), JobsTelemetryLive);
```

**Signature**

```ts
declare const JobsTelemetryLive: Layer.Layer<JobsTelemetry, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/jobs-observability.ts#L14)

### observeJobs

Observes an operation with a supplied service or the live observer.

**Example**

```ts
observeJobs("duration.toMillis", Effect.succeed(1000));
```

**Signature**

```ts
declare const observeJobs: <A, E, R>(
  operation: JobsOperation,
  effect: Effect.Effect<A, E, R>,
) => Effect.Effect<A, E, R>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/jobs-observability.ts#L28)

## `jobs-observability.types.ts`

### JobsOperation (type alias)

Stable, bounded operation labels recorded in spans and metrics.

**Example**

```ts
const operation: JobsOperation = "submission.write";
```

**Signature**

```ts
type JobsOperation =
  | "duration.isInput"
  | "duration.toMillis"
  | "jobName.is"
  | "jobName.assert"
  | "jobName.validate"
  | "identity.stableTuple"
  | "identity.taskOperation"
  | "identity.retryOperation"
  | "identity.scheduleOccurrence"
  | "instant.is"
  | "instant.assert"
  | "retry.validate"
  | "control.write"
  | "canonical.assertProjection"
  | "taskSupport.copyStrings"
  | "taskSupport.assertHook"
  | "taskSupport.isSchema"
  | "taskSupport.hasOwn"
  | "taskSupport.isRecord"
  | "taskObservation.copy"
  | "migration.diagnose"
  | "migration.legacy"
  | "authorization.authorize"
  | "authorization.grant"
  | "authorization.operation"
  | "server.readManifest"
  | "server.run"
  | "server.runtimeOptions"
  | "capability.assert"
  | "capability.validateReport"
  | "adapter.assertMethods"
  | "authorization.projectSnapshot"
  | "authorization.projectPage"
  | "adapter.assertRuntime"
  | "adapter.isRuntime"
  | "runtime.create"
  | "runtime.current"
  | "runtime.require"
  | "runtime.validateManifest"
  | "runtime.runIn"
  | "serviceOptions.validate"
  | "serviceOptions.serialize"
  | "serviceOptions.deserialize"
  | "serviceOptions.assertSupported"
  | "submission.write"
  | "submission.prepare"
  | "submission.prepareCanonical"
  | "submission.createPipeline"
  | "submission.submitTask"
  | "submission.submitJob"
  | "submission.submitCanonical"
  | "schedule.createControls"
  | "schedule.list"
  | "schedule.get"
  | "schedule.write"
  | "control.create"
  | "control.get"
  | "control.list"
  | "control.observe"
  | "control.cancel"
  | "control.retry"
  | "control.result"
  | "legacy.defineJob"
  | "authorization.createCursor"
  | "authorization.readCursor"
  | "runLocator.create"
  | "runLocator.namespaceHash"
  | "runLocator.validateKeyRing"
  | "runLocator.verify"
  | "runLocator.rotate"
  | "runLocator.routerLoad"
  | "runLocator.routerRegister"
  | "runLocator.routerSnapshot"
  | "runLocator.routerPersist"
  | "runLocator.routerRoute"
  | "trigger.copyOptions"
  | "trigger.resultOptions"
  | "schedule.copyDefinitions"
  | "binding.resolve"
  | "runtime.resolveBinding"
  | "client.runAbortable"
  | "client.create"
  | "client.enqueue"
  | "task.createProgressEmitter"
  | "task.createStreamEmitter"
  | "task.emitProgress"
  | "task.emitStream"
  | "schedule.reconcile"
  | "schedule.owner"
  | "schedule.operationId"
  | "schedule.writeRecovery"
  | "control.pollResult"
  | "taskWire.encodeJob"
  | "taskWire.encodeInput"
  | "taskWire.encodeOutput"
  | "taskWire.decodeJob"
  | "taskWire.validateInput"
  | "taskWire.validateCanonicalInput"
  | "taskWire.validateOutput"
  | "taskWire.validateCanonicalOutput"
  | "job.define"
  | "job.isDescriptor"
  | "job.assertDescriptor"
  | "task.define"
  | "task.isDescriptor"
  | "task.assertDescriptor"
  | "client.resolveProvider"
  | "client.parseInput"
  | "client.assertOptions"
  | "client.assertOptionalText"
  | "client.normalizeResult"
  | "client.notify"
  | "client.resolveCorrelation"
  | "taskValidation.assertSchema"
  | "taskValidation.normalizeVersion"
  | "taskValidation.inputWire"
  | "taskValidation.canonicalSchema"
  | "taskValidation.canonicalStreams"
  | "taskValidation.retry"
  | "taskValidation.dependencies"
  | "taskValidation.errors"
  | "taskValidation.streams"
  | "taskValidation.duration"
  | "taskPolicy.utf8Bytes"
  | "taskPolicy.boundedString"
  | "taskPolicy.fieldName"
  | "taskPolicy.memoryBytes"
  | "taskPolicy.scalarKey"
  | "taskPolicy.tags"
  | "taskPolicy.resources"
  | "taskPolicy.concurrency"
  | "taskPolicy.logging"
  | "taskPolicy.retryDelay"
  | "jobValidation.admission"
  | "jobValidation.client"
  | "submission.admission"
  | "submission.submitPrepared"
  | "control.observeSetup"
  | "control.observeNext"
  | "controlSupport.context"
  | "controlSupport.requireMethod"
  | "controlSupport.operationId"
  | "controlSupport.cancelReceipt"
  | "controlSupport.retryReceipt"
  | "controlSupport.isUnknown"
  | "controlSupport.unknownKey"
  | "controlSupport.unknownRecovery"
  | "controlSupport.isTerminal"
  | "controlSupport.timeout"
  | "controlSupport.isRecord"
  | "submissionSupport.error"
  | "submissionSupport.receipt"
  | "submissionSupport.envelope"
  | "submissionSupport.isUnknown"
  | "submissionSupport.isRecord"
  | "submissionSupport.idempotency"
  | "submissionSupport.boundedKey"
  | "submissionSupport.scheduledTime"
  | "submissionSupport.correlation"
  | "submissionSupport.propagation"
  | "submissionSupport.parentRun"
  | "submissionSupport.hashWire"
  | "binding.selectProfile"
  | "binding.taskId";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/jobs-observability.types.ts#L6)

### JobsTelemetryService (interface)

Substitutable observer used by jobs Effect operations.

**Example**

```ts
const observer: JobsTelemetryService = { observe: (_name, effect) => effect };
```

**Signature**

```ts
export interface JobsTelemetryService {
  /** Surrounds an operation while preserving its success and error channels.
   * @param operation - A stable operation name.
   * @param effect - The operation to observe.
   * @returns The observed Effect with unchanged success and error types.
   * @example observer.observe("duration.toMillis", Effect.succeed(1000));
   */
  readonly observe: <A, E, R>(
    operation: JobsOperation,
    effect: Effect.Effect<A, E, R>,
  ) => Effect.Effect<A, E, R>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/jobs-observability.types.ts#L176)

## `legacy-define-job.ts`

### DefineJobOptions

**Signature**

```ts
declare const DefineJobOptions: DefineJobOptions<Id, InputSchema, Target>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy-define-job.ts#L25)

### IdempotencyDefinition

**Signature**

```ts
declare const IdempotencyDefinition: IdempotencyDefinition<Input>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy-define-job.ts#L23)

### JobDescriptor

**Signature**

```ts
declare const JobDescriptor: JobDescriptor<Id, Input, InputSchema, Target>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy-define-job.ts#L24)

### LegacyJobValidationError (class)

Invalid legacy job authoring options.

**Example**

```ts
if (error instanceof LegacyJobValidationError) console.log(error.message);
```

**Signature**

```ts
declare class LegacyJobValidationError
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy-define-job.ts#L32)

### RetryJitter

**Signature**

```ts
declare const RetryJitter: RetryJitter;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy-define-job.ts#L19)

### RetryPolicy

**Signature**

```ts
declare const RetryPolicy: RetryPolicy;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy-define-job.ts#L20)

### ScheduleDefinition

**Signature**

```ts
declare const ScheduleDefinition: ScheduleDefinition<Input>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy-define-job.ts#L22)

### ScheduleOverlap

**Signature**

```ts
declare const ScheduleOverlap: ScheduleOverlap;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy-define-job.ts#L21)

### defineJob

Synchronous compatibility adapter for legacy job authoring.

**Throws**

TypeError when the authored job is invalid.

**Example**

```ts
defineJob(options);
```

**Signature**

```ts
declare const defineJob: <
  const Id extends string,
  const InputSchema extends StandardSchemaV1,
  const Target extends FunctionRefAny,
>(
  options: DefineJobOptions<Id, InputSchema, Target>,
) => JobDescriptor<Id, InferInput<InputSchema>, InputSchema, Target>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy-define-job.ts#L67)

### defineJobEffect

Defines a legacy function backed job in Effect.

**Example**

```ts
Effect.runSync(defineJobEffect(options));
```

**Signature**

```ts
declare const defineJobEffect: <
  const Id extends string,
  const InputSchema extends StandardSchemaV1,
  const Target extends FunctionRefAny,
>(
  options: DefineJobOptions<Id, InputSchema, Target>,
) => Effect.Effect<
  JobDescriptor<Id, InferInput<InputSchema>, InputSchema, Target>,
  LegacyJobValidationError,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy-define-job.ts#L41)

## `legacy-define-job.types.ts`

### DefineJobOptions (interface)

Options accepted for define job operations.

**Signature**

```ts
export interface DefineJobOptions<
  Id extends string,
  InputSchema extends StandardSchemaV1,
  Target extends FunctionRefAny,
> extends DescriptorMetadata {
  readonly id: Id;
  readonly input: InputSchema;
  readonly target: Target;
  readonly profile?: string;
  readonly retry: RetryPolicy;
  readonly timeoutMs?: number;
  readonly concurrency?: number;
  readonly schedule?: readonly ScheduleDefinition<InferInput<InputSchema>>[];
  readonly idempotency?: IdempotencyDefinition<InferInput<InputSchema>>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy-define-job.types.ts#L49)

### IdempotencyDefinition (interface)

Legacy deduplication key and retention policy.

**Signature**

```ts
export interface IdempotencyDefinition<Input = unknown> {
  readonly key: IdempotencyKey<Input>;
  readonly retentionMs: number;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy-define-job.types.ts#L28)

### JobDescriptor (interface)

Validated job definition and its task-specific trigger operation.

**Signature**

```ts
export interface JobDescriptor<
  Id extends string,
  Input,
  InputSchema extends StandardSchemaV1 = StandardSchemaV1,
  Target extends FunctionRefAny = FunctionRefAny,
> extends DescriptorBase<"job", Id> {
  readonly input: InputSchema;
  readonly target: Target;
  readonly profile?: string;
  readonly retry: RetryPolicy;
  readonly timeoutMs?: number;
  readonly concurrency?: number;
  readonly schedule?: readonly ScheduleDefinition<Input>[];
  readonly idempotency?: IdempotencyDefinition<Input>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy-define-job.types.ts#L33)

### RetryJitter (type alias)

Jitter strategy retained for legacy job retry policy.

**Signature**

```ts
type RetryJitter = "none" | "full" | "equal";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy-define-job.types.ts#L5)

### RetryPolicy (interface)

Legacy retry attempts, backoff, and jitter settings.

**Signature**

```ts
export interface RetryPolicy {
  readonly maxAttempts: number;
  readonly initialDelayMs: number;
  readonly maxDelayMs: number;
  readonly multiplier: number;
  readonly jitter: RetryJitter;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy-define-job.types.ts#L7)

### ScheduleDefinition (interface)

Legacy schedule timing and overlap configuration.

**Signature**

```ts
export interface ScheduleDefinition<Input = JsonValue> {
  readonly id: string;
  readonly cron: string;
  readonly timezone: string;
  readonly input: Input;
  readonly overlap: ScheduleOverlap;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy-define-job.types.ts#L17)

### ScheduleOverlap (type alias)

Legacy policy for simultaneous schedule occurrences.

**Signature**

```ts
type ScheduleOverlap = "skip" | "allow";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy-define-job.types.ts#L15)

## `legacy.ts`

Explicit one-release compatibility surface for function-target enqueue jobs.

### "./client.js" (namespace export)

Re-exports all named exports from the "./client.js" module.

**Signature**

```ts
export * from "./client.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy.ts#L3)

### "./legacy-define-job.js" (namespace export)

Re-exports all named exports from the "./legacy-define-job.js" module.

**Signature**

```ts
export * from "./legacy-define-job.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/legacy.ts#L2)

## `migration-support.ts`

### breakingEffect

Constructs one breaking diagnostic within a migration Effect.

**Example**

```ts
Effect.runSync(breakingEffect("TASK_ID_CHANGED", "Task changed"));
```

**Signature**

```ts
declare const breakingEffect: (
  code:
    | "TASK_ID_CHANGED"
    | "TASK_VERSION_CHANGED"
    | "TASK_INPUT_SCHEMA_CHANGED"
    | "DEDUPE_SCOPE_CHANGED"
    | "PUBLIC_CLIENT_FINGERPRINT_CHANGED"
    | "LEGACY_JOBS_DISABLED"
    | "LEGACY_ALIAS_CONFLICT",
  message: string,
) => Effect.Effect<JobMigrationDiagnostic, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/migration-support.ts#L10)

### sameEffect

Compares schedule identifiers in authored order.

**Example**

```ts
Effect.runSync(sameEffect(["daily"], ["daily"]));
```

**Signature**

```ts
declare const sameEffect: (
  left: ReadonlyArray<string> | undefined,
  right: ReadonlyArray<string> | undefined,
) => Effect.Effect<boolean, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/migration-support.ts#L32)

## `migration.ts`

### JobBindingMigration

**Signature**

```ts
declare const JobBindingMigration: JobBindingMigration;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/migration.ts#L11)

### JobMigrationDiagnostic

**Signature**

```ts
declare const JobMigrationDiagnostic: JobMigrationDiagnostic;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/migration.ts#L12)

### JobMigrationSeverity

**Signature**

```ts
declare const JobMigrationSeverity: JobMigrationSeverity;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/migration.ts#L13)

### JobMigrationSnapshot

**Signature**

```ts
declare const JobMigrationSnapshot: JobMigrationSnapshot;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/migration.ts#L14)

### LegacyCompatibilitySnapshot

**Signature**

```ts
declare const LegacyCompatibilitySnapshot: LegacyCompatibilitySnapshot;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/migration.ts#L15)

### diagnoseJobMigration

Synchronous migration diagnostic adapter.

**Throws**

A runtime defect if the Effect cannot execute synchronously.

**Example**

```ts
diagnoseJobMigration(previous, next);
```

**Signature**

```ts
declare const diagnoseJobMigration: (
  previous: JobMigrationSnapshot,
  next: JobMigrationSnapshot,
) => readonly JobMigrationDiagnostic[];
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/migration.ts#L116)

### diagnoseJobMigrationEffect

Diagnoses identity and contract changes between two job snapshots in Effect.

**Example**

```ts
Effect.runSync(diagnoseJobMigrationEffect(previous, next));
```

**Signature**

```ts
declare const diagnoseJobMigrationEffect: (
  previous: JobMigrationSnapshot,
  next: JobMigrationSnapshot,
) => Effect.Effect<ReadonlyArray<JobMigrationDiagnostic>, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/migration.ts#L24)

### diagnoseLegacyCompatibility

Synchronous legacy compatibility diagnostic adapter.

**Throws**

A runtime defect if the Effect cannot execute synchronously.

**Example**

```ts
diagnoseLegacyCompatibility(snapshot);
```

**Signature**

```ts
declare const diagnoseLegacyCompatibility: (
  snapshot: LegacyCompatibilitySnapshot,
) => readonly JobMigrationDiagnostic[];
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/migration.ts#L176)

### diagnoseLegacyCompatibilityEffect

Diagnoses legacy configuration aliases in Effect.

**Example**

```ts
Effect.runSync(diagnoseLegacyCompatibilityEffect(snapshot));
```

**Signature**

```ts
declare const diagnoseLegacyCompatibilityEffect: (
  snapshot: LegacyCompatibilitySnapshot,
) => Effect.Effect<ReadonlyArray<JobMigrationDiagnostic>, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/migration.ts#L128)

## `migration.types.ts`

Binding mode recorded in a job migration snapshot.

### JobBindingMigration (type alias)

Binding mode recorded in a job migration snapshot.

**Signature**

```ts
type JobBindingMigration = "implicit" | "default" | "explicit";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/migration.types.ts#L2)

### JobMigrationDiagnostic (interface)

Actionable compatibility finding for an authored job change.

**Signature**

```ts
export interface JobMigrationDiagnostic {
  readonly code:
    | "DEFAULT_DERIVED_JOB_ID_RENAME"
    | "PINNED_JOB_ID_CHANGED"
    | "IMPLICIT_TO_EXPLICIT_BINDING"
    | "TASK_ID_CHANGED"
    | "TASK_VERSION_CHANGED"
    | "TASK_INPUT_SCHEMA_CHANGED"
    | "HISTORICAL_RUNS_PINNED"
    | "SCHEDULE_TARGET_CHANGED"
    | "DEDUPE_SCOPE_CHANGED"
    | "PUBLIC_CLIENT_FINGERPRINT_CHANGED"
    | "LEGACY_JOBS_DISABLED"
    | "LEGACY_ALIAS_CONFLICT"
    | "LEGACY_ALIAS_DEPRECATED";
  readonly severity: JobMigrationSeverity;
  readonly breaking: boolean;
  readonly message: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/migration.types.ts#L25)

### JobMigrationSeverity (type alias)

Severity assigned to one compatibility diagnostic.

**Signature**

```ts
type JobMigrationSeverity = "warning" | "error";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/migration.types.ts#L5)

### JobMigrationSnapshot (interface)

Versioned job identity and public contract facts used by migration checks.

**Signature**

```ts
export interface JobMigrationSnapshot {
  readonly name: string;
  readonly id: string;
  readonly idSource?: "explicit" | "name";
  readonly taskId: string;
  readonly taskVersion: string;
  readonly inputSchemaHash?: string;
  readonly binding: JobBindingMigration;
  readonly publicFingerprint?: string;
  readonly clientFingerprint?: string;
  readonly service?: string;
  readonly hasHistoricalRuns?: boolean;
  readonly scheduleIds?: readonly string[];
  readonly dedupeScope?: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/migration.types.ts#L8)

### LegacyCompatibilitySnapshot (interface)

Legacy and replacement configuration keys involved in migration.

**Signature**

```ts
export interface LegacyCompatibilitySnapshot {
  readonly usesFunctionTarget: boolean;
  readonly legacyJobsEnabled: boolean;
  readonly legacyKeys?: readonly ("job" | "defaults.job" | "profile")[];
  readonly newKeys?: readonly ("jobs" | "defaults.jobs" | "service")[];
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/migration.types.ts#L46)

## `resolve-binding-error.ts`

### JobBindingResolutionError (class)

A deterministic task-to-job binding resolution failure.

**Example**

```ts
new JobBindingResolutionError("UNKNOWN_JOB_SELECTOR", "Unknown job");
```

**Signature**

```ts
declare class JobBindingResolutionError {
  constructor(code: JobBindingErrorCode, message: string);
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding-error.ts#L6)

### code (property)

**Signature**

```ts
readonly code: JobBindingErrorCode
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding-error.ts#L7)

## `resolve-binding-support.ts`

### JobBindingSupportFailure (class)

A provider profile selection failure with a stable resolution code.

**Example**

```ts
new JobBindingSupportFailure({ code: "UNKNOWN_JOB_PROFILE", reason: "Unknown profile" });
```

**Signature**

```ts
declare class JobBindingSupportFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding-support.ts#L9)

### selectProfile

Synchronous provider profile selector.

**Throws**

JobBindingResolutionError for missing or unknown profiles.

**Example**

```ts
selectProfile(undefined, ["default"], "send");
```

**Signature**

```ts
declare const selectProfile: (
  requested: string | undefined,
  profiles: ResolveBindingOptions["profiles"],
  jobId: string,
) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding-support.ts#L42)

### selectProfileEffect

Selects a provider profile in Effect.

**Example**

```ts
Effect.runSync(selectProfileEffect(undefined, ["default"], "send"));
```

**Signature**

```ts
declare const selectProfileEffect: (
  requested: string | undefined,
  profiles: ReadonlyArray<string> | Readonly<Record<string, unknown>> | undefined,
  jobId: string,
) => Effect.Effect<string, JobBindingSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding-support.ts#L20)

### taskIdOf

Synchronous task reference id reader.

**Example**

```ts
taskIdOf(taskRef);
```

**Signature**

```ts
declare const taskIdOf: (value: TaskRefAny | undefined) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding-support.ts#L71)

### taskIdOfEffect

Reads a task reference id in Effect.

**Example**

```ts
Effect.runSync(taskIdOfEffect(taskRef));
```

**Signature**

```ts
declare const taskIdOfEffect: (
  value: TaskRefAny | undefined,
) => Effect.Effect<string, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding-support.ts#L60)

## `resolve-binding.ts`

### BindingSource

**Signature**

```ts
declare const BindingSource: BindingSource;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding.ts#L16)

### JobBindingErrorCode

**Signature**

```ts
declare const JobBindingErrorCode: JobBindingErrorCode;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding.ts#L17)

### JobBindingFailure (class)

A typed task-to-job binding resolution failure.

**Example**

```ts
if (error instanceof JobBindingFailure) console.log(error.message);
```

**Signature**

```ts
declare class JobBindingFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding.ts#L25)

### JobBindingResolutionError

**Signature**

```ts
declare const JobBindingResolutionError: typeof JobBindingResolutionError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding.ts#L21)

### ResolveBindingOptions

**Signature**

```ts
declare const ResolveBindingOptions: ResolveBindingOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding.ts#L18)

### ResolvedTaskBinding

**Signature**

```ts
declare const ResolvedTaskBinding: ResolvedTaskBinding;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding.ts#L19)

### resolveBinding

Compatibility alias for task-to-job binding resolution.

**Throws**

JobBindingResolutionError for invalid or ambiguous bindings.

**Example**

```ts
resolveBinding({ task, implicitName: "send" });
```

**Signature**

```ts
declare const resolveBinding: (options: ResolveBindingOptions) => ResolvedTaskBinding;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding.ts#L118)

### resolveTaskBinding

Synchronous compatibility resolver for one task.

**Throws**

JobBindingResolutionError on ambiguity or invalid selector.

**Example**

```ts
resolveTaskBinding(options);
```

**Signature**

```ts
declare const resolveTaskBinding: (options: ResolveBindingOptions) => ResolvedTaskBinding;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding.ts#L54)

### resolveTaskBindingEffect

Resolves an explicit, default, or private implicit job in Effect.

**Example**

```ts
Effect.runSync(resolveTaskBindingEffect(options));
```

**Signature**

```ts
declare const resolveTaskBindingEffect: (
  options: ResolveBindingOptions,
) => Effect.Effect<ResolvedTaskBinding, JobBindingFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding.ts#L34)

## `resolve-binding.types.ts`

### BindingSource (type alias)

How a task selected its job binding.

**Signature**

```ts
type BindingSource = "explicit" | "default" | "implicit";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding.types.ts#L5)

### JobBindingErrorCode (type alias)

Machine-readable reason for a binding resolution failure.

**Signature**

```ts
type JobBindingErrorCode =
  | "MISSING_IMPLICIT_NAME"
  | "INVALID_IMPLICIT_NAME"
  | "TASK_SELECTOR_MISMATCH"
  | "UNKNOWN_JOB_SELECTOR"
  | "AMBIGUOUS_JOB"
  | "DUPLICATE_JOB_ID"
  | "MULTIPLE_DEFAULT_JOBS"
  | "MISSING_JOB_PROFILE"
  | "AMBIGUOUS_JOB_PROFILE"
  | "UNKNOWN_JOB_PROFILE";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding.types.ts#L33)

### ResolveBindingOptions (interface)

Inputs for resolving one task to its executable job.

**Signature**

```ts
export interface ResolveBindingOptions {
  readonly task: TaskRefAny;
  readonly jobs?: readonly JobDescriptorAny[];
  readonly selector?: JobDescriptorAny | JobRefAny;
  readonly implicitName?: string;
  readonly profiles?: readonly string[] | Readonly<Record<string, unknown>>;
  readonly defaultProfile?: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding.types.ts#L8)

### ResolvedTaskBinding (interface)

Canonical task-to-job selection returned by the binding resolver.

**Signature**

```ts
export interface ResolvedTaskBinding {
  readonly taskId: string;
  readonly taskVersion?: string;
  readonly jobId: string;
  readonly name: string;
  readonly service?: string;
  readonly profile: string;
  readonly source: BindingSource;
  readonly implicit: boolean;
  readonly default: boolean;
  readonly private: boolean;
  readonly job?: JobDescriptorAny;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/resolve-binding.types.ts#L18)

## `retry-policy.ts`

### RetryPolicyValidationError (class)

An invalid authored legacy retry policy.

**Example**

```ts
new RetryPolicyValidationError({ reason: "retry.maxAttempts must be positive" });
```

**Signature**

```ts
declare class RetryPolicyValidationError
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/retry-policy.ts#L8)

### validateRetry

Synchronous legacy retry policy validator.

**Throws**

TypeError when any retry field is invalid.

**Example**

```ts
validateRetry({ maxAttempts: 2, initialDelayMs: 0, maxDelayMs: 0, multiplier: 1, jitter: "none" });
```

**Signature**

```ts
declare const validateRetry: (value: LegacyRetryPolicy) => LegacyRetryPolicy;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/retry-policy.ts#L46)

### validateRetryEffect

Validates legacy retry policy fields in Effect.

**Example**

```ts
Effect.runPromise(
  validateRetryEffect({
    maxAttempts: 2,
    initialDelayMs: 0,
    maxDelayMs: 0,
    multiplier: 1,
    jitter: "none",
  }),
);
```

**Signature**

```ts
declare const validateRetryEffect: (value: RetryPolicy) => Effect.Effect<
  Readonly<{
    maxAttempts: number;
    initialDelayMs: number;
    maxDelayMs: number;
    multiplier: number;
    jitter: RetryJitter;
  }>,
  RetryPolicyValidationError,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/retry-policy.ts#L18)

## `retry-policy.types.ts`

### LegacyRetryPolicy (type alias)

Legacy authored retry policy accepted by the validation boundary.

**Signature**

```ts
type LegacyRetryPolicy = RetryPolicy;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/retry-policy.types.ts#L4)

## `run-id-codec.ts`

### createRunLocatorValue

Serializes and signs a validated run locator payload.

**Throws**

RunLocatorError when keys, payload, or encoded length are invalid.

**Example**

```ts
createRunLocatorValue({ keyRing, payload });
```

**Signature**

```ts
declare const createRunLocatorValue: (options: RunLocatorCreateOptions) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-codec.ts#L25)

### rotateRunLocatorKeysValue

Adds a signing key while retaining prior keys for existing locators.

**Throws**

RunLocatorError when the ring or new key identifier is invalid.

**Example**

```ts
rotateRunLocatorKeysValue(keyRing, "v2", "new-secret");
```

**Signature**

```ts
declare const rotateRunLocatorKeysValue: (
  ring: RunLocatorKeyRing,
  keyId: string,
  secret: string | Uint8Array,
) => RunLocatorKeyRing;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-codec.ts#L98)

### verifyRunLocatorValue

Verifies a locator signature, payload, and requested deployment namespace.

**Throws**

RunLocatorError on malformed encoding, signature, or namespace.

**Example**

```ts
verifyRunLocatorValue(locator, { keyRing, application: "shop" });
```

**Signature**

```ts
declare const verifyRunLocatorValue: (
  locator: string,
  options: RunLocatorVerifyOptions,
) => VerifiedRunLocator;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-codec.ts#L46)

## `run-id-errors.ts`

Compatibility error for an invalid, unauthenticated, or unroutable locator.

**Example**

```ts
throw new RunLocatorError();
```

### RunLocatorError (class)

Compatibility error for an invalid, unauthenticated, or unroutable locator.

**Example**

```ts
throw new RunLocatorError();
```

**Signature**

```ts
declare class RunLocatorError {
  constructor();
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-errors.ts#L4)

### code (property)

**Signature**

```ts
readonly code: "RELKIT_JOB_LOCATOR_INVALID"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-errors.ts#L5)

## `run-id-router-store.ts`

### RunLocatorGenerationStorage (class)

Injectable persistence service for historical run locator generations.

**Example**

```ts
Effect.provide(RunLocatorRouter.fromStoreEffect(), runLocatorStoreLayer(store));
```

**Signature**

```ts
declare class RunLocatorGenerationStorage
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router-store.ts#L6)

### RunLocatorStoreFailure (class)

Failure from generation persistence, preserving the original cause.

**Example**

```ts
if (error instanceof RunLocatorStoreFailure) console.log(error.message);
```

**Signature**

```ts
declare class RunLocatorStoreFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router-store.ts#L21)

### runLocatorStoreLayer

Provides a concrete generation store to Effect operations.

**Example**

```ts
runLocatorStoreLayer(memoryStore);
```

**Signature**

```ts
declare const runLocatorStoreLayer: (
  store: RunLocatorGenerationStore,
) => Layer.Layer<RunLocatorGenerationStorage, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router-store.ts#L15)

## `run-id-router.ts`

### RunLocatorGeneration

**Signature**

```ts
declare const RunLocatorGeneration: RunLocatorGeneration;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router.ts#L16)

### RunLocatorGenerationStorage

**Signature**

```ts
declare const RunLocatorGenerationStorage: typeof RunLocatorGenerationStorage;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router.ts#L18)

### RunLocatorGenerationStore

**Signature**

```ts
declare const RunLocatorGenerationStore: RunLocatorGenerationStore;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router.ts#L16)

### RunLocatorRouter (class)

Routes signed run locators through retained service generations.

**Example**

```ts
new RunLocatorRouter([{ generation: "v1", keyRing }]);
```

**Signature**

```ts
declare class RunLocatorRouter {
  constructor(generations: readonly RunLocatorGeneration[] = []);
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router.ts#L25)

### fromStore (static method)

Promise compatibility loader.

**Throws**

The original storage error.

**Example**

```ts
await RunLocatorRouter.fromStore(store);
```

**Signature**

```ts
declare const fromStore: (store: RunLocatorGenerationStore) => Promise<RunLocatorRouter>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router.ts#L59)

### register (method)

Synchronous generation registration.

**Throws**

RunLocatorError for invalid generation or keys.

**Example**

```ts
router.register("v2", ring);
```

**Signature**

```ts
declare const register: (generation: string, keyRing: RunLocatorKeyRing) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router.ts#L99)

### snapshot (method)

Synchronous snapshot of retained generations.

**Example**

```ts
router.snapshot();
```

**Signature**

```ts
declare const snapshot: () => readonly RunLocatorGeneration[];
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router.ts#L123)

### persist (method)

Promise compatibility persistence.

**Throws**

The original storage error.

**Example**

```ts
await router.persist(store);
```

**Signature**

```ts
declare const persist: (store: RunLocatorGenerationStore) => Promise<void>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router.ts#L151)

### route (method)

Synchronously routes a signed locator.

**Throws**

RunLocatorError when no retained generation matches.

**Example**

```ts
router.route(locator);
```

**Signature**

```ts
declare const route: (
  locator: string,
  options?: Omit<RunLocatorVerifyOptions, "keyRing">,
) => VerifiedRunLocator;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router.ts#L188)

### registerEffect (property)

Registers a generation in Effect.

**Example**

```ts
Effect.runSync(router.registerEffect("v2", ring));
```

**Signature**

```ts
readonly registerEffect: (generation: string, keyRing: RunLocatorKeyRing) => Effect.Effect<void, RunLocatorFailure, never>
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router.ts#L74)

### snapshotEffect (property)

Returns a sorted frozen snapshot in Effect.

**Example**

```ts
Effect.runSync(router.snapshotEffect());
```

**Signature**

```ts
readonly snapshotEffect: () => Effect.Effect<ReadonlyArray<Readonly<{ generation: string; keyRing: RunLocatorKeyRing; }>>, never, never>
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router.ts#L107)

### persistEffect (property)

Persists the current snapshot through the storage service.

**Example**

```ts
Effect.runPromise(Effect.provide(router.persistEffect(), runLocatorStoreLayer(store)));
```

**Signature**

```ts
readonly persistEffect: () => Effect.Effect<void, RunLocatorStoreFailure, RunLocatorGenerationStorage>
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router.ts#L130)

### routeEffect (property)

Routes a locator through retained generations in Effect.

**Example**

```ts
Effect.runSync(router.routeEffect(locator));
```

**Signature**

```ts
readonly routeEffect: (locator: string, options?: Omit<RunLocatorVerifyOptions, "keyRing"> | undefined) => Effect.Effect<VerifiedRunLocator, RunLocatorFailure, never>
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router.ts#L163)

### RunLocatorStoreFailure

**Signature**

```ts
declare const RunLocatorStoreFailure: typeof RunLocatorStoreFailure;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router.ts#L19)

### runLocatorStoreLayer

**Signature**

```ts
declare const runLocatorStoreLayer: (
  store: RunLocatorGenerationStore,
) => Layer<RunLocatorGenerationStorage, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router.ts#L20)

## `run-id-router.types.ts`

### RunLocatorGeneration (interface)

One retained service generation and its locator verification keys.

**Signature**

```ts
export interface RunLocatorGeneration {
  readonly generation: string;
  readonly keyRing: RunLocatorKeyRing;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router.types.ts#L3)

### RunLocatorGenerationStore (interface)

Replaceable persistence boundary for locator generations.

**Signature**

```ts
export interface RunLocatorGenerationStore {
  readonly load: () => readonly RunLocatorGeneration[] | Promise<readonly RunLocatorGeneration[]>;
  readonly save: (generations: readonly RunLocatorGeneration[]) => void | Promise<void>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-router.types.ts#L8)

## `run-id-support.ts`

### assertSegment

Validates a bounded printable locator key identifier.

**Throws**

RunLocatorError for unsupported characters or length.

**Example**

```ts
assertSegment("key-v1");
```

**Signature**

```ts
declare const assertSegment: (value: string) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-support.ts#L102)

### isBase64Url

Checks canonical unpadded base64url encoding for one locator segment.

**Example**

```ts
isBase64Url("YQ");
```

**Signature**

```ts
declare const isBase64Url: (value: string | undefined) => value is string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-support.ts#L87)

### namespaceHash

Hashes the trusted deployment namespace used to bind durable run locators.

**Throws**

RunLocatorError when an identity is empty or exceeds its byte limit.

**Example**

```ts
namespaceHash("shop", "production", "orders");
```

**Signature**

```ts
declare const namespaceHash: (application: string, environment: string, scope: string) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-support.ts#L13)

### normalizePayload

Validates and freezes the payload before it is signed or returned to callers.

**Throws**

RunLocatorError for malformed identities or a mismatched namespace.

**Example**

```ts
normalizePayload(payload);
```

**Signature**

```ts
declare const normalizePayload: (value: RunLocatorPayload) => RunLocatorPayload;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-support.ts#L26)

### validateRunLocatorKeyRing

Verifies the active key and every key identifier and secret in a key ring.

**Throws**

RunLocatorError for missing, oversized, or malformed keys.

**Example**

```ts
validateRunLocatorKeyRing({ activeKeyId: "v1", keys: { v1: "secret" } });
```

**Signature**

```ts
declare const validateRunLocatorKeyRing: (ring: RunLocatorKeyRing) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id-support.ts#L71)

## `run-id.ts`

### RUN_LOCATOR_MAX_BYTES

Maximum encoded locator size accepted at the jobs boundary.

**Example**

```ts
locator.length <= RUN_LOCATOR_MAX_BYTES;
```

**Signature**

```ts
declare const RUN_LOCATOR_MAX_BYTES: 4096;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L36)

### RUN_LOCATOR_VERSION

Wire format version for signed run locators.

**Example**

```ts
RUN_LOCATOR_VERSION === 1;
```

**Signature**

```ts
declare const RUN_LOCATOR_VERSION: 1;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L32)

### RunLocatorCreateOptions

**Signature**

```ts
declare const RunLocatorCreateOptions: RunLocatorCreateOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L14)

### RunLocatorError

**Signature**

```ts
declare const RunLocatorError: typeof RunLocatorError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L28)

### RunLocatorFailure (class)

Invalid signed run locator or key rotation.

**Example**

```ts
if (error instanceof RunLocatorFailure) console.log(error.message);
```

**Signature**

```ts
declare class RunLocatorFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L40)

### RunLocatorKeyRing

**Signature**

```ts
declare const RunLocatorKeyRing: RunLocatorKeyRing;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L12)

### RunLocatorKeyRingStore

**Signature**

```ts
declare const RunLocatorKeyRingStore: RunLocatorKeyRingStore;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L13)

### RunLocatorPayload

**Signature**

```ts
declare const RunLocatorPayload: RunLocatorPayload;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L11)

### RunLocatorVerifyOptions

**Signature**

```ts
declare const RunLocatorVerifyOptions: RunLocatorVerifyOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L15)

### VerifiedRunLocator

**Signature**

```ts
declare const VerifiedRunLocator: VerifiedRunLocator;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L16)

### createRunLocator

Synchronously signs a run locator.

**Throws**

RunLocatorError when the payload or key ring is invalid.

**Example**

```ts
createRunLocator({ payload, keyRing });
```

**Signature**

```ts
declare const createRunLocator: (options: RunLocatorCreateOptions) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L108)

### createRunLocatorEffect

Signs a run locator in Effect.

**Example**

```ts
Effect.runSync(createRunLocatorEffect({ payload, keyRing }));
```

**Signature**

```ts
declare const createRunLocatorEffect: (
  options: RunLocatorCreateOptions,
) => Effect.Effect<string, RunLocatorFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L95)

### decodeRunLocator

Compatibility alias for verifyRunLocator.

**Example**

```ts
decodeRunLocator(locator, { keyRing });
```

**Signature**

```ts
declare const decodeRunLocator: (
  locator: string,
  options: RunLocatorVerifyOptions,
) => VerifiedRunLocator;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L144)

### encodeRunLocator

Compatibility alias for createRunLocator.

**Example**

```ts
encodeRunLocator({ payload, keyRing });
```

**Signature**

```ts
declare const encodeRunLocator: (options: RunLocatorCreateOptions) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L140)

### namespaceHash

Synchronously hashes a trusted deployment namespace.

**Throws**

RunLocatorError for invalid identities.

**Example**

```ts
namespaceHash("shop", "production", "orders");
```

**Signature**

```ts
declare const namespaceHash: (application: string, environment: string, scope: string) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L66)

### namespaceHashEffect

Hashes a trusted deployment namespace in Effect.

**Example**

```ts
Effect.runSync(namespaceHashEffect("shop", "production", "orders"));
```

**Signature**

```ts
declare const namespaceHashEffect: (
  application: string,
  environment: string,
  scope: string,
) => Effect.Effect<string, RunLocatorFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L51)

### rotateRunLocatorKeys

Synchronously rotates a locator signing key.

**Throws**

RunLocatorError when the ring or key identifier is invalid.

**Example**

```ts
rotateRunLocatorKeys(ring, "v2", secret);
```

**Signature**

```ts
declare const rotateRunLocatorKeys: (
  ring: RunLocatorKeyRing,
  keyId: string,
  secret: string | Uint8Array,
) => RunLocatorKeyRing;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L167)

### rotateRunLocatorKeysEffect

Rotates the active locator signing key in Effect.

**Example**

```ts
Effect.runSync(rotateRunLocatorKeysEffect(ring, "v2", secret));
```

**Signature**

```ts
declare const rotateRunLocatorKeysEffect: (
  ring: RunLocatorKeyRing,
  keyId: string,
  secret: string | Uint8Array<ArrayBufferLike>,
) => Effect.Effect<RunLocatorKeyRing, RunLocatorFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L152)

### validateRunLocatorKeyRing

Synchronously validates a locator key ring.

**Throws**

RunLocatorError for invalid keys or IDs.

**Example**

```ts
validateRunLocatorKeyRing(ring);
```

**Signature**

```ts
declare const validateRunLocatorKeyRing: (ring: RunLocatorKeyRing) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L87)

### validateRunLocatorKeyRingEffect

Validates a locator key ring in Effect.

**Example**

```ts
Effect.runSync(validateRunLocatorKeyRingEffect(ring));
```

**Signature**

```ts
declare const validateRunLocatorKeyRingEffect: (
  ring: RunLocatorKeyRing,
) => Effect.Effect<void, RunLocatorFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L74)

### verifyRunLocator

Synchronously verifies a signed run locator.

**Throws**

RunLocatorError when the locator is invalid or has another namespace.

**Example**

```ts
verifyRunLocator(locator, { keyRing });
```

**Signature**

```ts
declare const verifyRunLocator: (
  locator: string,
  options: RunLocatorVerifyOptions,
) => VerifiedRunLocator;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L131)

### verifyRunLocatorEffect

Verifies a run locator in Effect.

**Example**

```ts
Effect.runSync(verifyRunLocatorEffect(locator, { keyRing }));
```

**Signature**

```ts
declare const verifyRunLocatorEffect: (
  locator: string,
  options: RunLocatorVerifyOptions,
) => Effect.Effect<VerifiedRunLocator, RunLocatorFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.ts#L117)

## `run-id.types.ts`

Signed run identity and namespace fields carried by a locator.

### RunLocatorCreateOptions (interface)

Options accepted for run locator create operations.

**Signature**

```ts
export interface RunLocatorCreateOptions {
  readonly payload: RunLocatorPayload;
  readonly keyRing: RunLocatorKeyRing;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.types.ts#L27)

### RunLocatorKeyRing (interface)

Signing and verification keys for run locators.

**Signature**

```ts
export interface RunLocatorKeyRing {
  readonly activeKeyId: string;
  readonly keys: Readonly<Record<string, string | Uint8Array>>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.types.ts#L17)

### RunLocatorKeyRingStore (interface)

Store of key rings used during locator rotation.

**Signature**

```ts
export interface RunLocatorKeyRingStore {
  readonly load: () => RunLocatorKeyRing | Promise<RunLocatorKeyRing>;
  readonly save: (ring: RunLocatorKeyRing) => void | Promise<void>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.types.ts#L22)

### RunLocatorPayload (interface)

Signed run identity and namespace fields carried by a locator.

**Signature**

```ts
export interface RunLocatorPayload {
  readonly application: string;
  readonly environment: string;
  readonly serviceGeneration: string;
  readonly jobId: string;
  readonly taskId: string;
  readonly taskVersion: string;
  readonly buildId: string;
  /** Accepted only while creating a locator; the clear-text scope is never encoded. */
  readonly scope?: string;
  readonly namespaceHash?: string;
  readonly schemaHash?: string;
  readonly native: { readonly kind: string; readonly value: string };
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.types.ts#L2)

### RunLocatorVerifyOptions (interface)

Options accepted for run locator verify operations.

**Signature**

```ts
export interface RunLocatorVerifyOptions {
  readonly keyRing: RunLocatorKeyRing;
  readonly application?: string;
  readonly environment?: string;
  readonly scope?: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.types.ts#L32)

### VerifiedRunLocator (interface)

Decoded signed locator with trusted namespace and run identity.

**Signature**

```ts
export interface VerifiedRunLocator extends RunLocatorPayload {
  readonly keyId: string;
  readonly version: 1;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/run-id.types.ts#L39)

## `runtime-context.ts`

### JobsRuntimeCallbackError (class)

Failure raised by a callback executed inside an ambient runtime.

**Example**

```ts
if (error instanceof JobsRuntimeCallbackError) console.log(error.message);
```

**Signature**

```ts
declare class JobsRuntimeCallbackError
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime-context.ts#L15)

### JobsRuntimeError (class)

Invalid runtime configuration or missing ambient runtime.

**Example**

```ts
if (error instanceof JobsRuntimeError) console.log(error.message);
```

**Signature**

```ts
declare class JobsRuntimeError
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime-context.ts#L9)

### currentJobsRuntime

Reads the ambient runtime synchronously.

**Example**

```ts
currentJobsRuntime();
```

**Signature**

```ts
declare const currentJobsRuntime: () => JobsRuntime | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime-context.ts#L33)

### currentJobsRuntimeEffect

Reads the ambient runtime in Effect.

**Example**

```ts
Effect.runSync(currentJobsRuntimeEffect());
```

**Signature**

```ts
declare const currentJobsRuntimeEffect: () => Effect.Effect<JobsRuntime | undefined, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime-context.ts#L23)

### requireJobsRuntime

Requires an ambient runtime synchronously.

**Throws**

Error when no runtime is bound.

**Example**

```ts
requireJobsRuntime();
```

**Signature**

```ts
declare const requireJobsRuntime: () => JobsRuntime;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime-context.ts#L54)

### requireJobsRuntimeEffect

Requires an ambient runtime in Effect.

**Example**

```ts
Effect.runSync(requireJobsRuntimeEffect());
```

**Signature**

```ts
declare const requireJobsRuntimeEffect: () => Effect.Effect<JobsRuntime, JobsRuntimeError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime-context.ts#L40)

### runInJobsRuntime

Runs a callback with a runtime bound to its async context.

**Throws**

The original callback error, if it throws.

**Example**

```ts
runInJobsRuntime(runtime, () => requireJobsRuntime());
```

**Signature**

```ts
declare const runInJobsRuntime: <A>(runtime: JobsRuntime, callback: () => A) => A;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime-context.ts#L82)

### runInJobsRuntimeEffect

Runs a callback with the given ambient runtime in Effect.

**Example**

```ts
Effect.runSync(runInJobsRuntimeEffect(runtime, () => requireJobsRuntime()));
```

**Signature**

```ts
declare const runInJobsRuntimeEffect: <A>(
  runtime: JobsRuntime,
  callback: () => A,
) => Effect.Effect<A, JobsRuntimeCallbackError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime-context.ts#L65)

### runWithJobsRuntime

Alias of runInJobsRuntime.

**Throws**

The original callback error.

**Example**

```ts
runWithJobsRuntime(runtime, () => 1);
```

**Signature**

```ts
declare const runWithJobsRuntime: <A>(runtime: JobsRuntime, callback: () => A) => A;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime-context.ts#L101)

### runWithJobsRuntimeEffect

Alias of runInJobsRuntimeEffect.

**Example**

```ts
Effect.runSync(runWithJobsRuntimeEffect(runtime, () => 1));
```

**Signature**

```ts
declare const runWithJobsRuntimeEffect: <A>(
  runtime: JobsRuntime,
  callback: () => A,
) => Effect.Effect<A, JobsRuntimeCallbackError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime-context.ts#L93)

## `runtime-selection-value.ts`

### resolveBindingValue

Selects a task's job from the runtime manifest and validates its build binding.

**Throws**

TypeError for missing, ambiguous, or mismatched bindings.

**Example**

```ts
resolveBindingValue(task, undefined, options);
```

**Signature**

```ts
declare const resolveBindingValue: (
  task: TaskRefAny,
  selector: JobRefAny | undefined,
  options: JobsRuntimeOptions,
) => JobsRuntimeBinding;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime-selection-value.ts#L12)

## `runtime-selection.ts`

### RuntimeBindingFailure (class)

Invalid manifest or selector resolution for a runtime binding.

**Example**

```ts
if (error instanceof RuntimeBindingFailure) console.log(error.message);
```

**Signature**

```ts
declare class RuntimeBindingFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime-selection.ts#L9)

### resolveBinding

Synchronous runtime binding resolver.

**Throws**

TypeError for ambiguous or unknown jobs.

**Example**

```ts
resolveBinding(task, undefined, options);
```

**Signature**

```ts
declare const resolveBinding: (
  task: TaskRefAny,
  selector: JobRefAny | undefined,
  options: JobsRuntimeOptions,
) => JobsRuntimeBinding;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime-selection.ts#L42)

### resolveBindingEffect

Resolves a task's runtime binding in Effect.

**Example**

```ts
Effect.runSync(resolveBindingEffect(task, undefined, options));
```

**Signature**

```ts
declare const resolveBindingEffect: (
  task: TaskRefAny,
  selector: JobRefAny | undefined,
  options: JobsRuntimeOptions,
) => Effect.Effect<JobsRuntimeBinding, RuntimeBindingFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime-selection.ts#L20)

## `runtime.ts`

### JobsManifestLike

**Signature**

```ts
declare const JobsManifestLike: JobsManifestLike;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L37)

### JobsOperationOptions

**Signature**

```ts
declare const JobsOperationOptions: JobsOperationOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L38)

### JobsRuntime

**Signature**

```ts
declare const JobsRuntime: JobsRuntime;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L39)

### JobsRuntimeBinding

**Signature**

```ts
declare const JobsRuntimeBinding: JobsRuntimeBinding;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L41)

### JobsRuntimeCallbackError

**Signature**

```ts
declare const JobsRuntimeCallbackError: typeof JobsRuntimeCallbackError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L19)

### JobsRuntimeError

**Signature**

```ts
declare const JobsRuntimeError: typeof JobsRuntimeError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L18)

### JobsRuntimeOptions

**Signature**

```ts
declare const JobsRuntimeOptions: JobsRuntimeOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L40)

### NativeLocator

**Signature**

```ts
declare const NativeLocator: string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L129)

### TaskDescriptorAny

**Signature**

```ts
declare const TaskDescriptorAny: TaskDescriptorAny;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L130)

### createJobsRuntime

Synchronously creates a validated jobs runtime.

**Throws**

TypeError or JobsCapabilityError for invalid configuration.

**Example**

```ts
createJobsRuntime({ adapter });
```

**Signature**

```ts
declare const createJobsRuntime: (options: JobsRuntimeOptions) => JobsRuntime;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L66)

### createJobsRuntimeEffect

Creates a validated jobs runtime in Effect.

**Example**

```ts
Effect.runSync(createJobsRuntimeEffect({ adapter }));
```

**Signature**

```ts
declare const createJobsRuntimeEffect: (
  options: JobsRuntimeOptions,
) => Effect.Effect<
  JobsRuntime,
  JobsCapabilityFailure | JobsAdapterValidationError | JobsRuntimeError,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L48)

### currentJobsRuntime

**Signature**

```ts
declare const currentJobsRuntime: () => JobsRuntime | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L20)

### currentJobsRuntimeEffect

**Signature**

```ts
declare const currentJobsRuntimeEffect: () => Effect.Effect<JobsRuntime | undefined, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L21)

### requireJobsRuntime

**Signature**

```ts
declare const requireJobsRuntime: () => JobsRuntime;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L22)

### requireJobsRuntimeEffect

**Signature**

```ts
declare const requireJobsRuntimeEffect: () => Effect.Effect<JobsRuntime, JobsRuntimeError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L23)

### runInJobsRuntime

**Signature**

```ts
declare const runInJobsRuntime: <A>(runtime: JobsRuntime, callback: () => A) => A;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L24)

### runInJobsRuntimeEffect

**Signature**

```ts
declare const runInJobsRuntimeEffect: <A>(
  runtime: JobsRuntime,
  callback: () => A,
) => Effect.Effect<A, JobsRuntimeCallbackError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L25)

### runWithJobsRuntime

**Signature**

```ts
declare const runWithJobsRuntime: <A>(runtime: JobsRuntime, callback: () => A) => A;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L26)

### runWithJobsRuntimeEffect

**Signature**

```ts
declare const runWithJobsRuntimeEffect: <A>(
  runtime: JobsRuntime,
  callback: () => A,
) => Effect.Effect<A, JobsRuntimeCallbackError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.ts#L27)

## `runtime.types.ts`

### JobsManifestLike (interface)

Minimal manifest fields used to resolve authored jobs and tasks.

**Signature**

```ts
export interface JobsManifestLike {
  readonly protocol?: string;
  readonly version?: number;
  readonly app?: string;
  readonly environment?: string;
  readonly jobsProtocolVersion?: number;
  readonly tasks?: readonly {
    readonly id: string;
    readonly version?: string;
    readonly buildId?: string;
    readonly schemaHashes?: unknown;
    readonly policy?: unknown;
  }[];
  readonly jobs?: readonly {
    readonly id: string;
    readonly name: string;
    readonly taskId: string;
    readonly taskVersion?: string;
    readonly buildId?: string;
    readonly profile?: string;
    readonly serviceGeneration?: string;
    readonly default?: boolean;
  }[];
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.types.ts#L12)

### JobsOperationOptions (type alias)

Caller signal and trusted metadata passed to a native jobs operation.

**Signature**

```ts
type JobsOperationOptions = Pick<OperationContext, "signal"> &
  Partial<
    Pick<
      OperationContext,
      | "scope"
      | "operationId"
      | "deadlineMs"
      | "correlationId"
      | "parentRunId"
      | "propagation"
      | "acceptanceIdentity"
      | "occurrenceIdentity"
      | "inputSchemaHash"
      | "retryOfRunId"
    >
  >;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.types.ts#L67)

### JobsRuntime (interface)

Validated runtime bindings and provider access for job operations.

**Signature**

```ts
export interface JobsRuntime {
  readonly adapter: JobsAdapterRuntime;
  readonly capabilities: JobsCapabilityReport;
  readonly application: string;
  readonly environment: string;
  readonly scope: string;
  readonly service: string;
  readonly serviceGeneration: string;
  readonly manifest?: JobsManifestLike;
  readonly jobs?: readonly JobDescriptorAny[];
  readonly taskExecutor?: TaskExecutor;
  readonly tasks?: readonly TaskDescriptorAny[];
  readonly resolveBinding: (task: TaskRefAny, selector?: JobRefAny) => JobsRuntimeBinding;
  readonly operationContext: (options: JobsOperationOptions) => OperationContext;
  readonly close: () => Promise<void>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.types.ts#L84)

### JobsRuntimeBinding (interface)

Resolved task, job, service, and build identity pinned for one run.

**Signature**

```ts
export interface JobsRuntimeBinding {
  readonly taskId: string;
  readonly taskVersion: string;
  readonly jobId: string;
  readonly name: string;
  readonly profile: string;
  readonly service: string;
  readonly serviceGeneration: string;
  readonly buildId: string;
  readonly inputSchemaHash?: string;
  readonly scope?: string;
  readonly policy?: unknown;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.types.ts#L37)

### JobsRuntimeOptions (interface)

Provider, manifest, and authored descriptors used to create a jobs runtime.

**Signature**

```ts
export interface JobsRuntimeOptions {
  readonly adapter?: unknown;
  readonly provider?: unknown;
  readonly providerHandle?: { readonly value: unknown };
  readonly capabilities?: JobsCapabilityReport;
  readonly application?: string;
  readonly environment?: string;
  readonly scope?: string;
  readonly service?: string;
  readonly serviceGeneration?: string;
  readonly manifest?: JobsManifestLike;
  readonly jobs?: readonly JobDescriptorAny[];
  readonly taskExecutor?: TaskExecutor;
  readonly tasks?: readonly TaskDescriptorAny[];
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/runtime.types.ts#L51)

## `schedule-controls-operations.ts`

### ScheduleOperationFailure (class)

Expected native schedule operation failure with its compatibility cause.

**Example**

```ts
new ScheduleOperationFailure({ cause: new Error("provider rejected") });
```

**Signature**

```ts
declare class ScheduleOperationFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-controls-operations.ts#L27)

### getScheduleOperationEffect

Reads one bounded native schedule in Effect.

**Example**

```ts
Effect.runPromise(getScheduleOperationEffect(runtime, schedule, "hourly"));
```

**Signature**

```ts
declare const getScheduleOperationEffect: (
  runtime: JobsRuntime,
  schedule: NativeScheduleOperations,
  id: string,
  signal?: AbortSignal | undefined,
) => Effect.Effect<
  ScheduleReadReceipt<ScheduleDefinition<unknown>>,
  ScheduleOperationFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-controls-operations.ts#L74)

### listSchedulesOperationEffect

Lists bounded native schedules in Effect.

**Example**

```ts
Effect.runPromise(listSchedulesOperationEffect(runtime, schedule));
```

**Signature**

```ts
declare const listSchedulesOperationEffect: (
  runtime: JobsRuntime,
  schedule: NativeScheduleOperations,
  options?: ScheduleListOptions | undefined,
) => Effect.Effect<
  ScheduleReadReceipt<ScheduleDefinition<unknown>>,
  ScheduleOperationFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-controls-operations.ts#L38)

### writeScheduleOperationEffect

Validates and performs one idempotent native schedule write in Effect.

**Example**

```ts
Effect.runPromise(writeScheduleOperationEffect(runtime, schedule, definition, options, "upsert"));
```

**Signature**

```ts
declare const writeScheduleOperationEffect: (
  runtime: JobsRuntime,
  schedule: NativeScheduleOperations,
  value: string | ScheduleDefinition,
  options: ScheduleWriteOptions,
  operation: "delete" | "upsert" | "pause" | "resume",
) => Effect.Effect<Readonly<ScheduleWriteReceipt>, ScheduleOperationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-controls-operations.ts#L104)

## `schedule-controls-value.ts`

### boundedCursor

Validates a native schedule pagination cursor byte limit.

**Throws**

RangeError when the cursor exceeds 4096 UTF-8 bytes.

**Example**

```ts
boundedCursor("next-page");
```

**Signature**

```ts
declare const boundedCursor: (value: string) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-controls-value.ts#L68)

### boundedId

Validates schedule and operation identifiers against the byte limit.

**Throws**

TypeError for missing or oversized identifiers.

**Example**

```ts
boundedId("hourly");
```

**Signature**

```ts
declare const boundedId: (value: string) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-controls-value.ts#L53)

### idleSignal

Creates a nonaborted signal when a caller did not supply one.

**Example**

```ts
idleSignal().aborted;
```

**Signature**

```ts
declare const idleSignal: () => AbortSignal;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-controls-value.ts#L77)

### isOutcome

Checks the known native schedule write outcomes.

**Example**

```ts
isOutcome("paused");
```

**Signature**

```ts
declare const isOutcome: (value: unknown) => boolean;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-controls-value.ts#L20)

### isRecord

Tests for a nonarray native response record.

**Example**

```ts
isRecord({ outcome: "available" });
```

**Signature**

```ts
declare const isRecord: (value: unknown) => value is Record<string, unknown>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-controls-value.ts#L44)

### isUnknown

Recognizes an uncertain native schedule write for recovery.

**Example**

```ts
isUnknown({ operationId: "op", outcome: "unknown" });
```

**Signature**

```ts
declare const isUnknown: (value: unknown) => value is UnknownControlOutcome;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-controls-value.ts#L36)

### normalizeRead

Freezes a valid native schedule read receipt.

**Throws**

TypeError for an unrecognized outcome.

**Example**

```ts
normalizeRead({ outcome: "unavailable" });
```

**Signature**

```ts
declare const normalizeRead: (value: unknown) => ScheduleReadReceipt;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-controls-value.ts#L9)

## `schedule-controls.ts`

### JobScheduleControlFailure (class)

A native schedule operation failed or returned an invalid receipt.

**Example**

```ts
if (error instanceof JobScheduleControlFailure) console.log(error.message);
```

**Signature**

```ts
declare class JobScheduleControlFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-controls.ts#L22)

### createScheduleControls

Synchronous schedule facade factory.

**Throws**

JobsCapabilityError when native schedules are unavailable.

**Example**

```ts
createScheduleControls(runtime);
```

**Signature**

```ts
declare const createScheduleControls: (runtime?: JobsRuntime) => JobScheduleClient;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-controls.ts#L64)

### createScheduleControlsEffect

Creates a schedule facade in Effect.

**Example**

```ts
Effect.runSync(createScheduleControlsEffect(runtime));
```

**Signature**

```ts
declare const createScheduleControlsEffect: (
  runtime: JobsRuntime,
) => Effect.Effect<
  JobScheduleClient<ScheduleDefinition<unknown>>,
  JobScheduleControlFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-controls.ts#L31)

### getScheduleEffect

Reads a single native schedule in Effect.

**Example**

```ts
Effect.runPromise(getScheduleEffect(runtime, schedule, "hourly"));
```

**Signature**

```ts
declare const getScheduleEffect: (
  runtime: JobsRuntime,
  schedule: NativeScheduleOperations,
  id: string,
  signal?: AbortSignal | undefined,
) => Effect.Effect<
  ScheduleReadReceipt<ScheduleDefinition<unknown>>,
  JobScheduleControlFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-controls.ts#L94)

### listSchedulesEffect

Lists native schedules in Effect.

**Example**

```ts
Effect.runPromise(listSchedulesEffect(runtime, schedule));
```

**Signature**

```ts
declare const listSchedulesEffect: (
  runtime: JobsRuntime,
  schedule: NativeScheduleOperations,
  options?: ScheduleListOptions | undefined,
) => Effect.Effect<
  ScheduleReadReceipt<ScheduleDefinition<unknown>>,
  JobScheduleControlFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-controls.ts#L76)

### writeScheduleEffect

Writes or changes a native schedule in Effect.

**Example**

```ts
Effect.runPromise(writeScheduleEffect(runtime, schedule, definition, options, "upsert"));
```

**Signature**

```ts
declare const writeScheduleEffect: (
  runtime: JobsRuntime,
  schedule: NativeScheduleOperations,
  value: string | ScheduleDefinition,
  options: ScheduleWriteOptions,
  operation: "delete" | "upsert" | "pause" | "resume",
) => Effect.Effect<Readonly<ScheduleWriteReceipt>, JobScheduleControlFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-controls.ts#L113)

## `schedule-reconciliation-identity.ts`

### scheduleOperationId

Synchronous idempotent native operation identity.

**Example**

```ts
scheduleOperationId(options, "hourly");
```

**Signature**

```ts
declare const scheduleOperationId: (
  options: Pick<ScheduleReconciliationOptions, "context" | "jobId" | "buildId">,
  scheduleId: string,
) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation-identity.ts#L63)

### scheduleOperationIdEffect

Builds an idempotent native operation identity in Effect.

**Example**

```ts
Effect.runSync(scheduleOperationIdEffect(options, "hourly"));
```

**Signature**

```ts
declare const scheduleOperationIdEffect: (
  options: Pick<ScheduleReconciliationOptions, "jobId" | "context" | "buildId">,
  scheduleId: string,
) => Effect.Effect<string, JobIdentityError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation-identity.ts#L39)

### scheduleOwner

Synchronous stable schedule owner identity.

**Example**

```ts
scheduleOwner({ context, jobId: "send" });
```

**Signature**

```ts
declare const scheduleOwner: (
  options: Pick<ScheduleReconciliationOptions, "context" | "jobId">,
) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation-identity.ts#L28)

### scheduleOwnerEffect

Builds a stable owner identity in Effect.

**Example**

```ts
Effect.runSync(scheduleOwnerEffect({ context, jobId: "send" }));
```

**Signature**

```ts
declare const scheduleOwnerEffect: (
  options: Pick<ScheduleReconciliationOptions, "jobId" | "context">,
) => Effect.Effect<string, JobIdentityError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation-identity.ts#L10)

## `schedule-reconciliation-service.ts`

### NativeScheduleService (class)

Injectable native provider for schedule reconciliation.

**Example**

```ts
const service = yield * NativeScheduleService;
```

**Signature**

```ts
declare class NativeScheduleService
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation-service.ts#L6)

### ScheduleReconciliationFailure (class)

Expected native schedule reconciliation failure with original cause.

**Example**

```ts
if (error instanceof ScheduleReconciliationFailure) console.log(error.message);
```

**Signature**

```ts
declare class ScheduleReconciliationFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation-service.ts#L20)

### nativeScheduleLayer

Provides a native schedule implementation to the Effect reconciler.

**Example**

```ts
nativeScheduleLayer(adapter.nativeSchedules);
```

**Signature**

```ts
declare const nativeScheduleLayer: (
  native: NativeScheduleOperations,
) => Layer.Layer<NativeScheduleService, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation-service.ts#L15)

## `schedule-reconciliation-support.ts`

### isRecord

Tests for a nonarray provider record.

**Example**

```ts
isRecord({ id: "hourly" });
```

**Signature**

```ts
declare const isRecord: (value: unknown) => value is Record<string, any>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation-support.ts#L133)

### isScheduleRecord

Recognizes a native schedule record with an identifier.

**Example**

```ts
isScheduleRecord({ id: "hourly" });
```

**Signature**

```ts
declare const isScheduleRecord: (value: unknown) => value is NativeOwnedScheduleRecord;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation-support.ts#L85)

### nativeDefinition

Adds ownership and canonical input metadata to a desired native schedule.

**Throws**

TypeError for non-JSON schedule input.

**Example**

```ts
nativeDefinition(schedule, options, "owner-1");
```

**Signature**

```ts
declare const nativeDefinition: (
  schedule: ScheduleReconciliationOptions["desired"][number],
  options: Omit<ScheduleReconciliationOptions, "native">,
  owner: string,
) => Readonly<
  | {
      metadata: Readonly<{
        buildId: string;
        serviceGeneration: string;
        canonicalInput: string;
        taskVersion?: string;
        taskId?: string;
        owner: string;
        application: string;
        environment: string;
        service: string;
        scope: string;
        jobId: string;
      }>;
      id: string;
      input: unknown;
      overlap?: ScheduleOverlap;
      misfire?: ScheduleMisfire;
      cron: string;
      timezone: string;
      every?: never;
    }
  | {
      metadata: Readonly<{
        buildId: string;
        serviceGeneration: string;
        canonicalInput: string;
        taskVersion?: string;
        taskId?: string;
        owner: string;
        application: string;
        environment: string;
        service: string;
        scope: string;
        jobId: string;
      }>;
      id: string;
      input: unknown;
      overlap?: ScheduleOverlap;
      misfire?: ScheduleMisfire;
      every: DurationInput;
      cron?: never;
      timezone?: never;
    }
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation-support.ts#L105)

### writeContext

Binds one stable operation identity to a native schedule write.

**Example**

```ts
writeContext(context, "schedule-upsert-1");
```

**Signature**

```ts
declare const writeContext: (
  context: OperationContext,
  operationIdValue: string,
) => OperationContext;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation-support.ts#L74)

### writeWithRecovery

Promise compatibility native write retry.

**Throws**

Original terminal write error or unknown outcome error.

**Example**

```ts
await writeWithRecovery(() => native.upsert(value, context), context);
```

**Signature**

```ts
declare const writeWithRecovery: (
  write: () => Promise<unknown>,
  context: OperationContext,
) => Promise<unknown>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation-support.ts#L60)

### writeWithRecoveryEffect

Retries an ambiguous native write once in Effect.

**Example**

```ts
Effect.runPromise(writeWithRecoveryEffect(() => native.upsert(value, context), context));
```

**Signature**

```ts
declare const writeWithRecoveryEffect: (
  write: () => Promise<unknown>,
  context: OperationContext,
) => Effect.Effect<unknown, ScheduleReconciliationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation-support.ts#L16)

## `schedule-reconciliation.ts`

### NativeOwnedScheduleRecord

**Signature**

```ts
declare const NativeOwnedScheduleRecord: NativeOwnedScheduleRecord;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation.ts#L23)

### NativeScheduleService

**Signature**

```ts
declare const NativeScheduleService: typeof NativeScheduleService;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation.ts#L28)

### ScheduleReconciliationFailure

**Signature**

```ts
declare const ScheduleReconciliationFailure: typeof ScheduleReconciliationFailure;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation.ts#L30)

### ScheduleReconciliationOptions

**Signature**

```ts
declare const ScheduleReconciliationOptions: ScheduleReconciliationOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation.ts#L24)

### ScheduleReconciliationResult

**Signature**

```ts
declare const ScheduleReconciliationResult: ScheduleReconciliationResult;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation.ts#L25)

### nativeScheduleLayer

**Signature**

```ts
declare const nativeScheduleLayer: (
  native: NativeScheduleOperations,
) => Layer<NativeScheduleService, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation.ts#L29)

### reconcileNativeSchedules

Promise compatibility reconciler.

**Throws**

The original native, validation, or ownership error.

**Example**

```ts
await reconcileNativeSchedules(options);
```

**Signature**

```ts
declare const reconcileNativeSchedules: (
  options: ScheduleReconciliationOptions,
) => Promise<ScheduleReconciliationResult>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation.ts#L146)

### reconcileNativeSchedulesEffect

Reconciles owned schedules with ordered native writes in Effect.

**Example**

```ts
Effect.runPromise(
  Effect.provide(reconcileNativeSchedulesEffect(options), nativeScheduleLayer(native)),
);
```

**Signature**

```ts
declare const reconcileNativeSchedulesEffect: (
  options: Omit<ScheduleReconciliationOptions, "native">,
) => Effect.Effect<
  Readonly<{ upserted: Array<string>; deleted: Array<string>; preserved: Array<string> }>,
  ScheduleReconciliationFailure,
  NativeScheduleService
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation.ts#L43)

### scheduleOperationId

**Signature**

```ts
declare const scheduleOperationId: (
  options: Pick<ScheduleReconciliationOptions, "context" | "jobId" | "buildId">,
  scheduleId: string,
) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation.ts#L35)

### scheduleOperationIdEffect

**Signature**

```ts
declare const scheduleOperationIdEffect: (
  options: Pick<ScheduleReconciliationOptions, "jobId" | "context" | "buildId">,
  scheduleId: string,
) => Effect.Effect<string, JobIdentityError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation.ts#L36)

### scheduleOwner

**Signature**

```ts
declare const scheduleOwner: (
  options: Pick<ScheduleReconciliationOptions, "context" | "jobId">,
) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation.ts#L33)

### scheduleOwnerEffect

**Signature**

```ts
declare const scheduleOwnerEffect: (
  options: Pick<ScheduleReconciliationOptions, "jobId" | "context">,
) => Effect.Effect<string, JobIdentityError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation.ts#L34)

## `schedule-reconciliation.types.ts`

### NativeOwnedScheduleRecord (interface)

Native schedule visible to reconciliation, including ownership metadata.

**Signature**

```ts
export interface NativeOwnedScheduleRecord {
  readonly id: string;
  readonly state?: "active" | "paused" | "missing" | "unknown";
  readonly definition?: ScheduleDefinition;
  readonly metadata?: Readonly<Record<string, unknown>>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation.types.ts#L4)

### ScheduleReconciliationOptions (interface)

Existing Promise API options, including the native provider.

**Signature**

```ts
export interface ScheduleReconciliationOptions {
  readonly native: NativeScheduleOperations;
  readonly desired: readonly ScheduleDefinition[];
  readonly existing?: readonly NativeOwnedScheduleRecord[];
  readonly context: OperationContext;
  readonly jobId: string;
  readonly taskId?: string;
  readonly taskVersion?: string;
  readonly buildId: string;
  readonly workerReady?: (() => Promise<void>) | undefined;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation.types.ts#L17)

### ScheduleReconciliationResult (interface)

Ordered changes made by a reconciliation pass.

**Signature**

```ts
export interface ScheduleReconciliationResult {
  readonly upserted: readonly string[];
  readonly deleted: readonly string[];
  readonly preserved: readonly string[];
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-reconciliation.types.ts#L11)

## `schedule-validation.ts`

### ScheduleValidationError (class)

Invalid authored schedule definitions.

**Example**

```ts
if (error instanceof ScheduleValidationError) console.log(error.message);
```

**Signature**

```ts
declare class ScheduleValidationError
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-validation.ts#L12)

### ScheduleValidationOptions

**Signature**

```ts
declare const ScheduleValidationOptions: ScheduleValidationOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-validation.ts#L8)

### copySchedules

Synchronous schedule validation adapter.

**Throws**

TypeError when a schedule is invalid.

**Example**

```ts
copySchedules([{ id: "hourly", every: "1 hour", input: null }]);
```

**Signature**

```ts
declare const copySchedules: <CanonicalInput>(
  value: unknown,
  options?: ScheduleValidationOptions,
) => readonly ScheduleDefinition<CanonicalInput>[] | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-validation.ts#L42)

### copySchedulesEffect

Copies and validates authored schedules in Effect.

**Example**

```ts
Effect.runSync(copySchedulesEffect([{ id: "hourly", every: "1 hour", input: null }]));
```

**Signature**

```ts
declare const copySchedulesEffect: <CanonicalInput>(
  value: unknown,
  options?: ScheduleValidationOptions | undefined,
) => Effect.Effect<
  ReadonlyArray<ScheduleDefinition<CanonicalInput>> | undefined,
  ScheduleValidationError,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-validation.ts#L22)

## `schedule-validation.types.ts`

### ScheduleValidationOptions (interface)

Schemas used to validate and canonicalize authored schedule input.

**Signature**

```ts
export interface ScheduleValidationOptions {
  readonly callerSchema?: StandardSchemaV1;
  readonly canonicalSchema?: StandardSchemaV1;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule-validation.types.ts#L3)

## `schedule.types.ts`

### JobScheduleClient (interface)

Read and write operations available for a job's schedules.

**Signature**

```ts
export interface JobScheduleClient<Definition = ScheduleDefinition> {
  readonly list: (options?: ScheduleListOptions) => Promise<ScheduleReadReceipt<Definition>>;
  readonly get: (
    id: string,
    options?: { readonly signal?: AbortSignal },
  ) => Promise<ScheduleReadReceipt<Definition>>;
  readonly upsert: (
    definition: Definition,
    options: ScheduleWriteOptions,
  ) => Promise<ScheduleWriteReceipt<Definition>>;
  readonly pause: (
    id: string,
    options: ScheduleWriteOptions,
  ) => Promise<ScheduleWriteReceipt<Definition>>;
  readonly resume: (
    id: string,
    options: ScheduleWriteOptions,
  ) => Promise<ScheduleWriteReceipt<Definition>>;
  readonly delete: (
    id: string,
    options: ScheduleWriteOptions,
  ) => Promise<ScheduleWriteReceipt<Definition>>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule.types.ts#L67)

### ScheduleDefinition (type alias)

Authored schedule target, timing, and admission policy.

**Signature**

```ts
type ScheduleDefinition<Input = unknown> = {
  readonly id: string;
  readonly input: Input;
  readonly overlap?: ScheduleOverlap;
  readonly misfire?: ScheduleMisfire;
} & (
  | { readonly cron: string; readonly timezone: string; readonly every?: never }
  | { readonly every: DurationInput; readonly cron?: never; readonly timezone?: never }
);
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule.types.ts#L10)

### ScheduleListOptions (interface)

Options accepted for schedule list operations.

**Signature**

```ts
export interface ScheduleListOptions {
  readonly limit?: number;
  readonly cursor?: string;
  readonly signal?: AbortSignal;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule.types.ts#L44)

### ScheduleMisfire (type alias)

How missed occurrences are handled after downtime.

**Signature**

```ts
type ScheduleMisfire = "skip" | "latest" | "all";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule.types.ts#L7)

### ScheduleOverlap (type alias)

Whether simultaneous occurrences are skipped or allowed.

**Signature**

```ts
type ScheduleOverlap = "allow" | "skip";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule.types.ts#L5)

### ScheduleReadReceipt (interface)

Receipt returned after a schedule read operation.

**Signature**

```ts
export interface ScheduleReadReceipt<Definition = ScheduleDefinition> {
  readonly outcome: "available" | "unavailable";
  readonly schedule?: ScheduleRecord<Definition>;
  readonly schedules?: readonly ScheduleRecord<Definition>[];
  readonly nextCursor?: string;
  readonly hasMore?: boolean;
  readonly reason?: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule.types.ts#L30)

### ScheduleRecord (interface)

Provider read model for a persisted schedule.

**Signature**

```ts
export interface ScheduleRecord<Definition = ScheduleDefinition> {
  readonly id: string;
  readonly jobId: string;
  readonly state: "active" | "paused" | "missing" | "unknown";
  readonly definition: Definition;
  readonly observedAt?: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule.types.ts#L21)

### ScheduleWriteOptions (interface)

Options accepted for schedule write operations.

**Signature**

```ts
export interface ScheduleWriteOptions {
  readonly operationId: string;
  readonly signal?: AbortSignal;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule.types.ts#L51)

### ScheduleWriteOutcome (type alias)

Result category for a native schedule mutation.

**Signature**

```ts
type ScheduleWriteOutcome =
  "created" | "updated" | "paused" | "resumed" | "deleted" | "requested" | "unsupported";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule.types.ts#L40)

### ScheduleWriteReceipt (type alias)

Receipt returned after a schedule write operation.

**Signature**

```ts
type ScheduleWriteReceipt<Definition = ScheduleDefinition> =
  | {
      readonly operationId: string;
      readonly scheduleId: string;
      readonly outcome: ScheduleWriteOutcome;
      readonly schedule?: ScheduleRecord<Definition>;
    }
  | (JobUnknownOutcome & { readonly scheduleId: string });
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/schedule.types.ts#L57)

## `server-manifest.ts`

### JobsManifestReader (class)

Substitutable manifest file reader.

**Example**

```ts
Effect.provide(readJobsManifestEffect(config), JobsManifestReaderLive);
```

**Signature**

```ts
declare class JobsManifestReader
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/server-manifest.ts#L22)

### JobsManifestReaderLive

Live UTF-8 reader backed by Node's file system.

**Example**

```ts
Effect.provide(readJobsManifestEffect(config), JobsManifestReaderLive);
```

**Signature**

```ts
declare const JobsManifestReaderLive: Layer.Layer<JobsManifestReader, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/server-manifest.ts#L30)

### JobsServerError (class)

A typed file, manifest, runtime, or callback failure.

**Example**

```ts
new JobsServerError({ operation: "readManifest", cause: new Error("missing") });
```

**Signature**

```ts
declare class JobsServerError
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/server-manifest.ts#L14)

### readJobsManifestEffect

Reads and validates the optional generated jobs manifest.

**Example**

```ts
Effect.provide(readJobsManifestEffect({ projectRoot: "." }), JobsManifestReaderLive);
```

**Signature**

```ts
declare const readJobsManifestEffect: (
  config: RunWithJobsConfig,
) => Effect.Effect<Readonly<JobsManifestLike> | undefined, JobsServerError, JobsManifestReader>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/server-manifest.ts#L47)

## `server.ts`

### JobsManifestReader

**Signature**

```ts
declare const JobsManifestReader: typeof JobsManifestReader;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/server.ts#L14)

### JobsManifestReaderLive

**Signature**

```ts
declare const JobsManifestReaderLive: Layer<JobsManifestReader, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/server.ts#L14)

### JobsServerError

**Signature**

```ts
declare const JobsServerError: typeof JobsServerError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/server.ts#L14)

### RunResultOptions

**Signature**

```ts
declare const RunResultOptions: RunResultOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/server.ts#L100)

### RunWithJobsConfig

**Signature**

```ts
declare const RunWithJobsConfig: RunWithJobsConfig;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/server.ts#L13)

### ServerTriggerOptions

**Signature**

```ts
declare const ServerTriggerOptions: ServerTriggerOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/server.ts#L100)

### TriggerOptions

**Signature**

```ts
declare const TriggerOptions: TriggerOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/server.ts#L100)

### runWithJobs

Promise compatibility adapter for server invocation.

**Throws**

The original manifest, runtime, callback, or close error.

**Example**

```ts
await runWithJobs({ projectRoot: "." }, () => "ok");
```

**Signature**

```ts
declare const runWithJobs: <A>(
  config: RunWithJobsConfig,
  callback: () => A | PromiseLike<A>,
) => Promise<Awaited<A>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/server.ts#L63)

### runWithJobsEffect

Runs a server callback inside an owned or borrowed jobs runtime.
An owned runtime closes after success, typed failure, or interruption.

**Example**

```ts
Effect.provide(
  runWithJobsEffect({ projectRoot: "." }, () => "ok"),
  JobsManifestReaderLive,
);
```

**Signature**

```ts
declare const runWithJobsEffect: <A>(
  config: RunWithJobsConfig,
  callback: () => A | PromiseLike<A>,
) => Effect.Effect<A, JobsServerError, JobsManifestReader>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/server.ts#L23)

## `server.types.ts`

### JobsManifestLike

**Signature**

```ts
declare const JobsManifestLike: JobsManifestLike;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/server.types.ts#L5)

### JobsManifestReaderService (interface)

Injectable file reader for manifest loading.

**Example**

```ts
const reader: JobsManifestReaderService = { read: () => Effect.succeed("{}") };
```

**Signature**

```ts
export interface JobsManifestReaderService {
  /** Reads UTF-8 manifest data.
   * @param path - Resolved manifest path.
   * @returns File contents or JobsServerError.
   * @example reader.read("/project/.relkit/generated/jobs.manifest.json");
   */
  readonly read: (path: string) => Effect.Effect<string, JobsServerError>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/server.types.ts#L31)

### JobsRuntimeOptions

**Signature**

```ts
declare const JobsRuntimeOptions: JobsRuntimeOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/server.types.ts#L5)

### RunWithJobsConfig (interface)

Options for a server invocation with a jobs runtime.
The caller retains ownership when runtime is supplied.

**Example**

```ts
const config: RunWithJobsConfig = { projectRoot: process.cwd() };
```

**Signature**

```ts
export interface RunWithJobsConfig {
  readonly projectRoot: string;
  readonly environment?: string;
  readonly manifestPath?: string;
  readonly runtime?: JobsRuntime;
  readonly adapter?: unknown;
  readonly provider?: unknown;
  readonly providerHandle?: { readonly value: unknown };
  readonly application?: string;
  readonly scope?: string;
  readonly service?: string;
  readonly serviceGeneration?: string;
  readonly capabilities?: JobsRuntimeOptions["capabilities"];
  readonly jobs?: JobsRuntimeOptions["jobs"];
  readonly taskExecutor?: JobsRuntimeOptions["taskExecutor"];
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/server.types.ts#L11)

## `service-options-validation.ts`

### JobsServiceOptionsError (class)

Invalid authored jobs service options.

**Example**

```ts
if (error instanceof JobsServiceOptionsError) console.log(error.message);
```

**Signature**

```ts
declare class JobsServiceOptionsError
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options-validation.ts#L15)

### validateJobsServiceOptions

Synchronously validates jobs service options.

**Throws**

TypeError when any option is invalid.

**Example**

```ts
validateJobsServiceOptions({});
```

**Signature**

```ts
declare const validateJobsServiceOptions: (value: JobsServiceOptions | undefined) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options-validation.ts#L43)

### validateJobsServiceOptionsEffect

Validates jobs service limits, durations, and worker classes in Effect.

**Example**

```ts
Effect.runSync(validateJobsServiceOptionsEffect({}));
```

**Signature**

```ts
declare const validateJobsServiceOptionsEffect: (
  value: JobsServiceOptions | undefined,
) => Effect.Effect<void, JobsServiceOptionsError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options-validation.ts#L24)

## `service-options.ts`

### JobsServiceBehavior

**Signature**

```ts
declare const JobsServiceBehavior: Readonly<Record<string, JsonValue>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options.ts#L11)

### JobsServiceOptionName

**Signature**

```ts
declare const JobsServiceOptionName: JobsServiceOptionName;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options.ts#L12)

### JobsServiceOptions

**Signature**

```ts
declare const JobsServiceOptions: JobsServiceOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options.ts#L10)

### JobsServiceOptionsError

**Signature**

```ts
declare const JobsServiceOptionsError: typeof JobsServiceOptionsError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options.ts#L17)

### assertSupportedJobsServiceOptions

Synchronously checks a provider's supported option names.

**Throws**

Error with the unsupported option name.

**Example**

```ts
assertSupportedJobsServiceOptions({}, []);
```

**Signature**

```ts
declare const assertSupportedJobsServiceOptions: (
  value: JobsServiceOptions,
  supported: readonly JobsServiceOptionName[],
) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options.ts#L132)

### assertSupportedJobsServiceOptionsEffect

Checks a provider's supported service option names in Effect.

**Example**

```ts
Effect.runSync(assertSupportedJobsServiceOptionsEffect({}, []));
```

**Signature**

```ts
declare const assertSupportedJobsServiceOptionsEffect: (
  value: JobsServiceOptions,
  supported: ReadonlyArray<JobsServiceOptionName>,
) => Effect.Effect<undefined, JobsServiceOptionsError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options.ts#L106)

### deserializeJobsServiceOptions

Synchronously reads common options from stored service behavior.

**Throws**

TypeError when the record or an option is invalid.

**Example**

```ts
deserializeJobsServiceOptions({});
```

**Signature**

```ts
declare const deserializeJobsServiceOptions: (value: unknown) => JobsServiceOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options.ts#L95)

### deserializeJobsServiceOptionsEffect

Parses common options from a stored service behavior record.

**Example**

```ts
Effect.runSync(deserializeJobsServiceOptionsEffect({}));
```

**Signature**

```ts
declare const deserializeJobsServiceOptionsEffect: (
  value: unknown,
) => Effect.Effect<Readonly<JobsServiceOptions>, JobsServiceOptionsError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options.ts#L75)

### serializeJobsServiceOptions

Synchronously serializes service options.

**Throws**

TypeError when a field is not JSON.

**Example**

```ts
serializeJobsServiceOptions({}, undefined);
```

**Signature**

```ts
declare const serializeJobsServiceOptions: (
  value: JobsServiceOptions | undefined,
  native: JsonValue | undefined,
) => Readonly<Record<string, JsonValue>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options.ts#L45)

### serializeJobsServiceOptionsEffect

Serializes validated service options into a provider neutral record.

**Example**

```ts
Effect.runSync(serializeJobsServiceOptionsEffect({}, undefined));
```

**Signature**

```ts
declare const serializeJobsServiceOptionsEffect: (
  value: JobsServiceOptions | undefined,
  native: JsonValue | undefined,
) => Effect.Effect<Readonly<Record<string, JsonValue>>, JobsServiceOptionsError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options.ts#L25)

### validateJobsServiceOptions

**Signature**

```ts
declare const validateJobsServiceOptions: (value: JobsServiceOptions | undefined) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options.ts#L15)

### validateJobsServiceOptionsEffect

**Signature**

```ts
declare const validateJobsServiceOptionsEffect: (
  value: JobsServiceOptions | undefined,
) => Effect.Effect<void, JobsServiceOptionsError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options.ts#L16)

## `service-options.types.ts`

### JobsServiceBehavior (type alias)

JSON configuration passed to a jobs service provider.

**Signature**

```ts
type JobsServiceBehavior = Readonly<Record<string, JsonValue>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options.types.ts#L28)

### JobsServiceOptionName (type alias)

Recognized top-level jobs service configuration keys.

**Signature**

```ts
type JobsServiceOptionName =
  "limits" | "workers" | "observation" | "maxElapsed" | "hookTimeout" | "shutdownGrace";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options.types.ts#L30)

### JobsServiceOptions (interface)

Options accepted for jobs service operations.

**Signature**

```ts
export interface JobsServiceOptions {
  readonly limits?: {
    readonly inputBytes?: number;
    readonly outputBytes?: number;
    readonly progressItemBytes?: number;
    readonly streamItemBytes?: number;
  };
  readonly workers?: {
    readonly classes: readonly {
      readonly id: string;
      readonly cpu: number;
      readonly memory: MemoryInput;
      readonly nativeClass?: string;
    }[];
  };
  readonly observation?: {
    readonly pollInterval?: DurationInput;
    readonly readTimeout?: DurationInput;
  };
  readonly maxElapsed?: DurationInput;
  readonly hookTimeout?: DurationInput;
  readonly shutdownGrace?: DurationInput;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/service-options.types.ts#L4)

## `submission-admission.ts`

### AdmissionIdentity (class)

Substitutable operation ID generator for admitted submissions.

**Example**

```ts
const service = yield * AdmissionIdentity;
```

**Signature**

```ts
declare class AdmissionIdentity
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-admission.ts#L24)

### admissionIdentityLayer

Provides deterministic admission operation IDs.

**Example**

```ts
admissionIdentityLayer(() => "operation-1");
```

**Signature**

```ts
declare const admissionIdentityLayer: (
  next: () => string,
) => Layer.Layer<AdmissionIdentity, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-admission.ts#L33)

### boundedKey

**Signature**

```ts
declare const boundedKey: (value: string) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-admission.ts#L161)

### prepareAdmission

Promise compatibility admission preparation.

**Throws**

Original binding, validation, or hashing error.

**Example**

```ts
await prepareAdmission(runtime, task, wire, copied);
```

**Signature**

```ts
declare const prepareAdmission: (
  runtime: JobsRuntime,
  task: TaskDescriptorAny,
  wire: JobWireEnvelope,
  copied: ReturnType<typeof copyTriggerOptions>,
  job?: JobDescriptorAny,
) => Promise<SubmissionAdmission>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-admission.ts#L141)

### prepareAdmissionEffect

Prepares binding, identity, scheduling, and input hash in Effect.

**Example**

```ts
Effect.runPromise(prepareAdmissionEffect(runtime, task, wire, copied));
```

**Signature**

```ts
declare const prepareAdmissionEffect: (
  runtime: JobsRuntime,
  task: TaskDescriptorAny,
  wire: JobWireEnvelope,
  copied: CopiedTriggerOptions,
  job?: JobDescriptorAny | undefined,
) => Effect.Effect<
  Readonly<{
    binding: JobsRuntimeBinding;
    input: JsonValue;
    canonicalInput: JsonValue | undefined;
    inputHash: string;
    metadata: TaskSubmissionMetadata;
    job?: JobDescriptorAny;
    task: TaskDescriptorAny;
  }>,
  JobSubmissionPipelineFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-admission.ts#L44)

## `submission-canonical.ts`

### submitCanonicalTask

Promise compatibility adapter for canonical submission.

**Throws**

The original validation, cancellation, or provider error.

**Example**

```ts
await submitCanonicalTask(runtime, task, options);
```

**Signature**

```ts
declare const submitCanonicalTask: (
  runtime: JobsRuntime,
  task: TaskDescriptorAny,
  options: CanonicalTaskSubmissionOptions,
) => Promise<import("@relkit/contracts/jobs").RunHandle>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-canonical.ts#L39)

### submitCanonicalTaskEffect

Submits an already canonical task input in Effect.

**Example**

```ts
Effect.runPromise(submitCanonicalTaskEffect(runtime, task, options));
```

**Signature**

```ts
declare const submitCanonicalTaskEffect: (
  runtime: JobsRuntime,
  task: TaskDescriptorAny,
  options: CanonicalTaskSubmissionOptions,
) => Effect.Effect<RunHandle, JobSubmissionPipelineFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-canonical.ts#L27)

## `submission-errors.ts`

### JobReceiptError (class)

A native accepted receipt failed durable identity validation.

**Example**

```ts
new JobReceiptError("Receipt is missing run ID");
```

**Signature**

```ts
declare class JobReceiptError {
  constructor(message: string);
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-errors.ts#L36)

### code (property)

**Signature**

```ts
readonly code: "RELKIT_JOB_RECEIPT_INVALID"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-errors.ts#L37)

### JobSubmissionCancelledError (class)

Caller cancellation happened before native acceptance began.

**Example**

```ts
new JobSubmissionCancelledError();
```

**Signature**

```ts
declare class JobSubmissionCancelledError {
  constructor();
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-errors.ts#L24)

### code (property)

**Signature**

```ts
readonly code: "RELKIT_JOB_SUBMISSION_CANCELLED"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-errors.ts#L25)

### JobSubmissionError (class)

A canonical job submission could not be accepted.

**Example**

```ts
new JobSubmissionError("Input hash mismatch");
```

**Signature**

```ts
declare class JobSubmissionError { constructor(
    message: string,
    readonly cause?: unknown,
  ) }
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-errors.ts#L6)

### code (property)

**Signature**

```ts
readonly code: "RELKIT_JOB_SUBMISSION_FAILED"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-errors.ts#L7)

### JobSubmissionUnknownError (class)

Native acceptance may have committed and needs idempotent recovery.

**Example**

```ts
new JobSubmissionUnknownError("submit-1", "same-key");
```

**Signature**

```ts
declare class JobSubmissionUnknownError { constructor(
    readonly operationId: string,
    readonly idempotencyKey: string | undefined,
    recovery: JobUnknownOutcome["recovery"] = { action: "inspect-native" },
  ) }
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-errors.ts#L49)

### toJSON (method)

Serializes the bounded recovery contract for callers.

**Example**

```ts
error.toJSON();
```

**Signature**

```ts
declare const toJSON: () => JobUnknownOutcome;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-errors.ts#L74)

### code (property)

**Signature**

```ts
readonly code: "RELKIT_JOB_SUBMISSION_UNKNOWN"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-errors.ts#L50)

### outcome (property)

**Signature**

```ts
readonly outcome: "unknown"
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-errors.ts#L51)

### recovery (property)

**Signature**

```ts
readonly recovery: { readonly action: "retry-with-same-key" | "inspect-native" | "unavailable"; readonly expiresAt?: string; }
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-errors.ts#L52)

## `submission-failure.ts`

### JobSubmissionPipelineFailure (class)

Expected failure at the jobs submission pipeline boundary.

**Example**

```ts
if (error instanceof JobSubmissionPipelineFailure) console.log(error.message);
```

**Signature**

```ts
declare class JobSubmissionPipelineFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-failure.ts#L5)

## `submission-pipeline.ts`

### createSubmissionPipeline

Synchronous facade factory for the jobs submission pipeline.

**Example**

```ts
createSubmissionPipeline(runtime);
```

**Signature**

```ts
declare const createSubmissionPipeline: (runtime: JobsRuntime) => SubmissionPipeline;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-pipeline.ts#L38)

### createSubmissionPipelineEffect

Builds a task and job submission facade in Effect.

**Example**

```ts
Effect.runSync(createSubmissionPipelineEffect(runtime));
```

**Signature**

```ts
declare const createSubmissionPipelineEffect: (
  runtime: JobsRuntime,
) => Effect.Effect<SubmissionPipeline, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-pipeline.ts#L18)

### submitJob

Promise compatibility job submission.

**Throws**

The original capability, validation, cancellation, or provider error.

**Example**

```ts
await submitJob(job, "hello", {}, runtime);
```

**Signature**

```ts
declare const submitJob: (
  job: JobDescriptorAny,
  input: unknown,
  options?: unknown,
  runtime?: JobsRuntime,
) => Promise<RunHandle>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-pipeline.ts#L94)

### submitJobEffect

Submits an authored job in Effect.

**Example**

```ts
Effect.runPromise(submitJobEffect(job, "hello", {}, runtime));
```

**Signature**

```ts
declare const submitJobEffect: (
  job: JobDescriptorAny,
  input: unknown,
  options: unknown,
  runtime: JobsRuntime,
) => Effect.Effect<RunHandle, JobSubmissionPipelineFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-pipeline.ts#L78)

### submitTask

Promise compatibility task submission.

**Throws**

The original capability, validation, cancellation, or provider error.

**Example**

```ts
await submitTask(task, "hello", {}, runtime);
```

**Signature**

```ts
declare const submitTask: (
  task: TaskDescriptorAny,
  input: unknown,
  options?: unknown,
  runtime?: JobsRuntime,
) => Promise<RunHandle>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-pipeline.ts#L62)

### submitTaskEffect

Submits an authored task in Effect.

**Example**

```ts
Effect.runPromise(submitTaskEffect(task, "hello", {}, runtime));
```

**Signature**

```ts
declare const submitTaskEffect: (
  task: TaskDescriptorAny,
  input: unknown,
  options: unknown,
  runtime: JobsRuntime,
) => Effect.Effect<RunHandle, JobSubmissionPipelineFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-pipeline.ts#L49)

## `submission-prepare.ts`

### prepareCanonicalSubmission

Promise compatibility adapter for canonical admission.

**Throws**

The original trigger or preparation error.

**Example**

```ts
await prepareCanonicalSubmission(runtime, task, wire);
```

**Signature**

```ts
declare const prepareCanonicalSubmission: (
  runtime: JobsRuntime,
  task: TaskDescriptorAny,
  canonicalInput: ReturnType<typeof encodeJobWire>,
  options?: unknown,
  job?: JobDescriptorAny,
) => Promise<SubmissionAdmission>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-prepare.ts#L99)

### prepareCanonicalSubmissionEffect

Builds an admission from already canonical input in Effect.

**Example**

```ts
Effect.runPromise(prepareCanonicalSubmissionEffect(runtime, task, wire));
```

**Signature**

```ts
declare const prepareCanonicalSubmissionEffect: (
  runtime: JobsRuntime,
  task: TaskDescriptorAny,
  canonicalInput: JobWireEnvelope,
  options?: unknown,
  job?: JobDescriptorAny | undefined,
) => Effect.Effect<
  Readonly<{
    binding: JobsRuntimeBinding;
    input: JsonValue;
    canonicalInput: JsonValue | undefined;
    inputHash: string;
    metadata: TaskSubmissionMetadata;
    job?: JobDescriptorAny;
    task: TaskDescriptorAny;
  }>,
  JobSubmissionPipelineFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-prepare.ts#L73)

### prepareSubmission

Promise compatibility adapter for authored input admission.

**Throws**

The original validation or preparation error.

**Example**

```ts
await prepareSubmission(runtime, task, "hello");
```

**Signature**

```ts
declare const prepareSubmission: (
  runtime: JobsRuntime,
  task: TaskDescriptorAny,
  input: unknown,
  options?: unknown,
  job?: JobDescriptorAny,
) => Promise<SubmissionAdmission>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-prepare.ts#L51)

### prepareSubmissionEffect

Validates authored input and builds a durable admission in Effect.

**Example**

```ts
Effect.runPromise(prepareSubmissionEffect(runtime, task, "hello"));
```

**Signature**

```ts
declare const prepareSubmissionEffect: (
  runtime: JobsRuntime,
  task: TaskDescriptorAny,
  input: unknown,
  options?: unknown,
  job?: JobDescriptorAny | undefined,
) => Effect.Effect<
  Readonly<{
    binding: JobsRuntimeBinding;
    input: JsonValue;
    canonicalInput: JsonValue | undefined;
    inputHash: string;
    metadata: TaskSubmissionMetadata;
    job?: JobDescriptorAny;
    task: TaskDescriptorAny;
  }>,
  JobSubmissionPipelineFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-prepare.ts#L21)

## `submission-prepared.ts`

### submitPreparedSubmission

Promise compatibility prepared submission.

**Throws**

Original capability, cancellation, or provider error.

**Example**

```ts
await submitPreparedSubmission(runtime, admission);
```

**Signature**

```ts
declare const submitPreparedSubmission: (
  runtime: JobsRuntime,
  admission: SubmissionAdmission,
  signal?: AbortSignal,
) => Promise<RunHandle>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-prepared.ts#L56)

### submitPreparedSubmissionEffect

Submits prepared canonical input in Effect.

**Example**

```ts
Effect.runPromise(submitPreparedSubmissionEffect(runtime, admission));
```

**Signature**

```ts
declare const submitPreparedSubmissionEffect: (
  runtime: JobsRuntime,
  admission: SubmissionAdmission,
  signal?: any,
) => Effect.Effect<RunHandle, JobSubmissionPipelineFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-prepared.ts#L19)

## `submission-support-hash.ts`

### SubmissionDigest (class)

Substitutable SHA-256 digest provider for canonical submission input.

**Example**

```ts
const service = yield * SubmissionDigest;
```

**Signature**

```ts
declare class SubmissionDigest
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-hash.ts#L8)

### hashWire

Promise compatibility canonical wire hasher.

**Throws**

Original canonical JSON or digest error.

**Example**

```ts
await hashWire({ version: 1, kind: "void" });
```

**Signature**

```ts
declare const hashWire: (value: unknown) => Promise<string>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-hash.ts#L52)

### hashWireEffect

Hashes a canonical wire envelope in Effect.

**Example**

```ts
Effect.runPromise(hashWireEffect({ version: 1, kind: "void" }));
```

**Signature**

```ts
declare const hashWireEffect: (
  value: unknown,
) => Effect.Effect<string, SubmissionSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-hash.ts#L26)

### submissionDigestLayer

Provides a deterministic SHA-256 digest implementation.

**Example**

```ts
submissionDigestLayer(async () => new ArrayBuffer(32));
```

**Signature**

```ts
declare const submissionDigestLayer: (
  digest: (bytes: Uint8Array) => Promise<ArrayBuffer>,
) => Layer.Layer<SubmissionDigest, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-hash.ts#L19)

## `submission-support-identity.ts`

### boundedKey

Synchronous bounded idempotency key.

**Throws**

TypeError when over 256 UTF-8 bytes.

**Example**

```ts
boundedKey("order-1");
```

**Signature**

```ts
declare const boundedKey: (value: string) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-identity.ts#L57)

### boundedKeyEffect

Checks an idempotency key's encoded byte limit in Effect.

**Example**

```ts
Effect.runSync(boundedKeyEffect("order-1"));
```

**Signature**

```ts
declare const boundedKeyEffect: (
  value: string,
) => Effect.Effect<string, SubmissionSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-identity.ts#L48)

### currentCorrelation

Synchronous request correlation reader.

**Example**

```ts
currentCorrelation();
```

**Signature**

```ts
declare const currentCorrelation: () => string | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-identity.ts#L91)

### currentCorrelationEffect

Reads request correlation from the invocation scope in Effect.

**Example**

```ts
Effect.runSync(currentCorrelationEffect());
```

**Signature**

```ts
declare const currentCorrelationEffect: () => Effect.Effect<
  string | undefined,
  SubmissionSupportFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-identity.ts#L84)

### currentTaskRunId

Synchronous current parent task run id reader.

**Example**

```ts
currentTaskRunId();
```

**Signature**

```ts
declare const currentTaskRunId: () => string | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-identity.ts#L122)

### currentTaskRunIdEffect

Reads the current parent task run id in Effect.

**Example**

```ts
Effect.runSync(currentTaskRunIdEffect());
```

**Signature**

```ts
declare const currentTaskRunIdEffect: () => Effect.Effect<
  string | undefined,
  SubmissionSupportFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-identity.ts#L115)

### explicitOrDerivedKey

Synchronous idempotency key resolver.

**Throws**

TypeError for a mismatched or invalid scalar key.

**Example**

```ts
explicitOrDerivedKey(job, options, input);
```

**Signature**

```ts
declare const explicitOrDerivedKey: (
  job: { readonly admission?: { readonly idempotency?: { readonly key?: string } } } | undefined,
  options: CopiedTriggerOptions,
  input: JsonValue | undefined,
) => string | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-identity.ts#L36)

### explicitOrDerivedKeyEffect

Resolves an explicit or declared input idempotency key in Effect.

**Example**

```ts
Effect.runSync(explicitOrDerivedKeyEffect(job, options, input));
```

**Signature**

```ts
declare const explicitOrDerivedKeyEffect: (
  job: { readonly admission?: { readonly idempotency?: { readonly key?: string } } } | undefined,
  options: CopiedTriggerOptions,
  input: JsonValue | undefined,
) => Effect.Effect<string | undefined, SubmissionSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-identity.ts#L20)

### propagationFor

Synchronous correlated trace propagation reader.

**Example**

```ts
propagationFor("request-1");
```

**Signature**

```ts
declare const propagationFor: (correlationId: string | undefined) => TracePropagation | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-identity.ts#L108)

### propagationForEffect

Extends trace propagation with request correlation in Effect.

**Example**

```ts
Effect.runSync(propagationForEffect("request-1"));
```

**Signature**

```ts
declare const propagationForEffect: (
  correlationId: string | undefined,
) => Effect.Effect<TracePropagation | undefined, SubmissionSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-identity.ts#L99)

### scheduledTime

Synchronous absolute scheduled time calculator.

**Throws**

Original invalid duration error.

**Example**

```ts
scheduledTime(options, Date.now());
```

**Signature**

```ts
declare const scheduledTime: (options: CopiedTriggerOptions, now: number) => string | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-identity.ts#L77)

### scheduledTimeEffect

Calculates an absolute scheduled submission time in Effect.

**Example**

```ts
Effect.runSync(scheduledTimeEffect(options, Date.now()));
```

**Signature**

```ts
declare const scheduledTimeEffect: (
  options: CopiedTriggerOptions,
  now: number,
) => Effect.Effect<string | undefined, SubmissionSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-identity.ts#L66)

## `submission-support-receipts.ts`

### isRecord

Synchronous nonarray record guard.

**Example**

```ts
isRecord({ accepted: true });
```

**Signature**

```ts
declare const isRecord: (value: unknown) => value is Record<string, unknown>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-receipts.ts#L109)

### isSubmissionRecordEffect

Tests for a nonarray submission record in Effect.

**Example**

```ts
Effect.runSync(isSubmissionRecordEffect({ accepted: true }));
```

**Signature**

```ts
declare const isSubmissionRecordEffect: (
  value: unknown,
) => Effect.Effect<boolean, SubmissionSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-receipts.ts#L101)

### isUnknown

Synchronous uncertain submission type guard.

**Example**

```ts
if (isUnknown(response)) console.log(response.operationId);
```

**Signature**

```ts
declare const isUnknown: (value: unknown) => value is UnknownSubmissionOutcome;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-receipts.ts#L93)

### isUnknownSubmissionEffect

Tests an uncertain native submission outcome in Effect.

**Example**

```ts
Effect.runSync(isUnknownSubmissionEffect(response));
```

**Signature**

```ts
declare const isUnknownSubmissionEffect: (
  value: unknown,
) => Effect.Effect<boolean, SubmissionSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-receipts.ts#L85)

### normalizeReceipt

Synchronous accepted receipt normalizer.

**Throws**

JobReceiptError or JobSubmissionUnknownError for invalid outcomes.

**Example**

```ts
normalizeReceipt(receipt, binding, metadata);
```

**Signature**

```ts
declare const normalizeReceipt: (
  value: NativeReceipt | unknown,
  binding: JobsRuntimeBinding,
  metadata: TaskSubmissionMetadata,
) => RunHandle;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-receipts.ts#L56)

### normalizeReceiptEffect

Validates a native accepted receipt in Effect.

**Example**

```ts
Effect.runSync(normalizeReceiptEffect(receipt, binding, metadata));
```

**Signature**

```ts
declare const normalizeReceiptEffect: (
  value: unknown,
  binding: JobsRuntimeBinding,
  metadata: TaskSubmissionMetadata,
) => Effect.Effect<RunHandle, SubmissionSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-receipts.ts#L42)

### normalizeSubmissionError

Synchronous provider error normalizer.

**Throws**

Original constructor defect when normalization fails.

**Example**

```ts
normalizeSubmissionError(cause, metadata);
```

**Signature**

```ts
declare const normalizeSubmissionError: (cause: unknown, metadata: TaskSubmissionMetadata) => Error;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-receipts.ts#L32)

### normalizeSubmissionErrorEffect

Normalizes an uncertain provider error in Effect.

**Example**

```ts
Effect.runSync(normalizeSubmissionErrorEffect(cause, metadata));
```

**Signature**

```ts
declare const normalizeSubmissionErrorEffect: (
  cause: unknown,
  metadata: TaskSubmissionMetadata,
) => Effect.Effect<Error, SubmissionSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-receipts.ts#L21)

### validatedEnvelope

Synchronous canonical envelope rebuilder.

**Example**

```ts
validatedEnvelope(admission);
```

**Signature**

```ts
declare const validatedEnvelope: (
  admission: SubmissionAdmission,
) => { version: 1; kind: "void"; value?: never } | { version: 1; kind: "json"; value: JsonValue };
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-receipts.ts#L77)

### validatedEnvelopeEffect

Rebuilds a validated canonical envelope in Effect.

**Example**

```ts
Effect.runSync(validatedEnvelopeEffect(admission));
```

**Signature**

```ts
declare const validatedEnvelopeEffect: (
  admission: SubmissionAdmission,
) => Effect.Effect<
  { version: 1; kind: "void"; value?: never } | { version: 1; kind: "json"; value: JsonValue },
  SubmissionSupportFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-receipts.ts#L68)

## `submission-support-run.ts`

### SubmissionSupportFailure (class)

Expected submission helper failure with its original cause.

**Example**

```ts
if (error instanceof SubmissionSupportFailure) console.log(error.message);
```

**Signature**

```ts
declare class SubmissionSupportFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-run.ts#L7)

### runSubmissionSupport

Synchronous submission helper compatibility runner.

**Throws**

The original helper error on failure.

**Example**

```ts
runSubmissionSupport(submissionSupportEffect("submission.prepare", () => receipt));
```

**Signature**

```ts
declare const runSubmissionSupport: <A>(effect: Effect.Effect<A, SubmissionSupportFailure>) => A;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-run.ts#L32)

### submissionSupportEffect

Runs a submission helper inside an observed Effect.

**Example**

```ts
submissionSupportEffect("submission.prepare", () => receipt);
```

**Signature**

```ts
declare const submissionSupportEffect: <A>(
  operation: JobsOperation,
  compute: () => A,
) => Effect.Effect<A, SubmissionSupportFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-run.ts#L17)

## `submission-support-value-context.ts`

### currentCorrelation

Reads the parent invocation's correlation identity.

**Example**

```ts
currentCorrelation();
```

**Signature**

```ts
declare const currentCorrelation: () => string | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-value-context.ts#L12)

### currentTaskRunId

Reads the current parent task run from invocation ancestry.

**Example**

```ts
currentTaskRunId();
```

**Signature**

```ts
declare const currentTaskRunId: () => string | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-value-context.ts#L34)

### propagationFor

Extends current trace propagation with an optional correlation identity.

**Example**

```ts
propagationFor("request-1");
```

**Signature**

```ts
declare const propagationFor: (correlationId: string | undefined) => TracePropagation | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-value-context.ts#L23)

## `submission-support-value.ts`

### boundedKey

Checks the 256-byte idempotency key limit.

**Throws**

TypeError for oversized keys.

**Example**

```ts
boundedKey("order-1");
```

**Signature**

```ts
declare const boundedKey: (value: string) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-value.ts#L127)

### currentCorrelation

**Signature**

```ts
declare const currentCorrelation: () => string | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-value.ts#L16)

### currentTaskRunId

**Signature**

```ts
declare const currentTaskRunId: () => string | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-value.ts#L18)

### explicitOrDerivedKey

Resolves explicit or input-derived idempotency and checks agreement.

**Throws**

TypeError for mismatched or nonscalar keys.

**Example**

```ts
explicitOrDerivedKey(job, options, { orderId: "one" });
```

**Signature**

```ts
declare const explicitOrDerivedKey: (
  job: { readonly admission?: { readonly idempotency?: { readonly key?: string } } } | undefined,
  options: CopiedTriggerOptions,
  input: JsonValue | undefined,
) => string | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-value.ts#L92)

### isRecord

Tests for a nonarray provider record.

**Example**

```ts
isRecord({ accepted: true });
```

**Signature**

```ts
declare const isRecord: (value: unknown) => value is Record<string, unknown>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-value.ts#L175)

### isUnknown

Recognizes a native unknown submission response with recovery data.

**Example**

```ts
isUnknown(response);
```

**Signature**

```ts
declare const isUnknown: (value: unknown) => value is UnknownSubmissionOutcome;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-value.ts#L159)

### normalizeReceipt

Validates that native acceptance matches the pinned task and job binding.

**Throws**

JobReceiptError or JobSubmissionUnknownError for invalid outcomes.

**Example**

```ts
normalizeReceipt(receipt, binding, metadata);
```

**Signature**

```ts
declare const normalizeReceipt: (
  value: NativeReceipt | unknown,
  binding: JobsRuntimeBinding,
  metadata: TaskSubmissionMetadata,
) => RunHandle;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-value.ts#L45)

### normalizeSubmissionError

Normalizes provider rejection and uncertain acceptance into public errors.

**Example**

```ts
normalizeSubmissionError(cause, metadata);
```

**Signature**

```ts
declare const normalizeSubmissionError: (cause: unknown, metadata: TaskSubmissionMetadata) => Error;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-value.ts#L26)

### propagationFor

**Signature**

```ts
declare const propagationFor: (correlationId: string | undefined) => TracePropagation | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-value.ts#L17)

### scheduledTime

Resolves a trigger's absolute time or delay against a supplied clock.

**Throws**

TypeError for an invalid duration.

**Example**

```ts
scheduledTime({ delay: "1 second" }, 0);
```

**Signature**

```ts
declare const scheduledTime: (options: CopiedTriggerOptions, now: number) => string | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-value.ts#L139)

### validatedEnvelope

Rebuilds a canonical wire envelope from admitted input.

**Example**

```ts
validatedEnvelope(admission);
```

**Signature**

```ts
declare const validatedEnvelope: (
  admission: SubmissionAdmission,
) => { version: 1; kind: "void"; value?: never } | { version: 1; kind: "json"; value: JsonValue };
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support-value.ts#L149)

## `submission-support.ts`

### "./submission-support-hash.js" (namespace export)

Re-exports all named exports from the "./submission-support-hash.js" module.

**Signature**

```ts
export * from "./submission-support-hash.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support.ts#L3)

### "./submission-support-identity.js" (namespace export)

Re-exports all named exports from the "./submission-support-identity.js" module.

**Signature**

```ts
export * from "./submission-support-identity.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support.ts#L2)

### "./submission-support-receipts.js" (namespace export)

Re-exports all named exports from the "./submission-support-receipts.js" module.

**Signature**

```ts
export * from "./submission-support-receipts.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support.ts#L1)

### JobSubmissionWriteFailure

**Signature**

```ts
declare const JobSubmissionWriteFailure: typeof JobSubmissionWriteFailure;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support.ts#L9)

### SubmissionSupportFailure

**Signature**

```ts
declare const SubmissionSupportFailure: typeof SubmissionSupportFailure;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support.ts#L4)

### UnknownSubmissionOutcome

**Signature**

```ts
declare const UnknownSubmissionOutcome: UnknownSubmissionOutcome;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support.ts#L5)

### submitAbortable

**Signature**

```ts
declare const submitAbortable: (
  adapter: JobsAdapterRuntime,
  request: Parameters<JobsAdapterRuntime["submit"]>[0],
  context: OperationContext,
  signal: AbortSignal,
  metadata: TaskSubmissionMetadata,
) => Promise<unknown>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support.ts#L7)

### submitAbortableEffect

**Signature**

```ts
declare const submitAbortableEffect: (
  adapter: JobsAdapterRuntime,
  request: NativeSubmission,
  context: OperationContext,
  signal: AbortSignal,
  metadata: TaskSubmissionMetadata,
) => Effect<NativeReceipt, JobSubmissionWriteFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support.ts#L8)

## `submission-support.types.ts`

### UnknownSubmissionOutcome (type alias)

Submission response that requires recovery after an uncertain native write.

**Signature**

```ts
type UnknownSubmissionOutcome = JobUnknownOutcome & {
  readonly recovery: JobUnknownOutcome["recovery"];
};
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-support.types.ts#L4)

## `submission-write.ts`

### JobSubmissionWriteFailure (class)

Cancelled, uncertain, or provider failed native submission.

**Example**

```ts
if (error instanceof JobSubmissionWriteFailure) console.log(error.message);
```

**Signature**

```ts
declare class JobSubmissionWriteFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-write.ts#L11)

### submitAbortable

Promise compatibility adapter for native submission.

**Throws**

The original cancellation, unknown outcome, or provider error.

**Example**

```ts
await submitAbortable(adapter, request, context, signal, metadata);
```

**Signature**

```ts
declare const submitAbortable: (
  adapter: JobsAdapterRuntime,
  request: Parameters<JobsAdapterRuntime["submit"]>[0],
  context: OperationContext,
  signal: AbortSignal,
  metadata: TaskSubmissionMetadata,
) => Promise<unknown>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-write.ts#L84)

### submitAbortableEffect

Submits with an Effect owned abort listener and uncertain outcome semantics.

**Example**

```ts
Effect.runPromise(submitAbortableEffect(adapter, request, context, signal, metadata));
```

**Signature**

```ts
declare const submitAbortableEffect: (
  adapter: JobsAdapterRuntime,
  request: NativeSubmission,
  context: OperationContext,
  signal: AbortSignal,
  metadata: TaskSubmissionMetadata,
) => Effect.Effect<NativeReceipt, JobSubmissionWriteFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-write.ts#L24)

## `submission-write.types.ts`

Listener and abort state owned for one native submission.

### SubmissionWriteRegistration (interface)

Listener and abort state owned for one native submission.

**Signature**

```ts
export interface SubmissionWriteRegistration {
  readonly aborted: Promise<void>;
  readonly isAborted: () => boolean;
  readonly dispose: () => void;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission-write.types.ts#L2)

## `submission.ts`

### CanonicalTaskSubmissionOptions

**Signature**

```ts
declare const CanonicalTaskSubmissionOptions: CanonicalTaskSubmissionOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L2)

### JobReceiptError

**Signature**

```ts
declare const JobReceiptError: typeof JobReceiptError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L24)

### JobSubmissionCancelledError

**Signature**

```ts
declare const JobSubmissionCancelledError: typeof JobSubmissionCancelledError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L25)

### JobSubmissionError

**Signature**

```ts
declare const JobSubmissionError: typeof JobSubmissionError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L26)

### JobSubmissionPipelineFailure

**Signature**

```ts
declare const JobSubmissionPipelineFailure: typeof JobSubmissionPipelineFailure;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L29)

### JobSubmissionUnknownError

**Signature**

```ts
declare const JobSubmissionUnknownError: typeof JobSubmissionUnknownError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L27)

### SubmissionAdmission

**Signature**

```ts
declare const SubmissionAdmission: SubmissionAdmission;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L3)

### SubmissionPipeline

**Signature**

```ts
declare const SubmissionPipeline: SubmissionPipeline;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L4)

### TaskSubmissionMetadata

**Signature**

```ts
declare const TaskSubmissionMetadata: TaskSubmissionMetadata;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L5)

### createSubmissionPipeline

**Signature**

```ts
declare const createSubmissionPipeline: (runtime: JobsRuntime) => SubmissionPipeline;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L10)

### createSubmissionPipelineEffect

**Signature**

```ts
declare const createSubmissionPipelineEffect: (
  runtime: JobsRuntime,
) => Effect<SubmissionPipeline, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L11)

### prepareCanonicalSubmission

**Signature**

```ts
declare const prepareCanonicalSubmission: (
  runtime: JobsRuntime,
  task: TaskDescriptorAny,
  canonicalInput: ReturnType<typeof encodeJobWire>,
  options?: unknown,
  job?: JobDescriptorAny,
) => Promise<SubmissionAdmission>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L20)

### prepareCanonicalSubmissionEffect

**Signature**

```ts
declare const prepareCanonicalSubmissionEffect: (
  runtime: JobsRuntime,
  task: TaskDescriptorAny,
  canonicalInput: JobWireEnvelope,
  options?: unknown,
  job?: JobDescriptorAny | undefined,
) => Effect<
  Readonly<{
    binding: JobsRuntimeBinding;
    input: JsonValue;
    canonicalInput: JsonValue | undefined;
    inputHash: string;
    metadata: TaskSubmissionMetadata;
    job?: JobDescriptorAny;
    task: TaskDescriptorAny;
  }>,
  JobSubmissionPipelineFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L21)

### prepareSubmission

**Signature**

```ts
declare const prepareSubmission: (
  runtime: JobsRuntime,
  task: TaskDescriptorAny,
  input: unknown,
  options?: unknown,
  job?: JobDescriptorAny,
) => Promise<SubmissionAdmission>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L18)

### prepareSubmissionEffect

**Signature**

```ts
declare const prepareSubmissionEffect: (
  runtime: JobsRuntime,
  task: TaskDescriptorAny,
  input: unknown,
  options?: unknown,
  job?: JobDescriptorAny | undefined,
) => Effect<
  Readonly<{
    binding: JobsRuntimeBinding;
    input: JsonValue;
    canonicalInput: JsonValue | undefined;
    inputHash: string;
    metadata: TaskSubmissionMetadata;
    job?: JobDescriptorAny;
    task: TaskDescriptorAny;
  }>,
  JobSubmissionPipelineFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L19)

### submitCanonicalTask

**Signature**

```ts
declare const submitCanonicalTask: (
  runtime: JobsRuntime,
  task: TaskDescriptorAny,
  options: CanonicalTaskSubmissionOptions,
) => Promise<import("@relkit/contracts/jobs").RunHandle>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L7)

### submitCanonicalTaskEffect

**Signature**

```ts
declare const submitCanonicalTaskEffect: (
  runtime: JobsRuntime,
  task: TaskDescriptorAny,
  options: CanonicalTaskSubmissionOptions,
) => Effect<RunHandle, JobSubmissionPipelineFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L7)

### submitJob

**Signature**

```ts
declare const submitJob: (
  job: JobDescriptorAny,
  input: unknown,
  options?: unknown,
  runtime?: JobsRuntime,
) => Promise<RunHandle>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L14)

### submitJobEffect

**Signature**

```ts
declare const submitJobEffect: (
  job: JobDescriptorAny,
  input: unknown,
  options: unknown,
  runtime: JobsRuntime,
) => Effect<RunHandle, JobSubmissionPipelineFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L15)

### submitPreparedSubmission

**Signature**

```ts
declare const submitPreparedSubmission: (
  runtime: JobsRuntime,
  admission: SubmissionAdmission,
  signal?: AbortSignal,
) => Promise<RunHandle>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L8)

### submitTask

**Signature**

```ts
declare const submitTask: (
  task: TaskDescriptorAny,
  input: unknown,
  options?: unknown,
  runtime?: JobsRuntime,
) => Promise<RunHandle>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L12)

### submitTaskEffect

**Signature**

```ts
declare const submitTaskEffect: (
  task: TaskDescriptorAny,
  input: unknown,
  options: unknown,
  runtime: JobsRuntime,
) => Effect<RunHandle, JobSubmissionPipelineFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.ts#L13)

## `submission.types.ts`

### CanonicalTaskSubmissionOptions (interface)

Options accepted for canonical task submission operations.

**Signature**

```ts
export interface CanonicalTaskSubmissionOptions {
  readonly canonicalInput: JobWireEnvelope;
  readonly operationId: string;
  readonly idempotencyKey?: string;
  readonly signal?: AbortSignal;
  readonly scheduledFor?: string;
  readonly occurrenceIdentity?: string;
  readonly acceptanceIdentity?: string;
  readonly retryOfRunId?: string;
  readonly inputHash?: string;
  readonly inputSchemaHash?: string;
  readonly job?: JobDescriptorAny;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.types.ts#L23)

### SubmissionAdmission (interface)

Prepared admission identity and timing for one submission.

**Signature**

```ts
export interface SubmissionAdmission {
  readonly task: TaskDescriptorAny;
  readonly job?: JobDescriptorAny;
  readonly binding: JobsRuntimeBinding;
  readonly input: JsonValue;
  readonly canonicalInput: JsonValue | undefined;
  readonly inputHash: string;
  readonly metadata: TaskSubmissionMetadata;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.types.ts#L38)

### SubmissionPipeline (interface)

Validated submission stages and their prepared values.

**Signature**

```ts
export interface SubmissionPipeline {
  readonly submitTask: (
    task: TaskDescriptorAny,
    input: unknown,
    options?: unknown,
  ) => Promise<RunHandle>;
  readonly submitJob: (
    job: JobDescriptorAny,
    input: unknown,
    options?: unknown,
  ) => Promise<RunHandle>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.types.ts#L49)

### TaskSubmissionMetadata (interface)

Task identity, build, and tracing facts sent with a submission.

**Signature**

```ts
export interface TaskSubmissionMetadata {
  readonly operationId: string;
  readonly idempotencyKey?: string;
  readonly scheduledFor?: string;
  readonly tags?: readonly string[];
  readonly correlationId?: string;
  readonly parentRunId?: string;
  readonly propagation?: TracePropagation;
  readonly acceptanceIdentity?: string;
  readonly occurrenceIdentity?: string;
  readonly inputSchemaHash?: string;
  readonly retryOfRunId?: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/submission.types.ts#L8)

## `task-client.types.ts`

### InputOf (type alias)

Caller input inferred from a task or job schema.

**Signature**

```ts
type InputOf<T> = T extends { readonly input: infer Schema }
  ? Schema extends StandardSchemaV1
    ? InferInput<Schema>
    : unknown
  : unknown;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-client.types.ts#L6)

### JobTriggerClients (type alias)

Named job trigger clients mapped from declared dependencies.

**Signature**

```ts
type JobTriggerClients<M> = {
  readonly [Name in keyof NonNullable<M> & string]: TaskJobClientFor<NonNullable<M>[Name]>;
};
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-client.types.ts#L34)

### OutputOf (type alias)

Validated output inferred from a task or job schema.

**Signature**

```ts
type OutputOf<T> = T extends { readonly output: infer Schema }
  ? Schema extends StandardSchemaV1
    ? InferOutput<Schema>
    : unknown
  : unknown;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-client.types.ts#L13)

### TaskClientFor (type alias)

Typed trigger operation for one task reference.

**Signature**

```ts
type TaskClientFor<T> = {
  readonly trigger: (input: InputOf<T>, options?: ServerTriggerOptions) => Promise<RunHandle>;
};
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-client.types.ts#L20)

### TaskClients (type alias)

Named task trigger clients mapped from declared dependencies.

**Signature**

```ts
type TaskClients<M> = {
  readonly [Name in keyof NonNullable<M> & string]: TaskClientFor<NonNullable<M>[Name]>;
};
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-client.types.ts#L25)

## `task-context-policy.types.ts`

### NormalizedTaskRetryPolicy (interface)

Fully populated retry policy used by the runtime.

**Signature**

```ts
export interface NormalizedTaskRetryPolicy {
  readonly maxAttempts: number;
  readonly initialDelay: DurationInput;
  readonly maxDelay: DurationInput;
  readonly factor: number;
  readonly jitter: "none" | "full";
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-context-policy.types.ts#L19)

### TaskAuthContext (interface)

Session lookup supplied to a task through its auth dependency.

**Signature**

```ts
export interface TaskAuthContext<Session = unknown> {
  readonly getSession: () => Promise<Session | null>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-context-policy.types.ts#L5)

### TaskConcurrency (interface)

Limit and optional input key for task execution concurrency.

**Signature**

```ts
export interface TaskConcurrency<InputKey extends string = string> {
  readonly limit: number;
  readonly key?: InputKey;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-context-policy.types.ts#L34)

### TaskResources (interface)

CPU and memory resources requested for task execution.

**Signature**

```ts
export interface TaskResources {
  readonly cpu: number;
  readonly memory: MemoryInput;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-context-policy.types.ts#L28)

### TaskRetryPolicy (interface)

Authoring policy for task retry attempts and backoff.

**Signature**

```ts
export interface TaskRetryPolicy {
  readonly maxAttempts: number;
  readonly initialDelay?: DurationInput;
  readonly maxDelay?: DurationInput;
  readonly factor?: number;
  readonly jitter?: "none" | "full";
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-context-policy.types.ts#L10)

### TaskSleepOptions (interface)

Stable sleep key used when a durable task suspends.

**Signature**

```ts
export interface TaskSleepOptions {
  readonly key: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-context-policy.types.ts#L40)

## `task-core.types.ts`

### DurationInput

**Signature**

```ts
declare const DurationInput:
  | `${number} second`
  | `${number} seconds`
  | `${number} minute`
  | `${number} minutes`
  | `${number} hour`
  | `${number} hours`
  | `${number} day`
  | `${number} days`
  | `${number} week`
  | `${number} weeks`
  | `${number} millisecond`
  | `${number} milliseconds`;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L31)

### InputOf

**Signature**

```ts
declare const InputOf: InputOf<T>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L53)

### JobDescriptorForThisTask

**Signature**

```ts
declare const JobDescriptorForThisTask: JobDescriptorForThisTask<Task>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L24)

### JobTriggerClients

**Signature**

```ts
declare const JobTriggerClients: JobTriggerClients<M>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L54)

### MemoryInput (type alias)

Human-readable MiB or GiB memory quantity for task resources.

**Signature**

```ts
type MemoryInput = `${number} MiB` | `${number} GiB`;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L63)

### NormalizedTaskRetryPolicy

**Signature**

```ts
declare const NormalizedTaskRetryPolicy: NormalizedTaskRetryPolicy;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L35)

### OutputOf

**Signature**

```ts
declare const OutputOf: OutputOf<T>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L55)

### PublishedEventName (type alias)

Event names registered for the application.

**Signature**

```ts
type PublishedEventName = Extract<keyof Relkit.EventRegistry, string>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L65)

### RunResultOptions

**Signature**

```ts
declare const RunResultOptions: RunResultOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L25)

### ServerTriggerOptions

**Signature**

```ts
declare const ServerTriggerOptions: ServerTriggerOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L26)

### TaskAuthContext

**Signature**

```ts
declare const TaskAuthContext: TaskAuthContext<Session>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L33)

### TaskClientFor

**Signature**

```ts
declare const TaskClientFor: TaskClientFor<T>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L56)

### TaskClients

**Signature**

```ts
declare const TaskClients: TaskClients<M>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L57)

### TaskConcurrency

**Signature**

```ts
declare const TaskConcurrency: TaskConcurrency<InputKey>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L37)

### TaskContext (type alias)

Execution context assembled from the task's declared dependencies and capabilities.

**Signature**

```ts
type TaskContext<
  Execution extends TaskExecution = TaskExecution,
  Dependencies extends TaskDependencies = {},
  ProgressSchema extends StandardSchemaV1 | undefined = undefined,
  Streams extends TaskStreamSchemas = {},
  Publishes extends readonly string[] = readonly [],
> = TaskContextBase<Dependencies, Publishes> &
  (Execution extends "durable"
    ? {
        readonly sleep: (duration: DurationInput, options: TaskSleepOptions) => Promise<void>;
        readonly sleepUntil: (instant: string, options: TaskSleepOptions) => Promise<void>;
      }
    : {}) &
  ([ProgressSchema] extends [StandardSchemaV1]
    ? { readonly progress: TaskProgressEmitter<InferInput<ProgressSchema>> }
    : {}) &
  ([keyof Streams] extends [never] ? {} : { readonly streams: TaskStreamEmitters<Streams> });
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L131)

### TaskContextBase (interface)

Common invocation context shared by task handlers and hooks.

**Signature**

```ts
export interface TaskContextBase<
  Dependencies extends TaskDependencies = {},
  Publishes extends readonly string[] = readonly [],
> {
  readonly run: TaskRunContext;
  readonly invocation: InvocationMetadata;
  readonly signal: AbortSignal;
  readonly env: ResolvedApplicationEnv;
  readonly log: PublicLogger;
  readonly trace: PublicTrace;
  readonly time: PublicClock;
  readonly tasks: TaskClients<Dependencies["tasks"]>;
  readonly jobs: JobTriggerClients<Dependencies["jobs"]>;
  readonly agents: AgentClients<Dependencies["agents"]>;
  readonly buckets: BucketClients<Dependencies["buckets"]>;
  readonly cache: CacheClients<Dependencies["cache"]>;
  readonly events: EventClients<PublishedEventMap<Publishes>>;
  readonly database: RegisteredContext<"database", Readonly<Record<string, never>>>;
  readonly auth: RegisteredContext<"auth", TaskAuthContext>;
  readonly constants: RegisteredContext<"constants", Readonly<Record<string, never>>>;
  readonly prompts: RegisteredContext<"prompts", Readonly<Record<string, never>>>;
  readonly idempotencyKey: (operation: string) => string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L103)

### TaskDependencies (interface)

Resources a task explicitly declares before it can be executed.

**Signature**

```ts
export interface TaskDependencies {
  readonly tasks?: Readonly<Record<string, TaskRefAny>>;
  readonly jobs?: Readonly<Record<string, JobRefAny>>;
  readonly agents?: Readonly<Record<string, AgentRefAny>>;
  readonly buckets?: Readonly<Record<string, BucketRefAny>>;
  readonly cache?: Readonly<Record<string, CacheRefAny>>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L79)

### TaskExecution (type alias)

Whether a task uses durable or retryable execution.

**Signature**

```ts
type TaskExecution = "durable" | "retryable";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L61)

### TaskHookContext (type alias)

Invocation context visible to task lifecycle hooks.

**Signature**

```ts
type TaskHookContext<
  Dependencies extends TaskDependencies = {},
  Publishes extends readonly string[] = readonly [],
> = TaskContextBase<Dependencies, Publishes>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L150)

### TaskProgressEmitter

**Signature**

```ts
declare const TaskProgressEmitter: TaskProgressEmitter<Value>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L41)

### TaskProgressInput

**Signature**

```ts
declare const TaskProgressInput: TaskProgressInput<Schema>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L44)

### TaskProgressOutput

**Signature**

```ts
declare const TaskProgressOutput: TaskProgressOutput<Schema>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L45)

### TaskResources

**Signature**

```ts
declare const TaskResources: TaskResources;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L36)

### TaskRetryPolicy

**Signature**

```ts
declare const TaskRetryPolicy: TaskRetryPolicy;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L34)

### TaskRunContext (interface)

Stable run identity and attempt metadata available to a task.

**Signature**

```ts
export interface TaskRunContext {
  readonly runId: string;
  readonly jobId: string;
  readonly taskId: string;
  readonly taskVersion: string;
  readonly buildId: string;
  readonly service: string;
  readonly attempt: number;
  readonly acceptedAt: string;
  readonly scheduledFor?: string;
  readonly parentRunId?: string;
  readonly acceptanceIdentity?: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L88)

### TaskSleepOptions

**Signature**

```ts
declare const TaskSleepOptions: TaskSleepOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L38)

### TaskStreamEmitter

**Signature**

```ts
declare const TaskStreamEmitter: TaskStreamEmitter<Value>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L42)

### TaskStreamEmitters

**Signature**

```ts
declare const TaskStreamEmitters: TaskStreamEmitters<Streams>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L48)

### TaskStreamFrames

**Signature**

```ts
declare const TaskStreamFrames: TaskStreamFrames<Streams>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L49)

### TaskStreamInput

**Signature**

```ts
declare const TaskStreamInput: TaskStreamInput<Schema>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L46)

### TaskStreamItem

**Signature**

```ts
declare const TaskStreamItem: TaskStreamItem<Schema>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L43)

### TaskStreamOutput

**Signature**

```ts
declare const TaskStreamOutput: TaskStreamOutput<Schema>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L47)

### TaskStreamSchemas (type alias)

Named item schemas used to validate task stream emissions.

**Signature**

```ts
type TaskStreamSchemas = Readonly<Record<string, StandardSchemaV1>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L128)

### TaskTriggerOptions

**Signature**

```ts
declare const TaskTriggerOptions: TaskTriggerOptions<Task>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L27)

### TriggerOptions

**Signature**

```ts
declare const TriggerOptions: TriggerOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-core.types.ts#L28)

## `task-definition-inference.types.ts`

### TaskCallerInput (type alias)

Caller-facing input alias for a task reference.

**Signature**

```ts
type TaskCallerInput<T extends TaskRef> = TaskInput<T>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition-inference.types.ts#L18)

### TaskCanonicalInput (type alias)

Parsed canonical input inferred from a task's input schema.

**Signature**

```ts
type TaskCanonicalInput<T extends TaskRef> = T extends { readonly input: infer Schema }
  ? Schema extends StandardSchemaV1
    ? InferOutput<Schema>
    : unknown
  : unknown;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition-inference.types.ts#L20)

### TaskInput (type alias)

Caller input inferred from a task's input schema.

**Signature**

```ts
type TaskInput<T extends TaskRef> = T extends { readonly input: infer Schema }
  ? Schema extends StandardSchemaV1
    ? InferInput<Schema>
    : unknown
  : unknown;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition-inference.types.ts#L5)

### TaskOutput (type alias)

Validated output inferred from a task's output schema.

**Signature**

```ts
type TaskOutput<T extends TaskRef> = T extends { readonly output: infer Schema }
  ? Schema extends StandardSchemaV1
    ? InferOutput<Schema>
    : unknown
  : unknown;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition-inference.types.ts#L11)

### TaskRawHandlerOutput (type alias)

Handler return value accepted by a task's output schema.

**Signature**

```ts
type TaskRawHandlerOutput<T extends TaskRef> = T extends { readonly output: infer Schema }
  ? Schema extends StandardSchemaV1
    ? InferInput<Schema>
    : unknown
  : unknown;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition-inference.types.ts#L26)

### TaskValidatedOutput (type alias)

Output after validation through a task's output schema.

**Signature**

```ts
type TaskValidatedOutput<T extends TaskRef> = TaskOutput<T>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition-inference.types.ts#L32)

## `task-definition-support.types.ts`

### TaskFailureHook (type alias)

Hook invoked after task execution fails.

**Signature**

```ts
type TaskFailureHook<
  Dependencies extends TaskDependencies,
  Publishes extends readonly string[] = readonly [],
> = (error: unknown, context: TaskHookContext<Dependencies, Publishes>) => Promise<void>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition-support.types.ts#L52)

### TaskHandler (type alias)

Handler receives validated input and scoped context, then returns output or a declared failure.

**Signature**

```ts
type TaskHandler<
  InputSchema extends StandardSchemaV1,
  OutputSchema extends StandardSchemaV1,
  Execution extends TaskExecution,
  Dependencies extends TaskDependencies,
  Errors extends readonly ErrorDescriptorAny[],
  ProgressSchema extends StandardSchemaV1 | undefined,
  Streams extends TaskStreamSchemas,
  Publishes extends readonly string[],
> = (
  input: InferOutput<InputSchema>,
  context: TaskContext<Execution, Dependencies, ProgressSchema, Streams, Publishes>,
) => MaybePromise<TaskHandlerResult<InferInput<OutputSchema>, Errors>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition-support.types.ts#L13)

### TaskHandlerResult (type alias)

Allowed output and declared failure forms returned by a task handler.

**Signature**

```ts
type TaskHandlerResult<Output, Errors extends readonly ErrorDescriptorAny[]> =
  Output | DeclaredErrorsOf<Errors> | FunctionFailure<DeclaredErrorsOf<Errors>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition-support.types.ts#L28)

### TaskLogging (interface)

Log level and fields to redact during task execution.

**Signature**

```ts
export interface TaskLogging {
  readonly level?: "trace" | "debug" | "info" | "warn" | "error";
  readonly redact?: readonly string[];
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition-support.types.ts#L67)

### TaskObservation (interface)

Visibility settings for progress and named streams.

**Signature**

```ts
export interface TaskObservation<
  Streams extends TaskStreamSchemas = TaskStreamSchemas,
  ProgressSchema extends StandardSchemaV1 | undefined = StandardSchemaV1 | undefined,
> {
  readonly progress?: [ProgressSchema] extends [undefined] ? never : "live" | "durable";
  readonly streams?: Readonly<{ [Name in keyof Streams & string]?: "live" | "history" }>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition-support.types.ts#L58)

### TaskStartHook (type alias)

Hook invoked before task execution begins.

**Signature**

```ts
type TaskStartHook<
  InputSchema extends StandardSchemaV1,
  Dependencies extends TaskDependencies,
  Publishes extends readonly string[] = readonly [],
> = (
  input: InferOutput<InputSchema>,
  context: TaskHookContext<Dependencies, Publishes>,
) => Promise<void>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition-support.types.ts#L32)

### TaskSuccessHook (type alias)

Hook invoked after a task completes successfully.

**Signature**

```ts
type TaskSuccessHook<
  OutputSchema extends StandardSchemaV1,
  Dependencies extends TaskDependencies,
  Publishes extends readonly string[] = readonly [],
> = (
  output: InferOutput<OutputSchema>,
  context: TaskHookContext<Dependencies, Publishes>,
) => Promise<void>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition-support.types.ts#L42)

## `task-definition.types.ts`

### DefineTaskOptions (interface)

Authoring contract for task schemas, dependencies, hooks, and execution policy.

**Signature**

```ts
export interface DefineTaskOptions<
  Id extends string,
  Version extends string,
  InputSchema extends StandardSchemaV1,
  OutputSchema extends StandardSchemaV1,
  Dependencies extends TaskDependencies = {},
  Errors extends readonly ErrorDescriptorAny[] = readonly [],
  Publishes extends readonly PublishedEventName[] = readonly [],
  ProgressSchema extends StandardSchemaV1 | undefined = undefined,
  Streams extends TaskStreamSchemas = {},
  Execution extends TaskExecution = "durable",
> extends DescriptorMetadata {
  readonly id: Id;
  readonly version: Version;
  readonly input: InputSchema;
  readonly inputWire?: StandardSchemaV1<InferOutput<InputSchema>, InferOutput<InputSchema>>;
  readonly output: OutputSchema;
  readonly errors?: Errors;
  readonly execution?: Execution;
  readonly dependencies?: ValidTaskDependencies<Dependencies>;
  readonly publishes?: Publishes;
  readonly progress?: ProgressSchema;
  readonly streams?: Streams;
  readonly observation?: TaskObservation<Streams, ProgressSchema>;
  readonly retry?: TaskRetryPolicy;
  readonly resources?: TaskResources;
  readonly concurrency?: TaskConcurrency<CanonicalInputKey<InputSchema>>;
  readonly maxDuration?: DurationInput;
  readonly maxElapsed?: DurationInput;
  readonly logging?: TaskLogging;
  readonly onStart?: TaskStartHook<InputSchema, Dependencies, Publishes>;
  readonly onSuccess?: TaskSuccessHook<OutputSchema, Dependencies, Publishes>;
  readonly onFailure?: TaskFailureHook<Dependencies, Publishes>;
  readonly handler: TaskHandler<
    InputSchema,
    OutputSchema,
    Execution,
    Dependencies,
    Errors,
    ProgressSchema,
    Streams,
    Publishes
  >;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition.types.ts#L60)

### TaskCallerInput

**Signature**

```ts
declare const TaskCallerInput: TaskCallerInput<T>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition.types.ts#L32)

### TaskCanonicalInput

**Signature**

```ts
declare const TaskCanonicalInput: TaskCanonicalInput<T>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition.types.ts#L33)

### TaskDescriptor (interface)

Validated task definition with an attached trigger operation.

**Signature**

```ts
export interface TaskDescriptor<
  Id extends string,
  Version extends string,
  InputSchema extends StandardSchemaV1,
  OutputSchema extends StandardSchemaV1,
  Dependencies extends TaskDependencies = {},
  Errors extends readonly ErrorDescriptorAny[] = readonly [],
  Publishes extends readonly string[] = readonly [],
  ProgressSchema extends StandardSchemaV1 | undefined = undefined,
  Streams extends TaskStreamSchemas = {},
  Execution extends TaskExecution = TaskExecution,
>
  extends DescriptorBase<"task", Id>, TaskRef<Id, InputSchema, OutputSchema, Errors> {
  readonly version: Version;
  readonly execution: Execution;
  readonly inputWire?: StandardSchemaV1<InferOutput<InputSchema>, InferOutput<InputSchema>>;
  readonly dependencies?: Dependencies;
  readonly publishes?: Publishes;
  readonly progress?: ProgressSchema;
  readonly streams?: Streams;
  readonly observation?: TaskObservation<Streams, ProgressSchema>;
  readonly retry: NormalizedTaskRetryPolicy;
  readonly resources?: TaskResources;
  readonly concurrency?: TaskConcurrency<CanonicalInputKey<InputSchema>>;
  readonly maxDuration?: DurationInput;
  readonly maxElapsed?: DurationInput;
  readonly logging?: TaskLogging;
  readonly onStart?: TaskStartHook<InputSchema, Dependencies, Publishes>;
  readonly onSuccess?: TaskSuccessHook<OutputSchema, Dependencies, Publishes>;
  readonly onFailure?: TaskFailureHook<Dependencies, Publishes>;
  readonly handler: TaskHandler<
    InputSchema,
    OutputSchema,
    Execution,
    Dependencies,
    Errors,
    ProgressSchema,
    Streams,
    Publishes
  >;
  readonly trigger: (
    input: InferInput<InputSchema>,
    options?: TaskTriggerOptions<TaskRef<Id, InputSchema, OutputSchema, Errors>>,
  ) => Promise<RunHandle>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition.types.ts#L106)

### TaskDescriptorAny (type alias)

Task descriptor widened for registry and runtime boundaries.

**Signature**

```ts
type TaskDescriptorAny = DescriptorBase<"task", string> &
  TaskRef<string, StandardSchemaV1, StandardSchemaV1, readonly ErrorDescriptorAny[]> & {
    readonly version: string;
    readonly execution: TaskExecution;
    readonly inputWire?: StandardSchemaV1 | undefined;
    readonly dependencies?: TaskDependencies | undefined;
    readonly publishes?: readonly string[] | undefined;
    readonly progress?: StandardSchemaV1 | undefined;
    readonly streams?: TaskStreamSchemas | undefined;
    readonly observation?: TaskObservation | undefined;
    readonly retry: NormalizedTaskRetryPolicy;
    readonly resources?: TaskResources | undefined;
    readonly concurrency?: TaskConcurrency | undefined;
    readonly maxDuration?: DurationInput | undefined;
    readonly maxElapsed?: DurationInput | undefined;
    readonly logging?: TaskLogging | undefined;
    readonly onStart?: (...args: never[]) => Promise<void>;
    readonly onSuccess?: (...args: never[]) => Promise<void>;
    readonly onFailure?: (...args: never[]) => Promise<void>;
    readonly handler: (...args: never[]) => unknown;
    readonly trigger: (...args: never[]) => Promise<RunHandle>;
  };
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition.types.ts#L153)

### TaskFailureHook

**Signature**

```ts
declare const TaskFailureHook: TaskFailureHook<Dependencies, Publishes>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition.types.ts#L39)

### TaskHandler

**Signature**

```ts
declare const TaskHandler: TaskHandler<
  InputSchema,
  OutputSchema,
  Execution,
  Dependencies,
  Errors,
  ProgressSchema,
  Streams,
  Publishes
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition.types.ts#L40)

### TaskHandlerResult

**Signature**

```ts
declare const TaskHandlerResult: TaskHandlerResult<Output, Errors>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition.types.ts#L41)

### TaskInput

**Signature**

```ts
declare const TaskInput: TaskInput<T>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition.types.ts#L30)

### TaskLogging

**Signature**

```ts
declare const TaskLogging: TaskLogging;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition.types.ts#L42)

### TaskObservation

**Signature**

```ts
declare const TaskObservation: TaskObservation<Streams, ProgressSchema>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition.types.ts#L43)

### TaskOutput

**Signature**

```ts
declare const TaskOutput: TaskOutput<T>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition.types.ts#L31)

### TaskRawHandlerOutput

**Signature**

```ts
declare const TaskRawHandlerOutput: TaskRawHandlerOutput<T>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition.types.ts#L34)

### TaskStartHook

**Signature**

```ts
declare const TaskStartHook: TaskStartHook<InputSchema, Dependencies, Publishes>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition.types.ts#L44)

### TaskSuccessHook

**Signature**

```ts
declare const TaskSuccessHook: TaskSuccessHook<OutputSchema, Dependencies, Publishes>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition.types.ts#L45)

### TaskValidatedOutput

**Signature**

```ts
declare const TaskValidatedOutput: TaskValidatedOutput<T>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-definition.types.ts#L35)

## `task-emission.types.ts`

### TaskProgressEmitter (interface)

Emitter contract for task progress items.

**Signature**

```ts
export interface TaskProgressEmitter<Value = unknown> {
  readonly emit: (value: Value) => Promise<ProgressEmitReceipt>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-emission.types.ts#L6)

### TaskProgressInput (type alias)

Input type inferred for task progress.

**Signature**

```ts
type TaskProgressInput<Schema extends StandardSchemaV1> = InferInput<Schema>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-emission.types.ts#L18)

### TaskProgressOutput (type alias)

Output type inferred for task progress.

**Signature**

```ts
type TaskProgressOutput<Schema extends StandardSchemaV1> = InferOutput<Schema>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-emission.types.ts#L20)

### TaskStreamEmitter (interface)

Emitter contract for task stream items.

**Signature**

```ts
export interface TaskStreamEmitter<Value = unknown> {
  readonly emit: (value: Value) => Promise<ProgressEmitReceipt>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-emission.types.ts#L11)

### TaskStreamEmitters (type alias)

Named emitters whose input types follow each declared stream schema.

**Signature**

```ts
type TaskStreamEmitters<Streams extends TaskStreamSchemas> = {
  readonly [Name in keyof Streams & string]: TaskStreamEmitter<TaskStreamInput<Streams[Name]>>;
};
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-emission.types.ts#L26)

### TaskStreamFrames (type alias)

Discriminated frames for all declared task streams.

**Signature**

```ts
type TaskStreamFrames<Streams extends TaskStreamSchemas> = {
  readonly [Name in keyof Streams & string]: NamedStreamFrame<TaskStreamOutput<Streams[Name]>> & {
    readonly name: Name;
  };
}[keyof Streams & string];
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-emission.types.ts#L30)

### TaskStreamInput (type alias)

Input type inferred for task stream.

**Signature**

```ts
type TaskStreamInput<Schema extends StandardSchemaV1> = InferInput<Schema>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-emission.types.ts#L22)

### TaskStreamItem (type alias)

Validated item output inferred from a stream schema.

**Signature**

```ts
type TaskStreamItem<Schema extends StandardSchemaV1> = InferOutput<Schema>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-emission.types.ts#L16)

### TaskStreamOutput (type alias)

Output type inferred for task stream.

**Signature**

```ts
type TaskStreamOutput<Schema extends StandardSchemaV1> = InferOutput<Schema>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-emission.types.ts#L24)

## `task-observation-validation.ts`

### TaskObservationError (class)

An invalid task observation declaration.

**Example**

```ts
new TaskObservationError({ reason: "Task observation must be an object" });
```

**Signature**

```ts
declare class TaskObservationError
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-observation-validation.ts#L13)

### copyObservation

Synchronous task observation compatibility adapter.

**Throws**

TypeError when the declaration contradicts task schemas.

**Example**

```ts
copyObservation(undefined, undefined, undefined);
```

**Signature**

```ts
declare const copyObservation: (
  value: unknown,
  progress: unknown,
  streams: ObservationStreams,
) => TaskObservation | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-observation-validation.ts#L101)

### copyObservationEffect

Normalizes a task's progress and stream observation declarations in Effect.

**Example**

```ts
Effect.runPromise(copyObservationEffect(undefined, undefined, undefined));
```

**Signature**

```ts
declare const copyObservationEffect: (
  value: unknown,
  progress: unknown,
  streams: ObservationStreams,
) => Effect.Effect<NormalizedObservation, TaskObservationError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-observation-validation.ts#L25)

## `task-observation-validation.types.ts`

### NormalizedObservation (type alias)

Normalized observation configuration.

**Signature**

```ts
type NormalizedObservation = TaskObservation | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-observation-validation.types.ts#L9)

### ObservationStreams (type alias)

Declared schemas available to the task observation validator.

**Signature**

```ts
type ObservationStreams = TaskStreamSchemas | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-observation-validation.types.ts#L6)

### TaskObservation

**Signature**

```ts
declare const TaskObservation: TaskObservation<Streams, ProgressSchema>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-observation-validation.types.ts#L3)

### TaskStreamSchemas

**Signature**

```ts
declare const TaskStreamSchemas: Readonly<Record<string, StandardSchemaV1<unknown, unknown>>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-observation-validation.types.ts#L3)

## `task-policy-basic.ts`

### assertBoundedString

Synchronous bounded string assertion.

**Throws**

TypeError for invalid text.

**Example**

```ts
assertBoundedString("tag", "Task tag");
```

**Signature**

```ts
declare const assertBoundedString: (
  value: unknown,
  name: string,
  maxBytes?: number,
) => asserts value is string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-basic.ts#L49)

### assertBoundedStringEffect

Checks nonempty bounded UTF-8 text in Effect.

**Example**

```ts
Effect.runSync(assertBoundedStringEffect("tag", "Task tag"));
```

**Signature**

```ts
declare const assertBoundedStringEffect: (
  value: unknown,
  name: string,
  maxBytes?: any,
) => Effect.Effect<void, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-basic.ts#L35)

### assertCanonicalScalarKey

Synchronous required canonical scalar key assertion.

**Throws**

TypeError for unsupported projections or fields.

**Example**

```ts
assertCanonicalScalarKey(schema, "tenantId", "concurrency.key");
```

**Signature**

```ts
declare const assertCanonicalScalarKey: (
  schema: StandardSchemaV1,
  key: string,
  name: string,
) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-basic.ts#L114)

### assertCanonicalScalarKeyEffect

Checks that a concurrency key is a required canonical scalar in Effect.

**Example**

```ts
Effect.runSync(assertCanonicalScalarKeyEffect(schema, "tenantId", "concurrency.key"));
```

**Signature**

```ts
declare const assertCanonicalScalarKeyEffect: (
  schema: StandardSchemaV1<unknown, unknown>,
  key: string,
  name: string,
) => Effect.Effect<void, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-basic.ts#L100)

### assertFieldName

Synchronous top-level field name assertion.

**Throws**

TypeError for invalid paths or expressions.

**Example**

```ts
assertFieldName("tenantId");
```

**Signature**

```ts
declare const assertFieldName: (value: unknown, name?: string) => asserts value is string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-basic.ts#L73)

### assertFieldNameEffect

Checks a top-level canonical field name in Effect.

**Example**

```ts
Effect.runSync(assertFieldNameEffect("tenantId"));
```

**Signature**

```ts
declare const assertFieldNameEffect: (
  value: unknown,
  name?: any,
) => Effect.Effect<void, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-basic.ts#L62)

### memoryBytes

Synchronous memory quantity parser.

**Throws**

TypeError for invalid or unsafe quantities.

**Example**

```ts
memoryBytes("1 GiB");
```

**Signature**

```ts
declare const memoryBytes: (value: string) => number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-basic.ts#L90)

### memoryBytesEffect

Parses an exact MiB or GiB memory quantity in Effect.

**Example**

```ts
Effect.runSync(memoryBytesEffect("1 GiB"));
```

**Signature**

```ts
declare const memoryBytesEffect: (
  value: string,
) => Effect.Effect<number, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-basic.ts#L81)

### utf8Bytes

Synchronous UTF-8 byte count.

**Example**

```ts
utf8Bytes("hello");
```

**Signature**

```ts
declare const utf8Bytes: (value: string) => number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-basic.ts#L25)

### utf8BytesEffect

Counts encoded UTF-8 bytes in Effect.

**Example**

```ts
Effect.runSync(utf8BytesEffect("hello"));
```

**Signature**

```ts
declare const utf8BytesEffect: (
  value: string,
) => Effect.Effect<number, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-basic.ts#L17)

## `task-policy-copy.ts`

### copyConcurrency

Synchronous task concurrency copier.

**Throws**

TypeError for invalid concurrency settings.

**Example**

```ts
copyConcurrency({ limit: 2 });
```

**Signature**

```ts
declare const copyConcurrency: (
  value: unknown,
  canonicalSchema?: StandardSchemaV1,
) => TaskConcurrency | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-copy.ts#L64)

### copyConcurrencyEffect

Copies bounded concurrency settings in Effect.

**Example**

```ts
Effect.runSync(copyConcurrencyEffect({ limit: 2 }));
```

**Signature**

```ts
declare const copyConcurrencyEffect: (
  value: unknown,
  canonicalSchema?: StandardSchemaV1<unknown, unknown> | undefined,
) => Effect.Effect<TaskConcurrency<string> | undefined, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-copy.ts#L51)

### copyLogging

Synchronous logging policy copier.

**Throws**

TypeError for invalid logging policy.

**Example**

```ts
copyLogging({ level: "info" });
```

**Signature**

```ts
declare const copyLogging: (value: unknown) => TaskLogging | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-copy.ts#L84)

### copyLoggingEffect

Copies bounded logging settings in Effect.

**Example**

```ts
Effect.runSync(copyLoggingEffect({ level: "info" }));
```

**Signature**

```ts
declare const copyLoggingEffect: (
  value: unknown,
) => Effect.Effect<TaskLogging | undefined, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-copy.ts#L75)

### copyResources

Synchronous task resource copier.

**Throws**

TypeError for invalid CPU or memory settings.

**Example**

```ts
copyResources({ cpu: 1, memory: "1 GiB" });
```

**Signature**

```ts
declare const copyResources: (value: unknown) => TaskResources | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-copy.ts#L42)

### copyResourcesEffect

Copies validated CPU and memory settings in Effect.

**Example**

```ts
Effect.runSync(copyResourcesEffect({ cpu: 1, memory: "1 GiB" }));
```

**Signature**

```ts
declare const copyResourcesEffect: (
  value: unknown,
) => Effect.Effect<TaskResources | undefined, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-copy.ts#L33)

### copyTaskTags

Synchronous task tag copier.

**Throws**

TypeError for invalid or duplicate tags.

**Example**

```ts
copyTaskTags(["important"]);
```

**Signature**

```ts
declare const copyTaskTags: (value: unknown) => readonly string[] | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-copy.ts#L25)

### copyTaskTagsEffect

Copies bounded unique task tags in Effect.

**Example**

```ts
Effect.runSync(copyTaskTagsEffect(["important"]));
```

**Signature**

```ts
declare const copyTaskTagsEffect: (
  value: unknown,
) => Effect.Effect<ReadonlyArray<string> | undefined, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-copy.ts#L16)

## `task-policy-random.ts`

### TaskPolicyRandom (class)

Substitutable random sample source for retry jitter.

**Example**

```ts
const service = yield * TaskPolicyRandom;
```

**Signature**

```ts
declare class TaskPolicyRandom
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-random.ts#L8)

### retryDelayMillis

Synchronous bounded retry delay calculator.

**Throws**

TypeError for invalid attempts or samples.

**Example**

```ts
retryDelayMillis(policy, 2, 0, () => 0.5);
```

**Signature**

```ts
declare const retryDelayMillis: (
  policy: NormalizedTaskRetryPolicy,
  attempt: number,
  retryAfterMillis?: number,
  random?: () => number,
) => number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-random.ts#L54)

### retryDelayMillisEffect

Computes bounded retry delay in Effect using an injectable sample source.

**Example**

```ts
Effect.runSync(
  Effect.provide(
    retryDelayMillisEffect(policy, 2),
    taskPolicyRandomLayer(() => 0.5),
  ),
);
```

**Signature**

```ts
declare const retryDelayMillisEffect: (
  policy: NormalizedTaskRetryPolicy,
  attempt: number,
  retryAfterMillis?: any,
  random?: (() => number) | undefined,
) => Effect.Effect<number, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-random.ts#L27)

### taskPolicyRandomLayer

Provides deterministic retry jitter samples.

**Example**

```ts
taskPolicyRandomLayer(() => 0.5);
```

**Signature**

```ts
declare const taskPolicyRandomLayer: (
  sample: () => number,
) => Layer.Layer<TaskPolicyRandom, never, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-random.ts#L17)

## `task-policy-validation.ts`

### "./task-policy-basic.js" (namespace export)

Re-exports all named exports from the "./task-policy-basic.js" module.

**Signature**

```ts
export * from "./task-policy-basic.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-validation.ts#L9)

### "./task-policy-copy.js" (namespace export)

Re-exports all named exports from the "./task-policy-copy.js" module.

**Signature**

```ts
export * from "./task-policy-copy.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-validation.ts#L10)

### "./task-policy-random.js" (namespace export)

Re-exports all named exports from the "./task-policy-random.js" module.

**Signature**

```ts
export * from "./task-policy-random.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-validation.ts#L11)

### TASK_INPUT_MAX_BYTES

**Signature**

```ts
declare const TASK_INPUT_MAX_BYTES: 1048576;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-validation.ts#L2)

### TASK_ITEM_MAX_BYTES

**Signature**

```ts
declare const TASK_ITEM_MAX_BYTES: number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-validation.ts#L4)

### TASK_KEY_MAX_BYTES

**Signature**

```ts
declare const TASK_KEY_MAX_BYTES: 256;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-validation.ts#L5)

### TASK_MAX_TAGS

**Signature**

```ts
declare const TASK_MAX_TAGS: 20;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-validation.ts#L7)

### TASK_OUTPUT_MAX_BYTES

**Signature**

```ts
declare const TASK_OUTPUT_MAX_BYTES: 1048576;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-validation.ts#L3)

### TASK_REASON_MAX_BYTES

**Signature**

```ts
declare const TASK_REASON_MAX_BYTES: 1024;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-validation.ts#L6)

## `task-policy-value-copy.ts`

### assertCanonicalScalarKey

Requires a projected required string or number field for partitioning.

**Throws**

TypeError for missing or unsupported schema projections.

**Example**

```ts
assertCanonicalScalarKey(schema, "tenantId", "concurrency.key");
```

**Signature**

```ts
declare const assertCanonicalScalarKey: (
  schema: StandardSchemaV1,
  key: string,
  name: string,
) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value-copy.ts#L83)

### copyConcurrency

Validates a bounded concurrency limit and optional canonical scalar key.

**Throws**

TypeError for invalid limits or keys.

**Example**

```ts
copyConcurrency({ limit: 2, key: "tenantId" }, schema);
```

**Signature**

```ts
declare const copyConcurrency: (
  value: unknown,
  canonicalSchema?: StandardSchemaV1,
) => TaskConcurrency | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value-copy.ts#L57)

### copyLogging

Copies logging level and unique redaction keys.

**Throws**

TypeError for invalid levels or redaction names.

**Example**

```ts
copyLogging({ level: "info", redact: ["secret"] });
```

**Signature**

```ts
declare const copyLogging: (value: unknown) => TaskLogging | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value-copy.ts#L113)

### copyResources

Validates CPU and exact memory for a task resource request.

**Throws**

TypeError for invalid CPU or memory.

**Example**

```ts
copyResources({ cpu: 1, memory: "1 GiB" });
```

**Signature**

```ts
declare const copyResources: (value: unknown) => TaskResources | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value-copy.ts#L34)

### copyTaskTags

Copies unique, bounded task tags into a frozen list.

**Throws**

TypeError for duplicates, invalid text, or excess tags.

**Example**

```ts
copyTaskTags(["urgent"]);
```

**Signature**

```ts
declare const copyTaskTags: (value: unknown) => readonly string[] | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value-copy.ts#L16)

## `task-policy-value.ts`

### TASK_INPUT_MAX_BYTES

Maximum canonical task input bytes.

**Example**

```ts
TASK_INPUT_MAX_BYTES === 1_048_576;
```

**Signature**

```ts
declare const TASK_INPUT_MAX_BYTES: 1048576;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value.ts#L6)

### TASK_ITEM_MAX_BYTES

Maximum progress or stream item bytes.

**Example**

```ts
TASK_ITEM_MAX_BYTES === 65_536;
```

**Signature**

```ts
declare const TASK_ITEM_MAX_BYTES: number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value.ts#L14)

### TASK_KEY_MAX_BYTES

Maximum identifier and scalar key bytes.

**Example**

```ts
TASK_KEY_MAX_BYTES === 256;
```

**Signature**

```ts
declare const TASK_KEY_MAX_BYTES: 256;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value.ts#L18)

### TASK_MAX_TAGS

Maximum count of unique task tags.

**Example**

```ts
TASK_MAX_TAGS === 20;
```

**Signature**

```ts
declare const TASK_MAX_TAGS: 20;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value.ts#L26)

### TASK_OUTPUT_MAX_BYTES

Maximum canonical task output bytes.

**Example**

```ts
TASK_OUTPUT_MAX_BYTES === 1_048_576;
```

**Signature**

```ts
declare const TASK_OUTPUT_MAX_BYTES: 1048576;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value.ts#L10)

### TASK_REASON_MAX_BYTES

Maximum bounded reason text bytes.

**Example**

```ts
TASK_REASON_MAX_BYTES === 1_024;
```

**Signature**

```ts
declare const TASK_REASON_MAX_BYTES: 1024;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value.ts#L22)

### assertBoundedString

Requires a nonempty UTF-8 string within a configured byte limit.

**Throws**

TypeError for empty, nontext, or oversized values.

**Example**

```ts
assertBoundedString("order-1", "orderId");
```

**Signature**

```ts
declare const assertBoundedString: (
  value: unknown,
  name: string,
  maxBytes?: number,
) => asserts value is string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value.ts#L46)

### assertCanonicalScalarKey

**Signature**

```ts
declare const assertCanonicalScalarKey: (
  schema: StandardSchemaV1,
  key: string,
  name: string,
) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value.ts#L127)

### assertFieldName

Requires one top-level canonical field name rather than a path.

**Throws**

TypeError for invalid paths or expressions.

**Example**

```ts
assertFieldName("tenantId");
```

**Signature**

```ts
declare const assertFieldName: (value: unknown, name?: string) => asserts value is string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value.ts#L62)

### copyConcurrency

**Signature**

```ts
declare const copyConcurrency: (
  value: unknown,
  canonicalSchema?: StandardSchemaV1,
) => TaskConcurrency | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value.ts#L126)

### copyLogging

**Signature**

```ts
declare const copyLogging: (value: unknown) => TaskLogging | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value.ts#L128)

### copyResources

**Signature**

```ts
declare const copyResources: (value: unknown) => TaskResources | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value.ts#L125)

### copyTaskTags

**Signature**

```ts
declare const copyTaskTags: (value: unknown) => readonly string[] | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value.ts#L124)

### memoryBytes

Parses exact decimal MiB or GiB memory into safe integer bytes.

**Throws**

TypeError for fractional bytes or unsafe ranges.

**Example**

```ts
memoryBytes("1.5 GiB");
```

**Signature**

```ts
declare const memoryBytes: (value: string) => number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value.ts#L74)

### retryDelayMillis

Computes bounded task retry delay with optional jitter and retry-after floor.

**Throws**

TypeError for invalid attempt or jitter.

**Example**

```ts
retryDelayMillis(policy, 2, 0, () => 0.5);
```

**Signature**

```ts
declare const retryDelayMillis: (
  policy: NormalizedTaskRetryPolicy,
  attempt: number,
  retryAfterMillis?: number,
  random?: () => number,
) => number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value.ts#L99)

### utf8Bytes

Counts UTF-8 bytes rather than JavaScript code units.

**Example**

```ts
utf8Bytes("é");
```

**Signature**

```ts
declare const utf8Bytes: (value: string) => number;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-policy-value.ts#L35)

## `task-progress-emission.ts`

### createEmission

Builds a validated Effect emitter and its compatibility adapter.

**Example**

```ts
createEmission(progressSchema, options, "progress");
```

**Signature**

```ts
declare const createEmission: <S extends StandardSchemaV1>(
  schema: S,
  options: TaskEmitterOptions,
  kind: "progress" | "stream",
) => EffectTaskEmitter<InferInput<S>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress-emission.ts#L20)

## `task-progress-error.ts`

### TaskEmissionError (class)

Compatibility error thrown by Promise based task emitters.

**Example**

```ts
if (error instanceof TaskEmissionError) console.log(error.message);
```

**Signature**

```ts
declare class TaskEmissionError { constructor(
    readonly code: TaskEmissionErrorCode,
    message: string,
  ) }
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress-error.ts#L6)

### TaskEmissionFailure (class)

Expected emission failure in Effect, retaining the compatibility error.

**Example**

```ts
if (error instanceof TaskEmissionFailure) console.log(error.message);
```

**Signature**

```ts
declare class TaskEmissionFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress-error.ts#L18)

## `task-progress.ts`

### EffectTaskEmitter

**Signature**

```ts
declare const EffectTaskEmitter: EffectTaskEmitter<Value>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.ts#L19)

### TaskEmissionError

**Signature**

```ts
declare const TaskEmissionError: typeof TaskEmissionError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.ts#L12)

### TaskEmissionErrorCode

**Signature**

```ts
declare const TaskEmissionErrorCode: TaskEmissionErrorCode;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.ts#L18)

### TaskEmissionFailure

**Signature**

```ts
declare const TaskEmissionFailure: typeof TaskEmissionFailure;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.ts#L12)

### TaskEmissionSink

**Signature**

```ts
declare const TaskEmissionSink: TaskEmissionSink;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.ts#L14)

### TaskEmitterOptions

**Signature**

```ts
declare const TaskEmitterOptions: TaskEmitterOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.ts#L15)

### TaskStreamEmitterOptions

**Signature**

```ts
declare const TaskStreamEmitterOptions: TaskStreamEmitterOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.ts#L16)

### TaskStreamSink

**Signature**

```ts
declare const TaskStreamSink: TaskStreamSink;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.ts#L17)

### createTaskProgressEmitter

Compatibility factory for validated progress emitters.

**Throws**

TypeError if the configured byte limit is invalid.

**Example**

```ts
createTaskProgressEmitter(z.string());
```

**Signature**

```ts
declare const createTaskProgressEmitter: <S extends StandardSchemaV1>(
  schema: S,
  options?: TaskEmitterOptions,
) => EffectTaskEmitter<InferInput<S>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.ts#L44)

### createTaskProgressEmitterEffect

Creates a validated progress emitter in Effect.

**Example**

```ts
Effect.runSync(createTaskProgressEmitterEffect(z.string()));
```

**Signature**

```ts
declare const createTaskProgressEmitterEffect: <S extends StandardSchemaV1>(
  schema: S,
  options?: TaskEmitterOptions | undefined,
) => Effect.Effect<EffectTaskEmitter<InferInput<S>>, TaskEmissionFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.ts#L27)

### createTaskStreamEmitter

Compatibility factory for named stream emitters.

**Throws**

TypeError for invalid names or byte limits.

**Example**

```ts
createTaskStreamEmitter(z.string(), { name: "events" });
```

**Signature**

```ts
declare const createTaskStreamEmitter: <S extends StandardSchemaV1>(
  schema: S,
  options: TaskStreamEmitterOptions,
) => EffectTaskEmitter<InferInput<S>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.ts#L100)

### createTaskStreamEmitterEffect

Creates a named stream emitter in Effect.

**Example**

```ts
Effect.runSync(createTaskStreamEmitterEffect(z.string(), { name: "events" }));
```

**Signature**

```ts
declare const createTaskStreamEmitterEffect: <S extends StandardSchemaV1>(
  schema: S,
  options: TaskStreamEmitterOptions,
) => Effect.Effect<EffectTaskEmitter<InferInput<S>>, TaskEmissionFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.ts#L58)

## `task-progress.types.ts`

### EffectTaskEmitter (interface)

An emitter with a typed Effect operation alongside its Promise adapter.

**Signature**

```ts
export interface EffectTaskEmitter<Value> {
  readonly emit: (value: Value) => Promise<ProgressEmitReceipt>;
  readonly emitEffect: (value: Value) => Effect.Effect<ProgressEmitReceipt, TaskEmissionFailure>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.types.ts#L42)

### TaskEmissionErrorCode (type alias)

Stable compatibility error codes for task emissions.

**Signature**

```ts
type TaskEmissionErrorCode =
  | "RELKIT_TASK_PROGRESS_INVALID"
  | "RELKIT_TASK_STREAM_INVALID"
  | "RELKIT_TASK_PROGRESS_TOO_LARGE"
  | "RELKIT_TASK_STREAM_TOO_LARGE"
  | "RELKIT_TASK_PROGRESS_PERSISTENCE"
  | "RELKIT_TASK_STREAM_PERSISTENCE"
  | "RELKIT_TASK_PROGRESS_RETENTION"
  | "RELKIT_TASK_STREAM_RETENTION"
  | "RELKIT_TASK_EMISSION_ABORTED";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.types.ts#L31)

### TaskEmissionSink (type alias)

Sink for a validated progress item.

**Signature**

```ts
type TaskEmissionSink = (
  value: unknown,
  signal: AbortSignal,
) => MaybePromise<ProgressEmitReceipt | void>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.types.ts#L6)

### TaskEmitterOptions (interface)

Delivery and retention settings for a progress emitter.

**Signature**

```ts
export interface TaskEmitterOptions {
  readonly signal?: AbortSignal;
  readonly sink?: TaskEmissionSink;
  readonly durable?: boolean;
  readonly maxBytes?: number;
  readonly generation?: string;
  readonly requireGeneration?: boolean;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.types.ts#L11)

### TaskStreamEmitterOptions (interface)

Delivery settings for a named stream emitter.

**Signature**

```ts
export interface TaskStreamEmitterOptions extends Omit<TaskEmitterOptions, "sink"> {
  readonly name: string;
  readonly sink?: TaskStreamSink;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.types.ts#L20)

### TaskStreamSink (type alias)

Sink for a validated named stream item.

**Signature**

```ts
type TaskStreamSink = (
  value: unknown,
  signal: AbortSignal,
  identity: { readonly name: string; readonly generation?: string },
) => MaybePromise<ProgressEmitReceipt | void>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-progress.types.ts#L25)

## `task-types.ts`

### "./task-core.types.js" (namespace export)

Re-exports all named exports from the "./task-core.types.js" module.

**Signature**

```ts
export * from "./task-core.types.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-types.ts#L1)

### "./task-definition.types.js" (namespace export)

Re-exports all named exports from the "./task-definition.types.js" module.

**Signature**

```ts
export * from "./task-definition.types.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-types.ts#L2)

## `task-validation-copy.ts`

### copyDependencies

Synchronous dependency map copier.

**Throws**

TypeError for invalid dependencies.

**Example**

```ts
copyDependencies({ tasks: {} });
```

**Signature**

```ts
declare const copyDependencies: <Dependencies extends TaskDependencies>(
  value: unknown,
) => Dependencies | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-copy.ts#L53)

### copyDependenciesEffect

Copies declared task dependencies in Effect.

**Example**

```ts
Effect.runSync(copyDependenciesEffect({ tasks: {} }));
```

**Signature**

```ts
declare const copyDependenciesEffect: <Dependencies extends TaskDependencies>(
  value: unknown,
) => Effect.Effect<Dependencies | undefined, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-copy.ts#L41)

### copyErrors

Synchronous task error descriptor copier.

**Throws**

TypeError for invalid descriptors.

**Example**

```ts
copyErrors([]);
```

**Signature**

```ts
declare const copyErrors: (value: unknown) => readonly ErrorDescriptorAny[] | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-copy.ts#L72)

### copyErrorsEffect

Copies declared task errors in Effect.

**Example**

```ts
Effect.runSync(copyErrorsEffect([]));
```

**Signature**

```ts
declare const copyErrorsEffect: (
  value: unknown,
) => Effect.Effect<ReadonlyArray<ErrorDescriptorAny> | undefined, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-copy.ts#L63)

### copyStreams

Synchronous stream schema copier.

**Throws**

TypeError for invalid stream names or schemas.

**Example**

```ts
copyStreams({ text: z.string() });
```

**Signature**

```ts
declare const copyStreams: (value: unknown) => TaskStreamSchemas | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-copy.ts#L89)

### copyStreamsEffect

Copies named task stream schemas in Effect.

**Example**

```ts
Effect.runSync(copyStreamsEffect({ text: z.string() }));
```

**Signature**

```ts
declare const copyStreamsEffect: (
  value: unknown,
) => Effect.Effect<
  Readonly<Record<string, StandardSchemaV1<unknown, unknown>>> | undefined,
  TaskValidationFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-copy.ts#L80)

### duration

Synchronous task duration validator.

**Throws**

TypeError for invalid duration.

**Example**

```ts
duration("1 second", "maxDuration", true);
```

**Signature**

```ts
declare const duration: (value: unknown, name: string, positive?: boolean) => DurationInput;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-copy.ts#L111)

### normalizeRetry

Synchronous retry policy normalizer.

**Throws**

TypeError for invalid retry settings.

**Example**

```ts
normalizeRetry({ maxAttempts: 3 });
```

**Signature**

```ts
declare const normalizeRetry: (value: unknown) => NormalizedTaskRetryPolicy;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-copy.ts#L33)

### normalizeRetryEffect

Normalizes a task retry policy in Effect.

**Example**

```ts
Effect.runSync(normalizeRetryEffect({ maxAttempts: 3 }));
```

**Signature**

```ts
declare const normalizeRetryEffect: (
  value: unknown,
) => Effect.Effect<NormalizedTaskRetryPolicy, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-copy.ts#L24)

### taskDurationEffect

Validates a readable task duration in Effect.

**Example**

```ts
Effect.runSync(taskDurationEffect("1 second", "maxDuration", true));
```

**Signature**

```ts
declare const taskDurationEffect: (
  value: unknown,
  name: string,
  positive?: any,
) => Effect.Effect<
  | `${number} second`
  | `${number} seconds`
  | `${number} minute`
  | `${number} minutes`
  | `${number} hour`
  | `${number} hours`
  | `${number} day`
  | `${number} days`
  | `${number} week`
  | `${number} weeks`
  | `${number} millisecond`
  | `${number} milliseconds`,
  TaskValidationFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-copy.ts#L99)

## `task-validation-run.ts`

### TaskValidationFailure (class)

Expected task definition validation failure with its original cause.

**Example**

```ts
if (error instanceof TaskValidationFailure) console.log(error.message);
```

**Signature**

```ts
declare class TaskValidationFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-run.ts#L7)

### runTaskValidation

Synchronous task validation compatibility runner.

**Throws**

The original validation error on failure.

**Example**

```ts
runTaskValidation(taskValidationEffect("task.validate", () => descriptor));
```

**Signature**

```ts
declare const runTaskValidation: <A>(effect: Effect.Effect<A, TaskValidationFailure>) => A;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-run.ts#L32)

### taskValidationEffect

Runs a task validation calculation in observed Effect.

**Example**

```ts
taskValidationEffect("task.validate", () => descriptor);
```

**Signature**

```ts
declare const taskValidationEffect: <A>(
  operation: JobsOperation,
  compute: () => A,
) => Effect.Effect<A, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-run.ts#L17)

## `task-validation-schema.ts`

### assertCanonicalSchemaSupport

Synchronous canonical schema assertion.

**Throws**

TypeError for unsupported schema projections.

**Example**

```ts
assertCanonicalSchemaSupport(z.string(), "output");
```

**Signature**

```ts
declare const assertCanonicalSchemaSupport: (
  schema: StandardSchemaV1,
  name: string,
  allowVoid?: boolean,
) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-schema.ts#L90)

### assertCanonicalSchemaSupportEffect

Checks canonical schema projection in Effect.

**Example**

```ts
Effect.runSync(assertCanonicalSchemaSupportEffect(z.string(), "output"));
```

**Signature**

```ts
declare const assertCanonicalSchemaSupportEffect: (
  schema: StandardSchemaV1<unknown, unknown>,
  name: string,
  allowVoid?: any,
) => Effect.Effect<void, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-schema.ts#L76)

### assertCanonicalStreamSupport

Synchronous named stream schema assertion.

**Throws**

TypeError for noncanonical stream schemas.

**Example**

```ts
assertCanonicalStreamSupport({ text: z.string() });
```

**Signature**

```ts
declare const assertCanonicalStreamSupport: (streams: TaskStreamSchemas | undefined) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-schema.ts#L114)

### assertCanonicalStreamSupportEffect

Checks each named stream schema in Effect.

**Example**

```ts
Effect.runSync(assertCanonicalStreamSupportEffect({ text: z.string() }));
```

**Signature**

```ts
declare const assertCanonicalStreamSupportEffect: (
  streams: Readonly<Record<string, StandardSchemaV1<unknown, unknown>>> | undefined,
) => Effect.Effect<void, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-schema.ts#L102)

### assertInputWireSupport

Synchronous task inputWire support assertion.

**Throws**

TypeError for noncanonical input support.

**Example**

```ts
assertInputWireSupport(z.string(), undefined);
```

**Signature**

```ts
declare const assertInputWireSupport: (input: StandardSchemaV1, inputWire: unknown) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-schema.ts#L66)

### assertInputWireSupportEffect

Checks canonical support for input and optional inputWire in Effect.

**Example**

```ts
Effect.runSync(assertInputWireSupportEffect(z.string(), undefined));
```

**Signature**

```ts
declare const assertInputWireSupportEffect: (
  input: StandardSchemaV1<unknown, unknown>,
  inputWire: unknown,
) => Effect.Effect<void, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-schema.ts#L55)

### assertSchema

Synchronous Standard Schema v1 assertion.

**Throws**

TypeError for invalid schema.

**Example**

```ts
assertSchema(z.string(), "Task input");
```

**Signature**

```ts
declare const assertSchema: (value: unknown, name: string) => asserts value is StandardSchemaV1;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-schema.ts#L29)

### assertSchemaEffect

Asserts Standard Schema v1 in Effect.

**Example**

```ts
Effect.runSync(assertSchemaEffect(z.string(), "Task input"));
```

**Signature**

```ts
declare const assertSchemaEffect: (
  value: unknown,
  name: string,
) => Effect.Effect<void, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-schema.ts#L18)

### normalizeVersion

Synchronous task version normalizer.

**Throws**

Original invalid identifier error.

**Example**

```ts
normalizeVersion("v1");
```

**Signature**

```ts
declare const normalizeVersion: (value: unknown) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-schema.ts#L46)

### normalizeVersionEffect

Normalizes a task version or identifier in Effect.

**Example**

```ts
Effect.runSync(normalizeVersionEffect("v1"));
```

**Signature**

```ts
declare const normalizeVersionEffect: (
  value: unknown,
) => Effect.Effect<string, TaskValidationFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-schema.ts#L37)

## `task-validation-value-copy.ts`

### copyDependencies

Copies declared task dependencies by supported kind and stable name.

**Throws**

TypeError for unsupported kinds or invalid references.

**Example**

```ts
copyDependencies({ jobs: { send: jobRef } });
```

**Signature**

```ts
declare const copyDependencies: <Dependencies extends TaskDependencies>(
  value: unknown,
) => Dependencies | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-value-copy.ts#L15)

### copyErrors

Copies unique declared task error descriptors.

**Throws**

TypeError for invalid descriptors or duplicate IDs.

**Example**

```ts
copyErrors([notFoundError]);
```

**Signature**

```ts
declare const copyErrors: (value: unknown) => readonly ErrorDescriptorAny[] | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-value-copy.ts#L56)

### copyStreams

Copies named task streams with Standard Schema validators.

**Throws**

TypeError for invalid stream names or validators.

**Example**

```ts
copyStreams({ events: eventSchema });
```

**Signature**

```ts
declare const copyStreams: (value: unknown) => TaskStreamSchemas | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-value-copy.ts#L72)

## `task-validation-value.ts`

### assertCanonicalSchemaSupport

Checks a schema's faithful canonical output projection.

**Throws**

TypeError for transforms or missing projections.

**Example**

```ts
assertCanonicalSchemaSupport(outputSchema, "Task output");
```

**Signature**

```ts
declare const assertCanonicalSchemaSupport: (
  schema: StandardSchemaV1,
  name: string,
  allowVoid?: boolean,
) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-value.ts#L60)

### assertCanonicalStreamSupport

Checks every stream item schema for canonical output support.

**Throws**

TypeError for unsupported stream item schemas.

**Example**

```ts
assertCanonicalStreamSupport({ events: eventSchema });
```

**Signature**

```ts
declare const assertCanonicalStreamSupport: (streams: TaskStreamSchemas | undefined) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-value.ts#L78)

### assertInputWireSupport

Requires transformed input to provide a canonical identity validator.

**Throws**

TypeError for unsupported transformations.

**Example**

```ts
assertInputWireSupport(inputSchema, inputWireSchema);
```

**Signature**

```ts
declare const assertInputWireSupport: (input: StandardSchemaV1, inputWire: unknown) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-value.ts#L39)

### assertSchema

Requires the Standard Schema v1 validator shape.

**Throws**

TypeError for missing or malformed Standard Schema fields.

**Example**

```ts
assertSchema(schema, "Task input");
```

**Signature**

```ts
declare const assertSchema: (value: unknown, name: string) => asserts value is StandardSchemaV1;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-value.ts#L13)

### duration

Validates readable duration text and optional positivity.

**Throws**

TypeError for unreadable or nonpositive durations.

**Example**

```ts
duration("1 second", "timeout", true);
```

**Signature**

```ts
declare const duration: (value: unknown, name: string, positive?: boolean) => DurationInput;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-value.ts#L120)

### normalizeRetry

Applies safe retry defaults and validates delay, factor, and jitter.

**Throws**

TypeError for invalid attempts or delay relationships.

**Example**

```ts
normalizeRetry({ maxAttempts: 5 });
```

**Signature**

```ts
declare const normalizeRetry: (value: unknown) => NormalizedTaskRetryPolicy;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-value.ts#L89)

### normalizeVersion

Normalizes the task version to a stable identifier.

**Throws**

TypeError for invalid identifiers.

**Example**

```ts
normalizeVersion("v1");
```

**Signature**

```ts
declare const normalizeVersion: (value: unknown) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation-value.ts#L29)

## `task-validation.ts`

### "./task-validation-copy.js" (namespace export)

Re-exports all named exports from the "./task-validation-copy.js" module.

**Signature**

```ts
export * from "./task-validation-copy.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation.ts#L2)

### "./task-validation-schema.js" (namespace export)

Re-exports all named exports from the "./task-validation-schema.js" module.

**Signature**

```ts
export * from "./task-validation-schema.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation.ts#L1)

### TaskValidationFailure

**Signature**

```ts
declare const TaskValidationFailure: typeof TaskValidationFailure;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation.ts#L3)

### copyConcurrency

**Signature**

```ts
declare const copyConcurrency: (
  value: unknown,
  canonicalSchema?: StandardSchemaV1,
) => TaskConcurrency | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation.ts#L5)

### copyLogging

**Signature**

```ts
declare const copyLogging: (value: unknown) => TaskLogging | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation.ts#L5)

### copyObservation

**Signature**

```ts
declare const copyObservation: (
  value: unknown,
  progress: unknown,
  streams: ObservationStreams,
) => TaskObservation | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation.ts#L4)

### copyResources

**Signature**

```ts
declare const copyResources: (value: unknown) => TaskResources | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-validation.ts#L5)

## `task-wire-codec.ts`

### decodeJobWire

Synchronous validated job wire decoder.

**Throws**

TaskWireValidationError or TypeError for malformed input.

**Example**

```ts
decodeJobWire(encodeTaskInput("value"));
```

**Signature**

```ts
declare const decodeJobWire: (envelope: unknown, maxBytes?: number) => JsonValue | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-codec.ts#L92)

### decodeJobWireEffect

Decodes and validates a job wire envelope in Effect.

**Example**

```ts
Effect.runSync(decodeJobWireEffect(encodeTaskInput("value")));
```

**Signature**

```ts
declare const decodeJobWireEffect: (
  envelope: unknown,
  maxBytes?: any,
) => Effect.Effect<JsonValue | undefined, TaskWireFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-codec.ts#L81)

### encodeJobWire

Synchronous generic job wire encoder.

**Throws**

TaskWireValidationError or TypeError for invalid input.

**Example**

```ts
encodeJobWire({ id: 1 });
```

**Signature**

```ts
declare const encodeJobWire: (value: unknown, maxBytes?: number) => JobWireEnvelope;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-codec.ts#L29)

### encodeJobWireEffect

Encodes a generic job wire envelope in Effect.

**Example**

```ts
Effect.runSync(encodeJobWireEffect({ id: 1 }));
```

**Signature**

```ts
declare const encodeJobWireEffect: (
  value: unknown,
  maxBytes?: any,
) => Effect.Effect<JobWireEnvelope, TaskWireFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-codec.ts#L18)

### encodeTaskInput

Synchronous task input encoder.

**Throws**

TaskWireValidationError or TypeError for invalid input.

**Example**

```ts
encodeTaskInput({ id: 1 });
```

**Signature**

```ts
declare const encodeTaskInput: (value: unknown, maxBytes?: number) => JobWireEnvelope;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-codec.ts#L49)

### encodeTaskInputEffect

Encodes task input in Effect.

**Example**

```ts
Effect.runSync(encodeTaskInputEffect({ id: 1 }));
```

**Signature**

```ts
declare const encodeTaskInputEffect: (
  value: unknown,
  maxBytes?: any,
) => Effect.Effect<JobWireEnvelope, TaskWireFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-codec.ts#L38)

### encodeTaskOutput

Synchronous task output encoder.

**Throws**

TaskWireValidationError or TypeError for invalid output.

**Example**

```ts
encodeTaskOutput("done");
```

**Signature**

```ts
declare const encodeTaskOutput: (value: unknown, maxBytes?: number) => JobWireEnvelope;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-codec.ts#L69)

### encodeTaskOutputEffect

Encodes task output in Effect.

**Example**

```ts
Effect.runSync(encodeTaskOutputEffect("done"));
```

**Signature**

```ts
declare const encodeTaskOutputEffect: (
  value: unknown,
  maxBytes?: any,
) => Effect.Effect<JobWireEnvelope, TaskWireFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-codec.ts#L58)

## `task-wire-run.ts`

### TaskWireFailure (class)

Expected wire operation failure with its original compatibility error.

**Example**

```ts
if (error instanceof TaskWireFailure) console.log(error.message);
```

**Signature**

```ts
declare class TaskWireFailure
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-run.ts#L8)

### runWirePromise

Runs an Effect wire operation for Promise compatibility.

**Throws**

The original wire validation error on failure.

**Example**

```ts
await runWirePromise(wirePromiseEffect("wire.decode", async () => decoded));
```

**Signature**

```ts
declare const runWirePromise: <A>(effect: Effect.Effect<A, TaskWireFailure>) => Promise<A>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-run.ts#L67)

### runWireSync

Runs an Effect wire operation for synchronous compatibility.

**Throws**

The original wire validation error on failure.

**Example**

```ts
runWireSync(wireEffect("wire.encode", () => encoded));
```

**Signature**

```ts
declare const runWireSync: <A>(effect: Effect.Effect<A, TaskWireFailure>) => A;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-run.ts#L56)

### wireEffect

Lifts a synchronous wire operation into observed Effect.

**Example**

```ts
wireEffect("wire.encode", () => encoded);
```

**Signature**

```ts
declare const wireEffect: <A>(
  operation: JobsOperation,
  compute: () => A,
) => Effect.Effect<A, TaskWireFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-run.ts#L18)

### wirePromiseEffect

Lifts an asynchronous wire operation into observed Effect.

**Example**

```ts
wirePromiseEffect("wire.decode", async () => decoded);
```

**Signature**

```ts
declare const wirePromiseEffect: <A>(
  operation: JobsOperation,
  compute: () => Promise<A>,
) => Effect.Effect<A, TaskWireFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-run.ts#L37)

## `task-wire-support.ts`

### TaskWireErrorCode

**Signature**

```ts
declare const TaskWireErrorCode: TaskWireErrorCode;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-support.ts#L7)

### TaskWireValidationError (class)

Invalid canonical task wire data with a stable machine-readable code.

**Example**

```ts
new TaskWireValidationError("RELKIT_TASK_WIRE_INVALID", "Invalid envelope");
```

**Signature**

```ts
declare class TaskWireValidationError { constructor(
    readonly code: TaskWireErrorCode,
    message: string,
  ) }
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-support.ts#L12)

### assertByteLimit

Requires a positive safe integer wire size limit.

**Throws**

TypeError for zero, negative, or noninteger limits.

**Example**

```ts
assertByteLimit(1024);
```

**Signature**

```ts
declare const assertByteLimit: (maxBytes: number) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-support.ts#L114)

### assertEnvelope

Rejects hostile or malformed wire envelope object shapes.

**Throws**

TaskWireValidationError for invalid or accessor-backed envelopes.

**Example**

```ts
assertEnvelope({ version: 1, kind: "void" });
```

**Signature**

```ts
declare const assertEnvelope: (value: unknown) => asserts value is JobWireEnvelope;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-support.ts#L125)

### assertSize

Enforces the encoded UTF-8 size for canonical JSON text.

**Throws**

TaskWireValidationError or TypeError for invalid size.

**Example**

```ts
assertSize("{}", 1024, "RELKIT_TASK_INPUT_TOO_LARGE", "input");
```

**Signature**

```ts
declare const assertSize: (
  text: string,
  maxBytes: number,
  code: TaskWireErrorCode,
  name: string,
) => void;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-support.ts#L96)

### encode

Canonicalizes JSON or void data into a bounded wire envelope.

**Throws**

TaskWireValidationError or TypeError for invalid data or limit.

**Example**

```ts
encode({ id: "one" }, 1024, "RELKIT_TASK_INPUT_INVALID", "RELKIT_TASK_INPUT_TOO_LARGE", "input");
```

**Signature**

```ts
declare const encode: (
  value: unknown,
  maxBytes: number,
  invalidCode: TaskWireErrorCode,
  sizeCode: TaskWireErrorCode,
  name: string,
) => JobWireEnvelope;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-support.ts#L35)

### hasOwn

Checks an envelope's own property without consulting its prototype.

**Example**

```ts
hasOwn({ kind: "void" }, "kind");
```

**Signature**

```ts
declare const hasOwn: (value: object, key: PropertyKey) => boolean;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-support.ts#L156)

### invalidEnvelope

Fails with the stable invalid-envelope error.

**Throws**

TaskWireValidationError with the wire-invalid code.

**Example**

```ts
if (invalid) invalidEnvelope();
```

**Signature**

```ts
declare const invalidEnvelope: () => never;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-support.ts#L140)

### message

Converts a validator rejection into a bounded diagnostic string.

**Example**

```ts
message(new Error("invalid"));
```

**Signature**

```ts
declare const message: (error: unknown) => string;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-support.ts#L165)

### validateValue

Runs Standard Schema validation and retains its parsed output.

**Throws**

TaskWireValidationError for issues or validator rejection.

**Example**

```ts
await validateValue(schema, "hello", "RELKIT_TASK_INPUT_INVALID");
```

**Signature**

```ts
declare const validateValue: <S extends StandardSchemaV1>(
  schema: S,
  value: InferInput<S>,
  code: Extract<TaskWireErrorCode, "RELKIT_TASK_INPUT_INVALID" | "RELKIT_TASK_OUTPUT_INVALID">,
) => Promise<InferOutput<S>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-support.ts#L67)

## `task-wire-support.types.ts`

Stable codes for wire validation, identity, and size errors.

### TaskWireErrorCode (type alias)

Stable codes for wire validation, identity, and size errors.

**Signature**

```ts
type TaskWireErrorCode =
  | "RELKIT_TASK_WIRE_INVALID"
  | "RELKIT_TASK_INPUT_INVALID"
  | "RELKIT_TASK_OUTPUT_INVALID"
  | "RELKIT_TASK_INPUT_WIRE_NON_IDENTITY"
  | "RELKIT_TASK_INPUT_TOO_LARGE"
  | "RELKIT_TASK_OUTPUT_TOO_LARGE";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-support.types.ts#L2)

## `task-wire-validation.ts`

### validateCanonicalInput

Promise compatibility canonical input validation.

**Throws**

TaskWireValidationError or TypeError for invalid input.

**Example**

```ts
await validateCanonicalInput(z.number(), 7);
```

**Signature**

```ts
declare const validateCanonicalInput: <S extends StandardSchemaV1>(
  schema: S,
  canonical: unknown,
  inputWire?: StandardSchemaV1<InferOutput<S>, InferOutput<S>>,
  maxBytes?: number,
) => Promise<InferOutput<S>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-validation.ts#L66)

### validateCanonicalInputEffect

Validates retained canonical task input in Effect.

**Example**

```ts
Effect.runPromise(validateCanonicalInputEffect(z.number(), 7));
```

**Signature**

```ts
declare const validateCanonicalInputEffect: <S extends StandardSchemaV1>(
  schema: S,
  canonical: unknown,
  inputWire?: StandardSchemaV1<InferOutput<S>, InferOutput<S>> | undefined,
  maxBytes?: number | undefined,
) => Effect.Effect<InferOutput<S>, TaskWireFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-validation.ts#L46)

### validateCanonicalOutput

Promise compatibility canonical output validation.

**Throws**

TaskWireValidationError or TypeError for invalid output.

**Example**

```ts
await validateCanonicalOutput(z.string(), "done");
```

**Signature**

```ts
declare const validateCanonicalOutput: <S extends StandardSchemaV1>(
  schema: S,
  canonical: unknown,
  maxBytes?: number,
) => Promise<InferOutput<S>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-validation.ts#L125)

### validateCanonicalOutputEffect

Validates a retained canonical task output in Effect.

**Example**

```ts
Effect.runPromise(validateCanonicalOutputEffect(z.string(), "done"));
```

**Signature**

```ts
declare const validateCanonicalOutputEffect: <S extends StandardSchemaV1>(
  schema: S,
  canonical: unknown,
  maxBytes?: number | undefined,
) => Effect.Effect<InferOutput<S>, TaskWireFailure, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-validation.ts#L111)

### validateTaskInput

Promise compatibility input validation.

**Throws**

TaskWireValidationError or TypeError for invalid input.

**Example**

```ts
await validateTaskInput(z.string(), "value");
```

**Signature**

```ts
declare const validateTaskInput: <S extends StandardSchemaV1>(
  schema: S,
  input: InferInput<S>,
  maxBytes?: number,
) => Promise<{ readonly value: InferOutput<S>; readonly wire: JobWireEnvelope }>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-validation.ts#L31)

### validateTaskInputEffect

Validates and encodes submitted task input in Effect.

**Example**

```ts
Effect.runPromise(validateTaskInputEffect(z.string(), "value"));
```

**Signature**

```ts
declare const validateTaskInputEffect: <S extends StandardSchemaV1>(
  schema: S,
  input: InferInput<S>,
  maxBytes?: number | undefined,
) => Effect.Effect<
  { readonly value: InferOutput<S>; readonly wire: JobWireEnvelope },
  TaskWireFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-validation.ts#L19)

### validateTaskOutput

Promise compatibility output validation.

**Throws**

TaskWireValidationError or TypeError for invalid output.

**Example**

```ts
await validateTaskOutput(z.string(), "done");
```

**Signature**

```ts
declare const validateTaskOutput: <S extends StandardSchemaV1>(
  schema: S,
  output: InferInput<S>,
  maxBytes?: number,
) => Promise<{ readonly value: InferOutput<S>; readonly wire: JobWireEnvelope }>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-validation.ts#L97)

### validateTaskOutputEffect

Validates and encodes task output in Effect.

**Example**

```ts
Effect.runPromise(validateTaskOutputEffect(z.string(), "done"));
```

**Signature**

```ts
declare const validateTaskOutputEffect: <S extends StandardSchemaV1>(
  schema: S,
  output: InferInput<S>,
  maxBytes?: number | undefined,
) => Effect.Effect<
  { readonly value: InferOutput<S>; readonly wire: JobWireEnvelope },
  TaskWireFailure,
  never
>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-validation.ts#L81)

## `task-wire-value-validation.ts`

### validateCanonicalInput

Validates retained input without changing its canonical JSON bytes.

**Throws**

TaskWireValidationError for schema, size, or identity failures.

**Example**

```ts
await validateCanonicalInput(schema, "hello");
```

**Signature**

```ts
declare const validateCanonicalInput: <S extends StandardSchemaV1>(
  schema: S,
  canonical: unknown,
  inputWire?: StandardSchemaV1<InferOutput<S>, InferOutput<S>>,
  maxBytes?: number,
) => Promise<InferOutput<S>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-value-validation.ts#L41)

### validateCanonicalOutput

Validates retained output without changing canonical JSON bytes.

**Throws**

TaskWireValidationError for schema, size, or identity failures.

**Example**

```ts
await validateCanonicalOutput(schema, "done");
```

**Signature**

```ts
declare const validateCanonicalOutput: <S extends StandardSchemaV1>(
  schema: S,
  canonical: unknown,
  maxBytes?: number,
) => Promise<InferOutput<S>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-value-validation.ts#L107)

### validateTaskInput

Validates authored task input and constructs its canonical wire form.

**Throws**

TaskWireValidationError for schema or size failures.

**Example**

```ts
await validateTaskInput(schema, "hello");
```

**Signature**

```ts
declare const validateTaskInput: <S extends StandardSchemaV1>(
  schema: S,
  input: InferInput<S>,
  maxBytes?: number,
) => Promise<{ readonly value: InferOutput<S>; readonly wire: JobWireEnvelope }>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-value-validation.ts#L15)

### validateTaskOutput

Validates task output and constructs its canonical wire form.

**Throws**

TaskWireValidationError for schema or size failures.

**Example**

```ts
await validateTaskOutput(schema, "done");
```

**Signature**

```ts
declare const validateTaskOutput: <S extends StandardSchemaV1>(
  schema: S,
  output: InferInput<S>,
  maxBytes?: number,
) => Promise<{ readonly value: InferOutput<S>; readonly wire: JobWireEnvelope }>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-value-validation.ts#L82)

## `task-wire-value.ts`

### TaskWireErrorCode

**Signature**

```ts
declare const TaskWireErrorCode: TaskWireErrorCode;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-value.ts#L16)

### TaskWireValidationError

**Signature**

```ts
declare const TaskWireValidationError: typeof TaskWireValidationError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-value.ts#L15)

### decodeJobWire

Decodes a hostile wire envelope into immutable canonical JSON.

**Throws**

TaskWireValidationError for malformed or oversized envelopes.

**Example**

```ts
decodeJobWire({ version: 1, kind: "void" });
```

**Signature**

```ts
declare const decodeJobWire: (envelope: unknown, maxBytes?: number) => JsonValue | undefined;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-value.ts#L69)

### encodeJobWire

Encodes a generic jobs wire value with the input byte limit.

**Throws**

TaskWireValidationError for invalid or oversized data.

**Example**

```ts
encodeJobWire({ id: "one" });
```

**Signature**

```ts
declare const encodeJobWire: (value: unknown, maxBytes?: number) => JobWireEnvelope;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-value.ts#L24)

### encodeTaskInput

Encodes submitted task input with input-specific failure codes.

**Throws**

TaskWireValidationError for invalid or oversized input.

**Example**

```ts
encodeTaskInput("hello");
```

**Signature**

```ts
declare const encodeTaskInput: (value: unknown, maxBytes?: number) => JobWireEnvelope;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-value.ts#L34)

### encodeTaskOutput

Encodes handler output with output-specific failure codes.

**Throws**

TaskWireValidationError for invalid or oversized output.

**Example**

```ts
encodeTaskOutput("done");
```

**Signature**

```ts
declare const encodeTaskOutput: (value: unknown, maxBytes?: number) => JobWireEnvelope;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-value.ts#L50)

### validateCanonicalInput

**Signature**

```ts
declare const validateCanonicalInput: <S extends StandardSchemaV1>(
  schema: S,
  canonical: unknown,
  inputWire?: StandardSchemaV1<InferOutput<S>, InferOutput<S>>,
  maxBytes?: number,
) => Promise<InferOutput<S>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-value.ts#L96)

### validateCanonicalOutput

**Signature**

```ts
declare const validateCanonicalOutput: <S extends StandardSchemaV1>(
  schema: S,
  canonical: unknown,
  maxBytes?: number,
) => Promise<InferOutput<S>>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-value.ts#L98)

### validateTaskInput

**Signature**

```ts
declare const validateTaskInput: <S extends StandardSchemaV1>(
  schema: S,
  input: InferInput<S>,
  maxBytes?: number,
) => Promise<{ readonly value: InferOutput<S>; readonly wire: JobWireEnvelope }>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-value.ts#L95)

### validateTaskOutput

**Signature**

```ts
declare const validateTaskOutput: <S extends StandardSchemaV1>(
  schema: S,
  output: InferInput<S>,
  maxBytes?: number,
) => Promise<{ readonly value: InferOutput<S>; readonly wire: JobWireEnvelope }>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire-value.ts#L97)

## `task-wire.ts`

### "./task-wire-codec.js" (namespace export)

Re-exports all named exports from the "./task-wire-codec.js" module.

**Signature**

```ts
export * from "./task-wire-codec.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire.ts#L1)

### "./task-wire-validation.js" (namespace export)

Re-exports all named exports from the "./task-wire-validation.js" module.

**Signature**

```ts
export * from "./task-wire-validation.js";
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire.ts#L2)

### TaskWireErrorCode

**Signature**

```ts
declare const TaskWireErrorCode: TaskWireErrorCode;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire.ts#L5)

### TaskWireFailure

**Signature**

```ts
declare const TaskWireFailure: typeof TaskWireFailure;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire.ts#L3)

### TaskWireValidationError

**Signature**

```ts
declare const TaskWireValidationError: typeof TaskWireValidationError;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/task-wire.ts#L4)

## `trigger-validation.ts`

### CopiedTriggerOptions

**Signature**

```ts
declare const CopiedTriggerOptions: CopiedTriggerOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/trigger-validation.ts#L9)

### TriggerValidationError (class)

Invalid trigger or result observation options.

**Example**

```ts
if (error instanceof TriggerValidationError) console.log(error.message);
```

**Signature**

```ts
declare class TriggerValidationError
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/trigger-validation.ts#L13)

### copyTriggerOptions

Synchronous trigger options validator.

**Throws**

TypeError for invalid fields.

**Example**

```ts
copyTriggerOptions({ operationId: "op" });
```

**Signature**

```ts
declare const copyTriggerOptions: (value: unknown) => CopiedTriggerOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/trigger-validation.ts#L44)

### copyTriggerOptionsEffect

Validates and freezes trigger options in Effect.

**Example**

```ts
Effect.runSync(copyTriggerOptionsEffect({ operationId: "op" }));
```

**Signature**

```ts
declare const copyTriggerOptionsEffect: (
  value: unknown,
) => Effect.Effect<CopiedTriggerOptions, TriggerValidationError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/trigger-validation.ts#L32)

### validateResultOptions

Synchronous result options validator.

**Throws**

TypeError for invalid fields.

**Example**

```ts
validateResultOptions({ timeout: "1 second" });
```

**Signature**

```ts
declare const validateResultOptions: (value: unknown) => RunResultOptions;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/trigger-validation.ts#L92)

### validateResultOptionsEffect

Validates bounded result observation options in Effect.

**Example**

```ts
Effect.runSync(validateResultOptionsEffect({ timeout: "1 second" }));
```

**Signature**

```ts
declare const validateResultOptionsEffect: (
  value: unknown,
) => Effect.Effect<RunResultOptions, TriggerValidationError, never>;
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/trigger-validation.ts#L79)

## `trigger-validation.types.ts`

### CopiedTriggerOptions (type alias)

Validated trigger options with an optional authored job selector.

**Signature**

```ts
type CopiedTriggerOptions = ServerTriggerOptions & { readonly job?: unknown };
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/trigger-validation.types.ts#L3)

## `trigger.types.ts`

### JobDescriptorForThisTask (type alias)

Job reference constrained to target the selected task.

**Signature**

```ts
type JobDescriptorForThisTask<Task extends TaskRefAny = TaskRefAny> = JobRefAny & {
  readonly task: Task;
};
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/trigger.types.ts#L20)

### RunResultOptions (interface)

Options accepted for run result operations.

**Signature**

```ts
export interface RunResultOptions {
  readonly timeout: DurationInput;
  readonly signal?: AbortSignal;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/trigger.types.ts#L32)

### ServerTriggerOptions (interface)

Options accepted for server trigger operations.

**Signature**

```ts
export interface ServerTriggerOptions extends TriggerOptions {
  readonly signal?: AbortSignal;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/trigger.types.ts#L15)

### TaskTriggerOptions (interface)

Options accepted for task trigger operations.

**Signature**

```ts
export interface TaskTriggerOptions<
  Task extends TaskRefAny = TaskRefAny,
> extends ServerTriggerOptions {
  readonly job?: JobDescriptorForThisTask<Task>;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/trigger.types.ts#L25)

### TriggerOptions (interface)

Browser-safe submission fields. Server-only signals and selectors are separate.

**Signature**

```ts
export interface TriggerOptions {
  readonly operationId?: string;
  readonly idempotencyKey?: string;
  readonly delay?: DurationInput;
  readonly at?: string;
  readonly tags?: readonly string[];
  readonly correlationId?: string;
}
```

[Source](https://github.com/rel-kit/relkit/blob/main/packages/jobs/src/trigger.types.ts#L5)
