@shipfox/api-workflows 12.3.0 → 12.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/.turbo/turbo-build.log +4 -4
  2. package/CHANGELOG.md +21 -0
  3. package/dist/core/entities/job-execution.d.ts +1 -0
  4. package/dist/core/entities/job-execution.d.ts.map +1 -1
  5. package/dist/core/entities/job-execution.js.map +1 -1
  6. package/dist/core/entities/job.d.ts +1 -1
  7. package/dist/core/entities/job.d.ts.map +1 -1
  8. package/dist/core/entities/job.js +3 -1
  9. package/dist/core/entities/job.js.map +1 -1
  10. package/dist/core/errors.d.ts +3 -1
  11. package/dist/core/errors.d.ts.map +1 -1
  12. package/dist/core/errors.js +4 -2
  13. package/dist/core/errors.js.map +1 -1
  14. package/dist/core/step-config/job-output-limits.d.ts.map +1 -1
  15. package/dist/core/step-config/job-output-limits.js +2 -2
  16. package/dist/core/step-config/job-output-limits.js.map +1 -1
  17. package/dist/core/step-config/materialize-workflow-model.js +2 -2
  18. package/dist/core/step-config/materialize-workflow-model.js.map +1 -1
  19. package/dist/db/db.d.ts +42 -8
  20. package/dist/db/db.d.ts.map +1 -1
  21. package/dist/db/schema/job-executions.d.ts +19 -2
  22. package/dist/db/schema/job-executions.d.ts.map +1 -1
  23. package/dist/db/schema/job-executions.js +2 -0
  24. package/dist/db/schema/job-executions.js.map +1 -1
  25. package/dist/db/schema/jobs.d.ts +3 -3
  26. package/dist/db/schema/jobs.d.ts.map +1 -1
  27. package/dist/db/workflow-runs/job-executions.d.ts +7 -0
  28. package/dist/db/workflow-runs/job-executions.d.ts.map +1 -1
  29. package/dist/db/workflow-runs/job-executions.js +26 -4
  30. package/dist/db/workflow-runs/job-executions.js.map +1 -1
  31. package/dist/db/workflow-runs/jobs.d.ts.map +1 -1
  32. package/dist/db/workflow-runs/jobs.js +4 -2
  33. package/dist/db/workflow-runs/jobs.js.map +1 -1
  34. package/dist/presentation/dto/job.d.ts.map +1 -1
  35. package/dist/presentation/dto/job.js +1 -0
  36. package/dist/presentation/dto/job.js.map +1 -1
  37. package/dist/presentation/subscribers/on-failure-annotations.d.ts.map +1 -1
  38. package/dist/presentation/subscribers/on-failure-annotations.js +6 -3
  39. package/dist/presentation/subscribers/on-failure-annotations.js.map +1 -1
  40. package/dist/tsconfig.test.tsbuildinfo +1 -1
  41. package/drizzle/0002_output_failure_details.sql +2 -0
  42. package/drizzle/0003_output_invalid_reason.sql +1 -0
  43. package/drizzle/meta/0002_snapshot.json +1718 -0
  44. package/drizzle/meta/0003_snapshot.json +1719 -0
  45. package/drizzle/meta/_journal.json +14 -0
  46. package/package.json +3 -3
  47. package/src/core/entities/job-execution.ts +1 -0
  48. package/src/core/entities/job.ts +2 -0
  49. package/src/core/errors.test.ts +18 -0
  50. package/src/core/errors.ts +9 -2
  51. package/src/core/step-config/job-output-limits.ts +2 -2
  52. package/src/core/step-config/materialize-workflow-model.test.ts +67 -3
  53. package/src/core/step-config/materialize-workflow-model.ts +2 -2
  54. package/src/db/schema/job-executions.ts +2 -0
  55. package/src/db/workflow-runs/job-executions.test.ts +149 -4
  56. package/src/db/workflow-runs/job-executions.ts +44 -9
  57. package/src/db/workflow-runs/job-status.test.ts +30 -0
  58. package/src/db/workflow-runs/jobs.ts +5 -1
  59. package/src/presentation/dto/job.ts +1 -0
  60. package/src/presentation/subscribers/on-failure-annotations.test.ts +47 -1
  61. package/src/presentation/subscribers/on-failure-annotations.ts +10 -2
  62. package/test/helpers/workflow-runs.ts +1 -0
  63. package/tsconfig.build.tsbuildinfo +1 -1
@@ -1,6 +1,6 @@
1
1
  $ shipfox-swc && shipfox-temporal-bundle dist/temporal/workflows/index.js
2
- Successfully compiled: 124 files with swc (710.79ms)
3
- 2026-08-07T08:46:27.214Z [INFO] asset workflow-bundle-a5487a6112facdf4dd9d.js 3.32 MiB [emitted] [immutable] (name: main)
2
+ Successfully compiled: 124 files with swc (750.28ms)
3
+ 2026-08-09T17:50:57.353Z [INFO] asset workflow-bundle-a5487a6112facdf4dd9d.js 3.32 MiB [emitted] [immutable] (name: main)
4
4
  orphan modules 33.5 KiB [orphan] 21 modules
5
5
  runtime modules 1.13 KiB 5 modules
6
6
  modules by path ../../../node_modules/.pnpm/ 970 KiB 196 modules
@@ -16,6 +16,6 @@ optional modules 30 bytes [optional]
16
16
  __temporal_custom_payload_converter (ignored) 15 bytes [optional] [built] [code generated]
17
17
  __temporal_custom_failure_converter (ignored) 15 bytes [optional] [built] [code generated]
18
18
  ../../shared/node/temporal/dist/workflow-error-interceptor.js 1.21 KiB [built] [code generated]
19
- webpack 5.107.2 compiled successfully in 6823 ms
20
- 2026-08-07T08:46:27.241Z [INFO] Workflow bundle created { size: '3.32MB' }
19
+ webpack 5.107.2 compiled successfully in 10271 ms
20
+ 2026-08-09T17:50:57.421Z [INFO] Workflow bundle created { size: '3.32MB' }
21
21
  /home/runner/work/shipfox/shipfox/libs/api/workflows/dist/temporal/workflows/index.js: 3476109 bytes
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @shipfox/api-workflows
2
2
 
3
+ ## 12.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 5b1838c: Expose actionable status reasons and messages when materialized job outputs cannot be persisted.
8
+
9
+ ### Patch Changes
10
+
11
+ - 69940bc: Include measured output sizes and overshoots in job output size errors.
12
+ - 41f8f5f: Raises job output limits to 64 KiB per value and 256 KiB total before runner-side cap changes.
13
+ - Updated dependencies [5b1838c]
14
+ - @shipfox/api-workflows-dto@12.5.0
15
+
16
+ ## 12.4.0
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies [9e16946]
21
+ - Updated dependencies [4fa8526]
22
+ - @shipfox/api-runners-dto@12.4.0
23
+
3
24
  ## 12.3.0
4
25
 
5
26
  ### Minor Changes
