@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.
Files changed (159) hide show
  1. package/CHANGELOG.md +7 -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 +466 -0
  8. package/packages/react/dist/index.js +13914 -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 +495 -0
  13. package/packages/react-css/dist/index.js +13901 -0
  14. package/packages/react-css/dist/index.js.map +1 -0
  15. package/packages/shared/dist/index.d.ts +1368 -0
  16. package/packages/shared/dist/index.js +1681 -0
  17. package/packages/shared/dist/index.js.map +1 -0
  18. package/packages/solidjs/dist/index.d.ts +452 -0
  19. package/packages/solidjs/dist/index.js +13830 -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 +471 -0
  24. package/packages/solidjs-css/dist/index.js +13774 -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
@@ -1,39 +1,83 @@
1
- /* @geenius-ai-workflow — styles.css
2
- * Unified BEM stylesheet for all CSS variant packages.
3
- * Uses OKLCH color tokens consistent with the Geenius design system.
4
- */
5
-
6
- /* ========================================
7
- Color Tokens (OKLCH)
8
- ======================================== */
1
+ /* src/styles.css */
9
2
  :root {
10
- --ai-workflow-bg: oklch(0.10 0.01 250);
11
- --ai-workflow-surface: oklch(0.13 0.01 250);
12
- --ai-workflow-surface-2: oklch(0.16 0.01 250);
13
- --ai-workflow-border: oklch(0.22 0.01 250);
14
- --ai-workflow-text: oklch(0.95 0.01 250);
15
- --ai-workflow-text-muted: oklch(0.65 0.01 250);
16
- --ai-workflow-accent: oklch(0.65 0.22 265);
17
- --ai-workflow-running: oklch(0.65 0.20 265);
18
- --ai-workflow-success: oklch(0.72 0.20 145);
19
- --ai-workflow-error: oklch(0.60 0.25 25);
20
- --ai-workflow-pending: oklch(0.65 0.15 200);
21
- --ai-workflow-skipped: oklch(0.45 0.01 250);
22
- --ai-workflow-connector: oklch(0.35 0.02 250);
23
- --ai-workflow-radius: 0.75rem;
24
- --ai-workflow-radius-sm: 0.5rem;
25
- --ai-workflow-radius-lg: 1rem;
26
- --ai-workflow-shadow: 0 4px 24px oklch(0 0 0 / 0.4);
27
- --ai-workflow-shadow-sm: 0 2px 8px oklch(0 0 0 / 0.2);
28
- --ai-workflow-shadow-lg: 0 16px 48px oklch(0 0 0 / 0.5);
29
- --ai-workflow-transition: 200ms ease;
3
+ --gui-bg: oklch(0.985 0.003 255);
4
+ --gui-foreground: oklch(0.278 0.03 257);
5
+ --gui-primary: oklch(0.63 0.2 262);
6
+ --gui-primary-fg: oklch(0.985 0.002 255);
7
+ --gui-primary-subtle: color-mix(in oklab, var(--gui-primary) 12%, white);
8
+ --gui-success: oklch(0.72 0.17 152);
9
+ --gui-warning: oklch(0.82 0.16 84);
10
+ --gui-danger: oklch(0.63 0.24 28);
11
+ --gui-border: oklch(0.9 0.008 255);
12
+ --gui-card: oklch(0.998 0.001 255);
13
+ --gui-card-fg: var(--gui-foreground);
14
+ --gui-muted-fg: oklch(0.56 0.018 255);
15
+ --gui-surface: oklch(0.968 0.004 255);
16
+ --gui-ring: color-mix(in oklab, var(--gui-primary) 35%, transparent);
17
+ --background: var(--gui-bg);
18
+ --foreground: var(--gui-foreground);
19
+ --primary: var(--gui-primary);
20
+ --primary-foreground: var(--gui-primary-fg);
21
+ --primary-soft: var(--gui-primary-subtle);
22
+ --success: var(--gui-success);
23
+ --warning: var(--gui-warning);
24
+ --danger: var(--gui-danger);
25
+ --border: var(--gui-border);
26
+ --card: var(--gui-card);
27
+ --card-foreground: var(--gui-card-fg);
28
+ --muted-foreground: var(--gui-muted-fg);
29
+ --secondary: var(--gui-surface);
30
+ --ring: var(--gui-ring);
31
+ --shadow-color: color-mix(in oklab, var(--foreground) 20%, transparent);
32
+ --shadow-color-sm: color-mix(in oklab, var(--foreground) 10%, transparent);
33
+ --shadow-color-lg: color-mix(in oklab, var(--foreground) 40%, transparent);
34
+ --primary-ring: color-mix(in oklab, var(--primary) 20%, transparent);
35
+ --primary-ring-strong: color-mix(in oklab, var(--primary) 55%, transparent);
36
+ --primary-glow: color-mix(in oklab, var(--primary) 40%, transparent);
37
+ --warning-soft: color-mix(in oklab, var(--warning) 10%, transparent);
38
+ --danger-soft: color-mix(in oklab, var(--danger) 10%, transparent);
39
+ --success-soft: color-mix(in oklab, var(--success) 10%, transparent);
40
+ --ai-workflow-bg: var(--background);
41
+ --ai-workflow-surface: var(--card);
42
+ --ai-workflow-surface-2: var(--secondary);
43
+ --ai-workflow-border: var(--border);
44
+ --ai-workflow-text: var(--foreground);
45
+ --ai-workflow-text-muted: var(--muted-foreground);
46
+ --ai-workflow-accent: var(--primary);
47
+ --ai-workflow-running: var(--primary);
48
+ --ai-workflow-success: var(--success);
49
+ --ai-workflow-error: var(--danger);
50
+ --ai-workflow-pending: var(--warning);
51
+ --ai-workflow-skipped: var(--muted-foreground);
52
+ --ai-workflow-connector: var(--border);
53
+ --ai-workflow-radius: 1.5rem;
54
+ --ai-workflow-radius-sm: 0.75rem;
55
+ --ai-workflow-radius-lg: 2rem;
56
+ --ai-workflow-shadow: 0 8px 32px var(--shadow-color);
57
+ --ai-workflow-shadow-sm: 0 4px 16px var(--shadow-color-sm);
58
+ --ai-workflow-shadow-lg: 0 16px 48px var(--shadow-color-lg);
59
+ --ai-workflow-glow: 0 0 24px var(--primary-glow);
60
+ --ai-workflow-transition: 200ms cubic-bezier(0.4, 0, 0.2, 1);
30
61
  --ai-workflow-transition-fast: 100ms ease;
31
- --ai-workflow-transition-slow: 300ms ease;
62
+ --ai-workflow-transition-slow: 300ms cubic-bezier(0.4, 0, 0.2, 1);
63
+ }
64
+ [data-theme=dark],
65
+ .dark {
66
+ --gui-bg: oklch(0.19 0.01 255);
67
+ --gui-foreground: oklch(0.94 0.01 255);
68
+ --gui-primary: oklch(0.71 0.18 262);
69
+ --gui-primary-fg: oklch(0.22 0.02 255);
70
+ --gui-primary-subtle: color-mix(in oklab, var(--gui-primary) 16%, black);
71
+ --gui-success: oklch(0.78 0.16 152);
72
+ --gui-warning: oklch(0.86 0.15 84);
73
+ --gui-danger: oklch(0.71 0.2 28);
74
+ --gui-border: oklch(0.34 0.015 255);
75
+ --gui-card: oklch(0.23 0.01 255);
76
+ --gui-card-fg: var(--gui-foreground);
77
+ --gui-muted-fg: oklch(0.72 0.014 255);
78
+ --gui-surface: oklch(0.27 0.01 255);
79
+ --gui-ring: color-mix(in oklab, var(--gui-primary) 45%, transparent);
32
80
  }
