@aexol/spectral 0.7.0 → 0.7.1
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/dist/agent/index.js +76 -301
- package/dist/cli.js +11 -0
- package/dist/designer/data/systems/agentic/DESIGN.md +71 -0
- package/dist/designer/data/systems/agentic/components.html +154 -0
- package/dist/designer/data/systems/agentic/tokens.css +63 -0
- package/dist/designer/data/systems/airbnb/DESIGN.md +393 -0
- package/dist/designer/data/systems/airbnb/components.html +1373 -0
- package/dist/designer/data/systems/airbnb/tokens.css +261 -0
- package/dist/designer/data/systems/airtable/DESIGN.md +92 -0
- package/dist/designer/data/systems/airtable/components.html +489 -0
- package/dist/designer/data/systems/airtable/tokens.css +261 -0
- package/dist/designer/data/systems/ant/DESIGN.md +71 -0
- package/dist/designer/data/systems/ant/components.html +154 -0
- package/dist/designer/data/systems/ant/tokens.css +63 -0
- package/dist/designer/data/systems/apple/DESIGN.md +250 -0
- package/dist/designer/data/systems/apple/components.html +749 -0
- package/dist/designer/data/systems/apple/tokens.css +286 -0
- package/dist/designer/data/systems/application/DESIGN.md +71 -0
- package/dist/designer/data/systems/application/components.html +154 -0
- package/dist/designer/data/systems/application/tokens.css +63 -0
- package/dist/designer/data/systems/arc/DESIGN.md +152 -0
- package/dist/designer/data/systems/arc/components.html +432 -0
- package/dist/designer/data/systems/arc/tokens.css +137 -0
- package/dist/designer/data/systems/artistic/DESIGN.md +71 -0
- package/dist/designer/data/systems/artistic/components.html +136 -0
- package/dist/designer/data/systems/artistic/tokens.css +63 -0
- package/dist/designer/data/systems/atelier-zero/DESIGN.md +316 -0
- package/dist/designer/data/systems/atelier-zero/components.html +136 -0
- package/dist/designer/data/systems/atelier-zero/tokens.css +63 -0
- package/dist/designer/data/systems/bento/DESIGN.md +71 -0
- package/dist/designer/data/systems/bento/components.html +136 -0
- package/dist/designer/data/systems/bento/tokens.css +63 -0
- package/dist/designer/data/systems/binance/DESIGN.md +348 -0
- package/dist/designer/data/systems/binance/components.html +550 -0
- package/dist/designer/data/systems/binance/tokens.css +255 -0
- package/dist/designer/data/systems/bmw/DESIGN.md +183 -0
- package/dist/designer/data/systems/bmw/components.html +551 -0
- package/dist/designer/data/systems/bmw/tokens.css +179 -0
- package/dist/designer/data/systems/bmw-m/DESIGN.md +246 -0
- package/dist/designer/data/systems/bmw-m/components.html +342 -0
- package/dist/designer/data/systems/bmw-m/tokens.css +64 -0
- package/dist/designer/data/systems/bold/DESIGN.md +71 -0
- package/dist/designer/data/systems/bold/components.html +136 -0
- package/dist/designer/data/systems/bold/tokens.css +63 -0
- package/dist/designer/data/systems/brutalism/DESIGN.md +71 -0
- package/dist/designer/data/systems/brutalism/components.html +154 -0
- package/dist/designer/data/systems/brutalism/tokens.css +63 -0
- package/dist/designer/data/systems/bugatti/DESIGN.md +271 -0
- package/dist/designer/data/systems/bugatti/components.html +342 -0
- package/dist/designer/data/systems/bugatti/tokens.css +64 -0
- package/dist/designer/data/systems/cafe/DESIGN.md +71 -0
- package/dist/designer/data/systems/cafe/components.html +136 -0
- package/dist/designer/data/systems/cafe/tokens.css +63 -0
- package/dist/designer/data/systems/cal/DESIGN.md +262 -0
- package/dist/designer/data/systems/cal/components.html +376 -0
- package/dist/designer/data/systems/cal/tokens.css +265 -0
- package/dist/designer/data/systems/canva/DESIGN.md +157 -0
- package/dist/designer/data/systems/canva/components.html +461 -0
- package/dist/designer/data/systems/canva/tokens.css +147 -0
- package/dist/designer/data/systems/cisco/DESIGN.md +201 -0
- package/dist/designer/data/systems/cisco/components.html +342 -0
- package/dist/designer/data/systems/cisco/tokens.css +64 -0
- package/dist/designer/data/systems/claude/DESIGN.md +315 -0
- package/dist/designer/data/systems/claude/components.html +483 -0
- package/dist/designer/data/systems/claude/tokens.css +130 -0
- package/dist/designer/data/systems/clay/DESIGN.md +307 -0
- package/dist/designer/data/systems/clay/components.html +136 -0
- package/dist/designer/data/systems/clay/tokens.css +63 -0
- package/dist/designer/data/systems/claymorphism/DESIGN.md +71 -0
- package/dist/designer/data/systems/claymorphism/components.html +136 -0
- package/dist/designer/data/systems/claymorphism/tokens.css +63 -0
- package/dist/designer/data/systems/clean/DESIGN.md +71 -0
- package/dist/designer/data/systems/clean/components.html +136 -0
- package/dist/designer/data/systems/clean/tokens.css +63 -0
- package/dist/designer/data/systems/clickhouse/DESIGN.md +284 -0
- package/dist/designer/data/systems/clickhouse/components.html +506 -0
- package/dist/designer/data/systems/clickhouse/tokens.css +135 -0
- package/dist/designer/data/systems/cohere/DESIGN.md +269 -0
- package/dist/designer/data/systems/cohere/components.html +353 -0
- package/dist/designer/data/systems/cohere/tokens.css +126 -0
- package/dist/designer/data/systems/coinbase/DESIGN.md +132 -0
- package/dist/designer/data/systems/coinbase/components.html +501 -0
- package/dist/designer/data/systems/coinbase/tokens.css +257 -0
- package/dist/designer/data/systems/colorful/DESIGN.md +71 -0
- package/dist/designer/data/systems/colorful/components.html +136 -0
- package/dist/designer/data/systems/colorful/tokens.css +63 -0
- package/dist/designer/data/systems/composio/DESIGN.md +310 -0
- package/dist/designer/data/systems/composio/components.html +342 -0
- package/dist/designer/data/systems/composio/tokens.css +64 -0
- package/dist/designer/data/systems/contemporary/DESIGN.md +71 -0
- package/dist/designer/data/systems/contemporary/components.html +136 -0
- package/dist/designer/data/systems/contemporary/tokens.css +63 -0
- package/dist/designer/data/systems/corporate/DESIGN.md +71 -0
- package/dist/designer/data/systems/corporate/components.html +136 -0
- package/dist/designer/data/systems/corporate/tokens.css +63 -0
- package/dist/designer/data/systems/cosmic/DESIGN.md +71 -0
- package/dist/designer/data/systems/cosmic/components.html +136 -0
- package/dist/designer/data/systems/cosmic/tokens.css +63 -0
- package/dist/designer/data/systems/creative/DESIGN.md +71 -0
- package/dist/designer/data/systems/creative/components.html +136 -0
- package/dist/designer/data/systems/creative/tokens.css +63 -0
- package/dist/designer/data/systems/cursor/DESIGN.md +312 -0
- package/dist/designer/data/systems/cursor/components.html +654 -0
- package/dist/designer/data/systems/cursor/tokens.css +218 -0
- package/dist/designer/data/systems/dashboard/DESIGN.md +71 -0
- package/dist/designer/data/systems/dashboard/components.html +154 -0
- package/dist/designer/data/systems/dashboard/tokens.css +63 -0
- package/dist/designer/data/systems/default/DESIGN.md +62 -0
- package/dist/designer/data/systems/default/components.html +523 -0
- package/dist/designer/data/systems/default/tokens.css +200 -0
- package/dist/designer/data/systems/discord/DESIGN.md +162 -0
- package/dist/designer/data/systems/discord/components.html +359 -0
- package/dist/designer/data/systems/discord/tokens.css +125 -0
- package/dist/designer/data/systems/dithered/DESIGN.md +71 -0
- package/dist/designer/data/systems/dithered/components.html +136 -0
- package/dist/designer/data/systems/dithered/tokens.css +63 -0
- package/dist/designer/data/systems/doodle/DESIGN.md +71 -0
- package/dist/designer/data/systems/doodle/components.html +136 -0
- package/dist/designer/data/systems/doodle/tokens.css +63 -0
- package/dist/designer/data/systems/dramatic/DESIGN.md +71 -0
- package/dist/designer/data/systems/dramatic/components.html +136 -0
- package/dist/designer/data/systems/dramatic/tokens.css +63 -0
- package/dist/designer/data/systems/duolingo/DESIGN.md +154 -0
- package/dist/designer/data/systems/duolingo/components.html +532 -0
- package/dist/designer/data/systems/duolingo/tokens.css +130 -0
- package/dist/designer/data/systems/editorial/DESIGN.md +71 -0
- package/dist/designer/data/systems/editorial/components.html +154 -0
- package/dist/designer/data/systems/editorial/tokens.css +63 -0
- package/dist/designer/data/systems/elegant/DESIGN.md +71 -0
- package/dist/designer/data/systems/elegant/components.html +136 -0
- package/dist/designer/data/systems/elegant/tokens.css +63 -0
- package/dist/designer/data/systems/elevenlabs/DESIGN.md +268 -0
- package/dist/designer/data/systems/elevenlabs/components.html +342 -0
- package/dist/designer/data/systems/elevenlabs/tokens.css +127 -0
- package/dist/designer/data/systems/energetic/DESIGN.md +72 -0
- package/dist/designer/data/systems/energetic/components.html +136 -0
- package/dist/designer/data/systems/energetic/tokens.css +63 -0
- package/dist/designer/data/systems/enterprise/DESIGN.md +71 -0
- package/dist/designer/data/systems/enterprise/components.html +154 -0
- package/dist/designer/data/systems/enterprise/tokens.css +63 -0
- package/dist/designer/data/systems/expo/DESIGN.md +284 -0
- package/dist/designer/data/systems/expo/components.html +342 -0
- package/dist/designer/data/systems/expo/tokens.css +64 -0
- package/dist/designer/data/systems/expressive/DESIGN.md +71 -0
- package/dist/designer/data/systems/expressive/components.html +136 -0
- package/dist/designer/data/systems/expressive/tokens.css +63 -0
- package/dist/designer/data/systems/fantasy/DESIGN.md +71 -0
- package/dist/designer/data/systems/fantasy/components.html +136 -0
- package/dist/designer/data/systems/fantasy/tokens.css +63 -0
- package/dist/designer/data/systems/ferrari/DESIGN.md +317 -0
- package/dist/designer/data/systems/ferrari/components.html +342 -0
- package/dist/designer/data/systems/ferrari/tokens.css +64 -0
- package/dist/designer/data/systems/figma/DESIGN.md +223 -0
- package/dist/designer/data/systems/figma/components.html +344 -0
- package/dist/designer/data/systems/figma/tokens.css +126 -0
- package/dist/designer/data/systems/flat/DESIGN.md +71 -0
- package/dist/designer/data/systems/flat/components.html +136 -0
- package/dist/designer/data/systems/flat/tokens.css +63 -0
- package/dist/designer/data/systems/framer/DESIGN.md +249 -0
- package/dist/designer/data/systems/framer/components.html +438 -0
- package/dist/designer/data/systems/framer/tokens.css +238 -0
- package/dist/designer/data/systems/friendly/DESIGN.md +71 -0
- package/dist/designer/data/systems/friendly/components.html +136 -0
- package/dist/designer/data/systems/friendly/tokens.css +63 -0
- package/dist/designer/data/systems/futuristic/DESIGN.md +71 -0
- package/dist/designer/data/systems/futuristic/components.html +136 -0
- package/dist/designer/data/systems/futuristic/tokens.css +63 -0
- package/dist/designer/data/systems/github/DESIGN.md +155 -0
- package/dist/designer/data/systems/github/components.html +383 -0
- package/dist/designer/data/systems/github/tokens.css +125 -0
- package/dist/designer/data/systems/glassmorphism/DESIGN.md +71 -0
- package/dist/designer/data/systems/glassmorphism/components.html +154 -0
- package/dist/designer/data/systems/glassmorphism/tokens.css +63 -0
- package/dist/designer/data/systems/gradient/DESIGN.md +71 -0
- package/dist/designer/data/systems/gradient/components.html +154 -0
- package/dist/designer/data/systems/gradient/tokens.css +63 -0
- package/dist/designer/data/systems/hashicorp/DESIGN.md +281 -0
- package/dist/designer/data/systems/hashicorp/components.html +502 -0
- package/dist/designer/data/systems/hashicorp/tokens.css +272 -0
- package/dist/designer/data/systems/hud/DESIGN.md +173 -0
- package/dist/designer/data/systems/hud/components.html +136 -0
- package/dist/designer/data/systems/hud/tokens.css +63 -0
- package/dist/designer/data/systems/huggingface/DESIGN.md +149 -0
- package/dist/designer/data/systems/huggingface/components.html +346 -0
- package/dist/designer/data/systems/huggingface/tokens.css +125 -0
- package/dist/designer/data/systems/ibm/DESIGN.md +335 -0
- package/dist/designer/data/systems/ibm/components.html +342 -0
- package/dist/designer/data/systems/ibm/tokens.css +64 -0
- package/dist/designer/data/systems/intercom/DESIGN.md +149 -0
- package/dist/designer/data/systems/intercom/components.html +557 -0
- package/dist/designer/data/systems/intercom/tokens.css +150 -0
- package/dist/designer/data/systems/kami/DESIGN.md +410 -0
- package/dist/designer/data/systems/kami/components.html +601 -0
- package/dist/designer/data/systems/kami/tokens.css +272 -0
- package/dist/designer/data/systems/kraken/DESIGN.md +128 -0
- package/dist/designer/data/systems/kraken/components.html +342 -0
- package/dist/designer/data/systems/kraken/tokens.css +64 -0
- package/dist/designer/data/systems/lamborghini/DESIGN.md +291 -0
- package/dist/designer/data/systems/lamborghini/components.html +342 -0
- package/dist/designer/data/systems/lamborghini/tokens.css +64 -0
- package/dist/designer/data/systems/levels/DESIGN.md +71 -0
- package/dist/designer/data/systems/levels/components.html +154 -0
- package/dist/designer/data/systems/levels/tokens.css +63 -0
- package/dist/designer/data/systems/linear-app/DESIGN.md +370 -0
- package/dist/designer/data/systems/linear-app/components.html +370 -0
- package/dist/designer/data/systems/linear-app/tokens.css +130 -0
- package/dist/designer/data/systems/lingo/DESIGN.md +71 -0
- package/dist/designer/data/systems/lingo/components.html +154 -0
- package/dist/designer/data/systems/lingo/tokens.css +63 -0
- package/dist/designer/data/systems/loom/DESIGN.md +201 -0
- package/dist/designer/data/systems/loom/components.html +446 -0
- package/dist/designer/data/systems/loom/tokens.css +138 -0
- package/dist/designer/data/systems/lovable/DESIGN.md +301 -0
- package/dist/designer/data/systems/lovable/components.html +441 -0
- package/dist/designer/data/systems/lovable/tokens.css +258 -0
- package/dist/designer/data/systems/luxury/DESIGN.md +71 -0
- package/dist/designer/data/systems/luxury/components.html +154 -0
- package/dist/designer/data/systems/luxury/tokens.css +63 -0
- package/dist/designer/data/systems/mastercard/DESIGN.md +368 -0
- package/dist/designer/data/systems/mastercard/components.html +342 -0
- package/dist/designer/data/systems/mastercard/tokens.css +64 -0
- package/dist/designer/data/systems/material/DESIGN.md +71 -0
- package/dist/designer/data/systems/material/components.html +154 -0
- package/dist/designer/data/systems/material/tokens.css +63 -0
- package/dist/designer/data/systems/meta/DESIGN.md +369 -0
- package/dist/designer/data/systems/meta/components.html +398 -0
- package/dist/designer/data/systems/meta/tokens.css +263 -0
- package/dist/designer/data/systems/minimal/DESIGN.md +71 -0
- package/dist/designer/data/systems/minimal/components.html +154 -0
- package/dist/designer/data/systems/minimal/tokens.css +63 -0
- package/dist/designer/data/systems/minimax/DESIGN.md +260 -0
- package/dist/designer/data/systems/minimax/components.html +590 -0
- package/dist/designer/data/systems/minimax/tokens.css +148 -0
- package/dist/designer/data/systems/mintlify/DESIGN.md +329 -0
- package/dist/designer/data/systems/mintlify/components.html +737 -0
- package/dist/designer/data/systems/mintlify/tokens.css +256 -0
- package/dist/designer/data/systems/miro/DESIGN.md +111 -0
- package/dist/designer/data/systems/miro/components.html +342 -0
- package/dist/designer/data/systems/miro/tokens.css +64 -0
- package/dist/designer/data/systems/mission-control/DESIGN.md +474 -0
- package/dist/designer/data/systems/mission-control/components.html +136 -0
- package/dist/designer/data/systems/mission-control/tokens.css +63 -0
- package/dist/designer/data/systems/mistral-ai/DESIGN.md +264 -0
- package/dist/designer/data/systems/mistral-ai/components.html +338 -0
- package/dist/designer/data/systems/mistral-ai/tokens.css +125 -0
- package/dist/designer/data/systems/modern/DESIGN.md +71 -0
- package/dist/designer/data/systems/modern/components.html +154 -0
- package/dist/designer/data/systems/modern/tokens.css +63 -0
- package/dist/designer/data/systems/mongodb/DESIGN.md +269 -0
- package/dist/designer/data/systems/mongodb/components.html +462 -0
- package/dist/designer/data/systems/mongodb/tokens.css +176 -0
- package/dist/designer/data/systems/mono/DESIGN.md +71 -0
- package/dist/designer/data/systems/mono/components.html +136 -0
- package/dist/designer/data/systems/mono/tokens.css +63 -0
- package/dist/designer/data/systems/neobrutalism/DESIGN.md +71 -0
- package/dist/designer/data/systems/neobrutalism/components.html +136 -0
- package/dist/designer/data/systems/neobrutalism/tokens.css +63 -0
- package/dist/designer/data/systems/neon/DESIGN.md +71 -0
- package/dist/designer/data/systems/neon/components.html +136 -0
- package/dist/designer/data/systems/neon/tokens.css +63 -0
- package/dist/designer/data/systems/neumorphism/DESIGN.md +71 -0
- package/dist/designer/data/systems/neumorphism/components.html +136 -0
- package/dist/designer/data/systems/neumorphism/tokens.css +63 -0
- package/dist/designer/data/systems/nike/DESIGN.md +366 -0
- package/dist/designer/data/systems/nike/components.html +512 -0
- package/dist/designer/data/systems/nike/tokens.css +304 -0
- package/dist/designer/data/systems/notion/DESIGN.md +312 -0
- package/dist/designer/data/systems/notion/components.html +413 -0
- package/dist/designer/data/systems/notion/tokens.css +130 -0
- package/dist/designer/data/systems/nvidia/DESIGN.md +296 -0
- package/dist/designer/data/systems/nvidia/components.html +414 -0
- package/dist/designer/data/systems/nvidia/tokens.css +133 -0
- package/dist/designer/data/systems/ollama/DESIGN.md +270 -0
- package/dist/designer/data/systems/ollama/components.html +700 -0
- package/dist/designer/data/systems/ollama/tokens.css +242 -0
- package/dist/designer/data/systems/openai/DESIGN.md +140 -0
- package/dist/designer/data/systems/openai/components.html +382 -0
- package/dist/designer/data/systems/openai/tokens.css +133 -0
- package/dist/designer/data/systems/opencode-ai/DESIGN.md +284 -0
- package/dist/designer/data/systems/opencode-ai/components.html +389 -0
- package/dist/designer/data/systems/opencode-ai/tokens.css +126 -0
- package/dist/designer/data/systems/pacman/DESIGN.md +71 -0
- package/dist/designer/data/systems/pacman/components.html +342 -0
- package/dist/designer/data/systems/pacman/tokens.css +64 -0
- package/dist/designer/data/systems/paper/DESIGN.md +71 -0
- package/dist/designer/data/systems/paper/components.html +136 -0
- package/dist/designer/data/systems/paper/tokens.css +63 -0
- package/dist/designer/data/systems/perplexity/DESIGN.md +286 -0
- package/dist/designer/data/systems/perplexity/components.html +455 -0
- package/dist/designer/data/systems/perplexity/tokens.css +151 -0
- package/dist/designer/data/systems/perspective/DESIGN.md +71 -0
- package/dist/designer/data/systems/perspective/components.html +136 -0
- package/dist/designer/data/systems/perspective/tokens.css +63 -0
- package/dist/designer/data/systems/pinterest/DESIGN.md +233 -0
- package/dist/designer/data/systems/pinterest/components.html +865 -0
- package/dist/designer/data/systems/pinterest/tokens.css +262 -0
- package/dist/designer/data/systems/playstation/DESIGN.md +367 -0
- package/dist/designer/data/systems/playstation/components.html +414 -0
- package/dist/designer/data/systems/playstation/tokens.css +150 -0
- package/dist/designer/data/systems/posthog/DESIGN.md +259 -0
- package/dist/designer/data/systems/posthog/components.html +827 -0
- package/dist/designer/data/systems/posthog/tokens.css +272 -0
- package/dist/designer/data/systems/premium/DESIGN.md +71 -0
- package/dist/designer/data/systems/premium/components.html +154 -0
- package/dist/designer/data/systems/premium/tokens.css +63 -0
- package/dist/designer/data/systems/professional/DESIGN.md +71 -0
- package/dist/designer/data/systems/professional/components.html +136 -0
- package/dist/designer/data/systems/professional/tokens.css +63 -0
- package/dist/designer/data/systems/publication/DESIGN.md +71 -0
- package/dist/designer/data/systems/publication/components.html +154 -0
- package/dist/designer/data/systems/publication/tokens.css +63 -0
- package/dist/designer/data/systems/raycast/DESIGN.md +271 -0
- package/dist/designer/data/systems/raycast/components.html +507 -0
- package/dist/designer/data/systems/raycast/tokens.css +143 -0
- package/dist/designer/data/systems/refined/DESIGN.md +71 -0
- package/dist/designer/data/systems/refined/components.html +136 -0
- package/dist/designer/data/systems/refined/tokens.css +63 -0
- package/dist/designer/data/systems/renault/DESIGN.md +314 -0
- package/dist/designer/data/systems/renault/components.html +154 -0
- package/dist/designer/data/systems/renault/tokens.css +63 -0
- package/dist/designer/data/systems/replicate/DESIGN.md +264 -0
- package/dist/designer/data/systems/replicate/components.html +340 -0
- package/dist/designer/data/systems/replicate/tokens.css +125 -0
- package/dist/designer/data/systems/resend/DESIGN.md +306 -0
- package/dist/designer/data/systems/resend/components.html +839 -0
- package/dist/designer/data/systems/resend/tokens.css +353 -0
- package/dist/designer/data/systems/retro/DESIGN.md +71 -0
- package/dist/designer/data/systems/retro/components.html +136 -0
- package/dist/designer/data/systems/retro/tokens.css +63 -0
- package/dist/designer/data/systems/revolut/DESIGN.md +188 -0
- package/dist/designer/data/systems/revolut/components.html +342 -0
- package/dist/designer/data/systems/revolut/tokens.css +64 -0
- package/dist/designer/data/systems/runwayml/DESIGN.md +247 -0
- package/dist/designer/data/systems/runwayml/components.html +638 -0
- package/dist/designer/data/systems/runwayml/tokens.css +204 -0
- package/dist/designer/data/systems/sanity/DESIGN.md +360 -0
- package/dist/designer/data/systems/sanity/components.html +342 -0
- package/dist/designer/data/systems/sanity/tokens.css +64 -0
- package/dist/designer/data/systems/sentry/DESIGN.md +265 -0
- package/dist/designer/data/systems/sentry/components.html +387 -0
- package/dist/designer/data/systems/sentry/tokens.css +219 -0
- package/dist/designer/data/systems/shadcn/DESIGN.md +71 -0
- package/dist/designer/data/systems/shadcn/components.html +732 -0
- package/dist/designer/data/systems/shadcn/tokens.css +255 -0
- package/dist/designer/data/systems/shopify/DESIGN.md +353 -0
- package/dist/designer/data/systems/shopify/components.html +342 -0
- package/dist/designer/data/systems/shopify/tokens.css +141 -0
- package/dist/designer/data/systems/simple/DESIGN.md +71 -0
- package/dist/designer/data/systems/simple/components.html +136 -0
- package/dist/designer/data/systems/simple/tokens.css +63 -0
- package/dist/designer/data/systems/skeumorphism/DESIGN.md +71 -0
- package/dist/designer/data/systems/skeumorphism/components.html +136 -0
- package/dist/designer/data/systems/skeumorphism/tokens.css +63 -0
- package/dist/designer/data/systems/slack/DESIGN.md +363 -0
- package/dist/designer/data/systems/slack/components.html +387 -0
- package/dist/designer/data/systems/slack/tokens.css +127 -0
- package/dist/designer/data/systems/sleek/DESIGN.md +71 -0
- package/dist/designer/data/systems/sleek/components.html +136 -0
- package/dist/designer/data/systems/sleek/tokens.css +63 -0
- package/dist/designer/data/systems/spacex/DESIGN.md +197 -0
- package/dist/designer/data/systems/spacex/components.html +496 -0
- package/dist/designer/data/systems/spacex/tokens.css +154 -0
- package/dist/designer/data/systems/spacious/DESIGN.md +71 -0
- package/dist/designer/data/systems/spacious/components.html +136 -0
- package/dist/designer/data/systems/spacious/tokens.css +63 -0
- package/dist/designer/data/systems/spotify/DESIGN.md +249 -0
- package/dist/designer/data/systems/spotify/components.html +365 -0
- package/dist/designer/data/systems/spotify/tokens.css +127 -0
- package/dist/designer/data/systems/starbucks/DESIGN.md +583 -0
- package/dist/designer/data/systems/starbucks/components.html +493 -0
- package/dist/designer/data/systems/starbucks/tokens.css +182 -0
- package/dist/designer/data/systems/storytelling/DESIGN.md +71 -0
- package/dist/designer/data/systems/storytelling/components.html +136 -0
- package/dist/designer/data/systems/storytelling/tokens.css +63 -0
- package/dist/designer/data/systems/stripe/DESIGN.md +325 -0
- package/dist/designer/data/systems/stripe/components.html +1018 -0
- package/dist/designer/data/systems/stripe/tokens.css +295 -0
- package/dist/designer/data/systems/supabase/DESIGN.md +258 -0
- package/dist/designer/data/systems/supabase/components.html +741 -0
- package/dist/designer/data/systems/supabase/tokens.css +294 -0
- package/dist/designer/data/systems/superhuman/DESIGN.md +255 -0
- package/dist/designer/data/systems/superhuman/components.html +537 -0
- package/dist/designer/data/systems/superhuman/tokens.css +160 -0
- package/dist/designer/data/systems/tesla/DESIGN.md +289 -0
- package/dist/designer/data/systems/tesla/components.html +724 -0
- package/dist/designer/data/systems/tesla/tokens.css +285 -0
- package/dist/designer/data/systems/tetris/DESIGN.md +71 -0
- package/dist/designer/data/systems/tetris/components.html +342 -0
- package/dist/designer/data/systems/tetris/tokens.css +64 -0
- package/dist/designer/data/systems/theverge/DESIGN.md +342 -0
- package/dist/designer/data/systems/theverge/components.html +342 -0
- package/dist/designer/data/systems/theverge/tokens.css +64 -0
- package/dist/designer/data/systems/together-ai/DESIGN.md +266 -0
- package/dist/designer/data/systems/together-ai/components.html +422 -0
- package/dist/designer/data/systems/together-ai/tokens.css +127 -0
- package/dist/designer/data/systems/totality-festival/DESIGN.md +206 -0
- package/dist/designer/data/systems/totality-festival/components.html +136 -0
- package/dist/designer/data/systems/totality-festival/tokens.css +63 -0
- package/dist/designer/data/systems/trading-terminal/DESIGN.md +178 -0
- package/dist/designer/data/systems/trading-terminal/components.html +154 -0
- package/dist/designer/data/systems/trading-terminal/tokens.css +63 -0
- package/dist/designer/data/systems/uber/DESIGN.md +298 -0
- package/dist/designer/data/systems/uber/components.html +347 -0
- package/dist/designer/data/systems/uber/tokens.css +131 -0
- package/dist/designer/data/systems/urdu/DESIGN.md +1002 -0
- package/dist/designer/data/systems/urdu/components.html +136 -0
- package/dist/designer/data/systems/urdu/tokens.css +63 -0
- package/dist/designer/data/systems/vercel/DESIGN.md +313 -0
- package/dist/designer/data/systems/vercel/components.html +839 -0
- package/dist/designer/data/systems/vercel/tokens.css +270 -0
- package/dist/designer/data/systems/vibrant/DESIGN.md +71 -0
- package/dist/designer/data/systems/vibrant/components.html +136 -0
- package/dist/designer/data/systems/vibrant/tokens.css +63 -0
- package/dist/designer/data/systems/vintage/DESIGN.md +71 -0
- package/dist/designer/data/systems/vintage/components.html +136 -0
- package/dist/designer/data/systems/vintage/tokens.css +63 -0
- package/dist/designer/data/systems/vodafone/DESIGN.md +426 -0
- package/dist/designer/data/systems/vodafone/components.html +342 -0
- package/dist/designer/data/systems/vodafone/tokens.css +64 -0
- package/dist/designer/data/systems/voltagent/DESIGN.md +326 -0
- package/dist/designer/data/systems/voltagent/components.html +154 -0
- package/dist/designer/data/systems/voltagent/tokens.css +63 -0
- package/dist/designer/data/systems/warm-editorial/DESIGN.md +65 -0
- package/dist/designer/data/systems/warm-editorial/components.html +136 -0
- package/dist/designer/data/systems/warm-editorial/tokens.css +63 -0
- package/dist/designer/data/systems/warp/DESIGN.md +256 -0
- package/dist/designer/data/systems/warp/components.html +411 -0
- package/dist/designer/data/systems/warp/tokens.css +156 -0
- package/dist/designer/data/systems/webex/DESIGN.md +207 -0
- package/dist/designer/data/systems/webex/components.html +342 -0
- package/dist/designer/data/systems/webex/tokens.css +64 -0
- package/dist/designer/data/systems/webflow/DESIGN.md +95 -0
- package/dist/designer/data/systems/webflow/components.html +413 -0
- package/dist/designer/data/systems/webflow/tokens.css +191 -0
- package/dist/designer/data/systems/wechat/DESIGN.md +302 -0
- package/dist/designer/data/systems/wechat/components.html +507 -0
- package/dist/designer/data/systems/wechat/tokens.css +176 -0
- package/dist/designer/data/systems/wired/DESIGN.md +281 -0
- package/dist/designer/data/systems/wired/components.html +342 -0
- package/dist/designer/data/systems/wired/tokens.css +64 -0
- package/dist/designer/data/systems/wise/DESIGN.md +176 -0
- package/dist/designer/data/systems/wise/components.html +365 -0
- package/dist/designer/data/systems/wise/tokens.css +141 -0
- package/dist/designer/data/systems/x-ai/DESIGN.md +260 -0
- package/dist/designer/data/systems/x-ai/components.html +460 -0
- package/dist/designer/data/systems/x-ai/tokens.css +268 -0
- package/dist/designer/data/systems/xiaohongshu/DESIGN.md +402 -0
- package/dist/designer/data/systems/xiaohongshu/components.html +865 -0
- package/dist/designer/data/systems/xiaohongshu/tokens.css +193 -0
- package/dist/designer/data/systems/zapier/DESIGN.md +331 -0
- package/dist/designer/data/systems/zapier/components.html +342 -0
- package/dist/designer/data/systems/zapier/tokens.css +64 -0
- package/dist/designer/guidelines.js +176 -0
- package/dist/designer/index.js +236 -0
- package/dist/designer/skills.js +1675 -0
- package/dist/designer/systems.js +216 -0
- package/dist/server/pi-bridge.js +155 -5
- package/dist/server/session-stream.js +45 -1
- package/package.json +1 -1
package/dist/agent/index.js
CHANGED
|
@@ -25,8 +25,8 @@ import * as fs from "node:fs";
|
|
|
25
25
|
import * as os from "node:os";
|
|
26
26
|
import * as path from "node:path";
|
|
27
27
|
import { StringEnum } from "@mariozechner/pi-ai";
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
28
|
+
import { withFileMutationQueue, } from "@mariozechner/pi-coding-agent";
|
|
29
|
+
import { Text } from "@mariozechner/pi-tui";
|
|
30
30
|
import { Type } from "typebox";
|
|
31
31
|
import { discoverAgents } from "./agents.js";
|
|
32
32
|
// ---------------------------------------------------------------------------
|
|
@@ -34,7 +34,6 @@ import { discoverAgents } from "./agents.js";
|
|
|
34
34
|
// ---------------------------------------------------------------------------
|
|
35
35
|
const MAX_PARALLEL_TASKS = 8;
|
|
36
36
|
const MAX_CONCURRENCY = 4;
|
|
37
|
-
const COLLAPSED_ITEM_COUNT = 10;
|
|
38
37
|
// ---------------------------------------------------------------------------
|
|
39
38
|
// Helpers — formatting
|
|
40
39
|
// ---------------------------------------------------------------------------
|
|
@@ -68,69 +67,6 @@ function formatUsageStats(usage, model) {
|
|
|
68
67
|
parts.push(model);
|
|
69
68
|
return parts.join(" ");
|
|
70
69
|
}
|
|
71
|
-
function formatToolCall(toolName, args, themeFg) {
|
|
72
|
-
const shortenPath = (p) => {
|
|
73
|
-
const home = os.homedir();
|
|
74
|
-
return p.startsWith(home) ? `~${p.slice(home.length)}` : p;
|
|
75
|
-
};
|
|
76
|
-
switch (toolName) {
|
|
77
|
-
case "bash": {
|
|
78
|
-
const command = args.command || "...";
|
|
79
|
-
const preview = command.length > 60 ? `${command.slice(0, 60)}...` : command;
|
|
80
|
-
return themeFg("muted", "$ ") + themeFg("toolOutput", preview);
|
|
81
|
-
}
|
|
82
|
-
case "read": {
|
|
83
|
-
const rawPath = (args.file_path || args.path || "...");
|
|
84
|
-
const filePath = shortenPath(rawPath);
|
|
85
|
-
const offset = args.offset;
|
|
86
|
-
const limit = args.limit;
|
|
87
|
-
let text = themeFg("accent", filePath);
|
|
88
|
-
if (offset !== undefined || limit !== undefined) {
|
|
89
|
-
const startLine = offset ?? 1;
|
|
90
|
-
const endLine = limit !== undefined ? startLine + limit - 1 : "";
|
|
91
|
-
text += themeFg("warning", `:${startLine}${endLine ? `-${endLine}` : ""}`);
|
|
92
|
-
}
|
|
93
|
-
return themeFg("muted", "read ") + text;
|
|
94
|
-
}
|
|
95
|
-
case "write": {
|
|
96
|
-
const rawPath = (args.file_path || args.path || "...");
|
|
97
|
-
const filePath = shortenPath(rawPath);
|
|
98
|
-
const content = (args.content || "");
|
|
99
|
-
const lines = content.split("\n").length;
|
|
100
|
-
let text = themeFg("muted", "write ") + themeFg("accent", filePath);
|
|
101
|
-
if (lines > 1)
|
|
102
|
-
text += themeFg("dim", ` (${lines} lines)`);
|
|
103
|
-
return text;
|
|
104
|
-
}
|
|
105
|
-
case "edit": {
|
|
106
|
-
const rawPath = (args.file_path || args.path || "...");
|
|
107
|
-
return themeFg("muted", "edit ") + themeFg("accent", shortenPath(rawPath));
|
|
108
|
-
}
|
|
109
|
-
case "ls": {
|
|
110
|
-
const rawPath = (args.path || ".");
|
|
111
|
-
return themeFg("muted", "ls ") + themeFg("accent", shortenPath(rawPath));
|
|
112
|
-
}
|
|
113
|
-
case "find": {
|
|
114
|
-
const pattern = (args.pattern || "*");
|
|
115
|
-
const rawPath = (args.path || ".");
|
|
116
|
-
return (themeFg("muted", "find ") +
|
|
117
|
-
themeFg("accent", pattern) +
|
|
118
|
-
themeFg("dim", ` in ${shortenPath(rawPath)}`));
|
|
119
|
-
}
|
|
120
|
-
case "grep": {
|
|
121
|
-
const pattern = (args.pattern || "");
|
|
122
|
-
const rawPath = (args.path || ".");
|
|
123
|
-
return (themeFg("muted", "grep ") +
|
|
124
|
-
themeFg("accent", `/${pattern}/`) +
|
|
125
|
-
themeFg("dim", ` in ${shortenPath(rawPath)}`));
|
|
126
|
-
}
|
|
127
|
-
default: {
|
|
128
|
-
const argsStr = JSON.stringify(args);
|
|
129
|
-
const preview = argsStr.length > 50 ? `${argsStr.slice(0, 50)}...` : argsStr;
|
|
130
|
-
return themeFg("accent", toolName) + themeFg("dim", ` ${preview}`);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
70
|
// ---------------------------------------------------------------------------
|
|
135
71
|
// Helpers — message extraction
|
|
136
72
|
// ---------------------------------------------------------------------------
|
|
@@ -146,20 +82,6 @@ function getFinalOutput(messages) {
|
|
|
146
82
|
}
|
|
147
83
|
return "";
|
|
148
84
|
}
|
|
149
|
-
function getDisplayItems(messages) {
|
|
150
|
-
const items = [];
|
|
151
|
-
for (const msg of messages) {
|
|
152
|
-
if (msg.role === "assistant") {
|
|
153
|
-
for (const part of msg.content) {
|
|
154
|
-
if (part.type === "text")
|
|
155
|
-
items.push({ type: "text", text: part.text });
|
|
156
|
-
else if (part.type === "toolCall")
|
|
157
|
-
items.push({ type: "toolCall", name: part.name, args: part.arguments });
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return items;
|
|
162
|
-
}
|
|
163
85
|
// ---------------------------------------------------------------------------
|
|
164
86
|
// Helpers — concurrency, temp files, binary detection
|
|
165
87
|
// ---------------------------------------------------------------------------
|
|
@@ -471,7 +393,9 @@ export default function subagentExtension(pi) {
|
|
|
471
393
|
details: makeDetails("single")([]),
|
|
472
394
|
};
|
|
473
395
|
}
|
|
474
|
-
// Security: if project-local agents are enabled, confirm with user
|
|
396
|
+
// Security: if project-local agents are enabled, confirm with user.
|
|
397
|
+
// In headless mode (no TUI), project-local agents are silently allowed —
|
|
398
|
+
// the caller is already trusted (it's the coding agent itself).
|
|
475
399
|
if ((agentScope === "project" || agentScope === "both") &&
|
|
476
400
|
confirmProjectAgents &&
|
|
477
401
|
ctx.hasUI) {
|
|
@@ -661,148 +585,72 @@ export default function subagentExtension(pi) {
|
|
|
661
585
|
details: makeDetails("single")([]),
|
|
662
586
|
};
|
|
663
587
|
},
|
|
664
|
-
// ── Rendering
|
|
665
|
-
renderCall(args,
|
|
588
|
+
// ── Rendering (headless-compatible: plain text strings, no TUI imports) ──
|
|
589
|
+
renderCall(args, _theme, _context) {
|
|
666
590
|
const scope = args.agentScope ?? "user";
|
|
667
591
|
if (args.chain && args.chain.length > 0) {
|
|
668
|
-
let text =
|
|
669
|
-
theme.fg("accent", `chain (${args.chain.length} steps)`) +
|
|
670
|
-
theme.fg("muted", ` [${scope}]`);
|
|
592
|
+
let text = `subagent chain (${args.chain.length} steps) [${scope}]`;
|
|
671
593
|
for (let i = 0; i < Math.min(args.chain.length, 3); i++) {
|
|
672
594
|
const step = args.chain[i];
|
|
673
595
|
const cleanTask = step.task.replace(/\{previous\}/g, "").trim();
|
|
674
596
|
const preview = cleanTask.length > 40 ? `${cleanTask.slice(0, 40)}...` : cleanTask;
|
|
675
|
-
text +=
|
|
676
|
-
"\n " +
|
|
677
|
-
theme.fg("muted", `${i + 1}.`) +
|
|
678
|
-
" " +
|
|
679
|
-
theme.fg("accent", step.agent) +
|
|
680
|
-
theme.fg("dim", ` ${preview}`);
|
|
597
|
+
text += `\n ${i + 1}. ${step.agent} ${preview}`;
|
|
681
598
|
}
|
|
682
599
|
if (args.chain.length > 3)
|
|
683
|
-
text += `\n
|
|
684
|
-
return new Text(text
|
|
600
|
+
text += `\n ... +${args.chain.length - 3} more`;
|
|
601
|
+
return new Text(text);
|
|
685
602
|
}
|
|
686
603
|
if (args.tasks && args.tasks.length > 0) {
|
|
687
|
-
let text =
|
|
688
|
-
theme.fg("accent", `parallel (${args.tasks.length} tasks)`) +
|
|
689
|
-
theme.fg("muted", ` [${scope}]`);
|
|
604
|
+
let text = `subagent parallel (${args.tasks.length} tasks) [${scope}]`;
|
|
690
605
|
for (const t of args.tasks.slice(0, 3)) {
|
|
691
606
|
const preview = t.task.length > 40 ? `${t.task.slice(0, 40)}...` : t.task;
|
|
692
|
-
text += `\n ${
|
|
607
|
+
text += `\n ${t.agent} ${preview}`;
|
|
693
608
|
}
|
|
694
609
|
if (args.tasks.length > 3)
|
|
695
|
-
text += `\n
|
|
696
|
-
return new Text(text
|
|
610
|
+
text += `\n ... +${args.tasks.length - 3} more`;
|
|
611
|
+
return new Text(text);
|
|
697
612
|
}
|
|
698
613
|
const agentName = args.agent || "...";
|
|
699
614
|
const preview = args.task
|
|
700
|
-
? args.task.length > 60
|
|
701
|
-
? `${args.task.slice(0, 60)}...`
|
|
702
|
-
: args.task
|
|
615
|
+
? args.task.length > 60 ? `${args.task.slice(0, 60)}...` : args.task
|
|
703
616
|
: "...";
|
|
704
|
-
|
|
705
|
-
theme.fg("accent", agentName) +
|
|
706
|
-
theme.fg("muted", ` [${scope}]`);
|
|
707
|
-
text += `\n ${theme.fg("dim", preview)}`;
|
|
708
|
-
return new Text(text, 0, 0);
|
|
617
|
+
return new Text(`subagent ${agentName} [${scope}]\n ${preview}`);
|
|
709
618
|
},
|
|
710
|
-
renderResult(result,
|
|
619
|
+
renderResult(result, _opts, _theme, _context) {
|
|
711
620
|
const details = result.details;
|
|
712
621
|
if (!details || details.results.length === 0) {
|
|
713
622
|
const text = result.content[0];
|
|
714
|
-
return new Text(text?.type === "text" ? text.text : "(no output)"
|
|
623
|
+
return new Text(text?.type === "text" ? text.text : "(no output)");
|
|
715
624
|
}
|
|
716
|
-
const
|
|
717
|
-
const renderDisplayItems = (items, limit) => {
|
|
718
|
-
const toShow = limit ? items.slice(-limit) : items;
|
|
719
|
-
const skipped = limit && items.length > limit ? items.length - limit : 0;
|
|
720
|
-
let text = "";
|
|
721
|
-
if (skipped > 0)
|
|
722
|
-
text += theme.fg("muted", `... ${skipped} earlier items\n`);
|
|
723
|
-
for (const item of toShow) {
|
|
724
|
-
if (item.type === "text") {
|
|
725
|
-
const preview = expanded
|
|
726
|
-
? item.text
|
|
727
|
-
: item.text.split("\n").slice(0, 3).join("\n");
|
|
728
|
-
text += `${theme.fg("toolOutput", preview)}\n`;
|
|
729
|
-
}
|
|
730
|
-
else {
|
|
731
|
-
text += `${theme.fg("muted", "→ ") + formatToolCall(item.name, item.args, theme.fg.bind(theme))}\n`;
|
|
732
|
-
}
|
|
733
|
-
}
|
|
734
|
-
return text.trimEnd();
|
|
735
|
-
};
|
|
625
|
+
const lines = [];
|
|
736
626
|
if (details.mode === "single" && details.results.length === 1) {
|
|
737
627
|
const r = details.results[0];
|
|
738
|
-
const isError = r.exitCode !== 0 ||
|
|
739
|
-
|
|
740
|
-
r.stopReason === "aborted";
|
|
741
|
-
const icon = isError
|
|
742
|
-
? theme.fg("error", "✗")
|
|
743
|
-
: theme.fg("success", "✓");
|
|
744
|
-
const displayItems = getDisplayItems(r.messages);
|
|
628
|
+
const isError = r.exitCode !== 0 || r.stopReason === "error" || r.stopReason === "aborted";
|
|
629
|
+
const icon = isError ? "✗" : "✓";
|
|
745
630
|
const finalOutput = getFinalOutput(r.messages);
|
|
746
|
-
|
|
747
|
-
const container = new Container();
|
|
748
|
-
let header = `${icon} ${theme.fg("toolTitle", theme.bold(r.agent))}${theme.fg("muted", ` (${r.agentSource})`)}`;
|
|
749
|
-
if (isError && r.stopReason)
|
|
750
|
-
header += ` ${theme.fg("error", `[${r.stopReason}]`)}`;
|
|
751
|
-
container.addChild(new Text(header, 0, 0));
|
|
752
|
-
if (isError && r.errorMessage)
|
|
753
|
-
container.addChild(new Text(theme.fg("error", `Error: ${r.errorMessage}`), 0, 0));
|
|
754
|
-
container.addChild(new Spacer(1));
|
|
755
|
-
container.addChild(new Text(theme.fg("muted", "─── Task ───"), 0, 0));
|
|
756
|
-
container.addChild(new Text(theme.fg("dim", r.task), 0, 0));
|
|
757
|
-
container.addChild(new Spacer(1));
|
|
758
|
-
container.addChild(new Text(theme.fg("muted", "─── Output ───"), 0, 0));
|
|
759
|
-
if (displayItems.length === 0 && !finalOutput) {
|
|
760
|
-
container.addChild(new Text(theme.fg("muted", "(no output)"), 0, 0));
|
|
761
|
-
}
|
|
762
|
-
else {
|
|
763
|
-
for (const item of displayItems) {
|
|
764
|
-
if (item.type === "toolCall")
|
|
765
|
-
container.addChild(new Text(theme.fg("muted", "→ ") +
|
|
766
|
-
formatToolCall(item.name, item.args, theme.fg.bind(theme)), 0, 0));
|
|
767
|
-
}
|
|
768
|
-
if (finalOutput) {
|
|
769
|
-
container.addChild(new Spacer(1));
|
|
770
|
-
container.addChild(new Markdown(finalOutput.trim(), 0, 0, mdTheme));
|
|
771
|
-
}
|
|
772
|
-
}
|
|
773
|
-
const usageStr = formatUsageStats(r.usage, r.model);
|
|
774
|
-
if (usageStr) {
|
|
775
|
-
container.addChild(new Spacer(1));
|
|
776
|
-
container.addChild(new Text(theme.fg("dim", usageStr), 0, 0));
|
|
777
|
-
}
|
|
778
|
-
return container;
|
|
779
|
-
}
|
|
780
|
-
let text = `${icon} ${theme.fg("toolTitle", theme.bold(r.agent))}${theme.fg("muted", ` (${r.agentSource})`)}`;
|
|
781
|
-
if (isError && r.stopReason)
|
|
782
|
-
text += ` ${theme.fg("error", `[${r.stopReason}]`)}`;
|
|
631
|
+
lines.push(`${icon} ${r.agent} (${r.agentSource})${isError && r.stopReason ? ` [${r.stopReason}]` : ""}`);
|
|
783
632
|
if (isError && r.errorMessage)
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
633
|
+
lines.push(`Error: ${r.errorMessage}`);
|
|
634
|
+
lines.push("");
|
|
635
|
+
lines.push("─── Task ───");
|
|
636
|
+
lines.push(r.task);
|
|
637
|
+
lines.push("");
|
|
638
|
+
lines.push("─── Output ───");
|
|
639
|
+
if (!finalOutput) {
|
|
640
|
+
lines.push("(no output)");
|
|
641
|
+
}
|
|
787
642
|
else {
|
|
788
|
-
|
|
789
|
-
if (displayItems.length > COLLAPSED_ITEM_COUNT)
|
|
790
|
-
text += `\n${theme.fg("muted", "(Ctrl+O to expand)")}`;
|
|
643
|
+
lines.push(finalOutput.trim());
|
|
791
644
|
}
|
|
792
645
|
const usageStr = formatUsageStats(r.usage, r.model);
|
|
793
|
-
if (usageStr)
|
|
794
|
-
|
|
795
|
-
|
|
646
|
+
if (usageStr) {
|
|
647
|
+
lines.push("");
|
|
648
|
+
lines.push(usageStr);
|
|
649
|
+
}
|
|
650
|
+
return new Text(lines.join("\n"));
|
|
796
651
|
}
|
|
797
652
|
const aggregateUsage = (results) => {
|
|
798
|
-
const total = {
|
|
799
|
-
input: 0,
|
|
800
|
-
output: 0,
|
|
801
|
-
cacheRead: 0,
|
|
802
|
-
cacheWrite: 0,
|
|
803
|
-
cost: 0,
|
|
804
|
-
turns: 0,
|
|
805
|
-
};
|
|
653
|
+
const total = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, cost: 0, turns: 0 };
|
|
806
654
|
for (const r of results) {
|
|
807
655
|
total.input += r.usage.input;
|
|
808
656
|
total.output += r.usage.output;
|
|
@@ -815,137 +663,64 @@ export default function subagentExtension(pi) {
|
|
|
815
663
|
};
|
|
816
664
|
if (details.mode === "chain") {
|
|
817
665
|
const successCount = details.results.filter((r) => r.exitCode === 0).length;
|
|
818
|
-
const icon = successCount === details.results.length
|
|
819
|
-
|
|
820
|
-
: theme.fg("error", "✗");
|
|
821
|
-
if (expanded) {
|
|
822
|
-
const container = new Container();
|
|
823
|
-
container.addChild(new Text(icon +
|
|
824
|
-
" " +
|
|
825
|
-
theme.fg("toolTitle", theme.bold("chain ")) +
|
|
826
|
-
theme.fg("accent", `${successCount}/${details.results.length} steps`), 0, 0));
|
|
827
|
-
for (const r of details.results) {
|
|
828
|
-
const rIcon = r.exitCode === 0
|
|
829
|
-
? theme.fg("success", "✓")
|
|
830
|
-
: theme.fg("error", "✗");
|
|
831
|
-
const displayItems = getDisplayItems(r.messages);
|
|
832
|
-
const finalOutput = getFinalOutput(r.messages);
|
|
833
|
-
container.addChild(new Spacer(1));
|
|
834
|
-
container.addChild(new Text(`${theme.fg("muted", `─── Step ${r.step}: `) + theme.fg("accent", r.agent)} ${rIcon}`, 0, 0));
|
|
835
|
-
container.addChild(new Text(theme.fg("muted", "Task: ") + theme.fg("dim", r.task), 0, 0));
|
|
836
|
-
for (const item of displayItems) {
|
|
837
|
-
if (item.type === "toolCall") {
|
|
838
|
-
container.addChild(new Text(theme.fg("muted", "→ ") +
|
|
839
|
-
formatToolCall(item.name, item.args, theme.fg.bind(theme)), 0, 0));
|
|
840
|
-
}
|
|
841
|
-
}
|
|
842
|
-
if (finalOutput) {
|
|
843
|
-
container.addChild(new Spacer(1));
|
|
844
|
-
container.addChild(new Markdown(finalOutput.trim(), 0, 0, mdTheme));
|
|
845
|
-
}
|
|
846
|
-
const stepUsage = formatUsageStats(r.usage, r.model);
|
|
847
|
-
if (stepUsage)
|
|
848
|
-
container.addChild(new Text(theme.fg("dim", stepUsage), 0, 0));
|
|
849
|
-
}
|
|
850
|
-
const usageStr = formatUsageStats(aggregateUsage(details.results));
|
|
851
|
-
if (usageStr) {
|
|
852
|
-
container.addChild(new Spacer(1));
|
|
853
|
-
container.addChild(new Text(theme.fg("dim", `Total: ${usageStr}`), 0, 0));
|
|
854
|
-
}
|
|
855
|
-
return container;
|
|
856
|
-
}
|
|
857
|
-
let text = icon +
|
|
858
|
-
" " +
|
|
859
|
-
theme.fg("toolTitle", theme.bold("chain ")) +
|
|
860
|
-
theme.fg("accent", `${successCount}/${details.results.length} steps`);
|
|
666
|
+
const icon = successCount === details.results.length ? "✓" : "✗";
|
|
667
|
+
lines.push(`${icon} chain ${successCount}/${details.results.length} steps`);
|
|
861
668
|
for (const r of details.results) {
|
|
862
|
-
const rIcon = r.exitCode === 0
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
if (
|
|
868
|
-
|
|
669
|
+
const rIcon = r.exitCode === 0 ? "✓" : "✗";
|
|
670
|
+
const finalOutput = getFinalOutput(r.messages);
|
|
671
|
+
lines.push("");
|
|
672
|
+
lines.push(`─── Step ${r.step}: ${r.agent} ${rIcon}`);
|
|
673
|
+
lines.push(`Task: ${r.task}`);
|
|
674
|
+
if (finalOutput)
|
|
675
|
+
lines.push(finalOutput.trim());
|
|
869
676
|
else
|
|
870
|
-
|
|
677
|
+
lines.push("(no output)");
|
|
678
|
+
const stepUsage = formatUsageStats(r.usage, r.model);
|
|
679
|
+
if (stepUsage)
|
|
680
|
+
lines.push(stepUsage);
|
|
871
681
|
}
|
|
872
682
|
const usageStr = formatUsageStats(aggregateUsage(details.results));
|
|
873
|
-
if (usageStr)
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
683
|
+
if (usageStr) {
|
|
684
|
+
lines.push("");
|
|
685
|
+
lines.push(`Total: ${usageStr}`);
|
|
686
|
+
}
|
|
687
|
+
return new Text(lines.join("\n"));
|
|
877
688
|
}
|
|
878
689
|
if (details.mode === "parallel") {
|
|
879
690
|
const running = details.results.filter((r) => r.exitCode === -1).length;
|
|
880
691
|
const successCount = details.results.filter((r) => r.exitCode === 0).length;
|
|
881
692
|
const failCount = details.results.filter((r) => r.exitCode > 0).length;
|
|
882
693
|
const isRunning = running > 0;
|
|
883
|
-
const icon = isRunning
|
|
884
|
-
? theme.fg("warning", "⏳")
|
|
885
|
-
: failCount > 0
|
|
886
|
-
? theme.fg("warning", "◐")
|
|
887
|
-
: theme.fg("success", "✓");
|
|
694
|
+
const icon = isRunning ? "⏳" : failCount > 0 ? "◐" : "✓";
|
|
888
695
|
const status = isRunning
|
|
889
696
|
? `${successCount + failCount}/${details.results.length} done, ${running} running`
|
|
890
697
|
: `${successCount}/${details.results.length} tasks`;
|
|
891
|
-
|
|
892
|
-
const container = new Container();
|
|
893
|
-
container.addChild(new Text(`${icon} ${theme.fg("toolTitle", theme.bold("parallel "))}${theme.fg("accent", status)}`, 0, 0));
|
|
894
|
-
for (const r of details.results) {
|
|
895
|
-
const rIcon = r.exitCode === 0
|
|
896
|
-
? theme.fg("success", "✓")
|
|
897
|
-
: theme.fg("error", "✗");
|
|
898
|
-
const displayItems = getDisplayItems(r.messages);
|
|
899
|
-
const finalOutput = getFinalOutput(r.messages);
|
|
900
|
-
container.addChild(new Spacer(1));
|
|
901
|
-
container.addChild(new Text(`${theme.fg("muted", "─── ") + theme.fg("accent", r.agent)} ${rIcon}`, 0, 0));
|
|
902
|
-
container.addChild(new Text(theme.fg("muted", "Task: ") + theme.fg("dim", r.task), 0, 0));
|
|
903
|
-
for (const item of displayItems) {
|
|
904
|
-
if (item.type === "toolCall") {
|
|
905
|
-
container.addChild(new Text(theme.fg("muted", "→ ") +
|
|
906
|
-
formatToolCall(item.name, item.args, theme.fg.bind(theme)), 0, 0));
|
|
907
|
-
}
|
|
908
|
-
}
|
|
909
|
-
if (finalOutput) {
|
|
910
|
-
container.addChild(new Spacer(1));
|
|
911
|
-
container.addChild(new Markdown(finalOutput.trim(), 0, 0, mdTheme));
|
|
912
|
-
}
|
|
913
|
-
const taskUsage = formatUsageStats(r.usage, r.model);
|
|
914
|
-
if (taskUsage)
|
|
915
|
-
container.addChild(new Text(theme.fg("dim", taskUsage), 0, 0));
|
|
916
|
-
}
|
|
917
|
-
const usageStr = formatUsageStats(aggregateUsage(details.results));
|
|
918
|
-
if (usageStr) {
|
|
919
|
-
container.addChild(new Spacer(1));
|
|
920
|
-
container.addChild(new Text(theme.fg("dim", `Total: ${usageStr}`), 0, 0));
|
|
921
|
-
}
|
|
922
|
-
return container;
|
|
923
|
-
}
|
|
924
|
-
let text = `${icon} ${theme.fg("toolTitle", theme.bold("parallel "))}${theme.fg("accent", status)}`;
|
|
698
|
+
lines.push(`${icon} parallel ${status}`);
|
|
925
699
|
for (const r of details.results) {
|
|
926
|
-
const rIcon = r.exitCode === -1
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
if (displayItems.length === 0)
|
|
934
|
-
text += `\n${theme.fg("muted", r.exitCode === -1 ? "(running...)" : "(no output)")}`;
|
|
700
|
+
const rIcon = r.exitCode === -1 ? "⏳" : r.exitCode === 0 ? "✓" : "✗";
|
|
701
|
+
const finalOutput = getFinalOutput(r.messages);
|
|
702
|
+
lines.push("");
|
|
703
|
+
lines.push(`─── ${r.agent} ${rIcon}`);
|
|
704
|
+
lines.push(`Task: ${r.task}`);
|
|
705
|
+
if (finalOutput)
|
|
706
|
+
lines.push(finalOutput.trim());
|
|
935
707
|
else
|
|
936
|
-
|
|
708
|
+
lines.push(r.exitCode === -1 ? "(running...)" : "(no output)");
|
|
709
|
+
const taskUsage = formatUsageStats(r.usage, r.model);
|
|
710
|
+
if (taskUsage)
|
|
711
|
+
lines.push(taskUsage);
|
|
937
712
|
}
|
|
938
713
|
if (!isRunning) {
|
|
939
714
|
const usageStr = formatUsageStats(aggregateUsage(details.results));
|
|
940
|
-
if (usageStr)
|
|
941
|
-
|
|
715
|
+
if (usageStr) {
|
|
716
|
+
lines.push("");
|
|
717
|
+
lines.push(`Total: ${usageStr}`);
|
|
718
|
+
}
|
|
942
719
|
}
|
|
943
|
-
|
|
944
|
-
text += `\n${theme.fg("muted", "(Ctrl+O to expand)")}`;
|
|
945
|
-
return new Text(text, 0, 0);
|
|
720
|
+
return new Text(lines.join("\n"));
|
|
946
721
|
}
|
|
947
722
|
const text = result.content[0];
|
|
948
|
-
return new Text(text?.type === "text" ? text.text : "(no output)"
|
|
723
|
+
return new Text(text?.type === "text" ? text.text : "(no output)");
|
|
949
724
|
},
|
|
950
725
|
});
|
|
951
726
|
}
|
package/dist/cli.js
CHANGED
|
@@ -112,6 +112,10 @@ function resolveOpenRouterAttributionPath() {
|
|
|
112
112
|
function resolveAgentExtensionPath() {
|
|
113
113
|
return resolveExtensionEntry("agent", "index");
|
|
114
114
|
}
|
|
115
|
+
/** Absolute path to the bundled designer extension. */
|
|
116
|
+
function resolveDesignerExtensionPath() {
|
|
117
|
+
return resolveExtensionEntry("designer", "index");
|
|
118
|
+
}
|
|
115
119
|
// ---- Branded helpers ---------------------------------------------------------
|
|
116
120
|
function printVersion() {
|
|
117
121
|
process.stdout.write(`spectral ${VERSION} — ${TAGLINE}\n`);
|
|
@@ -290,12 +294,19 @@ async function main() {
|
|
|
290
294
|
process.stderr.write(`spectral: bundled agent extension not found at ${agentExtPath}. This is a packaging bug.\n`);
|
|
291
295
|
process.exit(1);
|
|
292
296
|
}
|
|
297
|
+
// Bundled designer extension for design tasks (prototypes, slide decks, mobile apps, etc.)
|
|
298
|
+
const designerExtPath = resolveDesignerExtensionPath();
|
|
299
|
+
if (!existsSync(designerExtPath)) {
|
|
300
|
+
process.stderr.write(`spectral: bundled designer extension not found at ${designerExtPath}. This is a packaging bug.\n`);
|
|
301
|
+
process.exit(1);
|
|
302
|
+
}
|
|
293
303
|
const extFlags = [
|
|
294
304
|
"--extension", aexolExtPath,
|
|
295
305
|
"--extension", mcpExtPath,
|
|
296
306
|
"--extension", obsMemPath,
|
|
297
307
|
"--extension", openrouterAttrPath,
|
|
298
308
|
"--extension", agentExtPath,
|
|
309
|
+
"--extension", designerExtPath,
|
|
299
310
|
];
|
|
300
311
|
const finalArgs = [...extFlags, ...args];
|
|
301
312
|
delegateToPi(finalArgs);
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Design System Inspired by Agentic
|
|
2
|
+
|
|
3
|
+
> Category: Themed & Unique
|
|
4
|
+
> Conversational AI-first interface with minimal controls, clear outcomes, and delegated task flows for agentic workflows.
|
|
5
|
+
|
|
6
|
+
## 1. Visual Theme & Atmosphere
|
|
7
|
+
|
|
8
|
+
Conversational AI-first interface with minimal controls, clear outcomes, and delegated task flows for agentic workflows.
|
|
9
|
+
|
|
10
|
+
- **Visual style:** modern, bold
|
|
11
|
+
- **Color stance:** surface/subtle layers
|
|
12
|
+
- **Design intent:** Keep outputs recognizable to this style family while preserving usability and readability.
|
|
13
|
+
|
|
14
|
+
## 2. Color
|
|
15
|
+
|
|
16
|
+
- **Primary:** `#FF5701` — Token from style foundations.
|
|
17
|
+
- **Secondary:** `#F6F6F1` — Token from style foundations.
|
|
18
|
+
- **Success:** `#16A34A` — Token from style foundations.
|
|
19
|
+
- **Warning:** `#D97706` — Token from style foundations.
|
|
20
|
+
- **Danger:** `#DC2626` — Token from style foundations.
|
|
21
|
+
- **Surface:** `#FFFFFF` — Token from style foundations.
|
|
22
|
+
- **Text:** `#111827` — Token from style foundations.
|
|
23
|
+
- **Neutral:** `#FFFFFF` — Derived from the surface token for official format compatibility.
|
|
24
|
+
|
|
25
|
+
- Favor Primary (#FF5701) for CTA emphasis.
|
|
26
|
+
- Use Surface (#FFFFFF) for large backgrounds and cards.
|
|
27
|
+
- Keep body copy on Text (#111827) for legibility.
|
|
28
|
+
|
|
29
|
+
## 3. Typography
|
|
30
|
+
|
|
31
|
+
- **Scale:** 14/16/18/24/32/40
|
|
32
|
+
- **Families:** primary=Playfair Display, display=Playfair Display, mono=JetBrains Mono
|
|
33
|
+
- **Weights:** 100, 200, 300, 400, 500, 600, 700, 800, 900
|
|
34
|
+
- Headings should carry the style personality; body text should optimize scanability and contrast.
|
|
35
|
+
|
|
36
|
+
## 4. Spacing & Grid
|
|
37
|
+
|
|
38
|
+
- **Spacing scale:** 8pt baseline grid
|
|
39
|
+
- Keep vertical rhythm consistent across sections and components.
|
|
40
|
+
- Align columns and modules to a predictable grid; avoid ad-hoc offsets.
|
|
41
|
+
|
|
42
|
+
## 5. Layout & Composition
|
|
43
|
+
|
|
44
|
+
- Prefer clear content blocks with consistent internal padding.
|
|
45
|
+
- Keep hierarchy obvious: headline → support text → primary action.
|
|
46
|
+
- Use whitespace to separate concerns before adding borders or shadows.
|
|
47
|
+
|
|
48
|
+
## 6. Components
|
|
49
|
+
|
|
50
|
+
- Buttons: primary action uses `#FF5701`; secondary actions stay neutral.
|
|
51
|
+
- Inputs: strong focus-visible states, clear labels, and predictable error messaging.
|
|
52
|
+
- Cards/sections: use consistent radii, spacing, and elevation strategy across the page.
|
|
53
|
+
|
|
54
|
+
## 7. Motion & Interaction
|
|
55
|
+
|
|
56
|
+
- Use subtle transitions that emphasize Primary (#FF5701) as the interaction signal.
|
|
57
|
+
- Default to short, purposeful transitions (150–250ms) with stable easing.
|
|
58
|
+
- Ensure hover, focus-visible, active, disabled, and loading states are explicit.
|
|
59
|
+
|
|
60
|
+
## 8. Voice & Brand
|
|
61
|
+
|
|
62
|
+
- Tone should reflect the visual style: concise, confident, and product-specific.
|
|
63
|
+
- Keep microcopy action-oriented and avoid generic filler language.
|
|
64
|
+
- Preserve the style identity in headlines while keeping UI labels literal and clear.
|
|
65
|
+
|
|
66
|
+
## 9. Anti-patterns
|
|
67
|
+
|
|
68
|
+
- Do not introduce off-palette colors when an existing token can solve the problem.
|
|
69
|
+
- Do not flatten hierarchy by using the same type size/weight for all text.
|
|
70
|
+
- Do not add decorative effects that reduce readability or accessibility.
|
|
71
|
+
- Do not mix unrelated visual metaphors in the same interface.
|