@marktoflow/gui 2.0.0-alpha.1 → 2.0.0-alpha.12

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 (139) hide show
  1. package/.marktoflow/state/workflow-state.db +0 -0
  2. package/.marktoflow/state/workflow-state.db-shm +0 -0
  3. package/.marktoflow/state/workflow-state.db-wal +0 -0
  4. package/.turbo/turbo-build.log +24 -8
  5. package/.turbo/turbo-test.log +29 -13
  6. package/README.md +49 -3
  7. package/dist/client/assets/index-CM44OayM.js +704 -0
  8. package/dist/client/assets/index-CM44OayM.js.map +1 -0
  9. package/dist/client/assets/index-Dru63gi6.css +1 -0
  10. package/dist/client/index.html +2 -2
  11. package/dist/server/index.js +93 -33
  12. package/dist/server/index.js.map +1 -1
  13. package/dist/server/routes/ai.js +38 -1
  14. package/dist/server/routes/ai.js.map +1 -1
  15. package/dist/server/routes/execute.js +23 -22
  16. package/dist/server/routes/execute.js.map +1 -1
  17. package/dist/server/routes/executions.js +125 -0
  18. package/dist/server/routes/executions.js.map +1 -0
  19. package/dist/server/{server/routes → routes}/tools.js +406 -0
  20. package/dist/server/{server/routes → routes}/tools.js.map +1 -1
  21. package/dist/server/routes/workflows.js +41 -5
  22. package/dist/server/routes/workflows.js.map +1 -1
  23. package/dist/server/services/AIService.js +55 -202
  24. package/dist/server/services/AIService.js.map +1 -1
  25. package/dist/server/services/FileWatcher.js +0 -2
  26. package/dist/server/services/FileWatcher.js.map +1 -1
  27. package/dist/server/services/WorkflowService.js +199 -16
  28. package/dist/server/services/WorkflowService.js.map +1 -1
  29. package/dist/server/services/agents/codex-provider.js +270 -0
  30. package/dist/server/services/agents/codex-provider.js.map +1 -0
  31. package/dist/server/{server/services → services}/agents/prompts.js +27 -0
  32. package/dist/server/services/agents/prompts.js.map +1 -0
  33. package/dist/server/{server/services → services}/agents/registry.js +20 -0
  34. package/dist/server/services/agents/registry.js.map +1 -0
  35. package/dist/server/websocket/index.js +12 -0
  36. package/dist/server/websocket/index.js.map +1 -1
  37. package/marktoflow-gui-2.0.0-alpha.12.tgz +0 -0
  38. package/package.json +19 -5
  39. package/scripts/flatten-dist.js +69 -0
  40. package/src/client/components/Canvas/Canvas.tsx +27 -7
  41. package/src/client/components/Canvas/ExecutionOverlay.tsx +120 -32
  42. package/src/client/components/Canvas/ForEachNode.tsx +152 -0
  43. package/src/client/components/Canvas/IfElseNode.tsx +141 -0
  44. package/src/client/components/Canvas/NodeContextMenu.tsx +8 -4
  45. package/src/client/components/Canvas/ParallelNode.tsx +157 -0
  46. package/src/client/components/Canvas/SwitchNode.tsx +185 -0
  47. package/src/client/components/Canvas/Toolbar.tsx +59 -21
  48. package/src/client/components/Canvas/TransformNode.tsx +194 -0
  49. package/src/client/components/Canvas/TryCatchNode.tsx +164 -0
  50. package/src/client/components/Canvas/WhileNode.tsx +161 -0
  51. package/src/client/components/Canvas/index.ts +24 -0
  52. package/src/client/components/Debug/VariableInspector.tsx +148 -0
  53. package/src/client/components/Prompt/PromptInput.tsx +3 -1
  54. package/src/client/components/Settings/ProviderSwitcher.tsx +228 -0
  55. package/src/client/components/Sidebar/ImportDialog.tsx +257 -0
  56. package/src/client/components/Sidebar/Sidebar.tsx +21 -2
  57. package/src/client/components/common/KeyboardShortcuts.tsx +8 -2
  58. package/src/client/stores/agentStore.ts +109 -0
  59. package/src/client/stores/executionStore.ts +64 -2
  60. package/src/client/stores/workflowStore.ts +10 -2
  61. package/src/client/styles/globals.css +106 -0
  62. package/src/client/utils/platform.ts +46 -0
  63. package/src/client/utils/serviceIcons.tsx +33 -0
  64. package/src/client/utils/workflowToGraph.ts +245 -21
  65. package/src/server/index.ts +25 -2
  66. package/src/server/routes/executions.ts +136 -0
  67. package/src/server/routes/tools.ts +406 -0
  68. package/src/server/routes/workflows.ts +42 -1
  69. package/src/server/services/WorkflowService.ts +176 -16
  70. package/src/server/services/agents/codex-provider.ts +398 -0
  71. package/src/server/services/agents/prompts.ts +27 -0
  72. package/src/server/services/agents/registry.ts +21 -0
  73. package/src/server/websocket/index.ts +13 -0
  74. package/tailwind.config.ts +1 -1
  75. package/tests/integration/api.test.ts +203 -1
  76. package/tests/integration/testApp.ts +1 -1
  77. package/tests/setup.ts +35 -0
  78. package/tests/unit/ForEachNode.test.tsx +308 -0
  79. package/tests/unit/IfElseNode.test.tsx +235 -0
  80. package/tests/unit/ParallelNode.test.tsx +344 -0
  81. package/tests/unit/SwitchNode.test.tsx +327 -0
  82. package/tests/unit/TransformNode.test.tsx +386 -0
  83. package/tests/unit/TryCatchNode.test.tsx +243 -0
  84. package/tests/unit/WhileNode.test.tsx +230 -0
  85. package/tests/unit/agentStore.test.ts +218 -0
  86. package/tests/unit/codexProvider.test.ts +399 -0
  87. package/tests/unit/executionStore.test.ts +40 -0
  88. package/tests/unit/platform.test.ts +118 -0
  89. package/tests/unit/serviceIcons.test.ts +197 -0
  90. package/tests/unit/workflowToGraph.test.ts +22 -0
  91. package/dist/client/assets/index-DwTI8opO.js +0 -608
  92. package/dist/client/assets/index-DwTI8opO.js.map +0 -1
  93. package/dist/client/assets/index-RoEdL6gO.css +0 -1
  94. package/dist/server/index.d.ts +0 -3
  95. package/dist/server/index.d.ts.map +0 -1
  96. package/dist/server/server/index.js +0 -95
  97. package/dist/server/server/index.js.map +0 -1
  98. package/dist/server/server/routes/ai.js +0 -87
  99. package/dist/server/server/routes/ai.js.map +0 -1
  100. package/dist/server/server/routes/execute.js +0 -63
  101. package/dist/server/server/routes/execute.js.map +0 -1
  102. package/dist/server/server/routes/workflows.js +0 -99
  103. package/dist/server/server/routes/workflows.js.map +0 -1
  104. package/dist/server/server/services/AIService.js +0 -69
  105. package/dist/server/server/services/AIService.js.map +0 -1
  106. package/dist/server/server/services/FileWatcher.js +0 -60
  107. package/dist/server/server/services/FileWatcher.js.map +0 -1
  108. package/dist/server/server/services/WorkflowService.js +0 -363
  109. package/dist/server/server/services/WorkflowService.js.map +0 -1
  110. package/dist/server/server/services/agents/prompts.js.map +0 -1
  111. package/dist/server/server/services/agents/registry.js.map +0 -1
  112. package/dist/server/server/websocket/index.js +0 -85
  113. package/dist/server/server/websocket/index.js.map +0 -1
  114. package/dist/server/services/AIService.d.ts +0 -30
  115. package/dist/server/services/AIService.d.ts.map +0 -1
  116. package/dist/server/services/FileWatcher.d.ts +0 -10
  117. package/dist/server/services/FileWatcher.d.ts.map +0 -1
  118. package/dist/server/services/WorkflowService.d.ts +0 -54
  119. package/dist/server/services/WorkflowService.d.ts.map +0 -1
  120. package/dist/server/websocket/index.d.ts +0 -10
  121. package/dist/server/websocket/index.d.ts.map +0 -1
  122. /package/dist/server/{server/services → services}/agents/claude-code-provider.js +0 -0
  123. /package/dist/server/{server/services → services}/agents/claude-code-provider.js.map +0 -0
  124. /package/dist/server/{server/services → services}/agents/claude-provider.js +0 -0
  125. /package/dist/server/{server/services → services}/agents/claude-provider.js.map +0 -0
  126. /package/dist/server/{server/services → services}/agents/copilot-provider.js +0 -0
  127. /package/dist/server/{server/services → services}/agents/copilot-provider.js.map +0 -0
  128. /package/dist/server/{server/services → services}/agents/demo-provider.js +0 -0
  129. /package/dist/server/{server/services → services}/agents/demo-provider.js.map +0 -0
  130. /package/dist/server/{server/services → services}/agents/index.js +0 -0
  131. /package/dist/server/{server/services → services}/agents/index.js.map +0 -0
  132. /package/dist/server/{server/services → services}/agents/ollama-provider.js +0 -0
  133. /package/dist/server/{server/services → services}/agents/ollama-provider.js.map +0 -0
  134. /package/dist/server/{server/services → services}/agents/types.js +0 -0
  135. /package/dist/server/{server/services → services}/agents/types.js.map +0 -0
  136. /package/dist/{server/shared → shared}/constants.js +0 -0
  137. /package/dist/{server/shared → shared}/constants.js.map +0 -0
  138. /package/dist/{server/shared → shared}/types.js +0 -0
  139. /package/dist/{server/shared → shared}/types.js.map +0 -0