33
-
34
- /* ========================================
35
- BLOCK: ai-workflow__canvas
36
- ======================================== */
37
81
  .ai-workflow__canvas {
38
82
  position: relative;
39
83
  min-height: 500px;
@@ -42,8 +86,9 @@
42
86
  overflow: hidden;
43
87
  border: 1px solid var(--ai-workflow-border);
44
88
  box-shadow: var(--ai-workflow-shadow-sm);
89
+ backdrop-filter: blur(24px);
90
+ -webkit-backdrop-filter: blur(24px);
45
91
  }
46
-
47
92
  .ai-workflow__canvas--empty {
48
93
  display: flex;
49
94
  flex-direction: column;
@@ -52,26 +97,23 @@
52
97
  height: 100%;
53
98
  color: var(--ai-workflow-text-muted);
54
99
  }
55
-
56
100
  .ai-workflow__canvas-bg {
57
101
  position: absolute;
58
102
  inset: 0;
59
103
  background-image:
60
104
  linear-gradient(var(--ai-workflow-border) 1px, transparent 1px),
61
- linear-gradient(90deg, var(--ai-workflow-border) 1px, transparent 1px);
105
+ linear-gradient(
106
+ 90deg,
107
+ var(--ai-workflow-border) 1px,
108
+ transparent 1px);
62
109
  background-size: 20px 20px;
63
110
  pointer-events: none;
64
111
  }
65
-
66
112
  .ai-workflow__canvas-grid {
67
113
  position: relative;
68
114
  z-index: 1;
69
115
  height: 100%;
70
116
  }
71
-
72
- /* ========================================
73
- BLOCK: ai-workflow__step-node
74
- ======================================== */
75
117
  .ai-workflow__step-node {
76
118
  position: relative;
77
119
  background: var(--ai-workflow-surface-2);
@@ -83,62 +125,51 @@
83
125
  transition: all var(--ai-workflow-transition);
84
126
  box-shadow: var(--ai-workflow-shadow-sm);
85
127
  }
