@kb-labs/workflow-contracts 2.116.14 → 2.117.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 +2 -2
- package/dist/index.js +18 -2
- package/dist/index.js.map +1 -1
- package/dist/{rest-api-BZYyPvrG.d.ts → rest-api-wonOln0o.d.ts} +191 -35
- package/dist/rest-api.d.ts +1 -1
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { E as ExpressionContext, W as WorkflowInvocationSpec } from './rest-api-
|
|
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
|
|
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
|
|
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 };
|
package/dist/rest-api.d.ts
CHANGED
|
@@ -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,
|
|
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.
|
|
4
|
+
"version": "2.117.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.
|
|
29
|
-
"@kb-labs/workflow-constants": "2.
|
|
28
|
+
"@kb-labs/sdk": "2.115.2",
|
|
29
|
+
"@kb-labs/workflow-constants": "2.117.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.
|
|
40
|
+
"@kb-labs/devkit": "2.117.0"
|
|
41
41
|
},
|
|
42
42
|
"engines": {
|
|
43
43
|
"node": ">=22.0.0",
|