@geenius/ai-workflow 0.1.0 → 0.4.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/CHANGELOG.md +7 -0
- package/README.md +69 -1
- package/package.json +60 -27
- package/packages/convex/dist/index.d.ts +363 -0
- package/packages/convex/dist/index.js +200 -0
- package/packages/convex/dist/index.js.map +1 -0
- package/packages/react/dist/index.d.ts +466 -0
- package/packages/react/dist/index.js +13914 -0
- package/packages/react/dist/index.js.map +1 -0
- package/packages/react-css/{src/styles.css → dist/index.css} +107 -253
- package/packages/react-css/dist/index.css.map +1 -0
- package/packages/react-css/dist/index.d.ts +495 -0
- package/packages/react-css/dist/index.js +13901 -0
- package/packages/react-css/dist/index.js.map +1 -0
- package/packages/shared/dist/index.d.ts +1368 -0
- package/packages/shared/dist/index.js +1681 -0
- package/packages/shared/dist/index.js.map +1 -0
- package/packages/solidjs/dist/index.d.ts +452 -0
- package/packages/solidjs/dist/index.js +13830 -0
- package/packages/solidjs/dist/index.js.map +1 -0
- package/packages/solidjs-css/{src/styles.css → dist/index.css} +107 -253
- package/packages/solidjs-css/dist/index.css.map +1 -0
- package/packages/solidjs-css/dist/index.d.ts +471 -0
- package/packages/solidjs-css/dist/index.js +13774 -0
- package/packages/solidjs-css/dist/index.js.map +1 -0
- package/.changeset/config.json +0 -11
- package/.github/CODEOWNERS +0 -1
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -16
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -11
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -10
- package/.github/dependabot.yml +0 -11
- package/.github/workflows/ci.yml +0 -23
- package/.github/workflows/release.yml +0 -29
- package/.nvmrc +0 -1
- package/.project/ACCOUNT.yaml +0 -4
- package/.project/IDEAS.yaml +0 -7
- package/.project/PROJECT.yaml +0 -11
- package/.project/ROADMAP.yaml +0 -15
- package/CODE_OF_CONDUCT.md +0 -16
- package/CONTRIBUTING.md +0 -26
- package/SECURITY.md +0 -15
- package/SUPPORT.md +0 -8
- package/packages/convex/README.md +0 -1
- package/packages/convex/package.json +0 -12
- package/packages/convex/src/convex.config.ts +0 -3
- package/packages/convex/src/index.ts +0 -3
- package/packages/convex/src/mutations.ts +0 -36
- package/packages/convex/src/queries.ts +0 -19
- package/packages/convex/src/schema.ts +0 -24
- package/packages/convex/tsconfig.json +0 -25
- package/packages/react/README.md +0 -1
- package/packages/react/package.json +0 -46
- package/packages/react/src/components/ApprovalModal.tsx +0 -47
- package/packages/react/src/components/StepConfigPanel.tsx +0 -67
- package/packages/react/src/components/StepConnector.tsx +0 -47
- package/packages/react/src/components/StepNode.tsx +0 -38
- package/packages/react/src/components/StepPalette.tsx +0 -48
- package/packages/react/src/components/WorkflowCanvas.tsx +0 -42
- package/packages/react/src/components/WorkflowRunPanel.tsx +0 -64
- package/packages/react/src/components/WorkflowToolbar.tsx +0 -43
- package/packages/react/src/components/index.ts +0 -9
- package/packages/react/src/hooks/index.ts +0 -10
- package/packages/react/src/hooks/useApprovalGate.ts +0 -59
- package/packages/react/src/hooks/useWorkflow.ts +0 -39
- package/packages/react/src/hooks/useWorkflowBuilder.ts +0 -121
- package/packages/react/src/hooks/useWorkflowRun.ts +0 -75
- package/packages/react/src/hooks/useWorkflowStep.ts +0 -52
- package/packages/react/src/hooks/useWorkflowTemplates.ts +0 -54
- package/packages/react/src/index.ts +0 -16
- package/packages/react/src/pages/WorkflowBuilderPage.tsx +0 -81
- package/packages/react/src/pages/WorkflowRunsPage.tsx +0 -59
- package/packages/react/src/pages/index.ts +0 -3
- package/packages/react/tsconfig.json +0 -1
- package/packages/react/tsup.config.ts +0 -7
- package/packages/react-css/README.md +0 -1
- package/packages/react-css/package.json +0 -44
- package/packages/react-css/src/components/ApprovalModal.tsx +0 -6
- package/packages/react-css/src/components/StepConfigPanel.tsx +0 -7
- package/packages/react-css/src/components/StepConnector.tsx +0 -6
- package/packages/react-css/src/components/StepNode.tsx +0 -7
- package/packages/react-css/src/components/StepPalette.tsx +0 -6
- package/packages/react-css/src/components/WorkflowCanvas.tsx +0 -6
- package/packages/react-css/src/components/WorkflowRunPanel.tsx +0 -9
- package/packages/react-css/src/components/WorkflowToolbar.tsx +0 -4
- package/packages/react-css/src/components/index.ts +0 -9
- package/packages/react-css/src/hooks/index.ts +0 -3
- package/packages/react-css/src/hooks/useWorkflow.ts +0 -39
- package/packages/react-css/src/hooks/useWorkflowBuilder.ts +0 -121
- package/packages/react-css/src/index.ts +0 -7
- package/packages/react-css/src/pages/WorkflowBuilderPage.tsx +0 -16
- package/packages/react-css/src/pages/WorkflowRunsPage.tsx +0 -6
- package/packages/react-css/src/pages/index.ts +0 -3
- package/packages/react-css/tsconfig.json +0 -26
- package/packages/react-css/tsup.config.ts +0 -2
- package/packages/shared/README.md +0 -1
- package/packages/shared/package.json +0 -56
- package/packages/shared/src/__tests__/ai-workflow.test.ts +0 -217
- package/packages/shared/src/config.ts +0 -49
- package/packages/shared/src/convex/index.ts +0 -2
- package/packages/shared/src/convex/schemas.ts +0 -42
- package/packages/shared/src/engine.test.ts +0 -1
- package/packages/shared/src/engine.ts +0 -295
- package/packages/shared/src/index.ts +0 -43
- package/packages/shared/src/steps.ts +0 -68
- package/packages/shared/src/templates.ts +0 -172
- package/packages/shared/src/types.ts +0 -237
- package/packages/shared/src/utils/cost.ts +0 -79
- package/packages/shared/src/utils/dag.ts +0 -133
- package/packages/shared/src/utils/index.ts +0 -5
- package/packages/shared/src/utils/interpolation.ts +0 -53
- package/packages/shared/src/validators.ts +0 -215
- package/packages/shared/tsconfig.json +0 -1
- package/packages/shared/tsup.config.ts +0 -5
- package/packages/shared/vitest.config.ts +0 -4
- package/packages/solidjs/README.md +0 -1
- package/packages/solidjs/package.json +0 -45
- package/packages/solidjs/src/components/ApprovalModal.tsx +0 -18
- package/packages/solidjs/src/components/StepConfigPanel.tsx +0 -14
- package/packages/solidjs/src/components/StepConnector.tsx +0 -11
- package/packages/solidjs/src/components/StepNode.tsx +0 -12
- package/packages/solidjs/src/components/StepPalette.tsx +0 -22
- package/packages/solidjs/src/components/WorkflowCanvas.tsx +0 -23
- package/packages/solidjs/src/components/WorkflowRunPanel.tsx +0 -18
- package/packages/solidjs/src/components/WorkflowToolbar.tsx +0 -13
- package/packages/solidjs/src/components/index.ts +0 -9
- package/packages/solidjs/src/index.ts +0 -7
- package/packages/solidjs/src/pages/WorkflowBuilderPage.tsx +0 -37
- package/packages/solidjs/src/pages/WorkflowRunsPage.tsx +0 -20
- package/packages/solidjs/src/pages/index.ts +0 -3
- package/packages/solidjs/src/primitives/createApprovalGate.ts +0 -29
- package/packages/solidjs/src/primitives/createWorkflow.ts +0 -28
- package/packages/solidjs/src/primitives/createWorkflowBuilder.ts +0 -56
- package/packages/solidjs/src/primitives/createWorkflowRun.ts +0 -32
- package/packages/solidjs/src/primitives/createWorkflowStep.ts +0 -23
- package/packages/solidjs/src/primitives/createWorkflowTemplates.ts +0 -28
- package/packages/solidjs/src/primitives/index.ts +0 -8
- package/packages/solidjs/tsconfig.json +0 -1
- package/packages/solidjs/tsup.config.ts +0 -7
- package/packages/solidjs-css/README.md +0 -1
- package/packages/solidjs-css/package.json +0 -43
- package/packages/solidjs-css/src/components/ApprovalModal.tsx +0 -6
- package/packages/solidjs-css/src/components/StepConfigPanel.tsx +0 -7
- package/packages/solidjs-css/src/components/StepConnector.tsx +0 -6
- package/packages/solidjs-css/src/components/StepNode.tsx +0 -7
- package/packages/solidjs-css/src/components/StepPalette.tsx +0 -7
- package/packages/solidjs-css/src/components/WorkflowCanvas.tsx +0 -7
- package/packages/solidjs-css/src/components/WorkflowRunPanel.tsx +0 -8
- package/packages/solidjs-css/src/components/WorkflowToolbar.tsx +0 -5
- package/packages/solidjs-css/src/components/index.ts +0 -9
- package/packages/solidjs-css/src/index.ts +0 -7
- package/packages/solidjs-css/src/pages/WorkflowBuilderPage.tsx +0 -2
- package/packages/solidjs-css/src/pages/WorkflowRunsPage.tsx +0 -7
- package/packages/solidjs-css/src/pages/index.ts +0 -3
- package/packages/solidjs-css/src/primitives/createWorkflow.ts +0 -28
- package/packages/solidjs-css/src/primitives/createWorkflowBuilder.ts +0 -56
- package/packages/solidjs-css/src/primitives/index.ts +0 -1
- package/packages/solidjs-css/tsconfig.json +0 -27
- package/packages/solidjs-css/tsup.config.ts +0 -2
- package/pnpm-workspace.yaml +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/config.ts","../src/utils/interpolation.ts","../src/errors.ts","../src/utils/expression.ts","../src/utils/dag.ts","../src/utils/cost.ts","../src/engine.ts","../src/steps.ts","../src/validators.ts","../src/templates.ts","../src/convex/schemas.ts"],"names":["isRecord"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @module WorkflowConfig\n * @package @geenius/ai-workflow-shared\n * @description Shared configuration helpers for the workflow runtime. This file\n * defines the normalized execution options that the engine and UI bindings use\n * to stay aligned on limits, timeouts, and telemetry defaults.\n */\n\n/**\n * Runtime configuration options accepted by the workflow package.\n *\n * @property maxSteps Maximum number of steps allowed in a definition.\n * @property maxExecutionTimeMs Maximum allowed runtime for one execution.\n * @property maxRetries Default retry count for retryable steps.\n * @property defaultTimeout Default timeout for external operations.\n * @property enableLogging Whether runtime logging is enabled.\n * @property enableMetrics Whether metric capture is enabled.\n */\nexport interface ConfigureWorkflowOptions {\n maxSteps?: number;\n maxExecutionTimeMs?: number;\n maxRetries?: number;\n defaultTimeout?: number;\n enableLogging?: boolean;\n enableMetrics?: boolean;\n}\n\n/**\n * Normalized workflow runtime configuration.\n *\n * @property maxSteps Maximum number of steps allowed in a definition.\n * @property maxExecutionTimeMs Maximum allowed runtime for one execution.\n * @property maxRetries Default retry count for retryable steps.\n * @property defaultTimeout Default timeout for external operations.\n * @property enableLogging Whether runtime logging is enabled.\n * @property enableMetrics Whether metric capture is enabled.\n */\nexport interface WorkflowRuntimeConfig {\n maxSteps: number;\n maxExecutionTimeMs: number;\n maxRetries: number;\n defaultTimeout: number;\n enableLogging: boolean;\n enableMetrics: boolean;\n}\n\n/**\n * Build a normalized workflow runtime configuration object.\n *\n * @param options Partial execution options supplied by the consumer.\n * @returns A fully populated workflow runtime configuration.\n *\n * @example\n * ```ts\n * const config = configureWorkflow({\n * maxSteps: 50,\n * maxExecutionTimeMs: 3600000,\n * maxRetries: 3,\n * enableMetrics: true,\n * })\n * ```\n */\nexport function configureWorkflow(\n options: ConfigureWorkflowOptions = {},\n): WorkflowRuntimeConfig {\n return {\n maxSteps: options.maxSteps ?? 100,\n maxExecutionTimeMs: options.maxExecutionTimeMs ?? 3600000, // 1 hour\n maxRetries: options.maxRetries ?? 3,\n defaultTimeout: options.defaultTimeout ?? 30000, // 30 seconds\n enableLogging: options.enableLogging ?? true,\n enableMetrics: options.enableMetrics ?? false,\n };\n}\n\n/**\n * Default runtime configuration used when consumers do not override options.\n */\nexport const defaultWorkflowConfig: WorkflowRuntimeConfig = {\n maxSteps: 100,\n maxExecutionTimeMs: 3600000,\n maxRetries: 3,\n defaultTimeout: 30000,\n enableLogging: true,\n enableMetrics: false,\n};\n","/**\n * @module WorkflowInterpolationUtils\n * @package @geenius/ai-workflow-shared\n * @description Template-variable interpolation helpers for workflow prompts,\n * webhook bodies, and approval copy. These functions resolve dot paths and\n * replace `{{variable}}` markers using the workflow runtime context.\n */\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === 'object')\n}\n\n/** Resolve a dot-path like \"user.name\" from a nested object */\nfunction resolvePath(obj: Record<string, unknown>, path: string): unknown {\n return path.split('.').reduce<unknown>((acc, key) => {\n if (isRecord(acc)) {\n return acc[key]\n }\n return undefined\n }, obj)\n}\n\n/**\n * Interpolate {{variable}} or {{nested.path}} references in a string.\n * Supports optional default values: {{varName|default}}.\n */\nexport function interpolate(template: string, vars: Record<string, unknown>): string {\n return template.replace(/\\{\\{([^}]+)\\}\\}/g, (match, expr: string) => {\n const [path, defaultValue] = expr.trim().split('|').map((s: string) => s.trim())\n const val = resolvePath(vars, path)\n if (val !== undefined && val !== null) {\n return typeof val === 'object' ? JSON.stringify(val) : String(val)\n }\n return defaultValue ?? ''\n })\n}\n\n/**\n * Extract all variable references from a template string.\n * Returns unique variable names (without defaults).\n */\nexport function extractVariables(template: string): string[] {\n const vars = new Set<string>()\n const re = /\\{\\{([^}]+)\\}\\}/g\n let m: RegExpExecArray | null\n while ((m = re.exec(template)) !== null) {\n const path = m[1].trim().split('|')[0].trim()\n vars.add(path.split('.')[0]) // add root variable name\n }\n return [...vars]\n}\n\n/**\n * Check if all required variables in a template are present in the vars object.\n * Returns missing variable names.\n */\nexport function findMissingVariables(template: string, vars: Record<string, unknown>): string[] {\n const required = extractVariables(template)\n return required.filter(v => vars[v] === undefined || vars[v] === null)\n}\n","/**\n * @module WorkflowErrors\n * @package @geenius/ai-workflow-shared\n * @description Package-specific typed error classes for workflow configuration,\n * execution, graph validation, and expression evaluation. These errors extend\n * the shared Geenius error base so consumers can discriminate failures safely.\n */\n\nimport { ErrorCode, GeeniusError } from '@geenius/tools/errors'\n\n/**\n * Shared context payload for workflow failures.\n *\n * @property stepId Optional workflow step identifier related to the failure.\n * @property workflowId Optional workflow identifier related to the failure.\n * @property expression Optional expression string that failed to parse or evaluate.\n * @property details Arbitrary structured metadata that helps consumers debug failures.\n */\nexport interface WorkflowErrorContext {\n [key: string]: unknown\n stepId?: string\n workflowId?: string\n expression?: string\n details?: Record<string, unknown>\n}\n\n/**\n * Base typed error for the AI workflow package.\n */\nexport class WorkflowError extends GeeniusError {\n /**\n * Create a structured workflow error.\n *\n * @param options Error metadata, message, and optional structured context.\n * @returns A typed workflow error instance.\n */\n constructor(options: {\n code?: ErrorCode\n message: string\n cause?: unknown\n context?: WorkflowErrorContext\n }) {\n super({\n code: options.code ?? ErrorCode.INTERNAL,\n message: options.message,\n cause: options.cause,\n context: options.context,\n })\n this.name = 'WorkflowError'\n Object.setPrototypeOf(this, WorkflowError.prototype)\n }\n}\n\n/**\n * Error raised when workflow configuration is invalid or incomplete.\n */\nexport class WorkflowConfigurationError extends WorkflowError {\n /**\n * Create a configuration error for invalid workflow setup.\n *\n * @param message Human-readable explanation of the invalid configuration.\n * @param context Optional structured metadata describing the failing config area.\n * @returns A typed workflow configuration error.\n */\n constructor(message: string, context?: WorkflowErrorContext) {\n super({\n code: ErrorCode.INVALID_CONFIG,\n message,\n context,\n })\n this.name = 'WorkflowConfigurationError'\n Object.setPrototypeOf(this, WorkflowConfigurationError.prototype)\n }\n}\n\n/**\n * Error raised when workflow execution fails at runtime.\n */\nexport class WorkflowExecutionError extends WorkflowError {\n /**\n * Create an execution error for a workflow runtime failure.\n *\n * @param message Human-readable explanation of the runtime failure.\n * @param context Optional structured metadata describing the failing execution path.\n * @param cause Optional underlying exception that triggered the runtime failure.\n * @returns A typed workflow execution error.\n */\n constructor(message: string, context?: WorkflowErrorContext, cause?: unknown) {\n super({\n code: ErrorCode.INTERNAL,\n message,\n cause,\n context,\n })\n this.name = 'WorkflowExecutionError'\n Object.setPrototypeOf(this, WorkflowExecutionError.prototype)\n }\n}\n\n/**\n * Error raised when a workflow DAG is invalid.\n */\nexport class WorkflowGraphError extends WorkflowError {\n /**\n * Create a graph-validation error for an invalid workflow topology.\n *\n * @param message Human-readable explanation of the graph validation failure.\n * @param context Optional structured metadata describing the invalid topology.\n * @returns A typed workflow graph error.\n */\n constructor(message: string, context?: WorkflowErrorContext) {\n super({\n code: ErrorCode.VALIDATION,\n message,\n context,\n })\n this.name = 'WorkflowGraphError'\n Object.setPrototypeOf(this, WorkflowGraphError.prototype)\n }\n}\n\n/**\n * Error raised when workflow expressions fail to parse or evaluate safely.\n */\nexport class WorkflowExpressionError extends WorkflowError {\n /**\n * Create an expression error for a failed transform or condition expression.\n *\n * @param message Human-readable explanation of the expression failure.\n * @param context Optional structured metadata including the source expression.\n * @param cause Optional underlying parse or runtime error.\n * @returns A typed workflow expression error.\n */\n constructor(message: string, context?: WorkflowErrorContext, cause?: unknown) {\n super({\n code: ErrorCode.VALIDATION,\n message,\n cause,\n context,\n })\n this.name = 'WorkflowExpressionError'\n Object.setPrototypeOf(this, WorkflowExpressionError.prototype)\n }\n}\n\n/**\n * Normalize unknown thrown values into an exported workflow error type.\n *\n * @param error Unknown thrown value from workflow code.\n * @param fallbackMessage Message used when the original value is not informative.\n * @param context Optional structured context describing the failing workflow area.\n * @returns A typed workflow error instance suitable for rethrowing or storing.\n */\nexport function normalizeWorkflowError(\n error: unknown,\n fallbackMessage: string,\n context?: WorkflowErrorContext,\n): WorkflowError {\n if (error instanceof WorkflowError) {\n return error\n }\n\n if (error instanceof GeeniusError) {\n return new WorkflowError({\n code: error.code,\n message: error.message,\n cause: error,\n context,\n })\n }\n\n if (error instanceof Error) {\n return new WorkflowExecutionError(error.message, context, error)\n }\n\n return new WorkflowExecutionError(fallbackMessage, context, error)\n}\n","/**\n * @module WorkflowExpressionUtils\n * @package @geenius/ai-workflow-shared\n * @description Safe expression helpers for transform and condition steps. This\n * file implements the parser and evaluator used by the workflow engine to\n * support a constrained JavaScript-like expression language without `eval`.\n */\n\nimport { WorkflowExpressionError } from \"../errors\";\n\ntype TokenType =\n | \"number\"\n | \"string\"\n | \"identifier\"\n | \"operator\"\n | \"punctuator\"\n | \"eof\";\n\ntype ExpressionOperand = string | number | bigint | boolean | null | undefined;\ntype RelationalOperand = string | number | bigint | boolean;\n\ninterface Token {\n type: TokenType;\n value: string;\n}\n\ninterface Reference {\n __ref: true;\n base: unknown;\n key: string | number | symbol;\n value: unknown;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\");\n}\n\nfunction isExpressionOperand(value: unknown): value is ExpressionOperand {\n return (\n value === null ||\n value === undefined ||\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"bigint\" ||\n typeof value === \"boolean\"\n );\n}\n\nfunction isRelationalOperand(value: unknown): value is RelationalOperand {\n return (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"bigint\" ||\n typeof value === \"boolean\"\n );\n}\n\nfunction toPropertyKey(value: unknown): string | number | symbol {\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"symbol\"\n ) {\n return value;\n }\n\n throw createExpressionError(\n \"Computed property access expects a string, number, or symbol key.\",\n );\n}\n\nfunction createExpressionError(\n message: string,\n expression?: string,\n cause?: unknown,\n): WorkflowExpressionError {\n return new WorkflowExpressionError(\n message,\n expression ? { expression } : undefined,\n cause,\n );\n}\n\nconst FORBIDDEN_PROPERTIES = new Set([\n \"__proto__\",\n \"prototype\",\n \"constructor\",\n \"caller\",\n \"callee\",\n \"arguments\",\n]);\n\nconst SAFE_GLOBALS: Record<string, unknown> = Object.freeze({\n Math,\n JSON: Object.freeze({\n parse: JSON.parse.bind(JSON),\n stringify: JSON.stringify.bind(JSON),\n }),\n Date: Object.freeze({\n now: Date.now.bind(Date),\n parse: Date.parse.bind(Date),\n UTC: Date.UTC.bind(Date),\n }),\n Number: (value: unknown) => Number(value),\n String: (value: unknown) => String(value),\n Boolean: (value: unknown) => Boolean(value),\n});\n\nfunction isIdentifierStart(char: string): boolean {\n return /[A-Za-z_$]/.test(char);\n}\n\nfunction isIdentifierPart(char: string): boolean {\n return /[A-Za-z0-9_$]/.test(char);\n}\n\nfunction isDigit(char: string): boolean {\n return /[0-9]/.test(char);\n}\n\nfunction tokenize(expression: string): Token[] {\n const tokens: Token[] = [];\n let index = 0;\n\n const push = (type: TokenType, value: string) => {\n tokens.push({ type, value });\n };\n\n while (index < expression.length) {\n const char = expression[index];\n\n if (/\\s/.test(char)) {\n index++;\n continue;\n }\n\n const three = expression.slice(index, index + 3);\n if (three === \"...\") {\n push(\"operator\", \"...\");\n index += 3;\n continue;\n }\n\n const multi = [\n \"===\",\n \"!==\",\n \">=\",\n \"<=\",\n \"&&\",\n \"||\",\n \"??\",\n \"==\",\n \"!=\",\n \"**\",\n ];\n const matched = multi.find((op) => expression.startsWith(op, index));\n if (matched) {\n push(\"operator\", matched);\n index += matched.length;\n continue;\n }\n\n if (\n isDigit(char) ||\n (char === \".\" && isDigit(expression[index + 1] ?? \"\"))\n ) {\n let end = index + 1;\n while (end < expression.length && /[0-9.]/.test(expression[end])) end++;\n push(\"number\", expression.slice(index, end));\n index = end;\n continue;\n }\n\n if (char === '\"' || char === \"'\") {\n const quote = char;\n let end = index + 1;\n let value = \"\";\n while (end < expression.length) {\n const current = expression[end];\n if (current === \"\\\\\") {\n const next = expression[end + 1];\n if (next === undefined)\n throw createExpressionError(\n \"Unterminated string literal.\",\n expression,\n );\n const escapes: Record<string, string> = {\n n: \"\\n\",\n r: \"\\r\",\n t: \"\\t\",\n b: \"\\b\",\n f: \"\\f\",\n \"\\\\\": \"\\\\\",\n '\"': '\"',\n \"'\": \"'\",\n };\n value += escapes[next] ?? next;\n end += 2;\n continue;\n }\n if (current === quote) break;\n value += current;\n end++;\n }\n if (expression[end] !== quote)\n throw createExpressionError(\"Unterminated string literal.\", expression);\n push(\"string\", value);\n index = end + 1;\n continue;\n }\n\n if (isIdentifierStart(char)) {\n let end = index + 1;\n while (end < expression.length && isIdentifierPart(expression[end]))\n end++;\n push(\"identifier\", expression.slice(index, end));\n index = end;\n continue;\n }\n\n const punctuators = [\"(\", \")\", \"{\", \"}\", \"[\", \"]\", \".\", \",\", \":\", \"?\"];\n if (punctuators.includes(char)) {\n push(\"punctuator\", char);\n index++;\n continue;\n }\n\n const operators = [\"+\", \"-\", \"*\", \"/\", \"%\", \"!\", \"<\", \">\", \"=\"];\n if (operators.includes(char)) {\n push(\"operator\", char);\n index++;\n continue;\n }\n\n throw createExpressionError(\n `Unsupported token in expression: ${char}`,\n expression,\n );\n }\n\n tokens.push({ type: \"eof\", value: \"\" });\n return tokens;\n}\n\nclass ExpressionParser {\n private readonly tokens: Token[];\n private index = 0;\n private readonly context: Record<string, unknown>;\n\n constructor(expression: string, context: Record<string, unknown>) {\n this.tokens = tokenize(expression);\n this.context = context;\n }\n\n evaluate(): unknown {\n const result = this.parseConditional();\n this.expect(\"eof\");\n return this.unwrap(result);\n }\n\n private current(): Token {\n return this.tokens[this.index] ?? { type: \"eof\", value: \"\" };\n }\n\n private advance(): Token {\n const token = this.current();\n this.index++;\n return token;\n }\n\n private match(type: TokenType, value?: string): boolean {\n const token = this.current();\n if (token.type !== type) return false;\n if (value !== undefined && token.value !== value) return false;\n this.index++;\n return true;\n }\n\n private expect(type: TokenType, value?: string): Token {\n const token = this.current();\n if (token.type !== type || (value !== undefined && token.value !== value)) {\n throw createExpressionError(\n `Unexpected token \"${token.value}\" in expression.`,\n );\n }\n this.index++;\n return token;\n }\n\n private unwrap(value: unknown): unknown {\n if (this.isReference(value)) return value.value;\n return value;\n }\n\n private unwrapOperand(value: unknown): ExpressionOperand {\n const operand = this.unwrap(value);\n\n if (!isExpressionOperand(operand)) {\n throw createExpressionError(\n \"Expression operand must resolve to a primitive value.\",\n );\n }\n\n return operand;\n }\n\n private relationalOperand(value: unknown): RelationalOperand {\n const operand = this.unwrap(value);\n\n if (!isRelationalOperand(operand)) {\n throw createExpressionError(\n \"Relational comparisons require primitive operands.\",\n );\n }\n\n return operand;\n }\n\n private isReference(value: unknown): value is Reference {\n return isRecord(value) && value.__ref === true;\n }\n\n private toReference(base: unknown, key: string | number | symbol): Reference {\n if (typeof key === \"string\" && FORBIDDEN_PROPERTIES.has(key)) {\n throw createExpressionError(\n `Access to property \"${key}\" is not allowed.`,\n );\n }\n if (base === null || base === undefined) {\n throw createExpressionError(\n `Cannot read property \"${String(key)}\" of ${base}.`,\n );\n }\n return {\n __ref: true,\n base,\n key,\n value: Reflect.get(Object(base), key),\n };\n }\n\n private resolveIdentifier(name: string): unknown {\n if (name === \"true\") return true;\n if (name === \"false\") return false;\n if (name === \"null\") return null;\n if (name === \"undefined\") return undefined;\n if (Object.prototype.hasOwnProperty.call(this.context, name)) {\n return this.context[name];\n }\n if (Object.prototype.hasOwnProperty.call(SAFE_GLOBALS, name)) {\n return SAFE_GLOBALS[name];\n }\n throw createExpressionError(`Unknown identifier in expression: ${name}.`);\n }\n\n private parseConditional(): unknown {\n let test = this.parseNullish();\n if (this.match(\"punctuator\", \"?\")) {\n const consequent = this.parseConditional();\n this.expect(\"punctuator\", \":\");\n const alternate = this.parseConditional();\n test = this.unwrap(test) ? consequent : alternate;\n }\n return test;\n }\n\n private parseNullish(): unknown {\n let left = this.parseLogicalOr();\n while (this.match(\"operator\", \"??\")) {\n const right = this.parseLogicalOr();\n left = this.unwrap(left) ?? right;\n }\n return left;\n }\n\n private parseLogicalOr(): unknown {\n let left = this.parseLogicalAnd();\n while (this.match(\"operator\", \"||\")) {\n const right = this.parseLogicalAnd();\n left = this.unwrap(left) || right;\n }\n return left;\n }\n\n private parseLogicalAnd(): unknown {\n let left = this.parseEquality();\n while (this.match(\"operator\", \"&&\")) {\n const right = this.parseEquality();\n left = this.unwrap(left) && right;\n }\n return left;\n }\n\n private parseEquality(): unknown {\n let left = this.parseComparison();\n while (true) {\n if (this.match(\"operator\", \"===\")) {\n const right = this.parseComparison();\n left = this.unwrap(left) === this.unwrap(right);\n continue;\n }\n if (this.match(\"operator\", \"!==\")) {\n const right = this.parseComparison();\n left = this.unwrap(left) !== this.unwrap(right);\n continue;\n }\n if (this.match(\"operator\", \"==\")) {\n const right = this.parseComparison();\n left = this.unwrap(left) == this.unwrap(right);\n continue;\n }\n if (this.match(\"operator\", \"!=\")) {\n const right = this.parseComparison();\n left = this.unwrap(left) != this.unwrap(right);\n continue;\n }\n return left;\n }\n }\n\n private compare(\n left: unknown,\n right: unknown,\n operator: \"<\" | \"<=\" | \">\" | \">=\",\n ): boolean {\n const leftValue = this.relationalOperand(left);\n const rightValue = this.relationalOperand(right);\n\n switch (operator) {\n case \"<\":\n return leftValue < rightValue;\n case \"<=\":\n return leftValue <= rightValue;\n case \">\":\n return leftValue > rightValue;\n case \">=\":\n return leftValue >= rightValue;\n }\n }\n\n private add(left: unknown, right: unknown): unknown {\n const leftValue = this.unwrapOperand(left);\n const rightValue = this.unwrapOperand(right);\n\n return typeof leftValue === \"string\" || typeof rightValue === \"string\"\n ? String(leftValue) + String(rightValue)\n : Number(leftValue) + Number(rightValue);\n }\n\n private subtract(left: unknown, right: unknown): number {\n return Number(this.unwrapOperand(left)) - Number(this.unwrapOperand(right));\n }\n\n private multiply(left: unknown, right: unknown): number {\n return Number(this.unwrapOperand(left)) * Number(this.unwrapOperand(right));\n }\n\n private divide(left: unknown, right: unknown): number {\n return Number(this.unwrapOperand(left)) / Number(this.unwrapOperand(right));\n }\n\n private remainder(left: unknown, right: unknown): number {\n return Number(this.unwrapOperand(left)) % Number(this.unwrapOperand(right));\n }\n\n private exponent(left: unknown, right: unknown): number {\n return (\n Number(this.unwrapOperand(left)) ** Number(this.unwrapOperand(right))\n );\n }\n\n private parseComparison(): unknown {\n let left = this.parseAdditive();\n while (true) {\n if (this.match(\"operator\", \"<\")) {\n const right = this.parseAdditive();\n left = this.compare(left, right, \"<\");\n continue;\n }\n if (this.match(\"operator\", \"<=\")) {\n const right = this.parseAdditive();\n left = this.compare(left, right, \"<=\");\n continue;\n }\n if (this.match(\"operator\", \">\")) {\n const right = this.parseAdditive();\n left = this.compare(left, right, \">\");\n continue;\n }\n if (this.match(\"operator\", \">=\")) {\n const right = this.parseAdditive();\n left = this.compare(left, right, \">=\");\n continue;\n }\n return left;\n }\n }\n\n private parseAdditive(): unknown {\n let left = this.parseMultiplicative();\n while (true) {\n if (this.match(\"operator\", \"+\")) {\n const right = this.parseMultiplicative();\n left = this.add(left, right);\n continue;\n }\n if (this.match(\"operator\", \"-\")) {\n const right = this.parseMultiplicative();\n left = this.subtract(left, right);\n continue;\n }\n return left;\n }\n }\n\n private parseMultiplicative(): unknown {\n let left = this.parseUnary();\n while (true) {\n if (this.match(\"operator\", \"*\")) {\n const right = this.parseUnary();\n left = this.multiply(left, right);\n continue;\n }\n if (this.match(\"operator\", \"/\")) {\n const right = this.parseUnary();\n left = this.divide(left, right);\n continue;\n }\n if (this.match(\"operator\", \"%\")) {\n const right = this.parseUnary();\n left = this.remainder(left, right);\n continue;\n }\n if (this.match(\"operator\", \"**\")) {\n const right = this.parseUnary();\n left = this.exponent(left, right);\n continue;\n }\n return left;\n }\n }\n\n private parseUnary(): unknown {\n if (this.match(\"operator\", \"!\")) {\n return !this.unwrap(this.parseUnary());\n }\n if (this.match(\"operator\", \"+\")) {\n return Number(this.unwrap(this.parseUnary()));\n }\n if (this.match(\"operator\", \"-\")) {\n return -Number(this.unwrap(this.parseUnary()));\n }\n if (\n this.current().type === \"identifier\" &&\n this.current().value === \"typeof\"\n ) {\n this.advance();\n return typeof this.unwrap(this.parseUnary());\n }\n return this.parseCallMember();\n }\n\n private parseCallMember(): unknown {\n let value = this.parsePrimary();\n\n while (true) {\n if (this.match(\"punctuator\", \".\")) {\n const property = this.expect(\"identifier\").value;\n const target = this.isReference(value) ? value.value : value;\n value = this.toReference(target, property);\n continue;\n }\n\n if (this.match(\"punctuator\", \"[\")) {\n const property = this.parseConditional();\n this.expect(\"punctuator\", \"]\");\n const target = this.isReference(value) ? value.value : value;\n value = this.toReference(target, toPropertyKey(this.unwrap(property)));\n continue;\n }\n\n if (this.match(\"punctuator\", \"(\")) {\n const args: unknown[] = [];\n if (!this.match(\"punctuator\", \")\")) {\n do {\n args.push(this.unwrap(this.parseConditional()));\n } while (this.match(\"punctuator\", \",\"));\n this.expect(\"punctuator\", \")\");\n }\n\n const callee = this.isReference(value) ? value.value : value;\n if (typeof callee !== \"function\") {\n throw createExpressionError(\n \"Expression attempted to call a non-function value.\",\n );\n }\n\n const thisArg = this.isReference(value) ? value.base : undefined;\n value = callee.apply(thisArg, args);\n continue;\n }\n\n return value;\n }\n }\n\n private parsePrimary(): unknown {\n const token = this.current();\n\n if (token.type === \"number\") {\n this.advance();\n return Number(token.value);\n }\n\n if (token.type === \"string\") {\n this.advance();\n return token.value;\n }\n\n if (token.type === \"identifier\") {\n this.advance();\n return this.resolveIdentifier(token.value);\n }\n\n if (this.match(\"punctuator\", \"(\")) {\n const value = this.parseConditional();\n this.expect(\"punctuator\", \")\");\n return value;\n }\n\n if (this.match(\"punctuator\", \"[\")) {\n const items: unknown[] = [];\n if (!this.match(\"punctuator\", \"]\")) {\n do {\n if (this.match(\"operator\", \"...\")) {\n const spread = this.unwrap(this.parseConditional());\n if (Array.isArray(spread)) {\n items.push(...spread);\n } else {\n throw createExpressionError(\n \"Array spread expects an array value.\",\n );\n }\n } else {\n items.push(this.unwrap(this.parseConditional()));\n }\n } while (this.match(\"punctuator\", \",\"));\n this.expect(\"punctuator\", \"]\");\n }\n return items;\n }\n\n if (this.match(\"punctuator\", \"{\")) {\n const out: Record<string, unknown> = {};\n if (!this.match(\"punctuator\", \"}\")) {\n do {\n if (this.match(\"operator\", \"...\")) {\n const spread = this.unwrap(this.parseConditional());\n if (spread && typeof spread === \"object\") {\n Object.assign(out, spread);\n } else {\n throw createExpressionError(\n \"Object spread expects an object value.\",\n );\n }\n } else {\n let key: string;\n if (\n this.current().type === \"string\" ||\n this.current().type === \"number\"\n ) {\n key = String(this.advance().value);\n } else {\n key = this.expect(\"identifier\").value;\n }\n\n if (this.match(\"punctuator\", \":\")) {\n out[key] = this.unwrap(this.parseConditional());\n } else {\n // Shorthand property\n out[key] = this.resolveIdentifier(key);\n }\n }\n } while (this.match(\"punctuator\", \",\"));\n this.expect(\"punctuator\", \"}\");\n }\n return out;\n }\n\n throw createExpressionError(\n `Unexpected token \"${token.value}\" in expression.`,\n );\n }\n}\n\n/**\n * Evaluate a workflow expression against the provided variables.\n */\nexport function evaluateExpression(\n expression: string,\n context: Record<string, unknown>,\n): unknown {\n const trimmed = expression.trim();\n if (!trimmed)\n throw createExpressionError(\"Expression cannot be empty.\", expression);\n\n try {\n return new ExpressionParser(trimmed, context).evaluate();\n } catch (error) {\n throw error instanceof WorkflowExpressionError\n ? error\n : createExpressionError(\n \"Failed to evaluate workflow expression.\",\n expression,\n error,\n );\n }\n}\n","/**\n * @module WorkflowDagUtils\n * @package @geenius/ai-workflow-shared\n * @description Directed-acyclic-graph helpers used by the workflow engine and\n * validators. These utilities normalize graph traversal, cycle detection, and\n * entry/exit analysis across every framework variant.\n */\n\nimport { WorkflowGraphError } from \"../errors\";\n\n/**\n * Minimal graph node shape accepted by DAG helpers.\n */\nexport interface DAGNode {\n id: string;\n}\n\n/**\n * Minimal graph edge shape accepted by DAG helpers.\n */\nexport interface DAGEdge {\n from: string;\n to: string;\n}\n\n/**\n * Topological sort using Kahn's algorithm.\n * Returns sorted node IDs or throws if a cycle is detected.\n */\nexport function topoSort(nodeIds: string[], edges: DAGEdge[]): string[] {\n const inDegree = new Map<string, number>();\n const adjacency = new Map<string, string[]>();\n\n for (const id of nodeIds) {\n inDegree.set(id, 0);\n adjacency.set(id, []);\n }\n\n for (const edge of edges) {\n adjacency.get(edge.from)?.push(edge.to);\n inDegree.set(edge.to, (inDegree.get(edge.to) ?? 0) + 1);\n }\n\n const queue: string[] = [];\n for (const [id, deg] of inDegree) {\n if (deg === 0) queue.push(id);\n }\n\n const sorted: string[] = [];\n while (queue.length > 0) {\n const id = queue.shift()!;\n sorted.push(id);\n for (const neighbor of adjacency.get(id) ?? []) {\n const newDeg = (inDegree.get(neighbor) ?? 1) - 1;\n inDegree.set(neighbor, newDeg);\n if (newDeg === 0) queue.push(neighbor);\n }\n }\n\n if (sorted.length !== nodeIds.length) {\n throw new WorkflowGraphError(\"Cycle detected in workflow DAG.\", {\n details: { nodeCount: nodeIds.length, sortedCount: sorted.length },\n });\n }\n\n return sorted;\n}\n\n/**\n * Detect cycles using DFS. Returns the cycle path if one exists, or null.\n */\nexport function detectCycle(\n nodeIds: string[],\n edges: DAGEdge[],\n): string[] | null {\n const adjacency = new Map<string, string[]>();\n for (const id of nodeIds) adjacency.set(id, []);\n for (const edge of edges) adjacency.get(edge.from)?.push(edge.to);\n\n const WHITE = 0,\n GRAY = 1,\n BLACK = 2;\n const color = new Map<string, number>();\n const parent = new Map<string, string | null>();\n for (const id of nodeIds) {\n color.set(id, WHITE);\n parent.set(id, null);\n }\n\n for (const startId of nodeIds) {\n if (color.get(startId) !== WHITE) continue;\n const stack = [startId];\n while (stack.length > 0) {\n const node = stack[stack.length - 1];\n if (color.get(node) === WHITE) {\n color.set(node, GRAY);\n for (const neighbor of adjacency.get(node) ?? []) {\n if (color.get(neighbor) === GRAY) {\n // Build cycle path\n const cycle = [neighbor, node];\n let cur = node;\n while (cur !== neighbor && parent.get(cur)) {\n cur = parent.get(cur)!;\n cycle.push(cur);\n }\n return cycle.reverse();\n }\n if (color.get(neighbor) === WHITE) {\n parent.set(neighbor, node);\n stack.push(neighbor);\n }\n }\n } else {\n color.set(node, BLACK);\n stack.pop();\n }\n }\n }\n\n return null;\n}\n\n/**\n * Find all paths from source to target in the DAG.\n */\nexport function findPaths(\n nodeIds: string[],\n edges: DAGEdge[],\n source: string,\n target: string,\n): string[][] {\n const adjacency = new Map<string, string[]>();\n for (const id of nodeIds) adjacency.set(id, []);\n for (const edge of edges) adjacency.get(edge.from)?.push(edge.to);\n\n const paths: string[][] = [];\n const dfs = (current: string, path: string[]) => {\n if (current === target) {\n paths.push([...path]);\n return;\n }\n for (const neighbor of adjacency.get(current) ?? []) {\n if (!path.includes(neighbor)) {\n path.push(neighbor);\n dfs(neighbor, path);\n path.pop();\n }\n }\n };\n dfs(source, [source]);\n return paths;\n}\n\n/**\n * Find entry nodes (no incoming edges) in the DAG.\n */\nexport function findEntryNodes(nodeIds: string[], edges: DAGEdge[]): string[] {\n const hasIncoming = new Set(edges.map((e) => e.to));\n return nodeIds.filter((id) => !hasIncoming.has(id));\n}\n\n/**\n * Find exit nodes (no outgoing edges) in the DAG.\n */\nexport function findExitNodes(nodeIds: string[], edges: DAGEdge[]): string[] {\n const hasOutgoing = new Set(edges.map((e) => e.from));\n return nodeIds.filter((id) => !hasOutgoing.has(id));\n}\n","/**\n * @module WorkflowCostUtils\n * @package @geenius/ai-workflow-shared\n * @description Cost and token estimation helpers for workflow definitions and\n * completed runs. These utilities keep LLM spend reporting consistent across\n * the builder, run panel, and Storybook surfaces.\n */\n\nimport type { WorkflowDefinition, LLMCallConfig, StepResult } from '../types'\n\n/** Cost-per-token rates by model (USD per 1K tokens) */\nexport const MODEL_RATES: Record<string, { input: number; output: number }> = {\n 'gpt-4o': { input: 0.0025, output: 0.01 },\n 'gpt-4o-mini': { input: 0.00015, output: 0.0006 },\n 'gpt-4-turbo': { input: 0.01, output: 0.03 },\n 'claude-3.5-sonnet': { input: 0.003, output: 0.015 },\n 'claude-3-haiku': { input: 0.00025, output: 0.00125 },\n 'gemini-pro': { input: 0.00025, output: 0.0005 },\n 'gemini-flash': { input: 0.000075, output: 0.0003 },\n default: { input: 0.001, output: 0.003 },\n}\n\n/** Rough token estimation (1 token ≈ 4 chars for English text) */\nexport function estimateTokens(text: string): number {\n return Math.ceil(text.length / 4)\n}\n\n/** Estimate the token count for an LLM step */\nexport function estimateStepTokens(config: LLMCallConfig, vars: Record<string, unknown> = {}): { inputTokens: number; outputTokens: number } {\n const systemTokens = estimateTokens(config.systemPrompt)\n const templateTokens = estimateTokens(config.userPromptTemplate)\n // Estimate expanded template by adding variable content lengths\n const varTokens = Object.values(vars).reduce<number>((acc, v) => acc + estimateTokens(String(v ?? '')), 0)\n const inputTokens = systemTokens + templateTokens + varTokens\n const outputTokens = config.maxTokens ?? Math.ceil(inputTokens * 0.6)\n return { inputTokens, outputTokens }\n}\n\n/** Estimate cost for a single step */\nexport function estimateStepCost(config: LLMCallConfig, vars: Record<string, unknown> = {}): number {\n const { inputTokens, outputTokens } = estimateStepTokens(config, vars)\n const rates = MODEL_RATES[config.model ?? 'default'] ?? MODEL_RATES.default\n return (inputTokens / 1000) * rates.input + (outputTokens / 1000) * rates.output\n}\n\n/** Estimate total cost for an entire workflow definition */\nexport function estimateWorkflowCost(definition: WorkflowDefinition, vars: Record<string, unknown> = {}): { totalCostUsd: number; totalTokens: number; stepEstimates: Array<{ stepId: string; stepName: string; costUsd: number; tokens: number }> } {\n const stepEstimates: Array<{ stepId: string; stepName: string; costUsd: number; tokens: number }> = []\n let totalCostUsd = 0\n let totalTokens = 0\n\n for (const step of definition.steps) {\n if (step.config.type === 'llm-call') {\n const cost = estimateStepCost(step.config, vars)\n const { inputTokens, outputTokens } = estimateStepTokens(step.config, vars)\n const tokens = inputTokens + outputTokens\n stepEstimates.push({ stepId: step.id, stepName: step.name, costUsd: cost, tokens })\n totalCostUsd += cost\n totalTokens += tokens\n }\n }\n\n return { totalCostUsd, totalTokens, stepEstimates }\n}\n\n/** Calculate actual cost from completed step results */\nexport function calculateRunCost(results: StepResult[]): { totalCostUsd: number; totalTokens: number } {\n let totalCostUsd = 0\n let totalTokens = 0\n for (const r of results) {\n if (r.costUsd) totalCostUsd += r.costUsd\n if (r.tokens) totalTokens += r.tokens\n }\n return { totalCostUsd, totalTokens }\n}\n\n/** Format cost as a human-readable string */\nexport function formatCost(usd: number): string {\n if (usd < 0.01) return `$${(usd * 100).toFixed(2)}¢`\n return `$${usd.toFixed(4)}`\n}\n","/**\n * @module WorkflowEngine\n * @package @geenius/ai-workflow-shared\n * @description Runtime execution engine for workflow definitions. This file\n * walks the declared DAG in execution order, normalizes retry/error handling,\n * and captures run state that every UI variant can render consistently.\n */\n\nimport type {\n DelayConfig,\n StepResult,\n WorkflowDefinition,\n WorkflowRun,\n WorkflowStepDef,\n} from \"./types\";\nimport { evaluateExpression, interpolate } from \"./utils\";\nimport {\n WorkflowConfigurationError,\n WorkflowExecutionError,\n WorkflowGraphError,\n normalizeWorkflowError,\n} from \"./errors\";\n\n/**\n * Runtime dependencies injected into the workflow engine.\n *\n * The engine stays framework-agnostic by requiring callers to provide LLM,\n * webhook, approval, and custom-step integrations explicitly.\n */\nexport interface WorkflowEngineOptions {\n /** LLM call function for llm-call steps */\n callLLM?: (\n systemPrompt: string,\n userPrompt: string,\n model?: string,\n ) => Promise<{\n content: string;\n tokens?: number;\n costUsd?: number;\n }>;\n /** Webhook call function */\n callWebhook?: (\n url: string,\n method: string,\n body?: string,\n headers?: Record<string, string>,\n ) => Promise<string>;\n /** Human approval callback */\n onApprovalRequired?: (message: string, stepId: string) => Promise<boolean>;\n /** Step event callback */\n onStepComplete?: (result: StepResult) => void;\n /** Custom step handlers */\n customHandlers?: Record<\n string,\n (\n params: Record<string, unknown>,\n vars: Record<string, unknown>,\n ) => Promise<unknown>\n >;\n}\n\n/**\n * Executes workflow definitions against provided runtime integrations.\n */\nexport class WorkflowEngine {\n private options: WorkflowEngineOptions;\n private cancelled = false;\n\n constructor(options: WorkflowEngineOptions) {\n this.options = options;\n }\n\n /**\n * Cancel the in-flight execution loop before the next step begins.\n */\n cancel(): void {\n this.cancelled = true;\n }\n\n /**\n * Execute a workflow definition from start to finish and capture the full\n * run state for UI or persistence layers.\n */\n async execute(\n definition: WorkflowDefinition,\n input: Record<string, unknown> = {},\n ): Promise<WorkflowRun> {\n this.cancelled = false;\n\n const run: WorkflowRun = {\n id: crypto.randomUUID?.() ?? String(Date.now()),\n workflowId: definition.id,\n workflowVersion: definition.version,\n status: \"running\",\n input,\n variables: { ...definition.variables, ...input },\n stepResults: [],\n currentStepIndex: 0,\n triggeredBy: \"\",\n startedAt: Date.now(),\n };\n\n // Topologically sort steps once so step execution follows the declared DAG.\n const sortedSteps = this.topoSort(definition);\n\n for (let i = 0; i < sortedSteps.length; i++) {\n if (this.cancelled) {\n run.status = \"cancelled\";\n break;\n }\n\n run.currentStepIndex = i;\n const stepDef = sortedSteps[i];\n const result = await this.executeStep(stepDef, run.variables, definition);\n\n run.stepResults.push(result);\n this.options.onStepComplete?.(result);\n\n if (result.status === \"failed\" && !stepDef.optional) {\n run.status = \"failed\";\n run.error = result.error;\n break;\n }\n\n // Store output in the workflow variable bag for downstream steps.\n if (\n result.output !== undefined &&\n result.output !== null &&\n \"outputVar\" in stepDef.config\n ) {\n if (stepDef.config.outputVar) {\n run.variables[stepDef.config.outputVar] = result.output;\n }\n }\n\n // Condition steps can skip forward through branches in the sorted plan.\n if (stepDef.config.type === \"condition\") {\n const nextStepId = Boolean(result.output)\n ? stepDef.config.trueStepId\n : stepDef.config.falseStepId;\n\n // Skip to the target step\n const targetIndex = sortedSteps.findIndex((s) => s.id === nextStepId);\n if (targetIndex > i) {\n // Mark skipped steps\n for (let j = i + 1; j < targetIndex; j++) {\n run.stepResults.push({\n stepId: sortedSteps[j].id,\n stepName: sortedSteps[j].name,\n type: sortedSteps[j].type,\n status: \"skipped\",\n durationMs: 0,\n startedAt: Date.now(),\n });\n }\n i = targetIndex - 1; // Will be incremented by loop\n }\n }\n }\n\n if (run.status === \"running\") {\n run.status = \"completed\";\n }\n run.completedAt = Date.now();\n\n return run;\n }\n\n /**\n * Execute one step with retry handling and normalized result capture.\n */\n private async executeStep(\n stepDef: WorkflowStepDef,\n variables: Record<string, unknown>,\n _definition: WorkflowDefinition,\n ): Promise<StepResult> {\n const start = Date.now();\n const baseResult: StepResult = {\n stepId: stepDef.id,\n stepName: stepDef.name,\n type: stepDef.type,\n status: \"running\",\n durationMs: 0,\n startedAt: start,\n };\n\n let attempts = 0;\n const maxAttempts = stepDef.retries?.maxAttempts ?? 1;\n\n while (attempts < maxAttempts) {\n attempts++;\n try {\n const output = await this.runStepLogic(stepDef, variables);\n return {\n ...baseResult,\n status: \"completed\",\n output,\n durationMs: Date.now() - start,\n completedAt: Date.now(),\n };\n } catch (err) {\n if (attempts >= maxAttempts) {\n const workflowError = normalizeWorkflowError(\n err,\n `Workflow step \"${stepDef.name}\" failed.`,\n { stepId: stepDef.id, workflowId: _definition.id },\n );\n return {\n ...baseResult,\n status: \"failed\",\n error: workflowError.message,\n durationMs: Date.now() - start,\n completedAt: Date.now(),\n };\n }\n // Wait before retry\n const backoff = stepDef.retries?.backoffMs ?? 1000;\n await new Promise((r) => setTimeout(r, backoff * 2 ** (attempts - 1)));\n }\n }\n\n return {\n ...baseResult,\n status: \"failed\",\n error: \"Max retries exceeded\",\n durationMs: Date.now() - start,\n };\n }\n\n /**\n * Run the concrete logic for an individual step type.\n */\n private async runStepLogic(\n stepDef: WorkflowStepDef,\n variables: Record<string, unknown>,\n ): Promise<unknown> {\n const config = stepDef.config;\n\n switch (config.type) {\n case \"llm-call\": {\n if (!this.options.callLLM) {\n throw new WorkflowConfigurationError(\n \"No LLM function provided for llm-call steps.\",\n {\n stepId: stepDef.id,\n },\n );\n }\n const userPrompt = this.interpolate(\n config.userPromptTemplate,\n variables,\n );\n const result = await this.options.callLLM(\n config.systemPrompt,\n userPrompt,\n config.model,\n );\n if (config.parseJson) {\n try {\n return JSON.parse(result.content);\n } catch {\n return result.content;\n }\n }\n return result.content;\n }\n\n case \"transform\": {\n const scope = this.buildExpressionScope(config.inputVars, variables);\n return evaluateExpression(config.expression, scope);\n }\n\n case \"condition\": {\n return Boolean(evaluateExpression(config.expression, variables));\n }\n\n case \"human-approval\": {\n if (!this.options.onApprovalRequired) {\n // Auto-approve if no handler\n return true;\n }\n return this.options.onApprovalRequired(config.message, stepDef.id);\n }\n\n case \"webhook\": {\n if (!this.options.callWebhook) {\n throw new WorkflowConfigurationError(\n \"No webhook function provided for webhook steps.\",\n {\n stepId: stepDef.id,\n },\n );\n }\n const body = config.bodyTemplate\n ? interpolate(config.bodyTemplate, variables)\n : undefined;\n return this.options.callWebhook(\n config.url,\n config.method,\n body,\n config.headers,\n );\n }\n\n case \"delay\": {\n await new Promise((r) => setTimeout(r, config.durationMs));\n return null;\n }\n\n case \"custom\": {\n const handler = this.options.customHandlers?.[config.handler];\n if (!handler) {\n throw new WorkflowConfigurationError(\n `No handler registered for custom step \"${config.handler}\".`,\n { stepId: stepDef.id },\n );\n }\n return handler(config.params, variables);\n }\n\n default:\n throw new WorkflowExecutionError(\n `Unsupported step type \"${config.type}\".`,\n {\n stepId: stepDef.id,\n },\n );\n }\n }\n\n /** Interpolate `{{variable}}` references in a string. */\n private interpolate(template: string, vars: Record<string, unknown>): string {\n return interpolate(template, vars);\n }\n\n private buildExpressionScope(\n inputVars: string[],\n variables: Record<string, unknown>,\n ): Record<string, unknown> {\n const scope: Record<string, unknown> = {};\n for (const name of inputVars) {\n scope[name] = variables[name];\n }\n return scope;\n }\n\n /** Topological sort of steps based on declared workflow connections. */\n private topoSort(def: WorkflowDefinition): WorkflowStepDef[] {\n const stepMap = new Map(def.steps.map((s) => [s.id, s]));\n const inDegree = new Map<string, number>();\n const adjacency = new Map<string, string[]>();\n\n for (const step of def.steps) {\n inDegree.set(step.id, 0);\n adjacency.set(step.id, []);\n }\n\n for (const conn of def.connections) {\n adjacency.get(conn.fromStepId)?.push(conn.toStepId);\n inDegree.set(conn.toStepId, (inDegree.get(conn.toStepId) ?? 0) + 1);\n }\n\n const queue: string[] = [];\n for (const [id, degree] of inDegree) {\n if (degree === 0) queue.push(id);\n }\n\n const sorted: WorkflowStepDef[] = [];\n while (queue.length > 0) {\n const id = queue.shift()!;\n const step = stepMap.get(id);\n if (step) sorted.push(step);\n\n for (const neighbor of adjacency.get(id) ?? []) {\n const newDegree = (inDegree.get(neighbor) ?? 1) - 1;\n inDegree.set(neighbor, newDegree);\n if (newDegree === 0) queue.push(neighbor);\n }\n }\n\n if (sorted.length !== def.steps.length) {\n throw new WorkflowGraphError(\n \"Workflow definition contains a cycle and cannot be executed.\",\n {\n workflowId: def.id,\n },\n );\n }\n\n return sorted;\n }\n}\n","/**\n * @module WorkflowStepFactories\n * @package @geenius/ai-workflow-shared\n * @description Built-in step factory helpers for constructing shared workflow\n * definitions in a concise and type-safe way.\n */\n\nimport type { WorkflowStepDef, LLMCallConfig, TransformConfig, ConditionConfig, HumanApprovalConfig, WebhookConfig, DelayConfig } from './types'\n\nfunction nextId(): string {\n return `step_${crypto.randomUUID?.() ?? String(Date.now())}`\n}\n\n/**\n * Create an LLM call step definition with a generated identifier.\n *\n * @param name Human-readable step name.\n * @param config Step configuration without the discriminant.\n * @returns A workflow step definition ready for insertion into a workflow.\n */\nexport function llmStep(name: string, config: Omit<LLMCallConfig, 'type'>): WorkflowStepDef {\n return { id: nextId(), name, type: 'llm-call', config: { type: 'llm-call', ...config } }\n}\n\n/**\n * Create a data transform step definition with a generated identifier.\n *\n * @param name Human-readable step name.\n * @param config Step configuration without the discriminant.\n * @returns A workflow step definition ready for insertion into a workflow.\n */\nexport function transformStep(name: string, config: Omit<TransformConfig, 'type'>): WorkflowStepDef {\n return { id: nextId(), name, type: 'transform', config: { type: 'transform', ...config } }\n}\n\n/**\n * Create a conditional branch step definition with a generated identifier.\n *\n * @param name Human-readable step name.\n * @param config Step configuration without the discriminant.\n * @returns A workflow step definition ready for insertion into a workflow.\n */\nexport function conditionStep(name: string, config: Omit<ConditionConfig, 'type'>): WorkflowStepDef {\n return { id: nextId(), name, type: 'condition', config: { type: 'condition', ...config } }\n}\n\n/**\n * Create a human approval step definition with a generated identifier.\n *\n * @param name Human-readable step name.\n * @param config Step configuration without the discriminant.\n * @returns A workflow step definition ready for insertion into a workflow.\n */\nexport function approvalStep(name: string, config: Omit<HumanApprovalConfig, 'type'>): WorkflowStepDef {\n return { id: nextId(), name, type: 'human-approval', config: { type: 'human-approval', ...config } }\n}\n\n/**\n * Create a webhook step definition with a generated identifier.\n *\n * @param name Human-readable step name.\n * @param config Step configuration without the discriminant.\n * @returns A workflow step definition ready for insertion into a workflow.\n */\nexport function webhookStep(name: string, config: Omit<WebhookConfig, 'type'>): WorkflowStepDef {\n return { id: nextId(), name, type: 'webhook', config: { type: 'webhook', ...config } }\n}\n\n/**\n * Create a delay step definition with a generated identifier.\n *\n * @param name Human-readable step name.\n * @param durationMs Delay duration in milliseconds.\n * @returns A workflow step definition ready for insertion into a workflow.\n */\nexport function delayStep(name: string, durationMs: number): WorkflowStepDef {\n return { id: nextId(), name, type: 'delay', config: { type: 'delay', durationMs } }\n}\n\n/**\n * Connect two steps (create a DAG edge).\n *\n * @param fromStepId Source step identifier.\n * @param toStepId Destination step identifier.\n * @param label Optional edge label for builder displays.\n * @returns A directed connection between the two steps.\n */\nexport function connect(fromStepId: string, toStepId: string, label?: string): { fromStepId: string; toStepId: string; label?: string } {\n return { fromStepId, toStepId, label }\n}\n\n/**\n * Build a linear workflow from an ordered list of steps.\n *\n * @param name Unused descriptive name retained for factory API parity.\n * @param steps Ordered list of workflow steps.\n * @returns The original steps paired with sequential connections.\n */\nexport function linearWorkflow(\n name: string,\n steps: WorkflowStepDef[],\n): { steps: WorkflowStepDef[]; connections: Array<{ fromStepId: string; toStepId: string }> } {\n const connections = []\n for (let i = 0; i < steps.length - 1; i++) {\n connections.push({ fromStepId: steps[i].id, toStepId: steps[i + 1].id })\n }\n return { steps, connections }\n}\n","/**\n * @module WorkflowValidators\n * @package @geenius/ai-workflow-shared\n * @description Zod schemas and validation helpers for workflow definitions,\n * step configs, runtime results, and graph integrity checks.\n */\nimport { z } from 'zod/v4'\n\n// ============================================================================\n// Step Config Schemas\n// ============================================================================\n\n/**\n * Zod schema for `llm-call` step configs.\n */\nexport const llmCallConfigSchema = z.object({\n type: z.literal('llm-call'),\n model: z.string().optional(),\n systemPrompt: z.string().min(1, 'System prompt is required'),\n userPromptTemplate: z.string().min(1, 'User prompt template is required'),\n temperature: z.number().min(0).max(2).optional(),\n maxTokens: z.number().int().positive().optional(),\n parseJson: z.boolean().optional(),\n outputVar: z.string().min(1, 'Output variable name is required'),\n})\n\n/**\n * Zod schema for `transform` step configs.\n */\nexport const transformConfigSchema = z.object({\n type: z.literal('transform'),\n expression: z.string().min(1, 'Expression is required'),\n inputVars: z.array(z.string()).min(1, 'At least one input variable is required'),\n outputVar: z.string().min(1),\n})\n\n/**\n * Zod schema for `condition` step configs.\n */\nexport const conditionConfigSchema = z.object({\n type: z.literal('condition'),\n expression: z.string().min(1),\n trueStepId: z.string().min(1),\n falseStepId: z.string().min(1),\n})\n\n/**\n * Zod schema for `human-approval` step configs.\n */\nexport const humanApprovalConfigSchema = z.object({\n type: z.literal('human-approval'),\n message: z.string().min(1, 'Approval message is required'),\n approvers: z.array(z.string()).optional(),\n autoApproveAfterMs: z.number().positive().optional(),\n})\n\n/**\n * Zod schema for `webhook` step configs.\n */\nexport const webhookConfigSchema = z.object({\n type: z.literal('webhook'),\n url: z.string().url('Valid URL required'),\n method: z.enum(['GET', 'POST', 'PUT', 'DELETE']),\n headers: z.record(z.string(), z.string()).optional(),\n bodyTemplate: z.string().optional(),\n outputVar: z.string().min(1),\n})\n\n/**\n * Zod schema for `delay` step configs.\n */\nexport const delayConfigSchema = z.object({\n type: z.literal('delay'),\n durationMs: z.number().int().positive('Duration must be positive'),\n})\n\n/**\n * Zod schema for `parallel` step configs.\n */\nexport const parallelConfigSchema = z.object({\n type: z.literal('parallel'),\n stepIds: z.array(z.string()).min(2, 'Parallel needs at least 2 steps'),\n failurePolicy: z.enum(['fail-fast', 'continue']),\n})\n\n/**\n * Zod schema for `loop` step configs.\n */\nexport const loopConfigSchema = z.object({\n type: z.literal('loop'),\n stepIds: z.array(z.string()).min(1),\n iterateVar: z.string().min(1),\n itemVar: z.string().min(1),\n maxIterations: z.number().int().positive().optional(),\n})\n\n/**\n * Zod schema for `sub-workflow` step configs.\n */\nexport const subWorkflowConfigSchema = z.object({\n type: z.literal('sub-workflow'),\n workflowId: z.string().min(1),\n inputMapping: z.record(z.string(), z.string()),\n outputVar: z.string().min(1),\n})\n\n/**\n * Zod schema for `custom` step configs.\n */\nexport const customStepConfigSchema = z.object({\n type: z.literal('custom'),\n handler: z.string().min(1, 'Handler name is required'),\n params: z.record(z.string(), z.unknown()),\n outputVar: z.string().optional(),\n})\n\n/**\n * Discriminated union covering every supported step configuration schema.\n */\nexport const stepConfigSchema = z.discriminatedUnion('type', [\n llmCallConfigSchema,\n transformConfigSchema,\n conditionConfigSchema,\n humanApprovalConfigSchema,\n webhookConfigSchema,\n delayConfigSchema,\n parallelConfigSchema,\n loopConfigSchema,\n subWorkflowConfigSchema,\n customStepConfigSchema,\n])\n\n// ============================================================================\n// Step Definition Schema\n// ============================================================================\n\n/**\n * Zod schema for one workflow step definition.\n */\nexport const workflowStepDefSchema = z.object({\n id: z.string().min(1),\n name: z.string().min(1, 'Step name is required'),\n type: z.enum(['llm-call', 'transform', 'condition', 'human-approval', 'webhook', 'delay', 'parallel', 'loop', 'sub-workflow', 'custom']),\n config: stepConfigSchema,\n position: z.object({ x: z.number(), y: z.number() }).optional(),\n optional: z.boolean().optional(),\n retries: z.object({ maxAttempts: z.number().int().positive(), backoffMs: z.number().positive() }).optional(),\n})\n\n// ============================================================================\n// Connection Schema\n// ============================================================================\n\n/**\n * Zod schema for directed graph edges between workflow steps.\n */\nexport const stepConnectionSchema = z.object({\n fromStepId: z.string().min(1),\n toStepId: z.string().min(1),\n label: z.string().optional(),\n condition: z.string().optional(),\n})\n\n// ============================================================================\n// Variable Schema\n// ============================================================================\n\n/**\n * Zod schema for declared workflow inputs and variables.\n */\nexport const workflowVariableSchema = z.object({\n name: z.string().min(1),\n type: z.enum(['string', 'number', 'boolean', 'object', 'array']),\n description: z.string().optional(),\n required: z.boolean().optional(),\n default: z.unknown().optional(),\n})\n\n// ============================================================================\n// Workflow Definition Schema\n// ============================================================================\n\n/**\n * Zod schema for a persisted workflow definition.\n */\nexport const workflowDefinitionSchema = z.object({\n id: z.string().min(1),\n name: z.string().min(1, 'Workflow name is required').max(120, 'Name too long'),\n description: z.string().max(2000).optional(),\n version: z.number().int().positive(),\n status: z.enum(['draft', 'active', 'paused', 'archived']),\n steps: z.array(workflowStepDefSchema).min(1, 'At least one step is required'),\n connections: z.array(stepConnectionSchema),\n inputSchema: z.array(workflowVariableSchema).optional(),\n variables: z.record(z.string(), z.unknown()).optional(),\n tags: z.array(z.string()).optional(),\n createdBy: z.string(),\n createdAt: z.number(),\n updatedAt: z.number(),\n})\n\n// ============================================================================\n// Run Schema\n// ============================================================================\n\n/**\n * Zod schema for one captured step result inside a workflow run.\n */\nexport const stepResultSchema = z.object({\n stepId: z.string(),\n stepName: z.string(),\n type: z.enum(['llm-call', 'transform', 'condition', 'human-approval', 'webhook', 'delay', 'parallel', 'loop', 'sub-workflow', 'custom']),\n status: z.enum(['pending', 'running', 'completed', 'failed', 'skipped', 'waiting-approval']),\n input: z.record(z.string(), z.unknown()).optional(),\n output: z.unknown().optional(),\n error: z.string().optional(),\n durationMs: z.number(),\n tokens: z.number().optional(),\n costUsd: z.number().optional(),\n startedAt: z.number(),\n completedAt: z.number().optional(),\n})\n\n/**\n * Zod schema for a full workflow execution run snapshot.\n */\nexport const workflowRunSchema = z.object({\n id: z.string(),\n workflowId: z.string(),\n workflowVersion: z.number(),\n status: z.enum(['pending', 'running', 'paused', 'completed', 'failed', 'cancelled']),\n input: z.record(z.string(), z.unknown()),\n variables: z.record(z.string(), z.unknown()),\n stepResults: z.array(stepResultSchema),\n currentStepIndex: z.number(),\n error: z.string().optional(),\n triggeredBy: z.string(),\n startedAt: z.number(),\n completedAt: z.number().optional(),\n})\n\n// ============================================================================\n// Validation helpers\n// ============================================================================\n\n/**\n * Validate an unknown payload as a workflow definition.\n *\n * @param data Unknown payload to validate.\n * @returns A safe-parse result containing the validated definition or errors.\n */\nexport function validateWorkflow(\n data: unknown,\n): z.ZodSafeParseResult<z.infer<typeof workflowDefinitionSchema>> {\n return workflowDefinitionSchema.safeParse(data)\n}\n\n/**\n * Validate an unknown payload as a workflow run snapshot.\n *\n * @param data Unknown payload to validate.\n * @returns A safe-parse result containing the validated run or errors.\n */\nexport function validateRun(\n data: unknown,\n): z.ZodSafeParseResult<z.infer<typeof workflowRunSchema>> {\n return workflowRunSchema.safeParse(data)\n}\n\n/**\n * Validate that all connections reference known step identifiers.\n *\n * @param steps Declared workflow steps.\n * @param connections Directed edges between those steps.\n * @returns A list of integrity errors, empty when every reference is valid.\n */\nexport function validateConnectionIntegrity(\n steps: Array<{ id: string }>,\n connections: Array<{ fromStepId: string; toStepId: string }>,\n): string[] {\n const stepIds = new Set(steps.map(s => s.id))\n const errors: string[] = []\n for (const conn of connections) {\n if (!stepIds.has(conn.fromStepId)) errors.push(`Connection references unknown source step: ${conn.fromStepId}`)\n if (!stepIds.has(conn.toStepId)) errors.push(`Connection references unknown target step: ${conn.toStepId}`)\n }\n return errors\n}\n","/**\n * @module WorkflowTemplates\n * @package @geenius/ai-workflow-shared\n * @description Curated workflow templates for common AI and business patterns.\n * These templates seed the builder UI and provide canonical examples of the\n * shared workflow definition contract.\n */\nimport type { WorkflowDefinition, WorkflowStepDef, StepConnection } from './types'\n\n/**\n * Template metadata and factory for one reusable workflow starter.\n *\n * @property id Stable template identifier.\n * @property name Human-readable template name.\n * @property description Summary of the workflow pattern.\n * @property category Top-level template grouping used in browsers.\n * @property tags Searchable tags for discovery.\n * @property create Factory that returns a fresh workflow definition instance.\n */\nexport interface WorkflowTemplate {\n id: string\n name: string\n description: string\n category: 'content' | 'data' | 'approval' | 'research' | 'devops'\n tags: string[]\n /** Factory that creates a fresh WorkflowDefinition from this template */\n create: (createdBy: string) => WorkflowDefinition\n}\n\nfunction uid(): string { return `step_tpl_${Date.now()}_${Math.random().toString(36).slice(2, 8)}` }\nfunction wfId(): string { return `wf_${Date.now()}_${Math.random().toString(36).slice(2, 8)}` }\n\n// ============================================================================\n// 1. Content Pipeline\n// ============================================================================\n\nconst contentPipeline: WorkflowTemplate = {\n id: 'tpl-content-pipeline',\n name: 'Content Pipeline',\n description: 'Generate, review, and publish content with AI refinement and human approval.',\n category: 'content',\n tags: ['content', 'blog', 'marketing'],\n create: (createdBy) => {\n const draft = uid(), refine = uid(), approve = uid(), publish = uid()\n const steps: WorkflowStepDef[] = [\n { id: draft, name: 'Generate Draft', type: 'llm-call', config: { type: 'llm-call', systemPrompt: 'You are a content writer.', userPromptTemplate: 'Write a blog post about {{topic}}. Tone: {{tone}}.', outputVar: 'draft' }, position: { x: 100, y: 200 } },\n { id: refine, name: 'Refine Content', type: 'llm-call', config: { type: 'llm-call', systemPrompt: 'You are an editor. Improve clarity, grammar, and engagement.', userPromptTemplate: 'Polish this draft:\\n\\n{{draft}}', outputVar: 'polished' }, position: { x: 350, y: 200 } },\n { id: approve, name: 'Human Review', type: 'human-approval', config: { type: 'human-approval', message: 'Please review the polished content before publishing.' }, position: { x: 600, y: 200 } },\n { id: publish, name: 'Format for Publishing', type: 'transform', config: { type: 'transform', expression: '({ title: polished.split(\"\\\\n\")[0], body: polished, publishedAt: Date.now() })', inputVars: ['polished'], outputVar: 'publishData' }, position: { x: 850, y: 200 } },\n ]\n const connections: StepConnection[] = [\n { fromStepId: draft, toStepId: refine },\n { fromStepId: refine, toStepId: approve },\n { fromStepId: approve, toStepId: publish },\n ]\n return { id: wfId(), name: 'Content Pipeline', description: 'AI-powered content generation with editorial review.', version: 1, status: 'draft', steps, connections, inputSchema: [{ name: 'topic', type: 'string', required: true }, { name: 'tone', type: 'string', required: false, default: 'professional' }], tags: ['content'], createdBy, createdAt: Date.now(), updatedAt: Date.now() }\n },\n}\n\n// ============================================================================\n// 2. Data Enrichment\n// ============================================================================\n\nconst dataEnrichment: WorkflowTemplate = {\n id: 'tpl-data-enrichment',\n name: 'Data Enrichment',\n description: 'Fetch external data, enrich with AI analysis, and transform for downstream use.',\n category: 'data',\n tags: ['data', 'analytics', 'enrichment'],\n create: (createdBy) => {\n const fetch_ = uid(), analyze = uid(), transform = uid()\n const steps: WorkflowStepDef[] = [\n { id: fetch_, name: 'Fetch Data', type: 'webhook', config: { type: 'webhook', url: 'https://api.example.com/data-source', method: 'GET', outputVar: 'rawData' }, position: { x: 100, y: 200 } },\n { id: analyze, name: 'AI Analysis', type: 'llm-call', config: { type: 'llm-call', systemPrompt: 'You are a data analyst. Analyze the data and extract key insights.', userPromptTemplate: 'Analyze this dataset and return a JSON summary with key metrics:\\n\\n{{rawData}}', parseJson: true, outputVar: 'analysis' }, position: { x: 400, y: 200 } },\n { id: transform, name: 'Transform Output', type: 'transform', config: { type: 'transform', expression: '({ ...analysis, enrichedAt: Date.now(), source: dataSourceUrl })', inputVars: ['analysis', 'dataSourceUrl'], outputVar: 'enrichedData' }, position: { x: 700, y: 200 } },\n ]\n const connections: StepConnection[] = [\n { fromStepId: fetch_, toStepId: analyze },\n { fromStepId: analyze, toStepId: transform },\n ]\n return { id: wfId(), name: 'Data Enrichment', version: 1, status: 'draft', steps, connections, inputSchema: [{ name: 'dataSourceUrl', type: 'string', required: true }], tags: ['data'], createdBy, createdAt: Date.now(), updatedAt: Date.now() }\n },\n}\n\n// ============================================================================\n// 3. Approval Chain\n// ============================================================================\n\nconst approvalChain: WorkflowTemplate = {\n id: 'tpl-approval-chain',\n name: 'Approval Chain',\n description: 'Multi-level approval workflow with conditional escalation.',\n category: 'approval',\n tags: ['approval', 'governance', 'compliance'],\n create: (createdBy) => {\n const checkRisk = uid(), lowApproval = uid(), highApproval = uid(), finalize = uid()\n const steps: WorkflowStepDef[] = [\n { id: checkRisk, name: 'Assess Risk Level', type: 'llm-call', config: { type: 'llm-call', systemPrompt: 'Assess the risk level of this request. Respond with JSON: {\"riskLevel\": \"low\"|\"medium\"|\"high\", \"reason\": \"...\"}', userPromptTemplate: '{{request}}', parseJson: true, outputVar: 'riskAssessment' }, position: { x: 100, y: 200 } },\n { id: lowApproval, name: 'Manager Approval', type: 'human-approval', config: { type: 'human-approval', message: 'Low/medium risk: Manager approval needed for: {{request}}' }, position: { x: 400, y: 100 } },\n { id: highApproval, name: 'Executive Approval', type: 'human-approval', config: { type: 'human-approval', message: 'High risk: Executive approval required for: {{request}}' }, position: { x: 400, y: 300 } },\n { id: finalize, name: 'Record Decision', type: 'transform', config: { type: 'transform', expression: '({ approved: true, approvedAt: Date.now(), riskLevel: riskAssessment.riskLevel })', inputVars: ['riskAssessment'], outputVar: 'decision' }, position: { x: 700, y: 200 } },\n ]\n const connections: StepConnection[] = [\n { fromStepId: checkRisk, toStepId: lowApproval, condition: 'riskAssessment.riskLevel !== \"high\"' },\n { fromStepId: checkRisk, toStepId: highApproval, condition: 'riskAssessment.riskLevel === \"high\"' },\n { fromStepId: lowApproval, toStepId: finalize },\n { fromStepId: highApproval, toStepId: finalize },\n ]\n return { id: wfId(), name: 'Approval Chain', version: 1, status: 'draft', steps, connections, inputSchema: [{ name: 'request', type: 'string', required: true }], tags: ['approval'], createdBy, createdAt: Date.now(), updatedAt: Date.now() }\n },\n}\n\n// ============================================================================\n// 4. Research Pipeline\n// ============================================================================\n\nconst researchPipeline: WorkflowTemplate = {\n id: 'tpl-research',\n name: 'Research Pipeline',\n description: 'Multi-source research with AI synthesis and summary generation.',\n category: 'research',\n tags: ['research', 'analysis', 'summary'],\n create: (createdBy) => {\n const research = uid(), synthesize = uid(), summarize = uid()\n const steps: WorkflowStepDef[] = [\n { id: research, name: 'Deep Research', type: 'llm-call', config: { type: 'llm-call', systemPrompt: 'You are a research assistant. Provide comprehensive, well-sourced research on the given topic.', userPromptTemplate: 'Research the following topic in depth: {{topic}}\\n\\nFocus areas: {{focusAreas}}', outputVar: 'researchOutput' }, position: { x: 100, y: 200 } },\n { id: synthesize, name: 'Synthesize Findings', type: 'llm-call', config: { type: 'llm-call', systemPrompt: 'You are a synthesis expert. Combine research findings into structured insights with citations.', userPromptTemplate: 'Synthesize these research findings into key themes and actionable insights:\\n\\n{{researchOutput}}', parseJson: true, outputVar: 'synthesis' }, position: { x: 400, y: 200 } },\n { id: summarize, name: 'Executive Summary', type: 'llm-call', config: { type: 'llm-call', systemPrompt: 'Write a concise executive summary (3-5 paragraphs) suitable for senior leadership.', userPromptTemplate: 'Create an executive summary from:\\n\\n{{synthesis}}', outputVar: 'executiveSummary' }, position: { x: 700, y: 200 } },\n ]\n const connections: StepConnection[] = [\n { fromStepId: research, toStepId: synthesize },\n { fromStepId: synthesize, toStepId: summarize },\n ]\n return { id: wfId(), name: 'Research Pipeline', version: 1, status: 'draft', steps, connections, inputSchema: [{ name: 'topic', type: 'string', required: true }, { name: 'focusAreas', type: 'string', required: false, default: 'general overview' }], tags: ['research'], createdBy, createdAt: Date.now(), updatedAt: Date.now() }\n },\n}\n\n// ============================================================================\n// 5. Code Review Pipeline\n// ============================================================================\n\nconst codeReviewPipeline: WorkflowTemplate = {\n id: 'tpl-code-review',\n name: 'Code Review Pipeline',\n description: 'Automated code review with AI analysis, security check, and human approval.',\n category: 'devops',\n tags: ['code', 'review', 'security', 'devops'],\n create: (createdBy) => {\n const analyze = uid(), security = uid(), approve = uid(), report = uid()\n const steps: WorkflowStepDef[] = [\n { id: analyze, name: 'AI Code Review', type: 'llm-call', config: { type: 'llm-call', systemPrompt: 'You are a senior code reviewer. Analyze the code for bugs, performance issues, and best practices. Return JSON: {\"issues\": [], \"suggestions\": [], \"quality\": 1-10}', userPromptTemplate: 'Review this code:\\n\\n```{{language}}\\n{{code}}\\n```', parseJson: true, outputVar: 'codeReview' }, position: { x: 100, y: 200 } },\n { id: security, name: 'Security Scan', type: 'llm-call', config: { type: 'llm-call', systemPrompt: 'You are a security auditor. Check for vulnerabilities (XSS, SQL injection, secrets exposure, etc). Return JSON: {\"vulnerabilities\": [], \"riskLevel\": \"low\"|\"medium\"|\"high\"}', userPromptTemplate: 'Security audit for:\\n\\n```{{language}}\\n{{code}}\\n```', parseJson: true, outputVar: 'securityReport' }, position: { x: 100, y: 400 } },\n { id: approve, name: 'Developer Approval', type: 'human-approval', config: { type: 'human-approval', message: 'Review the AI code analysis and security scan before merging.' }, position: { x: 450, y: 300 } },\n { id: report, name: 'Generate Report', type: 'transform', config: { type: 'transform', expression: '({ codeQuality: codeReview.quality, issues: codeReview.issues.length, vulnerabilities: securityReport.vulnerabilities.length, riskLevel: securityReport.riskLevel, reviewedAt: Date.now() })', inputVars: ['codeReview', 'securityReport'], outputVar: 'finalReport' }, position: { x: 700, y: 300 } },\n ]\n const connections: StepConnection[] = [\n { fromStepId: analyze, toStepId: approve },\n { fromStepId: security, toStepId: approve },\n { fromStepId: approve, toStepId: report },\n ]\n return { id: wfId(), name: 'Code Review Pipeline', version: 1, status: 'draft', steps, connections, inputSchema: [{ name: 'code', type: 'string', required: true }, { name: 'language', type: 'string', required: false, default: 'typescript' }], tags: ['devops', 'review'], createdBy, createdAt: Date.now(), updatedAt: Date.now() }\n },\n}\n\n// ============================================================================\n// 6. Lead Qualification\n// ============================================================================\n\nconst leadQualification: WorkflowTemplate = {\n id: 'tpl-lead-qualification',\n name: 'Lead Qualification',\n description: 'Score incoming leads, prepare a summary, and route them for follow-up.',\n category: 'data',\n tags: ['sales', 'crm', 'lead-scoring'],\n create: (createdBy) => {\n const score = uid(), summarize = uid(), route = uid()\n const steps: WorkflowStepDef[] = [\n { id: score, name: 'Score Lead', type: 'llm-call', config: { type: 'llm-call', systemPrompt: 'You are a sales operations analyst. Score the lead from 1-10 and return JSON with score, rationale, and nextAction.', userPromptTemplate: 'Lead details:\\n\\n{{lead}}', parseJson: true, outputVar: 'leadScore' }, position: { x: 100, y: 200 } },\n { id: summarize, name: 'Summarize Lead', type: 'transform', config: { type: 'transform', expression: '({ score: leadScore.score, summary: leadScore.rationale, priority: leadScore.score >= 8 ? \"high\" : \"standard\", updatedAt: Date.now() })', inputVars: ['leadScore'], outputVar: 'leadSummary' }, position: { x: 400, y: 200 } },\n { id: route, name: 'Notify Sales', type: 'webhook', config: { type: 'webhook', url: 'https://api.example.com/crm/webhook', method: 'POST', bodyTemplate: 'Lead summary: {{leadSummary}}', outputVar: 'salesNotification' }, position: { x: 700, y: 200 } },\n ]\n const connections: StepConnection[] = [\n { fromStepId: score, toStepId: summarize },\n { fromStepId: summarize, toStepId: route },\n ]\n return {\n id: wfId(),\n name: 'Lead Qualification',\n description: 'AI-assisted lead scoring and sales handoff.',\n version: 1,\n status: 'draft',\n steps,\n connections,\n inputSchema: [\n { name: 'lead', type: 'string', required: true },\n { name: 'crmWebhookUrl', type: 'string', required: false, default: 'https://api.example.com/crm/webhook' },\n ],\n tags: ['sales', 'lead'],\n createdBy,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n }\n },\n}\n\n// ============================================================================\n// 7. Incident Triage\n// ============================================================================\n\nconst incidentTriage: WorkflowTemplate = {\n id: 'tpl-incident-triage',\n name: 'Incident Triage',\n description: 'Collect incident context, classify severity, and draft the response.',\n category: 'devops',\n tags: ['incident', 'ops', 'triage'],\n create: (createdBy) => {\n const fetchIncident = uid(), classify = uid(), draftResponse = uid()\n const steps: WorkflowStepDef[] = [\n { id: fetchIncident, name: 'Fetch Incident', type: 'webhook', config: { type: 'webhook', url: 'https://api.example.com/incidents', method: 'GET', outputVar: 'incidentData' }, position: { x: 100, y: 200 } },\n { id: classify, name: 'Classify Severity', type: 'llm-call', config: { type: 'llm-call', systemPrompt: 'You are an incident commander. Classify the incident severity and summarize the likely impact in JSON.', userPromptTemplate: 'Incident context:\\n\\n{{incidentData}}', parseJson: true, outputVar: 'classification' }, position: { x: 400, y: 200 } },\n { id: draftResponse, name: 'Draft Response', type: 'transform', config: { type: 'transform', expression: '({ severity: classification.severity, summary: classification.summary, draftedAt: Date.now() })', inputVars: ['classification'], outputVar: 'responseDraft' }, position: { x: 700, y: 200 } },\n ]\n const connections: StepConnection[] = [\n { fromStepId: fetchIncident, toStepId: classify },\n { fromStepId: classify, toStepId: draftResponse },\n ]\n return {\n id: wfId(),\n name: 'Incident Triage',\n description: 'Automated incident classification and response drafting.',\n version: 1,\n status: 'draft',\n steps,\n connections,\n inputSchema: [\n { name: 'incidentApiUrl', type: 'string', required: false, default: 'https://api.example.com/incidents' },\n ],\n tags: ['incident', 'ops'],\n createdBy,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n }\n },\n}\n\n// ============================================================================\n// 8. Launch Readiness\n// ============================================================================\n\nconst launchReadiness: WorkflowTemplate = {\n id: 'tpl-launch-readiness',\n name: 'Launch Readiness',\n description: 'Prepare launch notes, request approval, and publish the rollout payload.',\n category: 'approval',\n tags: ['launch', 'release', 'approval'],\n create: (createdBy) => {\n const prepare = uid(), approve = uid(), publish = uid()\n const steps: WorkflowStepDef[] = [\n { id: prepare, name: 'Prepare Launch Notes', type: 'llm-call', config: { type: 'llm-call', systemPrompt: 'You are a product marketing lead. Create concise launch notes with risks and highlights.', userPromptTemplate: 'Launch context:\\n\\n{{launchBrief}}', outputVar: 'launchNotes' }, position: { x: 100, y: 200 } },\n { id: approve, name: 'Approval Gate', type: 'human-approval', config: { type: 'human-approval', message: 'Review the launch notes before the rollout payload is published.' }, position: { x: 400, y: 200 } },\n { id: publish, name: 'Build Payload', type: 'transform', config: { type: 'transform', expression: '({ notes: launchNotes, approvedAt: Date.now(), releaseChannel: releaseChannel || \"stable\" })', inputVars: ['launchNotes', 'releaseChannel'], outputVar: 'launchPayload' }, position: { x: 700, y: 200 } },\n ]\n const connections: StepConnection[] = [\n { fromStepId: prepare, toStepId: approve },\n { fromStepId: approve, toStepId: publish },\n ]\n return {\n id: wfId(),\n name: 'Launch Readiness',\n description: 'Human-approved release preparation workflow.',\n version: 1,\n status: 'draft',\n steps,\n connections,\n inputSchema: [\n { name: 'launchBrief', type: 'string', required: true },\n { name: 'releaseChannel', type: 'string', required: false, default: 'stable' },\n ],\n tags: ['launch', 'release'],\n createdBy,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n }\n },\n}\n\n// ============================================================================\n// Template Registry\n// ============================================================================\n\n/**\n * Canonical template catalog shipped with the package.\n */\nexport const WORKFLOW_TEMPLATES: WorkflowTemplate[] = [\n contentPipeline,\n dataEnrichment,\n approvalChain,\n researchPipeline,\n codeReviewPipeline,\n leadQualification,\n incidentTriage,\n launchReadiness,\n]\n\n/**\n * Look up one workflow template by its stable identifier.\n *\n * @param id Template identifier to resolve.\n * @returns The matching workflow template when found.\n */\nexport function getTemplate(id: string): WorkflowTemplate | undefined {\n return WORKFLOW_TEMPLATES.find(t => t.id === id)\n}\n\n/**\n * Return every workflow template that belongs to one category.\n *\n * @param category Template category to filter by.\n * @returns Templates whose category matches the requested value.\n */\nexport function getTemplatesByCategory(category: WorkflowTemplate['category']): WorkflowTemplate[] {\n return WORKFLOW_TEMPLATES.filter(t => t.category === category)\n}\n","/**\n * @module WorkflowConvexSchemaFields\n * @package @geenius/ai-workflow-shared\n * @description Typed Convex-style schema manifests for the workflow package.\n * These structured objects preserve field shape so consumers can persist and\n * query workflow payloads without losing typed storage metadata.\n */\n\ntype LiteralField<T extends string | number | boolean> = {\n type: 'literal'\n value: T\n optional?: true\n}\n\ntype StringField = { type: 'string'; optional?: true }\ntype NumberField = { type: 'number'; optional?: true }\ntype BooleanField = { type: 'boolean'; optional?: true }\ntype UnknownField = { type: 'any'; optional?: true }\ntype ArrayField = { type: 'array'; items: SchemaField; optional?: true }\ntype RecordField = { type: 'record'; key: SchemaField; value: SchemaField; optional?: true }\ntype ObjectField = { type: 'object'; fields: Record<string, SchemaField>; optional?: true }\ntype UnionField = { type: 'union'; values: SchemaField[]; optional?: true }\n\n/**\n * Typed schema field descriptor used to describe Convex document shapes.\n */\nexport type SchemaField =\n | LiteralField<string | number | boolean>\n | StringField\n | NumberField\n | BooleanField\n | UnknownField\n | ArrayField\n | RecordField\n | ObjectField\n | UnionField\n\nconst stringField = (optional = false): StringField => ({ type: 'string', ...(optional ? { optional: true as const } : {}) })\nconst numberField = (optional = false): NumberField => ({ type: 'number', ...(optional ? { optional: true as const } : {}) })\nconst booleanField = (optional = false): BooleanField => ({ type: 'boolean', ...(optional ? { optional: true as const } : {}) })\nconst unknownField = (optional = false): UnknownField => ({ type: 'any', ...(optional ? { optional: true as const } : {}) })\nconst literalField = <T extends string | number | boolean>(value: T, optional = false): LiteralField<T> => ({ type: 'literal', value, ...(optional ? { optional: true as const } : {}) })\nconst arrayField = (items: SchemaField, optional = false): ArrayField => ({ type: 'array', items, ...(optional ? { optional: true as const } : {}) })\nconst recordField = (key: SchemaField, value: SchemaField, optional = false): RecordField => ({ type: 'record', key, value, ...(optional ? { optional: true as const } : {}) })\nconst objectField = (fields: Record<string, SchemaField>, optional = false): ObjectField => ({ type: 'object', fields, ...(optional ? { optional: true as const } : {}) })\nconst unionField = (values: SchemaField[], optional = false): UnionField => ({ type: 'union', values, ...(optional ? { optional: true as const } : {}) })\n\n/**\n * Manifest describing persisted workflow definition documents.\n */\nexport const workflowsTable = objectField({\n name: stringField(),\n description: stringField(true),\n version: numberField(),\n status: unionField([\n literalField('draft'),\n literalField('active'),\n literalField('archived'),\n literalField('error'),\n ]),\n definition: objectField({\n id: stringField(),\n name: stringField(),\n description: stringField(true),\n version: numberField(),\n status: stringField(),\n steps: arrayField(unknownField()),\n connections: arrayField(unknownField()),\n inputSchema: arrayField(unknownField(), true),\n variables: recordField(stringField(), unknownField(), true),\n tags: arrayField(stringField(), true),\n createdBy: stringField(),\n createdAt: numberField(),\n updatedAt: numberField(),\n }),\n createdBy: stringField(),\n tags: arrayField(stringField(), true),\n createdAt: numberField(),\n updatedAt: numberField(),\n})\n\n/**\n * Manifest describing persisted workflow execution run documents.\n */\nexport const workflowRunsTable = objectField({\n workflowId: stringField(),\n workflowVersion: numberField(),\n status: unionField([\n literalField('pending'),\n literalField('running'),\n literalField('paused'),\n literalField('completed'),\n literalField('failed'),\n literalField('cancelled'),\n ]),\n input: recordField(stringField(), unknownField(), true),\n variables: recordField(stringField(), unknownField(), true),\n currentStepIndex: numberField(),\n stepResults: arrayField(unknownField(), true),\n error: stringField(true),\n triggeredBy: stringField(),\n startedAt: numberField(),\n completedAt: numberField(true),\n})\n\n/**\n * Manifest describing persisted per-step execution result documents.\n */\nexport const workflowStepResultsTable = objectField({\n runId: stringField(),\n stepId: stringField(),\n stepName: stringField(),\n type: stringField(),\n status: unionField([\n literalField('pending'),\n literalField('running'),\n literalField('completed'),\n literalField('failed'),\n literalField('skipped'),\n literalField('waiting-approval'),\n ]),\n input: recordField(stringField(), unknownField(), true),\n output: unknownField(true),\n error: stringField(true),\n durationMs: numberField(),\n tokens: numberField(true),\n costUsd: numberField(true),\n startedAt: numberField(),\n completedAt: numberField(true),\n})\n\n/**\n * Named collection of all workflow table manifests for consumer schema merges.\n */\nexport const workflowTables = {\n workflows: workflowsTable,\n workflowRuns: workflowRunsTable,\n workflowStepResults: workflowStepResultsTable,\n}\n"]}
|