@geenius/ai-workflow 0.1.0 → 0.5.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.
Files changed (159) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +69 -1
  3. package/package.json +60 -27
  4. package/packages/convex/dist/index.d.ts +363 -0
  5. package/packages/convex/dist/index.js +200 -0
  6. package/packages/convex/dist/index.js.map +1 -0
  7. package/packages/react/dist/index.d.ts +514 -0
  8. package/packages/react/dist/index.js +2633 -0
  9. package/packages/react/dist/index.js.map +1 -0
  10. package/packages/react-css/{src/styles.css → dist/index.css} +107 -253
  11. package/packages/react-css/dist/index.css.map +1 -0
  12. package/packages/react-css/dist/index.d.ts +533 -0
  13. package/packages/react-css/dist/index.js +2620 -0
  14. package/packages/react-css/dist/index.js.map +1 -0
  15. package/packages/shared/dist/index.d.ts +1305 -0
  16. package/packages/shared/dist/index.js +1594 -0
  17. package/packages/shared/dist/index.js.map +1 -0
  18. package/packages/solidjs/dist/index.d.ts +492 -0
  19. package/packages/solidjs/dist/index.js +2552 -0
  20. package/packages/solidjs/dist/index.js.map +1 -0
  21. package/packages/solidjs-css/{src/styles.css → dist/index.css} +107 -253
  22. package/packages/solidjs-css/dist/index.css.map +1 -0
  23. package/packages/solidjs-css/dist/index.d.ts +509 -0
  24. package/packages/solidjs-css/dist/index.js +2493 -0
  25. package/packages/solidjs-css/dist/index.js.map +1 -0
  26. package/.changeset/config.json +0 -11
  27. package/.github/CODEOWNERS +0 -1
  28. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -16
  29. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -11
  30. package/.github/PULL_REQUEST_TEMPLATE.md +0 -10
  31. package/.github/dependabot.yml +0 -11
  32. package/.github/workflows/ci.yml +0 -23
  33. package/.github/workflows/release.yml +0 -29
  34. package/.nvmrc +0 -1
  35. package/.project/ACCOUNT.yaml +0 -4
  36. package/.project/IDEAS.yaml +0 -7
  37. package/.project/PROJECT.yaml +0 -11
  38. package/.project/ROADMAP.yaml +0 -15
  39. package/CODE_OF_CONDUCT.md +0 -16
  40. package/CONTRIBUTING.md +0 -26
  41. package/SECURITY.md +0 -15
  42. package/SUPPORT.md +0 -8
  43. package/packages/convex/README.md +0 -1
  44. package/packages/convex/package.json +0 -12
  45. package/packages/convex/src/convex.config.ts +0 -3
  46. package/packages/convex/src/index.ts +0 -3
  47. package/packages/convex/src/mutations.ts +0 -36
  48. package/packages/convex/src/queries.ts +0 -19
  49. package/packages/convex/src/schema.ts +0 -24
  50. package/packages/convex/tsconfig.json +0 -25
  51. package/packages/react/README.md +0 -1
  52. package/packages/react/package.json +0 -46
  53. package/packages/react/src/components/ApprovalModal.tsx +0 -47
  54. package/packages/react/src/components/StepConfigPanel.tsx +0 -67
  55. package/packages/react/src/components/StepConnector.tsx +0 -47
  56. package/packages/react/src/components/StepNode.tsx +0 -38
  57. package/packages/react/src/components/StepPalette.tsx +0 -48
  58. package/packages/react/src/components/WorkflowCanvas.tsx +0 -42
  59. package/packages/react/src/components/WorkflowRunPanel.tsx +0 -64
  60. package/packages/react/src/components/WorkflowToolbar.tsx +0 -43
  61. package/packages/react/src/components/index.ts +0 -9
  62. package/packages/react/src/hooks/index.ts +0 -10
  63. package/packages/react/src/hooks/useApprovalGate.ts +0 -59
  64. package/packages/react/src/hooks/useWorkflow.ts +0 -39
  65. package/packages/react/src/hooks/useWorkflowBuilder.ts +0 -121
  66. package/packages/react/src/hooks/useWorkflowRun.ts +0 -75
  67. package/packages/react/src/hooks/useWorkflowStep.ts +0 -52
  68. package/packages/react/src/hooks/useWorkflowTemplates.ts +0 -54
  69. package/packages/react/src/index.ts +0 -16
  70. package/packages/react/src/pages/WorkflowBuilderPage.tsx +0 -81
  71. package/packages/react/src/pages/WorkflowRunsPage.tsx +0 -59
  72. package/packages/react/src/pages/index.ts +0 -3
  73. package/packages/react/tsconfig.json +0 -1
  74. package/packages/react/tsup.config.ts +0 -7
  75. package/packages/react-css/README.md +0 -1
  76. package/packages/react-css/package.json +0 -44
  77. package/packages/react-css/src/components/ApprovalModal.tsx +0 -6
  78. package/packages/react-css/src/components/StepConfigPanel.tsx +0 -7
  79. package/packages/react-css/src/components/StepConnector.tsx +0 -6
  80. package/packages/react-css/src/components/StepNode.tsx +0 -7
  81. package/packages/react-css/src/components/StepPalette.tsx +0 -6
  82. package/packages/react-css/src/components/WorkflowCanvas.tsx +0 -6
  83. package/packages/react-css/src/components/WorkflowRunPanel.tsx +0 -9
  84. package/packages/react-css/src/components/WorkflowToolbar.tsx +0 -4
  85. package/packages/react-css/src/components/index.ts +0 -9
  86. package/packages/react-css/src/hooks/index.ts +0 -3
  87. package/packages/react-css/src/hooks/useWorkflow.ts +0 -39
  88. package/packages/react-css/src/hooks/useWorkflowBuilder.ts +0 -121
  89. package/packages/react-css/src/index.ts +0 -7
  90. package/packages/react-css/src/pages/WorkflowBuilderPage.tsx +0 -16
  91. package/packages/react-css/src/pages/WorkflowRunsPage.tsx +0 -6
  92. package/packages/react-css/src/pages/index.ts +0 -3
  93. package/packages/react-css/tsconfig.json +0 -26
  94. package/packages/react-css/tsup.config.ts +0 -2
  95. package/packages/shared/README.md +0 -1
  96. package/packages/shared/package.json +0 -56
  97. package/packages/shared/src/__tests__/ai-workflow.test.ts +0 -217
  98. package/packages/shared/src/config.ts +0 -49
  99. package/packages/shared/src/convex/index.ts +0 -2
  100. package/packages/shared/src/convex/schemas.ts +0 -42
  101. package/packages/shared/src/engine.test.ts +0 -1
  102. package/packages/shared/src/engine.ts +0 -295
  103. package/packages/shared/src/index.ts +0 -43
  104. package/packages/shared/src/steps.ts +0 -68
  105. package/packages/shared/src/templates.ts +0 -172
  106. package/packages/shared/src/types.ts +0 -237
  107. package/packages/shared/src/utils/cost.ts +0 -79
  108. package/packages/shared/src/utils/dag.ts +0 -133
  109. package/packages/shared/src/utils/index.ts +0 -5
  110. package/packages/shared/src/utils/interpolation.ts +0 -53
  111. package/packages/shared/src/validators.ts +0 -215
  112. package/packages/shared/tsconfig.json +0 -1
  113. package/packages/shared/tsup.config.ts +0 -5
  114. package/packages/shared/vitest.config.ts +0 -4
  115. package/packages/solidjs/README.md +0 -1
  116. package/packages/solidjs/package.json +0 -45
  117. package/packages/solidjs/src/components/ApprovalModal.tsx +0 -18
  118. package/packages/solidjs/src/components/StepConfigPanel.tsx +0 -14
  119. package/packages/solidjs/src/components/StepConnector.tsx +0 -11
  120. package/packages/solidjs/src/components/StepNode.tsx +0 -12
  121. package/packages/solidjs/src/components/StepPalette.tsx +0 -22
  122. package/packages/solidjs/src/components/WorkflowCanvas.tsx +0 -23
  123. package/packages/solidjs/src/components/WorkflowRunPanel.tsx +0 -18
  124. package/packages/solidjs/src/components/WorkflowToolbar.tsx +0 -13
  125. package/packages/solidjs/src/components/index.ts +0 -9
  126. package/packages/solidjs/src/index.ts +0 -7
  127. package/packages/solidjs/src/pages/WorkflowBuilderPage.tsx +0 -37
  128. package/packages/solidjs/src/pages/WorkflowRunsPage.tsx +0 -20
  129. package/packages/solidjs/src/pages/index.ts +0 -3
  130. package/packages/solidjs/src/primitives/createApprovalGate.ts +0 -29
  131. package/packages/solidjs/src/primitives/createWorkflow.ts +0 -28
  132. package/packages/solidjs/src/primitives/createWorkflowBuilder.ts +0 -56
  133. package/packages/solidjs/src/primitives/createWorkflowRun.ts +0 -32
  134. package/packages/solidjs/src/primitives/createWorkflowStep.ts +0 -23
  135. package/packages/solidjs/src/primitives/createWorkflowTemplates.ts +0 -28
  136. package/packages/solidjs/src/primitives/index.ts +0 -8
  137. package/packages/solidjs/tsconfig.json +0 -1
  138. package/packages/solidjs/tsup.config.ts +0 -7
  139. package/packages/solidjs-css/README.md +0 -1
  140. package/packages/solidjs-css/package.json +0 -43
  141. package/packages/solidjs-css/src/components/ApprovalModal.tsx +0 -6
  142. package/packages/solidjs-css/src/components/StepConfigPanel.tsx +0 -7
  143. package/packages/solidjs-css/src/components/StepConnector.tsx +0 -6
  144. package/packages/solidjs-css/src/components/StepNode.tsx +0 -7
  145. package/packages/solidjs-css/src/components/StepPalette.tsx +0 -7
  146. package/packages/solidjs-css/src/components/WorkflowCanvas.tsx +0 -7
  147. package/packages/solidjs-css/src/components/WorkflowRunPanel.tsx +0 -8
  148. package/packages/solidjs-css/src/components/WorkflowToolbar.tsx +0 -5
  149. package/packages/solidjs-css/src/components/index.ts +0 -9
  150. package/packages/solidjs-css/src/index.ts +0 -7
  151. package/packages/solidjs-css/src/pages/WorkflowBuilderPage.tsx +0 -2
  152. package/packages/solidjs-css/src/pages/WorkflowRunsPage.tsx +0 -7
  153. package/packages/solidjs-css/src/pages/index.ts +0 -3
  154. package/packages/solidjs-css/src/primitives/createWorkflow.ts +0 -28
  155. package/packages/solidjs-css/src/primitives/createWorkflowBuilder.ts +0 -56
  156. package/packages/solidjs-css/src/primitives/index.ts +0 -1
  157. package/packages/solidjs-css/tsconfig.json +0 -27
  158. package/packages/solidjs-css/tsup.config.ts +0 -2
  159. package/pnpm-workspace.yaml +0 -2
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/styles.css"],"sourcesContent":["/* @geenius/ai-workflow — styles.css\n * Unified BEM stylesheet for all CSS variant packages.\n * Ships local fallback tokens while allowing host apps to override them.\n */\n\n/* ========================================\n Color Tokens (OKLCH)\n ======================================== */\n:root {\n --gui-bg: oklch(0.985 0.003 255);\n --gui-foreground: oklch(0.278 0.03 257);\n --gui-primary: oklch(0.63 0.2 262);\n --gui-primary-fg: oklch(0.985 0.002 255);\n --gui-primary-subtle: color-mix(in oklab, var(--gui-primary) 12%, white);\n --gui-success: oklch(0.72 0.17 152);\n --gui-warning: oklch(0.82 0.16 84);\n --gui-danger: oklch(0.63 0.24 28);\n --gui-border: oklch(0.9 0.008 255);\n --gui-card: oklch(0.998 0.001 255);\n --gui-card-fg: var(--gui-foreground);\n --gui-muted-fg: oklch(0.56 0.018 255);\n --gui-surface: oklch(0.968 0.004 255);\n --gui-ring: color-mix(in oklab, var(--gui-primary) 35%, transparent);\n --background: var(--gui-bg);\n --foreground: var(--gui-foreground);\n --primary: var(--gui-primary);\n --primary-foreground: var(--gui-primary-fg);\n --primary-soft: var(--gui-primary-subtle);\n --success: var(--gui-success);\n --warning: var(--gui-warning);\n --danger: var(--gui-danger);\n --border: var(--gui-border);\n --card: var(--gui-card);\n --card-foreground: var(--gui-card-fg);\n --muted-foreground: var(--gui-muted-fg);\n --secondary: var(--gui-surface);\n --ring: var(--gui-ring);\n --shadow-color: color-mix(in oklab, var(--foreground) 20%, transparent);\n --shadow-color-sm: color-mix(in oklab, var(--foreground) 10%, transparent);\n --shadow-color-lg: color-mix(in oklab, var(--foreground) 40%, transparent);\n --primary-ring: color-mix(in oklab, var(--primary) 20%, transparent);\n --primary-ring-strong: color-mix(in oklab, var(--primary) 55%, transparent);\n --primary-glow: color-mix(in oklab, var(--primary) 40%, transparent);\n --warning-soft: color-mix(in oklab, var(--warning) 10%, transparent);\n --danger-soft: color-mix(in oklab, var(--danger) 10%, transparent);\n --success-soft: color-mix(in oklab, var(--success) 10%, transparent);\n --ai-workflow-bg: var(--background);\n --ai-workflow-surface: var(--card);\n --ai-workflow-surface-2: var(--secondary);\n --ai-workflow-border: var(--border);\n --ai-workflow-text: var(--foreground);\n --ai-workflow-text-muted: var(--muted-foreground);\n --ai-workflow-accent: var(--primary);\n --ai-workflow-running: var(--primary);\n --ai-workflow-success: var(--success);\n --ai-workflow-error: var(--danger);\n --ai-workflow-pending: var(--warning);\n --ai-workflow-skipped: var(--muted-foreground);\n --ai-workflow-connector: var(--border);\n --ai-workflow-radius: 1.5rem;\n --ai-workflow-radius-sm: 0.75rem;\n --ai-workflow-radius-lg: 2rem;\n --ai-workflow-shadow: 0 8px 32px var(--shadow-color);\n --ai-workflow-shadow-sm: 0 4px 16px var(--shadow-color-sm);\n --ai-workflow-shadow-lg: 0 16px 48px var(--shadow-color-lg);\n --ai-workflow-glow: 0 0 24px var(--primary-glow);\n --ai-workflow-transition: 200ms cubic-bezier(0.4, 0, 0.2, 1);\n --ai-workflow-transition-fast: 100ms ease;\n --ai-workflow-transition-slow: 300ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n[data-theme=\"dark\"],\n.dark {\n --gui-bg: oklch(0.19 0.01 255);\n --gui-foreground: oklch(0.94 0.01 255);\n --gui-primary: oklch(0.71 0.18 262);\n --gui-primary-fg: oklch(0.22 0.02 255);\n --gui-primary-subtle: color-mix(in oklab, var(--gui-primary) 16%, black);\n --gui-success: oklch(0.78 0.16 152);\n --gui-warning: oklch(0.86 0.15 84);\n --gui-danger: oklch(0.71 0.2 28);\n --gui-border: oklch(0.34 0.015 255);\n --gui-card: oklch(0.23 0.01 255);\n --gui-card-fg: var(--gui-foreground);\n --gui-muted-fg: oklch(0.72 0.014 255);\n --gui-surface: oklch(0.27 0.01 255);\n --gui-ring: color-mix(in oklab, var(--gui-primary) 45%, transparent);\n}\n\n/* ========================================\n BLOCK: ai-workflow__canvas\n ======================================== */\n.ai-workflow__canvas {\n position: relative;\n min-height: 500px;\n background: var(--ai-workflow-surface);\n border-radius: var(--ai-workflow-radius);\n overflow: hidden;\n border: 1px solid var(--ai-workflow-border);\n box-shadow: var(--ai-workflow-shadow-sm);\n backdrop-filter: blur(24px);\n -webkit-backdrop-filter: blur(24px);\n}\n\n.ai-workflow__canvas--empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: var(--ai-workflow-text-muted);\n}\n\n.ai-workflow__canvas-bg {\n position: absolute;\n inset: 0;\n background-image:\n linear-gradient(var(--ai-workflow-border) 1px, transparent 1px),\n linear-gradient(90deg, var(--ai-workflow-border) 1px, transparent 1px);\n background-size: 20px 20px;\n pointer-events: none;\n}\n\n.ai-workflow__canvas-grid {\n position: relative;\n z-index: 1;\n height: 100%;\n}\n\n/* ========================================\n BLOCK: ai-workflow__step-node\n ======================================== */\n.ai-workflow__step-node {\n position: relative;\n background: var(--ai-workflow-surface-2);\n border: 2px solid var(--ai-workflow-border);\n border-radius: var(--ai-workflow-radius-sm);\n padding: 1rem;\n min-width: 180px;\n cursor: pointer;\n transition: all var(--ai-workflow-transition);\n box-shadow: var(--ai-workflow-shadow-sm);\n}\n\n.ai-workflow__step-node:hover {\n border-color: var(--ai-workflow-accent);\n background: var(--ai-workflow-surface-2);\n}\n\n.ai-workflow__step-node--selected {\n border-color: var(--ai-workflow-accent);\n background: var(--primary-soft);\n box-shadow: 0 0 0 3px var(--primary-ring), var(--ai-workflow-glow);\n}\n\n.ai-workflow__step-node--pending {\n border-color: var(--ai-workflow-pending);\n}\n\n.ai-workflow__step-node--running {\n border-color: var(--ai-workflow-running);\n animation: ai-workflow-pulse-running 1.5s ease-in-out infinite;\n}\n\n.ai-workflow__step-node--success {\n border-color: var(--ai-workflow-success);\n}\n\n.ai-workflow__step-node--error {\n border-color: var(--ai-workflow-error);\n background: var(--danger-soft);\n}\n\n.ai-workflow__step-node--skipped {\n border-color: var(--ai-workflow-skipped);\n opacity: 0.7;\n}\n\n@keyframes ai-workflow-pulse-running {\n 0%, 100% {\n box-shadow: 0 0 0 0 var(--primary-ring-strong), var(--ai-workflow-shadow-sm);\n }\n 50% {\n box-shadow: 0 0 0 8px transparent, var(--ai-workflow-shadow-sm);\n }\n}\n\n.ai-workflow__step-header {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin-bottom: 0.5rem;\n}\n\n.ai-workflow__step-icon {\n font-size: 1.25rem;\n flex-shrink: 0;\n}\n\n.ai-workflow__step-name {\n font-weight: 600;\n color: var(--ai-workflow-text);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ai-workflow__step-type-badge {\n font-size: 0.7rem;\n color: var(--ai-workflow-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n background: var(--ai-workflow-surface);\n padding: 0.2rem 0.4rem;\n border-radius: 2px;\n}\n\n.ai-workflow__step-optional-badge,\n.ai-workflow__step-retry-badge {\n display: inline-block;\n font-size: 0.65rem;\n padding: 0.1rem 0.4rem;\n border-radius: 999px;\n background: var(--ai-workflow-surface);\n color: var(--ai-workflow-text-muted);\n font-weight: 500;\n}\n\n.ai-workflow__step-status {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.5rem;\n height: 1.5rem;\n border-radius: 50%;\n font-size: 0.8rem;\n}\n\n.ai-workflow__step-status--pending {\n background: var(--ai-workflow-pending);\n}\n\n.ai-workflow__step-status--running {\n background: var(--ai-workflow-running);\n animation: ai-workflow-spin 1s linear infinite;\n}\n\n.ai-workflow__step-status--success {\n background: var(--ai-workflow-success);\n}\n\n.ai-workflow__step-status--error {\n background: var(--ai-workflow-error);\n}\n\n@keyframes ai-workflow-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n/* ========================================\n BLOCK: ai-workflow__connector\n ======================================== */\n.ai-workflow__connector {\n position: absolute;\n pointer-events: none;\n stroke: var(--ai-workflow-connector);\n stroke-width: 2px;\n fill: none;\n}\n\n.ai-workflow__connector--running {\n stroke: var(--ai-workflow-running);\n animation: ai-workflow-flow 2s ease-in-out infinite;\n}\n\n.ai-workflow__connector--error {\n stroke: var(--ai-workflow-error);\n}\n\n.ai-workflow__connector--success {\n stroke: var(--ai-workflow-success);\n}\n\n@keyframes ai-workflow-flow {\n 0%, 100% {\n opacity: 0.5;\n }\n 50% {\n opacity: 1;\n }\n}\n\n/* ========================================\n BLOCK: ai-workflow__step-detail-panel\n ======================================== */\n.ai-workflow__step-detail-panel {\n background: var(--ai-workflow-surface-2);\n border-left: 1px solid var(--ai-workflow-border);\n padding: 1.5rem;\n min-width: 300px;\n max-width: 400px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n}\n\n.ai-workflow__detail-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 1rem;\n border-bottom: 1px solid var(--ai-workflow-border);\n padding-bottom: 1rem;\n}\n\n.ai-workflow__detail-title {\n font-size: 1.1rem;\n font-weight: 700;\n color: var(--ai-workflow-text);\n margin: 0;\n}\n\n.ai-workflow__detail-close {\n background: transparent;\n border: none;\n color: var(--ai-workflow-text-muted);\n cursor: pointer;\n font-size: 1.25rem;\n padding: 0;\n transition: color var(--ai-workflow-transition);\n}\n\n.ai-workflow__detail-close:hover {\n color: var(--ai-workflow-text);\n}\n\n.ai-workflow__detail-section {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.ai-workflow__detail-label {\n font-size: 0.8rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n color: var(--ai-workflow-text-muted);\n}\n\n.ai-workflow__detail-value {\n font-size: 0.9rem;\n color: var(--ai-workflow-text);\n word-break: break-word;\n}\n\n.ai-workflow__detail-code {\n background: var(--ai-workflow-surface);\n padding: 0.75rem;\n border-radius: var(--ai-workflow-radius-sm);\n border: 1px solid var(--ai-workflow-border);\n font-family: 'Courier New', monospace;\n font-size: 0.8rem;\n color: var(--ai-workflow-accent);\n overflow-x: auto;\n}\n\n/* ========================================\n BLOCK: ai-workflow__run-history-table\n ======================================== */\n.ai-workflow__run-history-table {\n width: 100%;\n border-collapse: collapse;\n background: var(--ai-workflow-surface);\n}\n\n.ai-workflow__history-header {\n background: var(--ai-workflow-surface-2);\n border-bottom: 2px solid var(--ai-workflow-border);\n}\n\n.ai-workflow__history-th {\n padding: 1rem;\n text-align: left;\n font-weight: 600;\n font-size: 0.8rem;\n color: var(--ai-workflow-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n}\n\n.ai-workflow__history-row {\n border-bottom: 1px solid var(--ai-workflow-border);\n transition: background var(--ai-workflow-transition);\n}\n\n.ai-workflow__history-row:hover {\n background: var(--ai-workflow-surface-2);\n}\n\n.ai-workflow__history-td {\n padding: 1rem;\n font-size: 0.9rem;\n color: var(--ai-workflow-text);\n}\n\n.ai-workflow__history-status-badge {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.35rem 0.75rem;\n border-radius: 999px;\n font-size: 0.8rem;\n font-weight: 600;\n}\n\n.ai-workflow__history-status-badge--pending {\n background: var(--ai-workflow-pending);\n color: var(--ai-workflow-text);\n}\n\n.ai-workflow__history-status-badge--running {\n background: var(--ai-workflow-running);\n color: var(--ai-workflow-text);\n}\n\n.ai-workflow__history-status-badge--success {\n background: var(--ai-workflow-success);\n color: var(--ai-workflow-text);\n}\n\n.ai-workflow__history-status-badge--error {\n background: var(--ai-workflow-error);\n color: white;\n}\n\n.ai-workflow__history-time {\n font-size: 0.8rem;\n color: var(--ai-workflow-text-muted);\n}\n\n/* ========================================\n BLOCK: ai-workflow__trigger-selector\n ======================================== */\n.ai-workflow__trigger-selector {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n padding: 1rem;\n background: var(--ai-workflow-surface);\n border: 1px solid var(--ai-workflow-border);\n border-radius: var(--ai-workflow-radius-sm);\n}\n\n.ai-workflow__trigger-title {\n font-weight: 600;\n color: var(--ai-workflow-text);\n font-size: 0.9rem;\n}\n\n.ai-workflow__trigger-option {\n padding: 0.75rem;\n background: var(--ai-workflow-surface-2);\n border: 1px solid var(--ai-workflow-border);\n border-radius: var(--ai-workflow-radius-sm);\n cursor: pointer;\n transition: all var(--ai-workflow-transition);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.ai-workflow__trigger-option:hover {\n border-color: var(--ai-workflow-accent);\n}\n\n.ai-workflow__trigger-option--selected {\n border-color: var(--ai-workflow-accent);\n background: var(--primary-soft);\n}\n\n.ai-workflow__trigger-radio {\n width: 1rem;\n height: 1rem;\n border-radius: 50%;\n border: 2px solid var(--ai-workflow-border);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all var(--ai-workflow-transition);\n}\n\n.ai-workflow__trigger-option--selected .ai-workflow__trigger-radio {\n border-color: var(--ai-workflow-accent);\n background: var(--ai-workflow-accent);\n}\n\n.ai-workflow__trigger-label {\n flex: 1;\n color: var(--ai-workflow-text);\n font-size: 0.9rem;\n font-weight: 500;\n}\n\n/* ========================================\n BLOCK: ai-workflow__execution-log\n ======================================== */\n.ai-workflow__execution-log {\n background: var(--ai-workflow-surface);\n border: 1px solid var(--ai-workflow-border);\n border-radius: var(--ai-workflow-radius-sm);\n padding: 1rem;\n font-family: 'Courier New', monospace;\n font-size: 0.8rem;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.ai-workflow__log-line {\n margin: 0.5rem 0;\n color: var(--ai-workflow-text-muted);\n white-space: pre-wrap;\n word-wrap: break-word;\n}\n\n.ai-workflow__log-line--info {\n color: var(--ai-workflow-accent);\n}\n\n.ai-workflow__log-line--success {\n color: var(--ai-workflow-success);\n}\n\n.ai-workflow__log-line--error {\n color: var(--ai-workflow-error);\n}\n\n.ai-workflow__log-line--warning {\n color: var(--warning);\n}\n\n.ai-workflow__log-timestamp {\n color: var(--ai-workflow-border);\n margin-right: 0.5rem;\n}\n\n/* ========================================\n BLOCK: ai-workflow__progress-tracker\n ======================================== */\n.ai-workflow__progress-tracker {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem;\n background: var(--ai-workflow-surface);\n border: 1px solid var(--ai-workflow-border);\n border-radius: var(--ai-workflow-radius-sm);\n}\n\n.ai-workflow__progress-bar {\n flex: 1;\n height: 0.5rem;\n background: var(--ai-workflow-surface-2);\n border-radius: 999px;\n overflow: hidden;\n}\n\n.ai-workflow__progress-fill {\n height: 100%;\n background: linear-gradient(90deg, var(--ai-workflow-accent), var(--ai-workflow-running));\n border-radius: 999px;\n animation: ai-workflow-progress 2s ease-in-out;\n}\n\n.ai-workflow__progress-fill--complete {\n background: var(--ai-workflow-success);\n animation: none;\n}\n\n@keyframes ai-workflow-progress {\n 0% {\n width: 0%;\n }\n}\n\n.ai-workflow__progress-text {\n font-size: 0.85rem;\n color: var(--ai-workflow-text);\n font-weight: 600;\n min-width: 60px;\n text-align: right;\n}\n\n/* ========================================\n BLOCK: ai-workflow__step-list\n ======================================== */\n.ai-workflow__step-list {\n list-style: none;\n padding: 0;\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.ai-workflow__step-list-item {\n padding: 0.75rem 1rem;\n background: var(--ai-workflow-surface);\n border: 1px solid var(--ai-workflow-border);\n border-radius: var(--ai-workflow-radius-sm);\n display: flex;\n align-items: center;\n gap: 0.75rem;\n transition: all var(--ai-workflow-transition);\n cursor: pointer;\n}\n\n.ai-workflow__step-list-item:hover {\n background: var(--ai-workflow-surface-2);\n border-color: var(--ai-workflow-accent);\n}\n\n.ai-workflow__step-list-item--selected {\n border-color: var(--ai-workflow-accent);\n background: var(--primary-soft);\n}\n\n.ai-workflow__step-list-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.75rem;\n height: 1.75rem;\n border-radius: 50%;\n background: var(--ai-workflow-surface-2);\n font-size: 0.8rem;\n font-weight: 600;\n color: var(--ai-workflow-text);\n flex-shrink: 0;\n}\n\n.ai-workflow__step-list-item--success .ai-workflow__step-list-number {\n background: var(--ai-workflow-success);\n}\n\n.ai-workflow__step-list-item--error .ai-workflow__step-list-number {\n background: var(--ai-workflow-error);\n}\n\n.ai-workflow__step-list-label {\n flex: 1;\n font-size: 0.9rem;\n color: var(--ai-workflow-text);\n font-weight: 500;\n}\n\n/* ========================================\n BLOCK: ai-workflow__variable-editor\n ======================================== */\n.ai-workflow__variable-editor {\n background: var(--ai-workflow-surface);\n border: 1px solid var(--ai-workflow-border);\n border-radius: var(--ai-workflow-radius-sm);\n padding: 1rem;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n}\n\n.ai-workflow__variable-header {\n font-weight: 600;\n color: var(--ai-workflow-text);\n font-size: 0.9rem;\n}\n\n.ai-workflow__variable-item {\n display: flex;\n gap: 0.75rem;\n}\n\n.ai-workflow__variable-name {\n flex: 0 0 120px;\n padding: 0.5rem;\n background: var(--ai-workflow-surface-2);\n border: 1px solid var(--ai-workflow-border);\n border-radius: var(--ai-workflow-radius-sm);\n color: var(--ai-workflow-text);\n font-size: 0.85rem;\n font-family: 'Courier New', monospace;\n}\n\n.ai-workflow__variable-value {\n flex: 1;\n padding: 0.5rem;\n background: var(--ai-workflow-surface-2);\n border: 1px solid var(--ai-workflow-border);\n border-radius: var(--ai-workflow-radius-sm);\n color: var(--ai-workflow-text);\n font-size: 0.85rem;\n}\n\n.ai-workflow__variable-value:focus {\n outline: none;\n border-color: var(--ai-workflow-accent);\n}\n\n/* ========================================\n BLOCK: ai-workflow__condition-block\n ======================================== */\n.ai-workflow__condition-block {\n background: var(--ai-workflow-surface);\n border: 1px solid var(--ai-workflow-border);\n border-radius: var(--ai-workflow-radius-sm);\n padding: 1rem;\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.ai-workflow__condition-label {\n font-weight: 600;\n color: var(--ai-workflow-text);\n font-size: 0.9rem;\n}\n\n.ai-workflow__condition-row {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n}\n\n.ai-workflow__condition-field {\n flex: 1;\n padding: 0.5rem;\n background: var(--ai-workflow-surface-2);\n border: 1px solid var(--ai-workflow-border);\n border-radius: var(--ai-workflow-radius-sm);\n color: var(--ai-workflow-text);\n font-size: 0.85rem;\n}\n\n.ai-workflow__condition-field:focus {\n outline: none;\n border-color: var(--ai-workflow-accent);\n}\n\n.ai-workflow__condition-operator {\n flex: 0 0 80px;\n padding: 0.5rem;\n background: var(--ai-workflow-surface-2);\n border: 1px solid var(--ai-workflow-border);\n border-radius: var(--ai-workflow-radius-sm);\n color: var(--ai-workflow-text);\n font-size: 0.85rem;\n text-align: center;\n}\n\n/* ========================================\n BLOCK: ai-workflow__loop-indicator\n ======================================== */\n.ai-workflow__loop-indicator {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.35rem 0.75rem;\n background: var(--ai-workflow-accent);\n color: var(--ai-workflow-text);\n border-radius: 999px;\n font-size: 0.8rem;\n font-weight: 600;\n}\n\n.ai-workflow__loop-icon {\n font-size: 0.9rem;\n animation: ai-workflow-spin 1s linear infinite;\n}\n\n/* ========================================\n BLOCK: ai-workflow__parallel-badge\n ======================================== */\n.ai-workflow__parallel-badge {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.35rem 0.75rem;\n background: var(--success);\n color: var(--ai-workflow-text);\n border-radius: 999px;\n font-size: 0.8rem;\n font-weight: 600;\n}\n\n.ai-workflow__parallel-icon {\n font-size: 0.9rem;\n}\n\n/* ========================================\n STATES: Skeleton Loading\n ======================================== */\n.ai-workflow__skeleton {\n background: linear-gradient(\n 90deg,\n var(--ai-workflow-surface-2) 0%,\n var(--ai-workflow-border) 50%,\n var(--ai-workflow-surface-2) 100%\n );\n background-size: 200% 100%;\n animation: ai-workflow-skeleton-loading 1.5s ease-in-out infinite;\n border-radius: var(--ai-workflow-radius-sm);\n}\n\n.ai-workflow__skeleton--text {\n height: 1rem;\n margin: 0.5rem 0;\n}\n\n.ai-workflow__skeleton--node {\n height: 5rem;\n width: 180px;\n}\n\n.ai-workflow__skeleton--card {\n height: 6rem;\n}\n\n@keyframes ai-workflow-skeleton-loading {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n}\n\n/* ========================================\n STATES: Empty State\n ======================================== */\n.ai-workflow__empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 1rem;\n padding: 3rem 2rem;\n text-align: center;\n min-height: 12rem;\n background: var(--ai-workflow-surface);\n border: 2px dashed var(--ai-workflow-border);\n border-radius: var(--ai-workflow-radius);\n}\n\n.ai-workflow__empty-icon {\n font-size: 3rem;\n opacity: 0.3;\n}\n\n.ai-workflow__empty-title {\n margin: 0;\n font-size: 1.1rem;\n font-weight: 600;\n color: var(--ai-workflow-text);\n}\n\n.ai-workflow__empty-description {\n margin: 0;\n color: var(--ai-workflow-text-muted);\n font-size: 0.9rem;\n max-width: 300px;\n}\n\n/* ========================================\n RESPONSIVE: Tablet\n ======================================== */\n@media (max-width: 768px) {\n .ai-workflow__step-detail-panel {\n max-width: none;\n min-width: 250px;\n }\n\n .ai-workflow__run-history-table {\n font-size: 0.85rem;\n }\n\n .ai-workflow__history-th,\n .ai-workflow__history-td {\n padding: 0.75rem;\n }\n\n .ai-workflow__execution-log {\n max-height: 300px;\n font-size: 0.75rem;\n }\n}\n\n/* ========================================\n RESPONSIVE: Mobile\n ======================================== */\n@media (max-width: 480px) {\n .ai-workflow__canvas {\n min-height: 300px;\n }\n\n .ai-workflow__step-detail-panel {\n min-width: 100%;\n max-width: none;\n border-left: none;\n border-top: 1px solid var(--ai-workflow-border);\n }\n\n .ai-workflow__step-node {\n min-width: 150px;\n padding: 0.75rem;\n }\n\n .ai-workflow__run-history-table {\n font-size: 0.75rem;\n }\n\n .ai-workflow__history-th,\n .ai-workflow__history-td {\n padding: 0.5rem;\n }\n\n .ai-workflow__condition-row {\n flex-direction: column;\n }\n\n .ai-workflow__condition-field,\n .ai-workflow__condition-operator {\n width: 100%;\n }\n\n .ai-workflow__execution-log {\n font-size: 0.7rem;\n max-height: 250px;\n }\n}\n\n/* ========================================\n UTILITY: Accessibility\n ======================================== */\n.ai-workflow__focus-visible:focus-visible {\n outline: 2px solid var(--ai-workflow-accent);\n outline-offset: 2px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .ai-workflow__step-node--running,\n .ai-workflow__step-status--running,\n .ai-workflow__loop-icon,\n .ai-workflow__progress-fill,\n .ai-workflow__skeleton,\n .ai-workflow__connector--running {\n animation: none;\n transition: none;\n }\n}\n\n/* ========================================\n UTILITY: Print Styles\n ======================================== */\n@media print {\n .ai-workflow__canvas {\n break-inside: avoid;\n page-break-inside: avoid;\n }\n\n .ai-workflow__step-node {\n break-inside: avoid;\n page-break-inside: avoid;\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,533 @@
1
+ import { WorkflowEngineOptions, WorkflowDefinition, WorkflowRun, WorkflowError, StepResult, WorkflowStepDef, StepConnection, RunStatus, StepStatus, WorkflowTemplate, StepType } from '@geenius/ai-workflow-shared';
2
+ export { RunStatus, StepConfig, StepResult, StepStatus, StepType, WORKFLOW_TEMPLATES, WorkflowBuilderState, WorkflowDefinition, WorkflowEngine, WorkflowRun, WorkflowStatus, WorkflowStepDef, getTemplate, getTemplatesByCategory, validateRun, validateWorkflow } from '@geenius/ai-workflow-shared';
3
+ import { ReactElement } from 'react';
4
+
5
+ /**
6
+ * @module CssUseApprovalGate
7
+ * @package @geenius/ai-workflow-react-css
8
+ * @description React hook for managing pending approval requests in the
9
+ * plain-CSS workflow variant. This keeps request state local to the CSS
10
+ * surface without depending on the Tailwind hook package.
11
+ */
12
+ /**
13
+ * Pending human approval request tracked by the plain-CSS hook.
14
+ *
15
+ * @property id Stable approval request identifier.
16
+ * @property stepId Related workflow step identifier.
17
+ * @property message Approval prompt shown to operators.
18
+ * @property requestedAt Unix timestamp when approval was requested.
19
+ * @property approvers Optional list of approvers or approver groups.
20
+ */
21
+ interface ApprovalRequest {
22
+ id: string;
23
+ stepId: string;
24
+ message: string;
25
+ requestedAt: number;
26
+ approvers?: string[];
27
+ }
28
+ interface ApprovalHistoryEntry extends ApprovalRequest {
29
+ decision: "approved" | "rejected";
30
+ decidedAt: number;
31
+ }
32
+ interface UseApprovalGateResult {
33
+ pendingApprovals: ApprovalRequest[];
34
+ history: ApprovalHistoryEntry[];
35
+ hasPending: boolean;
36
+ requestApproval: (stepId: string, message: string, approvers?: string[]) => string;
37
+ approve: (approvalId: string) => void;
38
+ reject: (approvalId: string) => void;
39
+ clearHistory: () => void;
40
+ }
41
+ /**
42
+ * Track pending approval requests and approval history in React state.
43
+ *
44
+ * @returns Approval request state, mutation helpers, and derived flags.
45
+ */
46
+ declare function useApprovalGate(): UseApprovalGateResult;
47
+
48
+ /**
49
+ * @module CssUseWorkflow
50
+ * @package @geenius/ai-workflow-react-css
51
+ * @description React hook for executing workflow definitions with the shared
52
+ * workflow engine in the plain-CSS variant.
53
+ */
54
+
55
+ /**
56
+ * Runtime integrations accepted by the plain-CSS workflow hook.
57
+ *
58
+ * @property callLLM Optional LLM execution callback inherited from `WorkflowEngineOptions`.
59
+ * @property callWebhook Optional webhook execution callback inherited from `WorkflowEngineOptions`.
60
+ * @property onApprovalRequired Optional approval callback inherited from `WorkflowEngineOptions`.
61
+ * @property onStepComplete Optional per-step completion callback inherited from `WorkflowEngineOptions`.
62
+ * @property customHandlers Optional custom step-handler registry inherited from `WorkflowEngineOptions`.
63
+ */
64
+ interface UseWorkflowOptions extends WorkflowEngineOptions {
65
+ }
66
+ interface UseWorkflowResult {
67
+ execute: (definition: WorkflowDefinition, input?: Record<string, unknown>) => Promise<WorkflowRun>;
68
+ cancel: () => void;
69
+ run: WorkflowRun | null;
70
+ isRunning: boolean;
71
+ error: WorkflowError | null;
72
+ stepResults: StepResult[];
73
+ reset: () => void;
74
+ }
75
+ /**
76
+ * Execute shared workflow definitions from the plain-CSS React surface.
77
+ *
78
+ * @param options Runtime integrations and callbacks for the shared engine.
79
+ * @returns Run state, execution methods, and cancellation controls.
80
+ */
81
+ declare function useWorkflow(options: UseWorkflowOptions): UseWorkflowResult;
82
+
83
+ /**
84
+ * @module CssUseWorkflowBuilder
85
+ * @package @geenius/ai-workflow-react-css
86
+ * @description React hook for building workflow definitions in the plain-CSS
87
+ * variant. It tracks selection, dirty state, and undo/redo history.
88
+ */
89
+
90
+ interface UseWorkflowBuilderResult {
91
+ definition: WorkflowDefinition;
92
+ selectedStepId: string | null;
93
+ isDirty: boolean;
94
+ canUndo: boolean;
95
+ canRedo: boolean;
96
+ addStep: (step: WorkflowStepDef) => void;
97
+ removeStep: (stepId: string) => void;
98
+ updateStep: (stepId: string, updates: Partial<WorkflowStepDef>) => void;
99
+ addConnection: (connection: StepConnection) => void;
100
+ removeConnection: (fromStepId: string, toStepId: string) => void;
101
+ selectStep: (stepId: string | null) => void;
102
+ undo: () => void;
103
+ redo: () => void;
104
+ setDefinition: (definition: WorkflowDefinition) => void;
105
+ }
106
+ /**
107
+ * Manage workflow builder state for the plain-CSS React surface.
108
+ *
109
+ * @param initial Optional initial workflow definition overrides.
110
+ * @returns Builder state, history controls, and mutation helpers.
111
+ */
112
+ declare function useWorkflowBuilder(initial?: Partial<WorkflowDefinition>): UseWorkflowBuilderResult;
113
+
114
+ /**
115
+ * @module CssUseWorkflowRun
116
+ * @package @geenius/ai-workflow-react-css
117
+ * @description React hook for tracking workflow execution progress in the
118
+ * plain-CSS workflow variant.
119
+ */
120
+
121
+ /**
122
+ * Options for tracking workflow run progress in React state.
123
+ *
124
+ * @property pollIntervalMs Reserved polling interval for future remote sync.
125
+ * @property onStepComplete Optional callback fired when a step result is tracked.
126
+ * @property onRunComplete Optional callback fired when a run finishes.
127
+ */
128
+ interface UseWorkflowRunOptions {
129
+ pollIntervalMs?: number;
130
+ onStepComplete?: (result: StepResult) => void;
131
+ onRunComplete?: (run: WorkflowRun) => void;
132
+ }
133
+ interface UseWorkflowRunResult {
134
+ run: WorkflowRun | null;
135
+ status: RunStatus;
136
+ currentStepIndex: number;
137
+ completedSteps: StepResult[];
138
+ progress: number;
139
+ error: string | null;
140
+ trackRun: (workflowRun: WorkflowRun) => void;
141
+ updateStep: (result: StepResult) => void;
142
+ reset: () => void;
143
+ isRunning: boolean;
144
+ isComplete: boolean;
145
+ isFailed: boolean;
146
+ }
147
+ /**
148
+ * Track one workflow run and derive progress-oriented state for UI surfaces.
149
+ *
150
+ * @param options Optional lifecycle callbacks for step and run completion.
151
+ * @returns Tracked run state, progress values, and mutation helpers.
152
+ */
153
+ declare function useWorkflowRun(options?: UseWorkflowRunOptions): UseWorkflowRunResult;
154
+
155
+ /**
156
+ * @module CssUseWorkflowStep
157
+ * @package @geenius/ai-workflow-react-css
158
+ * @description React hook for tracking a single workflow step within the
159
+ * plain-CSS workflow surface.
160
+ */
161
+
162
+ interface UseWorkflowStepResult {
163
+ stepDef: WorkflowStepDef;
164
+ status: StepStatus;
165
+ output: unknown;
166
+ error: string | null;
167
+ durationMs: number;
168
+ icon: string;
169
+ statusColor: string;
170
+ updateFromResult: (result: StepResult) => void;
171
+ reset: () => void;
172
+ isComplete: boolean;
173
+ isRunning: boolean;
174
+ isFailed: boolean;
175
+ isWaiting: boolean;
176
+ config: WorkflowStepDef["config"];
177
+ }
178
+ /**
179
+ * Track one workflow step result and derive presentation metadata.
180
+ *
181
+ * @param stepDef Shared workflow step definition to observe.
182
+ * @returns Step status, derived visuals, and mutation helpers.
183
+ */
184
+ declare function useWorkflowStep(stepDef: WorkflowStepDef): UseWorkflowStepResult;
185
+
186
+ /**
187
+ * @module CssUseWorkflowTemplates
188
+ * @package @geenius/ai-workflow-react-css
189
+ * @description React hook for filtering and instantiating shared workflow
190
+ * templates in the plain-CSS workflow surface.
191
+ */
192
+
193
+ interface UseWorkflowTemplatesResult {
194
+ templates: WorkflowTemplate[];
195
+ allTemplates: WorkflowTemplate[];
196
+ selectedTemplate: WorkflowTemplate | null;
197
+ selectedTemplateId: string | null;
198
+ categories: WorkflowTemplate["category"][];
199
+ filterCategory: WorkflowTemplate["category"] | "all";
200
+ searchQuery: string;
201
+ setSelectedTemplateId: (templateId: string | null) => void;
202
+ setFilterCategory: (category: WorkflowTemplate["category"] | "all") => void;
203
+ setSearchQuery: (query: string) => void;
204
+ createFromTemplate: (templateId: string) => WorkflowDefinition | null;
205
+ }
206
+ /**
207
+ * Filter and instantiate workflow templates for the plain-CSS React surface.
208
+ *
209
+ * @param userId Creator identifier injected into new workflow definitions.
210
+ * @returns Filtered templates, selection state, and creation helpers.
211
+ */
212
+ declare function useWorkflowTemplates(userId: string): UseWorkflowTemplatesResult;
213
+
214
+ /**
215
+ * @module CssWorkflowCanvas
216
+ * @package @geenius/ai-workflow-react-css
217
+ * @description Plain-CSS React workflow canvas that renders positioned steps
218
+ * and the connectors between them for the builder surface.
219
+ */
220
+
221
+ /**
222
+ * Props for the workflow canvas component.
223
+ *
224
+ * @property definition Shared workflow definition to render.
225
+ * @property selectedStepId Currently selected step identifier.
226
+ * @property onSelectStep Callback used to change the selected step.
227
+ * @property onMoveStep Reserved callback for future drag interactions.
228
+ */
229
+ interface WorkflowCanvasProps {
230
+ definition: WorkflowDefinition;
231
+ selectedStepId: string | null;
232
+ onSelectStep: (id: string | null) => void;
233
+ onMoveStep?: (stepId: string, pos: {
234
+ x: number;
235
+ y: number;
236
+ }) => void;
237
+ }
238
+ /**
239
+ * Render the builder canvas with positioned steps and connection lines.
240
+ *
241
+ * @param props Workflow definition plus selection state and click handler.
242
+ * @returns The plain-CSS workflow canvas.
243
+ */
244
+ declare function WorkflowCanvas(props: WorkflowCanvasProps): ReactElement;
245
+
246
+ /**
247
+ * @module CssStepNode
248
+ * @package @geenius/ai-workflow-react-css
249
+ * @description Plain-CSS React workflow step node used by the builder canvas.
250
+ * This component mirrors the interactive affordances of the Tailwind variant
251
+ * while keeping styling in the CSS bundle.
252
+ */
253
+
254
+ /**
255
+ * Props for the plain-CSS workflow step node.
256
+ *
257
+ * @property step Shared workflow step definition to render.
258
+ * @property isSelected Whether the node is currently selected.
259
+ * @property status Visual execution status displayed on the node.
260
+ * @property onClick Optional selection callback invoked from mouse or keyboard.
261
+ * @property className Optional class name override for layout composition.
262
+ */
263
+ interface StepNodeProps {
264
+ step: WorkflowStepDef;
265
+ isSelected?: boolean;
266
+ status?: "pending" | "running" | "success" | "error" | "skipped" | "default";
267
+ onClick?: () => void;
268
+ className?: string;
269
+ }
270
+ /**
271
+ * Render one plain-CSS workflow step node.
272
+ *
273
+ * @param props Step node rendering props.
274
+ * @returns A keyboard-accessible workflow step node.
275
+ */
276
+ declare function StepNode(props: StepNodeProps): ReactElement;
277
+
278
+ /**
279
+ * @module CssWorkflowStepConnector
280
+ * @package @geenius/ai-workflow-react-css
281
+ * @description SVG connector primitive for drawing directed edges between
282
+ * positioned workflow steps in the plain-CSS React builder canvas.
283
+ */
284
+
285
+ /**
286
+ * Props for a workflow step connector path.
287
+ *
288
+ * @property from Starting node position for the connector.
289
+ * @property to Ending node position for the connector.
290
+ * @property label Optional inline label rendered above the curve.
291
+ * @property isActive Whether the connector should use the emphasized active style.
292
+ */
293
+ interface StepConnectorProps {
294
+ from: {
295
+ x: number;
296
+ y: number;
297
+ };
298
+ to: {
299
+ x: number;
300
+ y: number;
301
+ };
302
+ label?: string;
303
+ isActive?: boolean;
304
+ }
305
+ /**
306
+ * Render a curved connector between two step positions.
307
+ *
308
+ * @param props Connector endpoints and optional label/state metadata.
309
+ * @returns The SVG group that draws the workflow edge.
310
+ */
311
+ declare function StepConnector(props: StepConnectorProps): ReactElement;
312
+
313
+ /**
314
+ * @module CssStepConfigPanel
315
+ * @package @geenius/ai-workflow-react-css
316
+ * @description Plain-CSS React step configuration panel for builder flows.
317
+ * This component preserves the editable workflow metadata surface without relying
318
+ * on the Tailwind variant.
319
+ */
320
+
321
+ /**
322
+ * Props for the plain-CSS step configuration panel.
323
+ *
324
+ * @property step Shared workflow step being edited.
325
+ * @property onUpdate Callback for partial step updates.
326
+ * @property onDelete Callback that removes the current step.
327
+ * @property onClose Callback that closes the panel.
328
+ */
329
+ interface StepConfigPanelProps {
330
+ step: WorkflowStepDef;
331
+ onUpdate: (id: string, updates: Partial<WorkflowStepDef>) => void;
332
+ onDelete: (id: string) => void;
333
+ onClose: () => void;
334
+ }
335
+ /**
336
+ * Render the plain-CSS step configuration panel.
337
+ *
338
+ * @param props Step editing callbacks and selected step data.
339
+ * @returns A complementary panel for reviewing and editing step metadata.
340
+ */
341
+ declare function StepConfigPanel(props: StepConfigPanelProps): ReactElement;
342
+
343
+ /**
344
+ * @module CssWorkflowRunPanel
345
+ * @package @geenius/ai-workflow-react-css
346
+ * @description Plain-CSS React execution panel for workflow runs. This surface
347
+ * mirrors the progress, error, and cost feedback from the Tailwind variant.
348
+ */
349
+
350
+ /**
351
+ * Props for the plain-CSS workflow run panel.
352
+ *
353
+ * @property run Current workflow run snapshot or `null` when idle.
354
+ * @property isRunning Whether the run is still active.
355
+ * @property onCancel Optional callback that cancels the active run.
356
+ */
357
+ interface WorkflowRunPanelProps {
358
+ run: WorkflowRun | null;
359
+ isRunning: boolean;
360
+ onCancel?: () => void;
361
+ }
362
+ /**
363
+ * Render workflow execution progress in the plain-CSS surface.
364
+ *
365
+ * @param props Run state and optional cancellation callback.
366
+ * @returns A run summary panel or idle placeholder.
367
+ */
368
+ declare function WorkflowRunPanel(props: WorkflowRunPanelProps): ReactElement;
369
+
370
+ /**
371
+ * @module CssApprovalModal
372
+ * @package @geenius/ai-workflow-react-css
373
+ * @description Plain-CSS React approval dialog for human-gated workflow steps.
374
+ * This component preserves the accessible dialog semantics of the headless variant.
375
+ */
376
+
377
+ /**
378
+ * Props for the plain-CSS approval dialog.
379
+ *
380
+ * @property request Pending approval request to render, or `null` when idle.
381
+ * @property onApprove Callback that approves the active request by id.
382
+ * @property onReject Callback that rejects the active request by id.
383
+ * @property onDismiss Optional callback used for Escape-key and dismiss flows.
384
+ */
385
+ interface ApprovalModalProps {
386
+ request: ApprovalRequest | null;
387
+ onApprove: (id: string) => void;
388
+ onReject: (id: string) => void;
389
+ onDismiss?: (id: string) => void;
390
+ }
391
+ /**
392
+ * Render the pending approval request as an accessible plain-CSS dialog.
393
+ *
394
+ * @param props Approval dialog callbacks and the current pending request.
395
+ * @returns The plain-CSS approval dialog, or `null` when no approval is pending.
396
+ */
397
+ declare function ApprovalModal(props: ApprovalModalProps): ReactElement | null;
398
+
399
+ /**
400
+ * @module CssWorkflowToolbar
401
+ * @package @geenius/ai-workflow-react-css
402
+ * @description Plain-CSS React toolbar for workflow builder actions such as
403
+ * save, run, cancel, undo, and redo. This component exposes the same command
404
+ * surface as the Tailwind variant without framework-specific styling.
405
+ */
406
+
407
+ /**
408
+ * Props for the workflow toolbar action surface.
409
+ *
410
+ * @property workflowName Human-readable workflow name shown in the title slot.
411
+ * @property isDirty Whether unsaved edits are currently present.
412
+ * @property isRunning Whether a run is currently active.
413
+ * @property canUndo Whether the undo action should be enabled.
414
+ * @property canRedo Whether the redo action should be enabled.
415
+ * @property onSave Callback that persists the current workflow definition.
416
+ * @property onRun Callback that starts a workflow run.
417
+ * @property onCancel Optional callback that stops an in-flight run.
418
+ * @property onUndo Callback that restores the previous builder snapshot.
419
+ * @property onRedo Callback that reapplies the next builder snapshot.
420
+ * @property onExport Optional callback that exports the workflow definition.
421
+ * @property className Optional class-name override for the toolbar container.
422
+ */
423
+ interface WorkflowToolbarProps {
424
+ workflowName: string;
425
+ isDirty: boolean;
426
+ isRunning: boolean;
427
+ canUndo: boolean;
428
+ canRedo: boolean;
429
+ onSave: () => void;
430
+ onRun: () => void;
431
+ onCancel?: () => void;
432
+ onUndo: () => void;
433
+ onRedo: () => void;
434
+ onExport?: () => void;
435
+ className?: string;
436
+ }
437
+ /**
438
+ * Render the builder command toolbar for the plain-CSS React variant.
439
+ *
440
+ * @param props Action callbacks and builder status flags for the toolbar.
441
+ * @returns The workflow toolbar.
442
+ */
443
+ declare function WorkflowToolbar(props: WorkflowToolbarProps): ReactElement;
444
+
445
+ /**
446
+ * @module CssStepPalette
447
+ * @package @geenius/ai-workflow-react-css
448
+ * @description Plain-CSS React palette of available workflow step types. This
449
+ * component keeps the builder taxonomy scannable without relying on Tailwind styles.
450
+ */
451
+
452
+ /**
453
+ * Props for the plain-CSS step palette.
454
+ *
455
+ * @property onAddStep Callback invoked when a step type is selected.
456
+ */
457
+ interface StepPaletteProps {
458
+ onAddStep: (type: StepType) => void;
459
+ }
460
+ /**
461
+ * Render the plain-CSS workflow step palette.
462
+ *
463
+ * @param props Palette interaction props.
464
+ * @returns A list of available workflow step types.
465
+ */
466
+ declare function StepPalette(props: StepPaletteProps): ReactElement;
467
+
468
+ /**
469
+ * @module CssWorkflowBuilderPage
470
+ * @package @geenius/ai-workflow-react-css
471
+ * @description Plain-CSS React page for composing, editing, and running
472
+ * workflow definitions. This page keeps the builder feature-complete while
473
+ * rendering through the standalone CSS component surface.
474
+ */
475
+
476
+ /**
477
+ * Props for the plain-CSS React workflow builder page.
478
+ *
479
+ * @property engineOptions Shared workflow engine integrations used for execution.
480
+ * @property onSave Optional callback that persists the edited definition.
481
+ * @property className Optional class name override for outer layout composition.
482
+ * @property workflows Optional list of stored workflows shown in the summary strip.
483
+ * @property workflowRuns Optional list of stored workflow runs shown in the summary strip.
484
+ */
485
+ interface WorkflowBuilderPageProps {
486
+ engineOptions: WorkflowEngineOptions;
487
+ onSave?: (definition: WorkflowDefinition) => void;
488
+ className?: string;
489
+ workflows?: Array<{
490
+ _id: string;
491
+ name: string;
492
+ }>;
493
+ workflowRuns?: Array<{
494
+ _id: string;
495
+ workflowId: string;
496
+ }>;
497
+ }
498
+ /**
499
+ * Render the full plain-CSS workflow builder page for React consumers.
500
+ *
501
+ * @param props Builder dependencies, persistence callbacks, and optional summaries.
502
+ * @returns The composed workflow builder page.
503
+ */
504
+ declare function WorkflowBuilderPage(props: WorkflowBuilderPageProps): ReactElement;
505
+
506
+ /**
507
+ * @module CssWorkflowRunsPage
508
+ * @package @geenius/ai-workflow-react-css
509
+ * @description Plain-CSS React page for browsing stored workflow runs. This
510
+ * page keeps the run list keyboard-accessible while mirroring the Tailwind surface.
511
+ */
512
+
513
+ /**
514
+ * Props for the plain-CSS workflow runs page.
515
+ *
516
+ * @property runs Workflow runs to display.
517
+ * @property onSelectRun Optional callback fired when a run card is selected.
518
+ * @property className Optional class name override for outer layout composition.
519
+ */
520
+ interface WorkflowRunsPageProps {
521
+ runs: WorkflowRun[];
522
+ onSelectRun?: (id: string) => void;
523
+ className?: string;
524
+ }
525
+ /**
526
+ * Render a browsable list of stored workflow runs in the plain-CSS surface.
527
+ *
528
+ * @param props Run collection and optional selection callback.
529
+ * @returns The workflow runs page.
530
+ */
531
+ declare function WorkflowRunsPage(props: WorkflowRunsPageProps): ReactElement;
532
+
533
+ export { ApprovalModal, type ApprovalModalProps, type ApprovalRequest, StepConfigPanel, type StepConfigPanelProps, StepConnector, type StepConnectorProps, StepNode, type StepNodeProps, StepPalette, type StepPaletteProps, type UseWorkflowOptions, type UseWorkflowRunOptions, WorkflowBuilderPage, type WorkflowBuilderPageProps, WorkflowCanvas, type WorkflowCanvasProps, WorkflowRunPanel, type WorkflowRunPanelProps, WorkflowRunsPage, type WorkflowRunsPageProps, WorkflowToolbar, type WorkflowToolbarProps, useApprovalGate, useWorkflow, useWorkflowBuilder, useWorkflowRun, useWorkflowStep, useWorkflowTemplates };