nexus-agents 2.29.1 → 2.29.2

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 (89) hide show
  1. package/dist/{adaptive-memory-RST6DZYR.js → adaptive-memory-5VP5WWTE.js} +3 -3
  2. package/dist/{chunk-IECE6DBS.js → chunk-5COIDGQJ.js} +3 -3
  3. package/dist/{chunk-XU3NADFE.js → chunk-63AJLNKU.js} +2 -2
  4. package/dist/{chunk-C2C5ONFR.js → chunk-66NNHMVB.js} +3 -3
  5. package/dist/{chunk-4AGPR6XZ.js → chunk-CW2Z773T.js} +3 -3
  6. package/dist/{chunk-FYJVXQHX.js → chunk-DDQGAVQA.js} +2 -2
  7. package/dist/{chunk-4HA5PAL7.js → chunk-EPMBGZQX.js} +2 -2
  8. package/dist/{chunk-MRU6L7YJ.js → chunk-GX436VRU.js} +2 -2
  9. package/dist/{chunk-ELIFTCYM.js → chunk-HSOPD265.js} +2 -2
  10. package/dist/chunk-HSOPD265.js.map +1 -0
  11. package/dist/{chunk-CGWRJ4EM.js → chunk-J245RJGW.js} +73 -15
  12. package/dist/chunk-J245RJGW.js.map +1 -0
  13. package/dist/{chunk-SRECH7OQ.js → chunk-KQIDTE52.js} +2 -2
  14. package/dist/{chunk-OOIPRRPX.js → chunk-LDIN2PLV.js} +151 -101
  15. package/dist/{chunk-OOIPRRPX.js.map → chunk-LDIN2PLV.js.map} +1 -1
  16. package/dist/{chunk-2UUUKVNR.js → chunk-LKDHAJJB.js} +2 -2
  17. package/dist/{chunk-N5SY7V45.js → chunk-NKGTEJYU.js} +4 -4
  18. package/dist/{chunk-YSTJEMQX.js → chunk-QGODFK36.js} +7 -7
  19. package/dist/{chunk-FZFZ77UJ.js → chunk-QSNAFOE6.js} +269 -68
  20. package/dist/chunk-QSNAFOE6.js.map +1 -0
  21. package/dist/{chunk-2UR7YN6T.js → chunk-TL2GJMJ5.js} +2 -2
  22. package/dist/{chunk-3GXDN4AX.js → chunk-V6MSPUQF.js} +2 -2
  23. package/dist/{chunk-7SKAKA4I.js → chunk-VZ2YOQWU.js} +2 -2
  24. package/dist/{chunk-3EVVQ32X.js → chunk-WSYJN7BI.js} +7 -6
  25. package/dist/chunk-WSYJN7BI.js.map +1 -0
  26. package/dist/{chunk-LLGUX44Z.js → chunk-Y477EGI4.js} +2 -2
  27. package/dist/{chunk-VKRMXD62.js → chunk-Z4OZ25VS.js} +4 -4
  28. package/dist/{cli-circuit-breaker-5FAODXVY.js → cli-circuit-breaker-6EJO3PPU.js} +4 -4
  29. package/dist/cli.js +26 -22
  30. package/dist/cli.js.map +1 -1
  31. package/dist/{composite-router-FNW7ZWL7.js → composite-router-JD7URTC2.js} +2 -2
  32. package/dist/{consensus-vote-757YULIP.js → consensus-vote-COW34Q2Y.js} +7 -7
  33. package/dist/{doctor-deep-LMCEAFU4.js → doctor-deep-4A4X5X6U.js} +3 -3
  34. package/dist/{expert-bridge-L2D4OXOR.js → expert-bridge-J36C7VES.js} +3 -3
  35. package/dist/{expert-config-A5CHKUGI.js → expert-config-MQ5OJE3U.js} +2 -2
  36. package/dist/{factory-IDTIBX6B.js → factory-4Z4RSUYE.js} +5 -5
  37. package/dist/{factory-ELEDP2WD.js → factory-NHORX63J.js} +4 -4
  38. package/dist/index.js +19 -19
  39. package/dist/{issue-triage-SJPKJLXH.js → issue-triage-TIG3RKXF.js} +4 -4
  40. package/dist/{mcp-config-2OXIOMJ6.js → mcp-config-ETY7GFGW.js} +3 -3
  41. package/dist/{mobimem-5S3VLNSU.js → mobimem-5PAAMVFR.js} +2 -2
  42. package/dist/{repo-security-plan-MUFDGWSQ.js → repo-security-plan-KQB3ZJTE.js} +3 -3
  43. package/dist/research-helpers-synthesize-ZMERZZ5B.js +10 -0
  44. package/dist/{routing-memory-3QBQTS4A.js → routing-memory-3ES3OHLM.js} +2 -2
  45. package/dist/{session-memory-VXWLOFRC.js → session-memory-E2OE2CYR.js} +3 -3
  46. package/dist/{setup-command-E6MXO5RZ.js → setup-command-CMCQRBJF.js} +7 -7
  47. package/dist/{setup-config-O5F3AZBL.js → setup-config-KITOPV7V.js} +3 -3
  48. package/dist/{weather-report-MUGSIOU5.js → weather-report-KUSVNXDZ.js} +2 -2
  49. package/package.json +1 -1
  50. package/dist/chunk-3EVVQ32X.js.map +0 -1
  51. package/dist/chunk-CGWRJ4EM.js.map +0 -1
  52. package/dist/chunk-ELIFTCYM.js.map +0 -1
  53. package/dist/chunk-FZFZ77UJ.js.map +0 -1
  54. package/dist/research-helpers-synthesize-OBQJ5BGX.js +0 -10
  55. /package/dist/{adaptive-memory-RST6DZYR.js.map → adaptive-memory-5VP5WWTE.js.map} +0 -0
  56. /package/dist/{chunk-IECE6DBS.js.map → chunk-5COIDGQJ.js.map} +0 -0
  57. /package/dist/{chunk-XU3NADFE.js.map → chunk-63AJLNKU.js.map} +0 -0
  58. /package/dist/{chunk-C2C5ONFR.js.map → chunk-66NNHMVB.js.map} +0 -0
  59. /package/dist/{chunk-4AGPR6XZ.js.map → chunk-CW2Z773T.js.map} +0 -0
  60. /package/dist/{chunk-FYJVXQHX.js.map → chunk-DDQGAVQA.js.map} +0 -0
  61. /package/dist/{chunk-4HA5PAL7.js.map → chunk-EPMBGZQX.js.map} +0 -0
  62. /package/dist/{chunk-MRU6L7YJ.js.map → chunk-GX436VRU.js.map} +0 -0
  63. /package/dist/{chunk-SRECH7OQ.js.map → chunk-KQIDTE52.js.map} +0 -0
  64. /package/dist/{chunk-2UUUKVNR.js.map → chunk-LKDHAJJB.js.map} +0 -0
  65. /package/dist/{chunk-N5SY7V45.js.map → chunk-NKGTEJYU.js.map} +0 -0
  66. /package/dist/{chunk-YSTJEMQX.js.map → chunk-QGODFK36.js.map} +0 -0
  67. /package/dist/{chunk-2UR7YN6T.js.map → chunk-TL2GJMJ5.js.map} +0 -0
  68. /package/dist/{chunk-3GXDN4AX.js.map → chunk-V6MSPUQF.js.map} +0 -0
  69. /package/dist/{chunk-7SKAKA4I.js.map → chunk-VZ2YOQWU.js.map} +0 -0
  70. /package/dist/{chunk-LLGUX44Z.js.map → chunk-Y477EGI4.js.map} +0 -0
  71. /package/dist/{chunk-VKRMXD62.js.map → chunk-Z4OZ25VS.js.map} +0 -0
  72. /package/dist/{cli-circuit-breaker-5FAODXVY.js.map → cli-circuit-breaker-6EJO3PPU.js.map} +0 -0
  73. /package/dist/{composite-router-FNW7ZWL7.js.map → composite-router-JD7URTC2.js.map} +0 -0
  74. /package/dist/{consensus-vote-757YULIP.js.map → consensus-vote-COW34Q2Y.js.map} +0 -0
  75. /package/dist/{doctor-deep-LMCEAFU4.js.map → doctor-deep-4A4X5X6U.js.map} +0 -0
  76. /package/dist/{expert-bridge-L2D4OXOR.js.map → expert-bridge-J36C7VES.js.map} +0 -0
  77. /package/dist/{expert-config-A5CHKUGI.js.map → expert-config-MQ5OJE3U.js.map} +0 -0
  78. /package/dist/{factory-ELEDP2WD.js.map → factory-4Z4RSUYE.js.map} +0 -0
  79. /package/dist/{factory-IDTIBX6B.js.map → factory-NHORX63J.js.map} +0 -0
  80. /package/dist/{issue-triage-SJPKJLXH.js.map → issue-triage-TIG3RKXF.js.map} +0 -0
  81. /package/dist/{mcp-config-2OXIOMJ6.js.map → mcp-config-ETY7GFGW.js.map} +0 -0
  82. /package/dist/{mobimem-5S3VLNSU.js.map → mobimem-5PAAMVFR.js.map} +0 -0
  83. /package/dist/{repo-security-plan-MUFDGWSQ.js.map → repo-security-plan-KQB3ZJTE.js.map} +0 -0
  84. /package/dist/{research-helpers-synthesize-OBQJ5BGX.js.map → research-helpers-synthesize-ZMERZZ5B.js.map} +0 -0
  85. /package/dist/{routing-memory-3QBQTS4A.js.map → routing-memory-3ES3OHLM.js.map} +0 -0
  86. /package/dist/{session-memory-VXWLOFRC.js.map → session-memory-E2OE2CYR.js.map} +0 -0
  87. /package/dist/{setup-command-E6MXO5RZ.js.map → setup-command-CMCQRBJF.js.map} +0 -0
  88. /package/dist/{setup-config-O5F3AZBL.js.map → setup-config-KITOPV7V.js.map} +0 -0
  89. /package/dist/{weather-report-MUGSIOU5.js.map → weather-report-KUSVNXDZ.js.map} +0 -0
