@shipfox/api-workflows 16.0.0 → 17.0.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 +47 -0
- package/dist/core/agent-tools.js +8 -3
- package/dist/core/agent-tools.js.map +1 -1
- package/dist/core/entities/step.d.ts +1 -1
- package/dist/core/entities/step.d.ts.map +1 -1
- package/dist/core/entities/step.js +2 -1
- package/dist/core/entities/step.js.map +1 -1
- package/dist/core/errors.d.ts +1 -1
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js.map +1 -1
- package/dist/core/step-config/materialize-job-execution-steps.js +2 -0
- package/dist/core/step-config/materialize-job-execution-steps.js.map +1 -1
- package/dist/core/step-config/resolve-step-config.js +3 -1
- package/dist/core/step-config/resolve-step-config.js.map +1 -1
- package/dist/db/db.d.ts +8 -8
- package/dist/db/index.d.ts +1 -1
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +1 -1
- package/dist/db/index.js.map +1 -1
- package/dist/db/schema/steps.d.ts +2 -2
- package/dist/db/schema/workflow-run-attempts.d.ts +2 -2
- package/dist/db/workflow-runs/outbox.d.ts +1 -0
- package/dist/db/workflow-runs/outbox.d.ts.map +1 -1
- package/dist/db/workflow-runs/outbox.js +2 -1
- package/dist/db/workflow-runs/outbox.js.map +1 -1
- package/dist/db/workflow-runs/run-create.d.ts.map +1 -1
- package/dist/db/workflow-runs/run-create.js +49 -1
- package/dist/db/workflow-runs/run-create.js.map +1 -1
- package/dist/db/workflow-runs/steps.d.ts +6 -0
- package/dist/db/workflow-runs/steps.d.ts.map +1 -1
- package/dist/db/workflow-runs/steps.js +14 -0
- package/dist/db/workflow-runs/steps.js.map +1 -1
- package/dist/db/workflow-runs.d.ts +1 -1
- package/dist/db/workflow-runs.d.ts.map +1 -1
- package/dist/db/workflow-runs.js +1 -1
- package/dist/db/workflow-runs.js.map +1 -1
- package/dist/presentation/inter-module.d.ts.map +1 -1
- package/dist/presentation/inter-module.js +85 -19
- package/dist/presentation/inter-module.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +11 -11
- package/src/core/agent-tools.test.ts +85 -0
- package/src/core/agent-tools.ts +11 -3
- package/src/core/entities/step.ts +1 -1
- package/src/core/errors.ts +2 -0
- package/src/core/job-execution.test.ts +1 -0
- package/src/core/run-workflow.test.ts +4 -0
- package/src/core/step-config/materialize-job-execution-steps.ts +2 -0
- package/src/core/step-config/resolve-step-config.ts +4 -1
- package/src/db/index.ts +1 -0
- package/src/db/workflow-runs/outbox.ts +2 -0
- package/src/db/workflow-runs/run-create.test.ts +41 -0
- package/src/db/workflow-runs/run-create.ts +81 -3
- package/src/db/workflow-runs/steps.ts +19 -0
- package/src/db/workflow-runs.ts +1 -0
- package/src/presentation/inter-module.test.ts +223 -0
- package/src/presentation/inter-module.ts +106 -24
- package/src/presentation/routes/agent-runtime-config.test.ts +2 -0
- package/test/factories/workflow-model.ts +74 -2
- package/test/fixtures/agent-inter-module.ts +2 -0
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/step-config/resolve-step-config.ts"],"sourcesContent":["import type {WorkflowEnvTemplates, WorkflowModel} from '@shipfox/api-definitions-dto';\nimport {WORKFLOW_MODEL_CHECKOUT_TARGET_FIELDS} from '@shipfox/api-definitions-dto';\nimport {\n type AvailabilitySite,\n capTraceEntries,\n type EvaluationTraceLimitEntry,\n type WorkflowExpressionEvaluationContext,\n} from '@shipfox/expression';\nimport type {AgentDefaultsResolver} from '#core/agent-defaults.js';\nimport type {\n AgentToolMaterializationContext,\n AgentToolMaterializationSnapshot,\n} from '#core/agent-tools.js';\nimport type {StepConfigDispatchPlan} from '#core/entities/step.js';\nimport {resolveAgentStepConfig} from './agent.js';\nimport {\n freezeStepField,\n resolveStepField,\n type StepConfigField,\n type WorkflowStepEvaluationTraceEntry,\n type WorkflowStepTemplateDiagnostic,\n} from './fields.js';\nimport {resolveRunStepConfig, type StepConfigMode} from './run.js';\nimport type {WorkflowEvaluationContext} from './workflow-evaluation-context.js';\n\ntype WorkflowModelJob = WorkflowModel['jobs'][number];\ntype WorkflowModelStep = WorkflowModelJob['steps'][number];\ntype WorkflowModelRunStep = Extract<WorkflowModelStep, {kind: 'run'}>;\ntype WorkflowModelAgentStep = Extract<WorkflowModelStep, {kind: 'agent'}>;\ntype WorkflowModelCheckoutStep = Extract<WorkflowModelStep, {kind: 'checkout'}>;\n\nexport type {StepConfigField, WorkflowStepTemplateDiagnostic};\n\nexport interface ResolvedStepConfig {\n readonly config: Record<string, unknown>;\n readonly configPlan: StepConfigDispatchPlan | null;\n readonly authoredConfig: Record<string, unknown> | null;\n readonly name?: string;\n readonly diagnostics: readonly WorkflowStepTemplateDiagnostic[];\n readonly trace: readonly (WorkflowStepEvaluationTraceEntry | EvaluationTraceLimitEntry)[];\n}\n\nexport interface ResolveStepConfigParams {\n readonly jobKey: string;\n readonly step: WorkflowModelStep;\n readonly workflowEnv: WorkflowModel['env'];\n readonly workflowEnvTemplates: WorkflowEnvTemplates | undefined;\n readonly jobEnv: WorkflowModelJob['env'];\n readonly jobEnvTemplates: WorkflowEnvTemplates | undefined;\n readonly context: WorkflowExpressionEvaluationContext;\n readonly site: AvailabilitySite;\n readonly resolveAgentDefaults?: AgentDefaultsResolver | undefined;\n readonly definitionId: string;\n readonly agentToolContext?: AgentToolMaterializationContext | undefined;\n readonly agentToolSnapshot?: AgentToolMaterializationSnapshot | null | undefined;\n}\n\ntype BuildStepConfigParams = ResolveStepConfigParams & {readonly mode: StepConfigMode};\n\ninterface BuiltStepConfig {\n readonly config: Record<string, unknown>;\n readonly configPlan: StepConfigDispatchPlan | null;\n readonly diagnostics: readonly WorkflowStepTemplateDiagnostic[];\n readonly trace: readonly WorkflowStepEvaluationTraceEntry[];\n readonly hasTemplates: boolean;\n}\n\ninterface WorkingDirectoryConfig {\n readonly config: Record<string, unknown>;\n readonly configPlan: Pick<StepConfigDispatchPlan, 'working_directory'> | undefined;\n readonly diagnostics: readonly WorkflowStepTemplateDiagnostic[];\n readonly trace: readonly WorkflowStepEvaluationTraceEntry[];\n readonly hasTemplates: boolean;\n}\n\ninterface CheckoutConfig {\n readonly config: Record<string, unknown>;\n readonly configPlan: Pick<StepConfigDispatchPlan, 'checkout'> | undefined;\n readonly diagnostics: readonly WorkflowStepTemplateDiagnostic[];\n readonly trace: readonly WorkflowStepEvaluationTraceEntry[];\n readonly hasTemplates: boolean;\n}\n\nexport async function resolveStepConfig(\n params: ResolveStepConfigParams,\n): Promise<ResolvedStepConfig> {\n const context = evaluationContext(params);\n const effective = await buildStepConfig({...params, context, mode: 'effective'});\n const authoredConfig = effective.hasTemplates\n ? (await buildStepConfig({...params, context, mode: 'authored'})).config\n : null;\n const name = resolveStepName(params.step, context, params.definitionId);\n\n return {\n config: effective.config,\n configPlan: effective.configPlan,\n authoredConfig,\n ...(name.value === undefined || name.value === '' ? {} : {name: name.value}),\n diagnostics: [...effective.diagnostics, ...name.diagnostics],\n trace: capTraceEntries([...effective.trace, ...name.trace]),\n };\n}\n\nasync function buildStepConfig(\n params: Omit<BuildStepConfigParams, 'context'> & {readonly context: WorkflowEvaluationContext},\n): Promise<BuiltStepConfig> {\n const gate = gateConfigForStep(params.step);\n const outputs = outputsConfigForStep(params.step);\n const workingDirectory = resolveWorkingDirectoryConfig(params);\n const runStep = runStepOrNull(params.step);\n const isRunStep = runStep !== null;\n\n if (isRunStep) {\n const run = resolveRunStepConfig({...params, step: runStep});\n return {\n config: {...workingDirectory.config, ...run.config, ...gate, ...outputs},\n configPlan: mergeConfigPlans(run.configPlan, workingDirectory.configPlan),\n diagnostics: [...workingDirectory.diagnostics, ...run.diagnostics],\n trace: [...workingDirectory.trace, ...run.trace],\n hasTemplates: run.hasTemplates || workingDirectory.hasTemplates,\n };\n }\n\n const checkoutStep = checkoutStepOrNull(params.step);\n if (checkoutStep !== null) {\n const checkout = resolveCheckoutStepConfig({...params, step: checkoutStep});\n return {\n config: {\n ...checkout.config,\n ...gate,\n ...outputs,\n },\n configPlan: checkout.configPlan === undefined ? null : checkout.configPlan,\n diagnostics: checkout.diagnostics,\n trace: checkout.trace,\n hasTemplates: checkout.hasTemplates,\n };\n }\n\n const agentStep = agentStepOrNull(params.step);\n if (agentStep === null) throw new Error(`Unsupported workflow step kind: ${params.step.kind}`);\n\n const agent = await resolveAgentStepConfig({...params, step: agentStep});\n return {\n config: {...workingDirectory.config, ...agent.config, ...gate, ...outputs},\n configPlan: mergeConfigPlans(agent.configPlan, workingDirectory.configPlan),\n diagnostics: [...workingDirectory.diagnostics, ...agent.diagnostics],\n trace: [...workingDirectory.trace, ...agent.trace],\n hasTemplates: agent.hasTemplates || workingDirectory.hasTemplates,\n };\n}\n\nfunction resolveWorkingDirectoryConfig(\n params: Omit<BuildStepConfigParams, 'context'> & {readonly context: WorkflowEvaluationContext},\n): WorkingDirectoryConfig {\n const value = params.step.workingDirectory;\n const template = params.step.templates?.workingDirectory;\n if (value === undefined) {\n return {\n config: {},\n configPlan: undefined,\n diagnostics: [],\n trace: [],\n hasTemplates: template !== undefined,\n };\n }\n\n if (template === undefined || params.mode === 'authored') {\n return {\n config: {working_directory: value},\n configPlan: undefined,\n diagnostics: [],\n trace: [],\n hasTemplates: template !== undefined,\n };\n }\n\n const resolved = resolveStepField({\n field: 'step.working_directory',\n template: {segments: template},\n context: params.context,\n definitionId: params.definitionId,\n errorField: 'step.working_directory',\n });\n const trace = resolved.trace.map((entry) => ({\n ...entry,\n field: 'step.working_directory' as const,\n }));\n const diagnostics = resolved.diagnostics.map((diagnostic) => ({\n ...diagnostic,\n field: 'step.working_directory' as const,\n }));\n if (resolved.kind === 'residual') {\n return {\n config: {},\n configPlan: {working_directory: resolved.field},\n diagnostics,\n trace,\n hasTemplates: true,\n };\n }\n\n return {\n config: {working_directory: resolved.value},\n configPlan: undefined,\n diagnostics,\n trace,\n hasTemplates: true,\n };\n}\n\nfunction mergeConfigPlans(\n primary: StepConfigDispatchPlan | null,\n secondary: Pick<StepConfigDispatchPlan, 'working_directory'> | undefined,\n): StepConfigDispatchPlan | null {\n if (secondary === undefined) return primary;\n return {...(primary ?? {}), ...secondary};\n}\n\nfunction evaluationContext(params: {\n readonly context: WorkflowExpressionEvaluationContext;\n readonly site: AvailabilitySite;\n}): WorkflowEvaluationContext {\n return {site: params.site, values: params.context};\n}\n\nfunction runStepOrNull(step: WorkflowModelStep): WorkflowModelRunStep | null {\n const isRunStep = step.kind === 'run';\n return isRunStep ? step : null;\n}\n\nfunction agentStepOrNull(step: WorkflowModelStep): WorkflowModelAgentStep | null {\n const isAgentStep = step.kind === 'agent';\n return isAgentStep ? step : null;\n}\n\nfunction checkoutStepOrNull(step: WorkflowModelStep): WorkflowModelCheckoutStep | null {\n const isCheckoutStep = step.kind === 'checkout';\n return isCheckoutStep ? step : null;\n}\n\nfunction resolveCheckoutStepConfig(\n params: Omit<BuildStepConfigParams, 'context' | 'step'> & {\n readonly context: WorkflowEvaluationContext;\n readonly step: WorkflowModelCheckoutStep;\n },\n): CheckoutConfig {\n const checkout = params.step.checkout;\n const config: Record<string, unknown> = {\n fetch_depth: checkout.fetchDepth,\n permissions: checkout.permissions,\n persist_credentials: checkout.persistCredentials,\n ...(checkout.force === undefined ? {} : {force: checkout.force}),\n };\n const checkoutConfig: Record<string, unknown> = config;\n const checkoutPlan: NonNullable<StepConfigDispatchPlan['checkout']> = {};\n const diagnostics: WorkflowStepTemplateDiagnostic[] = [];\n const trace: WorkflowStepEvaluationTraceEntry[] = [];\n let hasTemplates = false;\n\n for (const [key, field] of WORKFLOW_MODEL_CHECKOUT_TARGET_FIELDS) {\n const template = checkout.templates?.[key];\n if (template !== undefined) hasTemplates = true;\n\n const value = checkout[key];\n if (value === undefined) continue;\n\n if (template === undefined || params.mode === 'authored') {\n checkoutConfig[key] = value;\n continue;\n }\n\n const resolved = resolveStepField({\n field,\n template: {segments: template},\n context: params.context,\n definitionId: params.definitionId,\n errorField: field,\n });\n trace.push(...resolved.trace.map((entry) => ({...entry, field})));\n diagnostics.push(...resolved.diagnostics.map((diagnostic) => ({...diagnostic, field})));\n\n if (resolved.kind === 'residual') {\n checkoutPlan[key] = resolved.field;\n } else {\n checkoutConfig[key] = resolved.value;\n }\n }\n\n return {\n config: {checkout: config},\n configPlan: Object.keys(checkoutPlan).length === 0 ? undefined : {checkout: checkoutPlan},\n diagnostics,\n trace,\n hasTemplates,\n };\n}\n\nfunction gateConfigForStep(step: WorkflowModelStep): Record<string, unknown> {\n const hasGate = step.gate !== undefined;\n return hasGate ? {gate: stepGateConfig(step.gate)} : {};\n}\n\nfunction outputsConfigForStep(step: WorkflowModelStep): Record<string, unknown> {\n const hasOutputs = step.outputs !== undefined;\n return hasOutputs ? {outputs: step.outputs} : {};\n}\n\nfunction resolveStepName(\n step: WorkflowModelStep,\n context: WorkflowEvaluationContext,\n definitionId: string,\n): {\n readonly value: string | undefined;\n readonly diagnostics: readonly WorkflowStepTemplateDiagnostic[];\n readonly trace: readonly WorkflowStepEvaluationTraceEntry[];\n} {\n const hasName = step.name !== undefined;\n if (!hasName) return {value: undefined, diagnostics: [], trace: []};\n\n const hasNameTemplate = step.templates?.name !== undefined;\n if (!hasNameTemplate) return {value: step.name, diagnostics: [], trace: []};\n\n const resolved = freezeStepField({\n field: 'step.name',\n template: {segments: step.templates.name},\n context,\n definitionId,\n errorField: 'step.name',\n });\n return {\n value: resolved.value,\n diagnostics: resolved.diagnostics.map((diagnostic) => ({...diagnostic, field: 'step.name'})),\n trace: resolved.trace.map((entry) => ({...entry, field: 'step.name'})),\n };\n}\n\nfunction stepGateConfig(gate: NonNullable<WorkflowModelStep['gate']>): Record<string, unknown> {\n const hasSuccess = gate.success !== undefined;\n const hasOnFailure = gate.onFailure !== undefined;\n const hasOnFailureFeedback = gate.onFailure?.feedback !== undefined;\n const hasOnFailureFeedbackTemplate = gate.onFailure?.feedbackTemplate !== undefined;\n\n return {\n ...(hasSuccess\n ? {\n success: {\n language: gate.success.language,\n check: gate.success.check,\n source: gate.success.source,\n },\n }\n : {}),\n ...(hasOnFailure\n ? {\n on_failure: {\n restart_from: gate.onFailure.restartFrom,\n ...(hasOnFailureFeedback ? {feedback: gate.onFailure.feedback} : {}),\n ...(hasOnFailureFeedbackTemplate\n ? {feedback_template: {segments: gate.onFailure.feedbackTemplate}}\n : {}),\n },\n }\n : {}),\n };\n}\n"],"names":["WORKFLOW_MODEL_CHECKOUT_TARGET_FIELDS","capTraceEntries","resolveAgentStepConfig","freezeStepField","resolveStepField","resolveRunStepConfig","resolveStepConfig","params","context","evaluationContext","effective","buildStepConfig","mode","authoredConfig","hasTemplates","config","name","resolveStepName","step","definitionId","configPlan","value","undefined","diagnostics","trace","gate","gateConfigForStep","outputs","outputsConfigForStep","workingDirectory","resolveWorkingDirectoryConfig","runStep","runStepOrNull","isRunStep","run","mergeConfigPlans","checkoutStep","checkoutStepOrNull","checkout","resolveCheckoutStepConfig","agentStep","agentStepOrNull","Error","kind","agent","template","templates","working_directory","resolved","field","segments","errorField","map","entry","diagnostic","primary","secondary","site","values","isAgentStep","isCheckoutStep","fetch_depth","fetchDepth","permissions","persist_credentials","persistCredentials","force","checkoutConfig","checkoutPlan","key","push","Object","keys","length","hasGate","stepGateConfig","hasOutputs","hasName","hasNameTemplate","hasSuccess","success","hasOnFailure","onFailure","hasOnFailureFeedback","feedback","hasOnFailureFeedbackTemplate","feedbackTemplate","language","check","source","on_failure","restart_from","restartFrom","feedback_template"],"mappings":"AACA,SAAQA,qCAAqC,QAAO,+BAA+B;AACnF,SAEEC,eAAe,QAGV,sBAAsB;AAO7B,SAAQC,sBAAsB,QAAO,aAAa;AAClD,SACEC,eAAe,EACfC,gBAAgB,QAIX,cAAc;AACrB,SAAQC,oBAAoB,QAA4B,WAAW;AA6DnE,OAAO,eAAeC,kBACpBC,MAA+B;IAE/B,MAAMC,UAAUC,kBAAkBF;IAClC,MAAMG,YAAY,MAAMC,gBAAgB;QAAC,GAAGJ,MAAM;QAAEC;QAASI,MAAM;IAAW;IAC9E,MAAMC,iBAAiBH,UAAUI,YAAY,GACzC,AAAC,CAAA,MAAMH,gBAAgB;QAAC,GAAGJ,MAAM;QAAEC;QAASI,MAAM;IAAU,EAAC,EAAGG,MAAM,GACtE;IACJ,MAAMC,OAAOC,gBAAgBV,OAAOW,IAAI,EAAEV,SAASD,OAAOY,YAAY;IAEtE,OAAO;QACLJ,QAAQL,UAAUK,MAAM;QACxBK,YAAYV,UAAUU,UAAU;QAChCP;QACA,GAAIG,KAAKK,KAAK,KAAKC,aAAaN,KAAKK,KAAK,KAAK,KAAK,CAAC,IAAI;YAACL,MAAMA,KAAKK,KAAK;QAAA,CAAC;QAC3EE,aAAa;eAAIb,UAAUa,WAAW;eAAKP,KAAKO,WAAW;SAAC;QAC5DC,OAAOvB,gBAAgB;eAAIS,UAAUc,KAAK;eAAKR,KAAKQ,KAAK;SAAC;IAC5D;AACF;AAEA,eAAeb,gBACbJ,MAA8F;IAE9F,MAAMkB,OAAOC,kBAAkBnB,OAAOW,IAAI;IAC1C,MAAMS,UAAUC,qBAAqBrB,OAAOW,IAAI;IAChD,MAAMW,mBAAmBC,8BAA8BvB;IACvD,MAAMwB,UAAUC,cAAczB,OAAOW,IAAI;IACzC,MAAMe,YAAYF,YAAY;IAE9B,IAAIE,WAAW;QACb,MAAMC,MAAM7B,qBAAqB;YAAC,GAAGE,MAAM;YAAEW,MAAMa;QAAO;QAC1D,OAAO;YACLhB,QAAQ;gBAAC,GAAGc,iBAAiBd,MAAM;gBAAE,GAAGmB,IAAInB,MAAM;gBAAE,GAAGU,IAAI;gBAAE,GAAGE,OAAO;YAAA;YACvEP,YAAYe,iBAAiBD,IAAId,UAAU,EAAES,iBAAiBT,UAAU;YACxEG,aAAa;mBAAIM,iBAAiBN,WAAW;mBAAKW,IAAIX,WAAW;aAAC;YAClEC,OAAO;mBAAIK,iBAAiBL,KAAK;mBAAKU,IAAIV,KAAK;aAAC;YAChDV,cAAcoB,IAAIpB,YAAY,IAAIe,iBAAiBf,YAAY;QACjE;IACF;IAEA,MAAMsB,eAAeC,mBAAmB9B,OAAOW,IAAI;IACnD,IAAIkB,iBAAiB,MAAM;QACzB,MAAME,WAAWC,0BAA0B;YAAC,GAAGhC,MAAM;YAAEW,MAAMkB;QAAY;QACzE,OAAO;YACLrB,QAAQ;gBACN,GAAGuB,SAASvB,MAAM;gBAClB,GAAGU,IAAI;gBACP,GAAGE,OAAO;YACZ;YACAP,YAAYkB,SAASlB,UAAU,KAAKE,YAAY,OAAOgB,SAASlB,UAAU;YAC1EG,aAAae,SAASf,WAAW;YACjCC,OAAOc,SAASd,KAAK;YACrBV,cAAcwB,SAASxB,YAAY;QACrC;IACF;IAEA,MAAM0B,YAAYC,gBAAgBlC,OAAOW,IAAI;IAC7C,IAAIsB,cAAc,MAAM,MAAM,IAAIE,MAAM,CAAC,gCAAgC,EAAEnC,OAAOW,IAAI,CAACyB,IAAI,EAAE;IAE7F,MAAMC,QAAQ,MAAM1C,uBAAuB;QAAC,GAAGK,MAAM;QAAEW,MAAMsB;IAAS;IACtE,OAAO;QACLzB,QAAQ;YAAC,GAAGc,iBAAiBd,MAAM;YAAE,GAAG6B,MAAM7B,MAAM;YAAE,GAAGU,IAAI;YAAE,GAAGE,OAAO;QAAA;QACzEP,YAAYe,iBAAiBS,MAAMxB,UAAU,EAAES,iBAAiBT,UAAU;QAC1EG,aAAa;eAAIM,iBAAiBN,WAAW;eAAKqB,MAAMrB,WAAW;SAAC;QACpEC,OAAO;eAAIK,iBAAiBL,KAAK;eAAKoB,MAAMpB,KAAK;SAAC;QAClDV,cAAc8B,MAAM9B,YAAY,IAAIe,iBAAiBf,YAAY;IACnE;AACF;AAEA,SAASgB,8BACPvB,MAA8F;IAE9F,MAAMc,QAAQd,OAAOW,IAAI,CAACW,gBAAgB;IAC1C,MAAMgB,WAAWtC,OAAOW,IAAI,CAAC4B,SAAS,EAAEjB;IACxC,IAAIR,UAAUC,WAAW;QACvB,OAAO;YACLP,QAAQ,CAAC;YACTK,YAAYE;YACZC,aAAa,EAAE;YACfC,OAAO,EAAE;YACTV,cAAc+B,aAAavB;QAC7B;IACF;IAEA,IAAIuB,aAAavB,aAAaf,OAAOK,IAAI,KAAK,YAAY;QACxD,OAAO;YACLG,QAAQ;gBAACgC,mBAAmB1B;YAAK;YACjCD,YAAYE;YACZC,aAAa,EAAE;YACfC,OAAO,EAAE;YACTV,cAAc+B,aAAavB;QAC7B;IACF;IAEA,MAAM0B,WAAW5C,iBAAiB;QAChC6C,OAAO;QACPJ,UAAU;YAACK,UAAUL;QAAQ;QAC7BrC,SAASD,OAAOC,OAAO;QACvBW,cAAcZ,OAAOY,YAAY;QACjCgC,YAAY;IACd;IACA,MAAM3B,QAAQwB,SAASxB,KAAK,CAAC4B,GAAG,CAAC,CAACC,QAAW,CAAA;YAC3C,GAAGA,KAAK;YACRJ,OAAO;QACT,CAAA;IACA,MAAM1B,cAAcyB,SAASzB,WAAW,CAAC6B,GAAG,CAAC,CAACE,aAAgB,CAAA;YAC5D,GAAGA,UAAU;YACbL,OAAO;QACT,CAAA;IACA,IAAID,SAASL,IAAI,KAAK,YAAY;QAChC,OAAO;YACL5B,QAAQ,CAAC;YACTK,YAAY;gBAAC2B,mBAAmBC,SAASC,KAAK;YAAA;YAC9C1B;YACAC;YACAV,cAAc;QAChB;IACF;IAEA,OAAO;QACLC,QAAQ;YAACgC,mBAAmBC,SAAS3B,KAAK;QAAA;QAC1CD,YAAYE;QACZC;QACAC;QACAV,cAAc;IAChB;AACF;AAEA,SAASqB,iBACPoB,OAAsC,EACtCC,SAAwE;IAExE,IAAIA,cAAclC,WAAW,OAAOiC;IACpC,OAAO;QAAC,GAAIA,WAAW,CAAC,CAAC;QAAG,GAAGC,SAAS;IAAA;AAC1C;AAEA,SAAS/C,kBAAkBF,MAG1B;IACC,OAAO;QAACkD,MAAMlD,OAAOkD,IAAI;QAAEC,QAAQnD,OAAOC,OAAO;IAAA;AACnD;AAEA,SAASwB,cAAcd,IAAuB;IAC5C,MAAMe,YAAYf,KAAKyB,IAAI,KAAK;IAChC,OAAOV,YAAYf,OAAO;AAC5B;AAEA,SAASuB,gBAAgBvB,IAAuB;IAC9C,MAAMyC,cAAczC,KAAKyB,IAAI,KAAK;IAClC,OAAOgB,cAAczC,OAAO;AAC9B;AAEA,SAASmB,mBAAmBnB,IAAuB;IACjD,MAAM0C,iBAAiB1C,KAAKyB,IAAI,KAAK;IACrC,OAAOiB,iBAAiB1C,OAAO;AACjC;AAEA,SAASqB,0BACPhC,MAGC;IAED,MAAM+B,WAAW/B,OAAOW,IAAI,CAACoB,QAAQ;IACrC,MAAMvB,SAAkC;QACtC8C,aAAavB,SAASwB,UAAU;QAChCC,aAAazB,SAASyB,WAAW;QACjCC,qBAAqB1B,SAAS2B,kBAAkB;QAChD,GAAI3B,SAAS4B,KAAK,KAAK5C,YAAY,CAAC,IAAI;YAAC4C,OAAO5B,SAAS4B,KAAK;QAAA,CAAC;IACjE;IACA,MAAMC,iBAA0CpD;IAChD,MAAMqD,eAAgE,CAAC;IACvE,MAAM7C,cAAgD,EAAE;IACxD,MAAMC,QAA4C,EAAE;IACpD,IAAIV,eAAe;IAEnB,KAAK,MAAM,CAACuD,KAAKpB,MAAM,IAAIjD,sCAAuC;QAChE,MAAM6C,WAAWP,SAASQ,SAAS,EAAE,CAACuB,IAAI;QAC1C,IAAIxB,aAAavB,WAAWR,eAAe;QAE3C,MAAMO,QAAQiB,QAAQ,CAAC+B,IAAI;QAC3B,IAAIhD,UAAUC,WAAW;QAEzB,IAAIuB,aAAavB,aAAaf,OAAOK,IAAI,KAAK,YAAY;YACxDuD,cAAc,CAACE,IAAI,GAAGhD;YACtB;QACF;QAEA,MAAM2B,WAAW5C,iBAAiB;YAChC6C;YACAJ,UAAU;gBAACK,UAAUL;YAAQ;YAC7BrC,SAASD,OAAOC,OAAO;YACvBW,cAAcZ,OAAOY,YAAY;YACjCgC,YAAYF;QACd;QACAzB,MAAM8C,IAAI,IAAItB,SAASxB,KAAK,CAAC4B,GAAG,CAAC,CAACC,QAAW,CAAA;gBAAC,GAAGA,KAAK;gBAAEJ;YAAK,CAAA;QAC7D1B,YAAY+C,IAAI,IAAItB,SAASzB,WAAW,CAAC6B,GAAG,CAAC,CAACE,aAAgB,CAAA;gBAAC,GAAGA,UAAU;gBAAEL;YAAK,CAAA;QAEnF,IAAID,SAASL,IAAI,KAAK,YAAY;YAChCyB,YAAY,CAACC,IAAI,GAAGrB,SAASC,KAAK;QACpC,OAAO;YACLkB,cAAc,CAACE,IAAI,GAAGrB,SAAS3B,KAAK;QACtC;IACF;IAEA,OAAO;QACLN,QAAQ;YAACuB,UAAUvB;QAAM;QACzBK,YAAYmD,OAAOC,IAAI,CAACJ,cAAcK,MAAM,KAAK,IAAInD,YAAY;YAACgB,UAAU8B;QAAY;QACxF7C;QACAC;QACAV;IACF;AACF;AAEA,SAASY,kBAAkBR,IAAuB;IAChD,MAAMwD,UAAUxD,KAAKO,IAAI,KAAKH;IAC9B,OAAOoD,UAAU;QAACjD,MAAMkD,eAAezD,KAAKO,IAAI;IAAC,IAAI,CAAC;AACxD;AAEA,SAASG,qBAAqBV,IAAuB;IACnD,MAAM0D,aAAa1D,KAAKS,OAAO,KAAKL;IACpC,OAAOsD,aAAa;QAACjD,SAAST,KAAKS,OAAO;IAAA,IAAI,CAAC;AACjD;AAEA,SAASV,gBACPC,IAAuB,EACvBV,OAAkC,EAClCW,YAAoB;IAMpB,MAAM0D,UAAU3D,KAAKF,IAAI,KAAKM;IAC9B,IAAI,CAACuD,SAAS,OAAO;QAACxD,OAAOC;QAAWC,aAAa,EAAE;QAAEC,OAAO,EAAE;IAAA;IAElE,MAAMsD,kBAAkB5D,KAAK4B,SAAS,EAAE9B,SAASM;IACjD,IAAI,CAACwD,iBAAiB,OAAO;QAACzD,OAAOH,KAAKF,IAAI;QAAEO,aAAa,EAAE;QAAEC,OAAO,EAAE;IAAA;IAE1E,MAAMwB,WAAW7C,gBAAgB;QAC/B8C,OAAO;QACPJ,UAAU;YAACK,UAAUhC,KAAK4B,SAAS,CAAC9B,IAAI;QAAA;QACxCR;QACAW;QACAgC,YAAY;IACd;IACA,OAAO;QACL9B,OAAO2B,SAAS3B,KAAK;QACrBE,aAAayB,SAASzB,WAAW,CAAC6B,GAAG,CAAC,CAACE,aAAgB,CAAA;gBAAC,GAAGA,UAAU;gBAAEL,OAAO;YAAW,CAAA;QACzFzB,OAAOwB,SAASxB,KAAK,CAAC4B,GAAG,CAAC,CAACC,QAAW,CAAA;gBAAC,GAAGA,KAAK;gBAAEJ,OAAO;YAAW,CAAA;IACrE;AACF;AAEA,SAAS0B,eAAelD,IAA4C;IAClE,MAAMsD,aAAatD,KAAKuD,OAAO,KAAK1D;IACpC,MAAM2D,eAAexD,KAAKyD,SAAS,KAAK5D;IACxC,MAAM6D,uBAAuB1D,KAAKyD,SAAS,EAAEE,aAAa9D;IAC1D,MAAM+D,+BAA+B5D,KAAKyD,SAAS,EAAEI,qBAAqBhE;IAE1E,OAAO;QACL,GAAIyD,aACA;YACEC,SAAS;gBACPO,UAAU9D,KAAKuD,OAAO,CAACO,QAAQ;gBAC/BC,OAAO/D,KAAKuD,OAAO,CAACQ,KAAK;gBACzBC,QAAQhE,KAAKuD,OAAO,CAACS,MAAM;YAC7B;QACF,IACA,CAAC,CAAC;QACN,GAAIR,eACA;YACES,YAAY;gBACVC,cAAclE,KAAKyD,SAAS,CAACU,WAAW;gBACxC,GAAIT,uBAAuB;oBAACC,UAAU3D,KAAKyD,SAAS,CAACE,QAAQ;gBAAA,IAAI,CAAC,CAAC;gBACnE,GAAIC,+BACA;oBAACQ,mBAAmB;wBAAC3C,UAAUzB,KAAKyD,SAAS,CAACI,gBAAgB;oBAAA;gBAAC,IAC/D,CAAC,CAAC;YACR;QACF,IACA,CAAC,CAAC;IACR;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/core/step-config/resolve-step-config.ts"],"sourcesContent":["import type {WorkflowEnvTemplates, WorkflowModel} from '@shipfox/api-definitions-dto';\nimport {WORKFLOW_MODEL_CHECKOUT_TARGET_FIELDS} from '@shipfox/api-definitions-dto';\nimport {\n type AvailabilitySite,\n capTraceEntries,\n type EvaluationTraceLimitEntry,\n type WorkflowExpressionEvaluationContext,\n} from '@shipfox/expression';\nimport type {AgentDefaultsResolver} from '#core/agent-defaults.js';\nimport type {\n AgentToolMaterializationContext,\n AgentToolMaterializationSnapshot,\n} from '#core/agent-tools.js';\nimport type {StepConfigDispatchPlan} from '#core/entities/step.js';\nimport {resolveAgentStepConfig} from './agent.js';\nimport {\n freezeStepField,\n resolveStepField,\n type StepConfigField,\n type WorkflowStepEvaluationTraceEntry,\n type WorkflowStepTemplateDiagnostic,\n} from './fields.js';\nimport {resolveRunStepConfig, type StepConfigMode} from './run.js';\nimport type {WorkflowEvaluationContext} from './workflow-evaluation-context.js';\n\ntype WorkflowModelJob = WorkflowModel['jobs'][number];\ntype WorkflowModelStep = WorkflowModelJob['steps'][number];\ntype WorkflowModelRunStep = Extract<WorkflowModelStep, {kind: 'run'}>;\ntype WorkflowModelAgentStep = Extract<WorkflowModelStep, {kind: 'agent'}>;\ntype WorkflowModelCheckoutStep = Extract<WorkflowModelStep, {kind: 'checkout'}>;\n\nexport type {StepConfigField, WorkflowStepTemplateDiagnostic};\n\nexport interface ResolvedStepConfig {\n readonly config: Record<string, unknown>;\n readonly configPlan: StepConfigDispatchPlan | null;\n readonly authoredConfig: Record<string, unknown> | null;\n readonly name?: string;\n readonly diagnostics: readonly WorkflowStepTemplateDiagnostic[];\n readonly trace: readonly (WorkflowStepEvaluationTraceEntry | EvaluationTraceLimitEntry)[];\n}\n\nexport interface ResolveStepConfigParams {\n readonly jobKey: string;\n readonly step: WorkflowModelStep;\n readonly workflowEnv: WorkflowModel['env'];\n readonly workflowEnvTemplates: WorkflowEnvTemplates | undefined;\n readonly jobEnv: WorkflowModelJob['env'];\n readonly jobEnvTemplates: WorkflowEnvTemplates | undefined;\n readonly context: WorkflowExpressionEvaluationContext;\n readonly site: AvailabilitySite;\n readonly resolveAgentDefaults?: AgentDefaultsResolver | undefined;\n readonly definitionId: string;\n readonly agentToolContext?: AgentToolMaterializationContext | undefined;\n readonly agentToolSnapshot?: AgentToolMaterializationSnapshot | null | undefined;\n}\n\ntype BuildStepConfigParams = ResolveStepConfigParams & {readonly mode: StepConfigMode};\n\ninterface BuiltStepConfig {\n readonly config: Record<string, unknown>;\n readonly configPlan: StepConfigDispatchPlan | null;\n readonly diagnostics: readonly WorkflowStepTemplateDiagnostic[];\n readonly trace: readonly WorkflowStepEvaluationTraceEntry[];\n readonly hasTemplates: boolean;\n}\n\ninterface WorkingDirectoryConfig {\n readonly config: Record<string, unknown>;\n readonly configPlan: Pick<StepConfigDispatchPlan, 'working_directory'> | undefined;\n readonly diagnostics: readonly WorkflowStepTemplateDiagnostic[];\n readonly trace: readonly WorkflowStepEvaluationTraceEntry[];\n readonly hasTemplates: boolean;\n}\n\ninterface CheckoutConfig {\n readonly config: Record<string, unknown>;\n readonly configPlan: Pick<StepConfigDispatchPlan, 'checkout'> | undefined;\n readonly diagnostics: readonly WorkflowStepTemplateDiagnostic[];\n readonly trace: readonly WorkflowStepEvaluationTraceEntry[];\n readonly hasTemplates: boolean;\n}\n\nexport async function resolveStepConfig(\n params: ResolveStepConfigParams,\n): Promise<ResolvedStepConfig> {\n const context = evaluationContext(params);\n const effective = await buildStepConfig({...params, context, mode: 'effective'});\n const authoredConfig = effective.hasTemplates\n ? (await buildStepConfig({...params, context, mode: 'authored'})).config\n : null;\n const name = resolveStepName(params.step, context, params.definitionId);\n\n return {\n config: effective.config,\n configPlan: effective.configPlan,\n authoredConfig,\n ...(name.value === undefined || name.value === '' ? {} : {name: name.value}),\n diagnostics: [...effective.diagnostics, ...name.diagnostics],\n trace: capTraceEntries([...effective.trace, ...name.trace]),\n };\n}\n\nasync function buildStepConfig(\n params: Omit<BuildStepConfigParams, 'context'> & {readonly context: WorkflowEvaluationContext},\n): Promise<BuiltStepConfig> {\n const gate = gateConfigForStep(params.step);\n const outputs = outputsConfigForStep(params.step);\n const workingDirectory = resolveWorkingDirectoryConfig(params);\n const runStep = runStepOrNull(params.step);\n const isRunStep = runStep !== null;\n\n if (isRunStep) {\n const run = resolveRunStepConfig({...params, step: runStep});\n return {\n config: {...workingDirectory.config, ...run.config, ...gate, ...outputs},\n configPlan: mergeConfigPlans(run.configPlan, workingDirectory.configPlan),\n diagnostics: [...workingDirectory.diagnostics, ...run.diagnostics],\n trace: [...workingDirectory.trace, ...run.trace],\n hasTemplates: run.hasTemplates || workingDirectory.hasTemplates,\n };\n }\n\n const checkoutStep = checkoutStepOrNull(params.step);\n if (checkoutStep !== null) {\n const checkout = resolveCheckoutStepConfig({...params, step: checkoutStep});\n return {\n config: {\n ...checkout.config,\n ...gate,\n ...outputs,\n },\n configPlan: checkout.configPlan === undefined ? null : checkout.configPlan,\n diagnostics: checkout.diagnostics,\n trace: checkout.trace,\n hasTemplates: checkout.hasTemplates,\n };\n }\n\n const agentStep = agentStepOrNull(params.step);\n if (agentStep === null) throw new Error(`Unsupported workflow step kind: ${params.step.kind}`);\n\n const agent = await resolveAgentStepConfig({...params, step: agentStep});\n return {\n config: {...workingDirectory.config, ...agent.config, ...gate, ...outputs},\n configPlan: mergeConfigPlans(agent.configPlan, workingDirectory.configPlan),\n diagnostics: [...workingDirectory.diagnostics, ...agent.diagnostics],\n trace: [...workingDirectory.trace, ...agent.trace],\n hasTemplates: agent.hasTemplates || workingDirectory.hasTemplates,\n };\n}\n\nfunction resolveWorkingDirectoryConfig(\n params: Omit<BuildStepConfigParams, 'context'> & {readonly context: WorkflowEvaluationContext},\n): WorkingDirectoryConfig {\n const value = params.step.workingDirectory;\n // Tool steps have no working tree, so they never carry a working-directory\n // template; the union narrows the remaining kinds to those that can.\n const template =\n params.step.kind === 'tool' ? undefined : params.step.templates?.workingDirectory;\n if (value === undefined) {\n return {\n config: {},\n configPlan: undefined,\n diagnostics: [],\n trace: [],\n hasTemplates: template !== undefined,\n };\n }\n\n if (template === undefined || params.mode === 'authored') {\n return {\n config: {working_directory: value},\n configPlan: undefined,\n diagnostics: [],\n trace: [],\n hasTemplates: template !== undefined,\n };\n }\n\n const resolved = resolveStepField({\n field: 'step.working_directory',\n template: {segments: template},\n context: params.context,\n definitionId: params.definitionId,\n errorField: 'step.working_directory',\n });\n const trace = resolved.trace.map((entry) => ({\n ...entry,\n field: 'step.working_directory' as const,\n }));\n const diagnostics = resolved.diagnostics.map((diagnostic) => ({\n ...diagnostic,\n field: 'step.working_directory' as const,\n }));\n if (resolved.kind === 'residual') {\n return {\n config: {},\n configPlan: {working_directory: resolved.field},\n diagnostics,\n trace,\n hasTemplates: true,\n };\n }\n\n return {\n config: {working_directory: resolved.value},\n configPlan: undefined,\n diagnostics,\n trace,\n hasTemplates: true,\n };\n}\n\nfunction mergeConfigPlans(\n primary: StepConfigDispatchPlan | null,\n secondary: Pick<StepConfigDispatchPlan, 'working_directory'> | undefined,\n): StepConfigDispatchPlan | null {\n if (secondary === undefined) return primary;\n return {...(primary ?? {}), ...secondary};\n}\n\nfunction evaluationContext(params: {\n readonly context: WorkflowExpressionEvaluationContext;\n readonly site: AvailabilitySite;\n}): WorkflowEvaluationContext {\n return {site: params.site, values: params.context};\n}\n\nfunction runStepOrNull(step: WorkflowModelStep): WorkflowModelRunStep | null {\n const isRunStep = step.kind === 'run';\n return isRunStep ? step : null;\n}\n\nfunction agentStepOrNull(step: WorkflowModelStep): WorkflowModelAgentStep | null {\n const isAgentStep = step.kind === 'agent';\n return isAgentStep ? step : null;\n}\n\nfunction checkoutStepOrNull(step: WorkflowModelStep): WorkflowModelCheckoutStep | null {\n const isCheckoutStep = step.kind === 'checkout';\n return isCheckoutStep ? step : null;\n}\n\nfunction resolveCheckoutStepConfig(\n params: Omit<BuildStepConfigParams, 'context' | 'step'> & {\n readonly context: WorkflowEvaluationContext;\n readonly step: WorkflowModelCheckoutStep;\n },\n): CheckoutConfig {\n const checkout = params.step.checkout;\n const config: Record<string, unknown> = {\n fetch_depth: checkout.fetchDepth,\n permissions: checkout.permissions,\n persist_credentials: checkout.persistCredentials,\n ...(checkout.force === undefined ? {} : {force: checkout.force}),\n };\n const checkoutConfig: Record<string, unknown> = config;\n const checkoutPlan: NonNullable<StepConfigDispatchPlan['checkout']> = {};\n const diagnostics: WorkflowStepTemplateDiagnostic[] = [];\n const trace: WorkflowStepEvaluationTraceEntry[] = [];\n let hasTemplates = false;\n\n for (const [key, field] of WORKFLOW_MODEL_CHECKOUT_TARGET_FIELDS) {\n const template = checkout.templates?.[key];\n if (template !== undefined) hasTemplates = true;\n\n const value = checkout[key];\n if (value === undefined) continue;\n\n if (template === undefined || params.mode === 'authored') {\n checkoutConfig[key] = value;\n continue;\n }\n\n const resolved = resolveStepField({\n field,\n template: {segments: template},\n context: params.context,\n definitionId: params.definitionId,\n errorField: field,\n });\n trace.push(...resolved.trace.map((entry) => ({...entry, field})));\n diagnostics.push(...resolved.diagnostics.map((diagnostic) => ({...diagnostic, field})));\n\n if (resolved.kind === 'residual') {\n checkoutPlan[key] = resolved.field;\n } else {\n checkoutConfig[key] = resolved.value;\n }\n }\n\n return {\n config: {checkout: config},\n configPlan: Object.keys(checkoutPlan).length === 0 ? undefined : {checkout: checkoutPlan},\n diagnostics,\n trace,\n hasTemplates,\n };\n}\n\nfunction gateConfigForStep(step: WorkflowModelStep): Record<string, unknown> {\n const hasGate = step.gate !== undefined;\n return hasGate ? {gate: stepGateConfig(step.gate)} : {};\n}\n\nfunction outputsConfigForStep(step: WorkflowModelStep): Record<string, unknown> {\n const hasOutputs = step.outputs !== undefined;\n return hasOutputs ? {outputs: step.outputs} : {};\n}\n\nfunction resolveStepName(\n step: WorkflowModelStep,\n context: WorkflowEvaluationContext,\n definitionId: string,\n): {\n readonly value: string | undefined;\n readonly diagnostics: readonly WorkflowStepTemplateDiagnostic[];\n readonly trace: readonly WorkflowStepEvaluationTraceEntry[];\n} {\n const hasName = step.name !== undefined;\n if (!hasName) return {value: undefined, diagnostics: [], trace: []};\n\n const hasNameTemplate = step.templates?.name !== undefined;\n if (!hasNameTemplate) return {value: step.name, diagnostics: [], trace: []};\n\n const resolved = freezeStepField({\n field: 'step.name',\n template: {segments: step.templates.name},\n context,\n definitionId,\n errorField: 'step.name',\n });\n return {\n value: resolved.value,\n diagnostics: resolved.diagnostics.map((diagnostic) => ({...diagnostic, field: 'step.name'})),\n trace: resolved.trace.map((entry) => ({...entry, field: 'step.name'})),\n };\n}\n\nfunction stepGateConfig(gate: NonNullable<WorkflowModelStep['gate']>): Record<string, unknown> {\n const hasSuccess = gate.success !== undefined;\n const hasOnFailure = gate.onFailure !== undefined;\n const hasOnFailureFeedback = gate.onFailure?.feedback !== undefined;\n const hasOnFailureFeedbackTemplate = gate.onFailure?.feedbackTemplate !== undefined;\n\n return {\n ...(hasSuccess\n ? {\n success: {\n language: gate.success.language,\n check: gate.success.check,\n source: gate.success.source,\n },\n }\n : {}),\n ...(hasOnFailure\n ? {\n on_failure: {\n restart_from: gate.onFailure.restartFrom,\n ...(hasOnFailureFeedback ? {feedback: gate.onFailure.feedback} : {}),\n ...(hasOnFailureFeedbackTemplate\n ? {feedback_template: {segments: gate.onFailure.feedbackTemplate}}\n : {}),\n },\n }\n : {}),\n };\n}\n"],"names":["WORKFLOW_MODEL_CHECKOUT_TARGET_FIELDS","capTraceEntries","resolveAgentStepConfig","freezeStepField","resolveStepField","resolveRunStepConfig","resolveStepConfig","params","context","evaluationContext","effective","buildStepConfig","mode","authoredConfig","hasTemplates","config","name","resolveStepName","step","definitionId","configPlan","value","undefined","diagnostics","trace","gate","gateConfigForStep","outputs","outputsConfigForStep","workingDirectory","resolveWorkingDirectoryConfig","runStep","runStepOrNull","isRunStep","run","mergeConfigPlans","checkoutStep","checkoutStepOrNull","checkout","resolveCheckoutStepConfig","agentStep","agentStepOrNull","Error","kind","agent","template","templates","working_directory","resolved","field","segments","errorField","map","entry","diagnostic","primary","secondary","site","values","isAgentStep","isCheckoutStep","fetch_depth","fetchDepth","permissions","persist_credentials","persistCredentials","force","checkoutConfig","checkoutPlan","key","push","Object","keys","length","hasGate","stepGateConfig","hasOutputs","hasName","hasNameTemplate","hasSuccess","success","hasOnFailure","onFailure","hasOnFailureFeedback","feedback","hasOnFailureFeedbackTemplate","feedbackTemplate","language","check","source","on_failure","restart_from","restartFrom","feedback_template"],"mappings":"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"}
|
package/dist/db/db.d.ts
CHANGED
|
@@ -554,7 +554,7 @@ export declare const schema: {
|
|
|
554
554
|
dataType: "json";
|
|
555
555
|
columnType: "PgJsonb";
|
|
556
556
|
data: import("@shipfox/api-definitions-dto").WorkflowModel | {
|
|
557
|
-
version: 2;
|
|
557
|
+
version: 2 | 3;
|
|
558
558
|
model: import("@shipfox/api-definitions-dto").WorkflowModel;
|
|
559
559
|
};
|
|
560
560
|
driverParam: unknown;
|
|
@@ -569,7 +569,7 @@ export declare const schema: {
|
|
|
569
569
|
generated: undefined;
|
|
570
570
|
}, {}, {
|
|
571
571
|
$type: import("@shipfox/api-definitions-dto").WorkflowModel | {
|
|
572
|
-
version: 2;
|
|
572
|
+
version: 2 | 3;
|
|
573
573
|
model: import("@shipfox/api-definitions-dto").WorkflowModel;
|
|
574
574
|
};
|
|
575
575
|
}>;
|
|
@@ -1952,7 +1952,7 @@ export declare const schema: {
|
|
|
1952
1952
|
tableName: "steps";
|
|
1953
1953
|
dataType: "string";
|
|
1954
1954
|
columnType: "PgText";
|
|
1955
|
-
data: "agent" | "checkout" | "run" | "setup";
|
|
1955
|
+
data: "agent" | "checkout" | "run" | "setup" | "tool";
|
|
1956
1956
|
driverParam: string;
|
|
1957
1957
|
notNull: true;
|
|
1958
1958
|
hasDefault: false;
|
|
@@ -1964,7 +1964,7 @@ export declare const schema: {
|
|
|
1964
1964
|
identity: undefined;
|
|
1965
1965
|
generated: undefined;
|
|
1966
1966
|
}, {}, {
|
|
1967
|
-
$type: "agent" | "checkout" | "run" | "setup";
|
|
1967
|
+
$type: "agent" | "checkout" | "run" | "setup" | "tool";
|
|
1968
1968
|
}>;
|
|
1969
1969
|
config: import("drizzle-orm/pg-core").PgColumn<{
|
|
1970
1970
|
name: "config";
|
|
@@ -3224,7 +3224,7 @@ export declare function db(): NodePgDatabase<{
|
|
|
3224
3224
|
dataType: "json";
|
|
3225
3225
|
columnType: "PgJsonb";
|
|
3226
3226
|
data: import("@shipfox/api-definitions-dto").WorkflowModel | {
|
|
3227
|
-
version: 2;
|
|
3227
|
+
version: 2 | 3;
|
|
3228
3228
|
model: import("@shipfox/api-definitions-dto").WorkflowModel;
|
|
3229
3229
|
};
|
|
3230
3230
|
driverParam: unknown;
|
|
@@ -3239,7 +3239,7 @@ export declare function db(): NodePgDatabase<{
|
|
|
3239
3239
|
generated: undefined;
|
|
3240
3240
|
}, {}, {
|
|
3241
3241
|
$type: import("@shipfox/api-definitions-dto").WorkflowModel | {
|
|
3242
|
-
version: 2;
|
|
3242
|
+
version: 2 | 3;
|
|
3243
3243
|
model: import("@shipfox/api-definitions-dto").WorkflowModel;
|
|
3244
3244
|
};
|
|
3245
3245
|
}>;
|
|
@@ -4622,7 +4622,7 @@ export declare function db(): NodePgDatabase<{
|
|
|
4622
4622
|
tableName: "steps";
|
|
4623
4623
|
dataType: "string";
|
|
4624
4624
|
columnType: "PgText";
|
|
4625
|
-
data: "agent" | "checkout" | "run" | "setup";
|
|
4625
|
+
data: "agent" | "checkout" | "run" | "setup" | "tool";
|
|
4626
4626
|
driverParam: string;
|
|
4627
4627
|
notNull: true;
|
|
4628
4628
|
hasDefault: false;
|
|
@@ -4634,7 +4634,7 @@ export declare function db(): NodePgDatabase<{
|
|
|
4634
4634
|
identity: undefined;
|
|
4635
4635
|
generated: undefined;
|
|
4636
4636
|
}, {}, {
|
|
4637
|
-
$type: "agent" | "checkout" | "run" | "setup";
|
|
4637
|
+
$type: "agent" | "checkout" | "run" | "setup" | "tool";
|
|
4638
4638
|
}>;
|
|
4639
4639
|
config: import("drizzle-orm/pg-core").PgColumn<{
|
|
4640
4640
|
name: "config";
|
package/dist/db/index.d.ts
CHANGED
|
@@ -5,6 +5,6 @@ export { activateJobListener, countActiveListeners, drainListenerEventsIntoExecu
|
|
|
5
5
|
export { workflowsOutbox } from './schema/outbox.js';
|
|
6
6
|
export { workflowRunCounters } from './schema/workflow-run-counters.js';
|
|
7
7
|
export type { BulkUpdateStepStatusesParams, CancelWorkflowRunParams, CreateRerunWorkflowRunParams, CreateWorkflowRunParams, EvaluateJobActivationsParams, FailWorkflowRunAsTimedOutParams, JobActivationDecision, ListWorkflowRunsParams, ListWorkflowRunsResult, StepAttemptDetail, UpdateJobExecutionStatusParams, UpdateJobStatusParams, UpdateWorkflowRunStatusParams, WorkflowJobExecutionDepth, WorkflowJobExecutionDepthParams, WorkflowRunAggregates, WorkflowRunFilters, WorkflowRunJobRawStatusCount, WorkflowRunJobStatusCount, WorkflowRunJobSummary, WorkflowRunJobSummaryTarget, WorkflowRunJobsSummary, } from './workflow-runs.js';
|
|
8
|
-
export { bulkUpdateStepStatuses, cancelWorkflowRun, createRerunWorkflowRun, createWorkflowRun, evaluateJobActivations, failJobExecutionAsTimedOut, failWorkflowRunAsTimedOut, getFirstJobExecutionByJobId, getJobById, getJobExecutionById, getJobExecutionDetail, getJobExecutionFailureOrigin, getJobExecutionsByJobId, getJobExecutionsByWorkflowRunAttemptId, getJobScope, getJobsByWorkflowRunAttemptId, getJobsByWorkflowRunId, getLatestAttempt, getLatestJobExecutionByJobId, getStepAttemptDetail, getStepAttempts, getStepAttemptsByJobIds, getStepById, getStepByIdForJobExecution, getStepsByJobExecutionId, getStepsByJobExecutionIdForUpdate, getWorkflowJobExecutionDepth, getWorkflowRunAggregates, getWorkflowRunAttemptById, getWorkflowRunByAttemptId, getWorkflowRunById, getWorkflowRunDetail, listRunAttempts, listWorkflowRunJobSummaries, listWorkflowRuns, listWorkflowRunsByProject, queueJobExecution, recordJobExecutionStartedAt, resolveJobExecutionAfterLeaseExpiry, resolveJobStatusFromJobExecutions, updateJobExecutionStatus, updateJobStatus, updateWorkflowRunStatus, } from './workflow-runs.js';
|
|
8
|
+
export { bulkUpdateStepStatuses, cancelWorkflowRun, createRerunWorkflowRun, createWorkflowRun, evaluateJobActivations, failJobExecutionAsTimedOut, failWorkflowRunAsTimedOut, getFirstJobExecutionByJobId, getJobById, getJobExecutionById, getJobExecutionDetail, getJobExecutionFailureOrigin, getJobExecutionsByJobId, getJobExecutionsByWorkflowRunAttemptId, getJobScope, getJobsByWorkflowRunAttemptId, getJobsByWorkflowRunId, getLatestAttempt, getLatestJobExecutionByJobId, getStepAttemptDetail, getStepAttempts, getStepAttemptsByJobIds, getStepById, getStepByIdForJobExecution, getStepsByJobExecutionId, getStepsByJobExecutionIdForUpdate, getWorkflowJobExecutionDepth, getWorkflowRunAggregates, getWorkflowRunAttemptById, getWorkflowRunByAttemptId, getWorkflowRunById, getWorkflowRunDetail, listRunAttempts, listStepAttemptIdsByJobId, listWorkflowRunJobSummaries, listWorkflowRuns, listWorkflowRunsByProject, queueJobExecution, recordJobExecutionStartedAt, resolveJobExecutionAfterLeaseExpiry, resolveJobStatusFromJobExecutions, updateJobExecutionStatus, updateJobStatus, updateWorkflowRunStatus, } from './workflow-runs.js';
|
|
9
9
|
export declare const migrationsPath: string;
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/db/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAC,MAAM,SAAS,CAAC;AAC5C,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EACjC,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gCAAgC,EAChC,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAC,mBAAmB,EAAC,MAAM,mCAAmC,CAAC;AACtE,YAAY,EACV,4BAA4B,EAC5B,uBAAuB,EACvB,4BAA4B,EAC5B,uBAAuB,EACvB,4BAA4B,EAC5B,+BAA+B,EAC/B,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,8BAA8B,EAC9B,qBAAqB,EACrB,6BAA6B,EAC7B,yBAAyB,EACzB,+BAA+B,EAC/B,qBAAqB,EACrB,kBAAkB,EAClB,4BAA4B,EAC5B,yBAAyB,EACzB,qBAAqB,EACrB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,UAAU,EACV,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,EACvB,sCAAsC,EACtC,WAAW,EACX,6BAA6B,EAC7B,sBAAsB,EACtB,gBAAgB,EAChB,4BAA4B,EAC5B,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,WAAW,EACX,0BAA0B,EAC1B,wBAAwB,EACxB,iCAAiC,EACjC,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,2BAA2B,EAC3B,mCAAmC,EACnC,iCAAiC,EACjC,wBAAwB,EACxB,eAAe,EACf,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,cAAc,QAAoE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAC,MAAM,SAAS,CAAC;AAC5C,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EACjC,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gCAAgC,EAChC,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,eAAe,EAAC,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAC,mBAAmB,EAAC,MAAM,mCAAmC,CAAC;AACtE,YAAY,EACV,4BAA4B,EAC5B,uBAAuB,EACvB,4BAA4B,EAC5B,uBAAuB,EACvB,4BAA4B,EAC5B,+BAA+B,EAC/B,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,8BAA8B,EAC9B,qBAAqB,EACrB,6BAA6B,EAC7B,yBAAyB,EACzB,+BAA+B,EAC/B,qBAAqB,EACrB,kBAAkB,EAClB,4BAA4B,EAC5B,yBAAyB,EACzB,qBAAqB,EACrB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,UAAU,EACV,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,EACvB,sCAAsC,EACtC,WAAW,EACX,6BAA6B,EAC7B,sBAAsB,EACtB,gBAAgB,EAChB,4BAA4B,EAC5B,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,WAAW,EACX,0BAA0B,EAC1B,wBAAwB,EACxB,iCAAiC,EACjC,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,yBAAyB,EACzB,2BAA2B,EAC3B,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,2BAA2B,EAC3B,mCAAmC,EACnC,iCAAiC,EACjC,wBAAwB,EACxB,eAAe,EACf,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,cAAc,QAAoE,CAAC"}
|
package/dist/db/index.js
CHANGED
|
@@ -5,7 +5,7 @@ export { deliverEventToListener } from './job-listener-events.js';
|
|
|
5
5
|
export { activateJobListener, countActiveListeners, drainListenerEventsIntoExecution, peekListenerBuffer, resolveJobListener, settleListenerJobExecution } from './job-listeners.js';
|
|
6
6
|
export { workflowsOutbox } from './schema/outbox.js';
|
|
7
7
|
export { workflowRunCounters } from './schema/workflow-run-counters.js';
|
|
8
|
-
export { bulkUpdateStepStatuses, cancelWorkflowRun, createRerunWorkflowRun, createWorkflowRun, evaluateJobActivations, failJobExecutionAsTimedOut, failWorkflowRunAsTimedOut, getFirstJobExecutionByJobId, getJobById, getJobExecutionById, getJobExecutionDetail, getJobExecutionFailureOrigin, getJobExecutionsByJobId, getJobExecutionsByWorkflowRunAttemptId, getJobScope, getJobsByWorkflowRunAttemptId, getJobsByWorkflowRunId, getLatestAttempt, getLatestJobExecutionByJobId, getStepAttemptDetail, getStepAttempts, getStepAttemptsByJobIds, getStepById, getStepByIdForJobExecution, getStepsByJobExecutionId, getStepsByJobExecutionIdForUpdate, getWorkflowJobExecutionDepth, getWorkflowRunAggregates, getWorkflowRunAttemptById, getWorkflowRunByAttemptId, getWorkflowRunById, getWorkflowRunDetail, listRunAttempts, listWorkflowRunJobSummaries, listWorkflowRuns, listWorkflowRunsByProject, queueJobExecution, recordJobExecutionStartedAt, resolveJobExecutionAfterLeaseExpiry, resolveJobStatusFromJobExecutions, updateJobExecutionStatus, updateJobStatus, updateWorkflowRunStatus } from './workflow-runs.js';
|
|
8
|
+
export { bulkUpdateStepStatuses, cancelWorkflowRun, createRerunWorkflowRun, createWorkflowRun, evaluateJobActivations, failJobExecutionAsTimedOut, failWorkflowRunAsTimedOut, getFirstJobExecutionByJobId, getJobById, getJobExecutionById, getJobExecutionDetail, getJobExecutionFailureOrigin, getJobExecutionsByJobId, getJobExecutionsByWorkflowRunAttemptId, getJobScope, getJobsByWorkflowRunAttemptId, getJobsByWorkflowRunId, getLatestAttempt, getLatestJobExecutionByJobId, getStepAttemptDetail, getStepAttempts, getStepAttemptsByJobIds, getStepById, getStepByIdForJobExecution, getStepsByJobExecutionId, getStepsByJobExecutionIdForUpdate, getWorkflowJobExecutionDepth, getWorkflowRunAggregates, getWorkflowRunAttemptById, getWorkflowRunByAttemptId, getWorkflowRunById, getWorkflowRunDetail, listRunAttempts, listStepAttemptIdsByJobId, listWorkflowRunJobSummaries, listWorkflowRuns, listWorkflowRunsByProject, queueJobExecution, recordJobExecutionStartedAt, resolveJobExecutionAfterLeaseExpiry, resolveJobStatusFromJobExecutions, updateJobExecutionStatus, updateJobStatus, updateWorkflowRunStatus } from './workflow-runs.js';
|
|
9
9
|
export const migrationsPath = resolve(dirname(fileURLToPath(import.meta.url)), '../../drizzle');
|
|
10
10
|
|
|
11
11
|
//# sourceMappingURL=index.js.map
|
package/dist/db/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/db/index.ts"],"sourcesContent":["import {dirname, resolve} from 'node:path';\nimport {fileURLToPath} from 'node:url';\n\nexport {closeDb, db, schema} from './db.js';\nexport {\n type DeliverEventToListenerParams,\n type DeliverEventToListenerResult,\n deliverEventToListener,\n} from './job-listener-events.js';\nexport type {\n ActivateJobListenerParams,\n ActivateJobListenerResult,\n DrainListenerEventsParams,\n DrainListenerEventsResult,\n ListenerBufferPeek,\n} from './job-listeners.js';\nexport {\n activateJobListener,\n countActiveListeners,\n drainListenerEventsIntoExecution,\n peekListenerBuffer,\n resolveJobListener,\n settleListenerJobExecution,\n} from './job-listeners.js';\nexport {workflowsOutbox} from './schema/outbox.js';\nexport {workflowRunCounters} from './schema/workflow-run-counters.js';\nexport type {\n BulkUpdateStepStatusesParams,\n CancelWorkflowRunParams,\n CreateRerunWorkflowRunParams,\n CreateWorkflowRunParams,\n EvaluateJobActivationsParams,\n FailWorkflowRunAsTimedOutParams,\n JobActivationDecision,\n ListWorkflowRunsParams,\n ListWorkflowRunsResult,\n StepAttemptDetail,\n UpdateJobExecutionStatusParams,\n UpdateJobStatusParams,\n UpdateWorkflowRunStatusParams,\n WorkflowJobExecutionDepth,\n WorkflowJobExecutionDepthParams,\n WorkflowRunAggregates,\n WorkflowRunFilters,\n WorkflowRunJobRawStatusCount,\n WorkflowRunJobStatusCount,\n WorkflowRunJobSummary,\n WorkflowRunJobSummaryTarget,\n WorkflowRunJobsSummary,\n} from './workflow-runs.js';\nexport {\n bulkUpdateStepStatuses,\n cancelWorkflowRun,\n createRerunWorkflowRun,\n createWorkflowRun,\n evaluateJobActivations,\n failJobExecutionAsTimedOut,\n failWorkflowRunAsTimedOut,\n getFirstJobExecutionByJobId,\n getJobById,\n getJobExecutionById,\n getJobExecutionDetail,\n getJobExecutionFailureOrigin,\n getJobExecutionsByJobId,\n getJobExecutionsByWorkflowRunAttemptId,\n getJobScope,\n getJobsByWorkflowRunAttemptId,\n getJobsByWorkflowRunId,\n getLatestAttempt,\n getLatestJobExecutionByJobId,\n getStepAttemptDetail,\n getStepAttempts,\n getStepAttemptsByJobIds,\n getStepById,\n getStepByIdForJobExecution,\n getStepsByJobExecutionId,\n getStepsByJobExecutionIdForUpdate,\n getWorkflowJobExecutionDepth,\n getWorkflowRunAggregates,\n getWorkflowRunAttemptById,\n getWorkflowRunByAttemptId,\n getWorkflowRunById,\n getWorkflowRunDetail,\n listRunAttempts,\n listWorkflowRunJobSummaries,\n listWorkflowRuns,\n listWorkflowRunsByProject,\n queueJobExecution,\n recordJobExecutionStartedAt,\n resolveJobExecutionAfterLeaseExpiry,\n resolveJobStatusFromJobExecutions,\n updateJobExecutionStatus,\n updateJobStatus,\n updateWorkflowRunStatus,\n} from './workflow-runs.js';\n\nexport const migrationsPath = resolve(dirname(fileURLToPath(import.meta.url)), '../../drizzle');\n"],"names":["dirname","resolve","fileURLToPath","closeDb","db","schema","deliverEventToListener","activateJobListener","countActiveListeners","drainListenerEventsIntoExecution","peekListenerBuffer","resolveJobListener","settleListenerJobExecution","workflowsOutbox","workflowRunCounters","bulkUpdateStepStatuses","cancelWorkflowRun","createRerunWorkflowRun","createWorkflowRun","evaluateJobActivations","failJobExecutionAsTimedOut","failWorkflowRunAsTimedOut","getFirstJobExecutionByJobId","getJobById","getJobExecutionById","getJobExecutionDetail","getJobExecutionFailureOrigin","getJobExecutionsByJobId","getJobExecutionsByWorkflowRunAttemptId","getJobScope","getJobsByWorkflowRunAttemptId","getJobsByWorkflowRunId","getLatestAttempt","getLatestJobExecutionByJobId","getStepAttemptDetail","getStepAttempts","getStepAttemptsByJobIds","getStepById","getStepByIdForJobExecution","getStepsByJobExecutionId","getStepsByJobExecutionIdForUpdate","getWorkflowJobExecutionDepth","getWorkflowRunAggregates","getWorkflowRunAttemptById","getWorkflowRunByAttemptId","getWorkflowRunById","getWorkflowRunDetail","listRunAttempts","listWorkflowRunJobSummaries","listWorkflowRuns","listWorkflowRunsByProject","queueJobExecution","recordJobExecutionStartedAt","resolveJobExecutionAfterLeaseExpiry","resolveJobStatusFromJobExecutions","updateJobExecutionStatus","updateJobStatus","updateWorkflowRunStatus","migrationsPath","url"],"mappings":"AAAA,SAAQA,OAAO,EAAEC,OAAO,QAAO,YAAY;AAC3C,SAAQC,aAAa,QAAO,WAAW;AAEvC,SAAQC,OAAO,EAAEC,EAAE,EAAEC,MAAM,QAAO,UAAU;AAC5C,SAGEC,sBAAsB,QACjB,2BAA2B;AAQlC,SACEC,mBAAmB,EACnBC,oBAAoB,EACpBC,gCAAgC,EAChCC,kBAAkB,EAClBC,kBAAkB,EAClBC,0BAA0B,QACrB,qBAAqB;AAC5B,SAAQC,eAAe,QAAO,qBAAqB;AACnD,SAAQC,mBAAmB,QAAO,oCAAoC;AAyBtE,SACEC,sBAAsB,EACtBC,iBAAiB,EACjBC,sBAAsB,EACtBC,iBAAiB,EACjBC,sBAAsB,EACtBC,0BAA0B,EAC1BC,yBAAyB,EACzBC,2BAA2B,EAC3BC,UAAU,EACVC,mBAAmB,EACnBC,qBAAqB,EACrBC,4BAA4B,EAC5BC,uBAAuB,EACvBC,sCAAsC,EACtCC,WAAW,EACXC,6BAA6B,EAC7BC,sBAAsB,EACtBC,gBAAgB,EAChBC,4BAA4B,EAC5BC,oBAAoB,EACpBC,eAAe,EACfC,uBAAuB,EACvBC,WAAW,EACXC,0BAA0B,EAC1BC,wBAAwB,EACxBC,iCAAiC,EACjCC,4BAA4B,EAC5BC,wBAAwB,EACxBC,yBAAyB,EACzBC,yBAAyB,EACzBC,kBAAkB,EAClBC,oBAAoB,EACpBC,eAAe,EACfC,2BAA2B,EAC3BC,gBAAgB,EAChBC,yBAAyB,EACzBC,iBAAiB,EACjBC,2BAA2B,EAC3BC,mCAAmC,EACnCC,iCAAiC,EACjCC,wBAAwB,EACxBC,eAAe,EACfC,uBAAuB,QAClB,qBAAqB;AAE5B,OAAO,MAAMC,
|
|
1
|
+
{"version":3,"sources":["../../src/db/index.ts"],"sourcesContent":["import {dirname, resolve} from 'node:path';\nimport {fileURLToPath} from 'node:url';\n\nexport {closeDb, db, schema} from './db.js';\nexport {\n type DeliverEventToListenerParams,\n type DeliverEventToListenerResult,\n deliverEventToListener,\n} from './job-listener-events.js';\nexport type {\n ActivateJobListenerParams,\n ActivateJobListenerResult,\n DrainListenerEventsParams,\n DrainListenerEventsResult,\n ListenerBufferPeek,\n} from './job-listeners.js';\nexport {\n activateJobListener,\n countActiveListeners,\n drainListenerEventsIntoExecution,\n peekListenerBuffer,\n resolveJobListener,\n settleListenerJobExecution,\n} from './job-listeners.js';\nexport {workflowsOutbox} from './schema/outbox.js';\nexport {workflowRunCounters} from './schema/workflow-run-counters.js';\nexport type {\n BulkUpdateStepStatusesParams,\n CancelWorkflowRunParams,\n CreateRerunWorkflowRunParams,\n CreateWorkflowRunParams,\n EvaluateJobActivationsParams,\n FailWorkflowRunAsTimedOutParams,\n JobActivationDecision,\n ListWorkflowRunsParams,\n ListWorkflowRunsResult,\n StepAttemptDetail,\n UpdateJobExecutionStatusParams,\n UpdateJobStatusParams,\n UpdateWorkflowRunStatusParams,\n WorkflowJobExecutionDepth,\n WorkflowJobExecutionDepthParams,\n WorkflowRunAggregates,\n WorkflowRunFilters,\n WorkflowRunJobRawStatusCount,\n WorkflowRunJobStatusCount,\n WorkflowRunJobSummary,\n WorkflowRunJobSummaryTarget,\n WorkflowRunJobsSummary,\n} from './workflow-runs.js';\nexport {\n bulkUpdateStepStatuses,\n cancelWorkflowRun,\n createRerunWorkflowRun,\n createWorkflowRun,\n evaluateJobActivations,\n failJobExecutionAsTimedOut,\n failWorkflowRunAsTimedOut,\n getFirstJobExecutionByJobId,\n getJobById,\n getJobExecutionById,\n getJobExecutionDetail,\n getJobExecutionFailureOrigin,\n getJobExecutionsByJobId,\n getJobExecutionsByWorkflowRunAttemptId,\n getJobScope,\n getJobsByWorkflowRunAttemptId,\n getJobsByWorkflowRunId,\n getLatestAttempt,\n getLatestJobExecutionByJobId,\n getStepAttemptDetail,\n getStepAttempts,\n getStepAttemptsByJobIds,\n getStepById,\n getStepByIdForJobExecution,\n getStepsByJobExecutionId,\n getStepsByJobExecutionIdForUpdate,\n getWorkflowJobExecutionDepth,\n getWorkflowRunAggregates,\n getWorkflowRunAttemptById,\n getWorkflowRunByAttemptId,\n getWorkflowRunById,\n getWorkflowRunDetail,\n listRunAttempts,\n listStepAttemptIdsByJobId,\n listWorkflowRunJobSummaries,\n listWorkflowRuns,\n listWorkflowRunsByProject,\n queueJobExecution,\n recordJobExecutionStartedAt,\n resolveJobExecutionAfterLeaseExpiry,\n resolveJobStatusFromJobExecutions,\n updateJobExecutionStatus,\n updateJobStatus,\n updateWorkflowRunStatus,\n} from './workflow-runs.js';\n\nexport const migrationsPath = resolve(dirname(fileURLToPath(import.meta.url)), '../../drizzle');\n"],"names":["dirname","resolve","fileURLToPath","closeDb","db","schema","deliverEventToListener","activateJobListener","countActiveListeners","drainListenerEventsIntoExecution","peekListenerBuffer","resolveJobListener","settleListenerJobExecution","workflowsOutbox","workflowRunCounters","bulkUpdateStepStatuses","cancelWorkflowRun","createRerunWorkflowRun","createWorkflowRun","evaluateJobActivations","failJobExecutionAsTimedOut","failWorkflowRunAsTimedOut","getFirstJobExecutionByJobId","getJobById","getJobExecutionById","getJobExecutionDetail","getJobExecutionFailureOrigin","getJobExecutionsByJobId","getJobExecutionsByWorkflowRunAttemptId","getJobScope","getJobsByWorkflowRunAttemptId","getJobsByWorkflowRunId","getLatestAttempt","getLatestJobExecutionByJobId","getStepAttemptDetail","getStepAttempts","getStepAttemptsByJobIds","getStepById","getStepByIdForJobExecution","getStepsByJobExecutionId","getStepsByJobExecutionIdForUpdate","getWorkflowJobExecutionDepth","getWorkflowRunAggregates","getWorkflowRunAttemptById","getWorkflowRunByAttemptId","getWorkflowRunById","getWorkflowRunDetail","listRunAttempts","listStepAttemptIdsByJobId","listWorkflowRunJobSummaries","listWorkflowRuns","listWorkflowRunsByProject","queueJobExecution","recordJobExecutionStartedAt","resolveJobExecutionAfterLeaseExpiry","resolveJobStatusFromJobExecutions","updateJobExecutionStatus","updateJobStatus","updateWorkflowRunStatus","migrationsPath","url"],"mappings":"AAAA,SAAQA,OAAO,EAAEC,OAAO,QAAO,YAAY;AAC3C,SAAQC,aAAa,QAAO,WAAW;AAEvC,SAAQC,OAAO,EAAEC,EAAE,EAAEC,MAAM,QAAO,UAAU;AAC5C,SAGEC,sBAAsB,QACjB,2BAA2B;AAQlC,SACEC,mBAAmB,EACnBC,oBAAoB,EACpBC,gCAAgC,EAChCC,kBAAkB,EAClBC,kBAAkB,EAClBC,0BAA0B,QACrB,qBAAqB;AAC5B,SAAQC,eAAe,QAAO,qBAAqB;AACnD,SAAQC,mBAAmB,QAAO,oCAAoC;AAyBtE,SACEC,sBAAsB,EACtBC,iBAAiB,EACjBC,sBAAsB,EACtBC,iBAAiB,EACjBC,sBAAsB,EACtBC,0BAA0B,EAC1BC,yBAAyB,EACzBC,2BAA2B,EAC3BC,UAAU,EACVC,mBAAmB,EACnBC,qBAAqB,EACrBC,4BAA4B,EAC5BC,uBAAuB,EACvBC,sCAAsC,EACtCC,WAAW,EACXC,6BAA6B,EAC7BC,sBAAsB,EACtBC,gBAAgB,EAChBC,4BAA4B,EAC5BC,oBAAoB,EACpBC,eAAe,EACfC,uBAAuB,EACvBC,WAAW,EACXC,0BAA0B,EAC1BC,wBAAwB,EACxBC,iCAAiC,EACjCC,4BAA4B,EAC5BC,wBAAwB,EACxBC,yBAAyB,EACzBC,yBAAyB,EACzBC,kBAAkB,EAClBC,oBAAoB,EACpBC,eAAe,EACfC,yBAAyB,EACzBC,2BAA2B,EAC3BC,gBAAgB,EAChBC,yBAAyB,EACzBC,iBAAiB,EACjBC,2BAA2B,EAC3BC,mCAAmC,EACnCC,iCAAiC,EACjCC,wBAAwB,EACxBC,eAAe,EACfC,uBAAuB,QAClB,qBAAqB;AAE5B,OAAO,MAAMC,iBAAiB1D,QAAQD,QAAQE,cAAc,YAAY0D,GAAG,IAAI,iBAAiB"}
|
|
@@ -151,7 +151,7 @@ export declare const steps: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
151
151
|
tableName: "steps";
|
|
152
152
|
dataType: "string";
|
|
153
153
|
columnType: "PgText";
|
|
154
|
-
data: "agent" | "checkout" | "run" | "setup";
|
|
154
|
+
data: "agent" | "checkout" | "run" | "setup" | "tool";
|
|
155
155
|
driverParam: string;
|
|
156
156
|
notNull: true;
|
|
157
157
|
hasDefault: false;
|
|
@@ -163,7 +163,7 @@ export declare const steps: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
|
163
163
|
identity: undefined;
|
|
164
164
|
generated: undefined;
|
|
165
165
|
}, {}, {
|
|
166
|
-
$type: "agent" | "checkout" | "run" | "setup";
|
|
166
|
+
$type: "agent" | "checkout" | "run" | "setup" | "tool";
|
|
167
167
|
}>;
|
|
168
168
|
config: import("drizzle-orm/pg-core").PgColumn<{
|
|
169
169
|
name: "config";
|
|
@@ -113,7 +113,7 @@ export declare const workflowRunAttempts: import("drizzle-orm/pg-core").PgTableW
|
|
|
113
113
|
dataType: "json";
|
|
114
114
|
columnType: "PgJsonb";
|
|
115
115
|
data: WorkflowModel | {
|
|
116
|
-
version: 2;
|
|
116
|
+
version: 2 | 3;
|
|
117
117
|
model: WorkflowModel;
|
|
118
118
|
};
|
|
119
119
|
driverParam: unknown;
|
|
@@ -128,7 +128,7 @@ export declare const workflowRunAttempts: import("drizzle-orm/pg-core").PgTableW
|
|
|
128
128
|
generated: undefined;
|
|
129
129
|
}, {}, {
|
|
130
130
|
$type: WorkflowModel | {
|
|
131
|
-
version: 2;
|
|
131
|
+
version: 2 | 3;
|
|
132
132
|
model: WorkflowModel;
|
|
133
133
|
};
|
|
134
134
|
}>;
|
|
@@ -21,6 +21,7 @@ export declare function writeJobStepsSettledOutbox(tx: Tx, params: {
|
|
|
21
21
|
status: 'succeeded' | 'failed';
|
|
22
22
|
}): Promise<void>;
|
|
23
23
|
export declare function writeStepAttemptTerminatedOutbox(tx: Tx, params: {
|
|
24
|
+
stepAttemptId: string;
|
|
24
25
|
stepId: string;
|
|
25
26
|
attempt: number;
|
|
26
27
|
status: 'succeeded' | 'failed' | 'cancelled';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../../../src/db/workflow-runs/outbox.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAMnB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAC,EAAE,EAAC,MAAM,UAAU,CAAC;AAMjC,wBAAsB,6BAA6B,CACjD,EAAE,EAAE,EAAE,EACN,MAAM,EAAE;IACN,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,IAAI,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAsB,iCAAiC,CACrD,EAAE,EAAE,EAAE,EACN,MAAM,EAAE;IACN,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,YAAY,EAAE,eAAe,GAAG,IAAI,CAAC;IACrC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACjD,GACA,OAAO,CAAC,IAAI,CAAC,CAsBf;AAMD,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,EAAE,EACN,MAAM,EAAE;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAA;CAAC,GAC9E,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,gCAAgC,CACpD,EAAE,EAAE,EAAE,EACN,MAAM,EAAE;IACN,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC7C,UAAU,EAAE,aAAa,CAAC;CAC3B,GACA,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../../../src/db/workflow-runs/outbox.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAMnB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAC,EAAE,EAAC,MAAM,UAAU,CAAC;AAMjC,wBAAsB,6BAA6B,CACjD,EAAE,EAAE,EAAE,EACN,MAAM,EAAE;IACN,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,IAAI,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAsB,iCAAiC,CACrD,EAAE,EAAE,EAAE,EACN,MAAM,EAAE;IACN,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,YAAY,EAAE,eAAe,GAAG,IAAI,CAAC;IACrC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACjD,GACA,OAAO,CAAC,IAAI,CAAC,CAsBf;AAMD,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,EAAE,EACN,MAAM,EAAE;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAA;CAAC,GAC9E,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,gCAAgC,CACpD,EAAE,EAAE,EAAE,EACN,MAAM,EAAE;IACN,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC7C,UAAU,EAAE,aAAa,CAAC;CAC3B,GACA,OAAO,CAAC,IAAI,CAAC,CAkBf;AA8BD,wBAAsB,8BAA8B,CAClD,EAAE,EAAE,EAAE,EACN,MAAM,EAAE;IACN,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,IAAI,CAAC,CAef"}
|
|
@@ -68,7 +68,8 @@ export async function writeStepAttemptTerminatedOutbox(tx, params) {
|
|
|
68
68
|
stepId: params.stepId,
|
|
69
69
|
attempt: params.attempt,
|
|
70
70
|
status: params.status,
|
|
71
|
-
logOutcome: params.logOutcome
|
|
71
|
+
logOutcome: params.logOutcome,
|
|
72
|
+
stepAttemptId: params.stepAttemptId
|
|
72
73
|
}
|
|
73
74
|
});
|
|
74
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/db/workflow-runs/outbox.ts"],"sourcesContent":["import {\n type LogOutcomeDto,\n WORKFLOWS_JOB_EXECUTION_QUEUED,\n WORKFLOWS_JOB_EXECUTION_TERMINATED,\n WORKFLOWS_JOB_STEPS_SETTLED,\n WORKFLOWS_STEP_ATTEMPT_TERMINATED,\n WORKFLOWS_STEP_RESTART_ENQUEUED,\n} from '@shipfox/api-workflows-dto';\nimport {eq} from 'drizzle-orm';\nimport type {JobStatusReason} from '#core/entities/job.js';\nimport type {JobExecutionStatus} from '#core/entities/job-execution.js';\nimport type {Tx} from '../db.js';\nimport {writeWorkflowsOutboxEvent} from '../outbox-writes.js';\nimport {jobExecutions} from '../schema/job-executions.js';\nimport {steps} from '../schema/steps.js';\nimport {getWorkflowContextForJob} from './shared.js';\n\nexport async function writeJobExecutionQueuedOutbox(\n tx: Tx,\n params: {\n jobId: string;\n jobExecutionId: string;\n requiredLabels: string[];\n queuedAt: Date;\n },\n): Promise<void> {\n const identity = await getWorkflowContextForJob(params.jobId, tx);\n\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_JOB_EXECUTION_QUEUED,\n payload: {\n jobId: params.jobId,\n jobExecutionId: params.jobExecutionId,\n workflowRunId: identity.workflowRunId,\n workflowRunAttemptId: identity.workflowRunAttemptId,\n workspaceId: identity.workspaceId,\n projectId: identity.projectId,\n requiredLabels: params.requiredLabels,\n queuedAt: params.queuedAt.toISOString(),\n },\n });\n}\n\nexport async function writeJobExecutionTerminatedOutbox(\n tx: Tx,\n params: {\n jobId: string;\n jobExecutionId: string;\n status: JobExecutionStatus;\n statusReason: JobStatusReason | null;\n statusReasonMessage?: string | null | undefined;\n },\n): Promise<void> {\n if (\n params.status !== 'succeeded' &&\n params.status !== 'failed' &&\n params.status !== 'cancelled'\n ) {\n throw new Error(`Cannot enqueue terminal job execution event for status ${params.status}`);\n }\n const identity = await getWorkflowContextForJob(params.jobId, tx);\n\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_JOB_EXECUTION_TERMINATED,\n payload: {\n jobId: params.jobId,\n jobExecutionId: params.jobExecutionId,\n workflowRunId: identity.workflowRunId,\n workflowRunAttemptId: identity.workflowRunAttemptId,\n status: params.status,\n statusReason: params.statusReason,\n statusReasonMessage: params.statusReasonMessage ?? null,\n },\n });\n}\n\n// Enqueue the steps-settled signal in the same transaction as the final per-step\n// result, so per-step execution observes it exactly once (the outbox is at-least-once;\n// the job workflow dedupes the signal). Drives the Temporal JOB_FINISHED_SIGNAL; the\n// job's terminal fact is emitted separately by updateJobStatusAtVersion.\nexport async function writeJobStepsSettledOutbox(\n tx: Tx,\n params: {jobId: string; jobExecutionId: string; status: 'succeeded' | 'failed'},\n): Promise<void> {\n const identity = await getWorkflowContextForJob(params.jobId, tx);\n\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_JOB_STEPS_SETTLED,\n payload: {\n jobId: params.jobId,\n jobExecutionId: params.jobExecutionId,\n workflowRunId: identity.workflowRunId,\n workflowRunAttemptId: identity.workflowRunAttemptId,\n status: params.status,\n },\n });\n}\n\nexport async function writeStepAttemptTerminatedOutbox(\n tx: Tx,\n params: {\n stepId: string;\n attempt: number;\n status: 'succeeded' | 'failed' | 'cancelled';\n logOutcome: LogOutcomeDto;\n },\n): Promise<void> {\n const identity = await getStepAttemptTerminatedOutboxIdentity(tx, params.stepId);\n\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_STEP_ATTEMPT_TERMINATED,\n payload: {\n jobId: identity.jobId,\n workflowRunId: identity.workflowRunId,\n workflowRunAttemptId: identity.workflowRunAttemptId,\n workspaceId: identity.workspaceId,\n projectId: identity.projectId,\n stepId: params.stepId,\n attempt: params.attempt,\n status: params.status,\n logOutcome: params.logOutcome,\n },\n });\n}\n\nasync function getStepAttemptTerminatedOutboxIdentity(\n tx: Tx,\n stepId: string,\n): Promise<{\n jobId: string;\n workflowRunId: string;\n workflowRunAttemptId: string;\n workspaceId: string;\n projectId: string;\n}> {\n const rows = await tx\n .select({\n jobId: jobExecutions.jobId,\n })\n .from(steps)\n .innerJoin(jobExecutions, eq(steps.jobExecutionId, jobExecutions.id))\n .where(eq(steps.id, stepId))\n .limit(1);\n const step = rows[0];\n if (!step) {\n throw new Error(`Cannot enqueue step-attempt-terminated event: step ${stepId} not found`);\n }\n\n return getWorkflowContextForJob(step.jobId, tx);\n}\n\n// Enqueue the durable audit record of a restart, in the same transaction as the\n// rewind. Looks up the workflow run id like writeJobStepsSettledOutbox.\nexport async function writeStepRestartEnqueuedOutbox(\n tx: Tx,\n params: {\n jobId: string;\n failedStepId: string;\n failedStepAttempt: number;\n restartFromStepId: string;\n feedback: string;\n },\n): Promise<void> {\n const identity = await getWorkflowContextForJob(params.jobId, tx);\n\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_STEP_RESTART_ENQUEUED,\n payload: {\n jobId: params.jobId,\n workflowRunId: identity.workflowRunId,\n workflowRunAttemptId: identity.workflowRunAttemptId,\n failedStepId: params.failedStepId,\n failedStepAttempt: params.failedStepAttempt,\n restartFromStepId: params.restartFromStepId,\n feedback: params.feedback,\n },\n });\n}\n"],"names":["WORKFLOWS_JOB_EXECUTION_QUEUED","WORKFLOWS_JOB_EXECUTION_TERMINATED","WORKFLOWS_JOB_STEPS_SETTLED","WORKFLOWS_STEP_ATTEMPT_TERMINATED","WORKFLOWS_STEP_RESTART_ENQUEUED","eq","writeWorkflowsOutboxEvent","jobExecutions","steps","getWorkflowContextForJob","writeJobExecutionQueuedOutbox","tx","params","identity","jobId","type","payload","jobExecutionId","workflowRunId","workflowRunAttemptId","workspaceId","projectId","requiredLabels","queuedAt","toISOString","writeJobExecutionTerminatedOutbox","status","Error","statusReason","statusReasonMessage","writeJobStepsSettledOutbox","writeStepAttemptTerminatedOutbox","getStepAttemptTerminatedOutboxIdentity","stepId","attempt","logOutcome","rows","select","from","innerJoin","id","where","limit","step","writeStepRestartEnqueuedOutbox","failedStepId","failedStepAttempt","restartFromStepId","feedback"],"mappings":"AAAA,SAEEA,8BAA8B,EAC9BC,kCAAkC,EAClCC,2BAA2B,EAC3BC,iCAAiC,EACjCC,+BAA+B,QAC1B,6BAA6B;AACpC,SAAQC,EAAE,QAAO,cAAc;AAI/B,SAAQC,yBAAyB,QAAO,sBAAsB;AAC9D,SAAQC,aAAa,QAAO,8BAA8B;AAC1D,SAAQC,KAAK,QAAO,qBAAqB;AACzC,SAAQC,wBAAwB,QAAO,cAAc;AAErD,OAAO,eAAeC,8BACpBC,EAAM,EACNC,MAKC;IAED,MAAMC,WAAW,MAAMJ,yBAAyBG,OAAOE,KAAK,EAAEH;IAE9D,MAAML,0BAA0BK,IAAI;QAClCI,MAAMf;QACNgB,SAAS;YACPF,OAAOF,OAAOE,KAAK;YACnBG,gBAAgBL,OAAOK,cAAc;YACrCC,eAAeL,SAASK,aAAa;YACrCC,sBAAsBN,SAASM,oBAAoB;YACnDC,aAAaP,SAASO,WAAW;YACjCC,WAAWR,SAASQ,SAAS;YAC7BC,gBAAgBV,OAAOU,cAAc;YACrCC,UAAUX,OAAOW,QAAQ,CAACC,WAAW;QACvC;IACF;AACF;AAEA,OAAO,eAAeC,kCACpBd,EAAM,EACNC,MAMC;IAED,IACEA,OAAOc,MAAM,KAAK,eAClBd,OAAOc,MAAM,KAAK,YAClBd,OAAOc,MAAM,KAAK,aAClB;QACA,MAAM,IAAIC,MAAM,CAAC,uDAAuD,EAAEf,OAAOc,MAAM,EAAE;IAC3F;IACA,MAAMb,WAAW,MAAMJ,yBAAyBG,OAAOE,KAAK,EAAEH;IAE9D,MAAML,0BAA0BK,IAAI;QAClCI,MAAMd;QACNe,SAAS;YACPF,OAAOF,OAAOE,KAAK;YACnBG,gBAAgBL,OAAOK,cAAc;YACrCC,eAAeL,SAASK,aAAa;YACrCC,sBAAsBN,SAASM,oBAAoB;YACnDO,QAAQd,OAAOc,MAAM;YACrBE,cAAchB,OAAOgB,YAAY;YACjCC,qBAAqBjB,OAAOiB,mBAAmB,IAAI;QACrD;IACF;AACF;AAEA,iFAAiF;AACjF,uFAAuF;AACvF,qFAAqF;AACrF,yEAAyE;AACzE,OAAO,eAAeC,2BACpBnB,EAAM,EACNC,MAA+E;IAE/E,MAAMC,WAAW,MAAMJ,yBAAyBG,OAAOE,KAAK,EAAEH;IAE9D,MAAML,0BAA0BK,IAAI;QAClCI,MAAMb;QACNc,SAAS;YACPF,OAAOF,OAAOE,KAAK;YACnBG,gBAAgBL,OAAOK,cAAc;YACrCC,eAAeL,SAASK,aAAa;YACrCC,sBAAsBN,SAASM,oBAAoB;YACnDO,QAAQd,OAAOc,MAAM;QACvB;IACF;AACF;AAEA,OAAO,eAAeK,iCACpBpB,EAAM,EACNC,
|
|
1
|
+
{"version":3,"sources":["../../../src/db/workflow-runs/outbox.ts"],"sourcesContent":["import {\n type LogOutcomeDto,\n WORKFLOWS_JOB_EXECUTION_QUEUED,\n WORKFLOWS_JOB_EXECUTION_TERMINATED,\n WORKFLOWS_JOB_STEPS_SETTLED,\n WORKFLOWS_STEP_ATTEMPT_TERMINATED,\n WORKFLOWS_STEP_RESTART_ENQUEUED,\n} from '@shipfox/api-workflows-dto';\nimport {eq} from 'drizzle-orm';\nimport type {JobStatusReason} from '#core/entities/job.js';\nimport type {JobExecutionStatus} from '#core/entities/job-execution.js';\nimport type {Tx} from '../db.js';\nimport {writeWorkflowsOutboxEvent} from '../outbox-writes.js';\nimport {jobExecutions} from '../schema/job-executions.js';\nimport {steps} from '../schema/steps.js';\nimport {getWorkflowContextForJob} from './shared.js';\n\nexport async function writeJobExecutionQueuedOutbox(\n tx: Tx,\n params: {\n jobId: string;\n jobExecutionId: string;\n requiredLabels: string[];\n queuedAt: Date;\n },\n): Promise<void> {\n const identity = await getWorkflowContextForJob(params.jobId, tx);\n\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_JOB_EXECUTION_QUEUED,\n payload: {\n jobId: params.jobId,\n jobExecutionId: params.jobExecutionId,\n workflowRunId: identity.workflowRunId,\n workflowRunAttemptId: identity.workflowRunAttemptId,\n workspaceId: identity.workspaceId,\n projectId: identity.projectId,\n requiredLabels: params.requiredLabels,\n queuedAt: params.queuedAt.toISOString(),\n },\n });\n}\n\nexport async function writeJobExecutionTerminatedOutbox(\n tx: Tx,\n params: {\n jobId: string;\n jobExecutionId: string;\n status: JobExecutionStatus;\n statusReason: JobStatusReason | null;\n statusReasonMessage?: string | null | undefined;\n },\n): Promise<void> {\n if (\n params.status !== 'succeeded' &&\n params.status !== 'failed' &&\n params.status !== 'cancelled'\n ) {\n throw new Error(`Cannot enqueue terminal job execution event for status ${params.status}`);\n }\n const identity = await getWorkflowContextForJob(params.jobId, tx);\n\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_JOB_EXECUTION_TERMINATED,\n payload: {\n jobId: params.jobId,\n jobExecutionId: params.jobExecutionId,\n workflowRunId: identity.workflowRunId,\n workflowRunAttemptId: identity.workflowRunAttemptId,\n status: params.status,\n statusReason: params.statusReason,\n statusReasonMessage: params.statusReasonMessage ?? null,\n },\n });\n}\n\n// Enqueue the steps-settled signal in the same transaction as the final per-step\n// result, so per-step execution observes it exactly once (the outbox is at-least-once;\n// the job workflow dedupes the signal). Drives the Temporal JOB_FINISHED_SIGNAL; the\n// job's terminal fact is emitted separately by updateJobStatusAtVersion.\nexport async function writeJobStepsSettledOutbox(\n tx: Tx,\n params: {jobId: string; jobExecutionId: string; status: 'succeeded' | 'failed'},\n): Promise<void> {\n const identity = await getWorkflowContextForJob(params.jobId, tx);\n\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_JOB_STEPS_SETTLED,\n payload: {\n jobId: params.jobId,\n jobExecutionId: params.jobExecutionId,\n workflowRunId: identity.workflowRunId,\n workflowRunAttemptId: identity.workflowRunAttemptId,\n status: params.status,\n },\n });\n}\n\nexport async function writeStepAttemptTerminatedOutbox(\n tx: Tx,\n params: {\n stepAttemptId: string;\n stepId: string;\n attempt: number;\n status: 'succeeded' | 'failed' | 'cancelled';\n logOutcome: LogOutcomeDto;\n },\n): Promise<void> {\n const identity = await getStepAttemptTerminatedOutboxIdentity(tx, params.stepId);\n\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_STEP_ATTEMPT_TERMINATED,\n payload: {\n jobId: identity.jobId,\n workflowRunId: identity.workflowRunId,\n workflowRunAttemptId: identity.workflowRunAttemptId,\n workspaceId: identity.workspaceId,\n projectId: identity.projectId,\n stepId: params.stepId,\n attempt: params.attempt,\n status: params.status,\n logOutcome: params.logOutcome,\n stepAttemptId: params.stepAttemptId,\n },\n });\n}\n\nasync function getStepAttemptTerminatedOutboxIdentity(\n tx: Tx,\n stepId: string,\n): Promise<{\n jobId: string;\n workflowRunId: string;\n workflowRunAttemptId: string;\n workspaceId: string;\n projectId: string;\n}> {\n const rows = await tx\n .select({\n jobId: jobExecutions.jobId,\n })\n .from(steps)\n .innerJoin(jobExecutions, eq(steps.jobExecutionId, jobExecutions.id))\n .where(eq(steps.id, stepId))\n .limit(1);\n const step = rows[0];\n if (!step) {\n throw new Error(`Cannot enqueue step-attempt-terminated event: step ${stepId} not found`);\n }\n\n return getWorkflowContextForJob(step.jobId, tx);\n}\n\n// Enqueue the durable audit record of a restart, in the same transaction as the\n// rewind. Looks up the workflow run id like writeJobStepsSettledOutbox.\nexport async function writeStepRestartEnqueuedOutbox(\n tx: Tx,\n params: {\n jobId: string;\n failedStepId: string;\n failedStepAttempt: number;\n restartFromStepId: string;\n feedback: string;\n },\n): Promise<void> {\n const identity = await getWorkflowContextForJob(params.jobId, tx);\n\n await writeWorkflowsOutboxEvent(tx, {\n type: WORKFLOWS_STEP_RESTART_ENQUEUED,\n payload: {\n jobId: params.jobId,\n workflowRunId: identity.workflowRunId,\n workflowRunAttemptId: identity.workflowRunAttemptId,\n failedStepId: params.failedStepId,\n failedStepAttempt: params.failedStepAttempt,\n restartFromStepId: params.restartFromStepId,\n feedback: params.feedback,\n },\n });\n}\n"],"names":["WORKFLOWS_JOB_EXECUTION_QUEUED","WORKFLOWS_JOB_EXECUTION_TERMINATED","WORKFLOWS_JOB_STEPS_SETTLED","WORKFLOWS_STEP_ATTEMPT_TERMINATED","WORKFLOWS_STEP_RESTART_ENQUEUED","eq","writeWorkflowsOutboxEvent","jobExecutions","steps","getWorkflowContextForJob","writeJobExecutionQueuedOutbox","tx","params","identity","jobId","type","payload","jobExecutionId","workflowRunId","workflowRunAttemptId","workspaceId","projectId","requiredLabels","queuedAt","toISOString","writeJobExecutionTerminatedOutbox","status","Error","statusReason","statusReasonMessage","writeJobStepsSettledOutbox","writeStepAttemptTerminatedOutbox","getStepAttemptTerminatedOutboxIdentity","stepId","attempt","logOutcome","stepAttemptId","rows","select","from","innerJoin","id","where","limit","step","writeStepRestartEnqueuedOutbox","failedStepId","failedStepAttempt","restartFromStepId","feedback"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-create.d.ts","sourceRoot":"","sources":["../../../src/db/workflow-runs/run-create.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"run-create.d.ts","sourceRoot":"","sources":["../../../src/db/workflow-runs/run-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,gDAAgD,CAAC;AAC7F,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,wCAAwC,CAAC;AACjF,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,uCAAuC,CAAC;AAQpF,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AAKnE,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAC,8BAA8B,EAAC,MAAM,iBAAiB,CAAC;AAoB/D,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,8BAA8B,CAAC,OAAO,CAAC,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,aAAa,CAAC;IACrB,cAAc,EAAE,cAAc,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC7C,cAAc,CAAC,EAAE,sBAAsB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3D,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,mEAAmE;IACnE,MAAM,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACvC,SAAS,CAAC,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,CAAC;IACpD,oBAAoB,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACzD,OAAO,CAAC,EAAE,IAAI,CAAC,wBAAwB,EAAE,yBAAyB,CAAC,GAAG,SAAS,CAAC;IAChF,YAAY,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;CAC7C;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,CA0M7F;AA2BD,wBAAsB,uBAAuB,CAAC,MAAM,EAAE;IACpD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,gBAAgB,EAAE,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,wBAAwB,EAAE,yBAAyB,CAAC,GAAG,SAAS,CAAC;CAC1F,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAkC9C"}
|
|
@@ -356,7 +356,7 @@ function referencedVariables(model, jobs) {
|
|
|
356
356
|
collectFieldVariableReferences(step.templates?.name, references, {
|
|
357
357
|
field: 'step.name'
|
|
358
358
|
});
|
|
359
|
-
collectFieldVariableReferences(step.templates?.workingDirectory, references, {
|
|
359
|
+
collectFieldVariableReferences(step.kind === 'tool' ? undefined : step.templates?.workingDirectory, references, {
|
|
360
360
|
field: 'step.working_directory'
|
|
361
361
|
});
|
|
362
362
|
if (step.kind === 'run') {
|
|
@@ -374,6 +374,16 @@ function referencedVariables(model, jobs) {
|
|
|
374
374
|
collectFieldVariableReferences(step.templates?.provider, references, {
|
|
375
375
|
field: 'agent.provider'
|
|
376
376
|
});
|
|
377
|
+
} else if (step.kind === 'tool') {
|
|
378
|
+
collectTemplateTreeVariableReferences(step.templates?.with, references, {
|
|
379
|
+
field: 'tool.with'
|
|
380
|
+
});
|
|
381
|
+
for (const [key, expression] of Object.entries(step.outputMappings ?? {})){
|
|
382
|
+
collectExpressionVariableReferences(expression, references, {
|
|
383
|
+
field: 'tool.outputs',
|
|
384
|
+
envKey: key
|
|
385
|
+
});
|
|
386
|
+
}
|
|
377
387
|
} else if (step.kind === 'checkout') {
|
|
378
388
|
for (const [key, field] of WORKFLOW_MODEL_CHECKOUT_TARGET_FIELDS){
|
|
379
389
|
collectFieldVariableReferences(step.checkout.templates?.[key], references, {
|
|
@@ -420,6 +430,44 @@ function collectFieldVariableReferences(template, references, source) {
|
|
|
420
430
|
}
|
|
421
431
|
}
|
|
422
432
|
}
|
|
433
|
+
/**
|
|
434
|
+
* Collect `vars.*` references from a tool step's `with` template tree: a
|
|
435
|
+
* `WorkflowJsonTemplateTree` mirrors the authored `with` payload with every
|
|
436
|
+
* interpolated string leaf replaced by its parsed template, so walk it like
|
|
437
|
+
* the authored structure and collect from each leaf template.
|
|
438
|
+
*/ function collectTemplateTreeVariableReferences(tree, references, source) {
|
|
439
|
+
if (tree === undefined) return;
|
|
440
|
+
if (Array.isArray(tree)) {
|
|
441
|
+
// A field template is itself an array of segments; a `with` list is an
|
|
442
|
+
// array of child trees. Segments carry a `kind`, so distinguish the two.
|
|
443
|
+
if (tree.every((element)=>isFieldTemplateSegment(element))) {
|
|
444
|
+
collectFieldVariableReferences(tree, references, source);
|
|
445
|
+
return;
|
|
446
|
+
}
|
|
447
|
+
for (const child of tree)collectTemplateTreeVariableReferences(child, references, source);
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
450
|
+
if (typeof tree === 'object') {
|
|
451
|
+
for (const child of Object.values(tree)){
|
|
452
|
+
collectTemplateTreeVariableReferences(child, references, source);
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
function isFieldTemplateSegment(value) {
|
|
457
|
+
return typeof value === 'object' && value !== null && (value.kind === 'literal' || value.kind === 'deferred');
|
|
458
|
+
}
|
|
459
|
+
function collectExpressionVariableReferences(expression, references, source) {
|
|
460
|
+
const keyAccess = analyzeContextKeyAccess(expression);
|
|
461
|
+
for (const reference of keyAccess.references){
|
|
462
|
+
if (reference.root !== 'vars') continue;
|
|
463
|
+
references.push({
|
|
464
|
+
key: reference.key,
|
|
465
|
+
field: source.field,
|
|
466
|
+
source: expression.source,
|
|
467
|
+
envKey: source.envKey
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
}
|
|
423
471
|
function logTemplateDiagnostics(params) {
|
|
424
472
|
if (params.diagnostics.length === 0) return;
|
|
425
473
|
logger().warn({
|