@yemi33/minions 0.1.2177 → 0.1.2179

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 (44) hide show
  1. package/bin/minions.js +24 -11
  2. package/dashboard/js/command-parser.js +1 -1
  3. package/dashboard/js/memory-panel.js +262 -0
  4. package/dashboard/js/qa.js +2 -2
  5. package/dashboard/js/refresh.js +9 -1
  6. package/dashboard/js/render-dispatch.js +92 -0
  7. package/dashboard/js/render-other.js +1 -1
  8. package/dashboard/js/render-plans.js +82 -13
  9. package/dashboard/js/render-prs.js +2 -1
  10. package/dashboard/js/render-schedules.js +1 -1
  11. package/dashboard/js/render-watches.js +1 -1
  12. package/dashboard/js/settings.js +100 -11
  13. package/dashboard/layout.html +6 -0
  14. package/dashboard/pages/engine-memory-panel.html +49 -0
  15. package/dashboard/pages/engine.html +1 -0
  16. package/dashboard/slim/js/link-pr.js +5 -5
  17. package/dashboard/slim/js/modals-tiles.js +44 -3
  18. package/dashboard/slim/js/projects.js +8 -6
  19. package/dashboard/slim/styles.css +20 -0
  20. package/dashboard/styles.css +39 -0
  21. package/dashboard-build.js +17 -2
  22. package/dashboard.js +469 -21
  23. package/docs/README.md +8 -1
  24. package/docs/auto-discovery.md +40 -0
  25. package/docs/branch-derivation.md +13 -1
  26. package/docs/cross-repo-plans.md +292 -0
  27. package/docs/deprecated.json +4 -4
  28. package/docs/pr-auto-fix-dispatch.md +64 -0
  29. package/docs/pr-review-fix-loop.md +1 -1
  30. package/docs/watches.md +1 -0
  31. package/engine/ado.js +1 -10
  32. package/engine/diagnostics-memory.js +190 -0
  33. package/engine/dispatch.js +53 -0
  34. package/engine/lifecycle.js +155 -191
  35. package/engine/meeting.js +30 -0
  36. package/engine/playbook.js +15 -0
  37. package/engine/queries.js +165 -5
  38. package/engine/runtimes/copilot.js +19 -0
  39. package/engine/shared.js +303 -3
  40. package/engine/watchdog.js +6 -0
  41. package/engine.js +576 -113
  42. package/package.json +2 -2
  43. package/playbooks/plan-to-prd.md +25 -2
  44. package/playbooks/plan.md +4 -2
@@ -681,6 +681,26 @@
681
681
  .tile-chip.blue { background: rgba(88, 166, 255, 0.12); color: var(--blue); border-color: var(--blue); }
682
682
  .tile-empty { color: var(--muted); font-style: italic; font-size: var(--text-md); }
683
683
 
684
+ /* Collapsible PR sections (Active / Merged-Completed / Abandoned). Uses
685
+ native <details>/<summary> — no JS wiring needed for the toggle. */
686
+ .tile-section { margin-bottom: 10px; }
687
+ .tile-section:last-child { margin-bottom: 0; }
688
+ .tile-section-summary {
689
+ display: flex; align-items: center; gap: 6px;
690
+ cursor: pointer; user-select: none;
691
+ padding: 4px 2px; margin-bottom: 6px;
692
+ list-style: none;
693
+ font-size: var(--text-base); color: var(--muted);
694
+ }
695
+ .tile-section-summary::-webkit-details-marker { display: none; }
696
+ .tile-section-summary::before {
697
+ content: "▸"; color: var(--muted); font-size: var(--text-sm);
698
+ transition: transform 0.15s ease;
699
+ }
700
+ .tile-section[open] > .tile-section-summary::before { content: "▾"; }
701
+ .tile-section-label { font-weight: 700; letter-spacing: 0.3px; text-transform: uppercase; color: var(--text); }
702
+ .tile-section-count { color: var(--muted); }
703
+
684
704
  /* Pinned-context list rows (slim-pinned-modal). */
685
705
  .pinned-row {
686
706
  border: 1px solid var(--border);
@@ -873,6 +873,45 @@
873
873
  opacity: 0.5; pointer-events: none; cursor: default;
874
874
  }
875
875
 
