@jakkrichm/create-nexus-devflow 2.2.2 โ†’ 2.5.0

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 (52) hide show
  1. package/dist/bin/create-nexus-devflow.js +9 -1
  2. package/dist/bin/create-nexus-devflow.js.map +1 -1
  3. package/dist/lib/command-catalog.js +1 -1
  4. package/dist/lib/command-catalog.js.map +1 -1
  5. package/dist/lib/dashboard-page.d.ts +1 -1
  6. package/dist/lib/dashboard-page.js +42 -20
  7. package/dist/lib/dashboard-page.js.map +1 -1
  8. package/dist/lib/dashboard-snapshot.js +16 -12
  9. package/dist/lib/dashboard-snapshot.js.map +1 -1
  10. package/dist/lib/dashboard.js +10 -1
  11. package/dist/lib/dashboard.js.map +1 -1
  12. package/dist/lib/doctor.js +1 -1
  13. package/dist/lib/gatekeeper.d.ts +4 -0
  14. package/dist/lib/gatekeeper.js +2 -2
  15. package/dist/lib/gatekeeper.js.map +1 -1
  16. package/dist/lib/git-status.d.ts +10 -2
  17. package/dist/lib/git-status.js +57 -29
  18. package/dist/lib/git-status.js.map +1 -1
  19. package/dist/lib/swarm-orchestrator.d.ts +4 -1
  20. package/dist/lib/swarm-orchestrator.js +2 -2
  21. package/dist/lib/swarm-orchestrator.js.map +1 -1
  22. package/dist/lib/version-check.js +1 -1
  23. package/dist/lib/workflow-state.js +19 -32
  24. package/dist/lib/workflow-state.js.map +1 -1
  25. package/package.json +1 -1
  26. package/template/.agents/skills/complete/SKILL.md +47 -36
  27. package/template/.agents/skills/devflow/SKILL.md +51 -79
  28. package/template/.claude/skills/complete/SKILL.md +47 -36
  29. package/template/.claude/skills/devflow/SKILL.md +51 -79
  30. package/template/AGENTS.md +21 -30
  31. package/template/devflow/build-plan.md +9 -0
  32. package/template/devflow/context/ai-interaction.md +38 -39
  33. package/template/devflow/context/findings.md +8 -11
  34. package/template/devflow/context/glossary.md +31 -0
  35. package/template/devflow/reference/build-plan-template.md +65 -0
  36. package/template/devflow/reference/feature-spec-template.md +110 -0
  37. package/template/devflow/reference/project-plan-template.md +128 -0
  38. package/template/devflow/reference/running-id-contract.md +12 -11
  39. package/template/.agents/skills/10-define/SKILL.md +0 -54
  40. package/template/.agents/skills/20-spec/SKILL.md +0 -155
  41. package/template/.agents/skills/30-plan/SKILL.md +0 -226
  42. package/template/.agents/skills/40-execute/SKILL.md +0 -158
  43. package/template/.agents/skills/50-verify/SKILL.md +0 -62
  44. package/template/.agents/skills/60-report/SKILL.md +0 -57
  45. package/template/.agents/skills/70-deliver/SKILL.md +0 -72
  46. package/template/.claude/skills/10-define/SKILL.md +0 -54
  47. package/template/.claude/skills/20-spec/SKILL.md +0 -155
  48. package/template/.claude/skills/30-plan/SKILL.md +0 -226
  49. package/template/.claude/skills/40-execute/SKILL.md +0 -158
  50. package/template/.claude/skills/50-verify/SKILL.md +0 -62
  51. package/template/.claude/skills/60-report/SKILL.md +0 -57
  52. package/template/.claude/skills/70-deliver/SKILL.md +0 -72
@@ -6,6 +6,8 @@ const DASHBOARD_PAGE_HTML = `<!doctype html>
6
6
  <title>Nexus-DevFlow Enterprise Dashboard</title>
7
7
  <link rel="preconnect" href="https://fonts.googleapis.com">
8
8
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
10
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
11
  <link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Noto+Sans+Thai:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap" rel="stylesheet">
10
12
  <style>
11
13
  :root{
@@ -69,7 +71,7 @@ const DASHBOARD_PAGE_HTML = `<!doctype html>
69
71
  <h1 id="project-name">Nexus-DevFlow</h1>
70
72
  <div class="path" id="project-path">Connecting...</div>
71
73
  <div class="badges">
72
- <span class="badge" id="version-badge">v2.1.0</span>
74
+ <span class="badge" id="version-badge">v2.5.0</span>
73
75
  <span class="badge" id="health-badge">health</span>
74
76
  <span class="badge" id="gate-badge">Gate: checking</span>
75
77
  <span class="badge" id="drift-badge">Drift: checking</span>
