@jhizzard/termdeck 0.8.0 → 0.10.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.
- package/docs/orchestrator-guide.md +335 -0
- package/package.json +3 -1
- package/packages/cli/src/index.js +26 -3
- package/packages/cli/src/init-project.js +213 -0
- package/packages/cli/src/templates.js +84 -0
- package/packages/cli/templates/.claude-settings.json.tmpl +32 -0
- package/packages/cli/templates/.gitignore.tmpl +28 -0
- package/packages/cli/templates/CLAUDE.md.tmpl +35 -0
- package/packages/cli/templates/CONTRADICTIONS.md.tmpl +30 -0
- package/packages/cli/templates/README.md.tmpl +15 -0
- package/packages/cli/templates/RESTART-PROMPT.md.tmpl +38 -0
- package/packages/cli/templates/docs-orchestration-README.md.tmpl +29 -0
- package/packages/cli/templates/project_facts.md.tmpl +39 -0
- package/packages/client/public/app.js +781 -0
- package/packages/client/public/graph.html +104 -0
- package/packages/client/public/graph.js +683 -0
- package/packages/client/public/index.html +145 -0
- package/packages/client/public/style.css +1185 -0
- package/packages/server/src/graph-routes.js +555 -0
- package/packages/server/src/index.js +158 -5
- package/packages/server/src/orchestration-preview.js +256 -0
- package/packages/server/src/preflight.js +82 -0
- package/packages/server/src/rag.js +138 -0
- package/packages/server/src/setup/mnestra-migrations/009_memory_relationship_metadata.sql +126 -0
- package/packages/server/src/setup/mnestra-migrations/010_memory_recall_graph.sql +147 -0
- package/packages/server/src/setup/rumen/migrations/003_graph_inference_schedule.sql +49 -0
- package/packages/server/src/sprint-inject.js +156 -0
- package/packages/server/src/sprint-routes.js +503 -0
|
@@ -60,6 +60,8 @@
|
|
|
60
60
|
<div class="topbar-row-2-spacer"></div>
|
|
61
61
|
<button id="btn-status">status</button>
|
|
62
62
|
<button id="btn-config">config</button>
|
|
63
|
+
<button id="btn-sprint" title="Define and kick off a 4+1 sprint">sprint</button>
|
|
64
|
+
<button id="btn-graph" title="Open the knowledge-graph view (memory_items + memory_relationships, force-directed)" onclick="window.open('/graph.html','_blank','noopener')">graph</button>
|
|
63
65
|
<button id="btn-how" title="Walkthrough of every TermDeck feature">how this works</button>
|
|
64
66
|
<button id="btn-help" title="Open the TermDeck documentation" onclick="window.open('https://termdeck-docs.vercel.app','_blank','noopener')">help</button>
|
|
65
67
|
</div>
|
|
@@ -133,6 +135,7 @@
|
|
|
133
135
|
<option value="">no project</option>
|
|
134
136
|
</select>
|
|
135
137
|
<button class="prompt-add-project" id="btnAddProject" title="Add a new project">+</button>
|
|
138
|
+
<button class="prompt-preview-project" id="btnPreviewProject" title="Preview orchestration scaffolding for the selected project" disabled>preview</button>
|
|
136
139
|
<button class="prompt-launch" id="promptLaunch">launch</button>
|
|
137
140
|
</div>
|
|
138
141
|
|
|
@@ -166,6 +169,55 @@
|
|
|
166
169
|
</div>
|
|
167
170
|
</div>
|
|
168
171
|
|
|
172
|
+
<!-- Orchestration-preview modal (Sprint 37 T3). Hidden by default. -->
|
|
173
|
+
<div class="preview-project-modal" id="previewProjectModal" role="dialog" aria-modal="true" aria-labelledby="ppmTitle">
|
|
174
|
+
<div class="preview-project-backdrop"></div>
|
|
175
|
+
<div class="preview-project-card">
|
|
176
|
+
<header class="ppm-header">
|
|
177
|
+
<div>
|
|
178
|
+
<h3 id="ppmTitle">Orchestration preview</h3>
|
|
179
|
+
<p class="ppm-help" id="ppmSubtitle">Files that <code>termdeck init --project <name></code> would create.</p>
|
|
180
|
+
</div>
|
|
181
|
+
<button class="ppm-close" id="ppmClose" aria-label="Close (Esc)" title="Close (Esc)">×</button>
|
|
182
|
+
</header>
|
|
183
|
+
<div class="ppm-meta" id="ppmMeta"></div>
|
|
184
|
+
<div class="ppm-status" id="ppmStatus"></div>
|
|
185
|
+
<div class="ppm-tree" id="ppmTree" role="list">
|
|
186
|
+
<div class="ppm-empty">Loading…</div>
|
|
187
|
+
</div>
|
|
188
|
+
<footer class="ppm-actions">
|
|
189
|
+
<label class="ppm-force"><input type="checkbox" id="ppmForce"> overwrite existing files</label>
|
|
190
|
+
<div class="ppm-action-buttons">
|
|
191
|
+
<button class="ppm-cancel" id="ppmCancel">close</button>
|
|
192
|
+
<button class="ppm-generate" id="ppmGenerate" disabled>generate scaffolding</button>
|
|
193
|
+
</div>
|
|
194
|
+
</footer>
|
|
195
|
+
</div>
|
|
196
|
+
</div>
|
|
197
|
+
|
|
198
|
+
<!-- Orchestrator Guide right-rail (Sprint 37 T1). Default collapsed. -->
|
|
199
|
+
<aside class="guide-rail" id="guideRail" data-collapsed="true" aria-label="Orchestrator Guide">
|
|
200
|
+
<button class="guide-rail-toggle" id="guideRailToggle" type="button"
|
|
201
|
+
aria-expanded="false" aria-controls="guideRailBody"
|
|
202
|
+
title="Orchestrator Guide — sprint patterns and inject mandate">
|
|
203
|
+
<span class="grt-icon" aria-hidden="true">📖</span>
|
|
204
|
+
<span class="grt-label">Guide</span>
|
|
205
|
+
</button>
|
|
206
|
+
<div class="guide-rail-body" id="guideRailBody" role="region" aria-labelledby="guideRailHeading">
|
|
207
|
+
<header class="guide-rail-header">
|
|
208
|
+
<h3 id="guideRailHeading">Orchestrator Guide</h3>
|
|
209
|
+
<button class="guide-rail-close" id="guideRailClose" type="button" title="Collapse" aria-label="Collapse Guide">✕</button>
|
|
210
|
+
</header>
|
|
211
|
+
<div class="guide-rail-search">
|
|
212
|
+
<input type="search" id="guideSearch" placeholder="Search the Guide…" autocomplete="off" spellcheck="false" aria-label="Search Guide sections">
|
|
213
|
+
</div>
|
|
214
|
+
<nav class="guide-rail-toc" id="guideToc" aria-label="Guide sections"></nav>
|
|
215
|
+
<div class="guide-rail-content" id="guideContent" tabindex="0">
|
|
216
|
+
<div class="guide-loading">Loading Guide…</div>
|
|
217
|
+
</div>
|
|
218
|
+
</div>
|
|
219
|
+
</aside>
|
|
220
|
+
|
|
169
221
|
<!-- Rumen morning-briefing modal (hidden by default) -->
|
|
170
222
|
<div class="rumen-modal" id="rumenModal" role="dialog" aria-modal="true" aria-labelledby="rumenTitle" aria-describedby="rumenSummary">
|
|
171
223
|
<div class="rumen-backdrop" id="rumenBackdrop"></div>
|
|
@@ -199,6 +251,99 @@
|
|
|
199
251
|
</div>
|
|
200
252
|
</div>
|
|
201
253
|
|
|
254
|
+
<!-- Sprint runner modal (Sprint 37 T4): in-dashboard 4+1 sprint definition + kick-off -->
|
|
255
|
+
<div class="sprint-modal" id="sprintModal" role="dialog" aria-modal="true" aria-labelledby="sprintTitle">
|
|
256
|
+
<div class="sprint-backdrop" id="sprintBackdrop"></div>
|
|
257
|
+
<div class="sprint-card">
|
|
258
|
+
<header>
|
|
259
|
+
<h3 id="sprintTitle">Run a 4+1 sprint</h3>
|
|
260
|
+
<p class="sprint-help">
|
|
261
|
+
TermDeck scaffolds <code>docs/sprint-N-<name>/</code> with PLANNING.md, T1–T4 lane briefs,
|
|
262
|
+
and STATUS.md, spawns four Claude Code panels, and injects boot prompts via the
|
|
263
|
+
two-stage submit pattern. Worktree isolation is recommended — each lane gets its own
|
|
264
|
+
git worktree so concurrent edits don't collide.
|
|
265
|
+
</p>
|
|
266
|
+
</header>
|
|
267
|
+
|
|
268
|
+
<div class="sprint-body" id="sprintFormBody">
|
|
269
|
+
<div class="sprint-row">
|
|
270
|
+
<label><span>Project</span>
|
|
271
|
+
<select id="sprintProject"></select>
|
|
272
|
+
</label>
|
|
273
|
+
<label><span>Sprint name <em>(slug)</em></span>
|
|
274
|
+
<input type="text" id="sprintName" placeholder="orchestrator-product" autocomplete="off" spellcheck="false">
|
|
275
|
+
</label>
|
|
276
|
+
<label><span>Target version</span>
|
|
277
|
+
<input type="text" id="sprintTargetVersion" placeholder="0.9.0" autocomplete="off" spellcheck="false">
|
|
278
|
+
</label>
|
|
279
|
+
</div>
|
|
280
|
+
<label class="sprint-full">
|
|
281
|
+
<span>Goal <em>(one line)</em></span>
|
|
282
|
+
<input type="text" id="sprintGoal" placeholder="Ship the in-dashboard 4+1 sprint runner" autocomplete="off">
|
|
283
|
+
</label>
|
|
284
|
+
|
|
285
|
+
<div class="sprint-lanes">
|
|
286
|
+
<div class="sprint-lane" data-lane="1">
|
|
287
|
+
<h4>T1</h4>
|
|
288
|
+
<input type="text" class="sprint-lane-name" placeholder="Lane name (e.g. orchestrator-guide)" autocomplete="off">
|
|
289
|
+
<input type="text" class="sprint-lane-goal" placeholder="Lane goal" autocomplete="off">
|
|
290
|
+
</div>
|
|
291
|
+
<div class="sprint-lane" data-lane="2">
|
|
292
|
+
<h4>T2</h4>
|
|
293
|
+
<input type="text" class="sprint-lane-name" placeholder="Lane name" autocomplete="off">
|
|
294
|
+
<input type="text" class="sprint-lane-goal" placeholder="Lane goal" autocomplete="off">
|
|
295
|
+
</div>
|
|
296
|
+
<div class="sprint-lane" data-lane="3">
|
|
297
|
+
<h4>T3</h4>
|
|
298
|
+
<input type="text" class="sprint-lane-name" placeholder="Lane name" autocomplete="off">
|
|
299
|
+
<input type="text" class="sprint-lane-goal" placeholder="Lane goal" autocomplete="off">
|
|
300
|
+
</div>
|
|
301
|
+
<div class="sprint-lane" data-lane="4">
|
|
302
|
+
<h4>T4</h4>
|
|
303
|
+
<input type="text" class="sprint-lane-name" placeholder="Lane name" autocomplete="off">
|
|
304
|
+
<input type="text" class="sprint-lane-goal" placeholder="Lane goal" autocomplete="off">
|
|
305
|
+
</div>
|
|
306
|
+
</div>
|
|
307
|
+
|
|
308
|
+
<div class="sprint-options">
|
|
309
|
+
<label class="sprint-check">
|
|
310
|
+
<input type="checkbox" id="sprintWorktree" checked>
|
|
311
|
+
<span>Use git worktrees for lane isolation <em>(recommended — prevents cross-lane file collisions)</em></span>
|
|
312
|
+
</label>
|
|
313
|
+
<label class="sprint-check">
|
|
314
|
+
<input type="checkbox" id="sprintAutoInject" checked>
|
|
315
|
+
<span>Auto-inject boot prompts on lane spawn</span>
|
|
316
|
+
</label>
|
|
317
|
+
</div>
|
|
318
|
+
|
|
319
|
+
<div class="sprint-status" id="sprintStatusMsg"></div>
|
|
320
|
+
|
|
321
|
+
<div class="sprint-actions">
|
|
322
|
+
<button class="sprint-cancel" id="sprintCancel">cancel</button>
|
|
323
|
+
<button class="sprint-kickoff" id="sprintKickoff">kick off sprint</button>
|
|
324
|
+
</div>
|
|
325
|
+
</div>
|
|
326
|
+
|
|
327
|
+
<div class="sprint-result" id="sprintResultPanel" style="display:none">
|
|
328
|
+
<h4 id="sprintResultTitle">Sprint launched</h4>
|
|
329
|
+
<div class="sprint-result-meta" id="sprintResultMeta"></div>
|
|
330
|
+
<div class="sprint-lanes-status" id="sprintLanesStatus">
|
|
331
|
+
<div class="sprint-lane-status" data-lane="T1"><h4>T1</h4><div class="counts">—</div><div class="last-entry">—</div></div>
|
|
332
|
+
<div class="sprint-lane-status" data-lane="T2"><h4>T2</h4><div class="counts">—</div><div class="last-entry">—</div></div>
|
|
333
|
+
<div class="sprint-lane-status" data-lane="T3"><h4>T3</h4><div class="counts">—</div><div class="last-entry">—</div></div>
|
|
334
|
+
<div class="sprint-lane-status" data-lane="T4"><h4>T4</h4><div class="counts">—</div><div class="last-entry">—</div></div>
|
|
335
|
+
</div>
|
|
336
|
+
<div class="sprint-tail-wrap">
|
|
337
|
+
<h5>STATUS.md tail</h5>
|
|
338
|
+
<pre class="sprint-tail" id="sprintTail">—</pre>
|
|
339
|
+
</div>
|
|
340
|
+
<div class="sprint-actions">
|
|
341
|
+
<button class="sprint-cancel" id="sprintResultClose">close</button>
|
|
342
|
+
</div>
|
|
343
|
+
</div>
|
|
344
|
+
</div>
|
|
345
|
+
</div>
|
|
346
|
+
|
|
202
347
|
<script src="https://cdn.jsdelivr.net/npm/@xterm/xterm@5.5.0/lib/xterm.min.js"></script>
|
|
203
348
|
<script src="https://cdn.jsdelivr.net/npm/@xterm/addon-fit@0.10.0/lib/addon-fit.min.js"></script>
|
|
204
349
|
<script src="https://cdn.jsdelivr.net/npm/@xterm/addon-web-links@0.11.0/lib/addon-web-links.min.js"></script>
|