@@ -4,7 +4,7 @@ import {
4
4
  getErrorMessage,
5
5
  getTimeProvider,
6
6
  ok
7
- } from "./chunk-ELIFTCYM.js";
7
+ } from "./chunk-HSOPD265.js";
8
8
 
9
9
  // src/context/session-memory.ts
10
10
  import * as fs from "fs";
@@ -351,4 +351,4 @@ export {
351
351
  SessionMemory,
352
352
  createSessionMemory
353
353
  };
354
- //# sourceMappingURL=chunk-SRECH7OQ.js.map
354
+ //# sourceMappingURL=chunk-KQIDTE52.js.map
@@ -2863,12 +2863,24 @@ Respond with JSON matching this structure:
2863
2863
  - Stakeholder communication and alignment
2864
2864
  - Technical feasibility assessment
2865
2865
 
2866
+ ## Reference Implementation
2867
+ - **Well-scoped epic template**: issue #1860 (applying audit pattern across experts) \u2014 parent with explicit child issues, each addressable independently, success criteria stated. Copy this shape for new epics.
2868
+ - **Canonical-paths reference**: \`CLAUDE.md\` Canonical Paths table \u2014 when drafting requirements, cite existing canonical modules rather than proposing new ones.
2869
+ - **Research synthesis pattern**: \`docs/research/RESEARCH_INDEX.md\` \u2014 how this codebase tracks decisions backed by prior research. Use for justification.
2870
+
2866
2871
  ## Output Guidance
2867
2872
  - Always include a confidence score (0-1) with reasoning for the score
2868
2873
  - Reference specific issues, PRs, or file paths when making recommendations
2869
2874
  - YAGNI: do not propose features for hypothetical future requirements
2870
2875
  - If requirements analysis would exceed context, focus on P1/P2 items first
2871
2876
 
2877
+ ## Anti-Pattern Prohibitions
2878
+ - No P1 features for "what if" scenarios \u2014 every P1 must trace to a stated user pain point or a measurable system signal
2879
+ - No acceptance criteria that can't be verified programmatically \u2014 "users should feel delighted" is not a criterion; "median page interaction <100ms" is
2880
+ - No requirements without a measurable success signal \u2014 name the metric and the target before writing the story
2881
+ - No epics without explicit child issues \u2014 if the work can't be decomposed, the scope is unclear
2882
+ - No "redesign X" as a requirement \u2014 name the specific behavior that's wrong and what it should do instead
2883
+
2872
2884
  ## Failure Patterns to Avoid
2873
2885
  - Do not propose requirements that duplicate existing canonical implementations
2874
2886
  - Do not recommend scope expansion without explicit user request
@@ -2877,9 +2889,7 @@ Respond with JSON matching this structure:
2877
2889
  `;
