@geminilight/mindos 0.6.31 → 0.6.32
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.
|
@@ -18,7 +18,6 @@ export default function WorkflowEditor({ workflow, filePath, onChange, onSaved }
|
|
|
18
18
|
const [saving, setSaving] = useState(false);
|
|
19
19
|
const [saveError, setSaveError] = useState('');
|
|
20
20
|
const [saveSuccess, setSaveSuccess] = useState(false);
|
|
21
|
-
const [showAdvanced, setShowAdvanced] = useState(!!(workflow.workDir));
|
|
22
21
|
|
|
23
22
|
useEffect(() => {
|
|
24
23
|
if (!saveSuccess) return;
|
|
@@ -109,19 +108,10 @@ export default function WorkflowEditor({ workflow, filePath, onChange, onSaved }
|
|
|
109
108
|
className="w-full text-sm bg-transparent text-muted-foreground placeholder:text-muted-foreground/30 focus:outline-none border-none p-0"
|
|
110
109
|
/>
|
|
111
110
|
|
|
112
|
-
{/*
|
|
113
|
-
<div className="flex items-center gap-
|
|
114
|
-
{
|
|
115
|
-
|
|
116
|
-
className="text-2xs text-muted-foreground/50 hover:text-muted-foreground transition-colors">
|
|
117
|
-
+ Working directory
|
|
118
|
-
</button>
|
|
119
|
-
) : (
|
|
120
|
-
<div className="flex items-center gap-2 flex-1">
|
|
121
|
-
<FolderOpen size={12} className="text-muted-foreground/40 shrink-0" />
|
|
122
|
-
<DirPicker value={workflow.workDir || ''} onChange={v => updateMeta({ workDir: v || undefined })} />
|
|
123
|
-
</div>
|
|
124
|
-
)}
|
|
111
|
+
{/* Working directory — always visible */}
|
|
112
|
+
<div className="flex items-center gap-2">
|
|
113
|
+
<FolderOpen size={12} className="text-muted-foreground/40 shrink-0" />
|
|
114
|
+
<DirPicker value={workflow.workDir || ''} onChange={v => updateMeta({ workDir: v || undefined })} />
|
|
125
115
|
</div>
|
|
126
116
|
</div>
|
|
127
117
|
|
|
@@ -130,16 +120,16 @@ export default function WorkflowEditor({ workflow, filePath, onChange, onSaved }
|
|
|
130
120
|
<div className="relative">
|
|
131
121
|
{/* Vertical timeline line */}
|
|
132
122
|
{workflow.steps.length > 1 && (
|
|
133
|
-
<div className="absolute left-[
|
|
123
|
+
<div className="absolute left-[19px] top-6 bottom-16 w-px bg-border" />
|
|
134
124
|
)}
|
|
135
125
|
|
|
136
126
|
{/* Step list */}
|
|
137
127
|
<div className="flex flex-col gap-3 mb-5 relative">
|
|
138
128
|
{workflow.steps.map((step, i) => (
|
|
139
|
-
<div key={step.id} className="relative pl-
|
|
129
|
+
<div key={step.id} className="relative pl-11">
|
|
140
130
|
{/* Timeline node */}
|
|
141
|
-
<div className="absolute left-[
|
|
142
|
-
<span className="text-[
|
|
131
|
+
<div className="absolute left-[7px] top-3 w-[22px] h-[22px] rounded-full border-2 border-border bg-background z-10 flex items-center justify-center">
|
|
132
|
+
<span className="text-[10px] font-bold text-muted-foreground/60">{i + 1}</span>
|
|
143
133
|
</div>
|
|
144
134
|
<StepEditor
|
|
145
135
|
step={step}
|
|
@@ -154,9 +144,9 @@ export default function WorkflowEditor({ workflow, filePath, onChange, onSaved }
|
|
|
154
144
|
</div>
|
|
155
145
|
|
|
156
146
|
{/* Add step — at the end of timeline */}
|
|
157
|
-
<div className="relative pl-
|
|
158
|
-
<div className="absolute left-[
|
|
159
|
-
<Plus size={
|
|
147
|
+
<div className="relative pl-11">
|
|
148
|
+
<div className="absolute left-[7px] top-2.5 w-[22px] h-[22px] rounded-full border-2 border-dashed border-border bg-background z-10 flex items-center justify-center">
|
|
149
|
+
<Plus size={9} className="text-muted-foreground/40" />
|
|
160
150
|
</div>
|
|
161
151
|
<button onClick={addStep}
|
|
162
152
|
className="w-full text-left px-3 py-2 rounded-lg text-xs text-muted-foreground/60 hover:text-muted-foreground hover:bg-muted/40 transition-colors">
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { useState, useRef, useCallback, useEffect } from 'react';
|
|
4
|
-
import { Play, SkipForward, RotateCcw, CheckCircle2, Circle, Loader2, AlertCircle, ChevronDown, Sparkles, XCircle, Clock, ArrowRight } from 'lucide-react';
|
|
4
|
+
import { Play, SkipForward, RotateCcw, CheckCircle2, Circle, Loader2, AlertCircle, ChevronDown, Sparkles, XCircle, Clock, ArrowRight, FolderOpen } from 'lucide-react';
|
|
5
5
|
import { runStepWithAI, clearSkillCache } from './execution';
|
|
6
6
|
import type { WorkflowYaml, WorkflowStepRuntime, StepStatus } from './types';
|
|
7
7
|
|
|
@@ -44,7 +44,7 @@ function TimelineNode({ status, index }: { status: StepStatus; index: number })
|
|
|
44
44
|
// pending
|
|
45
45
|
return (
|
|
46
46
|
<div className={`${base} border-2 border-border bg-background`}>
|
|
47
|
-
<span className="text-[
|
|
47
|
+
<span className="text-[11px] font-bold text-muted-foreground/50">{index + 1}</span>
|
|
48
48
|
</div>
|
|
49
49
|
);
|
|
50
50
|
}
|
|
@@ -205,6 +205,19 @@ export default function WorkflowRunner({ workflow, filePath }: { workflow: Workf
|
|
|
205
205
|
|
|
206
206
|
return (
|
|
207
207
|
<div>
|
|
208
|
+
{/* Working directory + description */}
|
|
209
|
+
{(workflow.workDir || workflow.description) && (
|
|
210
|
+
<div className="flex items-center gap-3 mb-4 text-xs text-muted-foreground flex-wrap">
|
|
211
|
+
{workflow.workDir && (
|
|
212
|
+
<span className="flex items-center gap-1.5 font-mono text-2xs bg-muted/50 px-2 py-0.5 rounded">
|
|
213
|
+
<FolderOpen size={10} className="shrink-0" />
|
|
214
|
+
{workflow.workDir}
|
|
215
|
+
</span>
|
|
216
|
+
)}
|
|
217
|
+
{workflow.description && <span className="leading-relaxed">{workflow.description}</span>}
|
|
218
|
+
</div>
|
|
219
|
+
)}
|
|
220
|
+
|
|
208
221
|
{/* Progress bar — full width, thin, elegant */}
|
|
209
222
|
<div className="mb-6">
|
|
210
223
|
<div className="flex items-center justify-between mb-2">
|
|
@@ -85,7 +85,7 @@ export function AgentSelector({ value, onChange }: { value?: string; onChange: (
|
|
|
85
85
|
<button type="button" onClick={() => setOpen(v => !v)}
|
|
86
86
|
className="w-full flex items-center justify-between px-2.5 py-1.5 text-xs rounded-md border border-border bg-background text-foreground hover:bg-muted transition-colors">
|
|
87
87
|
<span className={value ? 'text-foreground truncate' : 'text-muted-foreground'}>
|
|
88
|
-
{displayName || '
|
|
88
|
+
{displayName || 'MindOS'}
|
|
89
89
|
</span>
|
|
90
90
|
<ChevronDown size={12} className="text-muted-foreground shrink-0" />
|
|
91
91
|
</button>
|
|
@@ -103,8 +103,8 @@ export function AgentSelector({ value, onChange }: { value?: string; onChange: (
|
|
|
103
103
|
</div>
|
|
104
104
|
|
|
105
105
|
<button onClick={() => select(undefined)}
|
|
106
|
-
className={`w-full text-left px-3 py-1.5 text-xs hover:bg-muted transition-colors ${!value ? 'text-[var(--amber)] font-medium' : 'text-
|
|
107
|
-
|
|
106
|
+
className={`w-full text-left px-3 py-1.5 text-xs hover:bg-muted transition-colors ${!value ? 'text-[var(--amber)] font-medium' : 'text-foreground'}`}>
|
|
107
|
+
MindOS <span className="text-muted-foreground/50 ml-1">(default)</span>
|
|
108
108
|
</button>
|
|
109
109
|
{filtered.slice(0, 30).map(a => (
|
|
110
110
|
<button key={a.id} onClick={() => select(a.id)}
|
package/package.json
CHANGED