876
+ /* P-g7a2b4c5 — sticky kill-switch banner. Lists every paused engine surface
877
+ (engine.pollingPaused, engine.autoFixPaused) with a per-row Resume button.
878
+ Yellow palette (separate from the red engine-alert) so operators can
879
+ distinguish "intentionally paused" from "broken / stale". */
880
+ .paused-banner {
881
+ position: sticky; top: 0; z-index: 320;
882
+ margin: 0; padding: 8px 24px;
883
+ background: rgba(234, 179, 8, 0.14);
884
+ border-bottom: 1px solid rgba(234, 179, 8, 0.55);
885
+ color: var(--text); font-size: var(--text-base);
886
+ display: flex; flex-direction: column; gap: 6px;
887
+ }
888
+ .paused-banner[hidden] { display: none; }
889
+ .paused-banner-title {
890
+ font-weight: 700; color: var(--yellow);
891
+ display: flex; align-items: center; gap: 6px;
892
+ }
893
+ .paused-banner-list {
894
+ display: flex; flex-direction: column; gap: 4px;
895
+ margin: 0; padding: 0; list-style: none;
896
+ }
897
+ .paused-banner-row {
898
+ display: flex; align-items: center; gap: 10px;
899
+ padding: 4px 0;
900
+ }
901
+ .paused-banner-row-label { flex: 1; color: var(--text); }
902
+ .paused-banner-row-detail { color: var(--muted); font-size: var(--text-sm); }
903
+ .paused-banner-row-resume {
904
+ color: var(--blue); cursor: pointer; font-size: var(--text-sm);
905
+ padding: 2px 10px; border: 1px solid rgba(56, 139, 253, 0.45);
906
+ border-radius: 4px; background: rgba(56, 139, 253, 0.08);
907
+ font-family: inherit; transition: opacity 0.2s;
908
+ }
909
+ .paused-banner-row-resume:hover { background: rgba(56, 139, 253, 0.18); }
910
+ .paused-banner-row-resume:disabled,
911
+ .paused-banner-row-resume.clicked {
912
+ opacity: 0.5; pointer-events: none; cursor: default;
913
+ }
914
+
876
915
  /* Dispatch Queue */
877
916
  .dispatch-stats { display: flex; gap: var(--space-7); margin-bottom: 14px; }
878
917
  .dispatch-stat { text-align: center; background: var(--surface2); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: var(--space-5) 18px; }
@@ -21,9 +21,24 @@ function buildDashboardHtml() {
21
21
  const css = safeRead(path.join(dashDir, 'styles.css'));
22
22
 
23
23
  const pages = ['home', 'work', 'prs', 'plans', 'inbox', 'tools', 'schedule', 'watches', 'pipelines', 'meetings', 'qa', 'engine'];
24
+ // Sub-fragments substituted into a parent page at assembly time via
25
+ // <!-- __MARKER__ --> tokens. Lets large panels live in their own
26
+ // fragment file without inflating the parent page. P-d4e5f6a7 introduced
27
+ // engine-memory-panel.html as the first such sub-fragment; add more here
28
+ // by mapping marker -> fragment basename.
29
+ const pageSubFragments = {
30
+ engine: { '<!-- __ENGINE_MEMORY_PANEL__ -->': 'engine-memory-panel' },
31
+ };
24
32
  let pageHtml = '';
25
33
  for (const p of pages) {
26
- const content = safeRead(path.join(dashDir, 'pages', p + '.html'));
34
+ let content = safeRead(path.join(dashDir, 'pages', p + '.html'));
35
+ const subs = pageSubFragments[p];
36
+ if (subs) {
37
+ for (const [marker, basename] of Object.entries(subs)) {
38
+ const fragment = safeRead(path.join(dashDir, 'pages', basename + '.html'));
39
+ content = content.replace(marker, () => fragment);
40
+ }
41
+ }
27
42
  const activeClass = p === 'home' ? ' active' : '';
28
43
  pageHtml += ` <div class="page${activeClass}" id="page-${p}">\n${content}\n </div>\n\n`;
29
44
  }
@@ -32,7 +47,7 @@ function buildDashboardHtml() {
32
47
  'utils', 'state', 'features-client', 'render-utils', 'detail-panel', 'live-stream',
33
48
  'render-agents', 'render-dispatch', 'render-work-items', 'render-prd',
34
49
  'render-prs', 'render-plans', 'render-inbox', 'render-kb', 'render-skills',
35
- 'render-other', 'render-managed', 'render-schedules', 'render-watches', 'render-pipelines', 'render-meetings', 'render-pinned',
50
+ 'render-other', 'render-managed', 'memory-panel', 'render-schedules', 'render-watches', 'render-pipelines', 'render-meetings', 'render-pinned',
36
51
  'command-parser', 'command-input', 'command-center', 'command-history',
37
52
  'confirm-dialog', 'modal', 'modal-qa', 'settings', 'qa', 'fre', 'refresh'
38
53
  ];