86
-
87
128
  .ai-workflow__step-node:hover {
88
129
  border-color: var(--ai-workflow-accent);
89
130
  background: var(--ai-workflow-surface-2);
90
131
  }
91
-
92
132
  .ai-workflow__step-node--selected {
93
133
  border-color: var(--ai-workflow-accent);
94
- background: oklch(0.65 0.22 265 / 0.1);
95
- box-shadow: 0 0 0 3px oklch(0.65 0.22 265 / 0.2), var(--ai-workflow-glow);
134
+ background: var(--primary-soft);
135
+ box-shadow: 0 0 0 3px var(--primary-ring), var(--ai-workflow-glow);
96
136
  }
97
-
98
137
  .ai-workflow__step-node--pending {
99
138
  border-color: var(--ai-workflow-pending);
100
139
  }
101
-
102
140
  .ai-workflow__step-node--running {
103
141
  border-color: var(--ai-workflow-running);
104
142
  animation: ai-workflow-pulse-running 1.5s ease-in-out infinite;
105
143
  }
106
-
107
144
  .ai-workflow__step-node--success {
108
145
  border-color: var(--ai-workflow-success);
109
146
  }
110
-
111
147
  .ai-workflow__step-node--error {
112
148
  border-color: var(--ai-workflow-error);
113
- background: oklch(0.25 0.05 25 / 0.1);
149
+ background: var(--danger-soft);
114
150
  }
115
-
116
151
  .ai-workflow__step-node--skipped {
117
152
  border-color: var(--ai-workflow-skipped);
118
153
  opacity: 0.7;
119
154
  }
120
-
121
155
  @keyframes ai-workflow-pulse-running {
122
156
  0%, 100% {
123
- box-shadow: 0 0 0 0 oklch(0.65 0.20 265 / 0.5), var(--ai-workflow-shadow-sm);
157
+ box-shadow: 0 0 0 0 var(--primary-ring-strong), var(--ai-workflow-shadow-sm);
124
158
  }
125
159
  50% {
126
- box-shadow: 0 0 0 8px oklch(0.65 0.20 265 / 0), var(--ai-workflow-shadow-sm);
160
+ box-shadow: 0 0 0 8px transparent, var(--ai-workflow-shadow-sm);
127
161
  }
128
162
  }
129
-
130
163
  .ai-workflow__step-header {
131
164
  display: flex;
132
165
  align-items: center;
133
166
  gap: 0.5rem;
134
167
  margin-bottom: 0.5rem;
135
168
  }
136
-
137
169
  .ai-workflow__step-icon {
138
170
  font-size: 1.25rem;
139
171
  flex-shrink: 0;
140
172
  }
141
-
142
173
  .ai-workflow__step-name {
143
174
  font-weight: 600;
144
175
  color: var(--ai-workflow-text);
@@ -147,7 +178,6 @@
147
178
  text-overflow: ellipsis;
148
179
  white-space: nowrap;
149
180
  }
150
-
151
181
  .ai-workflow__step-type-badge {
152
182
  font-size: 0.7rem;
153
183
  color: var(--ai-workflow-text-muted);
@@ -157,7 +187,6 @@
157
187
  padding: 0.2rem 0.4rem;
158
188
  border-radius: 2px;
159
189
  }
160
-
161
190
  .ai-workflow__step-optional-badge,
162
191
  .ai-workflow__step-retry-badge {
163
192
  display: inline-block;
@@ -168,7 +197,6 @@
168
197
  color: var(--ai-workflow-text-muted);
169
198
  font-weight: 500;
170
199
  }
171
-
172
200
  .ai-workflow__step-status {
173
201
  display: flex;
174
202
  align-items: center;
@@ -178,33 +206,24 @@
178
206
  border-radius: 50%;
179
207
  font-size: 0.8rem;
180
208
  }
181
-
182
209
  .ai-workflow__step-status--pending {
183
210
  background: var(--ai-workflow-pending);
184
211
  }
185
-
186
212
  .ai-workflow__step-status--running {
187
213
  background: var(--ai-workflow-running);
188
214
  animation: ai-workflow-spin 1s linear infinite;
189
215
  }
190
-
191
216
  .ai-workflow__step-status--success {
192
217
  background: var(--ai-workflow-success);
193
218
  }
194
-
195
219
  .ai-workflow__step-status--error {
196
220
  background: var(--ai-workflow-error);
197
221
  }
198
-
199
222
  @keyframes ai-workflow-spin {
200
223
  to {
201
224
  transform: rotate(360deg);
202
225
  }
203
226
  }
204
-
205
- /* ========================================
206
- BLOCK: ai-workflow__connector
207
- ======================================== */
208
227
  .ai-workflow__connector {
209
228
  position: absolute;
210
229
  pointer-events: none;
@@ -212,20 +231,16 @@
212
231
  stroke-width: 2px;
213
232
  fill: none;
214
233
  }