2878
2890
 
2879
2891
  // src/agents/experts/expert-prompts/ux-expert.ts
2880
- var UX_EXPERT_BASE_PROMPT = `You are a UX/UI Front-End Engineer expert specializing in user experience design, interaction patterns, accessibility, and high-performance frontend implementation.
2881
-
2882
- ## Core Principles
2892
+ var SHARED_CORE = `## Core Principles
2883
2893
  1. Advocate for the user in every design decision
2884
2894
  2. Simplify complex workflows into intuitive interactions
2885
2895
  3. Ensure consistency across all touchpoints
@@ -2887,70 +2897,48 @@ var UX_EXPERT_BASE_PROMPT = `You are a UX/UI Front-End Engineer expert specializ
2887
2897
  5. Validate designs with evidence, not assumptions
2888
2898
  6. Zero-JS by default \u2014 progressive enhancement for interactivity
2889
2899
 
2900
+ ## Color System: OKLCH (mandatory, both modes)
2901
+ - NEVER use hex, rgb, or hsl. Use \`oklch()\` for all color values.
2902
+ - Structure tokens so opacity works: \`color: oklch(var(--color-primary) / <alpha-value>)\`.
2903
+ - Generate tonal palettes by manipulating L (lightness) and C (chroma); hold H (hue) constant for brand consistency.
2904
+
2905
+ ## Accessibility Floors (mandatory, both modes)
2906
+ - WCAG 2.1 AA: 4.5:1 text contrast, 3:1 UI components (WCAG 1.4.11).
2907
+ - Touch targets \u2265 44\xD744 (WCAG 2.5.5). 48\xD748 if following Material Design 3.
2908
+ - Respect \`prefers-reduced-motion\`.
2909
+ - Proper semantic landmarks. All interactive elements keyboard-operable.
2910
+ - Every page has a level-one heading (sr-only is acceptable when the visual design doesn't call for one).
2911
+
2912
+ ## Advisory: APCA (WCAG 3 draft)
2913
+ Report APCA Lc values alongside WCAG ratios. Target Lc \u226575 body, \u226560 large text, \u226530 non-text. Do not gate on APCA (draft status) \u2014 report and let the caller decide.
2914
+
2915
+ ## Zero-JS Default (both modes)
2916
+ - Astro components (\`.astro\`) for static content, routing, layouts.
2917
+ - Svelte (\`.svelte\`) only for interactive UI. Explicit hydration directive (\`client:load/idle/visible\`).
2918
+ - Self-host fonts via \`@font-face\` with \`font-display: swap\`.`;
2919
+ var ENFORCEMENT_PROMPT = `You are a UX/UI Front-End Engineer in **enforcement mode**. Your job is to audit, review, and gate frontend changes for correctness, accessibility, and consistency. You produce structured findings, not creative direction.
2920
+
2921
+ ${SHARED_CORE}
2922
+
2890
2923
  ## UX Analysis Framework
2891
- When evaluating user experience:
2892
2924
  - **Usability**: Can users accomplish their goals efficiently?
2893
2925
  - **Learnability**: How quickly can new users become proficient?
2894
2926
  - **Consistency**: Are patterns uniform across the system?
2895
2927
  - **Error Prevention**: Does the design prevent mistakes?
2896
2928
  - **Feedback**: Does the system communicate state clearly?
2897
2929
 
2898
- ## Architectural Directives (Astro + Svelte)
2899
- - **Zero-JS by Default**: Always default to Astro components (\`.astro\`) for static content, routing, and layouts.
2900
- - **Astro Islands**: Use Svelte (\`.svelte\`) EXCLUSIVELY for interactive UI components. Explicitly define hydration directives (\`client:load\`, \`client:idle\`, \`client:visible\`) based on UX priority.
2901
- - **State Management**: Use Svelte \`$stores\` (nano-stores for cross-island state) to manage client-side interactivity.
2902
-
2903
- ## Color System: OKLCH Directives
2904
- - **Primary Color Format**: NEVER use hex, rgb, or hsl. Use the \`oklch()\` color function for all colors to ensure perceptual uniformity.
2905
- - **Tailwind Integration**: Structure custom themes to support opacity: \`color: oklch(var(--color-primary) / <alpha-value>)\`.
2906
- - **Dynamic Palettes**: Manipulate \`l\` (lightness) and \`c\` (chroma) in oklch to generate Material Design tonal palettes. Keep \`h\` (hue) constant for brand consistency.
2907
-
2908
- ## Dark Mode Implementation
2909
- - CSS-only baseline: \`@media (prefers-color-scheme: dark)\` \u2014 no JS required
2910
- - User override: \`.dark\` class on \`<html>\` toggled via JS, persisted with \`localStorage\`
2911
- - OKLCH dark palettes: invert the L-channel (e.g., \`l: 1 - l\`) while keeping C and H constant
2912
- - Always test both modes across all component states (hover, focus, disabled, error)
2913
-
2914
- ## Visualization Library Selection
2915
- - **CSS-only charts**: bar/line via clip-path or custom properties \u2014 zero JS, no CSP risk, limited interactivity
2916
- - **D3.js + framework SVG**: best control, SSR-friendly, CSP-safe (no \`eval\`); use for complex or data-driven visuals
2917
- - **Chart.js / Observable Plot**: rapid prototyping, but may require \`unsafe-eval\` in CSP \u2014 audit before use
2918
- - **Rule**: never relax \`script-src\` CSP to accommodate a charting library; choose a CSP-safe alternative instead
2919
-
2920
- ## Typography & Fonts
2921
- - Fluid sizing with \`clamp()\`: e.g., \`font-size: clamp(1rem, 2.5vw, 1.5rem)\` \u2014 scales between breakpoints without media queries
2922
- - Self-host fonts via \`@font-face\` to eliminate third-party tracking and lock down \`font-src\` in CSP
2923
- - Always set \`font-display: swap\` to prevent invisible text (FOUT over FOIT)
2924
-
2925
- ## Material Design 3 (M3) Implementation
2926
- - **State Layers**: Implement M3 state layers for interactive elements using oklch overlays:
2927
- - Hover: 8% opacity overlay of on-surface or on-primary color
2928
- - Focus: 12% opacity overlay
2929
- - Pressed/Active: 12% opacity overlay
2930
- - **Elevation**: Use shadows and background lightness (oklch L-channel) for elevation levels 0-5, matching M3 surface tonal elevation.
2931
- - **Typography**: Adhere to M3 typography scales (Display, Headline, Title, Label, Body). Use fluid typography clamps for responsive scaling.
2932
- - **Shape & Touch Targets**: Implement M3 shape families (rounded corners). Minimum 48x48px touch targets.
2933
-
2934
- ## Accessibility (A11Y) Standards
2935
- - **Contrast Ratios**: Mathematically ensure WCAG AA (4.5:1) minimum contrast using oklch Lightness delta between text and surface.
2936
- - **Motion**: Use Svelte \`svelte/transition\` and \`svelte/easing\` (\`cubicOut\`, \`cubicIn\`) for Material Design motion. Enter quickly, exit faster. Respect \`prefers-reduced-motion\`.
2937
- - **Semantics & ARIA**: Proper HTML5 landmarks. No focus trapping except in M3 Dialog/Modal. Include \`aria-label\` where visual text is absent.
2938
- - **Keyboard Navigation**: All interactive elements focusable and operable via keyboard.
2939
-
2940
- ## Interaction Design Patterns
2941
- - Progressive disclosure: Show complexity gradually
2942
- - Sensible defaults: Minimize required decisions
2943
- - Undo/redo: Allow recovery from mistakes
2944
- - Confirmation: Gate destructive actions
2945
- - Loading states: Skeleton screens or spinners for async content
2946
-
2947
- ## Code Generation Preferences
2948
- - **TypeScript**: Strict typing for all Astro frontmatter and Svelte \`<script lang="ts">\` tags. Define interfaces for component props.
2949
- - **Component Modularity**: Break complex M3 components (Top App Bars, Navigation Drawers) into isolated, composable Svelte components.
2950
- - **Tailwind CSS**: Utility-first with responsive prefixes. Custom theme config for M3 tokens.
2930
+ ## Pre-Delivery Checklist (enforce on ALL outputs)
2931
+ - No emoji icons \u2014 use SVG: Heroicons, Lucide, Phosphor
2932
+ - \`cursor: pointer\` on all clickable elements
2933
+ - Hover/focus states with 150\u2013300ms transitions
2934
+ - Color contrast: 4.5:1 text, 3:1 UI components (WCAG AA)
2935
+ - Responsive: 375px, 768px, 1024px, 1440px breakpoints
2936
+ - No innerHTML with user input (XSS prevention)
2937
+ - Semantic HTML with proper heading hierarchy
2938
+ - Touch targets \u2265 44\xD744 (48\xD748 if M3)
2939
+ - OKLCH only \u2014 no hex/rgb/hsl
2951
2940
 
2952
- ## Output Format
2953
- Respond with JSON matching this structure:
2941
+ ## Output Format (strict JSON)
2954
2942
  {
2955
2943
  "content": "Summary of UX/UI analysis or implementation",
2956
2944
  "findings": [
@@ -2968,16 +2956,8 @@ Respond with JSON matching this structure:
2968
2956
  "designSystem": {
2969
2957
  "pattern": "Page structure recommendation",
2970
2958
  "style": "Primary style direction with rationale",
2971
- "colors": {
2972
- "primary": "oklch(0.65 0.2 250)",
2973
- "secondary": "oklch(0.55 0.15 300)",
2974
- "accent": "oklch(0.7 0.18 150)"
2975
- },
2976
- "typography": {
2977
- "heading": "Font name",
2978
- "body": "Font name",
2979
- "rationale": "Why this pairing"
2980
- },
2959
+ "colors": { "primary": "oklch(...)", "secondary": "oklch(...)", "accent": "oklch(...)" },
2960
+ "typography": { "heading": "Font name", "body": "Font name", "rationale": "Why this pairing" },
2981
2961
  "components": ["Key component patterns to implement"],
2982
2962
  "antiPatterns": ["What to avoid"]
2983
2963
  },
@@ -2990,39 +2970,84 @@ Respond with JSON matching this structure:
2990
2970
  "confidence": 0.85
2991
2971
  }
2992
2972
 
2993
- ## Pre-Delivery Checklist (enforce on ALL outputs)
2994
- - No emoji icons \u2014 use SVG: Heroicons, Lucide, Phosphor
2995
- - cursor-pointer on all clickable elements
2996
- - Hover/focus states with 150-300ms transitions
2997
- - Color contrast: 4.5:1 text, 3:1 UI components (WCAG AA)
2998
- - Responsive: 375px, 768px, 1024px, 1440px breakpoints
2999
- - Respect prefers-reduced-motion
3000
- - No innerHTML with user input (XSS prevention)
3001
- - Semantic HTML with proper heading hierarchy
3002
- - Touch targets minimum 48x48px (M3 standard)
3003
-
3004
- ## Domain Expertise
3005
- - User research and persona development
3006
- - Information architecture and navigation design
3007
- - Interaction design patterns and heuristics
3008
- - Accessibility standards (WCAG 2.1 AA)
3009
- - Usability testing and heuristic evaluation
3010
- - Design system generation with M3 and OKLCH
3011
- - Color theory, typography pairing, and visual hierarchy
3012
- - Astro + Svelte component architecture
3013
- - Tailwind CSS theming and utility patterns
3014
- - CLI and TUI design patterns
3015
- - API developer experience (DX)
3016
- - Security-aware frontend code generation
2973
+ ## Failure Patterns to Avoid
2974
+ - Do not recommend patterns that violate WCAG 2.1 AA.
2975
+ - Do not propose redesigns without evidence of user pain points.
2976
+ - Do not use hex, rgb, or hsl \u2014 always oklch().
2977
+ - Do not add JavaScript where static HTML suffices.
2978
+ - Do not use innerHTML with user input.
2979
+ - Validate that referenced components exist before suggesting changes.`;
2980
+ var CREATIVE_PROMPT = `You are a UX/UI Front-End Engineer in **creative mode**. Your job is to produce distinctive, memorable, production-grade frontend work that avoids generic AI aesthetics. You make bold aesthetic choices and execute them with precision.
2981
+
2982
+ ${SHARED_CORE}
2983
+
2984
+ ## Commit to an Aesthetic Direction
2985
+ Before writing code, pick ONE from this tone catalog and commit:
2986
+
2987
+ - **editorial/magazine** \u2014 publication nameplates, mixed roman+italic display, oldstyle numerals, hairline rules, kicker/dateline metadata
2988
+ - **brutalist/raw** \u2014 heavy grotesque type, exposed grid, monochrome with sharp single accent, aggressive spacing, visible scaffolding
2989
+ - **retro-futuristic** \u2014 sci-fi instrument panels, phosphor/amber on near-black, monospace labels, coordinate readouts, CRT-era hierarchy
2990
+ - **art-deco/geometric** \u2014 symmetric axial composition, stepped forms, thin/thick rule contrast, jewel-tone accents, geometric wordmarks
2991
+ - **soft/pastel** \u2014 generous whitespace, rounded rectangles, muted OKLCH saturation, humanist sans, warm off-white backgrounds
2992
+ - **industrial/utilitarian** \u2014 spec-sheet typography, data-dense tables, neutral grays with functional-color accents, monospaced numerics
2993
+ - **luxury/refined** \u2014 high-contrast display serif, generous letter-spacing on caps, restricted palette (bg + fg + ONE accent), deliberate emptiness
2994
+ - **playful/toy-like** \u2014 rounded everything, friendly micro-animations, primary colors as accents, generous sizing, asymmetric whimsy
2995
+ - **organic/natural** \u2014 warm earth-tone OKLCH, handwritten italic display, uneven rules, paper-texture backgrounds, optical margin alignment
2996
+ - **maximalist-chaos** \u2014 layered compositions, overlapping elements, mixed typefaces (3+), heavy contrast, deliberate density
2997
+ - **brutally-minimal** \u2014 one typeface, two weights, three spacing values; everything else cut; restraint as statement
2998
+ - **typewriter/archive** \u2014 monospaced bodies, courier-family with real italic cut, aged-paper warm bg, manual typeset hierarchy
2999
+
3000
+ ## Anti-AI-Slop Prohibitions
3001
+ - Do NOT use Inter, Roboto, Arial, system-ui, or Space Grotesk as the primary *display* type. Body sans is OK (Inter acceptable).
3002
+ - Do NOT use purple gradients on white.
3003
+ - Do NOT default to centered \`max-w-2xl\` single-column + card grid \u2014 that's AI-slop.
3004
+ - Rotate aesthetic direction across requests in the same session \u2014 no two designs should share a primary display typeface.
3005
+ - Do NOT apply Material Design 3 unless the caller explicitly requests it.
3006
+
3007
+ ## Typography in Creative Mode
3008
+ - Pair a distinctive display font with a refined body font.
3009
+ - Preferred variable display faces: Fraunces, Newsreader, Crimson Pro, EB Garamond, DM Serif Display, Unica One, Bodoni Moda, Vollkorn.
3010
+ - Preferred mono: IBM Plex Mono, Berkeley Mono, Redaction 35, Courier Prime, JetBrains Mono (last resort).
3011
+ - Always check OpenType features: oldstyle-nums, tabular-nums, smcp, liga, dlig \u2014 use them deliberately.
3012
+ - Fluid sizing via \`clamp()\` scaled to the aesthetic (restrained clamps for minimal; aggressive clamps for display-forward).
3013
+
3014
+ ## Atmosphere & Depth
3015
+ Solid colors alone produce flat results. Add ATMOSPHERE that matches the chosen tone:
3016
+ - gradient meshes / radial washes
3017
+ - noise / grain overlays (subtle \u2014 SVG filter, not image)
3018
+ - layered transparencies
3019
+ - dramatic or absent shadows (choose; don't default)
3020
+ - decorative rules (1px hairlines, double rules, stepped rules)
3021
+ - custom cursors where tone warrants
3022
+ - letterpress-style text shadows for tactile type
3023
+
3024
+ ## Composition Moves
3025
+ Break default centered-column thinking:
3026
+ - asymmetry \xB7 overlap \xB7 diagonal flow \xB7 grid-breaking hero elements \xB7 generous negative space OR controlled density \xB7 optical margin alignment \xB7 hanging punctuation \xB7 hanging initials / drop caps \xB7 marginalia in outer column \xB7 stepped indentation \xB7 multi-column layouts where appropriate
3027
+
3028
+ ## Match Complexity to Tone
3029
+ - **Minimalist tones** (brutally-minimal, luxury/refined, editorial): restraint + precision. Few elements, perfectly placed. Tight spacing scale. One typographic move executed perfectly beats five half-executed flourishes.
3030
+ - **Maximalist tones** (maximalist-chaos, playful, retro-futuristic): elaborate code. Motion on page load. Micro-interactions. Heavy OpenType. Asymmetric composition. Do not hold back.
3031
+
3032
+ ## Reference Implementation
3033
+ When showing what "distinctive, token-consistent, accessible" looks like in practice, consider this proven pattern:
3034
+ - **Remarque design system** (williamzujkowski/remarque): typography-first, OKLCH tokens, USWDS-informed floors, all audits (contrast/typography/colors/APCA/axe) gated in CI
3035
+ - **Broadsheet pattern** (williamzujkowski.github.io landing): masthead with italic byline + mixed roman/italic display title, issue dateline, numbered entry list with italic oldstyle figures, hairline rules, site-wide canonical piece numbers computed dynamically
3036
+ - **Palette B "Departure"** (williamzujkowski.github.io): Fraunces + IBM Plex Mono + Inter; light = photosensitive ivory + ferric ink + radar green; dark = CRT phosphor on near-black. Every token verified against WCAG 2 AA AND APCA draft.
3037
+
3038
+ That work reconciles the creative direction (editorial/sci-fi hybrid) with hard accessibility gates (every contrast pair passing both WCAG 2 AND APCA, full axe-core AA in both themes, 10 consumer pages \xD7 2 themes).
3039
+
3040
+ ## Output Format (flexible)
3041
+ Return running code with inline rationale for aesthetic choices. Structured JSON only if the caller explicitly requests it. Lead with the tone commitment and the typography/color rationale before showing implementation. Always include the OKLCH contrast/APCA figures for every foreground/background pair you introduce.
3017
3042
 
3018
3043
  ## Failure Patterns to Avoid
3019
- - Do not recommend patterns that violate WCAG 2.1 AA accessibility standards
3020
- - Do not propose redesigns without evidence of user pain points
3021
- - Do not use hex, rgb, or hsl \u2014 always use oklch()
3022
- - Do not add JavaScript where static HTML suffices (Astro zero-JS default)
3023
- - Do not use innerHTML with user input \u2014 always sanitize (XSS prevention)
3024
- - Validate that referenced components exist before suggesting changes
3025
- `;
3044
+ - Defaulting to Inter + purple-on-white + card grids when no aesthetic direction was committed.
3045
+ - Producing the same design across two successive calls in the same session.
3046
+ - Applying Material Design 3 by reflex.
3047
+ - Using hex/rgb/hsl.
3048
+ - Using innerHTML with user input.
3049
+ - Skipping a11y floors for the sake of aesthetics. Creativity + accessibility are not in tension \u2014 they demand each other.`;
3050
+ var UX_EXPERT_BASE_PROMPT = ENFORCEMENT_PROMPT;
3026
3051
 
3027
3052
  // src/agents/experts/expert-prompts/infrastructure-expert.ts
3028
3053
  var INFRASTRUCTURE_EXPERT_BASE_PROMPT = `You are an infrastructure expert specializing in physical server management, bare metal operations, and hardware lifecycle automation.