@@ -1,26 +1,42 @@
1
1
 
2
- > @marktoflow/gui@2.0.0-alpha.1 build /Volumes/USBEXT/sandbox/personal/marktoflow/packages/gui
3
- > pnpm build:client && pnpm build:server
2
+ > @marktoflow/gui@2.0.0-alpha.12 build /Volumes/USBEXT/sandbox/personal/marktoflow/packages/gui
3
+ > pnpm build:client && pnpm build:server && pnpm build:flatten
4
4
 
5
5
 
6
- > @marktoflow/gui@2.0.0-alpha.1 build:client /Volumes/USBEXT/sandbox/personal/marktoflow/packages/gui
6
+ > @marktoflow/gui@2.0.0-alpha.12 build:client /Volumes/USBEXT/sandbox/personal/marktoflow/packages/gui
7
7
  > vite build
8
8
 
9
9
  vite v6.4.1 building for production...
10
10
  transforming...
11
- 2259 modules transformed.
11
+ 2270 modules transformed.
12
12
  rendering chunks...
13
13
  computing gzip size...
14
14
  dist/client/index.html 0.83 kB │ gzip: 0.46 kB
15
- dist/client/assets/index-RoEdL6gO.css 44.51 kB │ gzip: 8.37 kB
16
- dist/client/assets/index-DwTI8opO.js 835.13 kB │ gzip: 261.15 kB │ map: 3,374.67 kB
15
+ dist/client/assets/index-Dru63gi6.css 51.25 kB │ gzip: 9.52 kB
16
+ dist/client/assets/index-CM44OayM.js 881.84 kB │ gzip: 268.82 kB │ map: 3,510.67 kB
17
17
 