215
-
216
234
  .ai-workflow__connector--running {
217
235
  stroke: var(--ai-workflow-running);
218
236
  animation: ai-workflow-flow 2s ease-in-out infinite;
219
237
  }
220
-
221
238
  .ai-workflow__connector--error {
222
239
  stroke: var(--ai-workflow-error);
223
240
  }
224
-
225
241
  .ai-workflow__connector--success {
226
242
  stroke: var(--ai-workflow-success);
227
243
  }
228
-
229
244
  @keyframes ai-workflow-flow {
230
245
  0%, 100% {
231
246
  opacity: 0.5;
@@ -234,10 +249,6 @@
234
249
  opacity: 1;
235
250
  }
236
251
  }
237
-
238
- /* ========================================
239
- BLOCK: ai-workflow__step-detail-panel
240
- ======================================== */
241
252
  .ai-workflow__step-detail-panel {
242
253
  background: var(--ai-workflow-surface-2);
243
254
  border-left: 1px solid var(--ai-workflow-border);
@@ -249,7 +260,6 @@
249
260
  flex-direction: column;
250
261
  gap: 1.5rem;
251
262
  }
252
-
253
263
  .ai-workflow__detail-header {
254
264
  display: flex;
255
265
  justify-content: space-between;
@@ -258,14 +268,12 @@
258
268
  border-bottom: 1px solid var(--ai-workflow-border);
259
269
  padding-bottom: 1rem;
260
270
  }
261
-
262
271
  .ai-workflow__detail-title {
263
272
  font-size: 1.1rem;
264
273
  font-weight: 700;
265
274
  color: var(--ai-workflow-text);
266
275
  margin: 0;
267
276
  }
268
-
269
277
  .ai-workflow__detail-close {
270
278
  background: transparent;
271
279
  border: none;
@@ -275,17 +283,14 @@
275
283
  padding: 0;
276
284
  transition: color var(--ai-workflow-transition);
277
285
  }
278
-
279
286
  .ai-workflow__detail-close:hover {
280
287
  color: var(--ai-workflow-text);
281
288
  }
282
-
283
289
  .ai-workflow__detail-section {
284
290
  display: flex;
285
291
  flex-direction: column;
286
292
  gap: 0.75rem;
287
293
  }
288
-
289
294
  .ai-workflow__detail-label {
290
295
  font-size: 0.8rem;
291
296
  font-weight: 600;
@@ -293,38 +298,30 @@
293
298
  letter-spacing: 0.05em;
294
299
  color: var(--ai-workflow-text-muted);
295
300
  }
296
-
297
301
  .ai-workflow__detail-value {
298
302
  font-size: 0.9rem;
299
303
  color: var(--ai-workflow-text);
300
304
  word-break: break-word;
301
305
  }
302
-
303
306
  .ai-workflow__detail-code {
304
307
  background: var(--ai-workflow-surface);
305
308
  padding: 0.75rem;
306
309
  border-radius: var(--ai-workflow-radius-sm);
307
310
  border: 1px solid var(--ai-workflow-border);
308
- font-family: 'Courier New', monospace;
311
+ font-family: "Courier New", monospace;
309
312
  font-size: 0.8rem;
310
313
  color: var(--ai-workflow-accent);
311
314
  overflow-x: auto;
312
315
  }
313
-
314
- /* ========================================
315
- BLOCK: ai-workflow__run-history-table
316
- ======================================== */
317
316
  .ai-workflow__run-history-table {
318
317
  width: 100%;
319
318
  border-collapse: collapse;
320
319
  background: var(--ai-workflow-surface);
321
320
  }
322
-
323
321
  .ai-workflow__history-header {
324
322
  background: var(--ai-workflow-surface-2);
325
323
  border-bottom: 2px solid var(--ai-workflow-border);
326
324
  }
327
-
328
325
  .ai-workflow__history-th {
329
326
  padding: 1rem;
330
327
  text-align: left;
@@ -334,22 +331,18 @@
334
331
  text-transform: uppercase;
335
332
  letter-spacing: 0.05em;
336
333
  }
337
-
338
334
  .ai-workflow__history-row {
339
335
  border-bottom: 1px solid var(--ai-workflow-border);
340
336
  transition: background var(--ai-workflow-transition);
341
337
  }
342
-
343
338
  .ai-workflow__history-row:hover {
344
339
  background: var(--ai-workflow-surface-2);
345
340
  }
346
-
347
341
  .ai-workflow__history-td {
348
342
  padding: 1rem;
349
343
  font-size: 0.9rem;
350
344
  color: var(--ai-workflow-text);
351
345
  }
352
-
353
346
  .ai-workflow__history-status-badge {
354
347
  display: inline-flex;
355
348
  align-items: center;
@@ -359,35 +352,26 @@
359
352
  font-size: 0.8rem;
360
353
  font-weight: 600;
361
354
  }
