@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
- {/* Advanced toggle */}
113
- <div className="flex items-center gap-3">
114
- {!showAdvanced ? (
115
- <button onClick={() => setShowAdvanced(true)}
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-[15px] top-6 bottom-16 w-px bg-border" />
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-9">
129
+ <div key={step.id} className="relative pl-11">
140
130
  {/* Timeline node */}
141
- <div className="absolute left-[9px] top-3 w-[13px] h-[13px] rounded-full border-2 border-border bg-background z-10 flex items-center justify-center">
142
- <span className="text-[7px] font-bold text-muted-foreground/60">{i + 1}</span>
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-9">
158
- <div className="absolute left-[9px] top-2.5 w-[13px] h-[13px] rounded-full border-2 border-dashed border-border bg-background z-10 flex items-center justify-center">
159
- <Plus size={7} className="text-muted-foreground/40" />
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-[9px] font-bold text-muted-foreground/40">{index + 1}</span>
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 || 'Select agent'}
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-muted-foreground'}`}>
107
- (none use default)
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geminilight/mindos",
3
- "version": "0.6.31",
3
+ "version": "0.6.32",
4
4
  "description": "MindOS — Human-Agent Collaborative Mind System. Local-first knowledge base that syncs your mind to all AI Agents via MCP.",
5
5
  "keywords": [
6
6
  "mindos",