@kb-labs/workflow-contracts 2.94.0 → 2.96.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 +51 -16
- package/dist/index.js +55 -10
- package/dist/index.js.map +1 -1
- package/dist/{rest-api-BVWeRsk-.d.ts → rest-api-C7Qdk5Wo.d.ts} +1727 -1622
- package/dist/rest-api.d.ts +2 -1
- package/dist/rest-api.js +11 -2
- package/dist/rest-api.js.map +1 -1
- package/examples/04-invoice-approval.yml +25 -0
- package/package.json +4 -4
package/dist/rest-api.d.ts
CHANGED
|
@@ -1,2 +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,
|
|
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, at as WorkflowInfo, au as WorkflowInfoSchema, ax as WorkflowListResponse, ay as WorkflowListResponseSchema, az as WorkflowLogEvent, aA as WorkflowRerunRequest, aB as WorkflowRerunRequestSchema, aC as WorkflowRestartRequest, aD as WorkflowRestartRequestSchema, aE as WorkflowRestartResponse, aG as WorkflowRunHistoryResponse, aH as WorkflowRunHistoryResponseSchema, aI as WorkflowRunInfo, aJ as WorkflowRunInfoSchema, aK as WorkflowRunRequest, aL as WorkflowRunRequestSchema } from './rest-api-C7Qdk5Wo.js';
|
|
3
|
+
import '@kb-labs/workflow-constants';
|
package/dist/rest-api.js
CHANGED
|
@@ -50,7 +50,9 @@ var WorkflowInfoSchema = z.object({
|
|
|
50
50
|
source: z.enum(["manifest", "standalone", "plugin"]),
|
|
51
51
|
pluginId: z.string().optional(),
|
|
52
52
|
status: z.enum(["active", "inactive"]).optional(),
|
|
53
|
-
tags: z.array(z.string()).optional()
|
|
53
|
+
tags: z.array(z.string()).optional(),
|
|
54
|
+
version: z.string().optional(),
|
|
55
|
+
updatedAt: z.string().optional()
|
|
54
56
|
});
|
|
55
57
|
var WorkflowListResponseSchema = z.object({
|
|
56
58
|
workflows: z.array(WorkflowInfoSchema)
|
|
@@ -70,6 +72,13 @@ var WorkflowRunRequestSchema = z.object({
|
|
|
70
72
|
user: z.string().optional()
|
|
71
73
|
}).optional()
|
|
72
74
|
});
|
|
75
|
+
var WorkflowRerunRequestSchema = z.object({
|
|
76
|
+
failedOnly: z.boolean().optional()
|
|
77
|
+
});
|
|
78
|
+
var WorkflowRestartRequestSchema = z.object({
|
|
79
|
+
fromStepId: z.string().optional(),
|
|
80
|
+
env: z.record(z.string()).optional()
|
|
81
|
+
});
|
|
73
82
|
var DashboardStatsResponseSchema = z.object({
|
|
74
83
|
workflows: z.object({
|
|
75
84
|
total: z.number(),
|
|
@@ -155,6 +164,6 @@ var WorkflowRunHistoryResponseSchema = z.object({
|
|
|
155
164
|
total: z.number()
|
|
156
165
|
});
|
|
157
166
|
|
|
158
|
-
export { CronInfoSchema, CronListResponseSchema, DashboardStatsResponseSchema, JobCancelResponseSchema, JobListResponseSchema, JobLogsResponseSchema, JobStatusInfoSchema, JobStatusSchema, JobStepInfoSchema, JobStepsResponseSchema, WorkflowInfoSchema, WorkflowListResponseSchema, WorkflowRunHistoryResponseSchema, WorkflowRunInfoSchema, WorkflowRunRequestSchema };
|
|
167
|
+
export { CronInfoSchema, CronListResponseSchema, DashboardStatsResponseSchema, JobCancelResponseSchema, JobListResponseSchema, JobLogsResponseSchema, JobStatusInfoSchema, JobStatusSchema, JobStepInfoSchema, JobStepsResponseSchema, WorkflowInfoSchema, WorkflowListResponseSchema, WorkflowRerunRequestSchema, WorkflowRestartRequestSchema, WorkflowRunHistoryResponseSchema, WorkflowRunInfoSchema, WorkflowRunRequestSchema };
|
|
159
168
|
//# sourceMappingURL=rest-api.js.map
|
|
160
169
|
//# sourceMappingURL=rest-api.js.map
|
package/dist/rest-api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/rest-api.ts"],"names":[],"mappings":"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","file":"rest-api.js","sourcesContent":["/**\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'\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?: 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}\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})\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 * 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"]}
|
|
1
|
+
{"version":3,"sources":["../src/rest-api.ts"],"names":[],"mappings":"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","file":"rest-api.js","sourcesContent":["/**\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"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
name: 04 — Invoice Approval
|
|
2
|
+
description: >
|
|
3
|
+
Demonstrates passing a JSON object input to a shell step via --argjson.
|
|
4
|
+
Uses the standard '${{ inputs.X }}' pattern, which the engine rewrites
|
|
5
|
+
to a double-quoted "${_WF_...}" env var reference so jq receives valid JSON.
|
|
6
|
+
|
|
7
|
+
inputs:
|
|
8
|
+
invoice_payload:
|
|
9
|
+
type: object
|
|
10
|
+
description: Invoice data (vendor, amount, currency)
|
|
11
|
+
default:
|
|
12
|
+
vendor: Acme Corp
|
|
13
|
+
amount: 1500
|
|
14
|
+
currency: USD
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
process:
|
|
18
|
+
steps:
|
|
19
|
+
- name: Parse invoice
|
|
20
|
+
run: |
|
|
21
|
+
total=$(jq --argjson payload '${{ inputs.invoice_payload }}' -n '$payload.amount')
|
|
22
|
+
vendor=$(jq --argjson payload '${{ inputs.invoice_payload }}' -n '-r $payload.vendor')
|
|
23
|
+
echo "Approving ${total} for ${vendor}"
|
|
24
|
+
PAYLOAD=$(jq -cn --argjson p '${{ inputs.invoice_payload }}' '{approved: true, vendor: $p.vendor, amount: $p.amount}' | base64)
|
|
25
|
+
echo "::kb-output:base64::${PAYLOAD}"
|
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.96.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"zod": "^3.25.76",
|
|
28
28
|
"@kb-labs/sdk": "2.21.2",
|
|
29
|
-
"@kb-labs/workflow-constants": "2.
|
|
29
|
+
"@kb-labs/workflow-constants": "2.96.0"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@types/node": "^24.3.3",
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"rimraf": "^6.0.1",
|
|
37
37
|
"tsup": "^8.5.0",
|
|
38
38
|
"typescript": "^5.6.3",
|
|
39
|
-
"vitest": "^3.2.
|
|
40
|
-
"@kb-labs/devkit": "2.
|
|
39
|
+
"vitest": "^3.2.6",
|
|
40
|
+
"@kb-labs/devkit": "2.96.0"
|
|
41
41
|
},
|
|
42
42
|
"engines": {
|
|
43
43
|
"node": ">=20.0.0",
|