362
-
363
355
  .ai-workflow__history-status-badge--pending {
364
356
  background: var(--ai-workflow-pending);
365
357
  color: var(--ai-workflow-text);
366
358
  }
367
-
368
359
  .ai-workflow__history-status-badge--running {
369
360
  background: var(--ai-workflow-running);
370
361
  color: var(--ai-workflow-text);
371
362
  }
372
-
373
363
  .ai-workflow__history-status-badge--success {
374
364
  background: var(--ai-workflow-success);
375
365
  color: var(--ai-workflow-text);
376
366
  }
377
-
378
367
  .ai-workflow__history-status-badge--error {
379
368
  background: var(--ai-workflow-error);
380
369
  color: white;
381
370
  }
382
-
383
371
  .ai-workflow__history-time {
384
372
  font-size: 0.8rem;
385
373
  color: var(--ai-workflow-text-muted);
386
374
  }
387
-
388
- /* ========================================
389
- BLOCK: ai-workflow__trigger-selector
390
- ======================================== */
391
375
  .ai-workflow__trigger-selector {
392
376
  display: flex;
393
377
  flex-direction: column;
@@ -397,13 +381,11 @@
397
381
  border: 1px solid var(--ai-workflow-border);
398
382
  border-radius: var(--ai-workflow-radius-sm);
399
383
  }
400
-
401
384
  .ai-workflow__trigger-title {
402
385
  font-weight: 600;
403
386
  color: var(--ai-workflow-text);
404
387
  font-size: 0.9rem;
405
388
  }
406
-
407
389
  .ai-workflow__trigger-option {
408
390
  padding: 0.75rem;
409
391
  background: var(--ai-workflow-surface-2);
@@ -415,16 +397,13 @@
415
397
  align-items: center;
416
398
  gap: 0.5rem;
417
399
  }
418
-
419
400
  .ai-workflow__trigger-option:hover {
420
401
  border-color: var(--ai-workflow-accent);
421
402
  }
422
-
423
403
  .ai-workflow__trigger-option--selected {
424
404
  border-color: var(--ai-workflow-accent);
425
- background: oklch(0.65 0.22 265 / 0.1);
405
+ background: var(--primary-soft);
426
406
  }
427
-
428
407
  .ai-workflow__trigger-radio {
429
408
  width: 1rem;
430
409
  height: 1rem;
@@ -435,64 +414,48 @@
435
414
  justify-content: center;
436
415
  transition: all var(--ai-workflow-transition);
437
416
  }
438
-
439
417
  .ai-workflow__trigger-option--selected .ai-workflow__trigger-radio {
440
418
  border-color: var(--ai-workflow-accent);
441
419
  background: var(--ai-workflow-accent);
442
420
  }
443
-
444
421
  .ai-workflow__trigger-label {
445
422
  flex: 1;
446
423
  color: var(--ai-workflow-text);
447
424
  font-size: 0.9rem;
448
425
  font-weight: 500;
449
426
  }
450
-
451
- /* ========================================
452
- BLOCK: ai-workflow__execution-log
453
- ======================================== */
454
427
  .ai-workflow__execution-log {
455
428
  background: var(--ai-workflow-surface);
456
429
  border: 1px solid var(--ai-workflow-border);
457
430
  border-radius: var(--ai-workflow-radius-sm);
458
431
  padding: 1rem;
459
- font-family: 'Courier New', monospace;
432
+ font-family: "Courier New", monospace;
460
433
  font-size: 0.8rem;
461
434
  max-height: 400px;
462
435
  overflow-y: auto;
463
436
  }
464
-
465
437
  .ai-workflow__log-line {
466
438
  margin: 0.5rem 0;
467
439
  color: var(--ai-workflow-text-muted);
468
440
  white-space: pre-wrap;
469
441
  word-wrap: break-word;
470
442
  }
471
-
472
443
  .ai-workflow__log-line--info {
473
444
  color: var(--ai-workflow-accent);
474
445
  }
475
-
476
446
  .ai-workflow__log-line--success {
477
447
  color: var(--ai-workflow-success);
478
448
  }
479
-
480
449
  .ai-workflow__log-line--error {
481
450
  color: var(--ai-workflow-error);
482
451
  }
483
-
484
452
  .ai-workflow__log-line--warning {
485
- color: oklch(0.75 0.18 70);
453
+ color: var(--warning);
486
454
  }
487
-
488
455
  .ai-workflow__log-timestamp {
489
456
  color: var(--ai-workflow-border);
490
457
  margin-right: 0.5rem;
491
458
  }
492
-
493
- /* ========================================
494
- BLOCK: ai-workflow__progress-tracker
495
- ======================================== */
496
459
  .ai-workflow__progress-tracker {
497
460
  display: flex;
498
461
  align-items: center;
@@ -502,7 +465,6 @@
502
465
  border: 1px solid var(--ai-workflow-border);
503
466
  border-radius: var(--ai-workflow-radius-sm);
504
467
  }
