@kb-labs/workflow-contracts 2.116.14 → 2.118.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/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { E as ExpressionContext, W as WorkflowInvocationSpec } from './rest-api-BZYyPvrG.js';
2
- export { A as ApprovalReviewItem, a as ApprovalReviewItemSchema, b as ArtifactMergeConfig, c as ArtifactMergeConfigSchema, d as ArtifactMergeSource, e as ArtifactMergeSourceSchema, f as ArtifactMergeStrategy, g as ArtifactMergeStrategySchema, C as ConcurrencyGroup, h as ConcurrencyGroupSchema, i as CreateRunInput, j as CronInfo, k as CronInfoSchema, l as CronListResponse, m as CronListResponseSchema, n as CronRegistrationRequest, D as DashboardStatsResponse, o as DashboardStatsResponseSchema, p as ExecutionResult, q as ExecutionResultSchema, r as ExecutionTarget, s as ExecutionTargetSchema, F as FileLintResult, I as IWorkflowEngine, t as IdempotencyKey, u as IdempotencyKeySchema, v as IsolationProfile, w as IsolationProfileSchema, J as JobArtifactsSchema, x as JobCancelResponse, y as JobCancelResponseSchema, z as JobConcurrencySchema, B as JobHooks, G as JobHooksSchema, H as JobListFilter, K as JobListResponse, L as JobListResponseSchema, M as JobLogsResponse, N as JobLogsResponseSchema, O as JobRun, P as JobRunSchema, Q as JobSpec, R as JobSpecSchema, S as JobStateSchema, T as JobStatusInfo, U as JobStatusInfoSchema, V as JobStatusSchema, X as JobStepInfo, Y as JobStepInfoSchema, Z as JobStepsResponse, _ as JobStepsResponseSchema, $ as JobSubmissionRequest, a0 as JobSubmissionResponse, a1 as ListRunsFilter, a2 as Phase, a3 as PhaseSchema, a4 as ResultError, a5 as ResultErrorSchema, a6 as ResultMetrics, a7 as ResultMetricsSchema, a8 as RetryFailureKind, a9 as RetryFailureKindSchema, aa as RetryModeSchema, ab as RetryPolicy, ac as RetryPolicySchema, ad as RunMetadata, ae as RunMetadataSchema, af as RunSchema, ag as RunStateSchema, ah as RunTrigger, ai as RunTriggerSchema, aj as StepArtifact, ak as StepArtifactSchema, al as StepProgress, am as StepProgressSchema, an as StepRun, ao as StepRunErrorSchema, ap as StepRunSchema, aq as StepSpec, ar as StepSpecSchema, as as StepStateSchema, at as TenantIdSchema, au as TimeoutSchema, av as WorkflowInfo, aw as WorkflowInfoSchema, ax as WorkflowInputField, ay as WorkflowInputFieldSchema, az as WorkflowListResponse, aA as WorkflowListResponseSchema, aB as WorkflowLogEvent, aC as WorkflowRerunRequest, aD as WorkflowRerunRequestSchema, aE as WorkflowRestartRequest, aF as WorkflowRestartRequestSchema, aG as WorkflowRestartResponse, aH as WorkflowRun, aI as WorkflowRunHistoryResponse, aJ as WorkflowRunHistoryResponseSchema, aK as WorkflowRunInfo, aL as WorkflowRunInfoSchema, aM as WorkflowRunRequest, aN as WorkflowRunRequestSchema, aO as WorkflowSpec, aP as WorkflowSpecSchema, aQ as WorkflowTriggerSchema, aR as WorkflowValidationResult } from './rest-api-BZYyPvrG.js';
1
+ import { E as ExpressionContext, W as WorkflowInvocationSpec } from './rest-api-wonOln0o.js';
2
+ export { A as ApprovalReviewItem, a as ApprovalReviewItemSchema, b as ArtifactMergeConfig, c as ArtifactMergeConfigSchema, d as ArtifactMergeSource, e as ArtifactMergeSourceSchema, f as ArtifactMergeStrategy, g as ArtifactMergeStrategySchema, C as ConcurrencyGroup, h as ConcurrencyGroupSchema, i as CreateRunInput, j as CronInfo, k as CronInfoSchema, l as CronListResponse, m as CronListResponseSchema, n as CronRegistrationRequest, D as DashboardStatsResponse, o as DashboardStatsResponseSchema, p as ExecutionResult, q as ExecutionResultSchema, r as ExecutionTarget, s as ExecutionTargetSchema, F as FileLintResult, I as IWorkflowEngine, t as IdempotencyKey, u as IdempotencyKeySchema, v as IsolationProfile, w as IsolationProfileSchema, J as JobArtifactsSchema, x as JobCancelResponse, y as JobCancelResponseSchema, z as JobConcurrencySchema, B as JobHooks, G as JobHooksSchema, H as JobListFilter, K as JobListResponse, L as JobListResponseSchema, M as JobLogsResponse, N as JobLogsResponseSchema, O as JobRun, P as JobRunSchema, Q as JobSpec, R as JobSpecSchema, S as JobStateSchema, T as JobStatusInfo, U as JobStatusInfoSchema, V as JobStatusSchema, X as JobStepInfo, Y as JobStepInfoSchema, Z as JobStepsResponse, _ as JobStepsResponseSchema, $ as JobSubmissionRequest, a0 as JobSubmissionResponse, a1 as ListRunsFilter, a2 as Phase, a3 as PhaseSchema, a4 as ResultError, a5 as ResultErrorSchema, a6 as ResultMetrics, a7 as ResultMetricsSchema, a8 as RetryFailureKind, a9 as RetryFailureKindSchema, aa as RetryModeSchema, ab as RetryPolicy, ac as RetryPolicySchema, ad as RunMetadata, ae as RunMetadataSchema, af as RunSchema, ag as RunStateSchema, ah as RunTrigger, ai as RunTriggerSchema, aj as StepArtifact, ak as StepArtifactSchema, al as StepProgress, am as StepProgressSchema, an as StepRun, ao as StepRunErrorSchema, ap as StepRunSchema, aq as StepSpec, ar as StepSpecSchema, as as StepStateSchema, at as TenantIdSchema, au as TimeoutSchema, av as WorkflowInfo, aw as WorkflowInfoSchema, ax as WorkflowInputField, ay as WorkflowInputFieldSchema, az as WorkflowListResponse, aA as WorkflowListResponseSchema, aB as WorkflowLogEvent, aC as WorkflowOutputField, aD as WorkflowOutputFieldSchema, aE as WorkflowRerunRequest, aF as WorkflowRerunRequestSchema, aG as WorkflowRestartRequest, aH as WorkflowRestartRequestSchema, aI as WorkflowRestartResponse, aJ as WorkflowRun, aK as WorkflowRunHistoryResponse, aL as WorkflowRunHistoryResponseSchema, aM as WorkflowRunInfo, aN as WorkflowRunInfoSchema, aO as WorkflowRunRequest, aP as WorkflowRunRequestSchema, aQ as WorkflowSpec, aR as WorkflowSpecSchema, aS as WorkflowTriggerSchema, aT as WorkflowValidationResult } from './rest-api-wonOln0o.js';
3
3
  import * as _kb_labs_shared_command_kit from '@kb-labs/shared-command-kit';
4
4
  import { z } from 'zod';
5
5
  import '@kb-labs/workflow-constants';
package/dist/index.js CHANGED
@@ -162,6 +162,10 @@ var WorkflowInputFieldSchema = z.object({
162
162
  required: z.boolean().optional(),
163
163
  default: z.unknown().optional()
164
164
  });
