@shipfox/api-workflows 12.1.0 → 12.2.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 (73) hide show
  1. package/.turbo/turbo-build.log +4 -4
  2. package/CHANGELOG.md +29 -0
  3. package/dist/core/entities/job.d.ts +1 -1
  4. package/dist/core/entities/job.d.ts.map +1 -1
  5. package/dist/core/entities/step.d.ts +2 -2
  6. package/dist/core/entities/step.d.ts.map +1 -1
  7. package/dist/core/errors.d.ts +16 -0
  8. package/dist/core/errors.d.ts.map +1 -1
  9. package/dist/core/errors.js +18 -0
  10. package/dist/core/errors.js.map +1 -1
  11. package/dist/core/step-config/assemble-run-context.d.ts +15 -5
  12. package/dist/core/step-config/assemble-run-context.d.ts.map +1 -1
  13. package/dist/core/step-config/assemble-run-context.js +77 -27
  14. package/dist/core/step-config/assemble-run-context.js.map +1 -1
  15. package/dist/core/step-config/fields.d.ts +5 -0
  16. package/dist/core/step-config/fields.d.ts.map +1 -1
  17. package/dist/core/step-config/fields.js +21 -3
  18. package/dist/core/step-config/fields.js.map +1 -1
  19. package/dist/core/step-config/index.d.ts +1 -1
  20. package/dist/core/step-config/index.d.ts.map +1 -1
  21. package/dist/core/step-config/index.js +1 -1
  22. package/dist/core/step-config/index.js.map +1 -1
  23. package/dist/core/step-config/job-output-limits.d.ts +11 -0
  24. package/dist/core/step-config/job-output-limits.d.ts.map +1 -0
  25. package/dist/core/step-config/job-output-limits.js +88 -0
  26. package/dist/core/step-config/job-output-limits.js.map +1 -0
  27. package/dist/core/step-config/materialize-workflow-model.d.ts +1 -1
  28. package/dist/core/step-config/materialize-workflow-model.d.ts.map +1 -1
  29. package/dist/core/step-config/materialize-workflow-model.js +41 -14
  30. package/dist/core/step-config/materialize-workflow-model.js.map +1 -1
  31. package/dist/db/db.d.ts +50 -50
  32. package/dist/db/job-listeners.d.ts.map +1 -1
  33. package/dist/db/job-listeners.js +6 -5
  34. package/dist/db/job-listeners.js.map +1 -1
  35. package/dist/db/schema/job-executions.d.ts +3 -3
  36. package/dist/db/schema/job-listener-events.d.ts +1 -1
  37. package/dist/db/schema/jobs.d.ts +7 -7
  38. package/dist/db/schema/outbox.d.ts +1 -1
  39. package/dist/db/schema/step-attempts.d.ts +2 -2
  40. package/dist/db/schema/steps.d.ts +5 -5
  41. package/dist/db/schema/workflow-run-attempts.d.ts +3 -3
  42. package/dist/db/schema/workflow-run-counters.d.ts +1 -1
  43. package/dist/db/schema/workflow-runs.d.ts +2 -2
  44. package/dist/db/workflow-runs/job-executions.d.ts.map +1 -1
  45. package/dist/db/workflow-runs/job-executions.js +4 -2
  46. package/dist/db/workflow-runs/job-executions.js.map +1 -1
  47. package/dist/db/workflow-runs/jobs.d.ts.map +1 -1
  48. package/dist/db/workflow-runs/jobs.js +29 -3
  49. package/dist/db/workflow-runs/jobs.js.map +1 -1
  50. package/dist/presentation/routes/project-access.d.ts +1 -1
  51. package/dist/temporal/activities/index.d.ts +1 -1
  52. package/dist/temporal/activities/index.d.ts.map +1 -1
  53. package/dist/temporal/activities/orchestration-activities.d.ts +1 -1
  54. package/dist/temporal/activities/orchestration-activities.d.ts.map +1 -1
  55. package/dist/temporal/workflows/test-env.d.ts +2 -2
  56. package/dist/tsconfig.test.tsbuildinfo +1 -1
  57. package/package.json +16 -16
  58. package/src/core/errors.ts +35 -0
  59. package/src/core/step-config/assemble-run-context.test.ts +232 -20
  60. package/src/core/step-config/assemble-run-context.ts +126 -28
  61. package/src/core/step-config/fields.ts +42 -3
  62. package/src/core/step-config/index.ts +2 -0
  63. package/src/core/step-config/job-output-limits.ts +130 -0
  64. package/src/core/step-config/materialize-workflow-model.test.ts +306 -1
  65. package/src/core/step-config/materialize-workflow-model.ts +60 -15
  66. package/src/db/job-listeners.ts +14 -3
  67. package/src/db/workflow-runs/job-executions.test.ts +207 -1
  68. package/src/db/workflow-runs/job-executions.ts +15 -2
  69. package/src/db/workflow-runs/jobs.test.ts +49 -0
  70. package/src/db/workflow-runs/jobs.ts +46 -6
  71. package/src/db/workflow-runs/run-create.test.ts +56 -0
  72. package/test/factories/workflow-model.ts +2 -0
  73. package/tsconfig.build.tsbuildinfo +1 -1