505
-
506
468
  .ai-workflow__progress-bar {
507
469
  flex: 1;
508
470
  height: 0.5rem;
@@ -510,25 +472,25 @@
510
472
  border-radius: 999px;
511
473
  overflow: hidden;
512
474
  }
513
-
514
475
  .ai-workflow__progress-fill {
515
476
  height: 100%;
516
- background: linear-gradient(90deg, var(--ai-workflow-accent), var(--ai-workflow-running));
477
+ background:
478
+ linear-gradient(
479
+ 90deg,
480
+ var(--ai-workflow-accent),
481
+ var(--ai-workflow-running));
517
482
  border-radius: 999px;
518
483
  animation: ai-workflow-progress 2s ease-in-out;
519
484
  }
520
-
521
485
  .ai-workflow__progress-fill--complete {
522
486
  background: var(--ai-workflow-success);
523
487
  animation: none;
524
488
  }
525
-
526
489
  @keyframes ai-workflow-progress {
527
490
  0% {
528
491
  width: 0%;
529
492
  }
530
493
  }
531
-
532
494
  .ai-workflow__progress-text {
533
495
  font-size: 0.85rem;
534
496
  color: var(--ai-workflow-text);
@@ -536,10 +498,6 @@
536
498
  min-width: 60px;
537
499
  text-align: right;
538
500
  }
539
-
540
- /* ========================================
541
- BLOCK: ai-workflow__step-list
542
- ======================================== */
543
501
  .ai-workflow__step-list {
544
502
  list-style: none;
545
503
  padding: 0;
@@ -548,7 +506,6 @@
548
506
  flex-direction: column;
549
507
  gap: 0.5rem;
550
508
  }
551
-
552
509
  .ai-workflow__step-list-item {
553
510
  padding: 0.75rem 1rem;
554
511
  background: var(--ai-workflow-surface);
@@ -560,17 +517,14 @@
560
517
  transition: all var(--ai-workflow-transition);
561
518
  cursor: pointer;
562
519
  }
563
-
564
520
  .ai-workflow__step-list-item:hover {
565
521
  background: var(--ai-workflow-surface-2);
566
522
  border-color: var(--ai-workflow-accent);
567
523
  }
568
-
569
524
  .ai-workflow__step-list-item--selected {
570
525
  border-color: var(--ai-workflow-accent);
571
- background: oklch(0.65 0.22 265 / 0.1);
526
+ background: var(--primary-soft);
572
527
  }
573
-
574
528
  .ai-workflow__step-list-number {
575
529
  display: flex;
576
530
  align-items: center;
@@ -584,25 +538,18 @@
584
538
  color: var(--ai-workflow-text);
585
539
  flex-shrink: 0;
586
540
  }
587
-
588
541
  .ai-workflow__step-list-item--success .ai-workflow__step-list-number {
589
542
  background: var(--ai-workflow-success);
590
543
  }
591
-
592
544
  .ai-workflow__step-list-item--error .ai-workflow__step-list-number {
593
545
  background: var(--ai-workflow-error);
594
546
  }
595
-
596
547
  .ai-workflow__step-list-label {
597
548
  flex: 1;
598
549
  font-size: 0.9rem;
599
550
  color: var(--ai-workflow-text);
600
551
  font-weight: 500;
601
552
  }
602
-
603
- /* ========================================
604
- BLOCK: ai-workflow__variable-editor
605
- ======================================== */
606
553
  .ai-workflow__variable-editor {
607
554
  background: var(--ai-workflow-surface);
608
555
  border: 1px solid var(--ai-workflow-border);
@@ -612,18 +559,15 @@
612
559
  flex-direction: column;
613
560
  gap: 1rem;
614
561
  }
615
-
616
562
  .ai-workflow__variable-header {
617
563
  font-weight: 600;
618
564
  color: var(--ai-workflow-text);
619
565
  font-size: 0.9rem;
620
566
  }
621
-
622
567
  .ai-workflow__variable-item {
623
568
  display: flex;
624
569
  gap: 0.75rem;
625
570
  }
626
-
627
571
  .ai-workflow__variable-name {
628
572
  flex: 0 0 120px;
629
573
  padding: 0.5rem;
@@ -632,9 +576,8 @@
632
576
  border-radius: var(--ai-workflow-radius-sm);
633
577
  color: var(--ai-workflow-text);
634
578
  font-size: 0.85rem;
635
- font-family: 'Courier New', monospace;
579
+ font-family: "Courier New", monospace;
636
580
  }
637
-
638
581
  .ai-workflow__variable-value {
639
582
  flex: 1;
640
583
  padding: 0.5rem;
@@ -644,15 +587,10 @@
644
587
  color: var(--ai-workflow-text);
645
588
  font-size: 0.85rem;
646
589
  }