@@ -87,21 +89,21 @@ const DASHBOARD_PAGE_HTML = `<!doctype html>
87
89
 
88
90
  <section class="panel" id="dual-track">
89
91
  <div class="panel-head">
90
- <span class="label">Dual-Track Delivery Model</span>
92
+ <span class="label">Unified Living Spec Model (DevFlow 2.5.0)</span>
91
93
  <div class="track-tabs" role="tablist" aria-label="Delivery tracks">
92
- <button class="tab on" id="tab-fast" role="tab" aria-selected="true" aria-controls="view-fast" data-track="fast"><span>๐Ÿš€ Fast-Track ยท 4 steps</span><span class="tab-active-dot">โ— ACTIVE</span></button>
93
- <button class="tab" id="tab-deep" role="tab" aria-selected="false" aria-controls="view-deep" data-track="deep"><span>โ™Ÿ๏ธ Deep-Track ยท 8 stages</span><span class="tab-active-dot">โ— ACTIVE</span></button>
94
+ <button class="tab on" id="tab-preflight" role="tab" aria-selected="true" aria-controls="view-preflight" data-track="preflight"><span>๐Ÿ”ฎ Pre-Flight Discovery</span><span class="tab-active-dot">โ— ACTIVE</span></button>
95
+ <button class="tab" id="tab-fast" role="tab" aria-selected="false" aria-controls="view-fast" data-track="fast"><span>โšก Living Spec ยท 4 steps</span><span class="tab-active-dot">โ— ACTIVE</span></button>
94
96
  <button class="tab" id="tab-swarm" role="tab" aria-selected="false" aria-controls="view-swarm" data-track="swarm"><span>๐Ÿค– Multi-Agent Swarm</span></button>
95
97
  <button class="tab" id="tab-graph" role="tab" aria-selected="false" aria-controls="view-graph" data-track="graph"><span>๐Ÿ—บ๏ธ Code Graph</span></button>
96
98
  </div>
97
99
  </div>
98
- <div class="track-view on" id="view-fast" role="tabpanel" aria-labelledby="tab-fast">
99
- <div class="stepper" id="pipeline-fast"></div>
100
- <div class="track-note" id="note-fast">Fast-Track for daily features, fixes, UI work and iterative refactoring.</div>
100
+ <div class="track-view on" id="view-preflight" role="tabpanel" aria-labelledby="tab-preflight">
101
+ <div class="stepper" id="pipeline-preflight"></div>
102
+ <div class="track-note" id="note-preflight">Pre-Flight Discovery & Architectural Alignment (/idea, /grill, /brainstorm, /discovery).</div>
101
103
  </div>
102
- <div class="track-view" id="view-deep" role="tabpanel" aria-labelledby="tab-deep">
103
- <div class="stepper" id="pipeline-deep"></div>
104
- <div class="track-note" id="note-deep">Deep-Track for architecture, migrations, security audits and coordinated delivery.</div>
104
+ <div class="track-view" id="view-fast" role="tabpanel" aria-labelledby="tab-fast">
105
+ <div class="stepper" id="pipeline-fast"></div>
106
+ <div class="track-note" id="note-fast">Single Living Spec (/feature, /implement, /check, /complete) with TDD Discipline & QA Matrix.</div>
105
107
  </div>
106
108
  <div class="track-view" id="view-swarm" role="tabpanel" aria-labelledby="tab-swarm">
107
109
  <div class="section-note">Role-based specialized AI Subagents roster & execution matrix</div>
@@ -146,18 +148,18 @@ const DASHBOARD_PAGE_HTML = `<!doctype html>
146
148
  <section class="card full panel"><div class="card-head"><span class="label">Discoveries</span><span class="value" id="discovery-count">-</span></div><div class="record-list" id="discovery-list"></div></section>
147
149
  <section class="card full panel"><div class="card-head"><span class="label">Idea Inbox & Backlog</span><span class="value" id="ideas-count">-</span></div><div class="section-note">From devflow/ideas.md ยท start a selected item with /feature IDEA-xxx</div><div class="record-list" id="ideas-list"></div></section>
148
150
  <section class="card full panel"><div class="card-head"><span class="label">Completed Work Archive</span><span class="value" id="history-count">-</span></div><div class="section-note">Categorized delivery history ยท features, fixes and rollbacks</div><div class="record-list" id="history-list"></div></section>
149
- <footer><span>Nexus-DevFlow 2.0 Enterprise Dashboard ยท refreshes every 2 seconds</span><span id="footer-revision">snapshot pending</span></footer>
151
+ <footer><span>Nexus-DevFlow 2.5.0 Enterprise Dashboard ยท refreshes every 2 seconds</span><span id="footer-revision">snapshot pending</span></footer>
150
152
  </main>
151
153
  <script>
152
154
  const byId = (id) => document.getElementById(id);
153
155
  const text = (id, value) => { const node = byId(id); if (node) node.textContent = value == null ? '-' : String(value); };
154
156
  const pill = (id, state, label) => { const node = byId(id); if (!node) return; node.className = 'pill ' + (state || 'configured'); node.textContent = label || state || '-'; };
