@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/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,495 @@
|
|
|
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
|
+
interface UseWorkflowOptions extends WorkflowEngineOptions {
|
|
59
|
+
}
|
|
60
|
+
interface UseWorkflowResult {
|
|
61
|
+
execute: (definition: WorkflowDefinition, input?: Record<string, unknown>) => Promise<WorkflowRun>;
|
|
62
|
+
cancel: () => void;
|
|
63
|
+
run: WorkflowRun | null;
|
|
64
|
+
isRunning: boolean;
|
|
65
|
+
error: WorkflowError | null;
|
|
66
|
+
stepResults: StepResult[];
|
|
67
|
+
reset: () => void;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Execute shared workflow definitions from the plain-CSS React surface.
|
|
71
|
+
*
|
|
72
|
+
* @param options Runtime integrations and callbacks for the shared engine.
|
|
73
|
+
* @returns Run state, execution methods, and cancellation controls.
|
|
74
|
+
*/
|
|
75
|
+
declare function useWorkflow(options: UseWorkflowOptions): UseWorkflowResult;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @module CssUseWorkflowBuilder
|
|
79
|
+
* @package @geenius/ai-workflow-react-css
|
|
80
|
+
* @description React hook for building workflow definitions in the plain-CSS
|
|
81
|
+
* variant. It tracks selection, dirty state, and undo/redo history.
|
|
82
|
+
*/
|
|
83
|
+
|
|
84
|
+
interface UseWorkflowBuilderResult {
|
|
85
|
+
definition: WorkflowDefinition;
|
|
86
|
+
selectedStepId: string | null;
|
|
87
|
+
isDirty: boolean;
|
|
88
|
+
canUndo: boolean;
|
|
89
|
+
canRedo: boolean;
|
|
90
|
+
addStep: (step: WorkflowStepDef) => void;
|
|
91
|
+
removeStep: (stepId: string) => void;
|
|
92
|
+
updateStep: (stepId: string, updates: Partial<WorkflowStepDef>) => void;
|
|
93
|
+
addConnection: (connection: StepConnection) => void;
|
|
94
|
+
removeConnection: (fromStepId: string, toStepId: string) => void;
|
|
95
|
+
selectStep: (stepId: string | null) => void;
|
|
96
|
+
undo: () => void;
|
|
97
|
+
redo: () => void;
|
|
98
|
+
setDefinition: (definition: WorkflowDefinition) => void;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Manage workflow builder state for the plain-CSS React surface.
|
|
102
|
+
*
|
|
103
|
+
* @param initial Optional initial workflow definition overrides.
|
|
104
|
+
* @returns Builder state, history controls, and mutation helpers.
|
|
105
|
+
*/
|
|
106
|
+
declare function useWorkflowBuilder(initial?: Partial<WorkflowDefinition>): UseWorkflowBuilderResult;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* @module CssUseWorkflowRun
|
|
110
|
+
* @package @geenius/ai-workflow-react-css
|
|
111
|
+
* @description React hook for tracking workflow execution progress in the
|
|
112
|
+
* plain-CSS workflow variant.
|
|
113
|
+
*/
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Options for tracking workflow run progress in React state.
|
|
117
|
+
*
|
|
118
|
+
* @property pollIntervalMs Reserved polling interval for future remote sync.
|
|
119
|
+
* @property onStepComplete Optional callback fired when a step result is tracked.
|
|
120
|
+
* @property onRunComplete Optional callback fired when a run finishes.
|
|
121
|
+
*/
|
|
122
|
+
interface UseWorkflowRunOptions {
|
|
123
|
+
pollIntervalMs?: number;
|
|
124
|
+
onStepComplete?: (result: StepResult) => void;
|
|
125
|
+
onRunComplete?: (run: WorkflowRun) => void;
|
|
126
|
+
}
|
|
127
|
+
interface UseWorkflowRunResult {
|
|
128
|
+
run: WorkflowRun | null;
|
|
129
|
+
status: RunStatus;
|
|
130
|
+
currentStepIndex: number;
|
|
131
|
+
completedSteps: StepResult[];
|
|
132
|
+
progress: number;
|
|
133
|
+
error: string | null;
|
|
134
|
+
trackRun: (workflowRun: WorkflowRun) => void;
|
|
135
|
+
updateStep: (result: StepResult) => void;
|
|
136
|
+
reset: () => void;
|
|
137
|
+
isRunning: boolean;
|
|
138
|
+
isComplete: boolean;
|
|
139
|
+
isFailed: boolean;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Track one workflow run and derive progress-oriented state for UI surfaces.
|
|
143
|
+
*
|
|
144
|
+
* @param options Optional lifecycle callbacks for step and run completion.
|
|
145
|
+
* @returns Tracked run state, progress values, and mutation helpers.
|
|
146
|
+
*/
|
|
147
|
+
declare function useWorkflowRun(options?: UseWorkflowRunOptions): UseWorkflowRunResult;
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* @module CssUseWorkflowStep
|
|
151
|
+
* @package @geenius/ai-workflow-react-css
|
|
152
|
+
* @description React hook for tracking a single workflow step within the
|
|
153
|
+
* plain-CSS workflow surface.
|
|
154
|
+
*/
|
|
155
|
+
|
|
156
|
+
interface UseWorkflowStepResult {
|
|
157
|
+
stepDef: WorkflowStepDef;
|
|
158
|
+
status: StepStatus;
|
|
159
|
+
output: unknown;
|
|
160
|
+
error: string | null;
|
|
161
|
+
durationMs: number;
|
|
162
|
+
icon: string;
|
|
163
|
+
statusColor: string;
|
|
164
|
+
updateFromResult: (result: StepResult) => void;
|
|
165
|
+
reset: () => void;
|
|
166
|
+
isComplete: boolean;
|
|
167
|
+
isRunning: boolean;
|
|
168
|
+
isFailed: boolean;
|
|
169
|
+
isWaiting: boolean;
|
|
170
|
+
config: WorkflowStepDef["config"];
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Track one workflow step result and derive presentation metadata.
|
|
174
|
+
*
|
|
175
|
+
* @param stepDef Shared workflow step definition to observe.
|
|
176
|
+
* @returns Step status, derived visuals, and mutation helpers.
|
|
177
|
+
*/
|
|
178
|
+
declare function useWorkflowStep(stepDef: WorkflowStepDef): UseWorkflowStepResult;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* @module CssUseWorkflowTemplates
|
|
182
|
+
* @package @geenius/ai-workflow-react-css
|
|
183
|
+
* @description React hook for filtering and instantiating shared workflow
|
|
184
|
+
* templates in the plain-CSS workflow surface.
|
|
185
|
+
*/
|
|
186
|
+
|
|
187
|
+
interface UseWorkflowTemplatesResult {
|
|
188
|
+
templates: WorkflowTemplate[];
|
|
189
|
+
allTemplates: WorkflowTemplate[];
|
|
190
|
+
selectedTemplate: WorkflowTemplate | null;
|
|
191
|
+
selectedTemplateId: string | null;
|
|
192
|
+
categories: WorkflowTemplate["category"][];
|
|
193
|
+
filterCategory: WorkflowTemplate["category"] | "all";
|
|
194
|
+
searchQuery: string;
|
|
195
|
+
setSelectedTemplateId: (templateId: string | null) => void;
|
|
196
|
+
setFilterCategory: (category: WorkflowTemplate["category"] | "all") => void;
|
|
197
|
+
setSearchQuery: (query: string) => void;
|
|
198
|
+
createFromTemplate: (templateId: string) => WorkflowDefinition | null;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Filter and instantiate workflow templates for the plain-CSS React surface.
|
|
202
|
+
*
|
|
203
|
+
* @param userId Creator identifier injected into new workflow definitions.
|
|
204
|
+
* @returns Filtered templates, selection state, and creation helpers.
|
|
205
|
+
*/
|
|
206
|
+
declare function useWorkflowTemplates(userId: string): UseWorkflowTemplatesResult;
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* @module CssWorkflowCanvas
|
|
210
|
+
* @package @geenius/ai-workflow-react-css
|
|
211
|
+
* @description Plain-CSS React workflow canvas that renders positioned steps
|
|
212
|
+
* and the connectors between them for the builder surface.
|
|
213
|
+
*/
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Props for the workflow canvas component.
|
|
217
|
+
*/
|
|
218
|
+
interface WorkflowCanvasProps {
|
|
219
|
+
definition: WorkflowDefinition;
|
|
220
|
+
selectedStepId: string | null;
|
|
221
|
+
onSelectStep: (id: string | null) => void;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Render the builder canvas with positioned steps and connection lines.
|
|
225
|
+
*
|
|
226
|
+
* @param props Workflow definition plus selection state and click handler.
|
|
227
|
+
* @returns The plain-CSS workflow canvas.
|
|
228
|
+
*/
|
|
229
|
+
declare function WorkflowCanvas(props: WorkflowCanvasProps): ReactElement;
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* @module CssStepNode
|
|
233
|
+
* @package @geenius/ai-workflow-react-css
|
|
234
|
+
* @description Plain-CSS React workflow step node used by the builder canvas.
|
|
235
|
+
* This component mirrors the interactive affordances of the Tailwind variant
|
|
236
|
+
* while keeping styling in the CSS bundle.
|
|
237
|
+
*/
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Props for the plain-CSS workflow step node.
|
|
241
|
+
*
|
|
242
|
+
* @property step Shared workflow step definition to render.
|
|
243
|
+
* @property isSelected Whether the node is currently selected.
|
|
244
|
+
* @property status Visual execution status displayed on the node.
|
|
245
|
+
* @property onClick Optional selection callback invoked from mouse or keyboard.
|
|
246
|
+
* @property className Optional class name override for layout composition.
|
|
247
|
+
*/
|
|
248
|
+
interface StepNodeProps {
|
|
249
|
+
step: WorkflowStepDef;
|
|
250
|
+
isSelected?: boolean;
|
|
251
|
+
status?: "pending" | "running" | "success" | "error" | "skipped" | "default";
|
|
252
|
+
onClick?: () => void;
|
|
253
|
+
className?: string;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Render one plain-CSS workflow step node.
|
|
257
|
+
*
|
|
258
|
+
* @param props Step node rendering props.
|
|
259
|
+
* @returns A keyboard-accessible workflow step node.
|
|
260
|
+
*/
|
|
261
|
+
declare function StepNode(props: StepNodeProps): ReactElement;
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* @module CssWorkflowStepConnector
|
|
265
|
+
* @package @geenius/ai-workflow-react-css
|
|
266
|
+
* @description SVG connector primitive for drawing directed edges between
|
|
267
|
+
* positioned workflow steps in the plain-CSS React builder canvas.
|
|
268
|
+
*/
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Props for a workflow step connector path.
|
|
272
|
+
*/
|
|
273
|
+
interface StepConnectorProps {
|
|
274
|
+
from: {
|
|
275
|
+
x: number;
|
|
276
|
+
y: number;
|
|
277
|
+
};
|
|
278
|
+
to: {
|
|
279
|
+
x: number;
|
|
280
|
+
y: number;
|
|
281
|
+
};
|
|
282
|
+
label?: string;
|
|
283
|
+
isActive?: boolean;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Render a curved connector between two step positions.
|
|
287
|
+
*
|
|
288
|
+
* @param props Connector endpoints and optional label/state metadata.
|
|
289
|
+
* @returns The SVG group that draws the workflow edge.
|
|
290
|
+
*/
|
|
291
|
+
declare function StepConnector(props: StepConnectorProps): ReactElement;
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* @module CssStepConfigPanel
|
|
295
|
+
* @package @geenius/ai-workflow-react-css
|
|
296
|
+
* @description Plain-CSS React step configuration panel for builder flows.
|
|
297
|
+
* This component preserves the editable workflow metadata surface without relying
|
|
298
|
+
* on the Tailwind variant.
|
|
299
|
+
*/
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Props for the plain-CSS step configuration panel.
|
|
303
|
+
*
|
|
304
|
+
* @property step Shared workflow step being edited.
|
|
305
|
+
* @property onUpdate Callback for partial step updates.
|
|
306
|
+
* @property onDelete Callback that removes the current step.
|
|
307
|
+
* @property onClose Callback that closes the panel.
|
|
308
|
+
*/
|
|
309
|
+
interface StepConfigPanelProps {
|
|
310
|
+
step: WorkflowStepDef;
|
|
311
|
+
onUpdate: (id: string, updates: Partial<WorkflowStepDef>) => void;
|
|
312
|
+
onDelete: (id: string) => void;
|
|
313
|
+
onClose: () => void;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Render the plain-CSS step configuration panel.
|
|
317
|
+
*
|
|
318
|
+
* @param props Step editing callbacks and selected step data.
|
|
319
|
+
* @returns A complementary panel for reviewing and editing step metadata.
|
|
320
|
+
*/
|
|
321
|
+
declare function StepConfigPanel(props: StepConfigPanelProps): ReactElement;
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* @module CssWorkflowRunPanel
|
|
325
|
+
* @package @geenius/ai-workflow-react-css
|
|
326
|
+
* @description Plain-CSS React execution panel for workflow runs. This surface
|
|
327
|
+
* mirrors the progress, error, and cost feedback from the Tailwind variant.
|
|
328
|
+
*/
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Props for the plain-CSS workflow run panel.
|
|
332
|
+
*
|
|
333
|
+
* @property run Current workflow run snapshot or `null` when idle.
|
|
334
|
+
* @property isRunning Whether the run is still active.
|
|
335
|
+
* @property onCancel Optional callback that cancels the active run.
|
|
336
|
+
*/
|
|
337
|
+
interface WorkflowRunPanelProps {
|
|
338
|
+
run: WorkflowRun | null;
|
|
339
|
+
isRunning: boolean;
|
|
340
|
+
onCancel?: () => void;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Render workflow execution progress in the plain-CSS surface.
|
|
344
|
+
*
|
|
345
|
+
* @param props Run state and optional cancellation callback.
|
|
346
|
+
* @returns A run summary panel or idle placeholder.
|
|
347
|
+
*/
|
|
348
|
+
declare function WorkflowRunPanel(props: WorkflowRunPanelProps): ReactElement;
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* @module CssApprovalModal
|
|
352
|
+
* @package @geenius/ai-workflow-react-css
|
|
353
|
+
* @description Plain-CSS React approval dialog for human-gated workflow steps.
|
|
354
|
+
* This component preserves the accessible dialog semantics of the headless variant.
|
|
355
|
+
*/
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Props for the plain-CSS approval dialog.
|
|
359
|
+
*/
|
|
360
|
+
interface ApprovalModalProps {
|
|
361
|
+
request: ApprovalRequest | null;
|
|
362
|
+
onApprove: (id: string) => void;
|
|
363
|
+
onReject: (id: string) => void;
|
|
364
|
+
onDismiss?: (id: string) => void;
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Render the pending approval request as an accessible plain-CSS dialog.
|
|
368
|
+
*
|
|
369
|
+
* @param props Approval dialog callbacks and the current pending request.
|
|
370
|
+
* @returns The plain-CSS approval dialog, or `null` when no approval is pending.
|
|
371
|
+
*/
|
|
372
|
+
declare function ApprovalModal(props: ApprovalModalProps): ReactElement | null;
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* @module CssWorkflowToolbar
|
|
376
|
+
* @package @geenius/ai-workflow-react-css
|
|
377
|
+
* @description Plain-CSS React toolbar for workflow builder actions such as
|
|
378
|
+
* save, run, cancel, undo, and redo. This component exposes the same command
|
|
379
|
+
* surface as the Tailwind variant without framework-specific styling.
|
|
380
|
+
*/
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* Props for the workflow toolbar action surface.
|
|
384
|
+
*/
|
|
385
|
+
interface WorkflowToolbarProps {
|
|
386
|
+
workflowName: string;
|
|
387
|
+
isDirty: boolean;
|
|
388
|
+
isRunning: boolean;
|
|
389
|
+
canUndo: boolean;
|
|
390
|
+
canRedo: boolean;
|
|
391
|
+
onSave: () => void;
|
|
392
|
+
onRun: () => void;
|
|
393
|
+
onCancel?: () => void;
|
|
394
|
+
onUndo: () => void;
|
|
395
|
+
onRedo: () => void;
|
|
396
|
+
onExport?: () => void;
|
|
397
|
+
className?: string;
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Render the builder command toolbar for the plain-CSS React variant.
|
|
401
|
+
*
|
|
402
|
+
* @param props Action callbacks and builder status flags for the toolbar.
|
|
403
|
+
* @returns The workflow toolbar.
|
|
404
|
+
*/
|
|
405
|
+
declare function WorkflowToolbar(props: WorkflowToolbarProps): ReactElement;
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* @module CssStepPalette
|
|
409
|
+
* @package @geenius/ai-workflow-react-css
|
|
410
|
+
* @description Plain-CSS React palette of available workflow step types. This
|
|
411
|
+
* component keeps the builder taxonomy scannable without relying on Tailwind styles.
|
|
412
|
+
*/
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* Props for the plain-CSS step palette.
|
|
416
|
+
*
|
|
417
|
+
* @property onAddStep Callback invoked when a step type is selected.
|
|
418
|
+
*/
|
|
419
|
+
interface StepPaletteProps {
|
|
420
|
+
onAddStep: (type: StepType) => void;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Render the plain-CSS workflow step palette.
|
|
424
|
+
*
|
|
425
|
+
* @param props Palette interaction props.
|
|
426
|
+
* @returns A list of available workflow step types.
|
|
427
|
+
*/
|
|
428
|
+
declare function StepPalette(props: StepPaletteProps): ReactElement;
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* @module CssWorkflowBuilderPage
|
|
432
|
+
* @package @geenius/ai-workflow-react-css
|
|
433
|
+
* @description Plain-CSS React page for composing, editing, and running
|
|
434
|
+
* workflow definitions. This page keeps the builder feature-complete while
|
|
435
|
+
* rendering through the standalone CSS component surface.
|
|
436
|
+
*/
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Props for the plain-CSS React workflow builder page.
|
|
440
|
+
*
|
|
441
|
+
* @property engineOptions Shared workflow engine integrations used for execution.
|
|
442
|
+
* @property onSave Optional callback that persists the edited definition.
|
|
443
|
+
* @property className Optional class name override for outer layout composition.
|
|
444
|
+
* @property workflows Optional list of stored workflows shown in the summary strip.
|
|
445
|
+
* @property workflowRuns Optional list of stored workflow runs shown in the summary strip.
|
|
446
|
+
*/
|
|
447
|
+
interface WorkflowBuilderPageProps {
|
|
448
|
+
engineOptions: WorkflowEngineOptions;
|
|
449
|
+
onSave?: (definition: WorkflowDefinition) => void;
|
|
450
|
+
className?: string;
|
|
451
|
+
workflows?: Array<{
|
|
452
|
+
_id: string;
|
|
453
|
+
name: string;
|
|
454
|
+
}>;
|
|
455
|
+
workflowRuns?: Array<{
|
|
456
|
+
_id: string;
|
|
457
|
+
workflowId: string;
|
|
458
|
+
}>;
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Render the full plain-CSS workflow builder page for React consumers.
|
|
462
|
+
*
|
|
463
|
+
* @param props Builder dependencies, persistence callbacks, and optional summaries.
|
|
464
|
+
* @returns The composed workflow builder page.
|
|
465
|
+
*/
|
|
466
|
+
declare function WorkflowBuilderPage(props: WorkflowBuilderPageProps): ReactElement;
|
|
467
|
+
|
|
468
|
+
/**
|
|
469
|
+
* @module CssWorkflowRunsPage
|
|
470
|
+
* @package @geenius/ai-workflow-react-css
|
|
471
|
+
* @description Plain-CSS React page for browsing stored workflow runs. This
|
|
472
|
+
* page keeps the run list keyboard-accessible while mirroring the Tailwind surface.
|
|
473
|
+
*/
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* Props for the plain-CSS workflow runs page.
|
|
477
|
+
*
|
|
478
|
+
* @property runs Workflow runs to display.
|
|
479
|
+
* @property onSelectRun Optional callback fired when a run card is selected.
|
|
480
|
+
* @property className Optional class name override for outer layout composition.
|
|
481
|
+
*/
|
|
482
|
+
interface WorkflowRunsPageProps {
|
|
483
|
+
runs: WorkflowRun[];
|
|
484
|
+
onSelectRun?: (id: string) => void;
|
|
485
|
+
className?: string;
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Render a browsable list of stored workflow runs in the plain-CSS surface.
|
|
489
|
+
*
|
|
490
|
+
* @param props Run collection and optional selection callback.
|
|
491
|
+
* @returns The workflow runs page.
|
|
492
|
+
*/
|
|
493
|
+
declare function WorkflowRunsPage(props: WorkflowRunsPageProps): ReactElement;
|
|
494
|
+
|
|
495
|
+
export { ApprovalModal, type ApprovalModalProps, type ApprovalRequest, StepConfigPanel, type StepConfigPanelProps, StepConnector, StepNode, type StepNodeProps, StepPalette, type StepPaletteProps, type UseWorkflowOptions, type UseWorkflowRunOptions, WorkflowBuilderPage, type WorkflowBuilderPageProps, WorkflowCanvas, WorkflowRunPanel, type WorkflowRunPanelProps, WorkflowRunsPage, type WorkflowRunsPageProps, WorkflowToolbar, useApprovalGate, useWorkflow, useWorkflowBuilder, useWorkflowRun, useWorkflowStep, useWorkflowTemplates };
|