/* Shared data, primitives, and Schedii-style components for both directions. */ /* ─── MCP directory data ────────────────────────────────────────────── */ /* Single namespace: @sch. Flags determine the mode. * @sch — Schedii workbench (base) * @sch -d — Pertel Dash · lite intelligence * @sch -f — Pertel Sift · filter * @sch p — Pertel (Full) · everything */ const MCPS = [ { id: 'workbench', name: 'Schedii', tag: 'base · the workbench', blurb: 'The Schedii workbench, as MCP tools. Brands, queues, drafts, integrations — callable from Claude, GPT, or Manus.', longBlurb: 'The base namespace. Schedii workbench surfaces (brands, posts, queue, integrations, drafts) exposed as tools. No intelligence overlay, no filter — just the workbench.', namespace: '@sch', flag: '', status: 'beta', works: ['Claude', 'GPT', 'Manus'], icon: 'core', tools: ['brands', 'queue', 'drafts', 'publish', 'integrations'], accent: 'cyan', }, { id: 'dash', name: 'Pertel Dash', tag: 'lite intelligence', blurb: 'Storage, memory, logging, handoff. Keeps your context across Claude, GPT, and Manus so you never max a token window again.', longBlurb: 'The lite Pertel. Memory, append-only markdown logs, doc handoff between sessions. The “don’t blow my context” mode.', namespace: '@sch -d', flag: '-d', status: 'alpha', works: ['Claude', 'GPT', 'Manus'], icon: 'pertel', tools: ['begin', 'remember', 'recall', 'handoff', 'tail', 'forget'], accent: 'cyan', }, { id: 'sift', name: 'Pertel Sift', tag: 'filter · AkrosInfra', blurb: 'A multi-every filter for your ideas, drafts, code, plans. Sifts results through the Schedii Bible + AkrosInfra frameworks.', longBlurb: 'Proprietary filter that runs your work through the Schedii Bible + AkrosInfra frameworks. Mid-work, pre-publish, or post-audit. Sifts, kills the junk, re-separates the rest.', namespace: '@sch -f', flag: '-f', status: 'alpha', works: ['Claude', 'GPT', 'Manus'], icon: 'filter', tools: ['full', 'ndv', 'ndvr', 'custom'], accent: 'amber', }, { id: 'full', name: 'Pertel', tag: 'full · all capability', blurb: 'Everything. Workbench + Dash + Sift + discovery, in one namespace. All capability under @sch p.', longBlurb: 'Full Pertel — the everything package. Combines @sch (workbench), @sch -d (dash), @sch -f (sift), and discovery into one. The serious mode.', namespace: '@sch p', flag: 'p', status: 'alpha', works: ['Claude', 'GPT', 'Manus'], icon: 'pertel', tools: ['workbench', 'memory', 'sift', 'discovery', 'handoff'], accent: 'cyan', }, ]; /* @sch -f modes — the proprietary filter has graded sub-modes */ const SCPF_MODES = [ { cmd: '@sch -f mm', name: 'MmM', desc: 'Metered Mind Map. Concepts become nodes, relations become edges. Salience measured; the filter follows the strongest paths and reports the weakest joints.', }, { cmd: '@sch -f ndv', name: 'Neurodivii', desc: 'Neurodivergent lens. Re-weights signal so unusual angles survive the standard cut. The "what if?" that a canonical pass would have killed gets a second look.', }, { cmd: '@sch -f ndvr', name: 'Neurodivii + Reason', desc: 'Same lens, plus the why. Every keep, kill, and re-separation comes back with its reasoning attached. The filter that explains itself.', }, { cmd: '@sch -f full', name: 'Full', desc: 'All three lenses run sequentially. The heaviest sift. Use when the work needs to survive every cut.', }, { cmd: '@sch -f custom', name: 'Custom', desc: 'Multi-question tuning. Pick the criteria — all within Schedii scope. The tunable one.', }, ]; const STATUS_LABEL = { alpha: { text: 'ALPHA', color: '#06b6d4' }, beta: { text: 'BETA', color: '#22d3ee' }, planned: { text: 'PLANNED', color: '#94a3b8' }, }; /* ─── Iconography (Schedii pack-style monoline glyphs, currentColor) ── */ function McpGlyph({ kind, size = 22 }) { const common = { width: size, height: size, viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: 1.5, strokeLinecap: 'round', strokeLinejoin: 'round', }; switch (kind) { case 'pertel': return ( ); case 'core': return ( ); case 'filter': return ( ); case 'geniie': return ( ); case 'orbit': return ( ); case 'logo': return ( ); case 'arrow': return ( ); case 'dot': return ( ); default: return null; } } /* ─── Status chip ─────────────────────────────────────────────────── */ function StatusChip({ stats, tone }) { return (