@@ -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 {canonicalizeLabels, findInvalidLabels, MAX_RUNNER_LABELS} from '@shipfox/runner-labels';\nimport type {AgentDefaultsResolver} from '#core/agent-defaults.js';\nimport type {\n AgentToolMaterializationContext,\n AgentToolMaterializationSnapshot,\n} from '#core/agent-tools.js';\nimport {InvalidJobRunnerLabelsError} from '#core/errors.js';\nimport {completeStepField} from './fields.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 labels = canonicalizeLabels([...params.job.runner, ...resolvedLabels]);\n const invalidLabels = findInvalidLabels(labels);\n if (labels.length === 0 || labels.length > MAX_RUNNER_LABELS || invalidLabels.length > 0) {\n throw new InvalidJobRunnerLabelsError(labels);\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, string> | null {\n const outputs = params.job.outputs;\n if (outputs === undefined) return null;\n\n return Object.fromEntries(\n Object.entries(outputs).map(([key, template]) => [\n key,\n completeStepField({\n field: 'job.outputs',\n errorField: 'job.outputs',\n template: {segments: template},\n context: params.context,\n definitionId: params.definitionId,\n }),\n ]),\n );\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","canonicalizeLabels","findInvalidLabels","MAX_RUNNER_LABELS","InvalidJobRunnerLabelsError","completeStepField","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","labels","invalidLabels","length","materializeJobOutputs","Object","fromEntries","entries","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 {canonicalizeLabels, findInvalidLabels, MAX_RUNNER_LABELS} from '@shipfox/runner-labels';\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 labels = canonicalizeLabels([...params.job.runner, ...resolvedLabels]);\n const invalidLabels = findInvalidLabels(labels);\n if (labels.length === 0 || labels.length > MAX_RUNNER_LABELS || invalidLabels.length > 0) {\n throw new InvalidJobRunnerLabelsError(labels);\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","canonicalizeLabels","findInvalidLabels","MAX_RUNNER_LABELS","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","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":"AAAA,SAAQA,oBAAoB,QAA2B,+BAA+B;AACtF,SAAQC,kBAAkB,EAAEC,iBAAiB,EAAEC,iBAAiB,QAAO,yBAAyB;AAMhG,SACEC,2BAA2B,EAC3BC,sBAAsB,EACtBC,4BAA4B,QACvB,kBAAkB;AACzB,SAAQC,iBAAiB,EAAEC,yBAAyB,QAAO,cAAc;AACzE,SAEEC,8BAA8B,EAC9BC,wBAAwB,EACxBC,sBAAsB,EACtBC,0BAA0B,EAC1BC,2BAA2B,EAC3BC,uBAAuB,QAClB,yBAAyB;AAChC,SAEEC,4BAA4B,QACvB,uCAAuC;AA4B9C,OAAO,eAAeC,yBACpBC,MAAsC;IAEtC,MAAM,EACJC,KAAK,EACLC,UAAU;QAACC,MAAM;QAAgBC,QAAQ,CAAC;IAAC,CAAC,EAC5CC,oBAAoB,EACpBC,eAAeL,MAAMM,IAAI,EACzBC,gBAAgB,EAChBC,iBAAiB,EAClB,GAAGT;IACJ,MAAMU,WAAW,IAAIC,IAAIV,MAAMW,IAAI,CAACC,GAAG,CAAC,CAACC,MAAQ;YAACA,IAAIC,EAAE;YAAED;SAAI;IAE9D,OAAO,MAAME,QAAQC,GAAG,CACtBhB,MAAMW,IAAI,CAACC,GAAG,CAAC,OAAOC,KAAKI;QACzB,MAAMX,OAAOO,IAAIP,IAAI;QACrB,OAAO;YACLY,KAAKL,IAAIK,GAAG;YACZC,MAAMN,IAAIM,IAAI;YACd,GAAIN,IAAIO,OAAO,KAAKC,YAAY,CAAC,IAAI;gBAACD,SAASP,IAAIO,OAAO;YAAA,CAAC;YAC3D,GAAIP,IAAIS,kBAAkB,KAAKD,YAC3B,CAAC,IACD;gBAACC,oBAAoBT,IAAIS,kBAAkB;YAAA,CAAC;YAChDC,UAAUV,IAAIU,QAAQ,KAAK,QAAQzC,uBAAuB+B,IAAIU,QAAQ;YACtE,GAAIV,IAAIW,SAAS,KAAKH,YAAY,CAAC,IAAI;gBAACG,WAAWX,IAAIW,SAAS;YAAA,CAAC;YACjE,GAAIlB,SAASe,YAAY,CAAC,IAAI;gBAACf;YAAI,CAAC;YACpC,GAAIO,IAAIY,OAAO,KAAKJ,YAAY,CAAC,IAAI;gBAACI,SAASZ,IAAIY,OAAO;YAAA,CAAC;YAC3DC,cAAcC,sBAAsBd,KAAKJ;YACzCmB,QAAQf,IAAIe,MAAM;YAClBX;YACAY,OACEhB,IAAIM,IAAI,KAAK,cACT,EAAE,GACF,MAAMtB,6BAA6B;gBACjCG;gBACAa;gBACAZ;gBACAG;gBACAC;gBACAE;gBACAC;YACF;QACR;IACF;AAEJ;AAEA,OAAO,SAASsB,qBAAqB/B,MAIpC;IACC,MAAMgC,iBAAiB,AAAChC,CAAAA,OAAOc,GAAG,CAACmB,eAAe,IAAI,EAAE,AAAD,EAAGpB,GAAG,CAAC,CAACqB,WAC7D5C,kBAAkB;YAChB6C,OAAO;YACPC,YAAY;YACZF,UAAU;gBAACG,UAAUH;YAAQ;YAC7BhC,SAASF,OAAOE,OAAO;YACvBI,cAAcN,OAAOM,YAAY;QACnC;IAEF,MAAMgC,SAAStD,mBAAmB;WAAIgB,OAAOc,GAAG,CAACe,MAAM;WAAKG;KAAe;IAC3E,MAAMO,gBAAgBtD,kBAAkBqD;IACxC,IAAIA,OAAOE,MAAM,KAAK,KAAKF,OAAOE,MAAM,GAAGtD,qBAAqBqD,cAAcC,MAAM,GAAG,GAAG;QACxF,MAAM,IAAIrD,4BAA4BmD;IACxC;IACA,OAAOA;AACT;AAEA,OAAO,SAASG,sBAAsBzC,MAIrC;IACC,MAAM0B,UAAU1B,OAAOc,GAAG,CAACY,OAAO;IAClC,IAAIA,YAAYJ,WAAW,OAAO;IAElC,MAAMoB,gBAAgBC,OAAOC,OAAO,CAAClB;IACrC,IAAIgB,cAAcF,MAAM,GAAG9C,wBAAwB;QACjD,MAAM,IAAIL,6BAA6BqD,cAAcF,MAAM,EAAE9C;IAC/D;IAEA,MAAMmD,eAAuD,CAAC;IAC9D,+EAA+E;IAC/E,6DAA6D;IAC7D,IAAIC,cAAc;IAElB,KAAK,MAAM,CAACC,OAAO,CAAC5B,KAAKe,SAAS,CAAC,IAAIQ,cAAcE,OAAO,GAAI;QAC9D,MAAMI,cAAchD,OAAOc,GAAG,CAACkC,WAAW;QAC1C,MAAMC,aACJD,gBAAgB1B,aAAaqB,OAAOO,MAAM,CAACF,aAAa7B,OAAO6B,WAAW,CAAC7B,IAAI,GAAGG;QACpF,MAAM6B,mBAAmB;YACvBhB,OAAO;YACPC,YAAY;YACZF,UAAU;gBAACG,UAAUH;YAAQ;YAC7BhC,SAASF,OAAOE,OAAO;YACvBI,cAAcN,OAAOM,YAAY;QACnC;QACA,MAAM8C,QACJH,eAAe3B,aAAa2B,eAAe,WACvC3D,kBAAkB6D,oBAClB5D,0BAA0B4D;QAChC,MAAME,kBAAkBxD,wBAAwBuD,OAAOjC;QACvD,MAAMmC,aAAa7D,yBAAyB4D;QAC5C,IAAIC,aAAa3D,4BAA4B;YAC3C,MAAM,IAAIP,uBAAuB+B,KAAKxB,4BAA4B;QACpE;QAEAmD,eAAe,AAACC,CAAAA,UAAU,IAAI,IAAI,CAAA,IAAKvD,+BAA+B2B,KAAKkC;QAC3EV,OAAOY,cAAc,CAACV,cAAc1B,KAAK;YACvCqC,cAAc;YACdC,YAAY;YACZL,OAAOC;YACPK,UAAU;QACZ;QACA,IAAIZ,cAAclD,6BAA6B;YAC7C,MAAM,IAAIR,uBAAuB+B,KAAKvB,6BAA6B;QACrE;IACF;IAEA,OAAOiD;AACT;AAEA,OAAO,SAASc,kBAAkB1D,KAAoB;IACpD,OAAOA,MAAMW,IAAI,CAACgD,IAAI,CAAC,CAAC9C,MAAQA,IAAIgB,KAAK,CAAC8B,IAAI,CAAC,CAACC,OAASA,KAAKC,IAAI,KAAK;AACzE;AAEA,SAASlC,sBACPd,GAAqB,EACrBJ,QAA+C;IAE/C,OAAOI,IAAIa,YAAY,CAACd,GAAG,CAAC,CAACkD;QAC3B,MAAMC,aAAatD,SAASuD,GAAG,CAACF;QAChC,IAAI,CAACC,YAAY;YACf,MAAM,IAAIE,MAAM,CAAC,sCAAsC,EAAEH,aAAa,WAAW,EAAEjD,IAAIC,EAAE,CAAC,CAAC,CAAC;QAC9F;QACA,OAAOiD,WAAW7C,GAAG;IACvB;AACF"}
package/dist/db/db.d.ts CHANGED
@@ -128,7 +128,7 @@ export declare const schema: {
128
128
  tableName: "workflow_runs";
129
129
  dataType: "string";
130
130
  columnType: "PgEnumColumn";
131
- data: "pending" | "running" | "succeeded" | "failed" | "cancelled";
131
+ data: "cancelled" | "failed" | "pending" | "running" | "succeeded";
132
132
  driverParam: string;
133
133
  notNull: true;
134
134
  hasDefault: true;
@@ -404,7 +404,7 @@ export declare const schema: {
404
404
  generated: undefined;
405
405
  }, {}, {}>;
406
406
  };