155
157
  const list = (id, values, empty) => { const node = byId(id); if (!node) return; node.replaceChildren(); const rows = values.length ? values : [empty]; rows.forEach((value) => { const li = document.createElement('li'); li.textContent = value; if (!values.length) li.className = 'empty'; node.append(li); }); };
156
- const titleCase = (value) => String(value || '').replaceAll('_',' ').replace(/\\b\\w/g, (c) => c.toUpperCase());
157
- const FLOW_ICON_NAMES = ['compass','target','document','list','code','shield','report','package'];
158
- const EMOJI_ICONS = { compass:'๐Ÿ”Ž',target:'๐ŸŽฏ',document:'๐Ÿ“„',list:'๐Ÿงฉ',code:'โš™๏ธ',shield:'๐Ÿ›ก๏ธ',report:'๐Ÿ“Š',package:'๐Ÿ“ฆ',bulb:'โšก',check:'โœ…',wrench:'๐Ÿ› ๏ธ',rollback:'โ†ฉ๏ธ',search:'๐Ÿ”',alert:'โš ๏ธ' };
158
+ const titleCase = (value) => String(value || '').replaceAll('_',' ').replace(/\b\w/g, (c) => c.toUpperCase());
159
+ const FLOW_ICON_NAMES = ['target','code','shield','package'];
160
+ const EMOJI_ICONS = { compass:'๐Ÿ”Ž',discovery:'๐Ÿ”Ž',target:'๐ŸŽฏ',document:'๐Ÿ“„',list:'๐Ÿงฉ',code:'โš™๏ธ',shield:'๐Ÿงช',report:'๐Ÿ“Š',package:'๐Ÿ“ฆ',bulb:'๐Ÿ’ก',check:'โœ…',wrench:'๐Ÿ› ๏ธ',rollback:'โ†ฉ๏ธ',search:'๐Ÿ”',alert:'โš ๏ธ',grill:'๐Ÿ”ฅ',brainstorm:'๐Ÿ’ญ',idea:'๐Ÿ’ก' };
159
161
  function iconImage(name) { const icon = document.createElement('span'); icon.className = 'icon-glyph'; icon.setAttribute('aria-hidden','true'); icon.textContent = EMOJI_ICONS[name] || '๐Ÿ“„'; return icon; }
160
- function decoratePipeline(id) { byId(id)?.querySelectorAll('.step').forEach((step,index) => { step.classList.add('flow-' + index); const icon = document.createElement('span'); icon.className = 'step-icon'; icon.setAttribute('aria-hidden','true'); icon.append(iconImage(FLOW_ICON_NAMES[index] || 'document')); const name = step.querySelector('.step-name'); step.insertBefore(icon,name || null); }); }
162
+ function decoratePipeline(id) { byId(id)?.querySelectorAll('.step').forEach((step,index) => { step.classList.add('flow-' + index); const icon = document.createElement('span'); icon.className = 'step-icon'; icon.setAttribute('aria-hidden','true'); const cmd = step.querySelector('.step-cmd')?.textContent?.replace('/','').split(' ')[0] || ''; const iconKey = id.includes('preflight') ? (cmd || ['idea','grill','brainstorm','discovery'][index] || 'search') : (FLOW_ICON_NAMES[index] || 'document'); icon.append(iconImage(iconKey)); const name = step.querySelector('.step-name'); step.insertBefore(icon,name || null); }); }
161
163
  function richText(root,value) { const source = String(value || ''); let cursor = 0; const plain = (end) => { if (end > cursor) root.append(document.createTextNode(source.slice(cursor,end))); cursor = end; }; while (cursor < source.length) { if (source.startsWith('**',cursor)) { const end = source.indexOf('**',cursor + 2); if (end > cursor + 2) { const node = document.createElement('strong'); node.textContent = source.slice(cursor + 2,end); root.append(node); cursor = end + 2; continue; } } if (source[cursor] === '*') { const end = source.indexOf('*',cursor + 1); if (end > cursor + 1) { const node = document.createElement('em'); node.textContent = source.slice(cursor + 1,end); root.append(node); cursor = end + 1; continue; } } if (source.charCodeAt(cursor) === 96) { const end = source.indexOf(String.fromCharCode(96),cursor + 1); if (end > cursor + 1) { const node = document.createElement('code'); node.textContent = source.slice(cursor + 1,end); root.append(node); cursor = end + 1; continue; } } const next = [source.indexOf('**',cursor + 1),source.indexOf('*',cursor + 1),source.indexOf(String.fromCharCode(96),cursor + 1)].filter((index) => index >= 0).sort((a,b) => a-b)[0] ?? source.length; plain(next > cursor ? next : cursor + 1); } }
162
164
  function recordCard(options) { const card = document.createElement('article'); card.className = 'record-item tone-' + (options.tone || 'cyan'); const icon = document.createElement('span'); icon.className = 'record-icon'; icon.append(iconImage(options.icon || 'document')); const body = document.createElement('div'); body.className = 'record-body'; const meta = document.createElement('div'); meta.className = 'record-meta'; richText(meta,options.meta); const title = document.createElement('div'); title.className = 'record-title'; richText(title,options.title); const desc = document.createElement('div'); desc.className = 'record-desc'; richText(desc,options.description); body.append(meta,title,desc); card.append(icon,body); if (options.badge) { const badge = document.createElement('span'); badge.className = 'record-badge'; badge.textContent = options.badge; card.append(badge); } return card; }