165
+ var WorkflowOutputFieldSchema = z.object({
166
+ source: z.string().min(1),
167
+ description: z.string().optional()
168
+ });
165
169
  var WorkflowSpecSchema = z.object({
166
170
  name: z.string().min(1),
167
171
  version: z.string().min(1),
@@ -170,6 +174,7 @@ var WorkflowSpecSchema = z.object({
170
174
  isolation: IsolationProfileSchema.optional(),
171
175
  on: WorkflowTriggerSchema,
172
176
  inputs: z.record(z.string(), WorkflowInputFieldSchema).optional(),
177
+ outputs: z.record(z.string().min(1), WorkflowOutputFieldSchema).optional(),
173
178
  env: z.record(z.string(), z.string()).optional(),
174
179
  secrets: z.array(z.string().min(1)).optional(),
175
180
  jobs: z.record(z.string().min(1), JobSpecSchema),
@@ -266,7 +271,18 @@ var RunMetadataSchema = z.object({
266
271
  workflowDepth: z.number().int().nonnegative().optional(),
267
272
  parentRunId: z.string().optional(),
268
273
  parentJobId: z.string().optional(),
269
- parentStepId: z.string().optional()
274
+ parentStepId: z.string().optional(),
275
+ /** Root run and complete workflow ancestry make nested invocation auditable
276
+ * and allow the engine to reject indirect cycles (A → B → A). */
277
+ rootRunId: z.string().optional(),
278
+ workflowAncestors: z.array(z.string().min(1)).optional(),
279
+ outputDeclarations: z.record(z.string(), WorkflowOutputFieldSchema).optional(),
280
+ /** Persisted binding owned by the root invocation and borrowed by children. */
281
+ executionWorkspace: z.object({
282
+ workspaceId: z.string().min(1),
283
+ rootPath: z.string().min(1)
284
+ }).optional(),
285
+ workspaceOwnerRunId: z.string().optional()
270
286
  });
271
287
  var ResultErrorSchema = z.object({
272
288
  message: z.string().min(1),
@@ -927,6 +943,6 @@ var WORKFLOW_ROUTES = {
927
943
  RESOLVE_APPROVAL: "/runs/:runId/approve"
928
944
  };
929
945
 
930
- export { ApprovalReviewItemSchema, ArtifactMergeConfigSchema, ArtifactMergeSourceSchema, ArtifactMergeStrategySchema, ConcurrencyGroupSchema, CronExecutionSchema, CronInfoSchema, CronListResponseSchema, CronScheduleSchema, DashboardStatsResponseSchema, ExecutionResultSchema, ExecutionTargetSchema, IdempotencyKeySchema, IsolationProfileSchema, JobArtifactsSchema, JobCancelResponseSchema, JobConcurrencySchema, JobHooksSchema, JobListResponseSchema, JobLogsResponseSchema, JobRunSchema, JobSpecSchema, JobStateSchema, JobStatusInfoSchema, JobStatusSchema, JobStepInfoSchema, JobStepsResponseSchema, PhaseSchema, PluginCronJobSchema, ResultErrorSchema, ResultMetricsSchema, RetryFailureKindSchema, RetryModeSchema, RetryPolicySchema, RunMetadataSchema, RunSchema, RunStateSchema, RunTriggerSchema, StepArtifactSchema, StepProgressSchema, StepRunErrorSchema, StepRunSchema, StepSpecSchema, StepStateSchema, TenantIdSchema, TimeoutSchema, UserCronJobSchema, WORKFLOW_BASE_PATH, WORKFLOW_ROUTES, WorkflowInfoSchema, WorkflowInputFieldSchema, WorkflowListResponseSchema, WorkflowRerunRequestSchema, WorkflowRestartRequestSchema, WorkflowRunHistoryResponseSchema, WorkflowRunInfoSchema, WorkflowRunRequestSchema, WorkflowSpecSchema, WorkflowTriggerSchema, buildShellSafeCommand, coerceToString, evaluateExpression, extractExpressions, healthFlags, interpolateObject, interpolateString, listFlags, logsFlags, metricsFlags, parseWorkflowUses, resolveExpression, resolveValue, runFlags, statusFlags };
946
+ export { ApprovalReviewItemSchema, ArtifactMergeConfigSchema, ArtifactMergeSourceSchema, ArtifactMergeStrategySchema, ConcurrencyGroupSchema, CronExecutionSchema, CronInfoSchema, CronListResponseSchema, CronScheduleSchema, DashboardStatsResponseSchema, ExecutionResultSchema, ExecutionTargetSchema, IdempotencyKeySchema, IsolationProfileSchema, JobArtifactsSchema, JobCancelResponseSchema, JobConcurrencySchema, JobHooksSchema, JobListResponseSchema, JobLogsResponseSchema, JobRunSchema, JobSpecSchema, JobStateSchema, JobStatusInfoSchema, JobStatusSchema, JobStepInfoSchema, JobStepsResponseSchema, PhaseSchema, PluginCronJobSchema, ResultErrorSchema, ResultMetricsSchema, RetryFailureKindSchema, RetryModeSchema, RetryPolicySchema, RunMetadataSchema, RunSchema, RunStateSchema, RunTriggerSchema, StepArtifactSchema, StepProgressSchema, StepRunErrorSchema, StepRunSchema, StepSpecSchema, StepStateSchema, TenantIdSchema, TimeoutSchema, UserCronJobSchema, WORKFLOW_BASE_PATH, WORKFLOW_ROUTES, WorkflowInfoSchema, WorkflowInputFieldSchema, WorkflowListResponseSchema, WorkflowOutputFieldSchema, WorkflowRerunRequestSchema, WorkflowRestartRequestSchema, WorkflowRunHistoryResponseSchema, WorkflowRunInfoSchema, WorkflowRunRequestSchema, WorkflowSpecSchema, WorkflowTriggerSchema, buildShellSafeCommand, coerceToString, evaluateExpression, extractExpressions, healthFlags, interpolateObject, interpolateString, listFlags, logsFlags, metricsFlags, parseWorkflowUses, resolveExpression, resolveValue, runFlags, statusFlags };
931
947
  //# sourceMappingURL=index.js.map
932
948
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/schemas.ts","../src/expressions.ts","../src/flags.ts","../src/cron.ts","../src/rest-api.ts","../src/routes.ts"],"names":["value","z"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod'\nimport {\n RUN_STATES,\n JOB_STATES,\n STEP_STATES,\n type RunState,\n type JobState,\n type StepState,\n} from '@kb-labs/workflow-constants'\n\ntype NonEmptyTuple<T> = [T, ...T[]]\n\nconst RUN_STATE_VALUES = RUN_STATES as unknown as NonEmptyTuple<RunState>\nconst JOB_STATE_VALUES = JOB_STATES as unknown as NonEmptyTuple<JobState>\nconst STEP_STATE_VALUES = STEP_STATES as unknown as NonEmptyTuple<StepState>\n\nexport const RunStateSchema = z.enum(RUN_STATE_VALUES)\nexport const JobStateSchema = z.enum(JOB_STATE_VALUES)\nexport const StepStateSchema = z.enum(STEP_STATE_VALUES)\n\nexport const IdempotencyKeySchema = z.string().min(1).max(256)\nexport const ConcurrencyGroupSchema = z.string().min(1).max(256)\n\n/**\n * Tenant ID schema\n * Optional for backward compatibility with single-tenant deployments\n */\nexport const TenantIdSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^[a-zA-Z0-9_-]+$/)\n .describe('Tenant identifier')\n .optional()\n\nexport const RetryModeSchema = z.enum(['exp', 'lin'])\nexport const RetryFailureKindSchema = z.enum([\n 'command',\n 'network',\n 'timeout',\n 'rate_limit',\n 'server',\n 'infrastructure',\n])\n\nexport const RetryPolicySchema = z.object({\n max: z.number().int().nonnegative(),\n backoff: RetryModeSchema.default('exp'),\n initialIntervalMs: z.number().int().positive().default(1000),\n maxIntervalMs: z.number().int().positive().optional(),\n on: z.array(RetryFailureKindSchema).min(1).optional(),\n})\n\nexport const TimeoutSchema = z.number().int().positive().max(1000 * 60 * 60 * 24) // <= 24h\n\nexport const ExecutionTargetSchema = z.object({\n environmentId: z.string().min(1).optional(),\n workspaceId: z.string().min(1).optional(),\n namespace: z.string().min(1).optional(),\n workdir: z.string().min(1).optional(),\n})\n\nexport const IsolationProfileSchema = z.enum(['strict', 'balanced', 'relaxed'])\n\n// ─── Presentation layer schemas ──────────────────────────────────────────────\n// These fields are consumed by any client (Studio, CLI, API) to provide\n// human-readable context about workflow structure and step behavior.\n\n/** Workflow phase definition — semantic grouping of steps */\nexport const PhaseSchema = z.object({\n label: z.string().min(1),\n description: z.string().optional(),\n})\n\n/** Live progress binding — resolves a value from step outputs for display */\nexport const StepProgressSchema = z.object({\n source: z.string().min(1),\n format: z.string().min(1),\n})\n\n/** Step artifact declaration — what a step produces for review/display */\nexport const StepArtifactSchema = z.object({\n type: z.enum(['markdown', 'issues', 'table', 'diff', 'log', 'json', 'link']),\n source: z.string().min(1),\n label: z.string().min(1),\n digest: z.string().optional(),\n showInSummary: z.boolean().optional(),\n})\n\n/** Approval review item — references an artifact from a previous step */\nexport const ApprovalReviewItemSchema = z.object({\n artifact: z.string().min(1),\n editable: z.boolean().optional(),\n decisions: z.boolean().optional(),\n})\n\n// ─── Step spec ───────────────────────────────────────────────────────────────\n\nexport const StepSpecSchema = z\n .object({\n name: z.string().min(1),\n uses: z\n .union([\n z.literal('builtin:shell'),\n z.literal('builtin:approval'),\n z.literal('builtin:gate'),\n // CLI command form — the resolver matches the part after `command:`\n // verbatim against a manifest command path (e.g. `review run`,\n // `agent trace stats`), which contains spaces. Allow them here.\n z.string().regex(/^command:[a-zA-Z0-9@/_:+#. -]+$/),\n z.string().regex(/^(plugin:|workflow:)?[a-zA-Z0-9@/_:+#.-]+$/),\n ])\n .optional(),\n /** Shell command shorthand — equivalent to uses: builtin:shell with: { command: ... } */\n run: z.string().optional(),\n id: z.string().min(1).max(64).regex(/^[a-zA-Z0-9_-]+$/).optional(),\n if: z.string().optional(),\n with: z.record(z.string(), z.unknown()).optional(),\n env: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string().min(1)).optional(),\n timeoutMs: TimeoutSchema.optional(),\n retry: z.union([z.literal(false), RetryPolicySchema]).optional(),\n continueOnError: z.boolean().optional(),\n // Presentation layer\n summary: z.string().optional(),\n phase: z.string().optional(),\n progress: StepProgressSchema.optional(),\n artifacts: z.record(z.string().min(1), StepArtifactSchema).optional(),\n })\n .transform((step) => {\n // Normalize `run: cmd` → `uses: builtin:shell, with: { command: cmd }`\n if (step.run && !step.uses) {\n const { run, with: withField, ...rest } = step\n return {\n ...rest,\n uses: 'builtin:shell' as const,\n with: { ...withField, command: run },\n }\n }\n return step\n })\n\nexport const JobConcurrencySchema = z.object({\n group: ConcurrencyGroupSchema,\n cancelInProgress: z.boolean().optional(),\n})\n\nexport const ArtifactMergeStrategySchema = z.enum(['append', 'overwrite', 'json-merge'])\n\nexport const ArtifactMergeSourceSchema = z.object({\n runId: z.string().min(1),\n jobId: z.string().min(1).optional(),\n})\n\nexport const ArtifactMergeConfigSchema = z.object({\n strategy: ArtifactMergeStrategySchema,\n from: z.array(ArtifactMergeSourceSchema).min(1),\n})\n\nexport const JobArtifactsSchema = z\n .object({\n produce: z.array(z.string().min(1)).optional(),\n consume: z.array(z.string().min(1)).optional(),\n merge: ArtifactMergeConfigSchema.optional(),\n })\n .optional()\n\nexport const JobHooksSchema = z\n .object({\n pre: z.array(StepSpecSchema).optional(),\n post: z.array(StepSpecSchema).optional(),\n onFailure: z.array(StepSpecSchema).optional(),\n onSuccess: z.array(StepSpecSchema).optional(),\n })\n .optional()\n\nexport const JobSpecSchema = z.object({\n runsOn: z.enum(['local', 'sandbox']),\n target: ExecutionTargetSchema.optional(),\n isolation: IsolationProfileSchema.optional(),\n concurrency: JobConcurrencySchema.optional(),\n steps: z.array(StepSpecSchema).min(1),\n artifacts: JobArtifactsSchema,\n hooks: JobHooksSchema,\n if: z.string().optional(),\n timeoutMs: TimeoutSchema.optional(),\n retries: RetryPolicySchema.optional(),\n env: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string().min(1)).optional(),\n needs: z.array(z.string().min(1)).optional(),\n priority: z.enum(['high', 'normal', 'low']).optional(),\n})\n\nexport const WorkflowTriggerSchema = z\n .object({\n manual: z.boolean().optional(),\n push: z.boolean().optional(),\n webhook: z\n .union([\n z.boolean(),\n z.object({\n secret: z.string().min(1).optional(),\n path: z.string().min(1).optional(),\n headers: z.record(z.string(), z.string()).optional(),\n }),\n ])\n .optional(),\n schedule: z\n .object({\n cron: z.string().min(1),\n timezone: z.string().min(1).optional(),\n })\n .optional(),\n })\n .refine(\n (value) =>\n value.manual || value.push || !!value.webhook || !!value.schedule,\n {\n message: 'At least one trigger must be defined',\n path: ['manual'],\n },\n )\n\nexport const WorkflowInputFieldSchema = z.object({\n type: z.enum(['string', 'number', 'boolean']),\n description: z.string().optional(),\n required: z.boolean().optional(),\n default: z.unknown().optional(),\n})\n\nexport type WorkflowInputField = z.infer<typeof WorkflowInputFieldSchema>\n\nexport const WorkflowSpecSchema = z\n .object({\n name: z.string().min(1),\n version: z.string().min(1),\n description: z.string().optional(),\n target: ExecutionTargetSchema.optional(),\n isolation: IsolationProfileSchema.optional(),\n on: WorkflowTriggerSchema,\n inputs: z.record(z.string(), WorkflowInputFieldSchema).optional(),\n env: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string().min(1)).optional(),\n jobs: z.record(z.string().min(1), JobSpecSchema),\n // Presentation layer\n phases: z.record(z.string().min(1), PhaseSchema).optional(),\n })\n .refine(\n (value) =>\n Object.keys(value.jobs).length > 0 &&\n Object.keys(value.jobs).every((key) => key.trim().length > 0),\n {\n message: 'At least one job must be defined with a non-empty id',\n path: ['jobs'],\n },\n )\n\nexport const StepRunErrorSchema = z.object({\n message: z.string(),\n code: z.string().optional(),\n stack: z.string().optional(),\n timestamp: z.string().optional(),\n details: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const StepRunSchema = z.object({\n id: z.string().min(1),\n runId: z.string().min(1),\n jobId: z.string().min(1),\n name: z.string().min(1),\n index: z.number().int().nonnegative(),\n status: StepStateSchema,\n queuedAt: z.string().datetime(),\n startedAt: z.string().datetime().optional(),\n finishedAt: z.string().datetime().optional(),\n durationMs: z.number().int().nonnegative().optional(),\n attempt: z.number().int().nonnegative().default(0),\n timeoutMs: TimeoutSchema.optional(),\n continueOnError: z.boolean().optional(),\n error: StepRunErrorSchema.optional(),\n outputs: z.record(z.string(), z.unknown()).optional(),\n skipReason: z.string().optional(),\n spec: StepSpecSchema,\n /**\n * Resolved (interpolated) inputs for this execution.\n * Stored separately from spec.with so original ${{ }} templates are preserved\n * and future re-executions (gate restartFrom) can re-interpolate correctly.\n */\n resolvedInputs: z.record(z.string(), z.unknown()).optional(),\n /**\n * Step-level execution metadata (e.g. gate iteration counter).\n * Cleared on step reset except metadata.iterations which persists across restarts.\n */\n metadata: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const JobRunSchema = z.object({\n id: z.string().min(1),\n runId: z.string().min(1),\n tenantId: TenantIdSchema, // ← Inherited from run for isolation\n jobName: z.string().min(1),\n status: JobStateSchema,\n runsOn: z.enum(['local', 'sandbox']),\n queuedAt: z.string().datetime(),\n startedAt: z.string().datetime().optional(),\n finishedAt: z.string().datetime().optional(),\n durationMs: z.number().int().nonnegative().optional(),\n attempt: z.number().int().nonnegative().default(0),\n concurrency: JobConcurrencySchema.optional(),\n retries: RetryPolicySchema.optional(),\n timeoutMs: TimeoutSchema.optional(),\n target: ExecutionTargetSchema.optional(),\n isolation: IsolationProfileSchema.optional(),\n artifacts: JobArtifactsSchema,\n error: StepRunErrorSchema.optional(),\n env: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string().min(1)).optional(),\n needs: z.array(z.string().min(1)).optional(),\n pendingDependencies: z.array(z.string().min(1)).optional(),\n blocked: z.boolean().optional(),\n priority: z.enum(['high', 'normal', 'low']).optional(),\n if: z.string().optional(),\n steps: z.array(StepRunSchema),\n})\n\nexport const RunTriggerSchema = z.object({\n type: z.enum(['manual', 'webhook', 'push', 'schedule', 'workflow']),\n actor: z.string().optional(),\n payload: z.record(z.string(), z.unknown()).optional(),\n parentRunId: z.string().optional(),\n parentJobId: z.string().optional(),\n parentStepId: z.string().optional(),\n invokedByWorkflowId: z.string().optional(),\n})\n\nexport const RunMetadataSchema = z.object({\n idempotencyKey: IdempotencyKeySchema.optional(),\n concurrencyGroup: ConcurrencyGroupSchema.optional(),\n target: ExecutionTargetSchema.optional(),\n isolation: IsolationProfileSchema.optional(),\n workflowId: z.string().optional(),\n workflowDepth: z.number().int().nonnegative().optional(),\n parentRunId: z.string().optional(),\n parentJobId: z.string().optional(),\n parentStepId: z.string().optional(),\n})\n\nexport const ResultErrorSchema = z.object({\n message: z.string().min(1),\n code: z.string().optional(),\n details: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const ResultMetricsSchema = z.object({\n timeMs: z.number().int().nonnegative().optional(),\n cpuMs: z.number().int().nonnegative().optional(),\n memMb: z.number().nonnegative().optional(),\n jobsTotal: z.number().int().nonnegative().optional(),\n jobsSucceeded: z.number().int().nonnegative().optional(),\n jobsFailed: z.number().int().nonnegative().optional(),\n jobsCancelled: z.number().int().nonnegative().optional(),\n stepsTotal: z.number().int().nonnegative().optional(),\n stepsFailed: z.number().int().nonnegative().optional(),\n stepsCancelled: z.number().int().nonnegative().optional(),\n})\n\nexport const ExecutionResultSchema = z.object({\n status: RunStateSchema,\n summary: z.string().optional(),\n startedAt: z.string().datetime().optional(),\n completedAt: z.string().datetime().optional(),\n metrics: ResultMetricsSchema.optional(),\n details: z.record(z.string(), z.unknown()).optional(),\n outputs: z.record(z.string(), z.unknown()).optional(),\n error: ResultErrorSchema.optional(),\n})\n\nexport const RunSchema = z.object({\n id: z.string().min(1),\n tenantId: TenantIdSchema, // ← Multi-tenancy support\n name: z.string().min(1),\n version: z.string().min(1),\n status: RunStateSchema,\n createdAt: z.string().datetime(),\n queuedAt: z.string().datetime(),\n startedAt: z.string().datetime().optional(),\n finishedAt: z.string().datetime().optional(),\n durationMs: z.number().int().nonnegative().optional(),\n trigger: RunTriggerSchema,\n env: z.record(z.string(), z.string()).optional(),\n inputs: z.record(z.string(), z.unknown()).optional(),\n secrets: z.array(z.string().min(1)).optional(),\n jobs: z.array(JobRunSchema),\n artifacts: z.array(z.string()).optional(),\n metadata: RunMetadataSchema.optional(),\n result: ExecutionResultSchema.optional(),\n})\n\n","import type { ExpressionContext, WorkflowInvocationSpec } from './types'\n\n/**\n * Parse workflow: uses string into WorkflowInvocationSpec\n * @param uses - The uses string (e.g., \"workflow:workspace:ai-ci\")\n * @returns WorkflowInvocationSpec or null if not a workflow uses\n */\nexport function parseWorkflowUses(uses: string): WorkflowInvocationSpec | null {\n if (!uses.startsWith('workflow:')) {\n return null\n }\n\n const workflowId = uses.slice('workflow:'.length)\n if (!workflowId) {\n return null\n }\n\n return {\n type: 'workflow',\n workflowId,\n mode: 'wait', // default\n inheritEnv: true, // default\n }\n}\n\n/**\n * Extract all ${{ expression }} patterns from a string\n */\nexport function extractExpressions(str: string): string[] {\n const pattern = /\\$\\{\\{\\s*([^}]+)\\s*\\}\\}/g\n const matches: string[] = []\n let match: RegExpExecArray | null\n\n while ((match = pattern.exec(str)) !== null) {\n matches.push(match[1]!.trim())\n }\n\n return matches\n}\n\n/**\n * Evaluate a boolean expression\n * Supported operators: ==, !=, &&, ||, !\n * Supported functions: contains(), startsWith(), endsWith()\n * Supported contexts: env.*, trigger.*, steps.*.outputs.*\n */\nexport function evaluateExpression(\n expr: string,\n context: ExpressionContext,\n): boolean {\n const trimmed = expr.trim()\n\n // Handle logical operators. || has lower precedence than && — split on ||\n // first so && operands are evaluated as a unit, not the other way around.\n // Use splitOnOperator so quoted strings (e.g. \"a && b\") are not split.\n const orParts = splitOnOperator(trimmed, '||')\n if (orParts.length > 1) {\n return orParts.some((part) => evaluateExpression(part.trim(), context))\n }\n\n const andParts = splitOnOperator(trimmed, '&&')\n if (andParts.length > 1) {\n return andParts.every((part) => evaluateExpression(part.trim(), context))\n }\n\n // Handle negation\n if (trimmed.startsWith('!')) {\n return !evaluateExpression(trimmed.slice(1).trim(), context)\n }\n\n // Handle parentheses (simple case)\n if (trimmed.startsWith('(') && trimmed.endsWith(')')) {\n return evaluateExpression(trimmed.slice(1, -1).trim(), context)\n }\n\n // Handle boolean literals (before equality checks)\n if (trimmed === 'true') {return true}\n if (trimmed === 'false') {return false}\n\n // Handle equality/inequality\n if (trimmed.includes('==')) {\n const parts = trimmed.split('==').map((s) => s.trim())\n if (parts.length === 2 && parts[0] && parts[1]) {\n const left = resolveValue(parts[0], context)\n const right = resolveValue(parts[1], context)\n // For numeric comparison, try numeric first\n if (typeof left === 'number' && typeof right === 'number') {\n return left === right\n }\n // Otherwise coerce to string\n return coerceToString(left) === coerceToString(right)\n }\n }\n\n if (trimmed.includes('!=')) {\n const parts = trimmed.split('!=').map((s) => s.trim())\n if (parts.length === 2 && parts[0] && parts[1]) {\n const left = resolveValue(parts[0], context)\n const right = resolveValue(parts[1], context)\n // For numeric comparison, try numeric first\n if (typeof left === 'number' && typeof right === 'number') {\n return left !== right\n }\n // Otherwise coerce to string\n return coerceToString(left) !== coerceToString(right)\n }\n }\n\n // Handle functions\n if (trimmed.includes('contains(')) {\n const match = trimmed.match(/contains\\(([^,]+),\\s*([^)]+)\\)/)\n if (match && match[1] && match[2]) {\n const value = resolveValue(match[1].trim(), context)\n const search = match[2].trim().replace(/^[\"']|[\"']$/g, '')\n return String(value).includes(search)\n }\n }\n\n if (trimmed.includes('startsWith(')) {\n const match = trimmed.match(/startsWith\\(([^,]+),\\s*([^)]+)\\)/)\n if (match && match[1] && match[2]) {\n const value = resolveValue(match[1].trim(), context)\n const prefix = match[2].trim().replace(/^[\"']|[\"']$/g, '')\n return String(value).startsWith(prefix)\n }\n }\n\n if (trimmed.includes('endsWith(')) {\n const match = trimmed.match(/endsWith\\(([^,]+),\\s*([^)]+)\\)/)\n if (match && match[1] && match[2]) {\n const value = resolveValue(match[1].trim(), context)\n const suffix = match[2].trim().replace(/^[\"']|[\"']$/g, '')\n return String(value).endsWith(suffix)\n }\n }\n\n // Fallback: treat as truthy/falsy\n const value = resolveValue(trimmed, context)\n return Boolean(value)\n}\n\n/**\n * Resolve a value from context (e.g., \"env.VAR\", \"steps.build.outputs.version\")\n */\nexport function resolveValue(path: string, context: ExpressionContext): unknown {\n // Remove quotes\n const cleanPath = path.replace(/^[\"']|[\"']$/g, '')\n\n // env.VAR\n if (cleanPath.startsWith('env.')) {\n const key = cleanPath.slice('env.'.length)\n return context.env[key] ?? ''\n }\n\n // trigger.type, trigger.actor, trigger.payload.*\n if (cleanPath.startsWith('trigger.')) {\n const key = cleanPath.slice('trigger.'.length)\n if (key === 'type') {\n return context.trigger.type\n }\n if (key === 'actor') {\n return context.trigger.actor ?? ''\n }\n if (key.startsWith('payload.')) {\n const payloadKey = key.slice('payload.'.length)\n return context.trigger.payload?.[payloadKey] ?? ''\n }\n return ''\n }\n\n // steps.<id>.outputs.<key>[.<nested>...]\n if (cleanPath.startsWith('steps.')) {\n const rest = cleanPath.slice('steps.'.length)\n const match = rest.match(/^([^.]+)\\.outputs\\.(.+)$/)\n if (match) {\n const stepId = match[1]!\n const outputKey = match[2]!\n const outputs = context.steps[stepId]?.outputs\n if (outputs === undefined) {return ''}\n // Navigate nested path (e.g. \"result.passed\" → outputs.result.passed)\n const parts = outputKey.split('.')\n let value: unknown = outputs\n for (const part of parts) {\n if (value === undefined || value === null || typeof value !== 'object') {return ''}\n value = (value as Record<string, unknown>)[part]\n }\n return value !== undefined ? value : ''\n }\n return ''\n }\n\n // inputs.*\n if (cleanPath.startsWith('inputs.') && context.inputs) {\n const key = cleanPath.slice('inputs.'.length)\n return context.inputs[key] ?? ''\n }\n\n // matrix.* (for future)\n if (cleanPath.startsWith('matrix.') && context.matrix) {\n const key = cleanPath.slice('matrix.'.length)\n return context.matrix[key] ?? ''\n }\n\n // Try to parse as number\n const num = Number(cleanPath)\n if (!isNaN(num) && isFinite(num)) {\n return num\n }\n\n // Try to parse as boolean\n if (cleanPath === 'true') {return true}\n if (cleanPath === 'false') {return false}\n\n // Literal value\n return cleanPath\n}\n\n/**\n * Coerce value to string for comparison\n */\nexport function coerceToString(value: unknown): string {\n if (value === null || value === undefined) {\n return ''\n }\n if (typeof value === 'boolean') {\n return value ? 'true' : 'false'\n }\n if (typeof value === 'object') {\n return JSON.stringify(value)\n }\n return String(value)\n}\n\n/**\n * Interpolate string with context values\n * Example: \"Version: ${{ steps.build.outputs.version }}\"\n */\nexport function interpolateString(\n str: string,\n context: ExpressionContext,\n): string {\n const expressions = extractExpressions(str)\n let result = str\n\n for (const expr of expressions) {\n const value = resolveValueWithFallback(expr, context)\n const replacement = coerceToString(value)\n const pattern = new RegExp(\n `\\\\$\\\\{\\\\{\\\\s*${escapeRegex(expr)}\\\\s*\\\\}\\\\}`,\n 'g',\n )\n result = result.replace(pattern, replacement)\n }\n\n return result\n}\n\n/**\n * Build a shell-safe command from a `run:` block by injecting ${{ expr }} values\n * as environment variables instead of raw string substitution.\n *\n * Raw substitution is unsafe because issue/PR titles may contain shell metacharacters\n * (backticks, $(), quotes). When content arrives via an env var, shell expansion of\n * the variable does NOT re-evaluate backticks or $() — they are literal characters.\n *\n * Single-quote context: when ${{ expr }} is wrapped in single quotes — the natural\n * pattern for `jq --argjson x '${{ inputs.payload }}'` — bash single-quote semantics\n * would prevent ${_WF_var} from expanding. The single-quoted wrapper is replaced with\n * a double-quoted reference instead:\n *\n * Example:\n * Input: `echo \"${{ steps.issue.outputs.title }}\"`\n * Output: command = `echo \"${_WF_steps_issue_outputs_title}\"`\n * shellEnvVars = { _WF_steps_issue_outputs_title: \"Add `kb cancel` command\" }\n *\n * Input: `jq --argjson payload '${{ inputs.invoice_payload }}' '{\"x\":1}'`\n * Output: command = `jq --argjson payload \"${_WF_inputs_invoice_payload}\" '{\"x\":1}'`\n * shellEnvVars = { _WF_inputs_invoice_payload: '{\"vendor\":\"Acme\",\"total\":250}' }\n */\nexport function buildShellSafeCommand(\n rawRun: string,\n context: ExpressionContext,\n): { command: string; shellEnvVars: Record<string, string> } {\n const expressions = extractExpressions(rawRun)\n const shellEnvVars: Record<string, string> = {}\n let command = rawRun\n\n for (const expr of expressions) {\n const value = resolveValueWithFallback(expr, context)\n const strValue = coerceToString(value)\n\n // Build a safe shell variable name from the expression.\n // Replace any non-alphanumeric/underscore chars with underscore.\n const safeName = '_WF_' + expr.trim().replace(/[^a-zA-Z0-9_]/g, '_')\n shellEnvVars[safeName] = strValue\n\n // Replace '${{ expr }}' (single-quote wrapped) with \"${_WF_var}\" (double-quoted).\n // Single quotes in bash prevent ${...} expansion; switching to double quotes fixes it.\n const sqPattern = new RegExp(\n `'\\\\$\\\\{\\\\{\\\\s*${escapeRegex(expr)}\\\\s*\\\\}\\\\}'`,\n 'g',\n )\n command = command.replace(sqPattern, `\"\\${${safeName}}\"`)\n\n // Replace remaining unquoted/double-quoted occurrences with ${_WF_var}.\n const pattern = new RegExp(`\\\\$\\\\{\\\\{\\\\s*${escapeRegex(expr)}\\\\s*\\\\}\\\\}`, 'g')\n command = command.replace(pattern, `\\${${safeName}}`)\n }\n\n return { command, shellEnvVars }\n}\n\n/**\n * Escape special regex characters\n */\nfunction escapeRegex(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n}\n\n/**\n * Resolve a value expression with || (logical OR / default value) support.\n * Returns the first truthy value, or the last value if all are falsy.\n * Example: \"trigger.payload.mode || 'heuristic'\" → value of mode, or 'heuristic' if empty/undefined\n */\nfunction resolveValueWithFallback(expr: string, context: ExpressionContext): unknown {\n // Split on || (but not inside quotes)\n const parts = splitOnOperator(expr, '||')\n if (parts.length === 1) {\n return resolveValue(parts[0]!.trim(), context)\n }\n\n // Return first truthy value, or last value\n for (let i = 0; i < parts.length; i++) {\n const value = resolveValue(parts[i]!.trim(), context)\n // Truthy check: non-empty string, non-zero number, non-false boolean, non-null object\n if (isTruthy(value)) {\n return value\n }\n // Last part — return even if falsy\n if (i === parts.length - 1) {\n return value\n }\n }\n\n return ''\n}\n\n/**\n * Split expression string on an operator, respecting quoted strings.\n * Example: \"a || 'hello || world'\" → [\"a \", \" 'hello || world'\"]\n */\nfunction splitOnOperator(expr: string, op: string): string[] {\n const parts: string[] = []\n let current = ''\n let inSingle = false\n let inDouble = false\n let i = 0\n\n while (i < expr.length) {\n const ch = expr[i]!\n\n if (ch === \"'\" && !inDouble) {\n inSingle = !inSingle\n current += ch\n i++\n } else if (ch === '\"' && !inSingle) {\n inDouble = !inDouble\n current += ch\n i++\n } else if (!inSingle && !inDouble && expr.slice(i, i + op.length) === op) {\n parts.push(current)\n current = ''\n i += op.length\n } else {\n current += ch\n i++\n }\n }\n\n parts.push(current)\n return parts\n}\n\n/**\n * Check if a resolved value is \"truthy\" for || operator purposes.\n * Empty string, null, undefined, false, 0 are falsy.\n */\nfunction isTruthy(value: unknown): boolean {\n if (value === '' || value === null || value === undefined || value === false || value === 0) {\n return false\n }\n return true\n}\n\n/**\n * Resolve expression preserving types.\n * If the string is exactly one `${{ expr }}` (no surrounding text),\n * returns the raw value (object, number, boolean, etc.).\n * Supports || operator for default values: `${{ a || 'default' }}`\n * Otherwise delegates to interpolateString (returns string).\n */\nexport function resolveExpression(\n str: string,\n context: ExpressionContext,\n): unknown {\n const trimmed = str.trim()\n\n // Check if the entire string is a single expression\n const singleExprMatch = trimmed.match(/^\\$\\{\\{\\s*([^}]+)\\s*\\}\\}$/)\n if (singleExprMatch && singleExprMatch[1]) {\n return resolveValueWithFallback(singleExprMatch[1].trim(), context)\n }\n\n // Multiple expressions or text around them — interpolate as string\n if (trimmed.includes('${{')) {\n return interpolateString(trimmed, context)\n }\n\n // No expressions — return as-is\n return str\n}\n\n/**\n * Recursively interpolate all string values in an object/array.\n * - Strings: resolved via resolveExpression (type-preserving)\n * - Arrays: each element interpolated recursively\n * - Objects: each value interpolated recursively\n * - Primitives (number, boolean, null): returned as-is\n */\nexport function interpolateObject(\n obj: Record<string, unknown>,\n context: ExpressionContext,\n): Record<string, unknown> {\n const result: Record<string, unknown> = {}\n\n for (const [key, value] of Object.entries(obj)) {\n result[key] = interpolateValue(value, context)\n }\n\n return result\n}\n\n/**\n * Interpolate a single value recursively\n */\nfunction interpolateValue(value: unknown, context: ExpressionContext): unknown {\n if (typeof value === 'string') {\n return resolveExpression(value, context)\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => interpolateValue(item, context))\n }\n\n if (value !== null && typeof value === 'object') {\n return interpolateObject(value as Record<string, unknown>, context)\n }\n\n // number, boolean, null, undefined — pass through\n return value\n}\n\n","/**\n * Flag definitions for workflow CLI commands\n * Uses defineFlags from @kb-labs/sdk for type safety\n */\n\nimport { defineFlags } from '@kb-labs/sdk';\n\n/**\n * Flags for workflow:status command\n */\nexport const statusFlags = defineFlags({\n json: {\n type: 'boolean',\n description: 'Output result as JSON',\n default: false,\n },\n 'job-id': {\n type: 'string',\n description: 'Job ID to get status for',\n },\n});\n\n/**\n * Flags for workflow:logs command\n */\nexport const logsFlags = defineFlags({\n json: {\n type: 'boolean',\n description: 'Output result as JSON',\n default: false,\n },\n 'job-id': {\n type: 'string',\n description: 'Job ID to get logs for',\n },\n 'run-id': {\n type: 'string',\n description: 'Run ID to get logs for (all steps)',\n },\n follow: {\n type: 'boolean',\n description: 'Follow log output (stream new logs)',\n default: false,\n },\n});\n\n/**\n * Flags for workflow:metrics command\n */\nexport const metricsFlags = defineFlags({\n json: {\n type: 'boolean',\n description: 'Output result as JSON',\n default: false,\n },\n});\n\n/**\n * Flags for workflow:health command\n */\nexport const healthFlags = defineFlags({\n json: {\n type: 'boolean',\n description: 'Output result as JSON',\n default: false,\n },\n});\n\n/**\n * Flags for workflow:list command\n */\nexport const listFlags = defineFlags({\n json: {\n type: 'boolean',\n description: 'Output result as JSON',\n default: false,\n },\n status: {\n type: 'string',\n description: 'Filter by status (running, completed, failed)',\n },\n type: {\n type: 'string',\n description: 'Filter by type: \"runs\" (active executions), \"cron\" (scheduled jobs)',\n },\n});\n\n/**\n * Flags for workflow:run command\n */\nexport const runFlags = defineFlags({\n json: {\n type: 'boolean',\n description: 'Output result as JSON',\n default: false,\n },\n handler: {\n type: 'string',\n description: 'Plugin handler to run (e.g., \"mind:rag-query\")',\n },\n input: {\n type: 'string',\n description: 'JSON string of input parameters',\n },\n priority: {\n type: 'number',\n description: 'Job priority (1-10, default: 5)',\n },\n wait: {\n type: 'boolean',\n description: 'Wait for job completion',\n default: false,\n },\n});\n\n// Type exports for use in command handlers\nexport type StatusFlags = typeof statusFlags.infer;\nexport type LogsFlags = typeof logsFlags.infer;\nexport type MetricsFlags = typeof metricsFlags.infer;\nexport type HealthFlags = typeof healthFlags.infer;\nexport type ListFlags = typeof listFlags.infer;\nexport type RunFlags = typeof runFlags.infer;\n","import { z } from 'zod'\nimport { JOB_PRIORITIES } from '@kb-labs/workflow-constants'\n\ntype NonEmptyTuple<T> = [T, ...T[]]\nconst JOB_PRIORITY_VALUES = JOB_PRIORITIES as unknown as NonEmptyTuple<'high' | 'normal' | 'low'>\n\n/**\n * Cron schedule expression (standard cron format)\n * Examples:\n * - \"0 * * * *\" - every hour\n * - \"0 0 * * *\" - daily at midnight\n * - \"0/15 * * * *\" - every 15 minutes\n */\nexport const CronScheduleSchema = z\n .string()\n .regex(\n /^(\\*|([0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9])|\\*\\/([0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9])) (\\*|([0-9]|1[0-9]|2[0-3])|\\*\\/([0-9]|1[0-9]|2[0-3])) (\\*|([1-9]|1[0-9]|2[0-9]|3[0-1])|\\*\\/([1-9]|1[0-9]|2[0-9]|3[0-1])) (\\*|([1-9]|1[0-2])|\\*\\/([1-9]|1[0-2])) (\\*|[0-6]|\\*\\/[0-6])$/,\n 'Invalid cron expression'\n )\n .describe('Cron schedule expression')\n\n/**\n * Plugin manifest cron job definition\n * Used in plugin manifest.ts to declare scheduled jobs\n */\nexport const PluginCronJobSchema = z.object({\n id: z.string().min(1).max(64).describe('Unique cron job identifier'),\n schedule: CronScheduleSchema,\n handler: z.string().min(1).describe('Plugin handler (e.g., \"mind:rag-index\")'),\n input: z.record(z.string(), z.unknown()).optional().describe('Input parameters for handler'),\n priority: z.enum(JOB_PRIORITY_VALUES).default('normal'),\n enabled: z.boolean().default(true).describe('Whether cron job is enabled'),\n timezone: z.string().optional().describe('Timezone for schedule (default: UTC)'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata'),\n})\n\nexport type PluginCronJob = z.infer<typeof PluginCronJobSchema>\n\n/**\n * User-defined cron job from .kb/jobs/*.yml\n * Full workflow spec with cron trigger\n */\nexport const UserCronJobSchema = z.object({\n name: z.string().min(1).describe('Human-readable job name'),\n schedule: CronScheduleSchema,\n autoStart: z.boolean().default(true).describe('Auto-start on daemon boot'),\n priority: z.enum(JOB_PRIORITY_VALUES).default('normal'),\n enabled: z.boolean().default(true).describe('Whether cron job is enabled'),\n timezone: z.string().optional().describe('Timezone for schedule (default: UTC)'),\n env: z.record(z.string(), z.string()).optional().describe('Environment variables'),\n jobs: z.record(z.string(), z.any()).describe('Workflow jobs specification'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata'),\n})\n\nexport type UserCronJob = z.infer<typeof UserCronJobSchema>\n\n/**\n * Registered cron job (internal representation)\n * Combines plugin and user cron jobs\n */\nexport interface RegisteredCronJob {\n id: string\n source: 'plugin' | 'user'\n schedule: string\n timezone?: string\n priority: 'high' | 'normal' | 'low'\n enabled: boolean\n\n // For plugin cron jobs\n handler?: string\n input?: Record<string, unknown>\n\n // For user cron jobs\n workflowSpec?: {\n name: string\n jobs: Record<string, any>\n env?: Record<string, string>\n }\n\n metadata?: Record<string, unknown>\n}\n\n/**\n * Cron job execution history entry\n */\nexport const CronExecutionSchema = z.object({\n cronJobId: z.string(),\n runId: z.string().describe('Workflow run ID'),\n scheduledAt: z.string().datetime().describe('When execution was scheduled'),\n startedAt: z.string().datetime().optional().describe('When execution started'),\n finishedAt: z.string().datetime().optional().describe('When execution finished'),\n status: z.enum(['pending', 'running', 'success', 'failed']),\n error: z\n .object({\n message: z.string(),\n stack: z.string().optional(),\n })\n .optional(),\n})\n\nexport type CronExecution = z.infer<typeof CronExecutionSchema>\n","/**\n * @module @kb-labs/workflow-contracts/rest-api\n * REST API types for Workflow Service HTTP endpoints\n */\n\nimport { z } from 'zod'\nimport type { ExecutionTarget, IsolationProfile } from './types'\nimport type { RunState } from '@kb-labs/workflow-constants'\n\n/**\n * Job submission request (POST /api/jobs)\n */\nexport interface JobSubmissionRequest {\n /** Job type (pluginId:jobId format) */\n type: string;\n /** Job payload (passed to handler) */\n payload?: Record<string, unknown>;\n /** Priority (1-10, default 5) */\n priority?: number;\n /** Max retry attempts (default 3) */\n maxRetries?: number;\n /** Timeout in milliseconds */\n timeout?: number;\n /** Scheduled run time (ISO string or Date) */\n runAt?: string | Date;\n /** Idempotency key (prevents duplicate submissions) */\n idempotencyKey?: string;\n}\n\n/**\n * Job submission response (POST /api/jobs)\n */\nexport interface JobSubmissionResponse {\n /** Generated job ID */\n jobId: string;\n}\n\n/**\n * Job status info (GET /api/jobs/:id)\n */\nexport interface JobStatusInfo {\n /** Job ID */\n id: string;\n /** Job type */\n type: string;\n /** Current status */\n status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';\n /** Tenant ID */\n tenantId?: string;\n /** Priority */\n priority?: number;\n /** Created timestamp */\n createdAt?: Date | string;\n /** Started timestamp */\n startedAt?: Date | string;\n /** Finished timestamp */\n finishedAt?: Date | string;\n /** Retry attempt number */\n attempt?: number;\n /** Max retries */\n maxRetries?: number;\n /** Result (if completed) */\n result?: unknown;\n /** Error (if failed) */\n error?: string;\n /** Progress (0-100) */\n progress?: number;\n /** Progress message */\n progressMessage?: string;\n}\n\n/**\n * Job list filter (GET /api/jobs)\n */\nexport interface JobListFilter {\n /** Filter by job type pattern */\n type?: string;\n /** Filter by status */\n status?: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';\n /** Pagination limit */\n limit?: number;\n /** Pagination offset */\n offset?: number;\n}\n\n/**\n * Job list response (GET /api/jobs)\n */\nexport interface JobListResponse {\n /** List of jobs */\n jobs: JobStatusInfo[];\n}\n\n/**\n * Job cancel response (POST /api/jobs/:id/cancel)\n */\nexport interface JobCancelResponse {\n /** True if job was cancelled */\n cancelled: boolean;\n}\n\n/**\n * Cron job registration request (POST /api/cron)\n */\nexport interface CronRegistrationRequest {\n /** Cron job ID (unique per plugin) */\n id: string;\n /** Cron schedule expression */\n schedule: string;\n /** Job type to execute (pluginId:jobId) */\n jobType: string;\n /** Job payload */\n payload?: unknown;\n /** Timezone (default: UTC) */\n timezone?: string;\n /** Enabled flag (default: true) */\n enabled?: boolean;\n}\n\n/**\n * Cron job info (GET /api/cron)\n */\nexport interface CronInfo {\n /** Cron job ID */\n id: string;\n /** Cron schedule expression */\n schedule: string;\n /** Job type */\n jobType: string;\n /** Timezone */\n timezone?: string;\n /** Enabled flag */\n enabled: boolean;\n /** Last run time */\n lastRun?: Date | string;\n /** Next run time */\n nextRun?: Date | string;\n /** Plugin ID (if plugin-provided) */\n pluginId?: string;\n}\n\n/**\n * Cron list response (GET /api/cron)\n */\nexport interface CronListResponse {\n /** List of cron jobs */\n crons: CronInfo[];\n}\n\n/**\n * Workflow definition info (GET /api/v1/workflows)\n */\nexport interface WorkflowInfo {\n /** Workflow ID (e.g., \"release-manager/create-release\") */\n id: string;\n /** Human-readable name */\n name: string;\n /** Description */\n description?: string;\n /** Source type */\n source: 'manifest' | 'standalone' | 'plugin';\n /** Plugin ID (for manifest workflows) */\n pluginId?: string;\n /** Status */\n status?: 'active' | 'inactive';\n /** Tags */\n tags?: string[];\n /** Declared input parameters schema */\n inputs?: Record<string, { type: 'string' | 'number' | 'boolean'; description?: string; required?: boolean; default?: unknown }>;\n /** Semantic version from workflow spec */\n version?: string;\n /** ISO timestamp of last modification */\n updatedAt?: string;\n}\n\n/**\n * Workflow list response (GET /api/v1/workflows)\n */\nexport interface WorkflowListResponse {\n /** List of workflows */\n workflows: WorkflowInfo[];\n}\n\n/**\n * Workflow run request (POST /api/v1/workflows/:id/run)\n */\nexport interface WorkflowRunRequest {\n /**\n * Workflow input values (preferred field name — matches YAML `inputs:` block).\n * `input` (singular) is accepted as a legacy alias.\n */\n inputs?: Record<string, unknown>;\n /** @deprecated Use `inputs` instead. Kept for backward compatibility. */\n input?: unknown;\n /** Execution target override for this run */\n target?: ExecutionTarget;\n /** Isolation profile override for this run */\n isolation?: IsolationProfile;\n /** Trigger metadata */\n trigger?: {\n type: 'manual' | 'api' | 'cron';\n user?: string;\n };\n}\n\n// ============================================================================\n// Zod Schemas\n// ============================================================================\n\n/**\n * Job status enum schema\n */\nexport const JobStatusSchema = z.enum([\n 'pending',\n 'running',\n 'completed',\n 'failed',\n 'cancelled',\n])\n\n/**\n * Job status info schema (GET /api/v1/jobs/:jobId)\n */\nexport const JobStatusInfoSchema = z.object({\n id: z.string(),\n type: z.string(),\n status: JobStatusSchema,\n tenantId: z.string().optional(),\n priority: z.number().optional(),\n createdAt: z.union([z.string(), z.date()]).optional(),\n startedAt: z.union([z.string(), z.date()]).optional(),\n finishedAt: z.union([z.string(), z.date()]).optional(),\n attempt: z.number().optional(),\n maxRetries: z.number().optional(),\n result: z.unknown().optional(),\n error: z.string().optional(),\n progress: z.number().min(0).max(100).optional(),\n progressMessage: z.string().optional(),\n})\n\n/**\n * Job list response schema (GET /api/v1/jobs)\n */\nexport const JobListResponseSchema = z.object({\n jobs: z.array(JobStatusInfoSchema),\n})\n\n/**\n * Job cancel response schema (POST /api/v1/jobs/:jobId/cancel)\n */\nexport const JobCancelResponseSchema = z.object({\n cancelled: z.boolean(),\n})\n\n/**\n * Cron info schema (GET /api/v1/cron)\n */\nexport const CronInfoSchema = z.object({\n id: z.string(),\n schedule: z.string(),\n jobType: z.string(),\n timezone: z.string().optional(),\n enabled: z.boolean(),\n lastRun: z.union([z.string(), z.date()]).optional(),\n nextRun: z.union([z.string(), z.date()]).optional(),\n pluginId: z.string().optional(),\n})\n\n/**\n * Cron list response schema (GET /api/v1/cron)\n */\nexport const CronListResponseSchema = z.object({\n crons: z.array(CronInfoSchema),\n})\n\n/**\n * Workflow info schema (GET /api/v1/workflows)\n */\nexport const WorkflowInfoSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional(),\n source: z.enum(['manifest', 'standalone', 'plugin']),\n pluginId: z.string().optional(),\n status: z.enum(['active', 'inactive']).optional(),\n tags: z.array(z.string()).optional(),\n version: z.string().optional(),\n updatedAt: z.string().optional(),\n})\n\n/**\n * Workflow list response schema (GET /api/v1/workflows)\n */\nexport const WorkflowListResponseSchema = z.object({\n workflows: z.array(WorkflowInfoSchema),\n})\n\n/**\n * Workflow run request schema (POST /api/v1/workflows/:id/run)\n */\nexport const WorkflowRunRequestSchema = z.object({\n inputs: z.record(z.unknown()).optional(),\n input: z.unknown().optional(),\n target: z.object({\n environmentId: z.string().min(1).optional(),\n workspaceId: z.string().min(1).optional(),\n namespace: z.string().min(1).optional(),\n workdir: z.string().min(1).optional(),\n }).optional(),\n isolation: z.enum(['strict', 'balanced', 'relaxed']).optional(),\n trigger: z.object({\n type: z.enum(['manual', 'api', 'cron']),\n user: z.string().optional(),\n }).optional(),\n})\n\n/**\n * Workflow rerun request (POST /api/v1/runs/:runId/rerun)\n */\nexport interface WorkflowRerunRequest {\n /** When true, only jobs with status failed or interrupted are requeued */\n failedOnly?: boolean;\n}\n\nexport const WorkflowRerunRequestSchema = z.object({\n failedOnly: z.boolean().optional(),\n})\n\n/**\n * Workflow restart request (POST /api/v1/runs/:runId/restart)\n * Replays a run from a snapshot, optionally resuming from a specific step.\n */\nexport interface WorkflowRestartRequest {\n /** Step ID to restart from; all preceding steps inherit their stored outputs */\n fromStepId?: string;\n /** Optional env overrides merged on top of the snapshot env */\n env?: Record<string, string>;\n}\n\nexport const WorkflowRestartRequestSchema = z.object({\n fromStepId: z.string().optional(),\n env: z.record(z.string()).optional(),\n})\n\nexport interface WorkflowRestartResponse {\n runId: string;\n status: RunState;\n fromStepId?: string;\n}\n\n/**\n * Dashboard stats response (GET /api/v1/stats)\n */\nexport interface DashboardStatsResponse {\n /** Workflow statistics */\n workflows: {\n total: number;\n active: number;\n inactive: number;\n };\n /** Job statistics */\n jobs: {\n running: number;\n pending: number;\n completed: number;\n failed: number;\n };\n /** Cron statistics */\n crons: {\n total: number;\n enabled: number;\n disabled: number;\n };\n /** Active executions (currently running) */\n activeExecutions: Array<{\n id: string;\n type: string;\n workflowName?: string;\n status: 'running';\n progress?: number;\n progressMessage?: string;\n startedAt: string;\n durationMs?: number;\n }>;\n /** Recent activity (last 10 completed/failed jobs) */\n recentActivity: Array<{\n id: string;\n type: string;\n workflowName?: string;\n status: 'completed' | 'failed' | 'cancelled';\n finishedAt: string;\n durationMs?: number;\n error?: string;\n }>;\n}\n\n/**\n * Job logs response (GET /api/v1/jobs/:jobId/logs)\n */\nexport interface JobLogsResponse {\n /** Job ID */\n jobId: string;\n /** Log entries */\n logs: Array<{\n timestamp: string;\n level: 'info' | 'warn' | 'error' | 'debug';\n message: string;\n context?: Record<string, unknown>;\n }>;\n /** Total log count */\n total: number;\n /** Has more logs available */\n hasMore: boolean;\n}\n\n/**\n * Job execution step info (GET /api/v1/jobs/:jobId/steps)\n */\nexport interface JobStepInfo {\n /** Step name */\n name: string;\n /** Step handler */\n handler?: string;\n /** Step status */\n status: 'pending' | 'running' | 'completed' | 'failed' | 'skipped';\n /** Step progress (0-100) */\n progress?: number;\n /** Step start time */\n startedAt?: string;\n /** Step finish time */\n finishedAt?: string;\n /** Step duration in ms */\n durationMs?: number;\n /** Step error message */\n error?: string;\n /** Step result/output */\n output?: unknown;\n}\n\n/**\n * Job steps response (GET /api/v1/jobs/:jobId/steps)\n */\nexport interface JobStepsResponse {\n /** Job ID */\n jobId: string;\n /** Workflow name (if applicable) */\n workflowName?: string;\n /** Overall status */\n status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';\n /** Execution steps */\n steps: JobStepInfo[];\n /** Current step index */\n currentStep?: number;\n}\n\n/**\n * Workflow run history entry\n */\nexport interface WorkflowRunInfo {\n /** Run ID */\n id: string;\n /** Workflow ID */\n workflowId: string;\n /** Run status */\n status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';\n /** Trigger info */\n trigger: {\n type: 'manual' | 'api' | 'cron';\n user?: string;\n };\n /** Start time */\n startedAt: string;\n /** Finish time */\n finishedAt?: string;\n /** Duration in ms */\n durationMs?: number;\n /** Error message (if failed) */\n error?: string;\n}\n\n/**\n * Workflow run history response (GET /api/v1/workflows/:id/runs)\n */\nexport interface WorkflowRunHistoryResponse {\n /** Workflow ID */\n workflowId: string;\n /** Run history */\n runs: WorkflowRunInfo[];\n /** Total count */\n total: number;\n}\n\n// ============================================================================\n// Zod Schemas for New Endpoints\n// ============================================================================\n\n/**\n * Dashboard stats response schema\n */\nexport const DashboardStatsResponseSchema = z.object({\n workflows: z.object({\n total: z.number(),\n active: z.number(),\n inactive: z.number(),\n }),\n jobs: z.object({\n running: z.number(),\n pending: z.number(),\n completed: z.number(),\n failed: z.number(),\n }),\n crons: z.object({\n total: z.number(),\n enabled: z.number(),\n disabled: z.number(),\n }),\n activeExecutions: z.array(z.object({\n id: z.string(),\n type: z.string(),\n workflowName: z.string().optional(),\n status: z.literal('running'),\n progress: z.number().min(0).max(100).optional(),\n progressMessage: z.string().optional(),\n startedAt: z.string(),\n durationMs: z.number().optional(),\n })),\n recentActivity: z.array(z.object({\n id: z.string(),\n type: z.string(),\n workflowName: z.string().optional(),\n status: z.enum(['completed', 'failed', 'cancelled']),\n finishedAt: z.string(),\n durationMs: z.number().optional(),\n error: z.string().optional(),\n })),\n})\n\n/**\n * Job logs response schema\n */\nexport const JobLogsResponseSchema = z.object({\n jobId: z.string(),\n logs: z.array(z.object({\n timestamp: z.string(),\n level: z.enum(['info', 'warn', 'error', 'debug']),\n message: z.string(),\n context: z.record(z.unknown()).optional(),\n })),\n total: z.number(),\n hasMore: z.boolean(),\n})\n\n/**\n * Job step info schema\n */\nexport const JobStepInfoSchema = z.object({\n name: z.string(),\n handler: z.string().optional(),\n status: z.enum(['pending', 'running', 'completed', 'failed', 'skipped']),\n progress: z.number().min(0).max(100).optional(),\n startedAt: z.string().optional(),\n finishedAt: z.string().optional(),\n durationMs: z.number().optional(),\n error: z.string().optional(),\n output: z.unknown().optional(),\n})\n\n/**\n * Job steps response schema\n */\nexport const JobStepsResponseSchema = z.object({\n jobId: z.string(),\n workflowName: z.string().optional(),\n status: z.enum(['pending', 'running', 'completed', 'failed', 'cancelled']),\n steps: z.array(JobStepInfoSchema),\n currentStep: z.number().optional(),\n})\n\n/**\n * Workflow run info schema\n */\nexport const WorkflowRunInfoSchema = z.object({\n id: z.string(),\n workflowId: z.string(),\n status: z.enum(['pending', 'running', 'completed', 'failed', 'cancelled']),\n trigger: z.object({\n type: z.enum(['manual', 'api', 'cron']),\n user: z.string().optional(),\n }),\n startedAt: z.string(),\n finishedAt: z.string().optional(),\n durationMs: z.number().optional(),\n error: z.string().optional(),\n})\n\n/**\n * Workflow run history response schema\n */\nexport const WorkflowRunHistoryResponseSchema = z.object({\n workflowId: z.string(),\n runs: z.array(WorkflowRunInfoSchema),\n total: z.number(),\n})\n\n// ─── SSE event types ─────────────────────────────────────────────────────────\n\n/** Server-Sent Event for workflow run log streaming */\nexport interface WorkflowLogEvent {\n type: string\n runId: string\n jobId?: string\n stepId?: string\n payload?: Record<string, unknown>\n timestamp?: string\n}\n","/**\n * @module @kb-labs/workflow-contracts/routes\n * REST API route constants for workflow plugin\n */\n\n/**\n * Base path for all workflow REST endpoints\n */\nexport const WORKFLOW_BASE_PATH = '/plugins/workflow'\n\n/**\n * Workflow REST API routes\n */\nexport const WORKFLOW_ROUTES = {\n /** GET /stats - Dashboard statistics */\n STATS: '/stats',\n /** GET /workflows - List all workflow definitions */\n WORKFLOWS: '/workflows',\n /** GET /workflows/:id - Get workflow definition details */\n WORKFLOW_DETAIL: '/workflows/:id',\n /** POST /workflows/:id/run - Run a workflow */\n WORKFLOW_RUN: '/workflows/:id/run',\n /** GET /workflows/:id/runs - Get workflow run history */\n WORKFLOW_RUNS: '/workflows/:id/runs',\n /** POST /workflows/runs/:runId/cancel - Cancel a workflow run */\n WORKFLOW_RUN_CANCEL: '/workflows/runs/:runId/cancel',\n /** GET /runs - List all workflow runs */\n RUNS: '/runs',\n /** GET /runs/:runId - Get a specific workflow run */\n RUN_DETAIL: '/runs/:runId',\n /** GET /jobs - List all jobs */\n JOBS: '/jobs',\n /** GET /jobs/:jobId - Get job details */\n JOB_DETAIL: '/jobs/:jobId',\n /** GET /jobs/:jobId/logs - Get job logs */\n JOB_LOGS: '/jobs/:jobId/logs',\n /** GET /jobs/:jobId/steps - Get job execution steps */\n JOB_STEPS: '/jobs/:jobId/steps',\n /** POST /jobs/:jobId/cancel - Cancel a job */\n JOB_CANCEL: '/jobs/:jobId/cancel',\n /** GET /cron - List cron jobs */\n CRON: '/cron',\n /** GET /runs/:runId/pending-approvals - List pending approvals */\n PENDING_APPROVALS: '/runs/:runId/pending-approvals',\n /** POST /runs/:runId/approve - Resolve an approval */\n RESOLVE_APPROVAL: '/runs/:runId/approve',\n} as const\n"]}
1
+ {"version":3,"sources":["../src/schemas.ts","../src/expressions.ts","../src/flags.ts","../src/cron.ts","../src/rest-api.ts","../src/routes.ts"],"names":["value","z"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod'\nimport {\n RUN_STATES,\n JOB_STATES,\n STEP_STATES,\n type RunState,\n type JobState,\n type StepState,\n} from '@kb-labs/workflow-constants'\n\ntype NonEmptyTuple<T> = [T, ...T[]]\n\nconst RUN_STATE_VALUES = RUN_STATES as unknown as NonEmptyTuple<RunState>\nconst JOB_STATE_VALUES = JOB_STATES as unknown as NonEmptyTuple<JobState>\nconst STEP_STATE_VALUES = STEP_STATES as unknown as NonEmptyTuple<StepState>\n\nexport const RunStateSchema = z.enum(RUN_STATE_VALUES)\nexport const JobStateSchema = z.enum(JOB_STATE_VALUES)\nexport const StepStateSchema = z.enum(STEP_STATE_VALUES)\n\nexport const IdempotencyKeySchema = z.string().min(1).max(256)\nexport const ConcurrencyGroupSchema = z.string().min(1).max(256)\n\n/**\n * Tenant ID schema\n * Optional for backward compatibility with single-tenant deployments\n */\nexport const TenantIdSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^[a-zA-Z0-9_-]+$/)\n .describe('Tenant identifier')\n .optional()\n\nexport const RetryModeSchema = z.enum(['exp', 'lin'])\nexport const RetryFailureKindSchema = z.enum([\n 'command',\n 'network',\n 'timeout',\n 'rate_limit',\n 'server',\n 'infrastructure',\n])\n\nexport const RetryPolicySchema = z.object({\n max: z.number().int().nonnegative(),\n backoff: RetryModeSchema.default('exp'),\n initialIntervalMs: z.number().int().positive().default(1000),\n maxIntervalMs: z.number().int().positive().optional(),\n on: z.array(RetryFailureKindSchema).min(1).optional(),\n})\n\nexport const TimeoutSchema = z.number().int().positive().max(1000 * 60 * 60 * 24) // <= 24h\n\nexport const ExecutionTargetSchema = z.object({\n environmentId: z.string().min(1).optional(),\n workspaceId: z.string().min(1).optional(),\n namespace: z.string().min(1).optional(),\n workdir: z.string().min(1).optional(),\n})\n\nexport const IsolationProfileSchema = z.enum(['strict', 'balanced', 'relaxed'])\n\n// ─── Presentation layer schemas ──────────────────────────────────────────────\n// These fields are consumed by any client (Studio, CLI, API) to provide\n// human-readable context about workflow structure and step behavior.\n\n/** Workflow phase definition — semantic grouping of steps */\nexport const PhaseSchema = z.object({\n label: z.string().min(1),\n description: z.string().optional(),\n})\n\n/** Live progress binding — resolves a value from step outputs for display */\nexport const StepProgressSchema = z.object({\n source: z.string().min(1),\n format: z.string().min(1),\n})\n\n/** Step artifact declaration — what a step produces for review/display */\nexport const StepArtifactSchema = z.object({\n type: z.enum(['markdown', 'issues', 'table', 'diff', 'log', 'json', 'link']),\n source: z.string().min(1),\n label: z.string().min(1),\n digest: z.string().optional(),\n showInSummary: z.boolean().optional(),\n})\n\n/** Approval review item — references an artifact from a previous step */\nexport const ApprovalReviewItemSchema = z.object({\n artifact: z.string().min(1),\n editable: z.boolean().optional(),\n decisions: z.boolean().optional(),\n})\n\n// ─── Step spec ───────────────────────────────────────────────────────────────\n\nexport const StepSpecSchema = z\n .object({\n name: z.string().min(1),\n uses: z\n .union([\n z.literal('builtin:shell'),\n z.literal('builtin:approval'),\n z.literal('builtin:gate'),\n // CLI command form — the resolver matches the part after `command:`\n // verbatim against a manifest command path (e.g. `review run`,\n // `agent trace stats`), which contains spaces. Allow them here.\n z.string().regex(/^command:[a-zA-Z0-9@/_:+#. -]+$/),\n z.string().regex(/^(plugin:|workflow:)?[a-zA-Z0-9@/_:+#.-]+$/),\n ])\n .optional(),\n /** Shell command shorthand — equivalent to uses: builtin:shell with: { command: ... } */\n run: z.string().optional(),\n id: z.string().min(1).max(64).regex(/^[a-zA-Z0-9_-]+$/).optional(),\n if: z.string().optional(),\n with: z.record(z.string(), z.unknown()).optional(),\n env: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string().min(1)).optional(),\n timeoutMs: TimeoutSchema.optional(),\n retry: z.union([z.literal(false), RetryPolicySchema]).optional(),\n continueOnError: z.boolean().optional(),\n // Presentation layer\n summary: z.string().optional(),\n phase: z.string().optional(),\n progress: StepProgressSchema.optional(),\n artifacts: z.record(z.string().min(1), StepArtifactSchema).optional(),\n })\n .transform((step) => {\n // Normalize `run: cmd` → `uses: builtin:shell, with: { command: cmd }`\n if (step.run && !step.uses) {\n const { run, with: withField, ...rest } = step\n return {\n ...rest,\n uses: 'builtin:shell' as const,\n with: { ...withField, command: run },\n }\n }\n return step\n })\n\nexport const JobConcurrencySchema = z.object({\n group: ConcurrencyGroupSchema,\n cancelInProgress: z.boolean().optional(),\n})\n\nexport const ArtifactMergeStrategySchema = z.enum(['append', 'overwrite', 'json-merge'])\n\nexport const ArtifactMergeSourceSchema = z.object({\n runId: z.string().min(1),\n jobId: z.string().min(1).optional(),\n})\n\nexport const ArtifactMergeConfigSchema = z.object({\n strategy: ArtifactMergeStrategySchema,\n from: z.array(ArtifactMergeSourceSchema).min(1),\n})\n\nexport const JobArtifactsSchema = z\n .object({\n produce: z.array(z.string().min(1)).optional(),\n consume: z.array(z.string().min(1)).optional(),\n merge: ArtifactMergeConfigSchema.optional(),\n })\n .optional()\n\nexport const JobHooksSchema = z\n .object({\n pre: z.array(StepSpecSchema).optional(),\n post: z.array(StepSpecSchema).optional(),\n onFailure: z.array(StepSpecSchema).optional(),\n onSuccess: z.array(StepSpecSchema).optional(),\n })\n .optional()\n\nexport const JobSpecSchema = z.object({\n runsOn: z.enum(['local', 'sandbox']),\n target: ExecutionTargetSchema.optional(),\n isolation: IsolationProfileSchema.optional(),\n concurrency: JobConcurrencySchema.optional(),\n steps: z.array(StepSpecSchema).min(1),\n artifacts: JobArtifactsSchema,\n hooks: JobHooksSchema,\n if: z.string().optional(),\n timeoutMs: TimeoutSchema.optional(),\n retries: RetryPolicySchema.optional(),\n env: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string().min(1)).optional(),\n needs: z.array(z.string().min(1)).optional(),\n priority: z.enum(['high', 'normal', 'low']).optional(),\n})\n\nexport const WorkflowTriggerSchema = z\n .object({\n manual: z.boolean().optional(),\n push: z.boolean().optional(),\n webhook: z\n .union([\n z.boolean(),\n z.object({\n secret: z.string().min(1).optional(),\n path: z.string().min(1).optional(),\n headers: z.record(z.string(), z.string()).optional(),\n }),\n ])\n .optional(),\n schedule: z\n .object({\n cron: z.string().min(1),\n timezone: z.string().min(1).optional(),\n })\n .optional(),\n })\n .refine(\n (value) =>\n value.manual || value.push || !!value.webhook || !!value.schedule,\n {\n message: 'At least one trigger must be defined',\n path: ['manual'],\n },\n )\n\nexport const WorkflowInputFieldSchema = z.object({\n type: z.enum(['string', 'number', 'boolean']),\n description: z.string().optional(),\n required: z.boolean().optional(),\n default: z.unknown().optional(),\n})\n\nexport type WorkflowInputField = z.infer<typeof WorkflowInputFieldSchema>\n\n/** A stable workflow-level output exported to a parent invocation. */\nexport const WorkflowOutputFieldSchema = z.object({\n source: z.string().min(1),\n description: z.string().optional(),\n})\n\nexport const WorkflowSpecSchema = z\n .object({\n name: z.string().min(1),\n version: z.string().min(1),\n description: z.string().optional(),\n target: ExecutionTargetSchema.optional(),\n isolation: IsolationProfileSchema.optional(),\n on: WorkflowTriggerSchema,\n inputs: z.record(z.string(), WorkflowInputFieldSchema).optional(),\n outputs: z.record(z.string().min(1), WorkflowOutputFieldSchema).optional(),\n env: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string().min(1)).optional(),\n jobs: z.record(z.string().min(1), JobSpecSchema),\n // Presentation layer\n phases: z.record(z.string().min(1), PhaseSchema).optional(),\n })\n .refine(\n (value) =>\n Object.keys(value.jobs).length > 0 &&\n Object.keys(value.jobs).every((key) => key.trim().length > 0),\n {\n message: 'At least one job must be defined with a non-empty id',\n path: ['jobs'],\n },\n )\n\nexport const StepRunErrorSchema = z.object({\n message: z.string(),\n code: z.string().optional(),\n stack: z.string().optional(),\n timestamp: z.string().optional(),\n details: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const StepRunSchema = z.object({\n id: z.string().min(1),\n runId: z.string().min(1),\n jobId: z.string().min(1),\n name: z.string().min(1),\n index: z.number().int().nonnegative(),\n status: StepStateSchema,\n queuedAt: z.string().datetime(),\n startedAt: z.string().datetime().optional(),\n finishedAt: z.string().datetime().optional(),\n durationMs: z.number().int().nonnegative().optional(),\n attempt: z.number().int().nonnegative().default(0),\n timeoutMs: TimeoutSchema.optional(),\n continueOnError: z.boolean().optional(),\n error: StepRunErrorSchema.optional(),\n outputs: z.record(z.string(), z.unknown()).optional(),\n skipReason: z.string().optional(),\n spec: StepSpecSchema,\n /**\n * Resolved (interpolated) inputs for this execution.\n * Stored separately from spec.with so original ${{ }} templates are preserved\n * and future re-executions (gate restartFrom) can re-interpolate correctly.\n */\n resolvedInputs: z.record(z.string(), z.unknown()).optional(),\n /**\n * Step-level execution metadata (e.g. gate iteration counter).\n * Cleared on step reset except metadata.iterations which persists across restarts.\n */\n metadata: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const JobRunSchema = z.object({\n id: z.string().min(1),\n runId: z.string().min(1),\n tenantId: TenantIdSchema, // ← Inherited from run for isolation\n jobName: z.string().min(1),\n status: JobStateSchema,\n runsOn: z.enum(['local', 'sandbox']),\n queuedAt: z.string().datetime(),\n startedAt: z.string().datetime().optional(),\n finishedAt: z.string().datetime().optional(),\n durationMs: z.number().int().nonnegative().optional(),\n attempt: z.number().int().nonnegative().default(0),\n concurrency: JobConcurrencySchema.optional(),\n retries: RetryPolicySchema.optional(),\n timeoutMs: TimeoutSchema.optional(),\n target: ExecutionTargetSchema.optional(),\n isolation: IsolationProfileSchema.optional(),\n artifacts: JobArtifactsSchema,\n error: StepRunErrorSchema.optional(),\n env: z.record(z.string(), z.string()).optional(),\n secrets: z.array(z.string().min(1)).optional(),\n needs: z.array(z.string().min(1)).optional(),\n pendingDependencies: z.array(z.string().min(1)).optional(),\n blocked: z.boolean().optional(),\n priority: z.enum(['high', 'normal', 'low']).optional(),\n if: z.string().optional(),\n steps: z.array(StepRunSchema),\n})\n\nexport const RunTriggerSchema = z.object({\n type: z.enum(['manual', 'webhook', 'push', 'schedule', 'workflow']),\n actor: z.string().optional(),\n payload: z.record(z.string(), z.unknown()).optional(),\n parentRunId: z.string().optional(),\n parentJobId: z.string().optional(),\n parentStepId: z.string().optional(),\n invokedByWorkflowId: z.string().optional(),\n})\n\nexport const RunMetadataSchema = z.object({\n idempotencyKey: IdempotencyKeySchema.optional(),\n concurrencyGroup: ConcurrencyGroupSchema.optional(),\n target: ExecutionTargetSchema.optional(),\n isolation: IsolationProfileSchema.optional(),\n workflowId: z.string().optional(),\n workflowDepth: z.number().int().nonnegative().optional(),\n parentRunId: z.string().optional(),\n parentJobId: z.string().optional(),\n parentStepId: z.string().optional(),\n /** Root run and complete workflow ancestry make nested invocation auditable\n * and allow the engine to reject indirect cycles (A → B → A). */\n rootRunId: z.string().optional(),\n workflowAncestors: z.array(z.string().min(1)).optional(),\n outputDeclarations: z.record(z.string(), WorkflowOutputFieldSchema).optional(),\n /** Persisted binding owned by the root invocation and borrowed by children. */\n executionWorkspace: z.object({\n workspaceId: z.string().min(1),\n rootPath: z.string().min(1),\n }).optional(),\n workspaceOwnerRunId: z.string().optional(),\n})\n\nexport const ResultErrorSchema = z.object({\n message: z.string().min(1),\n code: z.string().optional(),\n details: z.record(z.string(), z.unknown()).optional(),\n})\n\nexport const ResultMetricsSchema = z.object({\n timeMs: z.number().int().nonnegative().optional(),\n cpuMs: z.number().int().nonnegative().optional(),\n memMb: z.number().nonnegative().optional(),\n jobsTotal: z.number().int().nonnegative().optional(),\n jobsSucceeded: z.number().int().nonnegative().optional(),\n jobsFailed: z.number().int().nonnegative().optional(),\n jobsCancelled: z.number().int().nonnegative().optional(),\n stepsTotal: z.number().int().nonnegative().optional(),\n stepsFailed: z.number().int().nonnegative().optional(),\n stepsCancelled: z.number().int().nonnegative().optional(),\n})\n\nexport const ExecutionResultSchema = z.object({\n status: RunStateSchema,\n summary: z.string().optional(),\n startedAt: z.string().datetime().optional(),\n completedAt: z.string().datetime().optional(),\n metrics: ResultMetricsSchema.optional(),\n details: z.record(z.string(), z.unknown()).optional(),\n outputs: z.record(z.string(), z.unknown()).optional(),\n error: ResultErrorSchema.optional(),\n})\n\nexport const RunSchema = z.object({\n id: z.string().min(1),\n tenantId: TenantIdSchema, // ← Multi-tenancy support\n name: z.string().min(1),\n version: z.string().min(1),\n status: RunStateSchema,\n createdAt: z.string().datetime(),\n queuedAt: z.string().datetime(),\n startedAt: z.string().datetime().optional(),\n finishedAt: z.string().datetime().optional(),\n durationMs: z.number().int().nonnegative().optional(),\n trigger: RunTriggerSchema,\n env: z.record(z.string(), z.string()).optional(),\n inputs: z.record(z.string(), z.unknown()).optional(),\n secrets: z.array(z.string().min(1)).optional(),\n jobs: z.array(JobRunSchema),\n artifacts: z.array(z.string()).optional(),\n metadata: RunMetadataSchema.optional(),\n result: ExecutionResultSchema.optional(),\n})\n","import type { ExpressionContext, WorkflowInvocationSpec } from './types'\n\n/**\n * Parse workflow: uses string into WorkflowInvocationSpec\n * @param uses - The uses string (e.g., \"workflow:workspace:ai-ci\")\n * @returns WorkflowInvocationSpec or null if not a workflow uses\n */\nexport function parseWorkflowUses(uses: string): WorkflowInvocationSpec | null {\n if (!uses.startsWith('workflow:')) {\n return null\n }\n\n const workflowId = uses.slice('workflow:'.length)\n if (!workflowId) {\n return null\n }\n\n return {\n type: 'workflow',\n workflowId,\n mode: 'wait', // default\n inheritEnv: true, // default\n }\n}\n\n/**\n * Extract all ${{ expression }} patterns from a string\n */\nexport function extractExpressions(str: string): string[] {\n const pattern = /\\$\\{\\{\\s*([^}]+)\\s*\\}\\}/g\n const matches: string[] = []\n let match: RegExpExecArray | null\n\n while ((match = pattern.exec(str)) !== null) {\n matches.push(match[1]!.trim())\n }\n\n return matches\n}\n\n/**\n * Evaluate a boolean expression\n * Supported operators: ==, !=, &&, ||, !\n * Supported functions: contains(), startsWith(), endsWith()\n * Supported contexts: env.*, trigger.*, steps.*.outputs.*\n */\nexport function evaluateExpression(\n expr: string,\n context: ExpressionContext,\n): boolean {\n const trimmed = expr.trim()\n\n // Handle logical operators. || has lower precedence than && — split on ||\n // first so && operands are evaluated as a unit, not the other way around.\n // Use splitOnOperator so quoted strings (e.g. \"a && b\") are not split.\n const orParts = splitOnOperator(trimmed, '||')\n if (orParts.length > 1) {\n return orParts.some((part) => evaluateExpression(part.trim(), context))\n }\n\n const andParts = splitOnOperator(trimmed, '&&')\n if (andParts.length > 1) {\n return andParts.every((part) => evaluateExpression(part.trim(), context))\n }\n\n // Handle negation\n if (trimmed.startsWith('!')) {\n return !evaluateExpression(trimmed.slice(1).trim(), context)\n }\n\n // Handle parentheses (simple case)\n if (trimmed.startsWith('(') && trimmed.endsWith(')')) {\n return evaluateExpression(trimmed.slice(1, -1).trim(), context)\n }\n\n // Handle boolean literals (before equality checks)\n if (trimmed === 'true') {return true}\n if (trimmed === 'false') {return false}\n\n // Handle equality/inequality\n if (trimmed.includes('==')) {\n const parts = trimmed.split('==').map((s) => s.trim())\n if (parts.length === 2 && parts[0] && parts[1]) {\n const left = resolveValue(parts[0], context)\n const right = resolveValue(parts[1], context)\n // For numeric comparison, try numeric first\n if (typeof left === 'number' && typeof right === 'number') {\n return left === right\n }\n // Otherwise coerce to string\n return coerceToString(left) === coerceToString(right)\n }\n }\n\n if (trimmed.includes('!=')) {\n const parts = trimmed.split('!=').map((s) => s.trim())\n if (parts.length === 2 && parts[0] && parts[1]) {\n const left = resolveValue(parts[0], context)\n const right = resolveValue(parts[1], context)\n // For numeric comparison, try numeric first\n if (typeof left === 'number' && typeof right === 'number') {\n return left !== right\n }\n // Otherwise coerce to string\n return coerceToString(left) !== coerceToString(right)\n }\n }\n\n // Handle functions\n if (trimmed.includes('contains(')) {\n const match = trimmed.match(/contains\\(([^,]+),\\s*([^)]+)\\)/)\n if (match && match[1] && match[2]) {\n const value = resolveValue(match[1].trim(), context)\n const search = match[2].trim().replace(/^[\"']|[\"']$/g, '')\n return String(value).includes(search)\n }\n }\n\n if (trimmed.includes('startsWith(')) {\n const match = trimmed.match(/startsWith\\(([^,]+),\\s*([^)]+)\\)/)\n if (match && match[1] && match[2]) {\n const value = resolveValue(match[1].trim(), context)\n const prefix = match[2].trim().replace(/^[\"']|[\"']$/g, '')\n return String(value).startsWith(prefix)\n }\n }\n\n if (trimmed.includes('endsWith(')) {\n const match = trimmed.match(/endsWith\\(([^,]+),\\s*([^)]+)\\)/)\n if (match && match[1] && match[2]) {\n const value = resolveValue(match[1].trim(), context)\n const suffix = match[2].trim().replace(/^[\"']|[\"']$/g, '')\n return String(value).endsWith(suffix)\n }\n }\n\n // Fallback: treat as truthy/falsy\n const value = resolveValue(trimmed, context)\n return Boolean(value)\n}\n\n/**\n * Resolve a value from context (e.g., \"env.VAR\", \"steps.build.outputs.version\")\n */\nexport function resolveValue(path: string, context: ExpressionContext): unknown {\n // Remove quotes\n const cleanPath = path.replace(/^[\"']|[\"']$/g, '')\n\n // env.VAR\n if (cleanPath.startsWith('env.')) {\n const key = cleanPath.slice('env.'.length)\n return context.env[key] ?? ''\n }\n\n // trigger.type, trigger.actor, trigger.payload.*\n if (cleanPath.startsWith('trigger.')) {\n const key = cleanPath.slice('trigger.'.length)\n if (key === 'type') {\n return context.trigger.type\n }\n if (key === 'actor') {\n return context.trigger.actor ?? ''\n }\n if (key.startsWith('payload.')) {\n const payloadKey = key.slice('payload.'.length)\n return context.trigger.payload?.[payloadKey] ?? ''\n }\n return ''\n }\n\n // steps.<id>.outputs.<key>[.<nested>...]\n if (cleanPath.startsWith('steps.')) {\n const rest = cleanPath.slice('steps.'.length)\n const match = rest.match(/^([^.]+)\\.outputs\\.(.+)$/)\n if (match) {\n const stepId = match[1]!\n const outputKey = match[2]!\n const outputs = context.steps[stepId]?.outputs\n if (outputs === undefined) {return ''}\n // Navigate nested path (e.g. \"result.passed\" → outputs.result.passed)\n const parts = outputKey.split('.')\n let value: unknown = outputs\n for (const part of parts) {\n if (value === undefined || value === null || typeof value !== 'object') {return ''}\n value = (value as Record<string, unknown>)[part]\n }\n return value !== undefined ? value : ''\n }\n return ''\n }\n\n // inputs.*\n if (cleanPath.startsWith('inputs.') && context.inputs) {\n const key = cleanPath.slice('inputs.'.length)\n return context.inputs[key] ?? ''\n }\n\n // matrix.* (for future)\n if (cleanPath.startsWith('matrix.') && context.matrix) {\n const key = cleanPath.slice('matrix.'.length)\n return context.matrix[key] ?? ''\n }\n\n // Try to parse as number\n const num = Number(cleanPath)\n if (!isNaN(num) && isFinite(num)) {\n return num\n }\n\n // Try to parse as boolean\n if (cleanPath === 'true') {return true}\n if (cleanPath === 'false') {return false}\n\n // Literal value\n return cleanPath\n}\n\n/**\n * Coerce value to string for comparison\n */\nexport function coerceToString(value: unknown): string {\n if (value === null || value === undefined) {\n return ''\n }\n if (typeof value === 'boolean') {\n return value ? 'true' : 'false'\n }\n if (typeof value === 'object') {\n return JSON.stringify(value)\n }\n return String(value)\n}\n\n/**\n * Interpolate string with context values\n * Example: \"Version: ${{ steps.build.outputs.version }}\"\n */\nexport function interpolateString(\n str: string,\n context: ExpressionContext,\n): string {\n const expressions = extractExpressions(str)\n let result = str\n\n for (const expr of expressions) {\n const value = resolveValueWithFallback(expr, context)\n const replacement = coerceToString(value)\n const pattern = new RegExp(\n `\\\\$\\\\{\\\\{\\\\s*${escapeRegex(expr)}\\\\s*\\\\}\\\\}`,\n 'g',\n )\n result = result.replace(pattern, replacement)\n }\n\n return result\n}\n\n/**\n * Build a shell-safe command from a `run:` block by injecting ${{ expr }} values\n * as environment variables instead of raw string substitution.\n *\n * Raw substitution is unsafe because issue/PR titles may contain shell metacharacters\n * (backticks, $(), quotes). When content arrives via an env var, shell expansion of\n * the variable does NOT re-evaluate backticks or $() — they are literal characters.\n *\n * Single-quote context: when ${{ expr }} is wrapped in single quotes — the natural\n * pattern for `jq --argjson x '${{ inputs.payload }}'` — bash single-quote semantics\n * would prevent ${_WF_var} from expanding. The single-quoted wrapper is replaced with\n * a double-quoted reference instead:\n *\n * Example:\n * Input: `echo \"${{ steps.issue.outputs.title }}\"`\n * Output: command = `echo \"${_WF_steps_issue_outputs_title}\"`\n * shellEnvVars = { _WF_steps_issue_outputs_title: \"Add `kb cancel` command\" }\n *\n * Input: `jq --argjson payload '${{ inputs.invoice_payload }}' '{\"x\":1}'`\n * Output: command = `jq --argjson payload \"${_WF_inputs_invoice_payload}\" '{\"x\":1}'`\n * shellEnvVars = { _WF_inputs_invoice_payload: '{\"vendor\":\"Acme\",\"total\":250}' }\n */\nexport function buildShellSafeCommand(\n rawRun: string,\n context: ExpressionContext,\n): { command: string; shellEnvVars: Record<string, string> } {\n const expressions = extractExpressions(rawRun)\n const shellEnvVars: Record<string, string> = {}\n let command = rawRun\n\n for (const expr of expressions) {\n const value = resolveValueWithFallback(expr, context)\n const strValue = coerceToString(value)\n\n // Build a safe shell variable name from the expression.\n // Replace any non-alphanumeric/underscore chars with underscore.\n const safeName = '_WF_' + expr.trim().replace(/[^a-zA-Z0-9_]/g, '_')\n shellEnvVars[safeName] = strValue\n\n // Replace '${{ expr }}' (single-quote wrapped) with \"${_WF_var}\" (double-quoted).\n // Single quotes in bash prevent ${...} expansion; switching to double quotes fixes it.\n const sqPattern = new RegExp(\n `'\\\\$\\\\{\\\\{\\\\s*${escapeRegex(expr)}\\\\s*\\\\}\\\\}'`,\n 'g',\n )\n command = command.replace(sqPattern, `\"\\${${safeName}}\"`)\n\n // Replace remaining unquoted/double-quoted occurrences with ${_WF_var}.\n const pattern = new RegExp(`\\\\$\\\\{\\\\{\\\\s*${escapeRegex(expr)}\\\\s*\\\\}\\\\}`, 'g')\n command = command.replace(pattern, `\\${${safeName}}`)\n }\n\n return { command, shellEnvVars }\n}\n\n/**\n * Escape special regex characters\n */\nfunction escapeRegex(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n}\n\n/**\n * Resolve a value expression with || (logical OR / default value) support.\n * Returns the first truthy value, or the last value if all are falsy.\n * Example: \"trigger.payload.mode || 'heuristic'\" → value of mode, or 'heuristic' if empty/undefined\n */\nfunction resolveValueWithFallback(expr: string, context: ExpressionContext): unknown {\n // Split on || (but not inside quotes)\n const parts = splitOnOperator(expr, '||')\n if (parts.length === 1) {\n return resolveValue(parts[0]!.trim(), context)\n }\n\n // Return first truthy value, or last value\n for (let i = 0; i < parts.length; i++) {\n const value = resolveValue(parts[i]!.trim(), context)\n // Truthy check: non-empty string, non-zero number, non-false boolean, non-null object\n if (isTruthy(value)) {\n return value\n }\n // Last part — return even if falsy\n if (i === parts.length - 1) {\n return value\n }\n }\n\n return ''\n}\n\n/**\n * Split expression string on an operator, respecting quoted strings.\n * Example: \"a || 'hello || world'\" → [\"a \", \" 'hello || world'\"]\n */\nfunction splitOnOperator(expr: string, op: string): string[] {\n const parts: string[] = []\n let current = ''\n let inSingle = false\n let inDouble = false\n let i = 0\n\n while (i < expr.length) {\n const ch = expr[i]!\n\n if (ch === \"'\" && !inDouble) {\n inSingle = !inSingle\n current += ch\n i++\n } else if (ch === '\"' && !inSingle) {\n inDouble = !inDouble\n current += ch\n i++\n } else if (!inSingle && !inDouble && expr.slice(i, i + op.length) === op) {\n parts.push(current)\n current = ''\n i += op.length\n } else {\n current += ch\n i++\n }\n }\n\n parts.push(current)\n return parts\n}\n\n/**\n * Check if a resolved value is \"truthy\" for || operator purposes.\n * Empty string, null, undefined, false, 0 are falsy.\n */\nfunction isTruthy(value: unknown): boolean {\n if (value === '' || value === null || value === undefined || value === false || value === 0) {\n return false\n }\n return true\n}\n\n/**\n * Resolve expression preserving types.\n * If the string is exactly one `${{ expr }}` (no surrounding text),\n * returns the raw value (object, number, boolean, etc.).\n * Supports || operator for default values: `${{ a || 'default' }}`\n * Otherwise delegates to interpolateString (returns string).\n */\nexport function resolveExpression(\n str: string,\n context: ExpressionContext,\n): unknown {\n const trimmed = str.trim()\n\n // Check if the entire string is a single expression\n const singleExprMatch = trimmed.match(/^\\$\\{\\{\\s*([^}]+)\\s*\\}\\}$/)\n if (singleExprMatch && singleExprMatch[1]) {\n return resolveValueWithFallback(singleExprMatch[1].trim(), context)\n }\n\n // Multiple expressions or text around them — interpolate as string\n if (trimmed.includes('${{')) {\n return interpolateString(trimmed, context)\n }\n\n // No expressions — return as-is\n return str\n}\n\n/**\n * Recursively interpolate all string values in an object/array.\n * - Strings: resolved via resolveExpression (type-preserving)\n * - Arrays: each element interpolated recursively\n * - Objects: each value interpolated recursively\n * - Primitives (number, boolean, null): returned as-is\n */\nexport function interpolateObject(\n obj: Record<string, unknown>,\n context: ExpressionContext,\n): Record<string, unknown> {\n const result: Record<string, unknown> = {}\n\n for (const [key, value] of Object.entries(obj)) {\n result[key] = interpolateValue(value, context)\n }\n\n return result\n}\n\n/**\n * Interpolate a single value recursively\n */\nfunction interpolateValue(value: unknown, context: ExpressionContext): unknown {\n if (typeof value === 'string') {\n return resolveExpression(value, context)\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => interpolateValue(item, context))\n }\n\n if (value !== null && typeof value === 'object') {\n return interpolateObject(value as Record<string, unknown>, context)\n }\n\n // number, boolean, null, undefined — pass through\n return value\n}\n\n","/**\n * Flag definitions for workflow CLI commands\n * Uses defineFlags from @kb-labs/sdk for type safety\n */\n\nimport { defineFlags } from '@kb-labs/sdk';\n\n/**\n * Flags for workflow:status command\n */\nexport const statusFlags = defineFlags({\n json: {\n type: 'boolean',\n description: 'Output result as JSON',\n default: false,\n },\n 'job-id': {\n type: 'string',\n description: 'Job ID to get status for',\n },\n});\n\n/**\n * Flags for workflow:logs command\n */\nexport const logsFlags = defineFlags({\n json: {\n type: 'boolean',\n description: 'Output result as JSON',\n default: false,\n },\n 'job-id': {\n type: 'string',\n description: 'Job ID to get logs for',\n },\n 'run-id': {\n type: 'string',\n description: 'Run ID to get logs for (all steps)',\n },\n follow: {\n type: 'boolean',\n description: 'Follow log output (stream new logs)',\n default: false,\n },\n});\n\n/**\n * Flags for workflow:metrics command\n */\nexport const metricsFlags = defineFlags({\n json: {\n type: 'boolean',\n description: 'Output result as JSON',\n default: false,\n },\n});\n\n/**\n * Flags for workflow:health command\n */\nexport const healthFlags = defineFlags({\n json: {\n type: 'boolean',\n description: 'Output result as JSON',\n default: false,\n },\n});\n\n/**\n * Flags for workflow:list command\n */\nexport const listFlags = defineFlags({\n json: {\n type: 'boolean',\n description: 'Output result as JSON',\n default: false,\n },\n status: {\n type: 'string',\n description: 'Filter by status (running, completed, failed)',\n },\n type: {\n type: 'string',\n description: 'Filter by type: \"runs\" (active executions), \"cron\" (scheduled jobs)',\n },\n});\n\n/**\n * Flags for workflow:run command\n */\nexport const runFlags = defineFlags({\n json: {\n type: 'boolean',\n description: 'Output result as JSON',\n default: false,\n },\n handler: {\n type: 'string',\n description: 'Plugin handler to run (e.g., \"mind:rag-query\")',\n },\n input: {\n type: 'string',\n description: 'JSON string of input parameters',\n },\n priority: {\n type: 'number',\n description: 'Job priority (1-10, default: 5)',\n },\n wait: {\n type: 'boolean',\n description: 'Wait for job completion',\n default: false,\n },\n});\n\n// Type exports for use in command handlers\nexport type StatusFlags = typeof statusFlags.infer;\nexport type LogsFlags = typeof logsFlags.infer;\nexport type MetricsFlags = typeof metricsFlags.infer;\nexport type HealthFlags = typeof healthFlags.infer;\nexport type ListFlags = typeof listFlags.infer;\nexport type RunFlags = typeof runFlags.infer;\n","import { z } from 'zod'\nimport { JOB_PRIORITIES } from '@kb-labs/workflow-constants'\n\ntype NonEmptyTuple<T> = [T, ...T[]]\nconst JOB_PRIORITY_VALUES = JOB_PRIORITIES as unknown as NonEmptyTuple<'high' | 'normal' | 'low'>\n\n/**\n * Cron schedule expression (standard cron format)\n * Examples:\n * - \"0 * * * *\" - every hour\n * - \"0 0 * * *\" - daily at midnight\n * - \"0/15 * * * *\" - every 15 minutes\n */\nexport const CronScheduleSchema = z\n .string()\n .regex(\n /^(\\*|([0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9])|\\*\\/([0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9])) (\\*|([0-9]|1[0-9]|2[0-3])|\\*\\/([0-9]|1[0-9]|2[0-3])) (\\*|([1-9]|1[0-9]|2[0-9]|3[0-1])|\\*\\/([1-9]|1[0-9]|2[0-9]|3[0-1])) (\\*|([1-9]|1[0-2])|\\*\\/([1-9]|1[0-2])) (\\*|[0-6]|\\*\\/[0-6])$/,\n 'Invalid cron expression'\n )\n .describe('Cron schedule expression')\n\n/**\n * Plugin manifest cron job definition\n * Used in plugin manifest.ts to declare scheduled jobs\n */\nexport const PluginCronJobSchema = z.object({\n id: z.string().min(1).max(64).describe('Unique cron job identifier'),\n schedule: CronScheduleSchema,\n handler: z.string().min(1).describe('Plugin handler (e.g., \"mind:rag-index\")'),\n input: z.record(z.string(), z.unknown()).optional().describe('Input parameters for handler'),\n priority: z.enum(JOB_PRIORITY_VALUES).default('normal'),\n enabled: z.boolean().default(true).describe('Whether cron job is enabled'),\n timezone: z.string().optional().describe('Timezone for schedule (default: UTC)'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata'),\n})\n\nexport type PluginCronJob = z.infer<typeof PluginCronJobSchema>\n\n/**\n * User-defined cron job from .kb/jobs/*.yml\n * Full workflow spec with cron trigger\n */\nexport const UserCronJobSchema = z.object({\n name: z.string().min(1).describe('Human-readable job name'),\n schedule: CronScheduleSchema,\n autoStart: z.boolean().default(true).describe('Auto-start on daemon boot'),\n priority: z.enum(JOB_PRIORITY_VALUES).default('normal'),\n enabled: z.boolean().default(true).describe('Whether cron job is enabled'),\n timezone: z.string().optional().describe('Timezone for schedule (default: UTC)'),\n env: z.record(z.string(), z.string()).optional().describe('Environment variables'),\n jobs: z.record(z.string(), z.any()).describe('Workflow jobs specification'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata'),\n})\n\nexport type UserCronJob = z.infer<typeof UserCronJobSchema>\n\n/**\n * Registered cron job (internal representation)\n * Combines plugin and user cron jobs\n */\nexport interface RegisteredCronJob {\n id: string\n source: 'plugin' | 'user'\n schedule: string\n timezone?: string\n priority: 'high' | 'normal' | 'low'\n enabled: boolean\n\n // For plugin cron jobs\n handler?: string\n input?: Record<string, unknown>\n\n // For user cron jobs\n workflowSpec?: {\n name: string\n jobs: Record<string, any>\n env?: Record<string, string>\n }\n\n metadata?: Record<string, unknown>\n}\n\n/**\n * Cron job execution history entry\n */\nexport const CronExecutionSchema = z.object({\n cronJobId: z.string(),\n runId: z.string().describe('Workflow run ID'),\n scheduledAt: z.string().datetime().describe('When execution was scheduled'),\n startedAt: z.string().datetime().optional().describe('When execution started'),\n finishedAt: z.string().datetime().optional().describe('When execution finished'),\n status: z.enum(['pending', 'running', 'success', 'failed']),\n error: z\n .object({\n message: z.string(),\n stack: z.string().optional(),\n })\n .optional(),\n})\n\nexport type CronExecution = z.infer<typeof CronExecutionSchema>\n","/**\n * @module @kb-labs/workflow-contracts/rest-api\n * REST API types for Workflow Service HTTP endpoints\n */\n\nimport { z } from 'zod'\nimport type { ExecutionTarget, IsolationProfile } from './types'\nimport type { RunState } from '@kb-labs/workflow-constants'\n\n/**\n * Job submission request (POST /api/jobs)\n */\nexport interface JobSubmissionRequest {\n /** Job type (pluginId:jobId format) */\n type: string;\n /** Job payload (passed to handler) */\n payload?: Record<string, unknown>;\n /** Priority (1-10, default 5) */\n priority?: number;\n /** Max retry attempts (default 3) */\n maxRetries?: number;\n /** Timeout in milliseconds */\n timeout?: number;\n /** Scheduled run time (ISO string or Date) */\n runAt?: string | Date;\n /** Idempotency key (prevents duplicate submissions) */\n idempotencyKey?: string;\n}\n\n/**\n * Job submission response (POST /api/jobs)\n */\nexport interface JobSubmissionResponse {\n /** Generated job ID */\n jobId: string;\n}\n\n/**\n * Job status info (GET /api/jobs/:id)\n */\nexport interface JobStatusInfo {\n /** Job ID */\n id: string;\n /** Job type */\n type: string;\n /** Current status */\n status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';\n /** Tenant ID */\n tenantId?: string;\n /** Priority */\n priority?: number;\n /** Created timestamp */\n createdAt?: Date | string;\n /** Started timestamp */\n startedAt?: Date | string;\n /** Finished timestamp */\n finishedAt?: Date | string;\n /** Retry attempt number */\n attempt?: number;\n /** Max retries */\n maxRetries?: number;\n /** Result (if completed) */\n result?: unknown;\n /** Error (if failed) */\n error?: string;\n /** Progress (0-100) */\n progress?: number;\n /** Progress message */\n progressMessage?: string;\n}\n\n/**\n * Job list filter (GET /api/jobs)\n */\nexport interface JobListFilter {\n /** Filter by job type pattern */\n type?: string;\n /** Filter by status */\n status?: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';\n /** Pagination limit */\n limit?: number;\n /** Pagination offset */\n offset?: number;\n}\n\n/**\n * Job list response (GET /api/jobs)\n */\nexport interface JobListResponse {\n /** List of jobs */\n jobs: JobStatusInfo[];\n}\n\n/**\n * Job cancel response (POST /api/jobs/:id/cancel)\n */\nexport interface JobCancelResponse {\n /** True if job was cancelled */\n cancelled: boolean;\n}\n\n/**\n * Cron job registration request (POST /api/cron)\n */\nexport interface CronRegistrationRequest {\n /** Cron job ID (unique per plugin) */\n id: string;\n /** Cron schedule expression */\n schedule: string;\n /** Job type to execute (pluginId:jobId) */\n jobType: string;\n /** Job payload */\n payload?: unknown;\n /** Timezone (default: UTC) */\n timezone?: string;\n /** Enabled flag (default: true) */\n enabled?: boolean;\n}\n\n/**\n * Cron job info (GET /api/cron)\n */\nexport interface CronInfo {\n /** Cron job ID */\n id: string;\n /** Cron schedule expression */\n schedule: string;\n /** Job type */\n jobType: string;\n /** Timezone */\n timezone?: string;\n /** Enabled flag */\n enabled: boolean;\n /** Last run time */\n lastRun?: Date | string;\n /** Next run time */\n nextRun?: Date | string;\n /** Plugin ID (if plugin-provided) */\n pluginId?: string;\n}\n\n/**\n * Cron list response (GET /api/cron)\n */\nexport interface CronListResponse {\n /** List of cron jobs */\n crons: CronInfo[];\n}\n\n/**\n * Workflow definition info (GET /api/v1/workflows)\n */\nexport interface WorkflowInfo {\n /** Workflow ID (e.g., \"release-manager/create-release\") */\n id: string;\n /** Human-readable name */\n name: string;\n /** Description */\n description?: string;\n /** Source type */\n source: 'manifest' | 'standalone' | 'plugin';\n /** Plugin ID (for manifest workflows) */\n pluginId?: string;\n /** Status */\n status?: 'active' | 'inactive';\n /** Tags */\n tags?: string[];\n /** Declared input parameters schema */\n inputs?: Record<string, { type: 'string' | 'number' | 'boolean'; description?: string; required?: boolean; default?: unknown }>;\n /** Semantic version from workflow spec */\n version?: string;\n /** ISO timestamp of last modification */\n updatedAt?: string;\n}\n\n/**\n * Workflow list response (GET /api/v1/workflows)\n */\nexport interface WorkflowListResponse {\n /** List of workflows */\n workflows: WorkflowInfo[];\n}\n\n/**\n * Workflow run request (POST /api/v1/workflows/:id/run)\n */\nexport interface WorkflowRunRequest {\n /**\n * Workflow input values (preferred field name — matches YAML `inputs:` block).\n * `input` (singular) is accepted as a legacy alias.\n */\n inputs?: Record<string, unknown>;\n /** @deprecated Use `inputs` instead. Kept for backward compatibility. */\n input?: unknown;\n /** Execution target override for this run */\n target?: ExecutionTarget;\n /** Isolation profile override for this run */\n isolation?: IsolationProfile;\n /** Trigger metadata */\n trigger?: {\n type: 'manual' | 'api' | 'cron';\n user?: string;\n };\n}\n\n// ============================================================================\n// Zod Schemas\n// ============================================================================\n\n/**\n * Job status enum schema\n */\nexport const JobStatusSchema = z.enum([\n 'pending',\n 'running',\n 'completed',\n 'failed',\n 'cancelled',\n])\n\n/**\n * Job status info schema (GET /api/v1/jobs/:jobId)\n */\nexport const JobStatusInfoSchema = z.object({\n id: z.string(),\n type: z.string(),\n status: JobStatusSchema,\n tenantId: z.string().optional(),\n priority: z.number().optional(),\n createdAt: z.union([z.string(), z.date()]).optional(),\n startedAt: z.union([z.string(), z.date()]).optional(),\n finishedAt: z.union([z.string(), z.date()]).optional(),\n attempt: z.number().optional(),\n maxRetries: z.number().optional(),\n result: z.unknown().optional(),\n error: z.string().optional(),\n progress: z.number().min(0).max(100).optional(),\n progressMessage: z.string().optional(),\n})\n\n/**\n * Job list response schema (GET /api/v1/jobs)\n */\nexport const JobListResponseSchema = z.object({\n jobs: z.array(JobStatusInfoSchema),\n})\n\n/**\n * Job cancel response schema (POST /api/v1/jobs/:jobId/cancel)\n */\nexport const JobCancelResponseSchema = z.object({\n cancelled: z.boolean(),\n})\n\n/**\n * Cron info schema (GET /api/v1/cron)\n */\nexport const CronInfoSchema = z.object({\n id: z.string(),\n schedule: z.string(),\n jobType: z.string(),\n timezone: z.string().optional(),\n enabled: z.boolean(),\n lastRun: z.union([z.string(), z.date()]).optional(),\n nextRun: z.union([z.string(), z.date()]).optional(),\n pluginId: z.string().optional(),\n})\n\n/**\n * Cron list response schema (GET /api/v1/cron)\n */\nexport const CronListResponseSchema = z.object({\n crons: z.array(CronInfoSchema),\n})\n\n/**\n * Workflow info schema (GET /api/v1/workflows)\n */\nexport const WorkflowInfoSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional(),\n source: z.enum(['manifest', 'standalone', 'plugin']),\n pluginId: z.string().optional(),\n status: z.enum(['active', 'inactive']).optional(),\n tags: z.array(z.string()).optional(),\n version: z.string().optional(),\n updatedAt: z.string().optional(),\n})\n\n/**\n * Workflow list response schema (GET /api/v1/workflows)\n */\nexport const WorkflowListResponseSchema = z.object({\n workflows: z.array(WorkflowInfoSchema),\n})\n\n/**\n * Workflow run request schema (POST /api/v1/workflows/:id/run)\n */\nexport const WorkflowRunRequestSchema = z.object({\n inputs: z.record(z.unknown()).optional(),\n input: z.unknown().optional(),\n target: z.object({\n environmentId: z.string().min(1).optional(),\n workspaceId: z.string().min(1).optional(),\n namespace: z.string().min(1).optional(),\n workdir: z.string().min(1).optional(),\n }).optional(),\n isolation: z.enum(['strict', 'balanced', 'relaxed']).optional(),\n trigger: z.object({\n type: z.enum(['manual', 'api', 'cron']),\n user: z.string().optional(),\n }).optional(),\n})\n\n/**\n * Workflow rerun request (POST /api/v1/runs/:runId/rerun)\n */\nexport interface WorkflowRerunRequest {\n /** When true, only jobs with status failed or interrupted are requeued */\n failedOnly?: boolean;\n}\n\nexport const WorkflowRerunRequestSchema = z.object({\n failedOnly: z.boolean().optional(),\n})\n\n/**\n * Workflow restart request (POST /api/v1/runs/:runId/restart)\n * Replays a run from a snapshot, optionally resuming from a specific step.\n */\nexport interface WorkflowRestartRequest {\n /** Step ID to restart from; all preceding steps inherit their stored outputs */\n fromStepId?: string;\n /** Optional env overrides merged on top of the snapshot env */\n env?: Record<string, string>;\n}\n\nexport const WorkflowRestartRequestSchema = z.object({\n fromStepId: z.string().optional(),\n env: z.record(z.string()).optional(),\n})\n\nexport interface WorkflowRestartResponse {\n runId: string;\n status: RunState;\n fromStepId?: string;\n}\n\n/**\n * Dashboard stats response (GET /api/v1/stats)\n */\nexport interface DashboardStatsResponse {\n /** Workflow statistics */\n workflows: {\n total: number;\n active: number;\n inactive: number;\n };\n /** Job statistics */\n jobs: {\n running: number;\n pending: number;\n completed: number;\n failed: number;\n };\n /** Cron statistics */\n crons: {\n total: number;\n enabled: number;\n disabled: number;\n };\n /** Active executions (currently running) */\n activeExecutions: Array<{\n id: string;\n type: string;\n workflowName?: string;\n status: 'running';\n progress?: number;\n progressMessage?: string;\n startedAt: string;\n durationMs?: number;\n }>;\n /** Recent activity (last 10 completed/failed jobs) */\n recentActivity: Array<{\n id: string;\n type: string;\n workflowName?: string;\n status: 'completed' | 'failed' | 'cancelled';\n finishedAt: string;\n durationMs?: number;\n error?: string;\n }>;\n}\n\n/**\n * Job logs response (GET /api/v1/jobs/:jobId/logs)\n */\nexport interface JobLogsResponse {\n /** Job ID */\n jobId: string;\n /** Log entries */\n logs: Array<{\n timestamp: string;\n level: 'info' | 'warn' | 'error' | 'debug';\n message: string;\n context?: Record<string, unknown>;\n }>;\n /** Total log count */\n total: number;\n /** Has more logs available */\n hasMore: boolean;\n}\n\n/**\n * Job execution step info (GET /api/v1/jobs/:jobId/steps)\n */\nexport interface JobStepInfo {\n /** Step name */\n name: string;\n /** Step handler */\n handler?: string;\n /** Step status */\n status: 'pending' | 'running' | 'completed' | 'failed' | 'skipped';\n /** Step progress (0-100) */\n progress?: number;\n /** Step start time */\n startedAt?: string;\n /** Step finish time */\n finishedAt?: string;\n /** Step duration in ms */\n durationMs?: number;\n /** Step error message */\n error?: string;\n /** Step result/output */\n output?: unknown;\n}\n\n/**\n * Job steps response (GET /api/v1/jobs/:jobId/steps)\n */\nexport interface JobStepsResponse {\n /** Job ID */\n jobId: string;\n /** Workflow name (if applicable) */\n workflowName?: string;\n /** Overall status */\n status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';\n /** Execution steps */\n steps: JobStepInfo[];\n /** Current step index */\n currentStep?: number;\n}\n\n/**\n * Workflow run history entry\n */\nexport interface WorkflowRunInfo {\n /** Run ID */\n id: string;\n /** Workflow ID */\n workflowId: string;\n /** Run status */\n status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';\n /** Trigger info */\n trigger: {\n type: 'manual' | 'api' | 'cron';\n user?: string;\n };\n /** Start time */\n startedAt: string;\n /** Finish time */\n finishedAt?: string;\n /** Duration in ms */\n durationMs?: number;\n /** Error message (if failed) */\n error?: string;\n}\n\n/**\n * Workflow run history response (GET /api/v1/workflows/:id/runs)\n */\nexport interface WorkflowRunHistoryResponse {\n /** Workflow ID */\n workflowId: string;\n /** Run history */\n runs: WorkflowRunInfo[];\n /** Total count */\n total: number;\n}\n\n// ============================================================================\n// Zod Schemas for New Endpoints\n// ============================================================================\n\n/**\n * Dashboard stats response schema\n */\nexport const DashboardStatsResponseSchema = z.object({\n workflows: z.object({\n total: z.number(),\n active: z.number(),\n inactive: z.number(),\n }),\n jobs: z.object({\n running: z.number(),\n pending: z.number(),\n completed: z.number(),\n failed: z.number(),\n }),\n crons: z.object({\n total: z.number(),\n enabled: z.number(),\n disabled: z.number(),\n }),\n activeExecutions: z.array(z.object({\n id: z.string(),\n type: z.string(),\n workflowName: z.string().optional(),\n status: z.literal('running'),\n progress: z.number().min(0).max(100).optional(),\n progressMessage: z.string().optional(),\n startedAt: z.string(),\n durationMs: z.number().optional(),\n })),\n recentActivity: z.array(z.object({\n id: z.string(),\n type: z.string(),\n workflowName: z.string().optional(),\n status: z.enum(['completed', 'failed', 'cancelled']),\n finishedAt: z.string(),\n durationMs: z.number().optional(),\n error: z.string().optional(),\n })),\n})\n\n/**\n * Job logs response schema\n */\nexport const JobLogsResponseSchema = z.object({\n jobId: z.string(),\n logs: z.array(z.object({\n timestamp: z.string(),\n level: z.enum(['info', 'warn', 'error', 'debug']),\n message: z.string(),\n context: z.record(z.unknown()).optional(),\n })),\n total: z.number(),\n hasMore: z.boolean(),\n})\n\n/**\n * Job step info schema\n */\nexport const JobStepInfoSchema = z.object({\n name: z.string(),\n handler: z.string().optional(),\n status: z.enum(['pending', 'running', 'completed', 'failed', 'skipped']),\n progress: z.number().min(0).max(100).optional(),\n startedAt: z.string().optional(),\n finishedAt: z.string().optional(),\n durationMs: z.number().optional(),\n error: z.string().optional(),\n output: z.unknown().optional(),\n})\n\n/**\n * Job steps response schema\n */\nexport const JobStepsResponseSchema = z.object({\n jobId: z.string(),\n workflowName: z.string().optional(),\n status: z.enum(['pending', 'running', 'completed', 'failed', 'cancelled']),\n steps: z.array(JobStepInfoSchema),\n currentStep: z.number().optional(),\n})\n\n/**\n * Workflow run info schema\n */\nexport const WorkflowRunInfoSchema = z.object({\n id: z.string(),\n workflowId: z.string(),\n status: z.enum(['pending', 'running', 'completed', 'failed', 'cancelled']),\n trigger: z.object({\n type: z.enum(['manual', 'api', 'cron']),\n user: z.string().optional(),\n }),\n startedAt: z.string(),\n finishedAt: z.string().optional(),\n durationMs: z.number().optional(),\n error: z.string().optional(),\n})\n\n/**\n * Workflow run history response schema\n */\nexport const WorkflowRunHistoryResponseSchema = z.object({\n workflowId: z.string(),\n runs: z.array(WorkflowRunInfoSchema),\n total: z.number(),\n})\n\n// ─── SSE event types ─────────────────────────────────────────────────────────\n\n/** Server-Sent Event for workflow run log streaming */\nexport interface WorkflowLogEvent {\n type: string\n runId: string\n jobId?: string\n stepId?: string\n payload?: Record<string, unknown>\n timestamp?: string\n}\n","/**\n * @module @kb-labs/workflow-contracts/routes\n * REST API route constants for workflow plugin\n */\n\n/**\n * Base path for all workflow REST endpoints\n */\nexport const WORKFLOW_BASE_PATH = '/plugins/workflow'\n\n/**\n * Workflow REST API routes\n */\nexport const WORKFLOW_ROUTES = {\n /** GET /stats - Dashboard statistics */\n STATS: '/stats',\n /** GET /workflows - List all workflow definitions */\n WORKFLOWS: '/workflows',\n /** GET /workflows/:id - Get workflow definition details */\n WORKFLOW_DETAIL: '/workflows/:id',\n /** POST /workflows/:id/run - Run a workflow */\n WORKFLOW_RUN: '/workflows/:id/run',\n /** GET /workflows/:id/runs - Get workflow run history */\n WORKFLOW_RUNS: '/workflows/:id/runs',\n /** POST /workflows/runs/:runId/cancel - Cancel a workflow run */\n WORKFLOW_RUN_CANCEL: '/workflows/runs/:runId/cancel',\n /** GET /runs - List all workflow runs */\n RUNS: '/runs',\n /** GET /runs/:runId - Get a specific workflow run */\n RUN_DETAIL: '/runs/:runId',\n /** GET /jobs - List all jobs */\n JOBS: '/jobs',\n /** GET /jobs/:jobId - Get job details */\n JOB_DETAIL: '/jobs/:jobId',\n /** GET /jobs/:jobId/logs - Get job logs */\n JOB_LOGS: '/jobs/:jobId/logs',\n /** GET /jobs/:jobId/steps - Get job execution steps */\n JOB_STEPS: '/jobs/:jobId/steps',\n /** POST /jobs/:jobId/cancel - Cancel a job */\n JOB_CANCEL: '/jobs/:jobId/cancel',\n /** GET /cron - List cron jobs */\n CRON: '/cron',\n /** GET /runs/:runId/pending-approvals - List pending approvals */\n PENDING_APPROVALS: '/runs/:runId/pending-approvals',\n /** POST /runs/:runId/approve - Resolve an approval */\n RESOLVE_APPROVAL: '/runs/:runId/approve',\n} as const\n"]}
@@ -3,7 +3,7 @@ import { RunState } from '@kb-labs/workflow-constants';
3
3
 
4
4
  declare const RunStateSchema: z.ZodEnum<["queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq", ...("queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq")[]]>;
5
5
  declare const JobStateSchema: z.ZodEnum<["queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "interrupted", ...("queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "interrupted")[]]>;
6
- declare const StepStateSchema: z.ZodEnum<["queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval", ...("queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval")[]]>;
6
+ declare const StepStateSchema: z.ZodEnum<["queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child", ...("queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child")[]]>;
7
7
  declare const IdempotencyKeySchema: z.ZodString;
8
8
  declare const ConcurrencyGroupSchema: z.ZodString;
9
9
  /**
@@ -3185,6 +3185,17 @@ declare const WorkflowInputFieldSchema: z.ZodObject<{
3185
3185
  default?: unknown;
3186
3186
  }>;
3187
3187
  type WorkflowInputField = z.infer<typeof WorkflowInputFieldSchema>;
3188
+ /** A stable workflow-level output exported to a parent invocation. */
3189
+ declare const WorkflowOutputFieldSchema: z.ZodObject<{
3190
+ source: z.ZodString;
3191
+ description: z.ZodOptional<z.ZodString>;
3192
+ }, "strip", z.ZodTypeAny, {
3193
+ source: string;
3194
+ description?: string | undefined;
3195
+ }, {
3196
+ source: string;
3197
+ description?: string | undefined;
3198
+ }>;
3188
3199
  declare const WorkflowSpecSchema: z.ZodEffects<z.ZodObject<{
3189
3200
  name: z.ZodString;
3190
3201
  version: z.ZodString;
@@ -3297,6 +3308,16 @@ declare const WorkflowSpecSchema: z.ZodEffects<z.ZodObject<{
3297
3308
  required?: boolean | undefined;
3298
3309
  default?: unknown;
3299
3310
  }>>>;
3311
+ outputs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
3312
+ source: z.ZodString;
3313
+ description: z.ZodOptional<z.ZodString>;
3314
+ }, "strip", z.ZodTypeAny, {
3315
+ source: string;
3316
+ description?: string | undefined;
3317
+ }, {
3318
+ source: string;
3319
+ description?: string | undefined;
3320
+ }>>>;
3300
3321
  env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3301
3322
  secrets: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3302
3323
  jobs: z.ZodRecord<z.ZodString, z.ZodObject<{
@@ -5238,6 +5259,10 @@ declare const WorkflowSpecSchema: z.ZodEffects<z.ZodObject<{
5238
5259
  required?: boolean | undefined;
5239
5260
  default?: unknown;
5240
5261
  }> | undefined;
5262
+ outputs?: Record<string, {
5263
+ source: string;
5264
+ description?: string | undefined;
5265
+ }> | undefined;
5241
5266
  phases?: Record<string, {
5242
5267
  label: string;
5243
5268
  description?: string | undefined;
@@ -5474,6 +5499,10 @@ declare const WorkflowSpecSchema: z.ZodEffects<z.ZodObject<{
5474
5499
  required?: boolean | undefined;
5475
5500
  default?: unknown;
5476
5501
  }> | undefined;
5502
+ outputs?: Record<string, {
5503
+ source: string;
5504
+ description?: string | undefined;
5505
+ }> | undefined;
5477
5506
  phases?: Record<string, {
5478
5507
  label: string;
5479
5508
  description?: string | undefined;
@@ -5710,6 +5739,10 @@ declare const WorkflowSpecSchema: z.ZodEffects<z.ZodObject<{
5710
5739
  required?: boolean | undefined;
5711
5740
  default?: unknown;
5712
5741
  }> | undefined;
5742
+ outputs?: Record<string, {
5743
+ source: string;
5744
+ description?: string | undefined;
5745
+ }> | undefined;
5713
5746
  phases?: Record<string, {
5714
5747
  label: string;
5715
5748
  description?: string | undefined;
@@ -5946,6 +5979,10 @@ declare const WorkflowSpecSchema: z.ZodEffects<z.ZodObject<{
5946
5979
  required?: boolean | undefined;
5947
5980
  default?: unknown;
5948
5981
  }> | undefined;
5982
+ outputs?: Record<string, {
5983
+ source: string;
5984
+ description?: string | undefined;
5985
+ }> | undefined;
5949
5986
  phases?: Record<string, {
5950
5987
  label: string;
5951
5988
  description?: string | undefined;
@@ -5976,7 +6013,7 @@ declare const StepRunSchema: z.ZodObject<{
5976
6013
  jobId: z.ZodString;
5977
6014
  name: z.ZodString;
5978
6015
  index: z.ZodNumber;
5979
- status: z.ZodEnum<["queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval", ...("queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval")[]]>;
6016
+ status: z.ZodEnum<["queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child", ...("queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child")[]]>;
5980
6017
  queuedAt: z.ZodString;
5981
6018
  startedAt: z.ZodOptional<z.ZodString>;
5982
6019
  finishedAt: z.ZodOptional<z.ZodString>;
@@ -6204,7 +6241,7 @@ declare const StepRunSchema: z.ZodObject<{
6204
6241
  */
6205
6242
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
6206
6243
  }, "strip", z.ZodTypeAny, {
6207
- status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval";
6244
+ status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child";
6208
6245
  name: string;
6209
6246
  id: string;
6210
6247
  runId: string;
@@ -6246,6 +6283,7 @@ declare const StepRunSchema: z.ZodObject<{
6246
6283
  };
6247
6284
  timeoutMs?: number | undefined;
6248
6285
  continueOnError?: boolean | undefined;
6286
+ outputs?: Record<string, unknown> | undefined;
6249
6287
  startedAt?: string | undefined;
6250
6288
  finishedAt?: string | undefined;
6251
6289
  durationMs?: number | undefined;
@@ -6256,12 +6294,11 @@ declare const StepRunSchema: z.ZodObject<{
6256
6294
  timestamp?: string | undefined;
6257
6295
  details?: Record<string, unknown> | undefined;
6258
6296
  } | undefined;
6259
- outputs?: Record<string, unknown> | undefined;
6260
6297
  skipReason?: string | undefined;
6261
6298
  resolvedInputs?: Record<string, unknown> | undefined;
6262
6299
  metadata?: Record<string, unknown> | undefined;
6263
6300
  }, {
6264
- status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval";
6301
+ status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child";
6265
6302
  name: string;
6266
6303
  id: string;
6267
6304
  runId: string;
@@ -6302,6 +6339,7 @@ declare const StepRunSchema: z.ZodObject<{
6302
6339
  };
6303
6340
  timeoutMs?: number | undefined;
6304
6341
  continueOnError?: boolean | undefined;
6342
+ outputs?: Record<string, unknown> | undefined;
6305
6343
  startedAt?: string | undefined;
6306
6344
  finishedAt?: string | undefined;
6307
6345
  durationMs?: number | undefined;
@@ -6313,7 +6351,6 @@ declare const StepRunSchema: z.ZodObject<{
6313
6351
  timestamp?: string | undefined;
6314
6352
  details?: Record<string, unknown> | undefined;
6315
6353
  } | undefined;
6316
- outputs?: Record<string, unknown> | undefined;
6317
6354
  skipReason?: string | undefined;
6318
6355
  resolvedInputs?: Record<string, unknown> | undefined;
6319
6356
  metadata?: Record<string, unknown> | undefined;
@@ -6458,7 +6495,7 @@ declare const JobRunSchema: z.ZodObject<{
6458
6495
  jobId: z.ZodString;
6459
6496
  name: z.ZodString;
6460
6497
  index: z.ZodNumber;
6461
- status: z.ZodEnum<["queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval", ...("queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval")[]]>;
6498
+ status: z.ZodEnum<["queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child", ...("queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child")[]]>;
6462
6499
  queuedAt: z.ZodString;
6463
6500
  startedAt: z.ZodOptional<z.ZodString>;
6464
6501
  finishedAt: z.ZodOptional<z.ZodString>;
@@ -6686,7 +6723,7 @@ declare const JobRunSchema: z.ZodObject<{
6686
6723
  */
6687
6724
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
6688
6725
  }, "strip", z.ZodTypeAny, {
6689
- status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval";
6726
+ status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child";
6690
6727
  name: string;
6691
6728
  id: string;
6692
6729
  runId: string;
@@ -6728,6 +6765,7 @@ declare const JobRunSchema: z.ZodObject<{
6728
6765
  };
6729
6766
  timeoutMs?: number | undefined;
6730
6767
  continueOnError?: boolean | undefined;
6768
+ outputs?: Record<string, unknown> | undefined;
6731
6769
  startedAt?: string | undefined;
6732
6770
  finishedAt?: string | undefined;
6733
6771
  durationMs?: number | undefined;
@@ -6738,12 +6776,11 @@ declare const JobRunSchema: z.ZodObject<{
6738
6776
  timestamp?: string | undefined;
6739
6777
  details?: Record<string, unknown> | undefined;
6740
6778
  } | undefined;
6741
- outputs?: Record<string, unknown> | undefined;
6742
6779
  skipReason?: string | undefined;
6743
6780
  resolvedInputs?: Record<string, unknown> | undefined;
6744
6781
  metadata?: Record<string, unknown> | undefined;
6745
6782
  }, {
6746
- status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval";
6783
+ status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child";
6747
6784
  name: string;
6748
6785
  id: string;
6749
6786
  runId: string;
@@ -6784,6 +6821,7 @@ declare const JobRunSchema: z.ZodObject<{
6784
6821
  };
6785
6822
  timeoutMs?: number | undefined;
6786
6823
  continueOnError?: boolean | undefined;
6824
+ outputs?: Record<string, unknown> | undefined;
6787
6825
  startedAt?: string | undefined;
6788
6826
  finishedAt?: string | undefined;
6789
6827
  durationMs?: number | undefined;
@@ -6795,7 +6833,6 @@ declare const JobRunSchema: z.ZodObject<{
6795
6833
  timestamp?: string | undefined;
6796
6834
  details?: Record<string, unknown> | undefined;
6797
6835
  } | undefined;
6798
- outputs?: Record<string, unknown> | undefined;
6799
6836
  skipReason?: string | undefined;
6800
6837
  resolvedInputs?: Record<string, unknown> | undefined;
6801
6838
  metadata?: Record<string, unknown> | undefined;
@@ -6806,7 +6843,7 @@ declare const JobRunSchema: z.ZodObject<{
6806
6843
  runId: string;
6807
6844
  runsOn: "local" | "sandbox";
6808
6845
  steps: {
6809
- status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval";
6846
+ status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child";
6810
6847
  name: string;
6811
6848
  id: string;
6812
6849
  runId: string;
@@ -6848,6 +6885,7 @@ declare const JobRunSchema: z.ZodObject<{
6848
6885
  };
6849
6886
  timeoutMs?: number | undefined;
6850
6887
  continueOnError?: boolean | undefined;
6888
+ outputs?: Record<string, unknown> | undefined;
6851
6889
  startedAt?: string | undefined;
6852
6890
  finishedAt?: string | undefined;
6853
6891
  durationMs?: number | undefined;
@@ -6858,7 +6896,6 @@ declare const JobRunSchema: z.ZodObject<{
6858
6896
  timestamp?: string | undefined;
6859
6897
  details?: Record<string, unknown> | undefined;
6860
6898
  } | undefined;
6861
- outputs?: Record<string, unknown> | undefined;
6862
6899
  skipReason?: string | undefined;
6863
6900
  resolvedInputs?: Record<string, unknown> | undefined;
6864
6901
  metadata?: Record<string, unknown> | undefined;
@@ -6920,7 +6957,7 @@ declare const JobRunSchema: z.ZodObject<{
6920
6957
  runId: string;
6921
6958
  runsOn: "local" | "sandbox";
6922
6959
  steps: {
6923
- status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval";
6960
+ status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child";
6924
6961
  name: string;
6925
6962
  id: string;
6926
6963
  runId: string;
@@ -6961,6 +6998,7 @@ declare const JobRunSchema: z.ZodObject<{
6961
6998
  };
6962
6999
  timeoutMs?: number | undefined;
6963
7000
  continueOnError?: boolean | undefined;
7001
+ outputs?: Record<string, unknown> | undefined;
6964
7002
  startedAt?: string | undefined;
6965
7003
  finishedAt?: string | undefined;
6966
7004
  durationMs?: number | undefined;
@@ -6972,7 +7010,6 @@ declare const JobRunSchema: z.ZodObject<{
6972
7010
  timestamp?: string | undefined;
6973
7011
  details?: Record<string, unknown> | undefined;
6974
7012
  } | undefined;
6975
- outputs?: Record<string, unknown> | undefined;
6976
7013
  skipReason?: string | undefined;
6977
7014
  resolvedInputs?: Record<string, unknown> | undefined;
6978
7015
  metadata?: Record<string, unknown> | undefined;
@@ -7079,6 +7116,32 @@ declare const RunMetadataSchema: z.ZodObject<{
7079
7116
  parentRunId: z.ZodOptional<z.ZodString>;
7080
7117
  parentJobId: z.ZodOptional<z.ZodString>;
7081
7118
  parentStepId: z.ZodOptional<z.ZodString>;
7119
+ /** Root run and complete workflow ancestry make nested invocation auditable
7120
+ * and allow the engine to reject indirect cycles (A → B → A). */
7121
+ rootRunId: z.ZodOptional<z.ZodString>;
7122
+ workflowAncestors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
7123
+ outputDeclarations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
7124
+ source: z.ZodString;
7125
+ description: z.ZodOptional<z.ZodString>;
7126
+ }, "strip", z.ZodTypeAny, {
7127
+ source: string;
7128
+ description?: string | undefined;
7129
+ }, {
7130
+ source: string;
7131
+ description?: string | undefined;
7132
+ }>>>;
7133
+ /** Persisted binding owned by the root invocation and borrowed by children. */
7134
+ executionWorkspace: z.ZodOptional<z.ZodObject<{
7135
+ workspaceId: z.ZodString;
7136
+ rootPath: z.ZodString;
7137
+ }, "strip", z.ZodTypeAny, {
7138
+ workspaceId: string;
7139
+ rootPath: string;
7140
+ }, {
7141
+ workspaceId: string;
7142
+ rootPath: string;
7143
+ }>>;
7144
+ workspaceOwnerRunId: z.ZodOptional<z.ZodString>;
7082
7145
  }, "strip", z.ZodTypeAny, {
7083
7146
  target?: {
7084
7147
  environmentId?: string | undefined;
@@ -7094,6 +7157,17 @@ declare const RunMetadataSchema: z.ZodObject<{
7094
7157
  concurrencyGroup?: string | undefined;
7095
7158
  workflowId?: string | undefined;
7096
7159
  workflowDepth?: number | undefined;
7160
+ rootRunId?: string | undefined;
7161
+ workflowAncestors?: string[] | undefined;
7162
+ outputDeclarations?: Record<string, {
7163
+ source: string;
7164
+ description?: string | undefined;
7165
+ }> | undefined;
7166
+ executionWorkspace?: {
7167
+ workspaceId: string;
7168
+ rootPath: string;
7169
+ } | undefined;
7170
+ workspaceOwnerRunId?: string | undefined;
7097
7171
  }, {
7098
7172
  target?: {
7099
7173
  environmentId?: string | undefined;
@@ -7109,6 +7183,17 @@ declare const RunMetadataSchema: z.ZodObject<{
7109
7183
  concurrencyGroup?: string | undefined;
7110
7184
  workflowId?: string | undefined;
7111
7185
  workflowDepth?: number | undefined;
7186
+ rootRunId?: string | undefined;
7187
+ workflowAncestors?: string[] | undefined;
7188
+ outputDeclarations?: Record<string, {
7189
+ source: string;
7190
+ description?: string | undefined;
7191
+ }> | undefined;
7192
+ executionWorkspace?: {
7193
+ workspaceId: string;
7194
+ rootPath: string;
7195
+ } | undefined;
7196
+ workspaceOwnerRunId?: string | undefined;
7112
7197
  }>;
7113
7198
  declare const ResultErrorSchema: z.ZodObject<{
7114
7199
  message: z.ZodString;
@@ -7214,6 +7299,7 @@ declare const ExecutionResultSchema: z.ZodObject<{
7214
7299
  }, "strip", z.ZodTypeAny, {
7215
7300
  status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq";
7216
7301
  summary?: string | undefined;
7302
+ outputs?: Record<string, unknown> | undefined;
7217
7303
  details?: Record<string, unknown> | undefined;
7218
7304
  startedAt?: string | undefined;
7219
7305
  error?: {
@@ -7221,7 +7307,6 @@ declare const ExecutionResultSchema: z.ZodObject<{
7221
7307
  code?: string | undefined;
7222
7308
  details?: Record<string, unknown> | undefined;
7223
7309
  } | undefined;
7224
- outputs?: Record<string, unknown> | undefined;
7225
7310
  completedAt?: string | undefined;
7226
7311
  metrics?: {
7227
7312
  timeMs?: number | undefined;
@@ -7238,6 +7323,7 @@ declare const ExecutionResultSchema: z.ZodObject<{
7238
7323
  }, {
7239
7324
  status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq";
7240
7325
  summary?: string | undefined;
7326
+ outputs?: Record<string, unknown> | undefined;
7241
7327
  details?: Record<string, unknown> | undefined;
7242
7328
  startedAt?: string | undefined;
7243
7329
  error?: {
@@ -7245,7 +7331,6 @@ declare const ExecutionResultSchema: z.ZodObject<{
7245
7331
  code?: string | undefined;
7246
7332
  details?: Record<string, unknown> | undefined;
7247
7333
  } | undefined;
7248
- outputs?: Record<string, unknown> | undefined;
7249
7334
  completedAt?: string | undefined;
7250
7335
  metrics?: {
7251
7336
  timeMs?: number | undefined;
@@ -7439,7 +7524,7 @@ declare const RunSchema: z.ZodObject<{
7439
7524
  jobId: z.ZodString;
7440
7525
  name: z.ZodString;
7441
7526
  index: z.ZodNumber;
7442
- status: z.ZodEnum<["queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval", ...("queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval")[]]>;
7527
+ status: z.ZodEnum<["queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child", ...("queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child")[]]>;
7443
7528
  queuedAt: z.ZodString;
7444
7529
  startedAt: z.ZodOptional<z.ZodString>;
7445
7530
  finishedAt: z.ZodOptional<z.ZodString>;
@@ -7667,7 +7752,7 @@ declare const RunSchema: z.ZodObject<{
7667
7752
  */
7668
7753
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
7669
7754
  }, "strip", z.ZodTypeAny, {
7670
- status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval";
7755
+ status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child";
7671
7756
  name: string;
7672
7757
  id: string;
7673
7758
  runId: string;
@@ -7709,6 +7794,7 @@ declare const RunSchema: z.ZodObject<{
7709
7794
  };
7710
7795
  timeoutMs?: number | undefined;
7711
7796
  continueOnError?: boolean | undefined;
7797
+ outputs?: Record<string, unknown> | undefined;
7712
7798
  startedAt?: string | undefined;
7713
7799
  finishedAt?: string | undefined;
7714
7800
  durationMs?: number | undefined;
@@ -7719,12 +7805,11 @@ declare const RunSchema: z.ZodObject<{
7719
7805
  timestamp?: string | undefined;
7720
7806
  details?: Record<string, unknown> | undefined;
7721
7807
  } | undefined;
7722
- outputs?: Record<string, unknown> | undefined;
7723
7808
  skipReason?: string | undefined;
7724
7809
  resolvedInputs?: Record<string, unknown> | undefined;
7725
7810
  metadata?: Record<string, unknown> | undefined;
7726
7811
  }, {
7727
- status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval";
7812
+ status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child";
7728
7813
  name: string;
7729
7814
  id: string;
7730
7815
  runId: string;
@@ -7765,6 +7850,7 @@ declare const RunSchema: z.ZodObject<{
7765
7850
  };
7766
7851
  timeoutMs?: number | undefined;
7767
7852
  continueOnError?: boolean | undefined;
7853
+ outputs?: Record<string, unknown> | undefined;
7768
7854
  startedAt?: string | undefined;
7769
7855
  finishedAt?: string | undefined;
7770
7856
  durationMs?: number | undefined;
@@ -7776,7 +7862,6 @@ declare const RunSchema: z.ZodObject<{
7776
7862
  timestamp?: string | undefined;
7777
7863
  details?: Record<string, unknown> | undefined;
7778
7864
  } | undefined;
7779
- outputs?: Record<string, unknown> | undefined;
7780
7865
  skipReason?: string | undefined;
7781
7866
  resolvedInputs?: Record<string, unknown> | undefined;
7782
7867
  metadata?: Record<string, unknown> | undefined;
@@ -7787,7 +7872,7 @@ declare const RunSchema: z.ZodObject<{
7787
7872
  runId: string;
7788
7873
  runsOn: "local" | "sandbox";
7789
7874
  steps: {
7790
- status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval";
7875
+ status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child";
7791
7876
  name: string;
7792
7877
  id: string;
7793
7878
  runId: string;
@@ -7829,6 +7914,7 @@ declare const RunSchema: z.ZodObject<{
7829
7914
  };
7830
7915
  timeoutMs?: number | undefined;
7831
7916
  continueOnError?: boolean | undefined;
7917
+ outputs?: Record<string, unknown> | undefined;
7832
7918
  startedAt?: string | undefined;
7833
7919
  finishedAt?: string | undefined;
7834
7920
  durationMs?: number | undefined;
@@ -7839,7 +7925,6 @@ declare const RunSchema: z.ZodObject<{
7839
7925
  timestamp?: string | undefined;
7840
7926
  details?: Record<string, unknown> | undefined;
7841
7927
  } | undefined;
7842
- outputs?: Record<string, unknown> | undefined;
7843
7928
  skipReason?: string | undefined;
7844
7929
  resolvedInputs?: Record<string, unknown> | undefined;
7845
7930
  metadata?: Record<string, unknown> | undefined;
@@ -7901,7 +7986,7 @@ declare const RunSchema: z.ZodObject<{
7901
7986
  runId: string;
7902
7987
  runsOn: "local" | "sandbox";
7903
7988
  steps: {
7904
- status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval";
7989
+ status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child";
7905
7990
  name: string;
7906
7991
  id: string;
7907
7992
  runId: string;
@@ -7942,6 +8027,7 @@ declare const RunSchema: z.ZodObject<{
7942
8027
  };
7943
8028
  timeoutMs?: number | undefined;
7944
8029
  continueOnError?: boolean | undefined;
8030
+ outputs?: Record<string, unknown> | undefined;
7945
8031
  startedAt?: string | undefined;
7946
8032
  finishedAt?: string | undefined;
7947
8033
  durationMs?: number | undefined;
@@ -7953,7 +8039,6 @@ declare const RunSchema: z.ZodObject<{
7953
8039
  timestamp?: string | undefined;
7954
8040
  details?: Record<string, unknown> | undefined;
7955
8041
  } | undefined;
7956
- outputs?: Record<string, unknown> | undefined;
7957
8042
  skipReason?: string | undefined;
7958
8043
  resolvedInputs?: Record<string, unknown> | undefined;
7959
8044
  metadata?: Record<string, unknown> | undefined;
@@ -8036,6 +8121,32 @@ declare const RunSchema: z.ZodObject<{
8036
8121
  parentRunId: z.ZodOptional<z.ZodString>;
8037
8122
  parentJobId: z.ZodOptional<z.ZodString>;
8038
8123
  parentStepId: z.ZodOptional<z.ZodString>;
8124
+ /** Root run and complete workflow ancestry make nested invocation auditable
8125
+ * and allow the engine to reject indirect cycles (A → B → A). */
8126
+ rootRunId: z.ZodOptional<z.ZodString>;
8127
+ workflowAncestors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
8128
+ outputDeclarations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
8129
+ source: z.ZodString;
8130
+ description: z.ZodOptional<z.ZodString>;
8131
+ }, "strip", z.ZodTypeAny, {
8132
+ source: string;
8133
+ description?: string | undefined;
8134
+ }, {
8135
+ source: string;
8136
+ description?: string | undefined;
8137
+ }>>>;
8138
+ /** Persisted binding owned by the root invocation and borrowed by children. */
8139
+ executionWorkspace: z.ZodOptional<z.ZodObject<{
8140
+ workspaceId: z.ZodString;
8141
+ rootPath: z.ZodString;
8142
+ }, "strip", z.ZodTypeAny, {
8143
+ workspaceId: string;
8144
+ rootPath: string;
8145
+ }, {
8146
+ workspaceId: string;
8147
+ rootPath: string;
8148
+ }>>;
8149
+ workspaceOwnerRunId: z.ZodOptional<z.ZodString>;
8039
8150
  }, "strip", z.ZodTypeAny, {
8040
8151
  target?: {
8041
8152
  environmentId?: string | undefined;
@@ -8051,6 +8162,17 @@ declare const RunSchema: z.ZodObject<{
8051
8162
  concurrencyGroup?: string | undefined;
8052
8163
  workflowId?: string | undefined;
8053
8164
  workflowDepth?: number | undefined;
8165
+ rootRunId?: string | undefined;
8166
+ workflowAncestors?: string[] | undefined;
8167
+ outputDeclarations?: Record<string, {
8168
+ source: string;
8169
+ description?: string | undefined;
8170
+ }> | undefined;
8171
+ executionWorkspace?: {
8172
+ workspaceId: string;
8173
+ rootPath: string;
8174
+ } | undefined;
8175
+ workspaceOwnerRunId?: string | undefined;
8054
8176
  }, {
8055
8177
  target?: {
8056
8178
  environmentId?: string | undefined;
@@ -8066,6 +8188,17 @@ declare const RunSchema: z.ZodObject<{
8066
8188
  concurrencyGroup?: string | undefined;
8067
8189
  workflowId?: string | undefined;
8068
8190
  workflowDepth?: number | undefined;
8191
+ rootRunId?: string | undefined;
8192
+ workflowAncestors?: string[] | undefined;
8193
+ outputDeclarations?: Record<string, {
8194
+ source: string;
8195
+ description?: string | undefined;
8196
+ }> | undefined;
8197
+ executionWorkspace?: {
8198
+ workspaceId: string;
8199
+ rootPath: string;
8200
+ } | undefined;
8201
+ workspaceOwnerRunId?: string | undefined;
8069
8202
  }>>;
8070
8203
  result: z.ZodOptional<z.ZodObject<{
8071
8204
  status: z.ZodEnum<["queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq", ...("queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq")[]]>;
@@ -8124,6 +8257,7 @@ declare const RunSchema: z.ZodObject<{
8124
8257
  }, "strip", z.ZodTypeAny, {
8125
8258
  status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq";
8126
8259
  summary?: string | undefined;
8260
+ outputs?: Record<string, unknown> | undefined;
8127
8261
  details?: Record<string, unknown> | undefined;
8128
8262
  startedAt?: string | undefined;
8129
8263
  error?: {
@@ -8131,7 +8265,6 @@ declare const RunSchema: z.ZodObject<{
8131
8265
  code?: string | undefined;
8132
8266
  details?: Record<string, unknown> | undefined;
8133
8267
  } | undefined;
8134
- outputs?: Record<string, unknown> | undefined;
8135
8268
  completedAt?: string | undefined;
8136
8269
  metrics?: {
8137
8270
  timeMs?: number | undefined;
@@ -8148,6 +8281,7 @@ declare const RunSchema: z.ZodObject<{
8148
8281
  }, {
8149
8282
  status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq";
8150
8283
  summary?: string | undefined;
8284
+ outputs?: Record<string, unknown> | undefined;
8151
8285
  details?: Record<string, unknown> | undefined;
8152
8286
  startedAt?: string | undefined;
8153
8287
  error?: {
@@ -8155,7 +8289,6 @@ declare const RunSchema: z.ZodObject<{
8155
8289
  code?: string | undefined;
8156
8290
  details?: Record<string, unknown> | undefined;
8157
8291
  } | undefined;
8158
- outputs?: Record<string, unknown> | undefined;
8159
8292
  completedAt?: string | undefined;
8160
8293
  metrics?: {
8161
8294
  timeMs?: number | undefined;
@@ -8181,7 +8314,7 @@ declare const RunSchema: z.ZodObject<{
8181
8314
  runId: string;
8182
8315
  runsOn: "local" | "sandbox";
8183
8316
  steps: {
8184
- status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval";
8317
+ status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child";
8185
8318
  name: string;
8186
8319
  id: string;
8187
8320
  runId: string;
@@ -8223,6 +8356,7 @@ declare const RunSchema: z.ZodObject<{
8223
8356
  };
8224
8357
  timeoutMs?: number | undefined;
8225
8358
  continueOnError?: boolean | undefined;
8359
+ outputs?: Record<string, unknown> | undefined;
8226
8360
  startedAt?: string | undefined;
8227
8361
  finishedAt?: string | undefined;
8228
8362
  durationMs?: number | undefined;
@@ -8233,7 +8367,6 @@ declare const RunSchema: z.ZodObject<{
8233
8367
  timestamp?: string | undefined;
8234
8368
  details?: Record<string, unknown> | undefined;
8235
8369
  } | undefined;
8236
- outputs?: Record<string, unknown> | undefined;
8237
8370
  skipReason?: string | undefined;
8238
8371
  resolvedInputs?: Record<string, unknown> | undefined;
8239
8372
  metadata?: Record<string, unknown> | undefined;
@@ -8323,11 +8456,23 @@ declare const RunSchema: z.ZodObject<{
8323
8456
  concurrencyGroup?: string | undefined;
8324
8457
  workflowId?: string | undefined;
8325
8458
  workflowDepth?: number | undefined;
8459
+ rootRunId?: string | undefined;
8460
+ workflowAncestors?: string[] | undefined;
8461
+ outputDeclarations?: Record<string, {
8462
+ source: string;
8463
+ description?: string | undefined;
8464
+ }> | undefined;
8465
+ executionWorkspace?: {
8466
+ workspaceId: string;
8467
+ rootPath: string;
8468
+ } | undefined;
8469
+ workspaceOwnerRunId?: string | undefined;
8326
8470
  } | undefined;
8327
8471
  tenantId?: string | undefined;
8328
8472
  result?: {
8329
8473
  status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq";
8330
8474
  summary?: string | undefined;
8475
+ outputs?: Record<string, unknown> | undefined;
8331
8476
  details?: Record<string, unknown> | undefined;
8332
8477
  startedAt?: string | undefined;
8333
8478
  error?: {
@@ -8335,7 +8480,6 @@ declare const RunSchema: z.ZodObject<{
8335
8480
  code?: string | undefined;
8336
8481
  details?: Record<string, unknown> | undefined;
8337
8482
  } | undefined;
8338
- outputs?: Record<string, unknown> | undefined;
8339
8483
  completedAt?: string | undefined;
8340
8484
  metrics?: {
8341
8485
  timeMs?: number | undefined;
@@ -8361,7 +8505,7 @@ declare const RunSchema: z.ZodObject<{
8361
8505
  runId: string;
8362
8506
  runsOn: "local" | "sandbox";
8363
8507
  steps: {
8364
- status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval";
8508
+ status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq" | "waiting_approval" | "waiting_child";
8365
8509
  name: string;
8366
8510
  id: string;
8367
8511
  runId: string;
@@ -8402,6 +8546,7 @@ declare const RunSchema: z.ZodObject<{
8402
8546
  };
8403
8547
  timeoutMs?: number | undefined;
8404
8548
  continueOnError?: boolean | undefined;
8549
+ outputs?: Record<string, unknown> | undefined;
8405
8550
  startedAt?: string | undefined;
8406
8551
  finishedAt?: string | undefined;
8407
8552
  durationMs?: number | undefined;
@@ -8413,7 +8558,6 @@ declare const RunSchema: z.ZodObject<{
8413
8558
  timestamp?: string | undefined;
8414
8559
  details?: Record<string, unknown> | undefined;
8415
8560
  } | undefined;
8416
- outputs?: Record<string, unknown> | undefined;
8417
8561
  skipReason?: string | undefined;
8418
8562
  resolvedInputs?: Record<string, unknown> | undefined;
8419
8563
  metadata?: Record<string, unknown> | undefined;
@@ -8503,11 +8647,23 @@ declare const RunSchema: z.ZodObject<{
8503
8647
  concurrencyGroup?: string | undefined;
8504
8648
  workflowId?: string | undefined;
8505
8649
  workflowDepth?: number | undefined;
8650
+ rootRunId?: string | undefined;
8651
+ workflowAncestors?: string[] | undefined;
8652
+ outputDeclarations?: Record<string, {
8653
+ source: string;
8654
+ description?: string | undefined;
8655
+ }> | undefined;
8656
+ executionWorkspace?: {
8657
+ workspaceId: string;
8658
+ rootPath: string;
8659
+ } | undefined;
8660
+ workspaceOwnerRunId?: string | undefined;
8506
8661
  } | undefined;
8507
8662
  tenantId?: string | undefined;
8508
8663
  result?: {
8509
8664
  status: "queued" | "running" | "success" | "failed" | "cancelled" | "skipped" | "dlq";
8510
8665
  summary?: string | undefined;
8666
+ outputs?: Record<string, unknown> | undefined;
8511
8667
  details?: Record<string, unknown> | undefined;
8512
8668
  startedAt?: string | undefined;
8513
8669
  error?: {
@@ -8515,7 +8671,6 @@ declare const RunSchema: z.ZodObject<{
8515
8671
  code?: string | undefined;
8516
8672
  details?: Record<string, unknown> | undefined;
8517
8673
  } | undefined;
8518
- outputs?: Record<string, unknown> | undefined;
8519
8674
  completedAt?: string | undefined;
8520
8675
  metrics?: {
8521
8676
  timeMs?: number | undefined;
@@ -8533,6 +8688,7 @@ declare const RunSchema: z.ZodObject<{
8533
8688
  }>;
8534
8689
 
8535
8690
  type WorkflowSpec = z.infer<typeof WorkflowSpecSchema>;
8691
+ type WorkflowOutputField = z.infer<typeof WorkflowOutputFieldSchema>;
8536
8692
  type JobSpec = z.infer<typeof JobSpecSchema>;
8537
8693
  type StepSpec = z.infer<typeof StepSpecSchema>;
8538
8694
  type Phase = z.infer<typeof PhaseSchema>;
@@ -9855,4 +10011,4 @@ interface WorkflowLogEvent {
9855
10011
  timestamp?: string;
9856
10012
  }
9857
10013
 
9858
- export { type JobSubmissionRequest as $, type ApprovalReviewItem as A, type JobHooks as B, type ConcurrencyGroup as C, type DashboardStatsResponse as D, type ExpressionContext as E, type FileLintResult as F, JobHooksSchema as G, type JobListFilter as H, type IWorkflowEngine as I, JobArtifactsSchema as J, type JobListResponse as K, JobListResponseSchema as L, type JobLogsResponse as M, JobLogsResponseSchema as N, type JobRun as O, JobRunSchema as P, type JobSpec as Q, JobSpecSchema as R, JobStateSchema as S, type JobStatusInfo as T, JobStatusInfoSchema as U, JobStatusSchema as V, type WorkflowInvocationSpec as W, type JobStepInfo as X, JobStepInfoSchema as Y, type JobStepsResponse as Z, JobStepsResponseSchema as _, ApprovalReviewItemSchema as a, type JobSubmissionResponse as a0, type ListRunsFilter as a1, type Phase as a2, PhaseSchema as a3, type ResultError as a4, ResultErrorSchema as a5, type ResultMetrics as a6, ResultMetricsSchema as a7, type RetryFailureKind as a8, RetryFailureKindSchema as a9, WorkflowListResponseSchema as aA, type WorkflowLogEvent as aB, type WorkflowRerunRequest as aC, WorkflowRerunRequestSchema as aD, type WorkflowRestartRequest as aE, WorkflowRestartRequestSchema as aF, type WorkflowRestartResponse as aG, type WorkflowRun as aH, type WorkflowRunHistoryResponse as aI, WorkflowRunHistoryResponseSchema as aJ, type WorkflowRunInfo as aK, WorkflowRunInfoSchema as aL, type WorkflowRunRequest as aM, WorkflowRunRequestSchema as aN, type WorkflowSpec as aO, WorkflowSpecSchema as aP, WorkflowTriggerSchema as aQ, type WorkflowValidationResult as aR, RetryModeSchema as aa, type RetryPolicy as ab, RetryPolicySchema as ac, type RunMetadata as ad, RunMetadataSchema as ae, RunSchema as af, RunStateSchema as ag, type RunTrigger as ah, RunTriggerSchema as ai, type StepArtifact as aj, StepArtifactSchema as ak, type StepProgress as al, StepProgressSchema as am, type StepRun as an, StepRunErrorSchema as ao, StepRunSchema as ap, type StepSpec as aq, StepSpecSchema as ar, StepStateSchema as as, TenantIdSchema as at, TimeoutSchema as au, type WorkflowInfo as av, WorkflowInfoSchema as aw, type WorkflowInputField as ax, WorkflowInputFieldSchema as ay, type WorkflowListResponse as az, type ArtifactMergeConfig as b, ArtifactMergeConfigSchema as c, type ArtifactMergeSource as d, ArtifactMergeSourceSchema as e, type ArtifactMergeStrategy as f, ArtifactMergeStrategySchema as g, ConcurrencyGroupSchema as h, type CreateRunInput as i, type CronInfo as j, CronInfoSchema as k, type CronListResponse as l, CronListResponseSchema as m, type CronRegistrationRequest as n, DashboardStatsResponseSchema as o, type ExecutionResult as p, ExecutionResultSchema as q, type ExecutionTarget as r, ExecutionTargetSchema as s, type IdempotencyKey as t, IdempotencyKeySchema as u, type IsolationProfile as v, IsolationProfileSchema as w, type JobCancelResponse as x, JobCancelResponseSchema as y, JobConcurrencySchema as z };
10014
+ export { type JobSubmissionRequest as $, type ApprovalReviewItem as A, type JobHooks as B, type ConcurrencyGroup as C, type DashboardStatsResponse as D, type ExpressionContext as E, type FileLintResult as F, JobHooksSchema as G, type JobListFilter as H, type IWorkflowEngine as I, JobArtifactsSchema as J, type JobListResponse as K, JobListResponseSchema as L, type JobLogsResponse as M, JobLogsResponseSchema as N, type JobRun as O, JobRunSchema as P, type JobSpec as Q, JobSpecSchema as R, JobStateSchema as S, type JobStatusInfo as T, JobStatusInfoSchema as U, JobStatusSchema as V, type WorkflowInvocationSpec as W, type JobStepInfo as X, JobStepInfoSchema as Y, type JobStepsResponse as Z, JobStepsResponseSchema as _, ApprovalReviewItemSchema as a, type JobSubmissionResponse as a0, type ListRunsFilter as a1, type Phase as a2, PhaseSchema as a3, type ResultError as a4, ResultErrorSchema as a5, type ResultMetrics as a6, ResultMetricsSchema as a7, type RetryFailureKind as a8, RetryFailureKindSchema as a9, WorkflowListResponseSchema as aA, type WorkflowLogEvent as aB, type WorkflowOutputField as aC, WorkflowOutputFieldSchema as aD, type WorkflowRerunRequest as aE, WorkflowRerunRequestSchema as aF, type WorkflowRestartRequest as aG, WorkflowRestartRequestSchema as aH, type WorkflowRestartResponse as aI, type WorkflowRun as aJ, type WorkflowRunHistoryResponse as aK, WorkflowRunHistoryResponseSchema as aL, type WorkflowRunInfo as aM, WorkflowRunInfoSchema as aN, type WorkflowRunRequest as aO, WorkflowRunRequestSchema as aP, type WorkflowSpec as aQ, WorkflowSpecSchema as aR, WorkflowTriggerSchema as aS, type WorkflowValidationResult as aT, RetryModeSchema as aa, type RetryPolicy as ab, RetryPolicySchema as ac, type RunMetadata as ad, RunMetadataSchema as ae, RunSchema as af, RunStateSchema as ag, type RunTrigger as ah, RunTriggerSchema as ai, type StepArtifact as aj, StepArtifactSchema as ak, type StepProgress as al, StepProgressSchema as am, type StepRun as an, StepRunErrorSchema as ao, StepRunSchema as ap, type StepSpec as aq, StepSpecSchema as ar, StepStateSchema as as, TenantIdSchema as at, TimeoutSchema as au, type WorkflowInfo as av, WorkflowInfoSchema as aw, type WorkflowInputField as ax, WorkflowInputFieldSchema as ay, type WorkflowListResponse as az, type ArtifactMergeConfig as b, ArtifactMergeConfigSchema as c, type ArtifactMergeSource as d, ArtifactMergeSourceSchema as e, type ArtifactMergeStrategy as f, ArtifactMergeStrategySchema as g, ConcurrencyGroupSchema as h, type CreateRunInput as i, type CronInfo as j, CronInfoSchema as k, type CronListResponse as l, CronListResponseSchema as m, type CronRegistrationRequest as n, DashboardStatsResponseSchema as o, type ExecutionResult as p, ExecutionResultSchema as q, type ExecutionTarget as r, ExecutionTargetSchema as s, type IdempotencyKey as t, IdempotencyKeySchema as u, type IsolationProfile as v, IsolationProfileSchema as w, type JobCancelResponse as x, JobCancelResponseSchema as y, JobConcurrencySchema as z };
@@ -1,3 +1,3 @@
1
1
  import 'zod';
2
- export { j as CronInfo, k as CronInfoSchema, l as CronListResponse, m as CronListResponseSchema, n as CronRegistrationRequest, D as DashboardStatsResponse, o as DashboardStatsResponseSchema, x as JobCancelResponse, y as JobCancelResponseSchema, H as JobListFilter, K as JobListResponse, L as JobListResponseSchema, M as JobLogsResponse, N as JobLogsResponseSchema, T as JobStatusInfo, U as JobStatusInfoSchema, V as JobStatusSchema, X as JobStepInfo, Y as JobStepInfoSchema, Z as JobStepsResponse, _ as JobStepsResponseSchema, $ as JobSubmissionRequest, a0 as JobSubmissionResponse, av as WorkflowInfo, aw as WorkflowInfoSchema, az as WorkflowListResponse, aA as WorkflowListResponseSchema, aB as WorkflowLogEvent, aC as WorkflowRerunRequest, aD as WorkflowRerunRequestSchema, aE as WorkflowRestartRequest, aF as WorkflowRestartRequestSchema, aG as WorkflowRestartResponse, aI as WorkflowRunHistoryResponse, aJ as WorkflowRunHistoryResponseSchema, aK as WorkflowRunInfo, aL as WorkflowRunInfoSchema, aM as WorkflowRunRequest, aN as WorkflowRunRequestSchema } from './rest-api-BZYyPvrG.js';
2
+ export { j as CronInfo, k as CronInfoSchema, l as CronListResponse, m as CronListResponseSchema, n as CronRegistrationRequest, D as DashboardStatsResponse, o as DashboardStatsResponseSchema, x as JobCancelResponse, y as JobCancelResponseSchema, H as JobListFilter, K as JobListResponse, L as JobListResponseSchema, M as JobLogsResponse, N as JobLogsResponseSchema, T as JobStatusInfo, U as JobStatusInfoSchema, V as JobStatusSchema, X as JobStepInfo, Y as JobStepInfoSchema, Z as JobStepsResponse, _ as JobStepsResponseSchema, $ as JobSubmissionRequest, a0 as JobSubmissionResponse, av as WorkflowInfo, aw as WorkflowInfoSchema, az as WorkflowListResponse, aA as WorkflowListResponseSchema, aB as WorkflowLogEvent, aE as WorkflowRerunRequest, aF as WorkflowRerunRequestSchema, aG as WorkflowRestartRequest, aH as WorkflowRestartRequestSchema, aI as WorkflowRestartResponse, aK as WorkflowRunHistoryResponse, aL as WorkflowRunHistoryResponseSchema, aM as WorkflowRunInfo, aN as WorkflowRunInfoSchema, aO as WorkflowRunRequest, aP as WorkflowRunRequestSchema } from './rest-api-wonOln0o.js';
3
3
  import '@kb-labs/workflow-constants';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kb-labs/workflow-contracts",
3
3
  "description": "Contracts, types and schemas for the KB Labs workflow engine.",
4
- "version": "2.116.14",
4
+ "version": "2.118.0",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -25,8 +25,8 @@
25
25
  ],
26
26
  "dependencies": {
27
27
  "zod": "^3.25.76",
28
- "@kb-labs/sdk": "2.115.1",
29
- "@kb-labs/workflow-constants": "2.116.14"
28
+ "@kb-labs/sdk": "2.115.3",
29
+ "@kb-labs/workflow-constants": "2.118.0"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/node": "^24.3.3",
@@ -37,7 +37,7 @@
37
37
  "tsup": "^8.5.0",
38
38
  "typescript": "^5.6.3",
39
39
  "vitest": "^3.2.6",
40
- "@kb-labs/devkit": "2.116.14"
40
+ "@kb-labs/devkit": "2.118.0"
41
41
  },
42
42
  "engines": {
43
43
  "node": ">=22.0.0",