@@ -24,6 +24,7 @@ export interface JobExecution {
24
24
  runner: string[] | null;
25
25
  status: JobExecutionStatus;
26
26
  statusReason: JobStatusReason | null;
27
+ statusReasonMessage?: string | null;
27
28
  triggerEvents: WorkflowExecutionEvent[];
28
29
  outputs: Record<string, unknown> | null;
29
30
  evaluationTrace?: readonly PersistedEvaluationTraceEntry[] | null;
@@ -1 +1 @@
1
- {"version":3,"file":"job-execution.d.ts","sourceRoot":"","sources":["../../../src/core/entities/job-execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAC,6BAA6B,EAAC,MAAM,WAAW,CAAC;AAC7D,OAAO,KAAK,EAAC,2BAA2B,EAAC,MAAM,mBAAmB,CAAC;AAEnE,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAE/D,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC;IAChD,UAAU,EAAE,2BAA2B,CAAC,YAAY,CAAC,CAAC;IACtD,GAAG,EAAE,2BAA2B,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,GAAG,YAAY,GAAG,KAAK,GAAG,QAAQ,CAAC,GAC9E,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,SAAS,GAAG,YAAY,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,GACnF,sBAAsB,CAYxB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,YAAY,EAAE,eAAe,GAAG,IAAI,CAAC;IACrC,aAAa,EAAE,sBAAsB,EAAE,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACxC,eAAe,CAAC,EAAE,SAAS,6BAA6B,EAAE,GAAG,IAAI,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB"}
1
+ {"version":3,"file":"job-execution.d.ts","sourceRoot":"","sources":["../../../src/core/entities/job-execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAC,6BAA6B,EAAC,MAAM,WAAW,CAAC;AAC7D,OAAO,KAAK,EAAC,2BAA2B,EAAC,MAAM,mBAAmB,CAAC;AAEnE,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAE/D,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC;IAChD,UAAU,EAAE,2BAA2B,CAAC,YAAY,CAAC,CAAC;IACtD,GAAG,EAAE,2BAA2B,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,GAAG,YAAY,GAAG,KAAK,GAAG,QAAQ,CAAC,GAC9E,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,SAAS,GAAG,YAAY,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,GACnF,sBAAsB,CAYxB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,YAAY,EAAE,eAAe,GAAG,IAAI,CAAC;IACrC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,aAAa,EAAE,sBAAsB,EAAE,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACxC,eAAe,CAAC,EAAE,SAAS,6BAA6B,EAAE,GAAG,IAAI,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/entities/job-execution.ts"],"sourcesContent":["import type {JobStatus, JobStatusReason} from './job.js';\nimport type {PersistedEvaluationTraceEntry} from './step.js';\nimport type {WorkflowRunTriggerReference} from './workflow-run.js';\n\nexport type JobExecutionStatus = Exclude<JobStatus, 'skipped'>;\n\nexport interface WorkflowExecutionEvent {\n source: string;\n event: string;\n delivery_id: string;\n received_at: string;\n project: WorkflowRunTriggerReference['project'];\n repository: WorkflowRunTriggerReference['repository'];\n ref: WorkflowRunTriggerReference['ref'];\n commit: WorkflowRunTriggerReference['commit'];\n data: unknown;\n}\n\nexport function normalizeWorkflowExecutionEvent(\n event: Omit<WorkflowExecutionEvent, 'project' | 'repository' | 'ref' | 'commit'> &\n Partial<Pick<WorkflowExecutionEvent, 'project' | 'repository' | 'ref' | 'commit'>>,\n): WorkflowExecutionEvent {\n return {\n source: event.source,\n event: event.event,\n delivery_id: event.delivery_id,\n received_at: event.received_at,\n project: event.project ?? null,\n repository: event.repository ?? null,\n ref: event.ref ?? null,\n commit: event.commit ?? null,\n data: event.data,\n };\n}\n\nexport interface JobExecution {\n id: string;\n jobId: string;\n sequence: number;\n /** A dynamically resolved name; null means use the parent job's fallback. */\n nameOverride: string | null;\n name: string;\n runner: string[] | null;\n status: JobExecutionStatus;\n statusReason: JobStatusReason | null;\n triggerEvents: WorkflowExecutionEvent[];\n outputs: Record<string, unknown> | null;\n evaluationTrace?: readonly PersistedEvaluationTraceEntry[] | null;\n version: number;\n createdAt: Date;\n updatedAt: Date;\n queuedAt: Date | null;\n startedAt: Date | null;\n finishedAt: Date | null;\n timedOutAt: Date | null;\n}\n"],"names":["normalizeWorkflowExecutionEvent","event","source","delivery_id","received_at","project","repository","ref","commit","data"],"mappings":"AAkBA,OAAO,SAASA,gCACdC,KACoF;IAEpF,OAAO;QACLC,QAAQD,MAAMC,MAAM;QACpBD,OAAOA,MAAMA,KAAK;QAClBE,aAAaF,MAAME,WAAW;QAC9BC,aAAaH,MAAMG,WAAW;QAC9BC,SAASJ,MAAMI,OAAO,IAAI;QAC1BC,YAAYL,MAAMK,UAAU,IAAI;QAChCC,KAAKN,MAAMM,GAAG,IAAI;QAClBC,QAAQP,MAAMO,MAAM,IAAI;QACxBC,MAAMR,MAAMQ,IAAI;IAClB;AACF"}
1
+ {"version":3,"sources":["../../../src/core/entities/job-execution.ts"],"sourcesContent":["import type {JobStatus, JobStatusReason} from './job.js';\nimport type {PersistedEvaluationTraceEntry} from './step.js';\nimport type {WorkflowRunTriggerReference} from './workflow-run.js';\n\nexport type JobExecutionStatus = Exclude<JobStatus, 'skipped'>;\n\nexport interface WorkflowExecutionEvent {\n source: string;\n event: string;\n delivery_id: string;\n received_at: string;\n project: WorkflowRunTriggerReference['project'];\n repository: WorkflowRunTriggerReference['repository'];\n ref: WorkflowRunTriggerReference['ref'];\n commit: WorkflowRunTriggerReference['commit'];\n data: unknown;\n}\n\nexport function normalizeWorkflowExecutionEvent(\n event: Omit<WorkflowExecutionEvent, 'project' | 'repository' | 'ref' | 'commit'> &\n Partial<Pick<WorkflowExecutionEvent, 'project' | 'repository' | 'ref' | 'commit'>>,\n): WorkflowExecutionEvent {\n return {\n source: event.source,\n event: event.event,\n delivery_id: event.delivery_id,\n received_at: event.received_at,\n project: event.project ?? null,\n repository: event.repository ?? null,\n ref: event.ref ?? null,\n commit: event.commit ?? null,\n data: event.data,\n };\n}\n\nexport interface JobExecution {\n id: string;\n jobId: string;\n sequence: number;\n /** A dynamically resolved name; null means use the parent job's fallback. */\n nameOverride: string | null;\n name: string;\n runner: string[] | null;\n status: JobExecutionStatus;\n statusReason: JobStatusReason | null;\n statusReasonMessage?: string | null;\n triggerEvents: WorkflowExecutionEvent[];\n outputs: Record<string, unknown> | null;\n evaluationTrace?: readonly PersistedEvaluationTraceEntry[] | null;\n version: number;\n createdAt: Date;\n updatedAt: Date;\n queuedAt: Date | null;\n startedAt: Date | null;\n finishedAt: Date | null;\n timedOutAt: Date | null;\n}\n"],"names":["normalizeWorkflowExecutionEvent","event","source","delivery_id","received_at","project","repository","ref","commit","data"],"mappings":"AAkBA,OAAO,SAASA,gCACdC,KACoF;IAEpF,OAAO;QACLC,QAAQD,MAAMC,MAAM;QACpBD,OAAOA,MAAMA,KAAK;QAClBE,aAAaF,MAAME,WAAW;QAC9BC,aAAaH,MAAMG,WAAW;QAC9BC,SAASJ,MAAMI,OAAO,IAAI;QAC1BC,YAAYL,MAAMK,UAAU,IAAI;QAChCC,KAAKN,MAAMM,GAAG,IAAI;QAClBC,QAAQP,MAAMO,MAAM,IAAI;QACxBC,MAAMR,MAAMQ,IAAI;IAClB;AACF"}
@@ -9,7 +9,7 @@ export interface JobCheckout {
9
9
  };
10
10
  persistCredentials: boolean;
11
11
  }
12
- export declare const JOB_STATUS_REASONS: readonly ['dependency_not_completed', 'condition_false', 'default_gate_rejected', 'condition_rejected', 'condition_errored', 'user_cancelled', 'run_cancelled', 'timed_out', 'runner_lost', 'step_failed', 'unknown'];
12
+ export declare const JOB_STATUS_REASONS: readonly ['dependency_not_completed', 'condition_false', 'default_gate_rejected', 'condition_rejected', 'condition_errored', 'user_cancelled', 'run_cancelled', 'timed_out', 'runner_lost', 'output_too_large', 'step_failed', 'unknown', 'output_invalid'];
13
13
  export type JobStatusReason = (typeof JOB_STATUS_REASONS)[number];
14
14
  export interface Job {
15
15
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/core/entities/job.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/core/entities/job.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,10 @@ export const JOB_STATUS_REASONS = [
8
8
  'run_cancelled',
9
9
  'timed_out',
10
10
  'runner_lost',
11
+ 'output_too_large',
11
12
  'step_failed',
12
- 'unknown'
13
+ 'unknown',
14
+ 'output_invalid'
13
15
  ];
14
16
  const JOB_STATUS_REASON_SET = new Set(JOB_STATUS_REASONS);
15
17
  const TERMINAL_JOB_STATUSES = new Set([
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/entities/job.ts"],"sourcesContent":["import type {PersistedEvaluationTraceEntry} from './step.js';\n\nexport type JobStatus = 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | 'skipped';\n\nexport type JobMode = 'one_shot' | 'listening';\n\nexport type ListenerStatus = 'inactive' | 'listening' | 'resolved';\n\nexport type ResolutionReason = 'until' | 'timeout' | 'max_executions' | 'cancelled';\n\nexport interface JobCheckout {\n permissions: {\n contents: 'read' | 'write';\n };\n persistCredentials: boolean;\n}\n\nexport const JOB_STATUS_REASONS = [\n 'dependency_not_completed',\n 'condition_false',\n 'default_gate_rejected',\n 'condition_rejected',\n 'condition_errored',\n 'user_cancelled',\n 'run_cancelled',\n 'timed_out',\n 'runner_lost',\n 'step_failed',\n 'unknown',\n] as const;\n\nexport type JobStatusReason = (typeof JOB_STATUS_REASONS)[number];\n\nconst JOB_STATUS_REASON_SET = new Set<JobStatusReason>(JOB_STATUS_REASONS);\n\nexport interface Job {\n id: string;\n workflowRunAttemptId: string;\n key: string;\n mode: JobMode;\n name: string | null;\n status: JobStatus;\n statusReason: JobStatusReason | null;\n carriedOver: boolean;\n checkout: JobCheckout;\n success?: string | null;\n evaluationTrace?: readonly PersistedEvaluationTraceEntry[] | null;\n executionTimeoutMs?: number | null;\n listeningTimeoutMs: number | null;\n maxExecutions: number | null;\n onResolve: 'finish' | 'cancel' | null;\n batchDebounceMs: number | null;\n batchMaxSize: number | null;\n batchMaxWaitMs: number | null;\n listenerStatus: ListenerStatus;\n resolutionReason: ResolutionReason | null;\n listeningOn: JobListeningTrigger[] | null;\n listeningUntil: JobListeningTrigger[] | null;\n outputs: Record<string, unknown> | null;\n dependencies: string[];\n runner: string[] | null;\n position: number;\n version: number;\n createdAt: Date;\n updatedAt: Date;\n}\n\nexport interface JobListeningTrigger {\n readonly source: string;\n readonly event: string;\n readonly inputs?: Readonly<Record<string, unknown>>;\n readonly filter?: string;\n}\n\nexport type TerminalJobStatus = Extract<\n JobStatus,\n 'succeeded' | 'failed' | 'cancelled' | 'skipped'\n>;\n\nconst TERMINAL_JOB_STATUSES = new Set<JobStatus>(['succeeded', 'failed', 'cancelled', 'skipped']);\n\nexport function isJobTerminal(status: JobStatus): status is TerminalJobStatus {\n return TERMINAL_JOB_STATUSES.has(status);\n}\n\nexport function toJobStatusReason(value: string | null): JobStatusReason | null {\n if (value === null) return null;\n return JOB_STATUS_REASON_SET.has(value as JobStatusReason)\n ? (value as JobStatusReason)\n : 'unknown';\n}\n"],"names":["JOB_STATUS_REASONS","JOB_STATUS_REASON_SET","Set","TERMINAL_JOB_STATUSES","isJobTerminal","status","has","toJobStatusReason","value"],"mappings":"AAiBA,OAAO,MAAMA,qBAAqB;IAChC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD,CAAU;AAIX,MAAMC,wBAAwB,IAAIC,IAAqBF;AA8CvD,MAAMG,wBAAwB,IAAID,IAAe;IAAC;IAAa;IAAU;IAAa;CAAU;AAEhG,OAAO,SAASE,cAAcC,MAAiB;IAC7C,OAAOF,sBAAsBG,GAAG,CAACD;AACnC;AAEA,OAAO,SAASE,kBAAkBC,KAAoB;IACpD,IAAIA,UAAU,MAAM,OAAO;IAC3B,OAAOP,sBAAsBK,GAAG,CAACE,SAC5BA,QACD;AACN"}
1
+ {"version":3,"sources":["../../../src/core/entities/job.ts"],"sourcesContent":["import type {PersistedEvaluationTraceEntry} from './step.js';\n\nexport type JobStatus = 'pending' | 'running' | 'succeeded' | 'failed' | 'cancelled' | 'skipped';\n\nexport type JobMode = 'one_shot' | 'listening';\n\nexport type ListenerStatus = 'inactive' | 'listening' | 'resolved';\n\nexport type ResolutionReason = 'until' | 'timeout' | 'max_executions' | 'cancelled';\n\nexport interface JobCheckout {\n permissions: {\n contents: 'read' | 'write';\n };\n persistCredentials: boolean;\n}\n\nexport const JOB_STATUS_REASONS = [\n 'dependency_not_completed',\n 'condition_false',\n 'default_gate_rejected',\n 'condition_rejected',\n 'condition_errored',\n 'user_cancelled',\n 'run_cancelled',\n 'timed_out',\n 'runner_lost',\n 'output_too_large',\n 'step_failed',\n 'unknown',\n 'output_invalid',\n] as const;\n\nexport type JobStatusReason = (typeof JOB_STATUS_REASONS)[number];\n\nconst JOB_STATUS_REASON_SET = new Set<JobStatusReason>(JOB_STATUS_REASONS);\n\nexport interface Job {\n id: string;\n workflowRunAttemptId: string;\n key: string;\n mode: JobMode;\n name: string | null;\n status: JobStatus;\n statusReason: JobStatusReason | null;\n carriedOver: boolean;\n checkout: JobCheckout;\n success?: string | null;\n evaluationTrace?: readonly PersistedEvaluationTraceEntry[] | null;\n executionTimeoutMs?: number | null;\n listeningTimeoutMs: number | null;\n maxExecutions: number | null;\n onResolve: 'finish' | 'cancel' | null;\n batchDebounceMs: number | null;\n batchMaxSize: number | null;\n batchMaxWaitMs: number | null;\n listenerStatus: ListenerStatus;\n resolutionReason: ResolutionReason | null;\n listeningOn: JobListeningTrigger[] | null;\n listeningUntil: JobListeningTrigger[] | null;\n outputs: Record<string, unknown> | null;\n dependencies: string[];\n runner: string[] | null;\n position: number;\n version: number;\n createdAt: Date;\n updatedAt: Date;\n}\n\nexport interface JobListeningTrigger {\n readonly source: string;\n readonly event: string;\n readonly inputs?: Readonly<Record<string, unknown>>;\n readonly filter?: string;\n}\n\nexport type TerminalJobStatus = Extract<\n JobStatus,\n 'succeeded' | 'failed' | 'cancelled' | 'skipped'\n>;\n\nconst TERMINAL_JOB_STATUSES = new Set<JobStatus>(['succeeded', 'failed', 'cancelled', 'skipped']);\n\nexport function isJobTerminal(status: JobStatus): status is TerminalJobStatus {\n return TERMINAL_JOB_STATUSES.has(status);\n}\n\nexport function toJobStatusReason(value: string | null): JobStatusReason | null {\n if (value === null) return null;\n return JOB_STATUS_REASON_SET.has(value as JobStatusReason)\n ? (value as JobStatusReason)\n : 'unknown';\n}\n"],"names":["JOB_STATUS_REASONS","JOB_STATUS_REASON_SET","Set","TERMINAL_JOB_STATUSES","isJobTerminal","status","has","toJobStatusReason","value"],"mappings":"AAiBA,OAAO,MAAMA,qBAAqB;IAChC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD,CAAU;AAIX,MAAMC,wBAAwB,IAAIC,IAAqBF;AA8CvD,MAAMG,wBAAwB,IAAID,IAAe;IAAC;IAAa;IAAU;IAAa;CAAU;AAEhG,OAAO,SAASE,cAAcC,MAAiB;IAC7C,OAAOF,sBAAsBG,GAAG,CAACD;AACnC;AAEA,OAAO,SAASE,kBAAkBC,KAAoB;IACpD,IAAIA,UAAU,MAAM,OAAO;IAC3B,OAAOP,sBAAsBK,GAAG,CAACE,SAC5BA,QACD;AACN"}
@@ -56,8 +56,10 @@ export declare class InvalidJobRunnerLabelsError extends Error {
56
56
  export declare class JobOutputTooLargeError extends Error {
57
57
  readonly outputKey: string;
58
58
  readonly limitBytes: number;
59
+ readonly measuredBytes: number;
59
60
  readonly scope: 'value' | 'total';
60
- constructor(outputKey: string, limitBytes: number, scope: 'value' | 'total');
61
+ readonly overshootBytes: number;
62
+ constructor(outputKey: string, limitBytes: number, measuredBytes: number, scope: 'value' | 'total');
61
63
  }
62
64
  export declare class JobOutputTooManyEntriesError extends Error {
63
65
  readonly entryCount: number;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
@@ -77,9 +77,11 @@ export class InvalidJobRunnerLabelsError extends Error {
77
77
  }
78
78
  }
79
79
  export class JobOutputTooLargeError extends Error {
80
- constructor(outputKey, limitBytes, scope){
81
- super(scope === 'total' ? `Job outputs exceed the ${limitBytes}-byte total limit (at "${outputKey}")` : `Job output "${outputKey}" exceeds the ${limitBytes}-byte size limit`), this.outputKey = outputKey, this.limitBytes = limitBytes, this.scope = scope;
80
+ constructor(outputKey, limitBytes, measuredBytes, scope){
81
+ const overshootBytes = measuredBytes - limitBytes;
82
+ super(scope === 'total' ? `Job outputs exceed the total size limit of ${limitBytes} bytes at "${outputKey}" ` + `(measured ${measuredBytes} bytes; overshoot ${overshootBytes} bytes).` : `Job output "${outputKey}" exceeds the per-value size limit of ${limitBytes} bytes ` + `(measured ${measuredBytes} bytes; overshoot ${overshootBytes} bytes).`), this.outputKey = outputKey, this.limitBytes = limitBytes, this.measuredBytes = measuredBytes, this.scope = scope;
82
83
  this.name = 'JobOutputTooLargeError';
84
+ this.overshootBytes = overshootBytes;
83
85
  }
84
86
  }
85
87
  export class JobOutputTooManyEntriesError extends Error {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/errors.ts"],"sourcesContent":["import type {JobStatus} from './entities/job.js';\nimport type {WorkflowRunStatus} from './entities/workflow-run.js';\n\nexport class DefinitionNotFoundError extends Error {\n constructor(definitionId: string) {\n super(`Definition not found: ${definitionId}`);\n this.name = 'DefinitionNotFoundError';\n }\n}\n\nexport class ProjectMismatchError extends Error {\n constructor(definitionProjectId: string, requestProjectId: string) {\n super(\n `Definition belongs to project ${definitionProjectId}, but request targets project ${requestProjectId}`,\n );\n this.name = 'ProjectMismatchError';\n }\n}\n\nexport class WorkspaceSuspendedError extends Error {\n constructor(readonly workspaceId: string) {\n super(`Workspace is suspended: ${workspaceId}`);\n this.name = 'WorkspaceSuspendedError';\n }\n}\n\nexport class WorkspaceDeletedError extends Error {\n constructor(readonly workspaceId: string) {\n super(`Workspace is deleted: ${workspaceId}`);\n this.name = 'WorkspaceDeletedError';\n }\n}\n\nexport class WorkspaceNotFoundError extends Error {\n constructor(readonly workspaceId: string) {\n super(`Workspace not found: ${workspaceId}`);\n this.name = 'WorkspaceNotFoundError';\n }\n}\n\nexport class AgentConfigUnresolvableError extends Error {\n constructor(\n readonly definitionId: string,\n options?: ErrorOptions | undefined,\n ) {\n super(`Agent configuration cannot be resolved for definition ${definitionId}`, options);\n this.name = 'AgentConfigUnresolvableError';\n }\n}\n\nexport class AgentIntegrationMaterializationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'AgentIntegrationMaterializationError';\n }\n}\n\nexport type InterpolationUnresolvableField =\n | 'run'\n | 'env'\n | 'agent.prompt'\n | 'agent.model'\n | 'agent.provider'\n | 'agent.thinking'\n | 'job.runner'\n | 'job.outputs'\n | 'job.execution_name'\n | 'workflow.run_name'\n | 'step.name'\n | 'step.working_directory'\n | 'step.feedback'\n | 'checkout.project'\n | 'checkout.connection'\n | 'checkout.repository'\n | 'checkout.ref'\n | 'checkout.path';\n\nexport class InterpolationUnresolvableError extends Error {\n readonly field: InterpolationUnresolvableField;\n readonly source: string;\n readonly envKey?: string;\n\n constructor(\n readonly definitionId: string,\n params: {\n readonly field: InterpolationUnresolvableField;\n readonly source: string;\n readonly envKey?: string;\n readonly cause?: unknown;\n },\n ) {\n super(interpolationUnresolvableMessage(definitionId, params), {cause: params.cause});\n this.name = 'InterpolationUnresolvableError';\n this.field = params.field;\n this.source = params.source;\n if (params.envKey !== undefined) this.envKey = params.envKey;\n }\n}\n\nfunction interpolationUnresolvableMessage(\n definitionId: string,\n params: {\n readonly field: InterpolationUnresolvableField;\n readonly source: string;\n readonly envKey?: string;\n },\n): string {\n const envSuffix = params.envKey === undefined ? '' : ` (${params.envKey})`;\n return `Workflow interpolation cannot be resolved for definition ${definitionId}: ${params.field}${envSuffix} uses \\`${params.source}\\`. Use has(x) ? x : '' for optional references.`;\n}\n\n/**\n * True when a `runWorkflow` failure can never succeed on retry: the definition is gone or\n * the subscription points at the wrong project. Callers (e.g. the trigger dispatcher) use this\n * to skip a permanently-broken target instead of retrying it forever. Every other failure is\n * treated as transient so at-least-once delivery can converge.\n */\nexport function isPermanentRunWorkflowError(error: unknown): boolean {\n return (\n error instanceof DefinitionNotFoundError ||\n error instanceof ProjectMismatchError ||\n error instanceof AgentConfigUnresolvableError ||\n error instanceof AgentIntegrationMaterializationError ||\n error instanceof InterpolationUnresolvableError ||\n error instanceof InvalidJobRunnerLabelsError\n );\n}\n\nexport class JobNotFoundError extends Error {\n constructor(jobId: string) {\n super(`Job not found or has no steps: ${jobId}`);\n this.name = 'JobNotFoundError';\n }\n}\n\nexport class InvalidJobRunnerLabelsError extends Error {\n constructor(\n readonly labels: readonly string[],\n readonly requestedLabels: readonly string[] = labels,\n ) {\n const requestedSuffix =\n requestedLabels.join(', ') === labels.join(', ')\n ? ''\n : ` (requested: ${requestedLabels.join(', ')})`;\n super(`Job runner labels are invalid: ${labels.join(', ')}${requestedSuffix}`);\n this.name = 'InvalidJobRunnerLabelsError';\n }\n}\n\nexport class JobOutputTooLargeError extends Error {\n constructor(\n readonly outputKey: string,\n readonly limitBytes: number,\n readonly scope: 'value' | 'total',\n ) {\n super(\n scope === 'total'\n ? `Job outputs exceed the ${limitBytes}-byte total limit (at \"${outputKey}\")`\n : `Job output \"${outputKey}\" exceeds the ${limitBytes}-byte size limit`,\n );\n this.name = 'JobOutputTooLargeError';\n }\n}\n\nexport class JobOutputTooManyEntriesError extends Error {\n constructor(\n readonly entryCount: number,\n readonly limitEntries: number,\n ) {\n super(`Job outputs cannot define more than ${limitEntries} entries (found ${entryCount})`);\n this.name = 'JobOutputTooManyEntriesError';\n }\n}\n\nexport class JobOutputNotJsonSafeError extends Error {\n constructor(\n readonly outputKey: string,\n readonly reason: string,\n ) {\n super(`Job output \"${outputKey}\" cannot be persisted as JSON: ${reason}`);\n this.name = 'JobOutputNotJsonSafeError';\n }\n}\n\n// The job named by a lease is terminal, so it must not exchange its lease for\n// fresh checkout credentials. Server state is the final gate, not the token.\nexport class JobNotActiveError extends Error {\n constructor(\n readonly jobId: string,\n readonly status: JobStatus,\n ) {\n super(`Job ${jobId} is ${status} and cannot mint checkout credentials`);\n this.name = 'JobNotActiveError';\n }\n}\n\nexport class WorkflowRunNotFoundError extends Error {\n constructor(workflowRunId: string) {\n super(`Workflow run not found: ${workflowRunId}`);\n this.name = 'WorkflowRunNotFoundError';\n }\n}\n\nexport class WorkflowRunNotCancellableError extends Error {\n constructor(\n readonly workflowRunId: string,\n readonly status: WorkflowRunStatus,\n ) {\n super(`Workflow run ${workflowRunId} is ${status} and cannot be cancelled`);\n this.name = 'WorkflowRunNotCancellableError';\n }\n}\n\nexport class SourceRunNotFoundError extends Error {\n constructor(workflowRunId: string) {\n super(`Source workflow run not found: ${workflowRunId}`);\n this.name = 'SourceRunNotFoundError';\n }\n}\n\nexport class RunNotTerminalError extends Error {\n constructor(workflowRunId: string) {\n super(`Workflow run is not terminal: ${workflowRunId}`);\n this.name = 'RunNotTerminalError';\n }\n}\n\nexport class NoFailedJobsError extends Error {\n constructor(workflowRunId: string) {\n super(`Workflow run has no failed or cancelled jobs to re-run: ${workflowRunId}`);\n this.name = 'NoFailedJobsError';\n }\n}\n\n// The checkout target cannot be resolved, so there is nothing to check out.\nexport class CheckoutIntentUnresolvedError extends Error {\n constructor(target: {kind: 'project' | 'connection'; value: string}) {\n super(`Checkout intent unresolved: ${target.kind} ${target.value} not found`);\n this.name = 'CheckoutIntentUnresolvedError';\n }\n}\n\nexport class CheckoutConfigInvalidError extends Error {\n constructor(readonly stepId: string) {\n super(`Checkout config is invalid for step ${stepId}`);\n this.name = 'CheckoutConfigInvalidError';\n }\n}\n\nexport class StepNotFoundError extends Error {\n constructor(stepId: string, jobId: string) {\n super(`Step ${stepId} not found in job ${jobId}`);\n this.name = 'StepNotFoundError';\n }\n}\n\nexport class StepNotRunningError extends Error {\n constructor(stepId: string, jobId: string) {\n super(`Step ${stepId} in job ${jobId} is not running and cannot accept a result`);\n this.name = 'StepNotRunningError';\n }\n}\n\n// A report whose attempt is ahead of the step's current attempt. The host\n// allocates attempt numbers, so a runner can never report one it was not\n// dispatched: this is a protocol error, not an idempotent no-op.\nexport class StepAttemptAheadError extends Error {\n constructor(\n readonly stepId: string,\n readonly jobId: string,\n readonly reportedAttempt: number,\n readonly currentAttempt: number,\n ) {\n super(\n `Step ${stepId} in job ${jobId} reported attempt ${reportedAttempt} ahead of current attempt ${currentAttempt}`,\n );\n this.name = 'StepAttemptAheadError';\n }\n}\n"],"names":["DefinitionNotFoundError","Error","definitionId","name","ProjectMismatchError","definitionProjectId","requestProjectId","WorkspaceSuspendedError","workspaceId","WorkspaceDeletedError","WorkspaceNotFoundError","AgentConfigUnresolvableError","options","AgentIntegrationMaterializationError","message","InterpolationUnresolvableError","params","interpolationUnresolvableMessage","cause","field","source","envKey","undefined","envSuffix","isPermanentRunWorkflowError","error","InvalidJobRunnerLabelsError","JobNotFoundError","jobId","labels","requestedLabels","requestedSuffix","join","JobOutputTooLargeError","outputKey","limitBytes","scope","JobOutputTooManyEntriesError","entryCount","limitEntries","JobOutputNotJsonSafeError","reason","JobNotActiveError","status","WorkflowRunNotFoundError","workflowRunId","WorkflowRunNotCancellableError","SourceRunNotFoundError","RunNotTerminalError","NoFailedJobsError","CheckoutIntentUnresolvedError","target","kind","value","CheckoutConfigInvalidError","stepId","StepNotFoundError","StepNotRunningError","StepAttemptAheadError","reportedAttempt","currentAttempt"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/core/errors.ts"],"sourcesContent":["import type {JobStatus} from './entities/job.js';\nimport type {WorkflowRunStatus} from './entities/workflow-run.js';\n\nexport class DefinitionNotFoundError extends Error {\n constructor(definitionId: string) {\n super(`Definition not found: ${definitionId}`);\n this.name = 'DefinitionNotFoundError';\n }\n}\n\nexport class ProjectMismatchError extends Error {\n constructor(definitionProjectId: string, requestProjectId: string) {\n super(\n `Definition belongs to project ${definitionProjectId}, but request targets project ${requestProjectId}`,\n );\n this.name = 'ProjectMismatchError';\n }\n}\n\nexport class WorkspaceSuspendedError extends Error {\n constructor(readonly workspaceId: string) {\n super(`Workspace is suspended: ${workspaceId}`);\n this.name = 'WorkspaceSuspendedError';\n }\n}\n\nexport class WorkspaceDeletedError extends Error {\n constructor(readonly workspaceId: string) {\n super(`Workspace is deleted: ${workspaceId}`);\n this.name = 'WorkspaceDeletedError';\n }\n}\n\nexport class WorkspaceNotFoundError extends Error {\n constructor(readonly workspaceId: string) {\n super(`Workspace not found: ${workspaceId}`);\n this.name = 'WorkspaceNotFoundError';\n }\n}\n\nexport class AgentConfigUnresolvableError extends Error {\n constructor(\n readonly definitionId: string,\n options?: ErrorOptions | undefined,\n ) {\n super(`Agent configuration cannot be resolved for definition ${definitionId}`, options);\n this.name = 'AgentConfigUnresolvableError';\n }\n}\n\nexport class AgentIntegrationMaterializationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'AgentIntegrationMaterializationError';\n }\n}\n\nexport type InterpolationUnresolvableField =\n | 'run'\n | 'env'\n | 'agent.prompt'\n | 'agent.model'\n | 'agent.provider'\n | 'agent.thinking'\n | 'job.runner'\n | 'job.outputs'\n | 'job.execution_name'\n | 'workflow.run_name'\n | 'step.name'\n | 'step.working_directory'\n | 'step.feedback'\n | 'checkout.project'\n | 'checkout.connection'\n | 'checkout.repository'\n | 'checkout.ref'\n | 'checkout.path';\n\nexport class InterpolationUnresolvableError extends Error {\n readonly field: InterpolationUnresolvableField;\n readonly source: string;\n readonly envKey?: string;\n\n constructor(\n readonly definitionId: string,\n params: {\n readonly field: InterpolationUnresolvableField;\n readonly source: string;\n readonly envKey?: string;\n readonly cause?: unknown;\n },\n ) {\n super(interpolationUnresolvableMessage(definitionId, params), {cause: params.cause});\n this.name = 'InterpolationUnresolvableError';\n this.field = params.field;\n this.source = params.source;\n if (params.envKey !== undefined) this.envKey = params.envKey;\n }\n}\n\nfunction interpolationUnresolvableMessage(\n definitionId: string,\n params: {\n readonly field: InterpolationUnresolvableField;\n readonly source: string;\n readonly envKey?: string;\n },\n): string {\n const envSuffix = params.envKey === undefined ? '' : ` (${params.envKey})`;\n return `Workflow interpolation cannot be resolved for definition ${definitionId}: ${params.field}${envSuffix} uses \\`${params.source}\\`. Use has(x) ? x : '' for optional references.`;\n}\n\n/**\n * True when a `runWorkflow` failure can never succeed on retry: the definition is gone or\n * the subscription points at the wrong project. Callers (e.g. the trigger dispatcher) use this\n * to skip a permanently-broken target instead of retrying it forever. Every other failure is\n * treated as transient so at-least-once delivery can converge.\n */\nexport function isPermanentRunWorkflowError(error: unknown): boolean {\n return (\n error instanceof DefinitionNotFoundError ||\n error instanceof ProjectMismatchError ||\n error instanceof AgentConfigUnresolvableError ||\n error instanceof AgentIntegrationMaterializationError ||\n error instanceof InterpolationUnresolvableError ||\n error instanceof InvalidJobRunnerLabelsError\n );\n}\n\nexport class JobNotFoundError extends Error {\n constructor(jobId: string) {\n super(`Job not found or has no steps: ${jobId}`);\n this.name = 'JobNotFoundError';\n }\n}\n\nexport class InvalidJobRunnerLabelsError extends Error {\n constructor(\n readonly labels: readonly string[],\n readonly requestedLabels: readonly string[] = labels,\n ) {\n const requestedSuffix =\n requestedLabels.join(', ') === labels.join(', ')\n ? ''\n : ` (requested: ${requestedLabels.join(', ')})`;\n super(`Job runner labels are invalid: ${labels.join(', ')}${requestedSuffix}`);\n this.name = 'InvalidJobRunnerLabelsError';\n }\n}\n\nexport class JobOutputTooLargeError extends Error {\n readonly overshootBytes: number;\n\n constructor(\n readonly outputKey: string,\n readonly limitBytes: number,\n readonly measuredBytes: number,\n readonly scope: 'value' | 'total',\n ) {\n const overshootBytes = measuredBytes - limitBytes;\n super(\n scope === 'total'\n ? `Job outputs exceed the total size limit of ${limitBytes} bytes at \"${outputKey}\" ` +\n `(measured ${measuredBytes} bytes; overshoot ${overshootBytes} bytes).`\n : `Job output \"${outputKey}\" exceeds the per-value size limit of ${limitBytes} bytes ` +\n `(measured ${measuredBytes} bytes; overshoot ${overshootBytes} bytes).`,\n );\n this.name = 'JobOutputTooLargeError';\n this.overshootBytes = overshootBytes;\n }\n}\n\nexport class JobOutputTooManyEntriesError extends Error {\n constructor(\n readonly entryCount: number,\n readonly limitEntries: number,\n ) {\n super(`Job outputs cannot define more than ${limitEntries} entries (found ${entryCount})`);\n this.name = 'JobOutputTooManyEntriesError';\n }\n}\n\nexport class JobOutputNotJsonSafeError extends Error {\n constructor(\n readonly outputKey: string,\n readonly reason: string,\n ) {\n super(`Job output \"${outputKey}\" cannot be persisted as JSON: ${reason}`);\n this.name = 'JobOutputNotJsonSafeError';\n }\n}\n\n// The job named by a lease is terminal, so it must not exchange its lease for\n// fresh checkout credentials. Server state is the final gate, not the token.\nexport class JobNotActiveError extends Error {\n constructor(\n readonly jobId: string,\n readonly status: JobStatus,\n ) {\n super(`Job ${jobId} is ${status} and cannot mint checkout credentials`);\n this.name = 'JobNotActiveError';\n }\n}\n\nexport class WorkflowRunNotFoundError extends Error {\n constructor(workflowRunId: string) {\n super(`Workflow run not found: ${workflowRunId}`);\n this.name = 'WorkflowRunNotFoundError';\n }\n}\n\nexport class WorkflowRunNotCancellableError extends Error {\n constructor(\n readonly workflowRunId: string,\n readonly status: WorkflowRunStatus,\n ) {\n super(`Workflow run ${workflowRunId} is ${status} and cannot be cancelled`);\n this.name = 'WorkflowRunNotCancellableError';\n }\n}\n\nexport class SourceRunNotFoundError extends Error {\n constructor(workflowRunId: string) {\n super(`Source workflow run not found: ${workflowRunId}`);\n this.name = 'SourceRunNotFoundError';\n }\n}\n\nexport class RunNotTerminalError extends Error {\n constructor(workflowRunId: string) {\n super(`Workflow run is not terminal: ${workflowRunId}`);\n this.name = 'RunNotTerminalError';\n }\n}\n\nexport class NoFailedJobsError extends Error {\n constructor(workflowRunId: string) {\n super(`Workflow run has no failed or cancelled jobs to re-run: ${workflowRunId}`);\n this.name = 'NoFailedJobsError';\n }\n}\n\n// The checkout target cannot be resolved, so there is nothing to check out.\nexport class CheckoutIntentUnresolvedError extends Error {\n constructor(target: {kind: 'project' | 'connection'; value: string}) {\n super(`Checkout intent unresolved: ${target.kind} ${target.value} not found`);\n this.name = 'CheckoutIntentUnresolvedError';\n }\n}\n\nexport class CheckoutConfigInvalidError extends Error {\n constructor(readonly stepId: string) {\n super(`Checkout config is invalid for step ${stepId}`);\n this.name = 'CheckoutConfigInvalidError';\n }\n}\n\nexport class StepNotFoundError extends Error {\n constructor(stepId: string, jobId: string) {\n super(`Step ${stepId} not found in job ${jobId}`);\n this.name = 'StepNotFoundError';\n }\n}\n\nexport class StepNotRunningError extends Error {\n constructor(stepId: string, jobId: string) {\n super(`Step ${stepId} in job ${jobId} is not running and cannot accept a result`);\n this.name = 'StepNotRunningError';\n }\n}\n\n// A report whose attempt is ahead of the step's current attempt. The host\n// allocates attempt numbers, so a runner can never report one it was not\n// dispatched: this is a protocol error, not an idempotent no-op.\nexport class StepAttemptAheadError extends Error {\n constructor(\n readonly stepId: string,\n readonly jobId: string,\n readonly reportedAttempt: number,\n readonly currentAttempt: number,\n ) {\n super(\n `Step ${stepId} in job ${jobId} reported attempt ${reportedAttempt} ahead of current attempt ${currentAttempt}`,\n );\n this.name = 'StepAttemptAheadError';\n }\n}\n"],"names":["DefinitionNotFoundError","Error","definitionId","name","ProjectMismatchError","definitionProjectId","requestProjectId","WorkspaceSuspendedError","workspaceId","WorkspaceDeletedError","WorkspaceNotFoundError","AgentConfigUnresolvableError","options","AgentIntegrationMaterializationError","message","InterpolationUnresolvableError","params","interpolationUnresolvableMessage","cause","field","source","envKey","undefined","envSuffix","isPermanentRunWorkflowError","error","InvalidJobRunnerLabelsError","JobNotFoundError","jobId","labels","requestedLabels","requestedSuffix","join","JobOutputTooLargeError","outputKey","limitBytes","measuredBytes","scope","overshootBytes","JobOutputTooManyEntriesError","entryCount","limitEntries","JobOutputNotJsonSafeError","reason","JobNotActiveError","status","WorkflowRunNotFoundError","workflowRunId","WorkflowRunNotCancellableError","SourceRunNotFoundError","RunNotTerminalError","NoFailedJobsError","CheckoutIntentUnresolvedError","target","kind","value","CheckoutConfigInvalidError","stepId","StepNotFoundError","StepNotRunningError","StepAttemptAheadError","reportedAttempt","currentAttempt"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"job-output-limits.d.ts","sourceRoot":"","sources":["../../../src/core/step-config/job-output-limits.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,sBAAsB,MAA4C,CAAC;AAChF,eAAO,MAAM,4BAA4B,KAAiD,CAAC;AAC3F,eAAO,MAAM,2BAA2B,QAAY,CAAC;AACrD,eAAO,MAAM,0BAA0B,QAAY,CAAC;AAIpD,MAAM,MAAM,sBAAsB,GAC9B,IAAI,GACJ,MAAM,GACN,MAAM,GACN,OAAO,GACP,SAAS,sBAAsB,EAAE,GACjC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAA;CAAC,CAAC;AAE5C,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,sBAAsB,CAEjG;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAI/D;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAEjG"}
1
+ {"version":3,"file":"job-output-limits.d.ts","sourceRoot":"","sources":["../../../src/core/step-config/job-output-limits.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,sBAAsB,MAA4C,CAAC;AAChF,eAAO,MAAM,4BAA4B,KAAiD,CAAC;AAC3F,eAAO,MAAM,2BAA2B,QAAa,CAAC;AACtD,eAAO,MAAM,0BAA0B,QAAY,CAAC;AAIpD,MAAM,MAAM,sBAAsB,GAC9B,IAAI,GACJ,MAAM,GACN,MAAM,GACN,OAAO,GACP,SAAS,sBAAsB,EAAE,GACjC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAA;CAAC,CAAC;AAE5C,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,sBAAsB,CAEjG;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAI/D;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAEjG"}
@@ -2,8 +2,8 @@ import { WORKFLOW_DOCUMENT_JOB_OUTPUTS_MAX_ENTRIES, WORKFLOW_DOCUMENT_STEP_OUTPU
2
2
  import { JobOutputNotJsonSafeError } from '#core/errors.js';
3
3
  export const MAX_JOB_OUTPUT_ENTRIES = WORKFLOW_DOCUMENT_JOB_OUTPUTS_MAX_ENTRIES;
4
4
  export const MAX_JOB_OUTPUT_NESTING_DEPTH = WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_DEPTH;
5
- export const MAX_JOB_OUTPUTS_TOTAL_BYTES = 64 * 1024;
6
- export const MAX_JOB_OUTPUT_VALUE_BYTES = 16 * 1024;
5
+ export const MAX_JOB_OUTPUTS_TOTAL_BYTES = 256 * 1024;
6
+ export const MAX_JOB_OUTPUT_VALUE_BYTES = 64 * 1024;
7
7
  const textEncoder = new TextEncoder();
8
8
  export function normalizeJobOutputValue(value, outputKey) {
9
9
  return normalize(value, outputKey, new WeakSet(), 0);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/step-config/job-output-limits.ts"],"sourcesContent":["import {\n WORKFLOW_DOCUMENT_JOB_OUTPUTS_MAX_ENTRIES,\n WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_DEPTH,\n} from '@shipfox/workflow-document';\nimport {JobOutputNotJsonSafeError} from '#core/errors.js';\n\nexport const MAX_JOB_OUTPUT_ENTRIES = WORKFLOW_DOCUMENT_JOB_OUTPUTS_MAX_ENTRIES;\nexport const MAX_JOB_OUTPUT_NESTING_DEPTH = WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_DEPTH;\nexport const MAX_JOB_OUTPUTS_TOTAL_BYTES = 64 * 1024;\nexport const MAX_JOB_OUTPUT_VALUE_BYTES = 16 * 1024;\n\nconst textEncoder = new TextEncoder();\n\nexport type JsonSafeJobOutputValue =\n | null\n | string\n | number\n | boolean\n | readonly JsonSafeJobOutputValue[]\n | {[key: string]: JsonSafeJobOutputValue};\n\nexport function normalizeJobOutputValue(value: unknown, outputKey: string): JsonSafeJobOutputValue {\n return normalize(value, outputKey, new WeakSet<object>(), 0);\n}\n\nexport function jobOutputValueByteLength(value: unknown): number {\n if (typeof value === 'string') return textEncoder.encode(value).byteLength;\n\n return jsonByteLength(value);\n}\n\nexport function jobOutputRecordEntryByteLength(key: string, value: JsonSafeJobOutputValue): number {\n return textEncoder.encode(JSON.stringify(key)).byteLength + 1 + jsonByteLength(value);\n}\n\nfunction jsonByteLength(value: unknown): number {\n const serialized = JSON.stringify(value);\n return textEncoder.encode(serialized ?? '').byteLength;\n}\n\nfunction normalize(\n value: unknown,\n outputKey: string,\n ancestors: WeakSet<object>,\n depth: number,\n): JsonSafeJobOutputValue {\n if (value === null) return null;\n\n switch (typeof value) {\n case 'string':\n case 'boolean':\n return value;\n case 'number':\n if (!Number.isFinite(value)) {\n throw new JobOutputNotJsonSafeError(outputKey, 'numbers must be finite');\n }\n return value;\n case 'bigint': {\n const numberValue = Number(value);\n return Number.isSafeInteger(numberValue) ? numberValue : value.toString();\n }\n case 'undefined':\n throw new JobOutputNotJsonSafeError(outputKey, 'undefined is not a JSON value');\n case 'function':\n case 'symbol':\n throw new JobOutputNotJsonSafeError(\n outputKey,\n `values of type ${typeof value} are not JSON values`,\n );\n case 'object':\n return normalizeObject(value, outputKey, ancestors, depth);\n }\n\n throw new JobOutputNotJsonSafeError(outputKey, 'the value has an unsupported type');\n}\n\nfunction normalizeObject(\n value: object,\n outputKey: string,\n ancestors: WeakSet<object>,\n depth: number,\n): JsonSafeJobOutputValue {\n if (value instanceof Date) {\n if (Number.isNaN(value.getTime())) {\n throw new JobOutputNotJsonSafeError(outputKey, 'dates must be valid');\n }\n return value.toISOString();\n }\n\n if (ancestors.has(value)) {\n throw new JobOutputNotJsonSafeError(outputKey, 'the value contains a circular reference');\n }\n\n if (depth >= MAX_JOB_OUTPUT_NESTING_DEPTH) {\n throw new JobOutputNotJsonSafeError(\n outputKey,\n `values cannot be nested deeper than ${MAX_JOB_OUTPUT_NESTING_DEPTH} levels`,\n );\n }\n\n if (Array.isArray(value)) {\n ancestors.add(value);\n try {\n const normalized: JsonSafeJobOutputValue[] = [];\n for (const item of value) {\n normalized.push(normalize(item, outputKey, ancestors, depth + 1));\n }\n return normalized;\n } finally {\n ancestors.delete(value);\n }\n }\n\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n throw new JobOutputNotJsonSafeError(outputKey, 'the value has an unsupported object type');\n }\n\n ancestors.add(value);\n try {\n return Object.fromEntries(\n Object.keys(value).map((key) => [\n key,\n normalize((value as Record<string, unknown>)[key], outputKey, ancestors, depth + 1),\n ]),\n ) as {[key: string]: JsonSafeJobOutputValue};\n } finally {\n ancestors.delete(value);\n }\n}\n"],"names":["WORKFLOW_DOCUMENT_JOB_OUTPUTS_MAX_ENTRIES","WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_DEPTH","JobOutputNotJsonSafeError","MAX_JOB_OUTPUT_ENTRIES","MAX_JOB_OUTPUT_NESTING_DEPTH","MAX_JOB_OUTPUTS_TOTAL_BYTES","MAX_JOB_OUTPUT_VALUE_BYTES","textEncoder","TextEncoder","normalizeJobOutputValue","value","outputKey","normalize","WeakSet","jobOutputValueByteLength","encode","byteLength","jsonByteLength","jobOutputRecordEntryByteLength","key","JSON","stringify","serialized","ancestors","depth","Number","isFinite","numberValue","isSafeInteger","toString","normalizeObject","Date","isNaN","getTime","toISOString","has","Array","isArray","add","normalized","item","push","delete","prototype","Object","getPrototypeOf","fromEntries","keys","map"],"mappings":"AAAA,SACEA,yCAAyC,EACzCC,8CAA8C,QACzC,6BAA6B;AACpC,SAAQC,yBAAyB,QAAO,kBAAkB;AAE1D,OAAO,MAAMC,yBAAyBH,0CAA0C;AAChF,OAAO,MAAMI,+BAA+BH,+CAA+C;AAC3F,OAAO,MAAMI,8BAA8B,KAAK,KAAK;AACrD,OAAO,MAAMC,6BAA6B,KAAK,KAAK;AAEpD,MAAMC,cAAc,IAAIC;AAUxB,OAAO,SAASC,wBAAwBC,KAAc,EAAEC,SAAiB;IACvE,OAAOC,UAAUF,OAAOC,WAAW,IAAIE,WAAmB;AAC5D;AAEA,OAAO,SAASC,yBAAyBJ,KAAc;IACrD,IAAI,OAAOA,UAAU,UAAU,OAAOH,YAAYQ,MAAM,CAACL,OAAOM,UAAU;IAE1E,OAAOC,eAAeP;AACxB;AAEA,OAAO,SAASQ,+BAA+BC,GAAW,EAAET,KAA6B;IACvF,OAAOH,YAAYQ,MAAM,CAACK,KAAKC,SAAS,CAACF,MAAMH,UAAU,GAAG,IAAIC,eAAeP;AACjF;AAEA,SAASO,eAAeP,KAAc;IACpC,MAAMY,aAAaF,KAAKC,SAAS,CAACX;IAClC,OAAOH,YAAYQ,MAAM,CAACO,cAAc,IAAIN,UAAU;AACxD;AAEA,SAASJ,UACPF,KAAc,EACdC,SAAiB,EACjBY,SAA0B,EAC1BC,KAAa;IAEb,IAAId,UAAU,MAAM,OAAO;IAE3B,OAAQ,OAAOA;QACb,KAAK;QACL,KAAK;YACH,OAAOA;QACT,KAAK;YACH,IAAI,CAACe,OAAOC,QAAQ,CAAChB,QAAQ;gBAC3B,MAAM,IAAIR,0BAA0BS,WAAW;YACjD;YACA,OAAOD;QACT,KAAK;YAAU;gBACb,MAAMiB,cAAcF,OAAOf;gBAC3B,OAAOe,OAAOG,aAAa,CAACD,eAAeA,cAAcjB,MAAMmB,QAAQ;YACzE;QACA,KAAK;YACH,MAAM,IAAI3B,0BAA0BS,WAAW;QACjD,KAAK;QACL,KAAK;YACH,MAAM,IAAIT,0BACRS,WACA,CAAC,eAAe,EAAE,OAAOD,MAAM,oBAAoB,CAAC;QAExD,KAAK;YACH,OAAOoB,gBAAgBpB,OAAOC,WAAWY,WAAWC;IACxD;IAEA,MAAM,IAAItB,0BAA0BS,WAAW;AACjD;AAEA,SAASmB,gBACPpB,KAAa,EACbC,SAAiB,EACjBY,SAA0B,EAC1BC,KAAa;IAEb,IAAId,iBAAiBqB,MAAM;QACzB,IAAIN,OAAOO,KAAK,CAACtB,MAAMuB,OAAO,KAAK;YACjC,MAAM,IAAI/B,0BAA0BS,WAAW;QACjD;QACA,OAAOD,MAAMwB,WAAW;IAC1B;IAEA,IAAIX,UAAUY,GAAG,CAACzB,QAAQ;QACxB,MAAM,IAAIR,0BAA0BS,WAAW;IACjD;IAEA,IAAIa,SAASpB,8BAA8B;QACzC,MAAM,IAAIF,0BACRS,WACA,CAAC,oCAAoC,EAAEP,6BAA6B,OAAO,CAAC;IAEhF;IAEA,IAAIgC,MAAMC,OAAO,CAAC3B,QAAQ;QACxBa,UAAUe,GAAG,CAAC5B;QACd,IAAI;YACF,MAAM6B,aAAuC,EAAE;YAC/C,KAAK,MAAMC,QAAQ9B,MAAO;gBACxB6B,WAAWE,IAAI,CAAC7B,UAAU4B,MAAM7B,WAAWY,WAAWC,QAAQ;YAChE;YACA,OAAOe;QACT,SAAU;YACRhB,UAAUmB,MAAM,CAAChC;QACnB;IACF;IAEA,MAAMiC,YAAYC,OAAOC,cAAc,CAACnC;IACxC,IAAIiC,cAAcC,OAAOD,SAAS,IAAIA,cAAc,MAAM;QACxD,MAAM,IAAIzC,0BAA0BS,WAAW;IACjD;IAEAY,UAAUe,GAAG,CAAC5B;IACd,IAAI;QACF,OAAOkC,OAAOE,WAAW,CACvBF,OAAOG,IAAI,CAACrC,OAAOsC,GAAG,CAAC,CAAC7B,MAAQ;gBAC9BA;gBACAP,UAAU,AAACF,KAAiC,CAACS,IAAI,EAAER,WAAWY,WAAWC,QAAQ;aAClF;IAEL,SAAU;QACRD,UAAUmB,MAAM,CAAChC;IACnB;AACF"}
1
+ {"version":3,"sources":["../../../src/core/step-config/job-output-limits.ts"],"sourcesContent":["import {\n WORKFLOW_DOCUMENT_JOB_OUTPUTS_MAX_ENTRIES,\n WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_DEPTH,\n} from '@shipfox/workflow-document';\nimport {JobOutputNotJsonSafeError} from '#core/errors.js';\n\nexport const MAX_JOB_OUTPUT_ENTRIES = WORKFLOW_DOCUMENT_JOB_OUTPUTS_MAX_ENTRIES;\nexport const MAX_JOB_OUTPUT_NESTING_DEPTH = WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_DEPTH;\nexport const MAX_JOB_OUTPUTS_TOTAL_BYTES = 256 * 1024;\nexport const MAX_JOB_OUTPUT_VALUE_BYTES = 64 * 1024;\n\nconst textEncoder = new TextEncoder();\n\nexport type JsonSafeJobOutputValue =\n | null\n | string\n | number\n | boolean\n | readonly JsonSafeJobOutputValue[]\n | {[key: string]: JsonSafeJobOutputValue};\n\nexport function normalizeJobOutputValue(value: unknown, outputKey: string): JsonSafeJobOutputValue {\n return normalize(value, outputKey, new WeakSet<object>(), 0);\n}\n\nexport function jobOutputValueByteLength(value: unknown): number {\n if (typeof value === 'string') return textEncoder.encode(value).byteLength;\n\n return jsonByteLength(value);\n}\n\nexport function jobOutputRecordEntryByteLength(key: string, value: JsonSafeJobOutputValue): number {\n return textEncoder.encode(JSON.stringify(key)).byteLength + 1 + jsonByteLength(value);\n}\n\nfunction jsonByteLength(value: unknown): number {\n const serialized = JSON.stringify(value);\n return textEncoder.encode(serialized ?? '').byteLength;\n}\n\nfunction normalize(\n value: unknown,\n outputKey: string,\n ancestors: WeakSet<object>,\n depth: number,\n): JsonSafeJobOutputValue {\n if (value === null) return null;\n\n switch (typeof value) {\n case 'string':\n case 'boolean':\n return value;\n case 'number':\n if (!Number.isFinite(value)) {\n throw new JobOutputNotJsonSafeError(outputKey, 'numbers must be finite');\n }\n return value;\n case 'bigint': {\n const numberValue = Number(value);\n return Number.isSafeInteger(numberValue) ? numberValue : value.toString();\n }\n case 'undefined':\n throw new JobOutputNotJsonSafeError(outputKey, 'undefined is not a JSON value');\n case 'function':\n case 'symbol':\n throw new JobOutputNotJsonSafeError(\n outputKey,\n `values of type ${typeof value} are not JSON values`,\n );\n case 'object':\n return normalizeObject(value, outputKey, ancestors, depth);\n }\n\n throw new JobOutputNotJsonSafeError(outputKey, 'the value has an unsupported type');\n}\n\nfunction normalizeObject(\n value: object,\n outputKey: string,\n ancestors: WeakSet<object>,\n depth: number,\n): JsonSafeJobOutputValue {\n if (value instanceof Date) {\n if (Number.isNaN(value.getTime())) {\n throw new JobOutputNotJsonSafeError(outputKey, 'dates must be valid');\n }\n return value.toISOString();\n }\n\n if (ancestors.has(value)) {\n throw new JobOutputNotJsonSafeError(outputKey, 'the value contains a circular reference');\n }\n\n if (depth >= MAX_JOB_OUTPUT_NESTING_DEPTH) {\n throw new JobOutputNotJsonSafeError(\n outputKey,\n `values cannot be nested deeper than ${MAX_JOB_OUTPUT_NESTING_DEPTH} levels`,\n );\n }\n\n if (Array.isArray(value)) {\n ancestors.add(value);\n try {\n const normalized: JsonSafeJobOutputValue[] = [];\n for (const item of value) {\n normalized.push(normalize(item, outputKey, ancestors, depth + 1));\n }\n return normalized;\n } finally {\n ancestors.delete(value);\n }\n }\n\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n throw new JobOutputNotJsonSafeError(outputKey, 'the value has an unsupported object type');\n }\n\n ancestors.add(value);\n try {\n return Object.fromEntries(\n Object.keys(value).map((key) => [\n key,\n normalize((value as Record<string, unknown>)[key], outputKey, ancestors, depth + 1),\n ]),\n ) as {[key: string]: JsonSafeJobOutputValue};\n } finally {\n ancestors.delete(value);\n }\n}\n"],"names":["WORKFLOW_DOCUMENT_JOB_OUTPUTS_MAX_ENTRIES","WORKFLOW_DOCUMENT_STEP_OUTPUT_SCHEMA_MAX_DEPTH","JobOutputNotJsonSafeError","MAX_JOB_OUTPUT_ENTRIES","MAX_JOB_OUTPUT_NESTING_DEPTH","MAX_JOB_OUTPUTS_TOTAL_BYTES","MAX_JOB_OUTPUT_VALUE_BYTES","textEncoder","TextEncoder","normalizeJobOutputValue","value","outputKey","normalize","WeakSet","jobOutputValueByteLength","encode","byteLength","jsonByteLength","jobOutputRecordEntryByteLength","key","JSON","stringify","serialized","ancestors","depth","Number","isFinite","numberValue","isSafeInteger","toString","normalizeObject","Date","isNaN","getTime","toISOString","has","Array","isArray","add","normalized","item","push","delete","prototype","Object","getPrototypeOf","fromEntries","keys","map"],"mappings":"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"}
@@ -98,7 +98,7 @@ export function materializeJobOutputs(params) {
98
98
  const normalizedValue = normalizeJobOutputValue(value, key);
99
99
  const valueBytes = jobOutputValueByteLength(normalizedValue);
100
100
  if (valueBytes > MAX_JOB_OUTPUT_VALUE_BYTES) {
101
- throw new JobOutputTooLargeError(key, MAX_JOB_OUTPUT_VALUE_BYTES, 'value');
101
+ throw new JobOutputTooLargeError(key, MAX_JOB_OUTPUT_VALUE_BYTES, valueBytes, 'value');
102
102
  }
103
103
  recordBytes += (index === 0 ? 0 : 1) + jobOutputRecordEntryByteLength(key, normalizedValue);
104
104
  Object.defineProperty(materialized, key, {
@@ -108,7 +108,7 @@ export function materializeJobOutputs(params) {
108
108
  writable: true
109
109
  });
110
110
  if (recordBytes > MAX_JOB_OUTPUTS_TOTAL_BYTES) {
111
- throw new JobOutputTooLargeError(key, MAX_JOB_OUTPUTS_TOTAL_BYTES, 'total');
111
+ throw new JobOutputTooLargeError(key, MAX_JOB_OUTPUTS_TOTAL_BYTES, recordBytes, 'total');
112
112
  }
113
113
  }
114
114
  return materialized;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/step-config/materialize-workflow-model.ts"],"sourcesContent":["import {DEFAULT_JOB_CHECKOUT, type WorkflowModel} from '@shipfox/api-definitions-dto';\nimport {findInvalidLabels, MAX_RUNNER_LABELS, resolveRunnerLabels} from '@shipfox/runner-labels';\nimport {runnerCatalog} from '#config.js';\nimport type {AgentDefaultsResolver} from '#core/agent-defaults.js';\nimport type {\n AgentToolMaterializationContext,\n AgentToolMaterializationSnapshot,\n} from '#core/agent-tools.js';\nimport {\n InvalidJobRunnerLabelsError,\n JobOutputTooLargeError,\n JobOutputTooManyEntriesError,\n} from '#core/errors.js';\nimport {completeStepField, completeStepFieldWithType} from './fields.js';\nimport {\n type JsonSafeJobOutputValue,\n jobOutputRecordEntryByteLength,\n jobOutputValueByteLength,\n MAX_JOB_OUTPUT_ENTRIES,\n MAX_JOB_OUTPUT_VALUE_BYTES,\n MAX_JOB_OUTPUTS_TOTAL_BYTES,\n normalizeJobOutputValue,\n} from './job-output-limits.js';\nimport {\n type MaterializedWorkflowStep,\n materializeJobExecutionSteps,\n} from './materialize-job-execution-steps.js';\nimport type {WorkflowEvaluationContext} from './workflow-evaluation-context.js';\n\ntype WorkflowModelJob = WorkflowModel['jobs'][number];\nexport interface MaterializedWorkflowJob {\n readonly key: string;\n readonly mode: WorkflowModelJob['mode'];\n readonly success?: string;\n readonly executionTimeoutMs?: number;\n readonly checkout: Exclude<WorkflowModelJob['checkout'], false>;\n readonly listening?: WorkflowModelJob['listening'];\n readonly name?: string;\n readonly outputs?: WorkflowModelJob['outputs'];\n readonly dependencies: readonly string[];\n readonly runner: readonly string[];\n readonly position: number;\n readonly steps: readonly MaterializedWorkflowStep[];\n}\n\nexport interface MaterializeWorkflowModelParams {\n readonly model: WorkflowModel;\n readonly context?: WorkflowEvaluationContext | undefined;\n readonly resolveAgentDefaults?: AgentDefaultsResolver | undefined;\n readonly definitionId?: string | undefined;\n readonly agentToolContext?: AgentToolMaterializationContext | undefined;\n readonly agentToolSnapshot?: AgentToolMaterializationSnapshot | null | undefined;\n}\n\nexport async function materializeWorkflowModel(\n params: MaterializeWorkflowModelParams,\n): Promise<readonly MaterializedWorkflowJob[]> {\n const {\n model,\n context = {site: 'run-creation', values: {}},\n resolveAgentDefaults,\n definitionId = model.name,\n agentToolContext,\n agentToolSnapshot,\n } = params;\n const jobsById = new Map(model.jobs.map((job) => [job.id, job]));\n\n return await Promise.all(\n model.jobs.map(async (job, position) => {\n const name = job.name;\n return {\n key: job.key,\n mode: job.mode,\n ...(job.success === undefined ? {} : {success: job.success}),\n ...(job.executionTimeoutMs === undefined\n ? {}\n : {executionTimeoutMs: job.executionTimeoutMs}),\n checkout: job.checkout === false ? DEFAULT_JOB_CHECKOUT : job.checkout,\n ...(job.listening === undefined ? {} : {listening: job.listening}),\n ...(name === undefined ? {} : {name}),\n ...(job.outputs === undefined ? {} : {outputs: job.outputs}),\n dependencies: dependencySourceNames(job, jobsById),\n runner: job.runner,\n position,\n steps:\n job.mode === 'listening'\n ? []\n : await materializeJobExecutionSteps({\n model,\n job,\n context,\n resolveAgentDefaults,\n definitionId,\n agentToolContext,\n agentToolSnapshot,\n }),\n };\n }),\n );\n}\n\nexport function materializeJobRunner(params: {\n readonly job: WorkflowModelJob;\n readonly context: WorkflowEvaluationContext;\n readonly definitionId: string;\n}): readonly string[] {\n const resolvedLabels = (params.job.runnerTemplates ?? []).map((template) =>\n completeStepField({\n field: 'job.runner',\n errorField: 'job.runner',\n template: {segments: template},\n context: params.context,\n definitionId: params.definitionId,\n }),\n );\n const requestedLabels = [...params.job.runner, ...resolvedLabels];\n const labels = resolveRunnerLabels(requestedLabels, runnerCatalog);\n const invalidLabels = findInvalidLabels(labels);\n if (labels.length === 0 || labels.length > MAX_RUNNER_LABELS || invalidLabels.length > 0) {\n throw new InvalidJobRunnerLabelsError(labels, requestedLabels);\n }\n return labels;\n}\n\nexport function materializeJobOutputs(params: {\n readonly job: WorkflowModelJob;\n readonly context: WorkflowEvaluationContext;\n readonly definitionId: string;\n}): Record<string, unknown> | null {\n const outputs = params.job.outputs;\n if (outputs === undefined) return null;\n\n const outputEntries = Object.entries(outputs);\n if (outputEntries.length > MAX_JOB_OUTPUT_ENTRIES) {\n throw new JobOutputTooManyEntriesError(outputEntries.length, MAX_JOB_OUTPUT_ENTRIES);\n }\n\n const materialized: Record<string, JsonSafeJobOutputValue> = {};\n // This is exactly JSON.stringify(materialized): start with \"{}\", then add each\n // key/value pair and its comma (except for the first entry).\n let recordBytes = 2;\n\n for (const [index, [key, template]] of outputEntries.entries()) {\n const outputTypes = params.job.outputTypes;\n const outputType =\n outputTypes !== undefined && Object.hasOwn(outputTypes, key) ? outputTypes[key] : undefined;\n const completionParams = {\n field: 'job.outputs' as const,\n errorField: 'job.outputs' as const,\n template: {segments: template},\n context: params.context,\n definitionId: params.definitionId,\n };\n const value =\n outputType === undefined || outputType === 'string'\n ? completeStepField(completionParams)\n : completeStepFieldWithType(completionParams);\n const normalizedValue = normalizeJobOutputValue(value, key);\n const valueBytes = jobOutputValueByteLength(normalizedValue);\n if (valueBytes > MAX_JOB_OUTPUT_VALUE_BYTES) {\n throw new JobOutputTooLargeError(key, MAX_JOB_OUTPUT_VALUE_BYTES, 'value');\n }\n\n recordBytes += (index === 0 ? 0 : 1) + jobOutputRecordEntryByteLength(key, normalizedValue);\n Object.defineProperty(materialized, key, {\n configurable: true,\n enumerable: true,\n value: normalizedValue,\n writable: true,\n });\n if (recordBytes > MAX_JOB_OUTPUTS_TOTAL_BYTES) {\n throw new JobOutputTooLargeError(key, MAX_JOB_OUTPUTS_TOTAL_BYTES, 'total');\n }\n }\n\n return materialized;\n}\n\nexport function modelHasAgentStep(model: WorkflowModel): boolean {\n return model.jobs.some((job) => job.steps.some((step) => step.kind === 'agent'));\n}\n\nfunction dependencySourceNames(\n job: WorkflowModelJob,\n jobsById: ReadonlyMap<string, WorkflowModelJob>,\n): readonly string[] {\n return job.dependencies.map((dependencyId) => {\n const dependency = jobsById.get(dependencyId);\n if (!dependency) {\n throw new Error(`Unresolved workflow model dependency \"${dependencyId}\" for job \"${job.id}\"`);\n }\n return dependency.key;\n });\n}\n"],"names":["DEFAULT_JOB_CHECKOUT","findInvalidLabels","MAX_RUNNER_LABELS","resolveRunnerLabels","runnerCatalog","InvalidJobRunnerLabelsError","JobOutputTooLargeError","JobOutputTooManyEntriesError","completeStepField","completeStepFieldWithType","jobOutputRecordEntryByteLength","jobOutputValueByteLength","MAX_JOB_OUTPUT_ENTRIES","MAX_JOB_OUTPUT_VALUE_BYTES","MAX_JOB_OUTPUTS_TOTAL_BYTES","normalizeJobOutputValue","materializeJobExecutionSteps","materializeWorkflowModel","params","model","context","site","values","resolveAgentDefaults","definitionId","name","agentToolContext","agentToolSnapshot","jobsById","Map","jobs","map","job","id","Promise","all","position","key","mode","success","undefined","executionTimeoutMs","checkout","listening","outputs","dependencies","dependencySourceNames","runner","steps","materializeJobRunner","resolvedLabels","runnerTemplates","template","field","errorField","segments","requestedLabels","labels","invalidLabels","length","materializeJobOutputs","outputEntries","Object","entries","materialized","recordBytes","index","outputTypes","outputType","hasOwn","completionParams","value","normalizedValue","valueBytes","defineProperty","configurable","enumerable","writable","modelHasAgentStep","some","step","kind","dependencyId","dependency","get","Error"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/core/step-config/materialize-workflow-model.ts"],"sourcesContent":["import {DEFAULT_JOB_CHECKOUT, type WorkflowModel} from '@shipfox/api-definitions-dto';\nimport {findInvalidLabels, MAX_RUNNER_LABELS, resolveRunnerLabels} from '@shipfox/runner-labels';\nimport {runnerCatalog} from '#config.js';\nimport type {AgentDefaultsResolver} from '#core/agent-defaults.js';\nimport type {\n AgentToolMaterializationContext,\n AgentToolMaterializationSnapshot,\n} from '#core/agent-tools.js';\nimport {\n InvalidJobRunnerLabelsError,\n JobOutputTooLargeError,\n JobOutputTooManyEntriesError,\n} from '#core/errors.js';\nimport {completeStepField, completeStepFieldWithType} from './fields.js';\nimport {\n type JsonSafeJobOutputValue,\n jobOutputRecordEntryByteLength,\n jobOutputValueByteLength,\n MAX_JOB_OUTPUT_ENTRIES,\n MAX_JOB_OUTPUT_VALUE_BYTES,\n MAX_JOB_OUTPUTS_TOTAL_BYTES,\n normalizeJobOutputValue,\n} from './job-output-limits.js';\nimport {\n type MaterializedWorkflowStep,\n materializeJobExecutionSteps,\n} from './materialize-job-execution-steps.js';\nimport type {WorkflowEvaluationContext} from './workflow-evaluation-context.js';\n\ntype WorkflowModelJob = WorkflowModel['jobs'][number];\nexport interface MaterializedWorkflowJob {\n readonly key: string;\n readonly mode: WorkflowModelJob['mode'];\n readonly success?: string;\n readonly executionTimeoutMs?: number;\n readonly checkout: Exclude<WorkflowModelJob['checkout'], false>;\n readonly listening?: WorkflowModelJob['listening'];\n readonly name?: string;\n readonly outputs?: WorkflowModelJob['outputs'];\n readonly dependencies: readonly string[];\n readonly runner: readonly string[];\n readonly position: number;\n readonly steps: readonly MaterializedWorkflowStep[];\n}\n\nexport interface MaterializeWorkflowModelParams {\n readonly model: WorkflowModel;\n readonly context?: WorkflowEvaluationContext | undefined;\n readonly resolveAgentDefaults?: AgentDefaultsResolver | undefined;\n readonly definitionId?: string | undefined;\n readonly agentToolContext?: AgentToolMaterializationContext | undefined;\n readonly agentToolSnapshot?: AgentToolMaterializationSnapshot | null | undefined;\n}\n\nexport async function materializeWorkflowModel(\n params: MaterializeWorkflowModelParams,\n): Promise<readonly MaterializedWorkflowJob[]> {\n const {\n model,\n context = {site: 'run-creation', values: {}},\n resolveAgentDefaults,\n definitionId = model.name,\n agentToolContext,\n agentToolSnapshot,\n } = params;\n const jobsById = new Map(model.jobs.map((job) => [job.id, job]));\n\n return await Promise.all(\n model.jobs.map(async (job, position) => {\n const name = job.name;\n return {\n key: job.key,\n mode: job.mode,\n ...(job.success === undefined ? {} : {success: job.success}),\n ...(job.executionTimeoutMs === undefined\n ? {}\n : {executionTimeoutMs: job.executionTimeoutMs}),\n checkout: job.checkout === false ? DEFAULT_JOB_CHECKOUT : job.checkout,\n ...(job.listening === undefined ? {} : {listening: job.listening}),\n ...(name === undefined ? {} : {name}),\n ...(job.outputs === undefined ? {} : {outputs: job.outputs}),\n dependencies: dependencySourceNames(job, jobsById),\n runner: job.runner,\n position,\n steps:\n job.mode === 'listening'\n ? []\n : await materializeJobExecutionSteps({\n model,\n job,\n context,\n resolveAgentDefaults,\n definitionId,\n agentToolContext,\n agentToolSnapshot,\n }),\n };\n }),\n );\n}\n\nexport function materializeJobRunner(params: {\n readonly job: WorkflowModelJob;\n readonly context: WorkflowEvaluationContext;\n readonly definitionId: string;\n}): readonly string[] {\n const resolvedLabels = (params.job.runnerTemplates ?? []).map((template) =>\n completeStepField({\n field: 'job.runner',\n errorField: 'job.runner',\n template: {segments: template},\n context: params.context,\n definitionId: params.definitionId,\n }),\n );\n const requestedLabels = [...params.job.runner, ...resolvedLabels];\n const labels = resolveRunnerLabels(requestedLabels, runnerCatalog);\n const invalidLabels = findInvalidLabels(labels);\n if (labels.length === 0 || labels.length > MAX_RUNNER_LABELS || invalidLabels.length > 0) {\n throw new InvalidJobRunnerLabelsError(labels, requestedLabels);\n }\n return labels;\n}\n\nexport function materializeJobOutputs(params: {\n readonly job: WorkflowModelJob;\n readonly context: WorkflowEvaluationContext;\n readonly definitionId: string;\n}): Record<string, unknown> | null {\n const outputs = params.job.outputs;\n if (outputs === undefined) return null;\n\n const outputEntries = Object.entries(outputs);\n if (outputEntries.length > MAX_JOB_OUTPUT_ENTRIES) {\n throw new JobOutputTooManyEntriesError(outputEntries.length, MAX_JOB_OUTPUT_ENTRIES);\n }\n\n const materialized: Record<string, JsonSafeJobOutputValue> = {};\n // This is exactly JSON.stringify(materialized): start with \"{}\", then add each\n // key/value pair and its comma (except for the first entry).\n let recordBytes = 2;\n\n for (const [index, [key, template]] of outputEntries.entries()) {\n const outputTypes = params.job.outputTypes;\n const outputType =\n outputTypes !== undefined && Object.hasOwn(outputTypes, key) ? outputTypes[key] : undefined;\n const completionParams = {\n field: 'job.outputs' as const,\n errorField: 'job.outputs' as const,\n template: {segments: template},\n context: params.context,\n definitionId: params.definitionId,\n };\n const value =\n outputType === undefined || outputType === 'string'\n ? completeStepField(completionParams)\n : completeStepFieldWithType(completionParams);\n const normalizedValue = normalizeJobOutputValue(value, key);\n const valueBytes = jobOutputValueByteLength(normalizedValue);\n if (valueBytes > MAX_JOB_OUTPUT_VALUE_BYTES) {\n throw new JobOutputTooLargeError(key, MAX_JOB_OUTPUT_VALUE_BYTES, valueBytes, 'value');\n }\n\n recordBytes += (index === 0 ? 0 : 1) + jobOutputRecordEntryByteLength(key, normalizedValue);\n Object.defineProperty(materialized, key, {\n configurable: true,\n enumerable: true,\n value: normalizedValue,\n writable: true,\n });\n if (recordBytes > MAX_JOB_OUTPUTS_TOTAL_BYTES) {\n throw new JobOutputTooLargeError(key, MAX_JOB_OUTPUTS_TOTAL_BYTES, recordBytes, 'total');\n }\n }\n\n return materialized;\n}\n\nexport function modelHasAgentStep(model: WorkflowModel): boolean {\n return model.jobs.some((job) => job.steps.some((step) => step.kind === 'agent'));\n}\n\nfunction dependencySourceNames(\n job: WorkflowModelJob,\n jobsById: ReadonlyMap<string, WorkflowModelJob>,\n): readonly string[] {\n return job.dependencies.map((dependencyId) => {\n const dependency = jobsById.get(dependencyId);\n if (!dependency) {\n throw new Error(`Unresolved workflow model dependency \"${dependencyId}\" for job \"${job.id}\"`);\n }\n return dependency.key;\n });\n}\n"],"names":["DEFAULT_JOB_CHECKOUT","findInvalidLabels","MAX_RUNNER_LABELS","resolveRunnerLabels","runnerCatalog","InvalidJobRunnerLabelsError","JobOutputTooLargeError","JobOutputTooManyEntriesError","completeStepField","completeStepFieldWithType","jobOutputRecordEntryByteLength","jobOutputValueByteLength","MAX_JOB_OUTPUT_ENTRIES","MAX_JOB_OUTPUT_VALUE_BYTES","MAX_JOB_OUTPUTS_TOTAL_BYTES","normalizeJobOutputValue","materializeJobExecutionSteps","materializeWorkflowModel","params","model","context","site","values","resolveAgentDefaults","definitionId","name","agentToolContext","agentToolSnapshot","jobsById","Map","jobs","map","job","id","Promise","all","position","key","mode","success","undefined","executionTimeoutMs","checkout","listening","outputs","dependencies","dependencySourceNames","runner","steps","materializeJobRunner","resolvedLabels","runnerTemplates","template","field","errorField","segments","requestedLabels","labels","invalidLabels","length","materializeJobOutputs","outputEntries","Object","entries","materialized","recordBytes","index","outputTypes","outputType","hasOwn","completionParams","value","normalizedValue","valueBytes","defineProperty","configurable","enumerable","writable","modelHasAgentStep","some","step","kind","dependencyId","dependency","get","Error"],"mappings":"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"}
package/dist/db/db.d.ts CHANGED
@@ -815,14 +815,14 @@ export declare const schema: {
815
815
  tableName: "jobs";
816
816
  dataType: "string";
817
817
  columnType: "PgEnumColumn";
818
- data: "condition_errored" | "condition_false" | "condition_rejected" | "default_gate_rejected" | "dependency_not_completed" | "run_cancelled" | "runner_lost" | "step_failed" | "timed_out" | "unknown" | "user_cancelled";
818
+ data: "condition_errored" | "condition_false" | "condition_rejected" | "default_gate_rejected" | "dependency_not_completed" | "output_invalid" | "output_too_large" | "run_cancelled" | "runner_lost" | "step_failed" | "timed_out" | "unknown" | "user_cancelled";
819
819
  driverParam: string;
820
820
  notNull: false;
821
821
  hasDefault: false;
822
822
  isPrimaryKey: false;
823
823
  isAutoincrement: false;
824
824
  hasRuntimeDefault: false;
825
- enumValues: ["dependency_not_completed", "condition_false", "default_gate_rejected", "condition_rejected", "condition_errored", "user_cancelled", "run_cancelled", "timed_out", "runner_lost", "step_failed", "unknown"];
825
+ enumValues: ["dependency_not_completed", "condition_false", "default_gate_rejected", "condition_rejected", "condition_errored", "user_cancelled", "run_cancelled", "timed_out", "runner_lost", "output_too_large", "step_failed", "unknown", "output_invalid"];
826
826
  baseColumn: never;
827
827
  identity: undefined;
828
828
  generated: undefined;
@@ -1346,14 +1346,31 @@ export declare const schema: {
1346
1346
  tableName: "job_executions";
1347
1347
  dataType: "string";
1348
1348
  columnType: "PgEnumColumn";
1349
- data: "condition_errored" | "condition_false" | "condition_rejected" | "default_gate_rejected" | "dependency_not_completed" | "run_cancelled" | "runner_lost" | "step_failed" | "timed_out" | "unknown" | "user_cancelled";
1349
+ data: "condition_errored" | "condition_false" | "condition_rejected" | "default_gate_rejected" | "dependency_not_completed" | "output_invalid" | "output_too_large" | "run_cancelled" | "runner_lost" | "step_failed" | "timed_out" | "unknown" | "user_cancelled";
1350
1350
  driverParam: string;
1351
1351
  notNull: false;
1352
1352
  hasDefault: false;
1353
1353
  isPrimaryKey: false;
1354
1354
  isAutoincrement: false;
1355
1355
  hasRuntimeDefault: false;
1356
- enumValues: ["dependency_not_completed", "condition_false", "default_gate_rejected", "condition_rejected", "condition_errored", "user_cancelled", "run_cancelled", "timed_out", "runner_lost", "step_failed", "unknown"];
1356
+ enumValues: ["dependency_not_completed", "condition_false", "default_gate_rejected", "condition_rejected", "condition_errored", "user_cancelled", "run_cancelled", "timed_out", "runner_lost", "output_too_large", "step_failed", "unknown", "output_invalid"];
1357
+ baseColumn: never;
1358
+ identity: undefined;
1359
+ generated: undefined;
1360
+ }, {}, {}>;
1361
+ statusReasonMessage: import("drizzle-orm/pg-core").PgColumn<{
1362
+ name: "status_reason_message";
1363
+ tableName: "job_executions";
1364
+ dataType: "string";
1365
+ columnType: "PgText";
1366
+ data: string;
1367
+ driverParam: string;
1368
+ notNull: false;
1369
+ hasDefault: false;
1370
+ isPrimaryKey: false;
1371
+ isAutoincrement: false;
1372
+ hasRuntimeDefault: false;
1373
+ enumValues: [string, ...string[]];
1357
1374
  baseColumn: never;
1358
1375
  identity: undefined;
1359
1376
  generated: undefined;
@@ -3432,14 +3449,14 @@ export declare function db(): NodePgDatabase<{
3432
3449
  tableName: "jobs";
3433
3450
  dataType: "string";
3434
3451
  columnType: "PgEnumColumn";
3435
- data: "condition_errored" | "condition_false" | "condition_rejected" | "default_gate_rejected" | "dependency_not_completed" | "run_cancelled" | "runner_lost" | "step_failed" | "timed_out" | "unknown" | "user_cancelled";
3452
+ data: "condition_errored" | "condition_false" | "condition_rejected" | "default_gate_rejected" | "dependency_not_completed" | "output_invalid" | "output_too_large" | "run_cancelled" | "runner_lost" | "step_failed" | "timed_out" | "unknown" | "user_cancelled";
3436
3453
  driverParam: string;
3437
3454
  notNull: false;
3438
3455
  hasDefault: false;
3439
3456
  isPrimaryKey: false;
3440
3457
  isAutoincrement: false;
3441
3458
  hasRuntimeDefault: false;
3442
- enumValues: ["dependency_not_completed", "condition_false", "default_gate_rejected", "condition_rejected", "condition_errored", "user_cancelled", "run_cancelled", "timed_out", "runner_lost", "step_failed", "unknown"];
3459
+ enumValues: ["dependency_not_completed", "condition_false", "default_gate_rejected", "condition_rejected", "condition_errored", "user_cancelled", "run_cancelled", "timed_out", "runner_lost", "output_too_large", "step_failed", "unknown", "output_invalid"];
3443
3460
  baseColumn: never;
3444
3461
  identity: undefined;
3445
3462
  generated: undefined;
@@ -3963,14 +3980,31 @@ export declare function db(): NodePgDatabase<{
3963
3980
  tableName: "job_executions";
3964
3981
  dataType: "string";
3965
3982
  columnType: "PgEnumColumn";
3966
- data: "condition_errored" | "condition_false" | "condition_rejected" | "default_gate_rejected" | "dependency_not_completed" | "run_cancelled" | "runner_lost" | "step_failed" | "timed_out" | "unknown" | "user_cancelled";
3983
+ data: "condition_errored" | "condition_false" | "condition_rejected" | "default_gate_rejected" | "dependency_not_completed" | "output_invalid" | "output_too_large" | "run_cancelled" | "runner_lost" | "step_failed" | "timed_out" | "unknown" | "user_cancelled";
3967
3984
  driverParam: string;
3968
3985
  notNull: false;
3969
3986
  hasDefault: false;
3970
3987
  isPrimaryKey: false;
3971
3988
  isAutoincrement: false;
3972
3989
  hasRuntimeDefault: false;
3973
- enumValues: ["dependency_not_completed", "condition_false", "default_gate_rejected", "condition_rejected", "condition_errored", "user_cancelled", "run_cancelled", "timed_out", "runner_lost", "step_failed", "unknown"];
3990
+ enumValues: ["dependency_not_completed", "condition_false", "default_gate_rejected", "condition_rejected", "condition_errored", "user_cancelled", "run_cancelled", "timed_out", "runner_lost", "output_too_large", "step_failed", "unknown", "output_invalid"];
3991
+ baseColumn: never;
3992
+ identity: undefined;
3993
+ generated: undefined;
3994
+ }, {}, {}>;
3995
+ statusReasonMessage: import("drizzle-orm/pg-core").PgColumn<{
3996
+ name: "status_reason_message";
3997
+ tableName: "job_executions";
3998
+ dataType: "string";
3999
+ columnType: "PgText";
4000
+ data: string;
4001
+ driverParam: string;
4002
+ notNull: false;
4003
+ hasDefault: false;
4004
+ isPrimaryKey: false;
4005
+ isAutoincrement: false;
4006
+ hasRuntimeDefault: false;
4007
+ enumValues: [string, ...string[]];
3974
4008
  baseColumn: never;
3975
4009
  identity: undefined;
3976
4010
  generated: undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/db/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAYnE,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUlB,CAAC;AAIF,wBAAgB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAGjB;AAED,wBAAgB,OAAO,IAAI,IAAI,CAE9B;AAED,MAAM,MAAM,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAI5F,wBAAgB,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEzE"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/db/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAYnE,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUlB,CAAC;AAIF,wBAAgB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAGjB;AAED,wBAAgB,OAAO,IAAI,IAAI,CAE9B;AAED,MAAM,MAAM,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAI5F,wBAAgB,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEzE"}
@@ -114,14 +114,31 @@ export declare const jobExecutions: import("drizzle-orm/pg-core").PgTableWithCol
114
114
  tableName: "job_executions";
115
115
  dataType: "string";
116
116
  columnType: "PgEnumColumn";
117
- data: "condition_errored" | "condition_false" | "condition_rejected" | "default_gate_rejected" | "dependency_not_completed" | "run_cancelled" | "runner_lost" | "step_failed" | "timed_out" | "unknown" | "user_cancelled";
117
+ data: "condition_errored" | "condition_false" | "condition_rejected" | "default_gate_rejected" | "dependency_not_completed" | "output_invalid" | "output_too_large" | "run_cancelled" | "runner_lost" | "step_failed" | "timed_out" | "unknown" | "user_cancelled";
118
118
  driverParam: string;
119
119
  notNull: false;
120
120
  hasDefault: false;
121
121
  isPrimaryKey: false;
122
122
  isAutoincrement: false;
123
123
  hasRuntimeDefault: false;
124
- enumValues: ["dependency_not_completed", "condition_false", "default_gate_rejected", "condition_rejected", "condition_errored", "user_cancelled", "run_cancelled", "timed_out", "runner_lost", "step_failed", "unknown"];
124
+ enumValues: ["dependency_not_completed", "condition_false", "default_gate_rejected", "condition_rejected", "condition_errored", "user_cancelled", "run_cancelled", "timed_out", "runner_lost", "output_too_large", "step_failed", "unknown", "output_invalid"];
125
+ baseColumn: never;
126
+ identity: undefined;
127
+ generated: undefined;
128
+ }, {}, {}>;
129
+ statusReasonMessage: import("drizzle-orm/pg-core").PgColumn<{
130
+ name: "status_reason_message";
131
+ tableName: "job_executions";
132
+ dataType: "string";
133
+ columnType: "PgText";
134
+ data: string;
135
+ driverParam: string;
136
+ notNull: false;
137
+ hasDefault: false;
138
+ isPrimaryKey: false;
139
+ isAutoincrement: false;
140
+ hasRuntimeDefault: false;
141
+ enumValues: [string, ...string[]];
125
142
  baseColumn: never;
126
143
  identity: undefined;
127
144
  generated: undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"job-executions.d.ts","sourceRoot":"","sources":["../../../src/db/schema/job-executions.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAC,6BAA6B,EAAC,MAAM,wBAAwB,CAAC;AAI1E,eAAO,MAAM,sBAAsB,kGAMjC,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCzB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,OAAO,aAAa,CAAC,YAAY,CAAC;AAC/D,MAAM,MAAM,oBAAoB,GAAG,OAAO,aAAa,CAAC,YAAY,CAAC;AAErE,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,GAAG,YAAY,CAqBtF"}
1
+ {"version":3,"file":"job-executions.d.ts","sourceRoot":"","sources":["../../../src/db/schema/job-executions.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAC,6BAA6B,EAAC,MAAM,wBAAwB,CAAC;AAI1E,eAAO,MAAM,sBAAsB,kGAMjC,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCzB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,OAAO,aAAa,CAAC,YAAY,CAAC;AAC/D,MAAM,MAAM,oBAAoB,GAAG,OAAO,aAAa,CAAC,YAAY,CAAC;AAErE,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,GAAG,YAAY,CAsBtF"}