@jakkrichm/create-nexus-devflow 2.9.0 → 2.9.3
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/dist/bin/create-nexus-devflow.d.ts +6 -2
- package/dist/bin/create-nexus-devflow.js +120 -17
- package/dist/bin/create-nexus-devflow.js.map +1 -1
- package/dist/lib/dashboard-page.d.ts +1 -1
- package/dist/lib/dashboard-page.js +76 -0
- package/dist/lib/dashboard-page.js.map +1 -1
- package/dist/lib/project-config.d.ts +1 -1
- package/dist/lib/project-config.js +4 -1
- package/dist/lib/project-config.js.map +1 -1
- package/dist/lib/run-state.d.ts +39 -0
- package/dist/lib/run-state.js +203 -0
- package/dist/lib/run-state.js.map +1 -0
- package/dist/lib/skill-manager.d.ts +24 -1
- package/dist/lib/skill-manager.js +206 -68
- package/dist/lib/skill-manager.js.map +1 -1
- package/dist/lib/status.d.ts +4 -1
- package/dist/lib/status.js +49 -3
- package/dist/lib/status.js.map +1 -1
- package/dist/lib/webview-studio.js +169 -47
- package/dist/lib/webview-studio.js.map +1 -1
- package/package.json +1 -1
- package/template/.agents/skills/adopt/SKILL.md +4 -0
- package/template/.agents/skills/audit/SKILL.md +4 -0
- package/template/.agents/skills/autopilot/SKILL.md +4 -0
- package/template/.agents/skills/check/SKILL.md +4 -0
- package/template/.agents/skills/ci/SKILL.md +4 -0
- package/template/.agents/skills/complete/SKILL.md +7 -1
- package/template/.agents/skills/continuous/SKILL.md +4 -0
- package/template/.agents/skills/debug/SKILL.md +4 -0
- package/template/.agents/skills/discovery/SKILL.md +8 -4
- package/template/.agents/skills/feature/SKILL.md +4 -0
- package/template/.agents/skills/fix/SKILL.md +4 -0
- package/template/.agents/skills/implement/SKILL.md +4 -0
- package/template/.agents/skills/onboard/SKILL.md +4 -0
- package/template/.agents/skills/overview/SKILL.md +4 -0
- package/template/.agents/skills/prototype/SKILL.md +4 -0
- package/template/.agents/skills/release/SKILL.md +4 -0
- package/template/.agents/skills/rollback/SKILL.md +18 -5
- package/template/.agents/skills/status/SKILL.md +7 -0
- package/template/.agents/skills/tests/SKILL.md +4 -0
- package/template/.claude/skills/adopt/SKILL.md +4 -0
- package/template/.claude/skills/audit/SKILL.md +4 -0
- package/template/.claude/skills/autopilot/SKILL.md +4 -0
- package/template/.claude/skills/check/SKILL.md +4 -0
- package/template/.claude/skills/ci/SKILL.md +4 -0
- package/template/.claude/skills/complete/SKILL.md +7 -1
- package/template/.claude/skills/continuous/SKILL.md +4 -0
- package/template/.claude/skills/debug/SKILL.md +4 -0
- package/template/.claude/skills/discovery/SKILL.md +8 -4
- package/template/.claude/skills/feature/SKILL.md +4 -0
- package/template/.claude/skills/fix/SKILL.md +4 -0
- package/template/.claude/skills/implement/SKILL.md +4 -0
- package/template/.claude/skills/onboard/SKILL.md +4 -0
- package/template/.claude/skills/overview/SKILL.md +4 -0
- package/template/.claude/skills/prototype/SKILL.md +4 -0
- package/template/.claude/skills/release/SKILL.md +4 -0
- package/template/.claude/skills/rollback/SKILL.md +18 -5
- package/template/.claude/skills/status/SKILL.md +7 -0
- package/template/.claude/skills/tests/SKILL.md +4 -0
- package/template/AGENTS.md +24 -5
- package/template/devflow/build-plan.md +16 -0
- package/template/devflow/context/ai-interaction.md +4 -4
|
@@ -62,9 +62,83 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
62
62
|
`;
|
|
63
63
|
}).join("")
|
|
64
64
|
: `<div class="empty-state">No archived history records yet.</div>`;
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
const activeRuns = status.activeRuns || [];
|
|
66
|
+
let presentHtml = "";
|
|
67
|
+
let totalActiveTasks = 0;
|
|
68
|
+
let totalActiveCompleted = 0;
|
|
69
|
+
if (activeRuns.length > 0) {
|
|
70
|
+
totalActiveTasks = activeRuns.reduce((acc, r) => acc + r.totalTasks, 0);
|
|
71
|
+
totalActiveCompleted = activeRuns.reduce((acc, r) => acc + r.completedTasks, 0);
|
|
72
|
+
presentHtml = activeRuns.map((run) => {
|
|
73
|
+
const pct = run.totalTasks > 0 ? Math.round((run.completedTasks / run.totalTasks) * 100) : 0;
|
|
74
|
+
const stageBadgeClass = (run.status || "").includes("check") ? "badge-stage stage-check" : "badge-stage";
|
|
75
|
+
const findingTag = run.hasOpenFindings
|
|
76
|
+
? `<span class="tag tag-finding-warn">⚠ Open Findings</span>`
|
|
77
|
+
: `<span class="tag tag-finding-clean">✔ Clean</span>`;
|
|
78
|
+
return `
|
|
79
|
+
<div class="card-item active-item">
|
|
80
|
+
<div class="item-header">
|
|
81
|
+
<span class="badge-id">${escapeHtml(run.runId)}</span>
|
|
82
|
+
<span class="${stageBadgeClass}">${escapeHtml(run.status || "active")}</span>
|
|
83
|
+
</div>
|
|
84
|
+
<div class="item-title">${escapeHtml(run.title || "Living Spec")}</div>
|
|
85
|
+
<div class="progress-bar-container">
|
|
86
|
+
<div class="progress-bar-fill" style="width: ${pct}%;"></div>
|
|
87
|
+
</div>
|
|
88
|
+
<div class="item-meta">
|
|
89
|
+
<span>🌿 <code>${escapeHtml(run.branch || "main")}</code></span>
|
|
90
|
+
${findingTag}
|
|
91
|
+
</div>
|
|
92
|
+
<div class="item-tags">
|
|
93
|
+
<span>Progress: <strong>${pct}%</strong> (${run.completedTasks}/${run.totalTasks})</span>
|
|
94
|
+
<span>Remaining: ${run.remainingTasks}</span>
|
|
95
|
+
</div>
|
|
96
|
+
<div class="card-actions">
|
|
97
|
+
<button class="btn-card-action" onclick="dispatchCommand('/implement ${escapeHtml(run.runId)}')">▶ /implement ${escapeHtml(run.runId)}</button>
|
|
98
|
+
<button class="btn-card-action" onclick="dispatchCommand('/check ${escapeHtml(run.runId)}')">🧪 /check ${escapeHtml(run.runId)}</button>
|
|
99
|
+
<button class="btn-card-action" onclick="dispatchCommand('/complete ${escapeHtml(run.runId)}')">📦 /complete ${escapeHtml(run.runId)}</button>
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
`;
|
|
103
|
+
}).join("");
|
|
104
|
+
}
|
|
105
|
+
else if (currentWork.state === "active") {
|
|
106
|
+
totalActiveTasks = currentWork.total;
|
|
107
|
+
totalActiveCompleted = currentWork.completed;
|
|
108
|
+
const progressPercent = totalActiveTasks > 0 ? Math.round((totalActiveCompleted / totalActiveTasks) * 100) : 0;
|
|
109
|
+
const runId = currentWork.runId || "ACTIVE";
|
|
110
|
+
presentHtml = `
|
|
111
|
+
<div class="card-item active-item">
|
|
112
|
+
<div class="item-header">
|
|
113
|
+
<span class="badge-id">${escapeHtml(runId)}</span>
|
|
114
|
+
<span class="badge-stage">${escapeHtml(currentWork.status || "active")}</span>
|
|
115
|
+
</div>
|
|
116
|
+
<div class="item-title">${escapeHtml(currentWork.title || "Active Spec")}</div>
|
|
117
|
+
<div class="progress-bar-container">
|
|
118
|
+
<div class="progress-bar-fill" style="width: ${progressPercent}%;"></div>
|
|
119
|
+
</div>
|
|
120
|
+
<div class="item-meta">
|
|
121
|
+
<span>Progress: <strong>${progressPercent}%</strong> (${currentWork.completed}/${currentWork.total})</span>
|
|
122
|
+
<span>Remaining: ${currentWork.remaining}</span>
|
|
123
|
+
</div>
|
|
124
|
+
<div class="card-actions">
|
|
125
|
+
<button class="btn-card-action" onclick="dispatchCommand('/implement ${escapeHtml(runId)}')">▶ /implement ${escapeHtml(runId)}</button>
|
|
126
|
+
<button class="btn-card-action" onclick="dispatchCommand('/check ${escapeHtml(runId)}')">🧪 /check ${escapeHtml(runId)}</button>
|
|
127
|
+
<button class="btn-card-action" onclick="dispatchCommand('/complete ${escapeHtml(runId)}')">📦 /complete ${escapeHtml(runId)}</button>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
`;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
presentHtml = `
|
|
134
|
+
<div class="empty-state">
|
|
135
|
+
Idle workspace.<br>Run <code>/feature</code> or <code>/fix</code> to start a run.
|
|
136
|
+
</div>
|
|
137
|
+
`;
|
|
138
|
+
}
|
|
139
|
+
const presentCountLabel = activeRuns.length > 0
|
|
140
|
+
? `${activeRuns.length} Active Runs · ${totalActiveCompleted}/${totalActiveTasks} Tasks`
|
|
141
|
+
: `${totalActiveCompleted}/${totalActiveTasks} Tasks`;
|
|
68
142
|
return `<!DOCTYPE html>
|
|
69
143
|
<html lang="th" data-theme="${options.theme || "auto"}">
|
|
70
144
|
<head>
|
|
@@ -73,11 +147,11 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
73
147
|
<title>Nexus-DevFlow Studio: ${escapeHtml(projectName)}</title>
|
|
74
148
|
<style>
|
|
75
149
|
:root {
|
|
76
|
-
--bg: var(--vscode-editor-background, #
|
|
77
|
-
--bg-panel: var(--vscode-sideBar-background, rgba(
|
|
78
|
-
--bg-card: rgba(30, 41, 59, 0.
|
|
150
|
+
--bg: var(--vscode-editor-background, #070d18);
|
|
151
|
+
--bg-panel: var(--vscode-sideBar-background, rgba(15, 23, 42, 0.75));
|
|
152
|
+
--bg-card: rgba(30, 41, 59, 0.65);
|
|
79
153
|
--border: var(--vscode-panel-border, rgba(255, 255, 255, 0.08));
|
|
80
|
-
--border-accent: rgba(56, 189, 248, 0.
|
|
154
|
+
--border-accent: rgba(56, 189, 248, 0.35);
|
|
81
155
|
--fg: var(--vscode-editor-foreground, #f8fafc);
|
|
82
156
|
--fg-muted: var(--vscode-descriptionForeground, #94a3b8);
|
|
83
157
|
--accent: #38bdf8;
|
|
@@ -85,8 +159,9 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
85
159
|
--green: #4ade80;
|
|
86
160
|
--yellow: #facc15;
|
|
87
161
|
--red: #f87171;
|
|
88
|
-
--
|
|
89
|
-
--font-
|
|
162
|
+
--violet: #a78bfa;
|
|
163
|
+
--font-mono: var(--vscode-editor-font-family, 'IBM Plex Mono', 'Fira Code', Consolas, monospace);
|
|
164
|
+
--font-sans: var(--vscode-font-family, 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);
|
|
90
165
|
}
|
|
91
166
|
|
|
92
167
|
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
@@ -101,7 +176,7 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
101
176
|
}
|
|
102
177
|
|
|
103
178
|
.studio-container {
|
|
104
|
-
max-width:
|
|
179
|
+
max-width: 1280px;
|
|
105
180
|
margin: 0 auto;
|
|
106
181
|
display: flex;
|
|
107
182
|
flex-direction: column;
|
|
@@ -125,9 +200,10 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
125
200
|
display: flex;
|
|
126
201
|
align-items: center;
|
|
127
202
|
gap: 12px;
|
|
203
|
+
flex-wrap: wrap;
|
|
128
204
|
}
|
|
129
205
|
.project-badge {
|
|
130
|
-
font-weight:
|
|
206
|
+
font-weight: 800;
|
|
131
207
|
font-size: 16px;
|
|
132
208
|
background: var(--accent-gradient);
|
|
133
209
|
-webkit-background-clip: text;
|
|
@@ -136,13 +212,23 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
136
212
|
}
|
|
137
213
|
.branch-pill {
|
|
138
214
|
font-family: var(--font-mono);
|
|
139
|
-
font-size:
|
|
215
|
+
font-size: 11px;
|
|
140
216
|
background: rgba(56, 189, 248, 0.12);
|
|
141
217
|
color: var(--accent);
|
|
142
218
|
padding: 3px 10px;
|
|
143
219
|
border-radius: 20px;
|
|
144
220
|
border: 1px solid var(--border-accent);
|
|
145
221
|
}
|
|
222
|
+
.multitask-pill {
|
|
223
|
+
font-family: var(--font-mono);
|
|
224
|
+
font-size: 11px;
|
|
225
|
+
background: rgba(167, 139, 250, 0.15);
|
|
226
|
+
color: var(--violet);
|
|
227
|
+
padding: 3px 10px;
|
|
228
|
+
border-radius: 20px;
|
|
229
|
+
border: 1px solid rgba(167, 139, 250, 0.3);
|
|
230
|
+
font-weight: 700;
|
|
231
|
+
}
|
|
146
232
|
.header-right {
|
|
147
233
|
display: flex;
|
|
148
234
|
align-items: center;
|
|
@@ -155,6 +241,7 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
155
241
|
padding: 4px 12px;
|
|
156
242
|
border-radius: 20px;
|
|
157
243
|
font-weight: 600;
|
|
244
|
+
font-size: 11px;
|
|
158
245
|
}
|
|
159
246
|
.badge-blocked {
|
|
160
247
|
background: rgba(248, 113, 113, 0.15);
|
|
@@ -163,6 +250,7 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
163
250
|
padding: 4px 12px;
|
|
164
251
|
border-radius: 20px;
|
|
165
252
|
font-weight: 600;
|
|
253
|
+
font-size: 11px;
|
|
166
254
|
}
|
|
167
255
|
|
|
168
256
|
/* Quick Action Dispatcher */
|
|
@@ -170,17 +258,18 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
170
258
|
background: var(--bg-panel);
|
|
171
259
|
border: 1px solid var(--border);
|
|
172
260
|
border-radius: 10px;
|
|
173
|
-
padding:
|
|
261
|
+
padding: 10px 16px;
|
|
174
262
|
display: flex;
|
|
175
263
|
align-items: center;
|
|
176
264
|
gap: 8px;
|
|
177
265
|
overflow-x: auto;
|
|
178
266
|
}
|
|
179
267
|
.action-label {
|
|
180
|
-
font-weight:
|
|
268
|
+
font-weight: 700;
|
|
181
269
|
color: var(--fg-muted);
|
|
182
|
-
font-size:
|
|
270
|
+
font-size: 10px;
|
|
183
271
|
text-transform: uppercase;
|
|
272
|
+
letter-spacing: 0.08em;
|
|
184
273
|
margin-right: 4px;
|
|
185
274
|
white-space: nowrap;
|
|
186
275
|
}
|
|
@@ -192,7 +281,7 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
192
281
|
border-radius: 6px;
|
|
193
282
|
cursor: pointer;
|
|
194
283
|
font-family: var(--font-mono);
|
|
195
|
-
font-size:
|
|
284
|
+
font-size: 11px;
|
|
196
285
|
transition: all 0.2s ease;
|
|
197
286
|
white-space: nowrap;
|
|
198
287
|
}
|
|
@@ -238,18 +327,21 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
238
327
|
gap: 6px;
|
|
239
328
|
}
|
|
240
329
|
.col-count {
|
|
241
|
-
font-size:
|
|
330
|
+
font-size: 10px;
|
|
331
|
+
font-family: var(--font-mono);
|
|
332
|
+
font-weight: 600;
|
|
242
333
|
background: var(--bg-card);
|
|
243
334
|
padding: 2px 8px;
|
|
244
335
|
border-radius: 10px;
|
|
245
336
|
color: var(--fg-muted);
|
|
337
|
+
border: 1px solid var(--border);
|
|
246
338
|
}
|
|
247
339
|
|
|
248
340
|
.col-content {
|
|
249
341
|
display: flex;
|
|
250
342
|
flex-direction: column;
|
|
251
343
|
gap: 10px;
|
|
252
|
-
max-height:
|
|
344
|
+
max-height: 520px;
|
|
253
345
|
overflow-y: auto;
|
|
254
346
|
}
|
|
255
347
|
|
|
@@ -269,13 +361,14 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
269
361
|
transform: translateY(-1px);
|
|
270
362
|
}
|
|
271
363
|
.card-item.active-item {
|
|
272
|
-
border-color: var(--accent);
|
|
273
|
-
box-shadow: 0 0 12px rgba(56, 189, 248, 0.
|
|
364
|
+
border-color: var(--border-accent);
|
|
365
|
+
box-shadow: 0 0 12px rgba(56, 189, 248, 0.12);
|
|
274
366
|
}
|
|
275
367
|
|
|
276
368
|
.item-header {
|
|
277
369
|
display: flex;
|
|
278
370
|
align-items: flex-start;
|
|
371
|
+
justify-content: space-between;
|
|
279
372
|
gap: 8px;
|
|
280
373
|
}
|
|
281
374
|
.badge-id {
|
|
@@ -292,6 +385,22 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
292
385
|
background: rgba(129, 140, 248, 0.2);
|
|
293
386
|
color: #818cf8;
|
|
294
387
|
}
|
|
388
|
+
.badge-stage {
|
|
389
|
+
font-family: var(--font-mono);
|
|
390
|
+
font-size: 9px;
|
|
391
|
+
font-weight: 700;
|
|
392
|
+
text-transform: uppercase;
|
|
393
|
+
padding: 1px 6px;
|
|
394
|
+
border-radius: 4px;
|
|
395
|
+
background: rgba(250, 204, 21, 0.15);
|
|
396
|
+
color: var(--yellow);
|
|
397
|
+
border: 1px solid rgba(250, 204, 21, 0.3);
|
|
398
|
+
}
|
|
399
|
+
.badge-stage.stage-check {
|
|
400
|
+
background: rgba(74, 222, 128, 0.15);
|
|
401
|
+
color: var(--green);
|
|
402
|
+
border-color: rgba(74, 222, 128, 0.3);
|
|
403
|
+
}
|
|
295
404
|
.item-title {
|
|
296
405
|
font-weight: 600;
|
|
297
406
|
font-size: 12px;
|
|
@@ -315,19 +424,50 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
315
424
|
.item-tags, .item-meta {
|
|
316
425
|
display: flex;
|
|
317
426
|
align-items: center;
|
|
427
|
+
justify-content: space-between;
|
|
318
428
|
gap: 6px;
|
|
319
429
|
font-size: 11px;
|
|
320
430
|
color: var(--fg-muted);
|
|
431
|
+
flex-wrap: wrap;
|
|
321
432
|
}
|
|
322
433
|
.tag {
|
|
323
434
|
font-size: 10px;
|
|
324
435
|
padding: 1px 6px;
|
|
325
436
|
border-radius: 4px;
|
|
326
437
|
background: rgba(255, 255, 255, 0.05);
|
|
438
|
+
border: 1px solid var(--border);
|
|
327
439
|
}
|
|
328
440
|
.tag-feasibility { color: var(--green); }
|
|
329
441
|
.tag-value { color: var(--accent); }
|
|
330
442
|
.tag-cat { color: var(--yellow); }
|
|
443
|
+
.tag-finding-clean { color: var(--green); }
|
|
444
|
+
.tag-finding-warn { color: var(--red); background: rgba(248, 113, 113, 0.15); border-color: rgba(248, 113, 113, 0.3); }
|
|
445
|
+
|
|
446
|
+
.card-actions {
|
|
447
|
+
display: flex;
|
|
448
|
+
align-items: center;
|
|
449
|
+
gap: 6px;
|
|
450
|
+
margin-top: 4px;
|
|
451
|
+
padding-top: 6px;
|
|
452
|
+
border-top: 1px dashed var(--border);
|
|
453
|
+
flex-wrap: wrap;
|
|
454
|
+
}
|
|
455
|
+
.btn-card-action {
|
|
456
|
+
background: rgba(255, 255, 255, 0.04);
|
|
457
|
+
border: 1px solid var(--border);
|
|
458
|
+
color: var(--fg);
|
|
459
|
+
padding: 2px 7px;
|
|
460
|
+
border-radius: 4px;
|
|
461
|
+
font-family: var(--font-mono);
|
|
462
|
+
font-size: 10px;
|
|
463
|
+
cursor: pointer;
|
|
464
|
+
transition: all 0.15s ease;
|
|
465
|
+
}
|
|
466
|
+
.btn-card-action:hover {
|
|
467
|
+
background: rgba(56, 189, 248, 0.15);
|
|
468
|
+
color: var(--accent);
|
|
469
|
+
border-color: var(--accent);
|
|
470
|
+
}
|
|
331
471
|
|
|
332
472
|
.empty-state {
|
|
333
473
|
text-align: center;
|
|
@@ -346,6 +486,8 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
346
486
|
align-items: center;
|
|
347
487
|
justify-content: space-between;
|
|
348
488
|
font-size: 12px;
|
|
489
|
+
flex-wrap: wrap;
|
|
490
|
+
gap: 8px;
|
|
349
491
|
}
|
|
350
492
|
</style>
|
|
351
493
|
</head>
|
|
@@ -357,7 +499,7 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
357
499
|
<div class="header-left">
|
|
358
500
|
<span class="project-badge">⚡ ${escapeHtml(projectName)}</span>
|
|
359
501
|
<span class="branch-pill">🌿 ${escapeHtml(branch)}</span>
|
|
360
|
-
|
|
502
|
+
${activeRuns.length > 0 ? `<span class="multitask-pill">🗂️ ${activeRuns.length} Active Workspaces</span>` : ""}
|
|
361
503
|
</div>
|
|
362
504
|
<div class="header-right">
|
|
363
505
|
<span class="${gatePillClass}">${gatePillText}</span>
|
|
@@ -367,7 +509,6 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
367
509
|
</div>
|
|
368
510
|
</header>
|
|
369
511
|
|
|
370
|
-
|
|
371
512
|
<!-- Quick Action Bar -->
|
|
372
513
|
<div class="action-bar">
|
|
373
514
|
<span class="action-label">Quick Actions:</span>
|
|
@@ -375,9 +516,9 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
375
516
|
<button class="btn-action" onclick="dispatchCommand('/implement')">/implement</button>
|
|
376
517
|
<button class="btn-action" onclick="dispatchCommand('/check')">/check</button>
|
|
377
518
|
<button class="btn-action" onclick="dispatchCommand('/complete')">/complete</button>
|
|
378
|
-
<button class="btn-action" onclick="dispatchCommand('
|
|
519
|
+
<button class="btn-action" onclick="dispatchCommand('/continuous')">/continuous</button>
|
|
520
|
+
<button class="btn-action" onclick="dispatchCommand('nexus-devflow check-gate')">check-gate</button>
|
|
379
521
|
<button class="btn-action" onclick="dispatchCommand('nexus-devflow drift')">drift</button>
|
|
380
|
-
<button class="btn-action" onclick="dispatchCommand('nexus-devflow reconcile --fix')">reconcile</button>
|
|
381
522
|
<button class="btn-action" onclick="dispatchCommand('nexus-devflow doctor')">doctor</button>
|
|
382
523
|
</div>
|
|
383
524
|
|
|
@@ -395,33 +536,14 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
395
536
|
</div>
|
|
396
537
|
</section>
|
|
397
538
|
|
|
398
|
-
|
|
399
539
|
<!-- ⚡ 2. Present (Active Living Context) -->
|
|
400
540
|
<section class="kanban-col">
|
|
401
541
|
<div class="col-header">
|
|
402
542
|
<span class="col-title">⚡ Present (Active Living Spec)</span>
|
|
403
|
-
<span class="col-count">${
|
|
543
|
+
<span class="col-count">${presentCountLabel}</span>
|
|
404
544
|
</div>
|
|
405
545
|
<div class="col-content">
|
|
406
|
-
${
|
|
407
|
-
<div class="card-item active-item">
|
|
408
|
-
<div class="item-header">
|
|
409
|
-
<span class="badge-id">${escapeHtml(currentWork.runId || "ACTIVE")}</span>
|
|
410
|
-
<span class="item-title">${escapeHtml(currentWork.title || "Active Spec")}</span>
|
|
411
|
-
</div>
|
|
412
|
-
<div class="progress-bar-container">
|
|
413
|
-
<div class="progress-bar-fill" style="width: ${progressPercent}%;"></div>
|
|
414
|
-
</div>
|
|
415
|
-
<div class="item-meta">
|
|
416
|
-
<span>Progress: ${progressPercent}%</span>
|
|
417
|
-
<span>Remaining: ${currentWork.remaining} task(s)</span>
|
|
418
|
-
</div>
|
|
419
|
-
</div>
|
|
420
|
-
` : `
|
|
421
|
-
<div class="empty-state">
|
|
422
|
-
Idle workspace.<br>Run <code>/feature</code> or <code>/fix</code> to start a run.
|
|
423
|
-
</div>
|
|
424
|
-
`}
|
|
546
|
+
${presentHtml}
|
|
425
547
|
</div>
|
|
426
548
|
</section>
|
|
427
549
|
|
|
@@ -440,8 +562,8 @@ export async function renderStudioHtml(projectRoot, options = {}) {
|
|
|
440
562
|
|
|
441
563
|
<!-- Bottom Pulse -->
|
|
442
564
|
<footer class="pulse-panel">
|
|
443
|
-
<div>Findings Blockers: <strong>${gateReport.findingsBlockers}</strong> |
|
|
444
|
-
<div>Git Drift: <strong>${driftReport.hasDrift ? "⚠ Drift Detected" : "✔ In Sync"}</strong></div>
|
|
565
|
+
<div>Findings Blockers: <strong>${gateReport.findingsBlockers}</strong> | Active Findings: <strong>${status.findings.total}</strong></div>
|
|
566
|
+
<div>Git Drift: <strong>${driftReport.hasDrift ? "⚠ Drift Detected" : "✔ In Sync"}</strong> | Workspaces: <strong>${activeRuns.length || (currentWork.state === "active" ? 1 : 0)} Active</strong></div>
|
|
445
567
|
</footer>
|
|
446
568
|
|
|
447
569
|
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webview-studio.js","sourceRoot":"","sources":["../../lib/webview-studio.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"webview-studio.js","sourceRoot":"","sources":["../../lib/webview-studio.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -5,6 +5,10 @@ description: "[devflow] Bring the blueprint into an existing (brownfield) codeba
|
|
|
5
5
|
|
|
6
6
|
# adopt - bootstrap the blueprint from an existing codebase
|
|
7
7
|
|
|
8
|
+
**First action:** Before project inspection, preflight, or any other tool call,
|
|
9
|
+
publish `running` to `devflow/.state/run.json` using the dashboard activity
|
|
10
|
+
contract in `AGENTS.md`.
|
|
11
|
+
|
|
8
12
|
Where this sits in the workflow:
|
|
9
13
|
|
|
10
14
|
existing codebase -> [adopt] -> project-plan + build-plan + coding-standards -> /overview -> normal loop
|
|
@@ -5,6 +5,10 @@ description: "[devflow] Read-only code audit for a Blueprint project, except for
|
|
|
5
5
|
|
|
6
6
|
# audit - review code quality against the project standards
|
|
7
7
|
|
|
8
|
+
**First action:** Before project inspection, preflight, or any other tool call,
|
|
9
|
+
publish `running` to `devflow/.state/run.json` using the dashboard activity
|
|
10
|
+
contract in `AGENTS.md`.
|
|
11
|
+
|
|
8
12
|
Where this sits in the workflow:
|
|
9
13
|
|
|
10
14
|
/implement or /autopilot -> [audit] -> fixes or /complete
|
|
@@ -5,6 +5,10 @@ description: "[devflow] Optional explicit Blueprint mode for one bounded spec/bu
|
|
|
5
5
|
|
|
6
6
|
# autopilot - optional Blueprint loop
|
|
7
7
|
|
|
8
|
+
**First action:** Before project inspection, preflight, or any other tool call,
|
|
9
|
+
publish `running` to `devflow/.state/run.json` using the dashboard activity
|
|
10
|
+
contract in `AGENTS.md`.
|
|
11
|
+
|
|
8
12
|
Where this sits in the workflow:
|
|
9
13
|
|
|
10
14
|
/status -> [autopilot] -> review packet -> /complete
|
|
@@ -6,6 +6,10 @@ argument-hint: "[{run-id, number, or name}]"
|
|
|
6
6
|
|
|
7
7
|
# check - Dual-Axis Independent Verification Engine
|
|
8
8
|
|
|
9
|
+
**First action:** Before project inspection, preflight, or any other tool call,
|
|
10
|
+
publish `running` to `devflow/.state/run.json` using the dashboard activity
|
|
11
|
+
contract in `AGENTS.md`.
|
|
12
|
+
|
|
9
13
|
Where this sits in the workflow:
|
|
10
14
|
|
|
11
15
|
/implement -> [check] -> /complete
|
|
@@ -5,6 +5,10 @@ description: "[devflow] Set up or normalize automatic GitHub checks for a Bluepr
|
|
|
5
5
|
|
|
6
6
|
# ci - set up automatic GitHub checks
|
|
7
7
|
|
|
8
|
+
**First action:** Before project inspection, preflight, or any other tool call,
|
|
9
|
+
publish `running` to `devflow/.state/run.json` using the dashboard activity
|
|
10
|
+
contract in `AGENTS.md`.
|
|
11
|
+
|
|
8
12
|
Where this sits in the workflow:
|
|
9
13
|
|
|
10
14
|
/onboard or /adopt -> [ci] -> Verify locally -> GitHub runs Verify
|
|
@@ -6,6 +6,10 @@ argument-hint: "[{run-id, number, or name}]"
|
|
|
6
6
|
|
|
7
7
|
# complete - log the finished work, make the work commit, and deliver
|
|
8
8
|
|
|
9
|
+
**First action:** Before project inspection, preflight, or any other tool call,
|
|
10
|
+
publish `running` to `devflow/.state/run.json` using the dashboard activity
|
|
11
|
+
contract in `AGENTS.md`.
|
|
12
|
+
|
|
9
13
|
Where this sits in the workflow:
|
|
10
14
|
|
|
11
15
|
/feature, /fix, or /rollback -> /implement -> [complete] -> next
|
|
@@ -70,7 +74,9 @@ and records the exact target feature, archive, commit, and parent.
|
|
|
70
74
|
**Archive resolved findings.** If `devflow/context/{xxx-slug}/findings.md` holds any
|
|
71
75
|
findings, append a `## Findings` section to the archive file just written with
|
|
72
76
|
every `closed`, `accepted`, or `invalid` entry at its final status (`accepted`
|
|
73
|
-
entries keep their recorded reason).
|
|
77
|
+
entries keep their recorded reason). Do not archive or remove a `fixed` finding
|
|
78
|
+
at any severity; repaired findings must remain in the ledger until an `/audit`
|
|
79
|
+
re-review closes them.
|
|
74
80
|
|
|
75
81
|
**Clean up run workspace.** Delete the task directory `devflow/context/{xxx-slug}/`. In Pure Multi-Run architecture, completed work leaves zero residual stubs in `devflow/context/`.
|
|
76
82
|
|
|
@@ -6,6 +6,10 @@ argument-hint: "[{resume, max-features, or start-feature}]"
|
|
|
6
6
|
|
|
7
7
|
# continuous - Complete the Build Plan One Local Feature at a Time
|
|
8
8
|
|
|
9
|
+
**First action:** Before project inspection, preflight, or any other tool call,
|
|
10
|
+
publish `running` to `devflow/.state/run.json` using the dashboard activity
|
|
11
|
+
contract in `AGENTS.md`.
|
|
12
|
+
|
|
9
13
|
Where this sits in the workflow:
|
|
10
14
|
|
|
11
15
|
```text
|
|
@@ -5,6 +5,10 @@ description: "[devflow] Diagnose a failing test, broken build, crash, error, reg
|
|
|
5
5
|
|
|
6
6
|
# debug - 6-Phase Scientific Debugging Protocol
|
|
7
7
|
|
|
8
|
+
**First action:** Before project inspection, preflight, or any other tool call,
|
|
9
|
+
publish `running` to `devflow/.state/run.json` using the dashboard activity
|
|
10
|
+
contract in `AGENTS.md`.
|
|
11
|
+
|
|
8
12
|
Where this sits in the workflow:
|
|
9
13
|
|
|
10
14
|
reported failure -> [debug] -> /fix or /implement
|
|
@@ -8,6 +8,10 @@ argument-hint: "[{title, request, IDEA-xxx, or discovery-id}]"
|
|
|
8
8
|
|
|
9
9
|
$ARGUMENTS
|
|
10
10
|
|
|
11
|
+
**First action:** Before project inspection, preflight, or any other tool call,
|
|
12
|
+
publish `running` to `devflow/.state/run.json` using the dashboard activity
|
|
13
|
+
contract in `AGENTS.md`.
|
|
14
|
+
|
|
11
15
|
`/discovery` is the central discovery entry point in Nexus-DevFlow. It operates in two adaptive modes based on input scope:
|
|
12
16
|
1. **🗺️ Macro Project Discovery**: Develops high-level product and build roadmap plans (`devflow/project-plan.md` & `devflow/build-plan.md`) through an adaptive conversation before `/overview`.
|
|
13
17
|
2. **🔍 Micro Feature Exploration (Pre-Flight)**: Explores a specific feature, request, or idea before committing to delivery, routes through supporting lenses, and finishes with a visible `Proceed`, `Defer`, or `Reject` decision before `/feature` or `/fix`.
|
|
@@ -72,10 +76,10 @@ devflow/discoveries/{DISCOVERY_ID}-{slug}/discovery.md
|
|
|
72
76
|
5. **Socratic Grilling & Domain Alignment Lens (`grill`)**:
|
|
73
77
|
- Codebase-grounded interactive inquiry to clarify entity boundaries, data flows, and edge cases.
|
|
74
78
|
- Record agreed terminology in `devflow/context/glossary.md` and major architecture decisions in `devflow/decisions/ADR-xxx-{slug}.md`.
|
|
75
|
-
6. **🎨 Visual Architecture & Diagram Design Lens (`diagram-design`)**:
|
|
76
|
-
- When exploring system topologies, legacy IT modernizations, sequence flows, data platform pipelines, or user journeys, check
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
+
6. **🎨 Visual Architecture & Diagram Design Lens (`archify` / `diagram-design`)**:
|
|
80
|
+
- When exploring system topologies, legacy IT modernizations, sequence flows, data platform pipelines, state machines, or user journeys, check for `archify` or `diagram-design` in `.agents/skills/`.
|
|
81
|
+
- **For interactive system architecture, dataflows, state transitions, and sequence traces**: Use `archify` (`.agents/skills/archify/SKILL.md`) to compile validated interactive HTML artifacts with dark/light themes, motion, and route probes.
|
|
82
|
+
- **For editorial, business, quadrant, or broad diagram types**: Use `diagram-design` (`.agents/skills/diagram-design/SKILL.md`).
|
|
79
83
|
- Save diagram artifacts to `devflow/discoveries/{DISCOVERY_ID}-{slug}/diagrams/{name}.html` and reference them directly in `discovery.md`.
|
|
80
84
|
|
|
81
85
|
### Decision & Approval Gate:
|
|
@@ -6,6 +6,10 @@ argument-hint: "[{number, name, DISC-id, or IDEA-id}]"
|
|
|
6
6
|
|
|
7
7
|
# feature - turn a build-plan feature into a buildable spec
|
|
8
8
|
|
|
9
|
+
**First action:** Before project inspection, preflight, or any other tool call,
|
|
10
|
+
publish `running` to `devflow/.state/run.json` using the dashboard activity
|
|
11
|
+
contract in `AGENTS.md`.
|
|
12
|
+
|
|
9
13
|
Where this sits in the workflow:
|
|
10
14
|
|
|
11
15
|
project-overview.md + build-plan.md -> [this skill] -> build
|
|
@@ -6,6 +6,10 @@ argument-hint: "[{title or issue-description}]"
|
|
|
6
6
|
|
|
7
7
|
# fix - document an ad-hoc fix, then build it like anything else
|
|
8
8
|
|
|
9
|
+
**First action:** Before project inspection, preflight, or any other tool call,
|
|
10
|
+
publish `running` to `devflow/.state/run.json` using the dashboard activity
|
|
11
|
+
contract in `AGENTS.md`.
|
|
12
|
+
|
|
9
13
|
Where this sits in the workflow:
|
|
10
14
|
|
|
11
15
|
/fix -> /implement -> /complete -> back to your features
|
|
@@ -6,6 +6,10 @@ argument-hint: "[{run-id, number, or name}]"
|
|
|
6
6
|
|
|
7
7
|
# implement - build the target spec, one reviewed step at a time
|
|
8
8
|
|
|
9
|
+
**First action:** Before project inspection, preflight, or any other tool call,
|
|
10
|
+
publish `running` to `devflow/.state/run.json` using the dashboard activity
|
|
11
|
+
contract in `AGENTS.md`.
|
|
12
|
+
|
|
9
13
|
Where this sits in the workflow:
|
|
10
14
|
|
|
11
15
|
/feature, /fix, or /rollback -> [implement] -> /complete -> next
|
|
@@ -5,6 +5,10 @@ description: "[devflow] Set up the Blueprint after overlaying it onto a freshly
|
|
|
5
5
|
|
|
6
6
|
# onboard - finish the Blueprint overlay setup
|
|
7
7
|
|
|
8
|
+
**First action:** Before project inspection, preflight, or any other tool call,
|
|
9
|
+
publish `running` to `devflow/.state/run.json` using the dashboard activity
|
|
10
|
+
contract in `AGENTS.md`.
|
|
11
|
+
|
|
8
12
|
Where this sits in the workflow:
|
|
9
13
|
|
|
10
14
|
scaffold app -> overlay Blueprint -> [onboard] -> project-plan + build-plan -> /overview
|
|
@@ -5,6 +5,10 @@ description: "[devflow] Distill user-owned planning docs into `devflow/context/p
|
|
|
5
5
|
|
|
6
6
|
# overview - dynamic project overview compiler
|
|
7
7
|
|
|
8
|
+
**First action:** Before project inspection, preflight, or any other tool call,
|
|
9
|
+
publish `running` to `devflow/.state/run.json` using the dashboard activity
|
|
10
|
+
contract in `AGENTS.md`.
|
|
11
|
+
|
|
8
12
|
## Position in workflow
|
|
9
13
|
|
|
10
14
|
```text
|
|
@@ -5,6 +5,10 @@ description: "[devflow] Interactively prototype the look of a project. Asks abou
|
|
|
5
5
|
|
|
6
6
|
# prototype - lock the look before you build
|
|
7
7
|
|
|
8
|
+
**First action:** Before project inspection, preflight, or any other tool call,
|
|
9
|
+
publish `running` to `devflow/.state/run.json` using the dashboard activity
|
|
10
|
+
contract in `AGENTS.md`.
|
|
11
|
+
|
|
8
12
|
Where this sits in the workflow:
|
|
9
13
|
|
|
10
14
|
plan -> /overview -> [prototype] -> /feature -> build
|