@marktoflow/gui 2.0.0-alpha.4 → 2.0.1
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/README.md +48 -170
- package/client.log +0 -0
- package/dist/client/assets/index-DQeR1ew6.css +1 -0
- package/dist/client/assets/index-LbIVPHbD.js +833 -0
- package/dist/client/assets/index-LbIVPHbD.js.map +1 -0
- package/dist/client/index.html +2 -2
- package/dist/client/marktoflow-logo.png +0 -0
- package/dist/server/{server/index.js → index.js} +53 -6
- package/dist/server/index.js.map +1 -0
- package/dist/server/routes/admin.js +95 -0
- package/dist/server/routes/admin.js.map +1 -0
- package/dist/server/{server/routes → routes}/ai.js +2 -2
- package/dist/server/{server/routes → routes}/ai.js.map +1 -1
- package/dist/server/routes/collaboration.js +104 -0
- package/dist/server/routes/collaboration.js.map +1 -0
- package/dist/server/routes/execute.js +230 -0
- package/dist/server/routes/execute.js.map +1 -0
- package/dist/server/routes/executions.js +125 -0
- package/dist/server/routes/executions.js.map +1 -0
- package/dist/server/routes/form.js +160 -0
- package/dist/server/routes/form.js.map +1 -0
- package/dist/server/routes/settings.js +90 -0
- package/dist/server/routes/settings.js.map +1 -0
- package/dist/server/routes/templates.js +106 -0
- package/dist/server/routes/templates.js.map +1 -0
- package/dist/server/routes/versions.js +101 -0
- package/dist/server/routes/versions.js.map +1 -0
- package/dist/server/{server/routes → routes}/workflows.js +37 -1
- package/dist/server/routes/workflows.js.map +1 -0
- package/dist/server/services/AIService.js +152 -0
- package/dist/server/services/AIService.js.map +1 -0
- package/dist/server/services/ExecutionManager.js +571 -0
- package/dist/server/services/ExecutionManager.js.map +1 -0
- package/dist/server/services/VersionService.js +65 -0
- package/dist/server/services/VersionService.js.map +1 -0
- package/dist/server/{server/services → services}/WorkflowService.js +166 -17
- package/dist/server/services/WorkflowService.js.map +1 -0
- package/dist/server/{server/services → services}/agents/copilot-provider.js +32 -0
- package/dist/server/services/agents/copilot-provider.js.map +1 -0
- package/dist/server/{server/websocket → websocket}/index.js +54 -0
- package/dist/server/websocket/index.js.map +1 -0
- package/dist/{server/shared → shared}/constants.js +9 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/settings.js +51 -0
- package/dist/shared/settings.js.map +1 -0
- package/package.json +32 -14
- package/public/marktoflow-logo.png +0 -0
- package/scripts/flatten-dist.js +69 -0
- package/server.log +0 -0
- package/tests/integration/fixtures/test-workflow.md +6 -0
- package/.turbo/turbo-build.log +0 -26
- package/dist/client/assets/index-C90Y_aBX.js +0 -678
- package/dist/client/assets/index-C90Y_aBX.js.map +0 -1
- package/dist/client/assets/index-CRWeQ3NN.css +0 -1
- package/dist/server/server/index.js.map +0 -1
- package/dist/server/server/routes/execute.js +0 -63
- package/dist/server/server/routes/execute.js.map +0 -1
- package/dist/server/server/routes/workflows.js.map +0 -1
- package/dist/server/server/services/AIService.js +0 -69
- package/dist/server/server/services/AIService.js.map +0 -1
- package/dist/server/server/services/WorkflowService.js.map +0 -1
- package/dist/server/server/services/agents/copilot-provider.js.map +0 -1
- package/dist/server/server/websocket/index.js.map +0 -1
- package/dist/server/shared/constants.js.map +0 -1
- package/playwright.config.ts +0 -27
- package/postcss.config.js +0 -6
- package/src/client/App.tsx +0 -520
- package/src/client/components/Canvas/Canvas.tsx +0 -423
- package/src/client/components/Canvas/ExecutionOverlay.tsx +0 -847
- package/src/client/components/Canvas/ForEachNode.tsx +0 -128
- package/src/client/components/Canvas/IfElseNode.tsx +0 -126
- package/src/client/components/Canvas/NodeContextMenu.tsx +0 -188
- package/src/client/components/Canvas/OutputNode.tsx +0 -111
- package/src/client/components/Canvas/ParallelNode.tsx +0 -140
- package/src/client/components/Canvas/StepNode.tsx +0 -106
- package/src/client/components/Canvas/SubWorkflowNode.tsx +0 -141
- package/src/client/components/Canvas/SwitchNode.tsx +0 -164
- package/src/client/components/Canvas/Toolbar.tsx +0 -189
- package/src/client/components/Canvas/TransformNode.tsx +0 -185
- package/src/client/components/Canvas/TriggerNode.tsx +0 -128
- package/src/client/components/Canvas/TryCatchNode.tsx +0 -164
- package/src/client/components/Canvas/WhileNode.tsx +0 -129
- package/src/client/components/Canvas/index.ts +0 -24
- package/src/client/components/Editor/InputsEditor.tsx +0 -458
- package/src/client/components/Editor/NewStepWizard.tsx +0 -344
- package/src/client/components/Editor/StepEditor.tsx +0 -532
- package/src/client/components/Editor/YamlEditor.tsx +0 -160
- package/src/client/components/Panels/PropertiesPanel.tsx +0 -589
- package/src/client/components/Prompt/ChangePreview.tsx +0 -281
- package/src/client/components/Prompt/PromptHistoryPanel.tsx +0 -209
- package/src/client/components/Prompt/PromptInput.tsx +0 -108
- package/src/client/components/Sidebar/Sidebar.tsx +0 -343
- package/src/client/components/common/Breadcrumb.tsx +0 -40
- package/src/client/components/common/Button.tsx +0 -68
- package/src/client/components/common/ContextMenu.tsx +0 -202
- package/src/client/components/common/KeyboardShortcuts.tsx +0 -143
- package/src/client/components/common/Modal.tsx +0 -93
- package/src/client/components/common/Tabs.tsx +0 -57
- package/src/client/components/common/ThemeToggle.tsx +0 -63
- package/src/client/components/index.ts +0 -32
- package/src/client/hooks/index.ts +0 -4
- package/src/client/hooks/useAIPrompt.ts +0 -108
- package/src/client/hooks/useCanvas.ts +0 -247
- package/src/client/hooks/useWebSocket.ts +0 -164
- package/src/client/hooks/useWorkflow.ts +0 -138
- package/src/client/main.tsx +0 -10
- package/src/client/stores/canvasStore.ts +0 -348
- package/src/client/stores/editorStore.ts +0 -133
- package/src/client/stores/executionStore.ts +0 -440
- package/src/client/stores/index.ts +0 -4
- package/src/client/stores/layoutStore.ts +0 -103
- package/src/client/stores/navigationStore.ts +0 -49
- package/src/client/stores/promptStore.ts +0 -113
- package/src/client/stores/themeStore.ts +0 -75
- package/src/client/stores/workflowStore.ts +0 -177
- package/src/client/styles/globals.css +0 -346
- package/src/client/utils/cn.ts +0 -9
- package/src/client/utils/index.ts +0 -4
- package/src/client/utils/serviceIcons.tsx +0 -97
- package/src/client/utils/stepValidation.ts +0 -155
- package/src/client/utils/workflowToGraph.ts +0 -299
- package/src/server/index.ts +0 -114
- package/src/server/routes/ai.ts +0 -91
- package/src/server/routes/execute.ts +0 -71
- package/src/server/routes/tools.ts +0 -970
- package/src/server/routes/workflows.ts +0 -106
- package/src/server/services/AIService.ts +0 -105
- package/src/server/services/FileWatcher.ts +0 -69
- package/src/server/services/WorkflowService.ts +0 -441
- package/src/server/services/agents/claude-code-provider.ts +0 -320
- package/src/server/services/agents/claude-provider.ts +0 -248
- package/src/server/services/agents/codex-provider.ts +0 -398
- package/src/server/services/agents/copilot-provider.ts +0 -311
- package/src/server/services/agents/demo-provider.ts +0 -184
- package/src/server/services/agents/index.ts +0 -31
- package/src/server/services/agents/ollama-provider.ts +0 -267
- package/src/server/services/agents/prompts.ts +0 -509
- package/src/server/services/agents/registry.ts +0 -310
- package/src/server/services/agents/types.ts +0 -146
- package/src/server/websocket/index.ts +0 -104
- package/src/shared/constants.ts +0 -180
- package/src/shared/types.ts +0 -179
- package/tailwind.config.ts +0 -73
- package/tests/e2e/app.spec.ts +0 -90
- package/tests/e2e/canvas.spec.ts +0 -128
- package/tests/e2e/workflow.spec.ts +0 -185
- package/tests/integration/api.test.ts +0 -452
- package/tests/integration/testApp.ts +0 -31
- package/tests/setup.ts +0 -72
- package/tests/unit/ForEachNode.test.tsx +0 -218
- package/tests/unit/IfElseNode.test.tsx +0 -188
- package/tests/unit/ParallelNode.test.tsx +0 -264
- package/tests/unit/SwitchNode.test.tsx +0 -252
- package/tests/unit/TransformNode.test.tsx +0 -386
- package/tests/unit/TryCatchNode.test.tsx +0 -243
- package/tests/unit/WhileNode.test.tsx +0 -226
- package/tests/unit/canvasStore.test.ts +0 -502
- package/tests/unit/codexProvider.test.ts +0 -399
- package/tests/unit/components.test.tsx +0 -151
- package/tests/unit/executionStore.test.ts +0 -527
- package/tests/unit/layoutStore.test.ts +0 -194
- package/tests/unit/navigationStore.test.ts +0 -152
- package/tests/unit/serviceIcons.test.ts +0 -197
- package/tests/unit/stepValidation.test.ts +0 -226
- package/tests/unit/themeStore.test.ts +0 -141
- package/tests/unit/workflowToGraph.test.ts +0 -289
- package/tsconfig.json +0 -29
- package/tsconfig.server.json +0 -28
- package/vite.config.ts +0 -31
- package/vitest.config.ts +0 -26
- /package/dist/server/{server/routes → routes}/tools.js +0 -0
- /package/dist/server/{server/routes → routes}/tools.js.map +0 -0
- /package/dist/server/{server/services → services}/FileWatcher.js +0 -0
- /package/dist/server/{server/services → services}/FileWatcher.js.map +0 -0
- /package/dist/server/{server/services → services}/agents/claude-code-provider.js +0 -0
- /package/dist/server/{server/services → services}/agents/claude-code-provider.js.map +0 -0
- /package/dist/server/{server/services → services}/agents/claude-provider.js +0 -0
- /package/dist/server/{server/services → services}/agents/claude-provider.js.map +0 -0
- /package/dist/server/{server/services → services}/agents/codex-provider.js +0 -0
- /package/dist/server/{server/services → services}/agents/codex-provider.js.map +0 -0
- /package/dist/server/{server/services → services}/agents/demo-provider.js +0 -0
- /package/dist/server/{server/services → services}/agents/demo-provider.js.map +0 -0
- /package/dist/server/{server/services → services}/agents/index.js +0 -0
- /package/dist/server/{server/services → services}/agents/index.js.map +0 -0
- /package/dist/server/{server/services → services}/agents/ollama-provider.js +0 -0
- /package/dist/server/{server/services → services}/agents/ollama-provider.js.map +0 -0
- /package/dist/server/{server/services → services}/agents/prompts.js +0 -0
- /package/dist/server/{server/services → services}/agents/prompts.js.map +0 -0
- /package/dist/server/{server/services → services}/agents/registry.js +0 -0
- /package/dist/server/{server/services → services}/agents/registry.js.map +0 -0
- /package/dist/server/{server/services → services}/agents/types.js +0 -0
- /package/dist/server/{server/services → services}/agents/types.js.map +0 -0
- /package/dist/{server/shared → shared}/types.js +0 -0
- /package/dist/{server/shared → shared}/types.js.map +0 -0
|
@@ -1,7 +1,25 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
|
+
import multer from 'multer';
|
|
2
3
|
import { WorkflowService } from '../services/WorkflowService.js';
|
|
3
4
|
const router = Router();
|
|
4
5
|
const workflowService = new WorkflowService();
|
|
6
|
+
// Configure multer for file uploads (in-memory storage)
|
|
7
|
+
const upload = multer({
|
|
8
|
+
storage: multer.memoryStorage(),
|
|
9
|
+
limits: {
|
|
10
|
+
fileSize: 10 * 1024 * 1024, // 10MB max file size
|
|
11
|
+
},
|
|
12
|
+
fileFilter: (_req, file, cb) => {
|
|
13
|
+
const allowedExtensions = ['.md', '.yaml', '.yml', '.zip'];
|
|
14
|
+
const ext = file.originalname.toLowerCase().slice(file.originalname.lastIndexOf('.'));
|
|
15
|
+
if (allowedExtensions.includes(ext)) {
|
|
16
|
+
cb(null, true);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
cb(new Error('Invalid file type. Only .md, .yaml, .yml, and .zip files are allowed.'));
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
});
|
|
5
23
|
// List all workflows
|
|
6
24
|
router.get('/', async (_req, res) => {
|
|
7
25
|
try {
|
|
@@ -18,7 +36,8 @@ router.get('/', async (_req, res) => {
|
|
|
18
36
|
// Get a specific workflow
|
|
19
37
|
router.get('/:path(*)', async (req, res) => {
|
|
20
38
|
try {
|
|
21
|
-
|
|
39
|
+
// Express captures wildcard routes in params[0]
|
|
40
|
+
const workflowPath = decodeURIComponent(req.params[0] || '');
|
|
22
41
|
const workflow = await workflowService.getWorkflow(workflowPath);
|
|
23
42
|
if (!workflow) {
|
|
24
43
|
return res.status(404).json({ error: 'Workflow not found' });
|
|
@@ -95,5 +114,22 @@ router.get('/:path(*)/runs', async (req, res) => {
|
|
|
95
114
|
});
|
|
96
115
|
}
|
|
97
116
|
});
|
|
117
|
+
// Import workflow from file upload
|
|
118
|
+
router.post('/import', upload.single('file'), async (req, res) => {
|
|
119
|
+
try {
|
|
120
|
+
if (!req.file) {
|
|
121
|
+
return res.status(400).json({ error: 'No file uploaded' });
|
|
122
|
+
}
|
|
123
|
+
const result = await workflowService.importWorkflow(req.file.buffer, req.file.originalname);
|
|
124
|
+
res.json(result);
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
console.error('Import error:', error);
|
|
128
|
+
res.status(500).json({
|
|
129
|
+
error: 'Failed to import workflow',
|
|
130
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
});
|
|
98
134
|
export { router as workflowRoutes };
|
|
99
135
|
//# sourceMappingURL=workflows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../../src/server/routes/workflows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Service - Backwards-compatible wrapper around the Agent Registry
|
|
3
|
+
*
|
|
4
|
+
* This service provides the same interface as before but now supports
|
|
5
|
+
* multiple AI backends through the agent provider system.
|
|
6
|
+
*/
|
|
7
|
+
import { getAgentRegistry } from './agents/index.js';
|
|
8
|
+
export class AIService {
|
|
9
|
+
registry;
|
|
10
|
+
initialized = false;
|
|
11
|
+
constructor() {
|
|
12
|
+
this.registry = getAgentRegistry();
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Initialize the service with auto-detection of available providers
|
|
16
|
+
*/
|
|
17
|
+
async initialize() {
|
|
18
|
+
if (!this.initialized) {
|
|
19
|
+
await this.registry.autoDetectProvider();
|
|
20
|
+
this.initialized = true;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Process a prompt to modify a workflow
|
|
25
|
+
*/
|
|
26
|
+
async processPrompt(prompt, workflow) {
|
|
27
|
+
await this.initialize();
|
|
28
|
+
return this.registry.processPrompt(prompt, workflow);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Stream a prompt response (if supported by the active provider)
|
|
32
|
+
*/
|
|
33
|
+
async streamPrompt(prompt, workflow, onChunk) {
|
|
34
|
+
await this.initialize();
|
|
35
|
+
return this.registry.streamPrompt(prompt, workflow, onChunk);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get prompt history
|
|
39
|
+
*/
|
|
40
|
+
async getHistory() {
|
|
41
|
+
return this.registry.getHistory(20);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get suggestions for the current workflow
|
|
45
|
+
*/
|
|
46
|
+
async getSuggestions(workflow, selectedStepId) {
|
|
47
|
+
await this.initialize();
|
|
48
|
+
return this.registry.getSuggestions(workflow, selectedStepId);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get the current provider status
|
|
52
|
+
*/
|
|
53
|
+
async getStatus() {
|
|
54
|
+
// Initialize providers if not already done
|
|
55
|
+
await this.initialize();
|
|
56
|
+
const registryStatus = this.registry.getStatus();
|
|
57
|
+
return {
|
|
58
|
+
activeProvider: registryStatus.activeProvider,
|
|
59
|
+
providers: registryStatus.providers.map((provider) => {
|
|
60
|
+
// Determine status based on ready state and error
|
|
61
|
+
let status;
|
|
62
|
+
if (provider.ready) {
|
|
63
|
+
status = 'ready';
|
|
64
|
+
}
|
|
65
|
+
else if (provider.error) {
|
|
66
|
+
status = 'unavailable';
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
status = 'needs_config';
|
|
70
|
+
}
|
|
71
|
+
// Per-provider metadata
|
|
72
|
+
let configOptions;
|
|
73
|
+
let authType;
|
|
74
|
+
let authInstructions;
|
|
75
|
+
let availableModels;
|
|
76
|
+
// Get available models from provider capabilities
|
|
77
|
+
const providerInstance = this.registry.getProvider(provider.id);
|
|
78
|
+
if (providerInstance?.capabilities?.models?.length) {
|
|
79
|
+
availableModels = providerInstance.capabilities.models;
|
|
80
|
+
}
|
|
81
|
+
switch (provider.id) {
|
|
82
|
+
case 'claude-code':
|
|
83
|
+
authType = 'sdk';
|
|
84
|
+
authInstructions = 'Authenticate using the Claude CLI: run "claude login" in your terminal.';
|
|
85
|
+
break;
|
|
86
|
+
case 'copilot':
|
|
87
|
+
authType = 'sdk';
|
|
88
|
+
authInstructions = 'Authenticate using the Copilot CLI: run "copilot auth login" in your terminal.';
|
|
89
|
+
break;
|
|
90
|
+
case 'codex':
|
|
91
|
+
authType = 'sdk';
|
|
92
|
+
authInstructions = 'Set the OPENAI_API_KEY environment variable, then restart the GUI server.';
|
|
93
|
+
// Only show config options when Codex is NOT already ready
|
|
94
|
+
if (!provider.ready) {
|
|
95
|
+
configOptions = { apiKey: true, model: true };
|
|
96
|
+
}
|
|
97
|
+
break;
|
|
98
|
+
case 'claude':
|
|
99
|
+
authType = 'api_key';
|
|
100
|
+
configOptions = { apiKey: true, model: true };
|
|
101
|
+
break;
|
|
102
|
+
case 'ollama':
|
|
103
|
+
authType = 'local';
|
|
104
|
+
authInstructions = 'Start Ollama locally: run "ollama serve" in your terminal.';
|
|
105
|
+
configOptions = { baseUrl: true, model: true };
|
|
106
|
+
break;
|
|
107
|
+
case 'demo':
|
|
108
|
+
authType = 'demo';
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
// Build description
|
|
112
|
+
let description;
|
|
113
|
+
if (provider.model) {
|
|
114
|
+
description = `Model: ${provider.model}`;
|
|
115
|
+
}
|
|
116
|
+
else if (authType === 'sdk') {
|
|
117
|
+
description = 'SDK-based authentication';
|
|
118
|
+
}
|
|
119
|
+
else if (authType === 'local') {
|
|
120
|
+
description = 'Local inference';
|
|
121
|
+
}
|
|
122
|
+
else if (authType === 'demo') {
|
|
123
|
+
description = 'Simulated responses for testing';
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
id: provider.id,
|
|
127
|
+
name: provider.name,
|
|
128
|
+
status,
|
|
129
|
+
isActive: provider.id === registryStatus.activeProvider,
|
|
130
|
+
description,
|
|
131
|
+
configOptions,
|
|
132
|
+
authType,
|
|
133
|
+
authInstructions,
|
|
134
|
+
availableModels,
|
|
135
|
+
};
|
|
136
|
+
}),
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Switch to a different provider
|
|
141
|
+
*/
|
|
142
|
+
async setProvider(providerId, config) {
|
|
143
|
+
return this.registry.setActiveProvider(providerId, config);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Get the registry for direct access to providers
|
|
147
|
+
*/
|
|
148
|
+
getRegistry() {
|
|
149
|
+
return this.registry;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=AIService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIService.js","sourceRoot":"","sources":["../../../../src/server/services/AIService.ts"],"names":[],"mappings":"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"}
|