18
18
  (!) Some chunks are larger than 500 kB after minification. Consider:
19
19
  - Using dynamic import() to code-split the application
20
20
  - Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
21
21
  - Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
22
- ✓ built in 1.51s
22
+ ✓ built in 2.21s
23
23
 
24
- > @marktoflow/gui@2.0.0-alpha.1 build:server /Volumes/USBEXT/sandbox/personal/marktoflow/packages/gui
24
+ > @marktoflow/gui@2.0.0-alpha.12 build:server /Volumes/USBEXT/sandbox/personal/marktoflow/packages/gui
25
25
  > tsc -p tsconfig.server.json
26
26
 
27
+
28
+ > @marktoflow/gui@2.0.0-alpha.12 build:flatten /Volumes/USBEXT/sandbox/personal/marktoflow/packages/gui
29
+ > node scripts/flatten-dist.js
30
+
31
+ 🔧 Flattening dist structure...
32
+ 📦 Moving server/server/* to temp location...
33
+ 📦 Moving server/shared/* to dist/shared/...
34
+ 🗑️ Removing old server directory...
35
+ 📦 Moving temp back to dist/server/...
36
+ ✅ Dist structure flattened successfully!
37
+
38
+ Final structure:
39
+ dist/
40
+ client/ - React app
41
+ server/ - Server code (flat)
42
+ shared/ - Shared code
@@ -1,22 +1,38 @@
1
1
 
2
- > @marktoflow/gui@2.0.0-alpha.1 test /Volumes/USBEXT/sandbox/personal/marktoflow/packages/gui
2
+ > @marktoflow/gui@2.0.0-alpha.12 test /Volumes/USBEXT/sandbox/personal/marktoflow/packages/gui
3
3
  > vitest run
4
4
 
5
5
 
6
6
  RUN v2.1.9 /Volumes/USBEXT/sandbox/personal/marktoflow/packages/gui
7
7
 
8
- ✓ tests/unit/workflowToGraph.test.ts (15 tests) 3ms
8
+ ✓ tests/unit/executionStore.test.ts (46 tests) 117ms
9
+ ✓ tests/unit/workflowToGraph.test.ts (16 tests) 4ms
10
+ ✓ tests/unit/canvasStore.test.ts (24 tests) 18ms
11
+ ✓ tests/unit/codexProvider.test.ts (42 tests) 31ms
12
+ ✓ tests/unit/ParallelNode.test.tsx (30 tests) 1015ms
13
+ ✓ ParallelNode > visual styling > should have blue/cyan gradient background 429ms
14
+ ✓ tests/unit/TransformNode.test.tsx (34 tests) 994ms
15
+ ✓ TransformNode > visual styling > should have teal/cyan gradient background 342ms
16
+ ✓ tests/unit/SwitchNode.test.tsx (28 tests) 1047ms
17
+ ✓ SwitchNode > visual styling > should have purple/magenta gradient background 311ms
18
+ ✓ tests/unit/ForEachNode.test.tsx (28 tests) 1024ms
19
+ ✓ ForEachNode > visual styling > should have pink/red gradient background 313ms
20
+ ✓ tests/unit/stepValidation.test.ts (17 tests) 6ms
21
+ ✓ tests/integration/api.test.ts (37 tests) 414ms
22
+ ✓ tests/unit/TryCatchNode.test.tsx (25 tests) 647ms
23
+ ✓ tests/unit/IfElseNode.test.tsx (23 tests) 690ms
24
+ ✓ IfElseNode > should render node with name and condition 322ms
25
+ ✓ tests/unit/agentStore.test.ts (9 tests) 7ms
26
+ ✓ tests/unit/WhileNode.test.tsx (21 tests) 467ms
27
+ ✓ tests/unit/layoutStore.test.ts (18 tests) 5ms
9
28
  ✓ tests/unit/navigationStore.test.ts (10 tests) 6ms
10
- ✓ tests/unit/stepValidation.test.ts (17 tests) 7ms
11
- ✓ tests/unit/themeStore.test.ts (9 tests) 4ms
12
- ✓ tests/unit/layoutStore.test.ts (18 tests) 7ms
13
- ✓ tests/unit/executionStore.test.ts (43 tests) 24ms
14
- ✓ tests/unit/canvasStore.test.ts (24 tests) 5ms
15
- ✓ tests/unit/components.test.tsx (14 tests) 32ms
16
- ✓ tests/integration/api.test.ts (23 tests) 47ms
29
+ ✓ tests/unit/serviceIcons.test.ts (12 tests) 3ms
30
+ ✓ tests/unit/themeStore.test.ts (9 tests) 5ms
31
+ ✓ tests/unit/components.test.tsx (14 tests) 84ms
32
+ ✓ tests/unit/platform.test.ts (13 tests) 4ms
17
33
 
18
- Test Files 9 passed (9)
19
- Tests 173 passed (173)
20
- Start at 17:09:24
21
- Duration 1.39s (transform 485ms, setup 761ms, collect 1.30s, tests 135ms, environment 4.27s, prepare 499ms)
34
+ Test Files 20 passed (20)
35
+ Tests 456 passed (456)
36
+ Start at 16:31:41
37
+ Duration 6.57s (transform 1.40s, setup 2.53s, collect 8.74s, tests 6.59s, environment 21.72s, prepare 2.61s)
22
38
 
package/README.md CHANGED
@@ -1,15 +1,27 @@
1
1
  # @marktoflow/gui
2
2
 
3
+ > **Author:** Scott Glover <scottgl@gmail.com>
4
+
3
5
  Visual workflow designer for marktoflow - a web-based drag-and-drop editor with AI-powered assistance.
4
6
 
5
7
  ## Features
6
8
 
7
9
  - **Visual Workflow Editor** - Drag-and-drop interface for creating and editing workflows
10
+ - **Enhanced Control Flow Visualization** - Visual execution state indicators for loops, branches, and parallel execution
8
11
  - **AI-Powered Assistance** - Natural language commands to modify workflows
9
12
  - **Multiple AI Backends** - Support for Claude Code, GitHub Copilot, and more
10
- - **Real-time Execution** - Run and debug workflows directly from the UI
13
+ - **Real-time Execution** - Run and debug workflows directly from the UI with live status updates
11
14
  - **Live File Sync** - Changes sync automatically with your workflow files
12
15
 
16
+ ### Control Flow Visual Features
17
+
18
+ - **Early Exit Indicators** - See when loops exit before completion (break/error)
19
+ - **Skipped Branch Visualization** - Grayed-out branches that weren't executed
20
+ - **Progress Tracking** - Real-time iteration counters and progress bars
21
+ - **Rate Limiting Warnings** - Visual alerts for parallel execution throttling
22
+ - **Failed Branch Tracking** - Red highlighting for failed parallel branches
23
+ - **Execution State Badges** - Contextual icons showing loop exit reasons
24
+
13
25
  ## Installation
14
26
 
15
27
  ```bash
@@ -78,8 +90,10 @@ The GUI supports multiple AI backends for workflow assistance:
78
90
  |----------|-----|----------------|
79
91
  | Claude Code | `@anthropic-ai/claude-agent-sdk` | Claude CLI (`claude`) |
80
92
  | GitHub Copilot | `@github/copilot-sdk` | Copilot CLI (`copilot auth`) |
93
+ | OpenAI Codex | `openai-codex-sdk` | Codex CLI |
94
+ | OpenCode | `@opencode-ai/sdk` | OpenCode CLI (`opencode /connect`) |
81
95
  | Claude API | `@anthropic-ai/sdk` | `ANTHROPIC_API_KEY` |
82
- | Ollama | REST API | Local server |
96
+ | Ollama (beta) | REST API | Local server |
83
97
  | Demo Mode | - | Always available |
84
98
 
85
99
  ### Setting Up AI Providers
@@ -100,6 +114,38 @@ copilot auth
100
114
  # The GUI will automatically detect and use Copilot
101
115
  ```
102
116
 
117
+ **OpenAI Codex**
118
+ ```bash
119
+ # Authenticate with Codex CLI
120
+ # Follow Codex CLI documentation for setup
121
+
122
+ # The GUI will automatically detect and use Codex
123
+ ```
124
+
125
+ **OpenCode**
126
+ ```bash
127
+ # Configure OpenCode
128
+ opencode /connect
129
+
130
+ # The GUI will automatically detect and use OpenCode
131
+ ```
132
+
133
+ **Claude API (Direct)**
134
+ ```bash
135
+ # Set API key
136
+ export ANTHROPIC_API_KEY=sk-ant-your-key
137
+
138
+ # The GUI will use direct API access
139
+ ```
140
+
141
+ **Ollama (Local)**
142
+ ```bash
143
+ # Start Ollama server
144
+ ollama serve
145
+
146
+ # The GUI will automatically detect Ollama at localhost:11434
147
+ ```
148
+
103
149
  ## API Endpoints
104
150
 
105
151
  The GUI server exposes a REST API:
@@ -176,4 +222,4 @@ pnpm test
176
222
 
177
223
  ## License
178
224
 
179
- MIT
225
+ Apache-2.0