163
165
  function renderRecords(id,items,empty,mapper) { const root = byId(id); root.replaceChildren(); if (!items?.length) { const node = document.createElement('div'); node.className = 'empty'; node.textContent = empty; root.append(node); return; } items.forEach((item,index) => root.append(recordCard(mapper(item,index)))); }
@@ -178,6 +180,7 @@ const DASHBOARD_PAGE_HTML = `<!doctype html>
178
180
  });
179
181
  }
180
182
 
183
+ let userHasSwitchedTab = false;
181
184
  function selectTrack(track) {
182
185
  document.querySelectorAll('.tab').forEach((node) => { const on = node.dataset.track === track; node.classList.toggle('on', on); node.setAttribute('aria-selected', String(on)); });
183
186
  document.querySelectorAll('.track-view').forEach((node) => node.classList.toggle('on', node.id === 'view-' + track));
@@ -193,7 +196,7 @@ const DASHBOARD_PAGE_HTML = `<!doctype html>
193
196
  });
194
197
  }
195
198
 
196
- document.querySelectorAll('.tab').forEach((node) => node.addEventListener('click', () => selectTrack(node.dataset.track)));
199
+ document.querySelectorAll('.tab').forEach((node) => node.addEventListener('click', () => { userHasSwitchedTab = true; selectTrack(node.dataset.track); }));
197
200
  wireCopy(byId('next-copy'), () => byId('next-command').textContent.trim());
198
201
 
199
202
  function renderCommands(commands) {
@@ -253,19 +256,26 @@ const DASHBOARD_PAGE_HTML = `<!doctype html>
253
256
  function renderSnapshot(data) {
254
257
  const status = data.status || {}; const project = status.project || {}; const devflow = status.devflow || {}; const work = status.currentWork || {}; const git = status.git || {}; const findings = status.findings || { active: [], blockers: [] }; const workflow = data.workflow || {}; const update = data.update || {}; const doctor = data.doctor || { checks: [] }; const discoveries = data.discoveries || { recent: [] }; const history = data.history || { items: [], total: 0 }; const ideas = status.ideas || { pending: [], totalPending: 0 }; const gate = data.gatekeeper || { passed: true }; const drift = data.drift || { hasDrift: false };
255
258
 
256
- text('project-name', project.name || 'Nexus-DevFlow'); text('project-path', project.root || ''); text('version-badge', 'v' + (devflow.version || '2.1.0'));
259
+ text('project-name', project.name || 'Nexus-DevFlow'); text('project-path', project.root || ''); text('version-badge', 'v' + (devflow.version || '2.5.0'));
257
260
  pill('health-badge', status.health, status.health === 'ok' ? 'Health OK' : 'Health warning');
258
261
  pill('gate-badge', gate.passed ? 'ok' : 'blocked', gate.passed ? 'โœ” Gate Passed' : 'โœ– Gate Blocked');
259
262
  pill('drift-badge', !drift.hasDrift ? 'ok' : 'warning', !drift.hasDrift ? 'โœ” In Sync' : 'โš  Drift Detected');
260
263
  pill('track-badge', workflow.track, 'Track ' + titleCase(workflow.track || 'idle'));
261
264
 
262
265
  text('adapter-count', (devflow.adapters || []).length + ' configured'); text('header-branch', git.branch || 'unknown'); text('generated-at', new Date(data.generatedAt).toLocaleTimeString()); text('footer-revision', 'snapshot ' + data.generatedAt);
263
- renderPipeline('pipeline-fast', workflow.fast); renderPipeline('pipeline-deep', workflow.deep); decoratePipeline('pipeline-fast'); decoratePipeline('pipeline-deep');
266
+ renderPipeline('pipeline-preflight', workflow.deep || workflow.preflight); renderPipeline('pipeline-fast', workflow.fast); decoratePipeline('pipeline-preflight'); decoratePipeline('pipeline-fast');
267
+ if (!userHasSwitchedTab) {
268
+ if (work.state === 'active' || workflow.track === 'fast') {
269
+ selectTrack('fast');
270
+ } else {
271
+ selectTrack('preflight');
272
+ }
273
+ }
264
274
  renderSwarm(data.swarm); renderMcp(data.mcpTools); text('stat-mcp', (data.mcpTools || []).length + ' Ready');
265
275
 
266
276
  const nextCommand = data.nextAction?.command || status.nextAction?.command || '/feature'; text('next-command', nextCommand); text('next-reason', data.nextAction?.reason || 'Ready for new work.');
267
277
  text('stat-runs', history.total || 0); text('stat-findings', (findings.active || []).length); text('stat-ideas', ideas.totalPending || 0); text('stat-state', titleCase(work.state || 'idle'));
268
- pill('update-pill', update.state, update.state === 'current' ? 'up to date' : update.state); text('installed-latest', (update.installedVersion || '2.1.0') + ' / ' + (update.latestVersion || '2.1.0')); text('system-health', status.health || 'ok');
278
+ pill('update-pill', update.state, update.state === 'current' ? 'up to date' : update.state); text('installed-latest', (update.installedVersion || '2.5.0') + ' / ' + (update.latestVersion || '2.5.0')); text('system-health', status.health || 'ok');
269
279
  pill('work-pill', work.state, work.state || 'idle'); text('work-title', work.title || 'No active delivery run'); const pct = work.total > 0 ? Math.round((work.completed / work.total) * 100) : 0; byId('work-progress').style.width = pct + '%'; text('work-meta', work.state === 'active' ? work.completed + ' of ' + work.total + ' steps completed' : 'Ready');
270
280
  pill('git-pill', git.clean ? 'ok' : 'warning', git.clean ? 'clean' : (git.changedFiles || 0) + ' changed'); text('git-branch', git.branch || 'unknown'); text('git-changed', git.clean ? 'clean' : (git.changedFiles || 0) + ' changed files'); text('git-drift', drift.clean ? 'In Sync' : 'Drift detected'); text('git-commit', git.lastCommit || '-');
271
281
  text('findings-count', findings.total || 0); ['P0','P1','P2','P3'].forEach((severity) => text('sev-' + severity.toLowerCase(), (findings.active || []).filter((item) => item.severity === severity).length)); list('findings-list', (findings.active || []).map((item) => item.id + ' ยท ' + item.title), 'No active findings');
@@ -275,9 +285,21 @@ const DASHBOARD_PAGE_HTML = `<!doctype html>
275
285
  text('ideas-count', (ideas.totalPending || 0) + ' pending'); renderIdeas(ideas.pending || []); text('history-count', (history.total || 0) + ' released'); renderHistory(history.items || []);
276
286
  }
