@shipfox/api-workflows 12.4.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.
- package/.turbo/turbo-build.log +4 -4
- package/CHANGELOG.md +13 -0
- package/dist/core/entities/job-execution.d.ts +1 -0
- package/dist/core/entities/job-execution.d.ts.map +1 -1
- package/dist/core/entities/job-execution.js.map +1 -1
- package/dist/core/entities/job.d.ts +1 -1
- package/dist/core/entities/job.d.ts.map +1 -1
- package/dist/core/entities/job.js +3 -1
- package/dist/core/entities/job.js.map +1 -1
- package/dist/core/errors.d.ts +3 -1
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +4 -2
- package/dist/core/errors.js.map +1 -1
- package/dist/core/step-config/job-output-limits.d.ts.map +1 -1
- package/dist/core/step-config/job-output-limits.js +2 -2
- package/dist/core/step-config/job-output-limits.js.map +1 -1
- package/dist/core/step-config/materialize-workflow-model.js +2 -2
- package/dist/core/step-config/materialize-workflow-model.js.map +1 -1
- package/dist/db/db.d.ts +42 -8
- package/dist/db/db.d.ts.map +1 -1
- package/dist/db/schema/job-executions.d.ts +19 -2
- package/dist/db/schema/job-executions.d.ts.map +1 -1
- package/dist/db/schema/job-executions.js +2 -0
- package/dist/db/schema/job-executions.js.map +1 -1
- package/dist/db/schema/jobs.d.ts +3 -3
- package/dist/db/schema/jobs.d.ts.map +1 -1
- package/dist/db/workflow-runs/job-executions.d.ts +7 -0
- package/dist/db/workflow-runs/job-executions.d.ts.map +1 -1
- package/dist/db/workflow-runs/job-executions.js +26 -4
- package/dist/db/workflow-runs/job-executions.js.map +1 -1
- package/dist/db/workflow-runs/jobs.d.ts.map +1 -1
- package/dist/db/workflow-runs/jobs.js +4 -2
- package/dist/db/workflow-runs/jobs.js.map +1 -1
- package/dist/presentation/dto/job.d.ts.map +1 -1
- package/dist/presentation/dto/job.js +1 -0
- package/dist/presentation/dto/job.js.map +1 -1
- package/dist/presentation/subscribers/on-failure-annotations.d.ts.map +1 -1
- package/dist/presentation/subscribers/on-failure-annotations.js +6 -3
- package/dist/presentation/subscribers/on-failure-annotations.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/drizzle/0002_output_failure_details.sql +2 -0
- package/drizzle/0003_output_invalid_reason.sql +1 -0
- package/drizzle/meta/0002_snapshot.json +1718 -0
- package/drizzle/meta/0003_snapshot.json +1719 -0
- package/drizzle/meta/_journal.json +14 -0
- package/package.json +2 -2
- package/src/core/entities/job-execution.ts +1 -0
- package/src/core/entities/job.ts +2 -0
- package/src/core/errors.test.ts +18 -0
- package/src/core/errors.ts +9 -2
- package/src/core/step-config/job-output-limits.ts +2 -2
- package/src/core/step-config/materialize-workflow-model.test.ts +67 -3
- package/src/core/step-config/materialize-workflow-model.ts +2 -2
- package/src/db/schema/job-executions.ts +2 -0
- package/src/db/workflow-runs/job-executions.test.ts +149 -4
- package/src/db/workflow-runs/job-executions.ts +44 -9
- package/src/db/workflow-runs/job-status.test.ts +30 -0
- package/src/db/workflow-runs/jobs.ts +5 -1
- package/src/presentation/dto/job.ts +1 -0
- package/src/presentation/subscribers/on-failure-annotations.test.ts +47 -1
- package/src/presentation/subscribers/on-failure-annotations.ts +10 -2
- package/test/helpers/workflow-runs.ts +1 -0
- package/tsconfig.build.tsbuildinfo +1 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
$ shipfox-swc && shipfox-temporal-bundle dist/temporal/workflows/index.js
|
|
2
|
-
Successfully compiled: 124 files with swc (
|
|
3
|
-
2026-08-
|
|
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
|
|
20
|
-
2026-08-
|
|
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,18 @@
|
|
|
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
|
+
|
|
3
16
|
## 12.4.0
|
|
4
17
|
|
|
5
18
|
### Patch 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":"AAAA,OAAO,KAAK,EAAC,6BAA6B,EAAC,MAAM,WAAW,CAAC;AAE7D,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;AAEjG,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC;AAE/C,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC;AAEnE,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,GAAG,gBAAgB,GAAG,WAAW,CAAC;AAEpF,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE;QACX,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;KAC5B,CAAC;IACF,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,eAAO,MAAM,kBAAkB,YAC7B,0BAA0B,EAC1B,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,aAAa,EACb,aAAa,EACb,SAAS,
|
|
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"}
|
package/dist/core/errors.d.ts
CHANGED
|
@@ -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
|
-
|
|
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":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAElE,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,YAAY,YAAY,EAAE,MAAM,EAG/B;CACF;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,mBAAmB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAKhE;CACF;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM;IAAxC,YAAqB,WAAW,EAAE,MAAM,EAGvC;CACF;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM;IAAxC,YAAqB,WAAW,EAAE,MAAM,EAGvC;CACF;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM;IAAxC,YAAqB,WAAW,EAAE,MAAM,EAGvC;CACF;AAED,qBAAa,4BAA6B,SAAQ,KAAK;IAEnD,QAAQ,CAAC,YAAY,EAAE,MAAM;IAD/B,YACW,YAAY,EAAE,MAAM,EAC7B,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,EAInC;CACF;AAED,qBAAa,oCAAqC,SAAQ,KAAK;IAC7D,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED,MAAM,MAAM,8BAA8B,GACtC,KAAK,GACL,KAAK,GACL,cAAc,GACd,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,YAAY,GACZ,aAAa,GACb,oBAAoB,GACpB,mBAAmB,GACnB,WAAW,GACX,wBAAwB,GACxB,eAAe,GACf,kBAAkB,GAClB,qBAAqB,GACrB,qBAAqB,GACrB,cAAc,GACd,eAAe,CAAC;AAEpB,qBAAa,8BAA+B,SAAQ,KAAK;IAMrD,QAAQ,CAAC,YAAY,EAAE,MAAM;IAL/B,QAAQ,CAAC,KAAK,EAAE,8BAA8B,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,YACW,YAAY,EAAE,MAAM,EAC7B,MAAM,EAAE;QACN,QAAQ,CAAC,KAAK,EAAE,8BAA8B,CAAC;QAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;KAC1B,EAOF;CACF;AAcD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CASnE;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,YAAY,KAAK,EAAE,MAAM,EAGxB;CACF;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IAElD,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE;IAClC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE;IAF7C,YACW,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,eAAe,GAAE,SAAS,MAAM,EAAW,EAQrD;CACF;AAED,qBAAa,sBAAuB,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/core/errors.js
CHANGED
|
@@ -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
|
-
|
|
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 {
|
package/dist/core/errors.js.map
CHANGED
|
@@ -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,
|
|
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 =
|
|
6
|
-
export const MAX_JOB_OUTPUT_VALUE_BYTES =
|
|
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 =
|
|
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;
|
package/dist/db/db.d.ts.map
CHANGED
|
@@ -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
|
|
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
|
|
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"}
|