407
- dialect: "pg";
407
+ dialect: 'pg';
408
408
  }>;
409
409
  workflowRunAttempts: import("drizzle-orm/pg-core").PgTableWithColumns<{
410
410
  name: "workflow_run_attempts";
@@ -466,7 +466,7 @@ export declare const schema: {
466
466
  tableName: "workflow_run_attempts";
467
467
  dataType: "string";
468
468
  columnType: "PgEnumColumn";
469
- data: "pending" | "running" | "succeeded" | "failed" | "cancelled";
469
+ data: "cancelled" | "failed" | "pending" | "running" | "succeeded";
470
470
  driverParam: string;
471
471
  notNull: true;
472
472
  hasDefault: true;
@@ -483,7 +483,7 @@ export declare const schema: {
483
483
  tableName: "workflow_run_attempts";
484
484
  dataType: "string";
485
485
  columnType: "PgEnumColumn";
486
- data: "failed" | "all";
486
+ data: "all" | "failed";
487
487
  driverParam: string;
488
488
  notNull: false;
489
489
  hasDefault: false;
@@ -661,7 +661,7 @@ export declare const schema: {
661
661
  generated: undefined;
662
662
  }, {}, {}>;
663
663
  };
664
- dialect: "pg";
664
+ dialect: 'pg';
665
665
  }>;
666
666
  workflowRunCounters: import("drizzle-orm/pg-core").PgTableWithColumns<{
667
667
  name: "workflow_run_counters";
@@ -702,7 +702,7 @@ export declare const schema: {
702
702
  generated: undefined;
703
703
  }, {}, {}>;
704
704
  };
705
- dialect: "pg";
705
+ dialect: 'pg';
706
706
  }>;