647
-
648
590
  .ai-workflow__variable-value:focus {
649
591
  outline: none;
650
592
  border-color: var(--ai-workflow-accent);
651
593
  }
652
-
653
- /* ========================================
654
- BLOCK: ai-workflow__condition-block
655
- ======================================== */
656
594
  .ai-workflow__condition-block {
657
595
  background: var(--ai-workflow-surface);
658
596
  border: 1px solid var(--ai-workflow-border);
@@ -662,19 +600,16 @@
662
600
  flex-direction: column;
663
601
  gap: 0.75rem;
664
602
  }
665
-
666
603
  .ai-workflow__condition-label {
667
604
  font-weight: 600;
668
605
  color: var(--ai-workflow-text);
669
606
  font-size: 0.9rem;
670
607
  }
671
-
672
608
  .ai-workflow__condition-row {
673
609
  display: flex;
674
610
  gap: 0.5rem;
675
611
  align-items: center;
676
612
  }
677
-
678
613
  .ai-workflow__condition-field {
679
614
  flex: 1;
680
615
  padding: 0.5rem;
@@ -684,12 +619,10 @@
684
619
  color: var(--ai-workflow-text);
685
620
  font-size: 0.85rem;
686
621
  }
687
-
688
622
  .ai-workflow__condition-field:focus {
689
623
  outline: none;
690
624
  border-color: var(--ai-workflow-accent);
691
625
  }
692
-
693
626
  .ai-workflow__condition-operator {
694
627
  flex: 0 0 80px;
695
628
  padding: 0.5rem;
@@ -700,10 +633,6 @@
700
633
  font-size: 0.85rem;
701
634
  text-align: center;
702
635
  }
703
-
704
- /* ========================================
705
- BLOCK: ai-workflow__loop-indicator
706
- ======================================== */
707
636
  .ai-workflow__loop-indicator {
708
637
  display: inline-flex;
709
638
  align-items: center;
@@ -715,60 +644,46 @@
715
644
  font-size: 0.8rem;
716
645
  font-weight: 600;
717
646
  }
718
-
719
647
  .ai-workflow__loop-icon {
720
648
  font-size: 0.9rem;
721
649
  animation: ai-workflow-spin 1s linear infinite;
722
650
  }
723
-
724
- /* ========================================
725
- BLOCK: ai-workflow__parallel-badge
726
- ======================================== */
727
651
  .ai-workflow__parallel-badge {
728
652
  display: inline-flex;
729
653
  align-items: center;
730
654
  gap: 0.5rem;
731
655
  padding: 0.35rem 0.75rem;
732
- background: oklch(0.72 0.20 145);
656
+ background: var(--success);
733
657
  color: var(--ai-workflow-text);
734
658
  border-radius: 999px;
735
659
  font-size: 0.8rem;
736
660
  font-weight: 600;
737
661
  }
738
-
739
662
  .ai-workflow__parallel-icon {
740
663
  font-size: 0.9rem;
741
664
  }
742
-
743
- /* ========================================
744
- STATES: Skeleton Loading
745
- ======================================== */
746
665
  .ai-workflow__skeleton {
747
- background: linear-gradient(
748
- 90deg,
749
- var(--ai-workflow-surface-2) 0%,
750
- var(--ai-workflow-border) 50%,
751
- var(--ai-workflow-surface-2) 100%
752
- );
666
+ background:
667
+ linear-gradient(
668
+ 90deg,
669
+ var(--ai-workflow-surface-2) 0%,
670
+ var(--ai-workflow-border) 50%,
671
+ var(--ai-workflow-surface-2) 100%);
753
672
  background-size: 200% 100%;
754
673
  animation: ai-workflow-skeleton-loading 1.5s ease-in-out infinite;
755
674
  border-radius: var(--ai-workflow-radius-sm);
756
675
  }
757
-
758
676
  .ai-workflow__skeleton--text {
759
677
  height: 1rem;
760
678
  margin: 0.5rem 0;
761
679
  }
762
-
763
680
  .ai-workflow__skeleton--node {
764
681
  height: 5rem;
765
682
  width: 180px;
766
683
  }
767
-
768
684
  .ai-workflow__skeleton--card {
769
685
  height: 6rem;
770
686
  }
771
-
772
687
  @keyframes ai-workflow-skeleton-loading {
773
688
  0% {
774
689
  background-position: 200% 0;
@@ -777,10 +692,6 @@
777
692
  background-position: -200% 0;
778
693
  }
779
694
  }
780
-
781
- /* ========================================
782
- STATES: Empty State
783
- ======================================== */
784
695
  .ai-workflow__empty-state {
785
696
  display: flex;
786
697
  flex-direction: column;
@@ -794,102 +705,76 @@
794
705
  border: 2px dashed var(--ai-workflow-border);
795
706
  border-radius: var(--ai-workflow-radius);
796
707
  }
797
-
798
708
  .ai-workflow__empty-icon {
799
709
  font-size: 3rem;
800
710
  opacity: 0.3;
801
711
  }