277
287
 
288
+ window.__INITIAL_SNAPSHOT__ = null;
289
+ if (window.__INITIAL_SNAPSHOT__) {
290
+ try {
291
+ renderSnapshot(window.__INITIAL_SNAPSHOT__);
292
+ byId('live-dot').classList.add('on');
293
+ text('live-label','Connected ยท live snapshot every 2 seconds');
294
+ } catch (e) {
295
+ console.error('Initial hydration error:', e);
296
+ }
297
+ }
298
+
278
299
  let refreshing = false;
279
300
  async function refresh() { if (refreshing) return; refreshing = true; try { const response = await fetch('/api/dashboard'); if (!response.ok) throw new Error('HTTP ' + response.status); renderSnapshot(await response.json()); byId('live-dot').classList.add('on'); text('live-label','Connected ยท live snapshot every 2 seconds'); } catch (error) { byId('live-dot').classList.remove('on'); text('live-label','Disconnected ยท ' + error.message); } finally { refreshing = false; } }
280
- refresh(); setInterval(refresh, 2000);
301
+ if (!window.__INITIAL_SNAPSHOT__) { refresh(); }
302
+ setInterval(refresh, 2000);
281
303
  </script>
282
304
  </body>
283
305
  </html>`;
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-page.js","sourceRoot":"","sources":["../../lib/dashboard-page.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0RpB,CAAC;AAET,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"dashboard-page.js","sourceRoot":"","sources":["../../lib/dashboard-page.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAgTpB,CAAC;AAET,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -16,20 +16,21 @@ async function readDashboardSnapshot(startPath = process.cwd(), options = {}) {
16
16
  const status = await readProjectStatus(startPath);
17
17
  const projectRoot = status.project.root;
18
18
  const workflow = await readWorkflowState(projectRoot, status.currentWork);
19
- const [history, slow, update, gatekeeper, drift, swarm] = await Promise.all([
19
+ const driftPromise = detectGitDrift(projectRoot, status.git.branch || undefined);
20
+ const [history, slow, update, drift, swarm] = await Promise.all([
20
21
  readHistory(projectRoot),
21
22
  readSlowData(projectRoot, workflow.activeDiscoveryId, now, options.slowTtlMs ?? 15_000),
22
23
  checkPackageVersion({
23
24
  installedVersion: status.devflow.version,
24
25
  fetchImpl: options.fetchImpl,
25
- timeoutMs: options.versionTimeoutMs,
26
+ timeoutMs: options.versionTimeoutMs ?? 1000,
26
27
  cacheTtlMs: options.versionCacheTtlMs,
27
28
  now
28
29
  }),
29
- evaluateGate(projectRoot, { strict: false }),
30
- detectGitDrift(projectRoot),
31
- generateSwarmPlan(projectRoot)
30
+ driftPromise,
31
+ generateSwarmPlan(projectRoot, { branch: status.git.branch || undefined })
32
32
  ]);
33
+ const gatekeeper = await evaluateGate(projectRoot, { status, drift, strict: false });
33
34
  return {
34
35
  schemaVersion: 1,
35
36
  generatedAt: new Date(now()).toISOString(),
@@ -101,14 +102,17 @@ function clearDashboardSnapshotCache() {
101
102
  slowCache.clear();
102
103
  }
103
104
  function selectDashboardNextAction(status, workflow) {
104
- if (workflow.track !== "deep" || !workflow.currentStage) {
105
- return status.nextAction;
105
+ if (workflow.track !== "idle" && workflow.currentStage) {
106
+ const stageCmd = workflow.currentStage === "feature-fix" ? "feature" : workflow.currentStage;
107
+ const suffix = workflow.activeRunId && (workflow.track === "deep" || stageCmd === "complete")
108
+ ? ` ${workflow.activeRunId}`
109
+ : "";
110
+ return {
111
+ command: `/${stageCmd}${suffix}`,
112
+ reason: `Continue active workflow at /${stageCmd}.`
113
+ };
106
114
  }
107
- const suffix = workflow.activeRunId ? ` ${workflow.activeRunId}` : "";
108
- return {
109
- command: `/${workflow.currentStage}${suffix}`,
110
- reason: `Continue the active Deep-Track run at ${workflow.currentStage}.`
111
- };
115
+ return status.nextAction;
112
116
  }
113
117
  export { clearDashboardSnapshotCache, readDashboardSnapshot, selectDashboardNextAction };
114
118
  //# sourceMappingURL=dashboard-snapshot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-snapshot.js","sourceRoot":"","sources":["../../lib/dashboard-snapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-snapshot.js","sourceRoot":"","sources":["../../lib/dashboard-snapshot.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,8 @@ async function startDashboardServer(startPath = process.cwd(), options = {}) {
31
31
  await closeServer(server);
32
32
  throw new Error("Nexus-DevFlow dashboard could not determine its local address.");
33
33
  }
34
+ // Pre-warm dashboard snapshot in the background on startup
35
+ void readDashboardSnapshot(projectRoot, options.snapshotOptions).catch(() => { });
34
36
  return {
35
37
  url: `http://${DASHBOARD_HOST}:${address.port}`,