707
707
  jobs: import("drizzle-orm/pg-core").PgTableWithColumns<{
708
708
  name: "jobs";
@@ -764,7 +764,7 @@ export declare const schema: {
764
764
  tableName: "jobs";
765
765
  dataType: "string";
766
766
  columnType: "PgEnumColumn";
767
- data: "one_shot" | "listening";
767
+ data: "listening" | "one_shot";
768
768
  driverParam: string;
769
769
  notNull: true;
770
770
  hasDefault: true;
@@ -798,7 +798,7 @@ export declare const schema: {
798
798
  tableName: "jobs";
799
799
  dataType: "string";
800
800
  columnType: "PgEnumColumn";
801
- data: "pending" | "running" | "succeeded" | "failed" | "cancelled" | "skipped";
801
+ data: "cancelled" | "failed" | "pending" | "running" | "skipped" | "succeeded";
802
802
  driverParam: string;
803
803
  notNull: true;
804
804
  hasDefault: true;
@@ -815,7 +815,7 @@ export declare const schema: {
815
815
  tableName: "jobs";
816
816
  dataType: "string";
817
817
  columnType: "PgEnumColumn";
818
- data: "default_gate_rejected" | "condition_rejected" | "condition_errored" | "dependency_not_completed" | "condition_false" | "user_cancelled" | "run_cancelled" | "timed_out" | "runner_lost" | "step_failed" | "unknown";
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";
819
819
  driverParam: string;
820
820
  notNull: false;
821
821
  hasDefault: false;
@@ -970,7 +970,7 @@ export declare const schema: {
970
970
  tableName: "jobs";
971
971
  dataType: "string";
972
972
  columnType: "PgEnumColumn";
973
- data: "finish" | "cancel";
973
+ data: "cancel" | "finish";
974
974
  driverParam: string;
975
975
  notNull: false;
976
976
  hasDefault: false;
@@ -1038,7 +1038,7 @@ export declare const schema: {
1038
1038
  tableName: "jobs";
1039
1039
  dataType: "string";
1040
1040
  columnType: "PgEnumColumn";
1041
- data: "listening" | "inactive" | "resolved";
1041
+ data: "inactive" | "listening" | "resolved";
1042
1042
  driverParam: string;
1043
1043
  notNull: true;
1044
1044
  hasDefault: true;
@@ -1055,7 +1055,7 @@ export declare const schema: {
1055
1055
  tableName: "jobs";
1056
1056
  dataType: "string";
1057
1057
  columnType: "PgEnumColumn";
1058
- data: "cancelled" | "until" | "timeout" | "max_executions";
1058
+ data: "cancelled" | "max_executions" | "timeout" | "until";
1059
1059
  driverParam: string;
1060
1060
  notNull: false;
1061
1061
  hasDefault: false;
@@ -1231,7 +1231,7 @@ export declare const schema: {
1231
1231
  generated: undefined;
1232
1232
  }, {}, {}>;
1233
1233
  };
1234
- dialect: "pg";
1234
+ dialect: 'pg';
1235
1235
  }>;
1236
1236
  jobExecutions: import("drizzle-orm/pg-core").PgTableWithColumns<{
1237
1237
  name: "job_executions";
@@ -1329,7 +1329,7 @@ export declare const schema: {
1329
1329
  tableName: "job_executions";
1330
1330
  dataType: "string";
1331
1331
  columnType: "PgEnumColumn";
1332
- data: "pending" | "running" | "succeeded" | "failed" | "cancelled";
1332
+ data: "cancelled" | "failed" | "pending" | "running" | "succeeded";
1333
1333
  driverParam: string;
1334
1334
  notNull: true;
1335
1335
  hasDefault: true;
@@ -1346,7 +1346,7 @@ export declare const schema: {
1346
1346
  tableName: "job_executions";
1347
1347
  dataType: "string";
1348
1348
  columnType: "PgEnumColumn";
1349
- data: "default_gate_rejected" | "condition_rejected" | "condition_errored" | "dependency_not_completed" | "condition_false" | "user_cancelled" | "run_cancelled" | "timed_out" | "runner_lost" | "step_failed" | "unknown";
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";
1350
1350
  driverParam: string;
1351
1351
  notNull: false;
1352
1352
  hasDefault: false;
@@ -1535,7 +1535,7 @@ export declare const schema: {
1535
1535
  generated: undefined;
1536
1536
  }, {}, {}>;
1537
1537
  };
1538
- dialect: "pg";
1538
+ dialect: 'pg';
1539
1539
  }>;
1540
1540
  jobListenerEvents: import("drizzle-orm/pg-core").PgTableWithColumns<{
1541
1541
  name: "job_listener_events";
@@ -1748,7 +1748,7 @@ export declare const schema: {
1748
1748
  generated: undefined;
1749
1749
  }, {}, {}>;
1750
1750
  };
1751
- dialect: "pg";
1751
+ dialect: 'pg';
1752
1752
  }>;
1753
1753
  steps: import("drizzle-orm/pg-core").PgTableWithColumns<{
1754
1754
  name: "steps";
@@ -1846,7 +1846,7 @@ export declare const schema: {
1846
1846
  tableName: "steps";
1847
1847
  dataType: "string";
1848
1848
  columnType: "PgEnumColumn";
1849
- data: "pending" | "running" | "succeeded" | "failed" | "cancelled" | "skipped";
1849
+ data: "cancelled" | "failed" | "pending" | "running" | "skipped" | "succeeded";
1850
1850
  driverParam: string;
1851
1851
  notNull: true;
1852
1852
  hasDefault: true;
@@ -1863,7 +1863,7 @@ export declare const schema: {
1863
1863
  tableName: "steps";
1864
1864
  dataType: "string";
1865
1865
  columnType: "PgEnumColumn";
1866
- data: "default_gate_rejected" | "condition_rejected" | "condition_errored";
1866
+ data: "condition_errored" | "condition_rejected" | "default_gate_rejected";
1867
1867
  driverParam: string;
1868
1868
  notNull: false;
1869
1869
  hasDefault: false;
@@ -1899,7 +1899,7 @@ export declare const schema: {
1899
1899
  tableName: "steps";
1900
1900
  dataType: "string";
1901
1901
  columnType: "PgText";
1902
- data: "setup" | "run" | "agent" | "checkout";
1902
+ data: "agent" | "checkout" | "run" | "setup";
1903
1903
  driverParam: string;
1904
1904
  notNull: true;
1905
1905
  hasDefault: false;
@@ -1911,7 +1911,7 @@ export declare const schema: {
1911
1911
  identity: undefined;
1912
1912
  generated: undefined;
1913
1913
  }, {}, {
1914
- $type: "setup" | "run" | "agent" | "checkout";
1914
+ $type: "agent" | "checkout" | "run" | "setup";
1915
1915
  }>;
1916
1916
  config: import("drizzle-orm/pg-core").PgColumn<{
1917
1917
  name: "config";
@@ -2094,7 +2094,7 @@ export declare const schema: {
2094
2094
  generated: undefined;
2095
2095
  }, {}, {}>;
2096
2096
  };
2097
- dialect: "pg";
2097
+ dialect: 'pg';
2098
2098
  }>;
2099
2099
  stepAttempts: import("drizzle-orm/pg-core").PgTableWithColumns<{
2100
2100
  name: "step_attempts";
@@ -2190,7 +2190,7 @@ export declare const schema: {
2190
2190
  tableName: "step_attempts";
2191
2191
  dataType: "string";
2192
2192
  columnType: "PgEnumColumn";
2193
- data: "pending" | "running" | "succeeded" | "failed" | "cancelled" | "skipped";
2193
+ data: "cancelled" | "failed" | "pending" | "running" | "skipped" | "succeeded";
2194
2194
  driverParam: string;
2195
2195
  notNull: true;
2196
2196
  hasDefault: false;
@@ -2419,7 +2419,7 @@ export declare const schema: {
2419
2419
  generated: undefined;
2420
2420
  }, {}, {}>;
2421
2421
  };
2422
- dialect: "pg";
2422
+ dialect: 'pg';
2423
2423
  }>;
2424
2424
  workflowsOutbox: import("drizzle-orm/pg-core").PgTableWithColumns<{
2425
2425
  name: "outbox";
@@ -2613,7 +2613,7 @@ export declare const schema: {
2613
2613
  generated: undefined;
2614
2614
  }, {}, {}>;
2615
2615
  };
2616
- dialect: "pg";
2616
+ dialect: 'pg';
2617
2617
  }>;
2618
2618
  };
2619
2619
  export declare function db(): NodePgDatabase<{
@@ -2745,7 +2745,7 @@ export declare function db(): NodePgDatabase<{
2745
2745
  tableName: "workflow_runs";
2746
2746
  dataType: "string";
2747
2747
  columnType: "PgEnumColumn";
2748
- data: "pending" | "running" | "succeeded" | "failed" | "cancelled";
2748
+ data: "cancelled" | "failed" | "pending" | "running" | "succeeded";
2749
2749
  driverParam: string;
2750
2750
  notNull: true;
2751
2751
  hasDefault: true;
@@ -3021,7 +3021,7 @@ export declare function db(): NodePgDatabase<{
3021
3021
  generated: undefined;
3022
3022
  }, {}, {}>;
3023
3023
  };
3024
- dialect: "pg";
3024
+ dialect: 'pg';
3025
3025
  }>;
3026
3026
  workflowRunAttempts: import("drizzle-orm/pg-core").PgTableWithColumns<{
3027
3027
  name: "workflow_run_attempts";
@@ -3083,7 +3083,7 @@ export declare function db(): NodePgDatabase<{
3083
3083
  tableName: "workflow_run_attempts";
3084
3084
  dataType: "string";
3085
3085
  columnType: "PgEnumColumn";
3086
- data: "pending" | "running" | "succeeded" | "failed" | "cancelled";
3086
+ data: "cancelled" | "failed" | "pending" | "running" | "succeeded";
3087
3087
  driverParam: string;
3088
3088
  notNull: true;
3089
3089
  hasDefault: true;
@@ -3100,7 +3100,7 @@ export declare function db(): NodePgDatabase<{
3100
3100
  tableName: "workflow_run_attempts";
3101
3101
  dataType: "string";
3102
3102
  columnType: "PgEnumColumn";
3103
- data: "failed" | "all";
3103
+ data: "all" | "failed";
3104
3104
  driverParam: string;
3105
3105
  notNull: false;
3106
3106
  hasDefault: false;
@@ -3278,7 +3278,7 @@ export declare function db(): NodePgDatabase<{
3278
3278
  generated: undefined;
3279
3279
  }, {}, {}>;
3280
3280
  };
3281
- dialect: "pg";
3281
+ dialect: 'pg';
3282
3282
  }>;
3283
3283
  workflowRunCounters: import("drizzle-orm/pg-core").PgTableWithColumns<{
3284
3284
  name: "workflow_run_counters";
@@ -3319,7 +3319,7 @@ export declare function db(): NodePgDatabase<{
3319
3319
  generated: undefined;
3320
3320
  }, {}, {}>;
3321
3321
  };
3322
- dialect: "pg";
3322
+ dialect: 'pg';
3323
3323
  }>;
3324
3324
  jobs: import("drizzle-orm/pg-core").PgTableWithColumns<{
3325
3325
  name: "jobs";
@@ -3381,7 +3381,7 @@ export declare function db(): NodePgDatabase<{
3381
3381
  tableName: "jobs";
3382
3382
  dataType: "string";
3383
3383
  columnType: "PgEnumColumn";
3384
- data: "one_shot" | "listening";
3384
+ data: "listening" | "one_shot";
3385
3385
  driverParam: string;
3386
3386
  notNull: true;
3387
3387
  hasDefault: true;
@@ -3415,7 +3415,7 @@ export declare function db(): NodePgDatabase<{
3415
3415
  tableName: "jobs";
3416
3416
  dataType: "string";
3417
3417
  columnType: "PgEnumColumn";
3418
- data: "pending" | "running" | "succeeded" | "failed" | "cancelled" | "skipped";
3418
+ data: "cancelled" | "failed" | "pending" | "running" | "skipped" | "succeeded";
3419
3419
  driverParam: string;
3420
3420
  notNull: true;
3421
3421
  hasDefault: true;
@@ -3432,7 +3432,7 @@ export declare function db(): NodePgDatabase<{
3432
3432
  tableName: "jobs";
3433
3433
  dataType: "string";
3434
3434
  columnType: "PgEnumColumn";
3435
- data: "default_gate_rejected" | "condition_rejected" | "condition_errored" | "dependency_not_completed" | "condition_false" | "user_cancelled" | "run_cancelled" | "timed_out" | "runner_lost" | "step_failed" | "unknown";
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";
3436
3436
  driverParam: string;
3437
3437
  notNull: false;
3438
3438
  hasDefault: false;
@@ -3587,7 +3587,7 @@ export declare function db(): NodePgDatabase<{
3587
3587
  tableName: "jobs";
3588
3588
  dataType: "string";
3589
3589
  columnType: "PgEnumColumn";
3590
- data: "finish" | "cancel";
3590
+ data: "cancel" | "finish";
3591
3591
  driverParam: string;
3592
3592
  notNull: false;
3593
3593
  hasDefault: false;
@@ -3655,7 +3655,7 @@ export declare function db(): NodePgDatabase<{
3655
3655
  tableName: "jobs";
3656
3656
  dataType: "string";
3657
3657
  columnType: "PgEnumColumn";
3658
- data: "listening" | "inactive" | "resolved";
3658
+ data: "inactive" | "listening" | "resolved";
3659
3659
  driverParam: string;
3660
3660
  notNull: true;
3661
3661
  hasDefault: true;
@@ -3672,7 +3672,7 @@ export declare function db(): NodePgDatabase<{
3672
3672
  tableName: "jobs";
3673
3673
  dataType: "string";
3674
3674
  columnType: "PgEnumColumn";
3675
- data: "cancelled" | "until" | "timeout" | "max_executions";
3675
+ data: "cancelled" | "max_executions" | "timeout" | "until";
3676
3676
  driverParam: string;
3677
3677
  notNull: false;
3678
3678
  hasDefault: false;
@@ -3848,7 +3848,7 @@ export declare function db(): NodePgDatabase<{
3848
3848
  generated: undefined;
3849
3849
  }, {}, {}>;
3850
3850
  };
3851
- dialect: "pg";
3851
+ dialect: 'pg';
3852
3852
  }>;
3853
3853
  jobExecutions: import("drizzle-orm/pg-core").PgTableWithColumns<{
3854
3854
  name: "job_executions";
@@ -3946,7 +3946,7 @@ export declare function db(): NodePgDatabase<{
3946
3946
  tableName: "job_executions";
3947
3947
  dataType: "string";
3948
3948
  columnType: "PgEnumColumn";
3949
- data: "pending" | "running" | "succeeded" | "failed" | "cancelled";
3949
+ data: "cancelled" | "failed" | "pending" | "running" | "succeeded";
3950
3950
  driverParam: string;
3951
3951
  notNull: true;
3952
3952
  hasDefault: true;
@@ -3963,7 +3963,7 @@ export declare function db(): NodePgDatabase<{
3963
3963
  tableName: "job_executions";
3964
3964
  dataType: "string";
3965
3965
  columnType: "PgEnumColumn";
3966
- data: "default_gate_rejected" | "condition_rejected" | "condition_errored" | "dependency_not_completed" | "condition_false" | "user_cancelled" | "run_cancelled" | "timed_out" | "runner_lost" | "step_failed" | "unknown";
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";
3967
3967
  driverParam: string;
3968
3968
  notNull: false;
3969
3969
  hasDefault: false;
@@ -4152,7 +4152,7 @@ export declare function db(): NodePgDatabase<{
4152
4152
  generated: undefined;
4153
4153
  }, {}, {}>;
4154
4154
  };
4155
- dialect: "pg";
4155
+ dialect: 'pg';
4156
4156
  }>;
4157
4157
  jobListenerEvents: import("drizzle-orm/pg-core").PgTableWithColumns<{
4158
4158
  name: "job_listener_events";
@@ -4365,7 +4365,7 @@ export declare function db(): NodePgDatabase<{
4365
4365
  generated: undefined;
4366
4366
  }, {}, {}>;
4367
4367
  };
4368
- dialect: "pg";
4368
+ dialect: 'pg';
4369
4369
  }>;
4370
4370
  steps: import("drizzle-orm/pg-core").PgTableWithColumns<{
4371
4371
  name: "steps";
@@ -4463,7 +4463,7 @@ export declare function db(): NodePgDatabase<{
4463
4463
  tableName: "steps";
4464
4464
  dataType: "string";
4465
4465
  columnType: "PgEnumColumn";
4466
- data: "pending" | "running" | "succeeded" | "failed" | "cancelled" | "skipped";
4466
+ data: "cancelled" | "failed" | "pending" | "running" | "skipped" | "succeeded";
4467
4467
  driverParam: string;
4468
4468
  notNull: true;
4469
4469
  hasDefault: true;
@@ -4480,7 +4480,7 @@ export declare function db(): NodePgDatabase<{
4480
4480
  tableName: "steps";
4481
4481
  dataType: "string";
4482
4482
  columnType: "PgEnumColumn";
4483
- data: "default_gate_rejected" | "condition_rejected" | "condition_errored";
4483
+ data: "condition_errored" | "condition_rejected" | "default_gate_rejected";
4484
4484
  driverParam: string;
4485
4485
  notNull: false;
4486
4486
  hasDefault: false;
@@ -4516,7 +4516,7 @@ export declare function db(): NodePgDatabase<{
4516
4516
  tableName: "steps";
4517
4517
  dataType: "string";
4518
4518
  columnType: "PgText";
4519
- data: "setup" | "run" | "agent" | "checkout";
4519
+ data: "agent" | "checkout" | "run" | "setup";
4520
4520
  driverParam: string;
4521
4521
  notNull: true;
4522
4522
  hasDefault: false;
@@ -4528,7 +4528,7 @@ export declare function db(): NodePgDatabase<{
4528
4528
  identity: undefined;
4529
4529
  generated: undefined;
4530
4530
  }, {}, {
4531
- $type: "setup" | "run" | "agent" | "checkout";
4531
+ $type: "agent" | "checkout" | "run" | "setup";
4532
4532
  }>;
4533
4533
  config: import("drizzle-orm/pg-core").PgColumn<{
4534
4534
  name: "config";
@@ -4711,7 +4711,7 @@ export declare function db(): NodePgDatabase<{
4711
4711
  generated: undefined;
4712
4712
  }, {}, {}>;
4713
4713
  };
4714
- dialect: "pg";
4714
+ dialect: 'pg';
4715
4715
  }>;
4716
4716
  stepAttempts: import("drizzle-orm/pg-core").PgTableWithColumns<{
4717
4717
  name: "step_attempts";
@@ -4807,7 +4807,7 @@ export declare function db(): NodePgDatabase<{
4807
4807
  tableName: "step_attempts";
4808
4808
  dataType: "string";
4809
4809
  columnType: "PgEnumColumn";
4810
- data: "pending" | "running" | "succeeded" | "failed" | "cancelled" | "skipped";
4810
+ data: "cancelled" | "failed" | "pending" | "running" | "skipped" | "succeeded";
4811
4811
  driverParam: string;
4812
4812
  notNull: true;
4813
4813
  hasDefault: false;
@@ -5036,7 +5036,7 @@ export declare function db(): NodePgDatabase<{
5036
5036
  generated: undefined;
5037
5037
  }, {}, {}>;
5038
5038
  };
5039
- dialect: "pg";
5039
+ dialect: 'pg';
5040
5040
  }>;
5041
5041
  workflowsOutbox: import("drizzle-orm/pg-core").PgTableWithColumns<{
5042
5042
  name: "outbox";
@@ -5230,7 +5230,7 @@ export declare function db(): NodePgDatabase<{
5230
5230
  generated: undefined;
5231
5231
  }, {}, {}>;
5232
5232
  };
5233
- dialect: "pg";
5233
+ dialect: 'pg';
5234
5234
  }>;
5235
5235
  }>;
5236
5236
  export declare function closeDb(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"job-listeners.d.ts","sourceRoot":"","sources":["../../src/db/job-listeners.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"job-listeners.d.ts","sourceRoot":"","sources":["../../src/db/job-listeners.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ import { normalizeWorkflowExecutionEvent } from '#core/entities/job-execution.js
8
8
  import { InterpolationUnresolvableError } from '#core/errors.js';
9
9
  import { deriveJobSuccess } from '#core/job-transition/index.js';
10
10
  import { materializeListenerExecution } from '#core/listener-execution-materialization.js';
11
- import { applyListenerFilterSnapshots, assembleListenerSnapshotContext, planListenerFilterSnapshots } from '#core/step-config/assemble-run-context.js';
11
+ import { applyListenerFilterSnapshots, assembleListenerSnapshotContext, listenerFilterOutputTypesForJobs, planListenerFilterSnapshots } from '#core/step-config/assemble-run-context.js';
12
12
  import { recordListenerEventsCoalesced, recordWorkflowJobExecutionStatusChanged, recordWorkflowListenerResolved } from '#metrics/instance.js';
13
13
  import { db } from './db.js';
14
14
  import { writeWorkflowsOutboxEvent } from './outbox-writes.js';
@@ -25,8 +25,8 @@ const TERMINAL_EXECUTION_STATUSES = [
25
25
  'cancelled'
26
26
  ];
27
27
  const MAX_LISTENER_RESOLUTION_ATTEMPTS = 3;
28
- function applyActivatedListenerFilterSnapshots(plans, context) {
29
- return applyListenerFilterSnapshots(plans, context);
28
+ function applyActivatedListenerFilterSnapshots(plans, context, outputTypes) {
29
+ return applyListenerFilterSnapshots(plans, context, outputTypes);
30
30
  }
31
31
  export async function activateJobListener(params) {
32
32
  return await db().transaction(async (tx)=>{
@@ -91,6 +91,7 @@ export async function activateJobListener(params) {
91
91
  plan: snapshotPlan,
92
92
  dependencyJobs
93
93
  });
94
+ const listenerOutputTypes = listenerFilterOutputTypesForJobs(dependencyJobs);
94
95
  await writeWorkflowsOutboxEvent(tx, {
95
96
  type: WORKFLOWS_JOB_ACTIVATED,
96
97
  payload: {
@@ -98,8 +99,8 @@ export async function activateJobListener(params) {
98
99
  workflowRunId: target.run.id,
99
100
  workspaceId: target.run.workspaceId,
100
101
  mode: 'listening',
101
- on: applyActivatedListenerFilterSnapshots(snapshotPlan.on, snapshotContext),
102
- until: matchers.until === null ? null : applyActivatedListenerFilterSnapshots(snapshotPlan.until, snapshotContext)
102
+ on: applyActivatedListenerFilterSnapshots(snapshotPlan.on, snapshotContext, listenerOutputTypes),
103
+ until: matchers.until === null ? null : applyActivatedListenerFilterSnapshots(snapshotPlan.until, snapshotContext, listenerOutputTypes)
103
104
  }
104
105
  });
105
106
  }