802
-
803
712
  .ai-workflow__empty-title {
804
713
  margin: 0;
805
714
  font-size: 1.1rem;
806
715
  font-weight: 600;
807
716
  color: var(--ai-workflow-text);
808
717
  }
809
-
810
718
  .ai-workflow__empty-description {
811
719
  margin: 0;
812
720
  color: var(--ai-workflow-text-muted);
813
721
  font-size: 0.9rem;
814
722
  max-width: 300px;
815
723
  }
816
-
817
- /* ========================================
818
- RESPONSIVE: Tablet
819
- ======================================== */
820
724
  @media (max-width: 768px) {
821
725
  .ai-workflow__step-detail-panel {
822
726
  max-width: none;
823
727
  min-width: 250px;
824
728
  }
825
-
826
729
  .ai-workflow__run-history-table {
827
730
  font-size: 0.85rem;
828
731
  }
829
-
830
732
  .ai-workflow__history-th,
831
733
  .ai-workflow__history-td {
832
734
  padding: 0.75rem;
833
735
  }
834
-
835
736
  .ai-workflow__execution-log {
836
737
  max-height: 300px;
837
738
  font-size: 0.75rem;
838
739
  }
839
740
  }
840
-
841
- /* ========================================
842
- RESPONSIVE: Mobile
843
- ======================================== */
844
741
  @media (max-width: 480px) {
845
742
  .ai-workflow__canvas {
846
743
  min-height: 300px;
847
744
  }
848
-
849
745
  .ai-workflow__step-detail-panel {
850
746
  min-width: 100%;
851
747
  max-width: none;
852
748
  border-left: none;
853
749
  border-top: 1px solid var(--ai-workflow-border);
854
750
  }
855
-
856
751
  .ai-workflow__step-node {
857
752
  min-width: 150px;
858
753
  padding: 0.75rem;
859
754
  }
860
-
861
755
  .ai-workflow__run-history-table {
862
756
  font-size: 0.75rem;
863
757
  }
864
-
865
758
  .ai-workflow__history-th,
866
759
  .ai-workflow__history-td {
867
760
  padding: 0.5rem;
868
761
  }
869
-
870
762
  .ai-workflow__condition-row {
871
763
  flex-direction: column;
872
764
  }
873
-
874
765
  .ai-workflow__condition-field,
875
766
  .ai-workflow__condition-operator {
876
767
  width: 100%;
877
768
  }
878
-
879
769
  .ai-workflow__execution-log {
880
770
  font-size: 0.7rem;
881
771
  max-height: 250px;
882
772
  }
883
773
  }
884
-
885
- /* ========================================
886
- UTILITY: Accessibility
887
- ======================================== */
888
774
  .ai-workflow__focus-visible:focus-visible {
889
775
  outline: 2px solid var(--ai-workflow-accent);
890
776
  outline-offset: 2px;
891
777
  }
892
-
893
778
  @media (prefers-reduced-motion: reduce) {
894
779
  .ai-workflow__step-node--running,
895
780
  .ai-workflow__step-status--running,
@@ -901,45 +786,14 @@
901
786
  transition: none;
902
787
  }
903
788
  }
904
-
905
- /* ========================================
906
- UTILITY: Dark Mode
907
- ======================================== */
908
- @media (prefers-color-scheme: dark) {
909
- :root {
910
- --ai-workflow-bg: oklch(0.08 0.01 250);
911
- --ai-workflow-surface: oklch(0.11 0.01 250);
912
- --ai-workflow-surface-2: oklch(0.14 0.01 250);
913
- --ai-workflow-border: oklch(0.20 0.01 250);
914
- --ai-workflow-text: oklch(0.97 0.01 250);
915
- }
916
- }
917
-
918
- /* ========================================
919
- UTILITY: Light Mode
920
- ======================================== */
921
- @media (prefers-color-scheme: light) {
922
- :root {
923
- --ai-workflow-bg: oklch(0.98 0.01 250);
924
- --ai-workflow-surface: oklch(0.93 0.01 250);
925
- --ai-workflow-surface-2: oklch(0.88 0.01 250);
926
- --ai-workflow-border: oklch(0.75 0.01 250);
927
- --ai-workflow-text: oklch(0.15 0.01 250);
928
- --ai-workflow-text-muted: oklch(0.40 0.01 250);
929
- }
930
- }
931
-
932
- /* ========================================
933
- UTILITY: Print Styles
934
- ======================================== */
935
789
  @media print {
936
790
  .ai-workflow__canvas {
937
791
  break-inside: avoid;
938
792
  page-break-inside: avoid;
939
793
  }
940
-
941
794
  .ai-workflow__step-node {
942
795
  break-inside: avoid;
943
796
  page-break-inside: avoid;
944
797
  }
945
798
  }
799
+ /*# sourceMappingURL=index.css.map */