36
38
  close: () => closeServer(server)
@@ -46,7 +48,14 @@ async function handleRequest(projectRoot, request, response, snapshotOptions) {
46
48
  const pathname = new URL(request.url || "/", `http://${DASHBOARD_HOST}`).pathname;
47
49
  if (pathname === "/") {
48
50
  response.setHeader("Content-Security-Policy", "default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline' https://fonts.googleapis.com; font-src https://fonts.gstatic.com; connect-src 'self'; img-src 'self' data:; base-uri 'none'; form-action 'none'; frame-ancestors 'none'");
49
- sendResponse(response, method, 200, "text/html; charset=utf-8", DASHBOARD_PAGE_HTML);
51
+ try {
52
+ const snapshot = await readDashboardSnapshot(projectRoot, snapshotOptions);
53
+ const injectedHtml = DASHBOARD_PAGE_HTML.replace("window.__INITIAL_SNAPSHOT__ = null;", `window.__INITIAL_SNAPSHOT__ = ${JSON.stringify(snapshot).replace(/</g, "\\u003c")};`);
54
+ sendResponse(response, method, 200, "text/html; charset=utf-8", injectedHtml);
55
+ }
56
+ catch {
57
+ sendResponse(response, method, 200, "text/html; charset=utf-8", DASHBOARD_PAGE_HTML);
58
+ }
50
59
  return;
51
60
  }
52
61
  if (pathname === "/api/status") {
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../lib/dashboard.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0+BvB,CAAC;AAET,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../lib/dashboard.ts"],"names":[],"mappings":"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"}
@@ -81,7 +81,7 @@ const DEFAULT_PROJECT_PLAN_STUB = `# ๐Ÿ—บ๏ธ Project Plan (User-Owned Architectu
81
81
  ## 3. Constraints & Non-Goals
82
82
  - **Non-Goals**: What this project explicitly will NOT do in the current scope.
83
83
  - **Technical Constraints**: Performance targets, security standards, offline requirements, or backward compatibility rules.
84
- - **Delivery Rules**: Dual-Track workflow discipline (Fast-Track for standard features, Deep-Track for epics).
84
+ - **Delivery Rules**: The 3-Pillars & Single Living Spec Model (Fast-Track 4 steps with Deep Architectural Rigour).
85
85
 
86
86
  ## 4. Key Milestones & Roadmap
87
87
  - **Milestone 1**: Core Foundation & MVP
@@ -1,7 +1,11 @@
1
+ import type { ProjectStatus } from "./status.js";
2
+ import type { GitDriftReport } from "./drift-reconciler.js";
1
3
  export interface GateOptions {
2
4
  strict?: boolean;
3
5
  allowUnverified?: boolean;
4
6
  color?: boolean;
7
+ status?: ProjectStatus;
8
+ drift?: GitDriftReport;
5
9
  }
6
10
  export interface GateReport {
7
11
  passed: boolean;
@@ -2,7 +2,7 @@ import { readProjectStatus } from "./status.js";
2
2
  import { detectGitDrift } from "./drift-reconciler.js";
3
3
  import { createStyle } from "./ui.js";
4
4
  export async function evaluateGate(projectRoot, options = {}) {
5
- const status = await readProjectStatus(projectRoot);
5
+ const status = options.status || (await readProjectStatus(projectRoot));
6
6
  const violations = [];
7
7
  const warnings = [];
8
8
  // Check 1: Active Findings Blockers (P0 / P1 in open or fixed status)
@@ -32,7 +32,7 @@ export async function evaluateGate(projectRoot, options = {}) {
32
32
  }
33
33
  // Check 4: Git drift advisory check
34
34
  try {
35
- const drift = await detectGitDrift(projectRoot);
35
+ const drift = options.drift || (await detectGitDrift(projectRoot));
36
36
  if (drift.hasDrift && drift.undocumentedFiles.length > 0) {
37
37
  warnings.push(`Warning (git_drift): ${drift.undocumentedFiles.length} file(s) modified in git without being listed in living spec.`);
38
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gatekeeper.js","sourceRoot":"","sources":["../../lib/gatekeeper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gatekeeper.js","sourceRoot":"","sources":["../../lib/gatekeeper.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,14 @@ interface GitStatusSummary {
8
8
  ahead: number | null;
9
9
  behind: number | null;
10
10
  }
11
- declare function readGitStatus(projectRoot: string): Promise<GitStatusSummary>;
12
- export { readGitStatus };
11
+ type GitCommandRunner = (projectRoot: string, args: readonly string[]) => Promise<string>;
12
+ interface ReadGitStatusOptions {
13
+ ttlMs?: number;
14
+ forceFresh?: boolean;
15
+ now?: () => number;
16
+ runGit?: GitCommandRunner;
17
+ }
18
+ declare function clearGitStatusCache(): void;
19
+ declare function readGitStatus(projectRoot: string, options?: ReadGitStatusOptions): Promise<GitStatusSummary>;
20
+ export { readGitStatus, clearGitStatusCache };
13
21
  export type { GitStatusSummary };
@@ -1,35 +1,62 @@
1
1
  import { execFile } from "node:child_process";
2
+ import path from "node:path";
2
3
  import { promisify } from "node:util";
4
+ const gitCache = new Map();
5
+ const gitInFlight = new Map();
6
+ const DEFAULT_GIT_CACHE_TTL_MS = 2000;
3
7
  const execFileAsync = promisify(execFile);
4
- async function readGitStatus(projectRoot) {
5
- if (!(await isGitRepository(projectRoot))) {
8
+ function clearGitStatusCache() {
9
+ gitCache.clear();
10
+ gitInFlight.clear();
11
+ }
12
+ async function readGitStatus(projectRoot, options = {}) {
13
+ const now = options.now || Date.now;
14
+ const ttlMs = options.ttlMs ?? DEFAULT_GIT_CACHE_TTL_MS;
15
+ const cacheKey = path.resolve(projectRoot);
16
+ const gitRunner = options.runGit || runGit;
17
+ if (!options.forceFresh) {
18
+ const cached = gitCache.get(cacheKey);
19
+ if (cached && cached.expiresAt > now()) {
20
+ return cached.value;
21
+ }
22
+ const pending = gitInFlight.get(cacheKey);
23
+ if (pending)
24
+ return pending;
25
+ }
26
+ const computeAndCache = async () => {
27
+ const value = await computeGitStatus(projectRoot, gitRunner);
28
+ gitCache.set(cacheKey, { expiresAt: now() + ttlMs, value });
29
+ return value;
30
+ };
31
+ if (options.forceFresh) {
32
+ return computeAndCache();
33
+ }
34
+ let pending;
35
+ pending = computeAndCache().finally(() => {
36
+ if (gitInFlight.get(cacheKey) === pending)
37
+ gitInFlight.delete(cacheKey);
38
+ });
39
+ gitInFlight.set(cacheKey, pending);
40
+ return pending;
41
+ }
42
+ async function computeGitStatus(projectRoot, gitRunner) {
43
+ if (!(await isGitRepository(projectRoot, gitRunner))) {
6
44
  return unavailableSummary();
7
45
  }
8
- const porcelain = await runGit(projectRoot, [
9
- "status",
10
- "--porcelain=v1",
11
- "--untracked-files=all"
46
+ const [porcelain, branch, lastCommit, upstream] = await Promise.all([
47
+ gitRunner(projectRoot, ["status", "--porcelain=v1", "--untracked-files=all"]),
48
+ readBranch(projectRoot, gitRunner),
49
+ runOptionalGit(projectRoot, ["log", "-1", "--format=%s"], gitRunner),
50
+ runOptionalGit(projectRoot, ["rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{upstream}"], gitRunner)
12
51
  ]);
13
52
  const changedFiles = porcelain
14
53
  .split(/\r?\n/)
15
54
  .filter((line) => line.length > 0)
16
55
  .length;
17
- const branch = await readBranch(projectRoot);
18
- const lastCommit = await runOptionalGit(projectRoot, [
19
- "log",
20
- "-1",
21
- "--format=%s"
22
- ]);
23
- const upstream = await runOptionalGit(projectRoot, [
24
- "rev-parse",
25
- "--abbrev-ref",
26
- "--symbolic-full-name",
27
- "@{upstream}"
28
- ]);
29
56
  const divergence = upstream
30
- ? await readDivergence(projectRoot)
57
+ ? await readDivergence(projectRoot, gitRunner)
31
58
  : { ahead: null, behind: null };
32
- return {
59
+ const value = {
33
60
  available: true,
34
61
  branch,
35
62
  clean: changedFiles === 0,
@@ -39,37 +66,38 @@ async function readGitStatus(projectRoot) {
39
66
  ahead: divergence.ahead,
40
67
  behind: divergence.behind
41
68
  };
69
+ return value;
42
70
  }
43
- async function isGitRepository(projectRoot) {
71
+ async function isGitRepository(projectRoot, gitRunner) {
44
72
  return (await runOptionalGit(projectRoot, [
45
73
  "rev-parse",
46
74
  "--is-inside-work-tree"
47
- ])) === "true";
75
+ ], gitRunner)) === "true";
48
76
  }
49
- async function readBranch(projectRoot) {
77
+ async function readBranch(projectRoot, gitRunner) {
50
78
  const branch = await runOptionalGit(projectRoot, [
51
79
  "symbolic-ref",
52
80
  "--quiet",
53
81
  "--short",
54
82
  "HEAD"
55
- ]);
83
+ ], gitRunner);
56
84
  return branch || "(detached HEAD)";
57
85
  }
58
- async function readDivergence(projectRoot) {
86
+ async function readDivergence(projectRoot, gitRunner) {
59
87
  const counts = await runOptionalGit(projectRoot, [
60
88
  "rev-list",
61
89
  "--left-right",
62
90
  "--count",
63
91
  "HEAD...@{upstream}"
64
- ]);
92
+ ], gitRunner);
65
93
  const match = counts?.match(/^(\d+)\s+(\d+)$/);
66
94
  return match
67
95
  ? { ahead: Number(match[1]), behind: Number(match[2]) }
68
96
  : { ahead: null, behind: null };
69
97
  }
70
- async function runOptionalGit(projectRoot, args) {
98
+ async function runOptionalGit(projectRoot, args, gitRunner) {
71
99
  try {
72
- return await runGit(projectRoot, args);
100
+ return await gitRunner(projectRoot, args);
73
101
  }
74
102
  catch {
75
103
  return null;
@@ -94,5 +122,5 @@ function unavailableSummary() {
94
122
  behind: null
95
123
  };
96
124
  }
97
- export { readGitStatus };
125
+ export { readGitStatus, clearGitStatusCache };
98
126
  //# sourceMappingURL=git-status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-status.js","sourceRoot":"","sources":["../../lib/git-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-status.js","sourceRoot":"","sources":["../../lib/git-status.ts"],"names":[],"mappings":"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"}
@@ -24,8 +24,11 @@ export interface SwarmPlan {
24
24
  agentRoster: SwarmAgentDefinition[];
25
25
  tasks: SwarmSubtask[];
26
26
  }
27
+ export interface SwarmPlanOptions {
28
+ branch?: string;
29
+ }
27
30
  export declare const SWARM_ROSTER: SwarmAgentDefinition[];
28
31
  /**
29
32
  * Generates an optimized Multi-Agent Swarm Execution Plan from the active living spec.
30
33
  */
31
- export declare function generateSwarmPlan(projectRoot: string): Promise<SwarmPlan>;
34
+ export declare function generateSwarmPlan(projectRoot: string, options?: SwarmPlanOptions): Promise<SwarmPlan>;
@@ -34,8 +34,8 @@ export const SWARM_ROSTER = [
34
34
  /**
35
35
  * Generates an optimized Multi-Agent Swarm Execution Plan from the active living spec.
36
36
  */
37
- export async function generateSwarmPlan(projectRoot) {
38
- const contextPaths = await resolveActiveContextPaths(projectRoot);
37
+ export async function generateSwarmPlan(projectRoot, options = {}) {
38
+ const contextPaths = await resolveActiveContextPaths(projectRoot, options.branch);
39
39
  let runId = "ACTIVE";
40
40
  let title = "Active Feature";
41
41
  let track = "fast";
@@ -1 +1 @@
1
- {"version":3,"file":"swarm-orchestrator.js","sourceRoot":"","sources":["../../lib/swarm-orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swarm-orchestrator.js","sourceRoot":"","sources":["../../lib/swarm-orchestrator.ts"],"names":[],"mappings":"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"}