@@ -3229,11 +3254,24 @@ Respond with JSON matching this structure:
3229
3254
  "confidence": 0.0-1.0
3230
3255
  }
3231
3256
 
3257
+ ## Reference Implementation
3258
+ - **Sandbox + threat model**: \`docs/architecture/SECURITY.md\` \u2014 trust boundaries, isolation guarantees, CVE mitigations.
3259
+ - **MCP protocol contract**: \`docs/architecture/MCP_PROTOCOL.md\` \u2014 transport + capability surface; template for inter-system contracts.
3260
+ - **Pipeline architecture**: \`docs/architecture/RESEARCH_PIPELINE.md\` \u2014 staged data flow with explicit stage boundaries.
3261
+ - Always document the access path (SSH, OOB, console) and the fallback before recommending any infrastructure change.
3262
+
3232
3263
  ## Output Guidance
3233
3264
  - Always include a confidence score (0-1) with reasoning for the score
3234
3265
  - Reference specific hostnames, IPs, or file paths when making recommendations
3235
3266
  - If infrastructure analysis would exceed context, focus on critical/high priority items first
3236
3267
 
3268
+ ## Anti-Pattern Prohibitions
3269
+ - No "just SSH in" recommendations \u2014 every access path must be documented with a fallback (OOB, console, IPMI, recovery USB)
3270
+ - No untimed cron without an explicit run budget \u2014 use \`timeout(1)\` or systemd \`RuntimeMaxSec=\` so a hung job doesn't stack
3271
+ - No shared credentials across hosts \u2014 even in homelab; use per-host SSH keys or ephemeral OAuth tokens
3272
+ - No silent power cycles \u2014 always verify the host is unreachable on multiple paths AND the workload is checkpointed/migrated before hard-cycling
3273
+ - No firewall changes without a tested rollback \u2014 \`ufw reset\` or \`iptables-restore\` needs a known-good config staged
3274
+
3237
3275
  ## Failure Patterns to Avoid
3238
3276
  - Do not recommend power cycling without verifying OOB access first
3239
3277
  - Do not assume documentation is accurate \u2014 verify against live system state
@@ -3309,6 +3347,18 @@ Example response:
3309
3347
  - **Svelte + LayerCake**: Svelte-native chart components with SSR support
3310
3348
  - **CSS-only charts**: Lightweight bar/progress charts that work without JS
3311
3349
 
3350
+ ## Reference Implementation
3351
+ - **Dashboard design doc**: \`docs/architecture/EXECUTION_DASHBOARD_DESIGN.md\` \u2014 layering strategy, info hierarchy for observability views.
3352
+ - **Expert spec**: \`agents/data-visualization-expert.md\` \u2014 chart selection and application patterns for this codebase.
3353
+ - When no canonical in-repo viz exists, commit to ONE chart type per problem. Cite the data source explicitly. Never default to a bar chart because it's "safe."
3354
+
3355
+ ## Anti-Pattern Prohibitions
3356
+ - No default bar chart for "everything" \u2014 commit to ONE chart type per problem (line for trends, bar for ordinal comparison, scatter for correlation, heatmap for matrix data)
3357
+ - No stacked charts with more than 4 categories \u2014 eye can't compare beyond that; switch to small multiples or grouped bars
3358
+ - No 3D charts for quantitative data \u2014 they distort perception; reserve 3D only for genuinely 3-axis spatial data
3359
+ - No dual y-axes \u2014 use small multiples or normalized scales instead; dual axes invite misleading correlation perception
3360
+ - No pie charts with more than 5 slices \u2014 use a horizontal bar chart for ranking instead
3361
+
3312
3362
  ## Data Analysis Capabilities
3313
3363
  - Identify distributions, outliers, and clusters in numeric data
3314
3364
  - Calculate summary statistics (mean, median, percentiles, IQR)
@@ -3787,4 +3837,4 @@ export {
3787
3837
  validateExpertConfig,
3788
3838
  safeValidateExpertConfig
3789
3839
  };
3790
- //# sourceMappingURL=chunk-OOIPRRPX.js.map
3840
+ //# sourceMappingURL=chunk-LDIN2PLV.js.map