@aexol/spectral 0.9.269 → 0.9.271
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.d.ts +10 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +26 -10
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +29 -5
- package/dist/commands/update.d.ts +2 -2
- package/dist/commands/update.js +3 -3
- package/dist/designer/index.d.ts +13 -18
- package/dist/designer/index.d.ts.map +1 -1
- package/dist/designer/index.js +128 -201
- package/dist/extensions/aexol-mcp.d.ts.map +1 -1
- package/dist/extensions/aexol-mcp.js +23 -0
- package/dist/extensions/dataset-uploader/cleaner.js +1 -1
- package/dist/extensions/dataset-uploader/scrubber.d.ts +2 -0
- package/dist/extensions/dataset-uploader/scrubber.d.ts.map +1 -1
- package/dist/extensions/dataset-uploader/scrubber.js +30 -1
- package/dist/generated/zeus/index.d.ts +0 -4
- package/dist/generated/zeus/index.d.ts.map +1 -1
- package/dist/memory/debug-log.d.ts.map +1 -1
- package/dist/memory/debug-log.js +20 -2
- package/dist/memory/tools/compact-context.d.ts +1 -1
- package/dist/memory/tools/compact-context.d.ts.map +1 -1
- package/dist/memory/tools/compact-context.js +4 -1
- package/dist/memory/tools/recall-observation.d.ts +3 -3
- package/dist/memory/tools/recall-observation.d.ts.map +1 -1
- package/dist/memory/tools/recall-observation.js +4 -1
- package/dist/memory/tools/receive-agent-observations.d.ts +3 -3
- package/dist/memory/tools/receive-agent-observations.d.ts.map +1 -1
- package/dist/memory/tools/receive-agent-observations.js +4 -1
- package/dist/memory/tools/share-project-observation.d.ts +3 -3
- package/dist/memory/tools/share-project-observation.d.ts.map +1 -1
- package/dist/memory/tools/share-project-observation.js +4 -1
- package/dist/memory/tools/write-project-observation.d.ts +3 -3
- package/dist/memory/tools/write-project-observation.d.ts.map +1 -1
- package/dist/memory/tools/write-project-observation.js +4 -1
- package/dist/relay/client.d.ts.map +1 -1
- package/dist/relay/client.js +5 -2
- package/dist/sdk/ai/env-api-keys.js +1 -1
- package/dist/sdk/coding-agent/core/extensions/loader.d.ts.map +1 -1
- package/dist/sdk/coding-agent/core/extensions/loader.js +31 -3
- package/dist/sdk/coding-agent/core/theme.js +1 -1
- package/dist/server/handlers/agent-settings.d.ts.map +1 -1
- package/dist/server/handlers/agent-settings.js +4 -1
- package/dist/server/handlers/settings-lock.d.ts.map +1 -1
- package/dist/server/handlers/settings-lock.js +4 -1
- package/dist/server/storage.d.ts.map +1 -1
- package/dist/server/storage.js +13 -1
- package/dist/utils/serve-state.d.ts +17 -0
- package/dist/utils/serve-state.d.ts.map +1 -1
- package/dist/utils/serve-state.js +73 -0
- package/package.json +1 -1
- package/dist/designer/data/skills/blog-post.d.ts +0 -3
- package/dist/designer/data/skills/blog-post.d.ts.map +0 -1
- package/dist/designer/data/skills/blog-post.js +0 -84
- package/dist/designer/data/skills/blog-post.ts +0 -87
- package/dist/designer/data/skills/critique.d.ts +0 -3
- package/dist/designer/data/skills/critique.d.ts.map +0 -1
- package/dist/designer/data/skills/critique.js +0 -109
- package/dist/designer/data/skills/critique.ts +0 -112
- package/dist/designer/data/skills/dashboard.d.ts +0 -3
- package/dist/designer/data/skills/dashboard.d.ts.map +0 -1
- package/dist/designer/data/skills/dashboard.js +0 -165
- package/dist/designer/data/skills/dashboard.ts +0 -168
- package/dist/designer/data/skills/design-brief.d.ts +0 -3
- package/dist/designer/data/skills/design-brief.d.ts.map +0 -1
- package/dist/designer/data/skills/design-brief.js +0 -141
- package/dist/designer/data/skills/design-brief.ts +0 -144
- package/dist/designer/data/skills/design-skill.d.ts +0 -10
- package/dist/designer/data/skills/design-skill.d.ts.map +0 -1
- package/dist/designer/data/skills/design-skill.js +0 -1
- package/dist/designer/data/skills/design-skill.ts +0 -9
- package/dist/designer/data/skills/docs-page.d.ts +0 -3
- package/dist/designer/data/skills/docs-page.d.ts.map +0 -1
- package/dist/designer/data/skills/docs-page.js +0 -68
- package/dist/designer/data/skills/docs-page.ts +0 -71
- package/dist/designer/data/skills/index.d.ts +0 -3
- package/dist/designer/data/skills/index.d.ts.map +0 -1
- package/dist/designer/data/skills/index.js +0 -28
- package/dist/designer/data/skills/index.ts +0 -30
- package/dist/designer/data/skills/magazine-poster.d.ts +0 -3
- package/dist/designer/data/skills/magazine-poster.d.ts.map +0 -1
- package/dist/designer/data/skills/magazine-poster.js +0 -70
- package/dist/designer/data/skills/magazine-poster.ts +0 -73
- package/dist/designer/data/skills/mobile-app.d.ts +0 -3
- package/dist/designer/data/skills/mobile-app.d.ts.map +0 -1
- package/dist/designer/data/skills/mobile-app.js +0 -229
- package/dist/designer/data/skills/mobile-app.ts +0 -232
- package/dist/designer/data/skills/motion-frames.d.ts +0 -3
- package/dist/designer/data/skills/motion-frames.d.ts.map +0 -1
- package/dist/designer/data/skills/motion-frames.js +0 -121
- package/dist/designer/data/skills/motion-frames.ts +0 -124
- package/dist/designer/data/skills/pricing-page.d.ts +0 -3
- package/dist/designer/data/skills/pricing-page.d.ts.map +0 -1
- package/dist/designer/data/skills/pricing-page.js +0 -76
- package/dist/designer/data/skills/pricing-page.ts +0 -79
- package/dist/designer/data/skills/saas-landing.d.ts +0 -3
- package/dist/designer/data/skills/saas-landing.d.ts.map +0 -1
- package/dist/designer/data/skills/saas-landing.js +0 -71
- package/dist/designer/data/skills/saas-landing.ts +0 -74
- package/dist/designer/data/skills/slide-deck.d.ts +0 -3
- package/dist/designer/data/skills/slide-deck.d.ts.map +0 -1
- package/dist/designer/data/skills/slide-deck.js +0 -213
- package/dist/designer/data/skills/slide-deck.ts +0 -216
- package/dist/designer/data/skills/social-carousel.d.ts +0 -3
- package/dist/designer/data/skills/social-carousel.d.ts.map +0 -1
- package/dist/designer/data/skills/social-carousel.js +0 -135
- package/dist/designer/data/skills/social-carousel.ts +0 -138
- package/dist/designer/data/skills/web-prototype.d.ts +0 -3
- package/dist/designer/data/skills/web-prototype.d.ts.map +0 -1
- package/dist/designer/data/skills/web-prototype.js +0 -159
- package/dist/designer/data/skills/web-prototype.ts +0 -162
- package/dist/designer/data/systems/agentic/DESIGN.md +0 -71
- package/dist/designer/data/systems/agentic/components.html +0 -154
- package/dist/designer/data/systems/agentic/tokens.css +0 -63
- package/dist/designer/data/systems/airbnb/DESIGN.md +0 -393
- package/dist/designer/data/systems/airbnb/components.html +0 -1373
- package/dist/designer/data/systems/airbnb/tokens.css +0 -261
- package/dist/designer/data/systems/airtable/DESIGN.md +0 -92
- package/dist/designer/data/systems/airtable/components.html +0 -489
- package/dist/designer/data/systems/airtable/tokens.css +0 -261
- package/dist/designer/data/systems/ant/DESIGN.md +0 -71
- package/dist/designer/data/systems/ant/components.html +0 -154
- package/dist/designer/data/systems/ant/tokens.css +0 -63
- package/dist/designer/data/systems/apple/DESIGN.md +0 -250
- package/dist/designer/data/systems/apple/components.html +0 -749
- package/dist/designer/data/systems/apple/tokens.css +0 -286
- package/dist/designer/data/systems/application/DESIGN.md +0 -71
- package/dist/designer/data/systems/application/components.html +0 -154
- package/dist/designer/data/systems/application/tokens.css +0 -63
- package/dist/designer/data/systems/arc/DESIGN.md +0 -152
- package/dist/designer/data/systems/arc/components.html +0 -432
- package/dist/designer/data/systems/arc/tokens.css +0 -137
- package/dist/designer/data/systems/artistic/DESIGN.md +0 -71
- package/dist/designer/data/systems/artistic/components.html +0 -136
- package/dist/designer/data/systems/artistic/tokens.css +0 -63
- package/dist/designer/data/systems/atelier-zero/DESIGN.md +0 -316
- package/dist/designer/data/systems/atelier-zero/components.html +0 -136
- package/dist/designer/data/systems/atelier-zero/tokens.css +0 -63
- package/dist/designer/data/systems/bento/DESIGN.md +0 -71
- package/dist/designer/data/systems/bento/components.html +0 -136
- package/dist/designer/data/systems/bento/tokens.css +0 -63
- package/dist/designer/data/systems/binance/DESIGN.md +0 -348
- package/dist/designer/data/systems/binance/components.html +0 -550
- package/dist/designer/data/systems/binance/tokens.css +0 -255
- package/dist/designer/data/systems/bmw/DESIGN.md +0 -183
- package/dist/designer/data/systems/bmw/components.html +0 -551
- package/dist/designer/data/systems/bmw/tokens.css +0 -179
- package/dist/designer/data/systems/bmw-m/DESIGN.md +0 -246
- package/dist/designer/data/systems/bmw-m/components.html +0 -342
- package/dist/designer/data/systems/bmw-m/tokens.css +0 -64
- package/dist/designer/data/systems/bold/DESIGN.md +0 -71
- package/dist/designer/data/systems/bold/components.html +0 -136
- package/dist/designer/data/systems/bold/tokens.css +0 -63
- package/dist/designer/data/systems/brutalism/DESIGN.md +0 -71
- package/dist/designer/data/systems/brutalism/components.html +0 -154
- package/dist/designer/data/systems/brutalism/tokens.css +0 -63
- package/dist/designer/data/systems/bugatti/DESIGN.md +0 -271
- package/dist/designer/data/systems/bugatti/components.html +0 -342
- package/dist/designer/data/systems/bugatti/tokens.css +0 -64
- package/dist/designer/data/systems/cafe/DESIGN.md +0 -71
- package/dist/designer/data/systems/cafe/components.html +0 -136
- package/dist/designer/data/systems/cafe/tokens.css +0 -63
- package/dist/designer/data/systems/cal/DESIGN.md +0 -262
- package/dist/designer/data/systems/cal/components.html +0 -376
- package/dist/designer/data/systems/cal/tokens.css +0 -265
- package/dist/designer/data/systems/canva/DESIGN.md +0 -157
- package/dist/designer/data/systems/canva/components.html +0 -461
- package/dist/designer/data/systems/canva/tokens.css +0 -147
- package/dist/designer/data/systems/cisco/DESIGN.md +0 -201
- package/dist/designer/data/systems/cisco/components.html +0 -342
- package/dist/designer/data/systems/cisco/tokens.css +0 -64
- package/dist/designer/data/systems/claude/DESIGN.md +0 -315
- package/dist/designer/data/systems/claude/components.html +0 -483
- package/dist/designer/data/systems/claude/tokens.css +0 -130
- package/dist/designer/data/systems/clay/DESIGN.md +0 -307
- package/dist/designer/data/systems/clay/components.html +0 -136
- package/dist/designer/data/systems/clay/tokens.css +0 -63
- package/dist/designer/data/systems/claymorphism/DESIGN.md +0 -71
- package/dist/designer/data/systems/claymorphism/components.html +0 -136
- package/dist/designer/data/systems/claymorphism/tokens.css +0 -63
- package/dist/designer/data/systems/clean/DESIGN.md +0 -71
- package/dist/designer/data/systems/clean/components.html +0 -136
- package/dist/designer/data/systems/clean/tokens.css +0 -63
- package/dist/designer/data/systems/clickhouse/DESIGN.md +0 -284
- package/dist/designer/data/systems/clickhouse/components.html +0 -506
- package/dist/designer/data/systems/clickhouse/tokens.css +0 -135
- package/dist/designer/data/systems/cohere/DESIGN.md +0 -269
- package/dist/designer/data/systems/cohere/components.html +0 -353
- package/dist/designer/data/systems/cohere/tokens.css +0 -126
- package/dist/designer/data/systems/coinbase/DESIGN.md +0 -132
- package/dist/designer/data/systems/coinbase/components.html +0 -501
- package/dist/designer/data/systems/coinbase/tokens.css +0 -257
- package/dist/designer/data/systems/colorful/DESIGN.md +0 -71
- package/dist/designer/data/systems/colorful/components.html +0 -136
- package/dist/designer/data/systems/colorful/tokens.css +0 -63
- package/dist/designer/data/systems/composio/DESIGN.md +0 -310
- package/dist/designer/data/systems/composio/components.html +0 -342
- package/dist/designer/data/systems/composio/tokens.css +0 -64
- package/dist/designer/data/systems/contemporary/DESIGN.md +0 -71
- package/dist/designer/data/systems/contemporary/components.html +0 -136
- package/dist/designer/data/systems/contemporary/tokens.css +0 -63
- package/dist/designer/data/systems/corporate/DESIGN.md +0 -71
- package/dist/designer/data/systems/corporate/components.html +0 -136
- package/dist/designer/data/systems/corporate/tokens.css +0 -63
- package/dist/designer/data/systems/cosmic/DESIGN.md +0 -71
- package/dist/designer/data/systems/cosmic/components.html +0 -136
- package/dist/designer/data/systems/cosmic/tokens.css +0 -63
- package/dist/designer/data/systems/creative/DESIGN.md +0 -71
- package/dist/designer/data/systems/creative/components.html +0 -136
- package/dist/designer/data/systems/creative/tokens.css +0 -63
- package/dist/designer/data/systems/cursor/DESIGN.md +0 -312
- package/dist/designer/data/systems/cursor/components.html +0 -654
- package/dist/designer/data/systems/cursor/tokens.css +0 -218
- package/dist/designer/data/systems/dashboard/DESIGN.md +0 -71
- package/dist/designer/data/systems/dashboard/components.html +0 -154
- package/dist/designer/data/systems/dashboard/tokens.css +0 -63
- package/dist/designer/data/systems/default/DESIGN.md +0 -62
- package/dist/designer/data/systems/default/components.html +0 -523
- package/dist/designer/data/systems/default/tokens.css +0 -200
- package/dist/designer/data/systems/discord/DESIGN.md +0 -162
- package/dist/designer/data/systems/discord/components.html +0 -359
- package/dist/designer/data/systems/discord/tokens.css +0 -125
- package/dist/designer/data/systems/dithered/DESIGN.md +0 -71
- package/dist/designer/data/systems/dithered/components.html +0 -136
- package/dist/designer/data/systems/dithered/tokens.css +0 -63
- package/dist/designer/data/systems/doodle/DESIGN.md +0 -71
- package/dist/designer/data/systems/doodle/components.html +0 -136
- package/dist/designer/data/systems/doodle/tokens.css +0 -63
- package/dist/designer/data/systems/dramatic/DESIGN.md +0 -71
- package/dist/designer/data/systems/dramatic/components.html +0 -136
- package/dist/designer/data/systems/dramatic/tokens.css +0 -63
- package/dist/designer/data/systems/duolingo/DESIGN.md +0 -154
- package/dist/designer/data/systems/duolingo/components.html +0 -532
- package/dist/designer/data/systems/duolingo/tokens.css +0 -130
- package/dist/designer/data/systems/editorial/DESIGN.md +0 -71
- package/dist/designer/data/systems/editorial/components.html +0 -154
- package/dist/designer/data/systems/editorial/tokens.css +0 -63
- package/dist/designer/data/systems/elegant/DESIGN.md +0 -71
- package/dist/designer/data/systems/elegant/components.html +0 -136
- package/dist/designer/data/systems/elegant/tokens.css +0 -63
- package/dist/designer/data/systems/elevenlabs/DESIGN.md +0 -268
- package/dist/designer/data/systems/elevenlabs/components.html +0 -342
- package/dist/designer/data/systems/elevenlabs/tokens.css +0 -127
- package/dist/designer/data/systems/energetic/DESIGN.md +0 -72
- package/dist/designer/data/systems/energetic/components.html +0 -136
- package/dist/designer/data/systems/energetic/tokens.css +0 -63
- package/dist/designer/data/systems/enterprise/DESIGN.md +0 -71
- package/dist/designer/data/systems/enterprise/components.html +0 -154
- package/dist/designer/data/systems/enterprise/tokens.css +0 -63
- package/dist/designer/data/systems/expo/DESIGN.md +0 -284
- package/dist/designer/data/systems/expo/components.html +0 -342
- package/dist/designer/data/systems/expo/tokens.css +0 -64
- package/dist/designer/data/systems/expressive/DESIGN.md +0 -71
- package/dist/designer/data/systems/expressive/components.html +0 -136
- package/dist/designer/data/systems/expressive/tokens.css +0 -63
- package/dist/designer/data/systems/fantasy/DESIGN.md +0 -71
- package/dist/designer/data/systems/fantasy/components.html +0 -136
- package/dist/designer/data/systems/fantasy/tokens.css +0 -63
- package/dist/designer/data/systems/ferrari/DESIGN.md +0 -317
- package/dist/designer/data/systems/ferrari/components.html +0 -342
- package/dist/designer/data/systems/ferrari/tokens.css +0 -64
- package/dist/designer/data/systems/figma/DESIGN.md +0 -223
- package/dist/designer/data/systems/figma/components.html +0 -344
- package/dist/designer/data/systems/figma/tokens.css +0 -126
- package/dist/designer/data/systems/flat/DESIGN.md +0 -71
- package/dist/designer/data/systems/flat/components.html +0 -136
- package/dist/designer/data/systems/flat/tokens.css +0 -63
- package/dist/designer/data/systems/framer/DESIGN.md +0 -249
- package/dist/designer/data/systems/framer/components.html +0 -438
- package/dist/designer/data/systems/framer/tokens.css +0 -238
- package/dist/designer/data/systems/friendly/DESIGN.md +0 -71
- package/dist/designer/data/systems/friendly/components.html +0 -136
- package/dist/designer/data/systems/friendly/tokens.css +0 -63
- package/dist/designer/data/systems/futuristic/DESIGN.md +0 -71
- package/dist/designer/data/systems/futuristic/components.html +0 -136
- package/dist/designer/data/systems/futuristic/tokens.css +0 -63
- package/dist/designer/data/systems/github/DESIGN.md +0 -155
- package/dist/designer/data/systems/github/components.html +0 -383
- package/dist/designer/data/systems/github/tokens.css +0 -125
- package/dist/designer/data/systems/glassmorphism/DESIGN.md +0 -71
- package/dist/designer/data/systems/glassmorphism/components.html +0 -154
- package/dist/designer/data/systems/glassmorphism/tokens.css +0 -63
- package/dist/designer/data/systems/gradient/DESIGN.md +0 -71
- package/dist/designer/data/systems/gradient/components.html +0 -154
- package/dist/designer/data/systems/gradient/tokens.css +0 -63
- package/dist/designer/data/systems/hashicorp/DESIGN.md +0 -281
- package/dist/designer/data/systems/hashicorp/components.html +0 -502
- package/dist/designer/data/systems/hashicorp/tokens.css +0 -272
- package/dist/designer/data/systems/hud/DESIGN.md +0 -173
- package/dist/designer/data/systems/hud/components.html +0 -136
- package/dist/designer/data/systems/hud/tokens.css +0 -63
- package/dist/designer/data/systems/huggingface/DESIGN.md +0 -149
- package/dist/designer/data/systems/huggingface/components.html +0 -346
- package/dist/designer/data/systems/huggingface/tokens.css +0 -125
- package/dist/designer/data/systems/ibm/DESIGN.md +0 -335
- package/dist/designer/data/systems/ibm/components.html +0 -342
- package/dist/designer/data/systems/ibm/tokens.css +0 -64
- package/dist/designer/data/systems/intercom/DESIGN.md +0 -149
- package/dist/designer/data/systems/intercom/components.html +0 -557
- package/dist/designer/data/systems/intercom/tokens.css +0 -150
- package/dist/designer/data/systems/kami/DESIGN.md +0 -410
- package/dist/designer/data/systems/kami/components.html +0 -601
- package/dist/designer/data/systems/kami/tokens.css +0 -272
- package/dist/designer/data/systems/kraken/DESIGN.md +0 -128
- package/dist/designer/data/systems/kraken/components.html +0 -342
- package/dist/designer/data/systems/kraken/tokens.css +0 -64
- package/dist/designer/data/systems/lamborghini/DESIGN.md +0 -291
- package/dist/designer/data/systems/lamborghini/components.html +0 -342
- package/dist/designer/data/systems/lamborghini/tokens.css +0 -64
- package/dist/designer/data/systems/levels/DESIGN.md +0 -71
- package/dist/designer/data/systems/levels/components.html +0 -154
- package/dist/designer/data/systems/levels/tokens.css +0 -63
- package/dist/designer/data/systems/linear-app/DESIGN.md +0 -370
- package/dist/designer/data/systems/linear-app/components.html +0 -370
- package/dist/designer/data/systems/linear-app/tokens.css +0 -130
- package/dist/designer/data/systems/lingo/DESIGN.md +0 -71
- package/dist/designer/data/systems/lingo/components.html +0 -154
- package/dist/designer/data/systems/lingo/tokens.css +0 -63
- package/dist/designer/data/systems/loom/DESIGN.md +0 -201
- package/dist/designer/data/systems/loom/components.html +0 -446
- package/dist/designer/data/systems/loom/tokens.css +0 -138
- package/dist/designer/data/systems/lovable/DESIGN.md +0 -301
- package/dist/designer/data/systems/lovable/components.html +0 -441
- package/dist/designer/data/systems/lovable/tokens.css +0 -258
- package/dist/designer/data/systems/luxury/DESIGN.md +0 -71
- package/dist/designer/data/systems/luxury/components.html +0 -154
- package/dist/designer/data/systems/luxury/tokens.css +0 -63
- package/dist/designer/data/systems/mastercard/DESIGN.md +0 -368
- package/dist/designer/data/systems/mastercard/components.html +0 -342
- package/dist/designer/data/systems/mastercard/tokens.css +0 -64
- package/dist/designer/data/systems/material/DESIGN.md +0 -71
- package/dist/designer/data/systems/material/components.html +0 -154
- package/dist/designer/data/systems/material/tokens.css +0 -63
- package/dist/designer/data/systems/meta/DESIGN.md +0 -369
- package/dist/designer/data/systems/meta/components.html +0 -398
- package/dist/designer/data/systems/meta/tokens.css +0 -263
- package/dist/designer/data/systems/minimal/DESIGN.md +0 -71
- package/dist/designer/data/systems/minimal/components.html +0 -154
- package/dist/designer/data/systems/minimal/tokens.css +0 -63
- package/dist/designer/data/systems/minimax/DESIGN.md +0 -260
- package/dist/designer/data/systems/minimax/components.html +0 -590
- package/dist/designer/data/systems/minimax/tokens.css +0 -148
- package/dist/designer/data/systems/mintlify/DESIGN.md +0 -329
- package/dist/designer/data/systems/mintlify/components.html +0 -737
- package/dist/designer/data/systems/mintlify/tokens.css +0 -256
- package/dist/designer/data/systems/miro/DESIGN.md +0 -111
- package/dist/designer/data/systems/miro/components.html +0 -342
- package/dist/designer/data/systems/miro/tokens.css +0 -64
- package/dist/designer/data/systems/mission-control/DESIGN.md +0 -474
- package/dist/designer/data/systems/mission-control/components.html +0 -136
- package/dist/designer/data/systems/mission-control/tokens.css +0 -63
- package/dist/designer/data/systems/mistral-ai/DESIGN.md +0 -264
- package/dist/designer/data/systems/mistral-ai/components.html +0 -338
- package/dist/designer/data/systems/mistral-ai/tokens.css +0 -125
- package/dist/designer/data/systems/modern/DESIGN.md +0 -71
- package/dist/designer/data/systems/modern/components.html +0 -154
- package/dist/designer/data/systems/modern/tokens.css +0 -63
- package/dist/designer/data/systems/mongodb/DESIGN.md +0 -269
- package/dist/designer/data/systems/mongodb/components.html +0 -462
- package/dist/designer/data/systems/mongodb/tokens.css +0 -176
- package/dist/designer/data/systems/mono/DESIGN.md +0 -71
- package/dist/designer/data/systems/mono/components.html +0 -136
- package/dist/designer/data/systems/mono/tokens.css +0 -63
- package/dist/designer/data/systems/neobrutalism/DESIGN.md +0 -71
- package/dist/designer/data/systems/neobrutalism/components.html +0 -136
- package/dist/designer/data/systems/neobrutalism/tokens.css +0 -63
- package/dist/designer/data/systems/neon/DESIGN.md +0 -71
- package/dist/designer/data/systems/neon/components.html +0 -136
- package/dist/designer/data/systems/neon/tokens.css +0 -63
- package/dist/designer/data/systems/neumorphism/DESIGN.md +0 -71
- package/dist/designer/data/systems/neumorphism/components.html +0 -136
- package/dist/designer/data/systems/neumorphism/tokens.css +0 -63
- package/dist/designer/data/systems/nike/DESIGN.md +0 -366
- package/dist/designer/data/systems/nike/components.html +0 -512
- package/dist/designer/data/systems/nike/tokens.css +0 -304
- package/dist/designer/data/systems/notion/DESIGN.md +0 -312
- package/dist/designer/data/systems/notion/components.html +0 -413
- package/dist/designer/data/systems/notion/tokens.css +0 -130
- package/dist/designer/data/systems/nvidia/DESIGN.md +0 -296
- package/dist/designer/data/systems/nvidia/components.html +0 -414
- package/dist/designer/data/systems/nvidia/tokens.css +0 -133
- package/dist/designer/data/systems/ollama/DESIGN.md +0 -270
- package/dist/designer/data/systems/ollama/components.html +0 -700
- package/dist/designer/data/systems/ollama/tokens.css +0 -242
- package/dist/designer/data/systems/openai/DESIGN.md +0 -140
- package/dist/designer/data/systems/openai/components.html +0 -382
- package/dist/designer/data/systems/openai/tokens.css +0 -133
- package/dist/designer/data/systems/opencode-ai/DESIGN.md +0 -284
- package/dist/designer/data/systems/opencode-ai/components.html +0 -389
- package/dist/designer/data/systems/opencode-ai/tokens.css +0 -126
- package/dist/designer/data/systems/pacman/DESIGN.md +0 -71
- package/dist/designer/data/systems/pacman/components.html +0 -342
- package/dist/designer/data/systems/pacman/tokens.css +0 -64
- package/dist/designer/data/systems/paper/DESIGN.md +0 -71
- package/dist/designer/data/systems/paper/components.html +0 -136
- package/dist/designer/data/systems/paper/tokens.css +0 -63
- package/dist/designer/data/systems/perplexity/DESIGN.md +0 -286
- package/dist/designer/data/systems/perplexity/components.html +0 -455
- package/dist/designer/data/systems/perplexity/tokens.css +0 -151
- package/dist/designer/data/systems/perspective/DESIGN.md +0 -71
- package/dist/designer/data/systems/perspective/components.html +0 -136
- package/dist/designer/data/systems/perspective/tokens.css +0 -63
- package/dist/designer/data/systems/pinterest/DESIGN.md +0 -233
- package/dist/designer/data/systems/pinterest/components.html +0 -865
- package/dist/designer/data/systems/pinterest/tokens.css +0 -262
- package/dist/designer/data/systems/playstation/DESIGN.md +0 -367
- package/dist/designer/data/systems/playstation/components.html +0 -414
- package/dist/designer/data/systems/playstation/tokens.css +0 -150
- package/dist/designer/data/systems/posthog/DESIGN.md +0 -259
- package/dist/designer/data/systems/posthog/components.html +0 -827
- package/dist/designer/data/systems/posthog/tokens.css +0 -272
- package/dist/designer/data/systems/premium/DESIGN.md +0 -71
- package/dist/designer/data/systems/premium/components.html +0 -154
- package/dist/designer/data/systems/premium/tokens.css +0 -63
- package/dist/designer/data/systems/professional/DESIGN.md +0 -71
- package/dist/designer/data/systems/professional/components.html +0 -136
- package/dist/designer/data/systems/professional/tokens.css +0 -63
- package/dist/designer/data/systems/publication/DESIGN.md +0 -71
- package/dist/designer/data/systems/publication/components.html +0 -154
- package/dist/designer/data/systems/publication/tokens.css +0 -63
- package/dist/designer/data/systems/raycast/DESIGN.md +0 -271
- package/dist/designer/data/systems/raycast/components.html +0 -507
- package/dist/designer/data/systems/raycast/tokens.css +0 -143
- package/dist/designer/data/systems/refined/DESIGN.md +0 -71
- package/dist/designer/data/systems/refined/components.html +0 -136
- package/dist/designer/data/systems/refined/tokens.css +0 -63
- package/dist/designer/data/systems/renault/DESIGN.md +0 -314
- package/dist/designer/data/systems/renault/components.html +0 -154
- package/dist/designer/data/systems/renault/tokens.css +0 -63
- package/dist/designer/data/systems/replicate/DESIGN.md +0 -264
- package/dist/designer/data/systems/replicate/components.html +0 -340
- package/dist/designer/data/systems/replicate/tokens.css +0 -125
- package/dist/designer/data/systems/resend/DESIGN.md +0 -306
- package/dist/designer/data/systems/resend/components.html +0 -839
- package/dist/designer/data/systems/resend/tokens.css +0 -353
- package/dist/designer/data/systems/retro/DESIGN.md +0 -71
- package/dist/designer/data/systems/retro/components.html +0 -136
- package/dist/designer/data/systems/retro/tokens.css +0 -63
- package/dist/designer/data/systems/revolut/DESIGN.md +0 -188
- package/dist/designer/data/systems/revolut/components.html +0 -342
- package/dist/designer/data/systems/revolut/tokens.css +0 -64
- package/dist/designer/data/systems/runwayml/DESIGN.md +0 -247
- package/dist/designer/data/systems/runwayml/components.html +0 -638
- package/dist/designer/data/systems/runwayml/tokens.css +0 -204
- package/dist/designer/data/systems/sanity/DESIGN.md +0 -360
- package/dist/designer/data/systems/sanity/components.html +0 -342
- package/dist/designer/data/systems/sanity/tokens.css +0 -64
- package/dist/designer/data/systems/sentry/DESIGN.md +0 -265
- package/dist/designer/data/systems/sentry/components.html +0 -387
- package/dist/designer/data/systems/sentry/tokens.css +0 -219
- package/dist/designer/data/systems/shadcn/DESIGN.md +0 -71
- package/dist/designer/data/systems/shadcn/components.html +0 -732
- package/dist/designer/data/systems/shadcn/tokens.css +0 -255
- package/dist/designer/data/systems/shopify/DESIGN.md +0 -353
- package/dist/designer/data/systems/shopify/components.html +0 -342
- package/dist/designer/data/systems/shopify/tokens.css +0 -141
- package/dist/designer/data/systems/simple/DESIGN.md +0 -71
- package/dist/designer/data/systems/simple/components.html +0 -136
- package/dist/designer/data/systems/simple/tokens.css +0 -63
- package/dist/designer/data/systems/skeumorphism/DESIGN.md +0 -71
- package/dist/designer/data/systems/skeumorphism/components.html +0 -136
- package/dist/designer/data/systems/skeumorphism/tokens.css +0 -63
- package/dist/designer/data/systems/slack/DESIGN.md +0 -363
- package/dist/designer/data/systems/slack/components.html +0 -387
- package/dist/designer/data/systems/slack/tokens.css +0 -127
- package/dist/designer/data/systems/sleek/DESIGN.md +0 -71
- package/dist/designer/data/systems/sleek/components.html +0 -136
- package/dist/designer/data/systems/sleek/tokens.css +0 -63
- package/dist/designer/data/systems/spacex/DESIGN.md +0 -197
- package/dist/designer/data/systems/spacex/components.html +0 -496
- package/dist/designer/data/systems/spacex/tokens.css +0 -154
- package/dist/designer/data/systems/spacious/DESIGN.md +0 -71
- package/dist/designer/data/systems/spacious/components.html +0 -136
- package/dist/designer/data/systems/spacious/tokens.css +0 -63
- package/dist/designer/data/systems/spotify/DESIGN.md +0 -249
- package/dist/designer/data/systems/spotify/components.html +0 -365
- package/dist/designer/data/systems/spotify/tokens.css +0 -127
- package/dist/designer/data/systems/starbucks/DESIGN.md +0 -583
- package/dist/designer/data/systems/starbucks/components.html +0 -493
- package/dist/designer/data/systems/starbucks/tokens.css +0 -182
- package/dist/designer/data/systems/storytelling/DESIGN.md +0 -71
- package/dist/designer/data/systems/storytelling/components.html +0 -136
- package/dist/designer/data/systems/storytelling/tokens.css +0 -63
- package/dist/designer/data/systems/stripe/DESIGN.md +0 -325
- package/dist/designer/data/systems/stripe/components.html +0 -1018
- package/dist/designer/data/systems/stripe/tokens.css +0 -295
- package/dist/designer/data/systems/supabase/DESIGN.md +0 -258
- package/dist/designer/data/systems/supabase/components.html +0 -741
- package/dist/designer/data/systems/supabase/tokens.css +0 -294
- package/dist/designer/data/systems/superhuman/DESIGN.md +0 -255
- package/dist/designer/data/systems/superhuman/components.html +0 -537
- package/dist/designer/data/systems/superhuman/tokens.css +0 -160
- package/dist/designer/data/systems/tesla/DESIGN.md +0 -289
- package/dist/designer/data/systems/tesla/components.html +0 -724
- package/dist/designer/data/systems/tesla/tokens.css +0 -285
- package/dist/designer/data/systems/tetris/DESIGN.md +0 -71
- package/dist/designer/data/systems/tetris/components.html +0 -342
- package/dist/designer/data/systems/tetris/tokens.css +0 -64
- package/dist/designer/data/systems/theverge/DESIGN.md +0 -342
- package/dist/designer/data/systems/theverge/components.html +0 -342
- package/dist/designer/data/systems/theverge/tokens.css +0 -64
- package/dist/designer/data/systems/together-ai/DESIGN.md +0 -266
- package/dist/designer/data/systems/together-ai/components.html +0 -422
- package/dist/designer/data/systems/together-ai/tokens.css +0 -127
- package/dist/designer/data/systems/totality-festival/DESIGN.md +0 -206
- package/dist/designer/data/systems/totality-festival/components.html +0 -136
- package/dist/designer/data/systems/totality-festival/tokens.css +0 -63
- package/dist/designer/data/systems/trading-terminal/DESIGN.md +0 -178
- package/dist/designer/data/systems/trading-terminal/components.html +0 -154
- package/dist/designer/data/systems/trading-terminal/tokens.css +0 -63
- package/dist/designer/data/systems/uber/DESIGN.md +0 -298
- package/dist/designer/data/systems/uber/components.html +0 -347
- package/dist/designer/data/systems/uber/tokens.css +0 -131
- package/dist/designer/data/systems/urdu/DESIGN.md +0 -1002
- package/dist/designer/data/systems/urdu/components.html +0 -136
- package/dist/designer/data/systems/urdu/tokens.css +0 -63
- package/dist/designer/data/systems/vercel/DESIGN.md +0 -313
- package/dist/designer/data/systems/vercel/components.html +0 -839
- package/dist/designer/data/systems/vercel/tokens.css +0 -270
- package/dist/designer/data/systems/vibrant/DESIGN.md +0 -71
- package/dist/designer/data/systems/vibrant/components.html +0 -136
- package/dist/designer/data/systems/vibrant/tokens.css +0 -63
- package/dist/designer/data/systems/vintage/DESIGN.md +0 -71
- package/dist/designer/data/systems/vintage/components.html +0 -136
- package/dist/designer/data/systems/vintage/tokens.css +0 -63
- package/dist/designer/data/systems/vodafone/DESIGN.md +0 -426
- package/dist/designer/data/systems/vodafone/components.html +0 -342
- package/dist/designer/data/systems/vodafone/tokens.css +0 -64
- package/dist/designer/data/systems/voltagent/DESIGN.md +0 -326
- package/dist/designer/data/systems/voltagent/components.html +0 -154
- package/dist/designer/data/systems/voltagent/tokens.css +0 -63
- package/dist/designer/data/systems/warm-editorial/DESIGN.md +0 -65
- package/dist/designer/data/systems/warm-editorial/components.html +0 -136
- package/dist/designer/data/systems/warm-editorial/tokens.css +0 -63
- package/dist/designer/data/systems/warp/DESIGN.md +0 -256
- package/dist/designer/data/systems/warp/components.html +0 -411
- package/dist/designer/data/systems/warp/tokens.css +0 -156
- package/dist/designer/data/systems/webex/DESIGN.md +0 -207
- package/dist/designer/data/systems/webex/components.html +0 -342
- package/dist/designer/data/systems/webex/tokens.css +0 -64
- package/dist/designer/data/systems/webflow/DESIGN.md +0 -95
- package/dist/designer/data/systems/webflow/components.html +0 -413
- package/dist/designer/data/systems/webflow/tokens.css +0 -191
- package/dist/designer/data/systems/wechat/DESIGN.md +0 -302
- package/dist/designer/data/systems/wechat/components.html +0 -507
- package/dist/designer/data/systems/wechat/tokens.css +0 -176
- package/dist/designer/data/systems/wired/DESIGN.md +0 -281
- package/dist/designer/data/systems/wired/components.html +0 -342
- package/dist/designer/data/systems/wired/tokens.css +0 -64
- package/dist/designer/data/systems/wise/DESIGN.md +0 -176
- package/dist/designer/data/systems/wise/components.html +0 -365
- package/dist/designer/data/systems/wise/tokens.css +0 -141
- package/dist/designer/data/systems/x-ai/DESIGN.md +0 -260
- package/dist/designer/data/systems/x-ai/components.html +0 -460
- package/dist/designer/data/systems/x-ai/tokens.css +0 -268
- package/dist/designer/data/systems/xiaohongshu/DESIGN.md +0 -402
- package/dist/designer/data/systems/xiaohongshu/components.html +0 -865
- package/dist/designer/data/systems/xiaohongshu/tokens.css +0 -193
- package/dist/designer/data/systems/zapier/DESIGN.md +0 -331
- package/dist/designer/data/systems/zapier/components.html +0 -342
- package/dist/designer/data/systems/zapier/tokens.css +0 -64
- package/dist/designer/guidelines.d.ts +0 -23
- package/dist/designer/guidelines.d.ts.map +0 -1
- package/dist/designer/guidelines.js +0 -176
- package/dist/designer/philosophies.d.ts +0 -33
- package/dist/designer/philosophies.d.ts.map +0 -1
- package/dist/designer/philosophies.js +0 -668
- package/dist/designer/skills.d.ts +0 -21
- package/dist/designer/skills.d.ts.map +0 -1
- package/dist/designer/skills.js +0 -34
- package/dist/designer/systems.d.ts +0 -36
- package/dist/designer/systems.d.ts.map +0 -1
- package/dist/designer/systems.js +0 -221
package/dist/designer/index.js
CHANGED
|
@@ -1,236 +1,163 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Designer Extension —
|
|
2
|
+
* Designer Extension — thin tool definitions proxying to the Aexol backend.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* The design DATA and logic (150+ design systems, 13 skill workflows,
|
|
5
|
+
* guidelines, 20 philosophies) now live in the backend (backend/src/designer/)
|
|
6
|
+
* and are exposed as `designer_*` tools on the backend `/mcp` server. This
|
|
7
|
+
* extension registers the 7 tool definitions locally; each execute() is a
|
|
8
|
+
* thin proxy: createAexolBackendClient() → tools/call → relay text.
|
|
6
9
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* • Design guidelines — anti-AI-slop rules and a 5-dimension critique
|
|
12
|
-
* framework to keep output polished.
|
|
13
|
-
* • System prompt injection — when the user asks for design work, the
|
|
14
|
-
* extension injects designer identity and anti-slop rules into context.
|
|
10
|
+
* There is no local data and no local prompt injection anymore — the
|
|
11
|
+
* discovery-flow guidance ("call designer_list_systems before writing design
|
|
12
|
+
* code") lives in the tool descriptions/promptSnippets here and in the
|
|
13
|
+
* backend TOOL_DEFINITIONS.
|
|
15
14
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* read) to produce design artifact files. This matches how Open Design
|
|
20
|
-
* works: the daemon composes a system prompt, the agent does the build.
|
|
21
|
-
*
|
|
22
|
-
* No packages to install — everything is embedded in this extension.
|
|
15
|
+
* Duplicate-registration note: `aexol-mcp.ts` skips the 7 designer_* names
|
|
16
|
+
* when dynamically registering backend tools, so each name is registered
|
|
17
|
+
* exactly once (this extension). See the skip list there.
|
|
23
18
|
*/
|
|
24
19
|
import { Type } from "typebox";
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
20
|
+
import { createAexolBackendClient, } from "../extensions/aexol-backend-client.js";
|
|
21
|
+
import { AexolMcpClient, AexolMcpError, } from "../mcp-client.js";
|
|
22
|
+
import { readConfig } from "../config.js";
|
|
23
|
+
import { ensureAuthenticated } from "../auth-helper.js";
|
|
28
24
|
// ---------------------------------------------------------------------------
|
|
29
|
-
//
|
|
25
|
+
// Backend proxy — bootstrap once, then tools/call per tool
|
|
30
26
|
// ---------------------------------------------------------------------------
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
27
|
+
let bootPromise = null;
|
|
28
|
+
function boot() {
|
|
29
|
+
if (!bootPromise) {
|
|
30
|
+
bootPromise = createAexolBackendClient({
|
|
31
|
+
warn: (line) => process.stderr.write(`[designer] ${line}\n`),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return bootPromise;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Call a backend designer tool and return the rendered text, or a friendly
|
|
38
|
+
* error string (never throws — the caller converts it to an isError result).
|
|
39
|
+
*/
|
|
40
|
+
async function callBackend(tool, params) {
|
|
41
|
+
const b = await boot();
|
|
42
|
+
if (!b.ok) {
|
|
43
|
+
return { ok: false, message: b.message };
|
|
44
|
+
}
|
|
45
|
+
const { client, apiUrl, renderContentToString: render } = b;
|
|
46
|
+
try {
|
|
47
|
+
const res = await client.callTool(tool, params);
|
|
48
|
+
const text = render(res.content);
|
|
49
|
+
if (res.isError === true) {
|
|
50
|
+
return {
|
|
51
|
+
ok: false,
|
|
52
|
+
message: `[designer: ${tool}] ${text || "Backend reported an error with no message."}`,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return { ok: true, text };
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
// Single OAuth re-auth retry on 401/403 (same flow as dataset-uploader).
|
|
59
|
+
if (err instanceof AexolMcpError && (err.status === 401 || err.status === 403)) {
|
|
60
|
+
const auth = await ensureAuthenticated();
|
|
61
|
+
if (auth.ok && auth.config) {
|
|
62
|
+
const cfg = await readConfig();
|
|
63
|
+
const newToken = auth.config?.teamApiKey || auth.config?.userJwt || "";
|
|
64
|
+
if (newToken && cfg && newToken !== (cfg.teamApiKey || cfg.userJwt)) {
|
|
65
|
+
try {
|
|
66
|
+
const retryClient = new AexolMcpClient(apiUrl, newToken);
|
|
67
|
+
const res = await retryClient.callTool(tool, params);
|
|
68
|
+
const text = render(res.content);
|
|
69
|
+
if (res.isError === true) {
|
|
70
|
+
return {
|
|
71
|
+
ok: false,
|
|
72
|
+
message: `[designer: ${tool}] ${text || "Backend reported an error with no message."}`,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
return { ok: true, text };
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// fall through to the friendly error below
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
84
|
+
return {
|
|
85
|
+
ok: false,
|
|
86
|
+
message: `Design tools are unavailable — the Aexol backend MCP endpoint did not respond to "${tool}": ${msg}\n` +
|
|
87
|
+
"Check your connection and authentication (`spectral login`), then try again.",
|
|
88
|
+
};
|
|
89
|
+
}
|
|
64
90
|
}
|
|
65
91
|
// ---------------------------------------------------------------------------
|
|
66
|
-
//
|
|
67
|
-
// ---------------------------------------------------------------------------
|
|
68
|
-
const ListSystemsParams = Type.Object({});
|
|
69
|
-
// ---------------------------------------------------------------------------
|
|
70
|
-
// Tool: designer_get_system
|
|
92
|
+
// Parameter schemas (shared with the backend tool contract)
|
|
71
93
|
// ---------------------------------------------------------------------------
|
|
94
|
+
const NoParams = Type.Object({});
|
|
72
95
|
const GetSystemParams = Type.Object({
|
|
73
96
|
name: Type.String({
|
|
74
97
|
description: "Name of the design system to retrieve. Use designer_list_systems to see available systems.",
|
|
75
98
|
}),
|
|
76
99
|
});
|
|
77
|
-
// ---------------------------------------------------------------------------
|
|
78
|
-
// Tool: designer_list_skills
|
|
79
|
-
// ---------------------------------------------------------------------------
|
|
80
|
-
const ListSkillsParams = Type.Object({});
|
|
81
|
-
// ---------------------------------------------------------------------------
|
|
82
|
-
// Tool: designer_get_skill
|
|
83
|
-
// ---------------------------------------------------------------------------
|
|
84
100
|
const GetSkillParams = Type.Object({
|
|
85
101
|
name: Type.String({
|
|
86
102
|
description: "Name of the design skill to retrieve. Use designer_list_skills to see available skills.",
|
|
87
103
|
}),
|
|
88
104
|
});
|
|
105
|
+
const GetPhilosophyParams = Type.Object({
|
|
106
|
+
name: Type.String({
|
|
107
|
+
description: "Name of the design philosophy to retrieve. Use designer_list_philosophies to see available philosophies.",
|
|
108
|
+
}),
|
|
109
|
+
});
|
|
89
110
|
// ---------------------------------------------------------------------------
|
|
90
|
-
//
|
|
91
|
-
// ---------------------------------------------------------------------------
|
|
92
|
-
const GetGuidelinesParams = Type.Object({});
|
|
93
|
-
// ---------------------------------------------------------------------------
|
|
94
|
-
// Extension entry point
|
|
111
|
+
// Extension entry point — tool definitions only
|
|
95
112
|
// ---------------------------------------------------------------------------
|
|
96
113
|
export default function designerExtension(ext) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
// First design turn: inject the discovery protocol to force clarification
|
|
105
|
-
if (!discoveryDone) {
|
|
106
|
-
discoveryDone = true;
|
|
107
|
-
return {
|
|
108
|
-
systemPrompt: `${event.systemPrompt}
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
${DISCOVERY_PROTOCOL}`,
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
// Subsequent design turns: inject design guidelines if not already present
|
|
116
|
-
if (guidelinesInjected)
|
|
117
|
-
return;
|
|
118
|
-
if (event.systemPrompt.includes("Designer Identity"))
|
|
119
|
-
return;
|
|
120
|
-
guidelinesInjected = true;
|
|
121
|
-
const guidelines = getDesignGuidelines();
|
|
122
|
-
return {
|
|
123
|
-
systemPrompt: `${event.systemPrompt}
|
|
124
|
-
|
|
125
|
-
---
|
|
126
|
-
|
|
127
|
-
${guidelines}`,
|
|
128
|
-
};
|
|
129
|
-
});
|
|
130
|
-
// ---- Register tools ------------------------------------------------------
|
|
131
|
-
ext.registerTool({
|
|
132
|
-
name: "designer_list_systems",
|
|
133
|
-
label: "List Design Systems",
|
|
134
|
-
description: "List available design systems with color palettes, typography, and spacing tokens. " +
|
|
135
|
-
"Use this to pick a visual direction before generating HTML/CSS.",
|
|
136
|
-
promptSnippet: "List available design systems (Apple, Stripe, Linear, Vercel, etc.) with color, typography, and layout tokens",
|
|
137
|
-
promptGuidelines: [
|
|
138
|
-
"Use designer_list_systems to see available design systems, then use designer_get_system to load the full tokens for the chosen system.",
|
|
139
|
-
"Always apply a design system before generating design HTML — never use generic defaults like Inter + blue buttons.",
|
|
140
|
-
],
|
|
141
|
-
parameters: ListSystemsParams,
|
|
142
|
-
async execute() {
|
|
143
|
-
return {
|
|
144
|
-
content: [{ type: "text", text: listSystemsForLLM() }],
|
|
145
|
-
details: { isError: false },
|
|
146
|
-
};
|
|
147
|
-
},
|
|
148
|
-
});
|
|
149
|
-
ext.registerTool({
|
|
150
|
-
name: "designer_get_system",
|
|
151
|
-
label: "Get Design System",
|
|
152
|
-
description: "Get the full design system tokens (CSS custom properties, typography, layout, components) for a specific system. " +
|
|
153
|
-
"Map these tokens onto your :root variables before writing any component code.",
|
|
154
|
-
promptSnippet: "Get full design system tokens for a specific system (e.g. 'apple', 'stripe', 'linear')",
|
|
155
|
-
parameters: GetSystemParams,
|
|
156
|
-
async execute(_toolCallId, params) {
|
|
157
|
-
const name = params.name;
|
|
158
|
-
const system = findSystem(name);
|
|
159
|
-
if (!system) {
|
|
160
|
-
return {
|
|
161
|
-
content: [
|
|
162
|
-
{
|
|
163
|
-
type: "text",
|
|
164
|
-
text: `Design system "${name}" not found.\n\n${listSystemsForLLM()}`,
|
|
165
|
-
},
|
|
166
|
-
],
|
|
167
|
-
details: { isError: true },
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
return {
|
|
171
|
-
content: [{ type: "text", text: formatSystemForLLM(system) }],
|
|
172
|
-
details: { isError: false },
|
|
173
|
-
};
|
|
174
|
-
},
|
|
175
|
-
});
|
|
176
|
-
ext.registerTool({
|
|
177
|
-
name: "designer_list_skills",
|
|
178
|
-
label: "List Design Skills",
|
|
179
|
-
description: "List available design skill workflows (web prototype, SaaS landing, slide deck, mobile app, dashboard, social carousel). " +
|
|
180
|
-
"Each skill provides a structured workflow for producing a specific kind of design artifact.",
|
|
181
|
-
promptSnippet: "List available design skill workflows (web prototype, SaaS landing, slide deck, mobile app, dashboard)",
|
|
182
|
-
promptGuidelines: [
|
|
183
|
-
"Use designer_list_skills to see what kinds of design artifacts you can produce, then use designer_get_skill to load the full workflow for the chosen skill.",
|
|
184
|
-
"Follow the skill workflow exactly — it encodes best practices like pre-flight reading, seed templates, section composition patterns, and self-check checklists.",
|
|
185
|
-
],
|
|
186
|
-
parameters: ListSkillsParams,
|
|
187
|
-
async execute() {
|
|
188
|
-
return {
|
|
189
|
-
content: [{ type: "text", text: listSkillsForLLM() }],
|
|
190
|
-
details: { isError: false },
|
|
191
|
-
};
|
|
192
|
-
},
|
|
193
|
-
});
|
|
194
|
-
ext.registerTool({
|
|
195
|
-
name: "designer_get_skill",
|
|
196
|
-
label: "Get Design Skill",
|
|
197
|
-
description: "Get the full workflow guide for a specific design skill. The workflow includes HTML/CSS skeletons, " +
|
|
198
|
-
"component patterns, layout patterns, content rules, and quality checklists. Follow it exactly.",
|
|
199
|
-
promptSnippet: "Get full design skill workflow for a specific skill type (e.g. 'web-prototype', 'slide-deck', 'mobile-app')",
|
|
200
|
-
parameters: GetSkillParams,
|
|
114
|
+
const makeProxy = (name, label, description, promptSnippet, parameters, promptGuidelines) => ({
|
|
115
|
+
name,
|
|
116
|
+
label,
|
|
117
|
+
description,
|
|
118
|
+
promptSnippet,
|
|
119
|
+
...(promptGuidelines ? { promptGuidelines } : {}),
|
|
120
|
+
parameters,
|
|
201
121
|
async execute(_toolCallId, params) {
|
|
202
|
-
const
|
|
203
|
-
|
|
204
|
-
if (!skill) {
|
|
122
|
+
const result = await callBackend(name, params ?? {});
|
|
123
|
+
if (!result.ok) {
|
|
205
124
|
return {
|
|
206
|
-
content: [
|
|
207
|
-
{
|
|
208
|
-
type: "text",
|
|
209
|
-
text: `Design skill "${name}" not found.\n\n${listSkillsForLLM()}`,
|
|
210
|
-
},
|
|
211
|
-
],
|
|
125
|
+
content: [{ type: "text", text: result.message }],
|
|
212
126
|
details: { isError: true },
|
|
213
127
|
};
|
|
214
128
|
}
|
|
215
129
|
return {
|
|
216
|
-
content: [{ type: "text", text:
|
|
217
|
-
details: { isError: false },
|
|
218
|
-
};
|
|
219
|
-
},
|
|
220
|
-
});
|
|
221
|
-
ext.registerTool({
|
|
222
|
-
name: "designer_get_guidelines",
|
|
223
|
-
label: "Get Design Guidelines",
|
|
224
|
-
description: "Get the core design guidelines: anti-AI-slop rules, 5-dimension self-critique framework, and designer identity. " +
|
|
225
|
-
"Use this when you need a refresher on design quality standards or to self-critique your output.",
|
|
226
|
-
promptSnippet: "Get anti-slop rules and design quality guidelines",
|
|
227
|
-
parameters: GetGuidelinesParams,
|
|
228
|
-
async execute() {
|
|
229
|
-
return {
|
|
230
|
-
content: [{ type: "text", text: getDesignGuidelines() }],
|
|
130
|
+
content: [{ type: "text", text: result.text }],
|
|
231
131
|
details: { isError: false },
|
|
232
132
|
};
|
|
233
133
|
},
|
|
234
134
|
});
|
|
235
|
-
|
|
135
|
+
ext.registerTool(makeProxy("designer_list_systems", "List Design Systems", "List available design systems with color palettes, typography, and spacing tokens. " +
|
|
136
|
+
"ALWAYS call this FIRST before writing any design HTML/CSS — it picks the visual " +
|
|
137
|
+
"direction, then use designer_get_system to load the full tokens for the chosen system.", "List available design systems (Apple, Stripe, Linear, Vercel, etc.) with color, typography, and layout tokens", NoParams, [
|
|
138
|
+
"Use designer_list_systems to see available design systems, then use designer_get_system to load the full tokens for the chosen system.",
|
|
139
|
+
"Always apply a design system before generating design HTML — never use generic defaults like Inter + blue buttons.",
|
|
140
|
+
]));
|
|
141
|
+
ext.registerTool(makeProxy("designer_get_system", "Get Design System", "Get the full design system tokens (CSS custom properties, typography, layout, components) for a specific system. " +
|
|
142
|
+
"Call designer_list_systems first. Map these tokens onto your :root variables before writing any component code.", "Get full design system tokens for a specific system (e.g. 'apple', 'stripe', 'linear')", GetSystemParams));
|
|
143
|
+
ext.registerTool(makeProxy("designer_list_skills", "List Design Skills", "List available design skill workflows (web prototype, SaaS landing, slide deck, mobile app, dashboard, social carousel). " +
|
|
144
|
+
"Each skill provides a structured workflow for producing a specific kind of design artifact. " +
|
|
145
|
+
"Call this before designer_get_skill to pick the skill that matches the artifact type.", "List available design skill workflows (web prototype, SaaS landing, slide deck, mobile app, dashboard)", NoParams, [
|
|
146
|
+
"Use designer_list_skills to see what kinds of design artifacts you can produce, then use designer_get_skill to load the full workflow for the chosen skill.",
|
|
147
|
+
"Follow the skill workflow exactly — it encodes best practices like pre-flight reading, seed templates, section composition patterns, and self-check checklists.",
|
|
148
|
+
]));
|
|
149
|
+
ext.registerTool(makeProxy("designer_get_skill", "Get Design Skill", "Get the full workflow guide for a specific design skill. The workflow includes HTML/CSS skeletons, " +
|
|
150
|
+
"component patterns, layout patterns, content rules, and quality checklists. Call designer_list_skills first. Follow it exactly.", "Get full design skill workflow for a specific skill type (e.g. 'web-prototype', 'slide-deck', 'mobile-app')", GetSkillParams));
|
|
151
|
+
ext.registerTool(makeProxy("designer_get_guidelines", "Get Design Guidelines", "Get the core design guidelines: the discovery protocol (clarify the brief — with a " +
|
|
152
|
+
"design-philosophy fallback when no curated system fits → load system + skill → build), " +
|
|
153
|
+
"anti-AI-slop rules, 5-dimension self-critique framework, and designer identity. " +
|
|
154
|
+
"Call this at the start of any design task, before writing design code.", "Get anti-slop rules and design quality guidelines", NoParams));
|
|
155
|
+
ext.registerTool(makeProxy("designer_list_philosophies", "List Design Philosophies", "List all 20 design philosophies grouped by their 5 schools (Information Architecture, Motion Poetics, " +
|
|
156
|
+
"Minimalism, Experimental Avant-Garde, Eastern Philosophy). Use this to pick a design direction when the " +
|
|
157
|
+
"user has not specified a concrete design system, then use designer_get_philosophy for the full guide.", "List available design philosophies (20 across 5 schools) with ethos and best-fit scenes", NoParams, [
|
|
158
|
+
"Use designer_list_philosophies when no concrete design system fits, then use designer_get_philosophy to load the full philosophy guide.",
|
|
159
|
+
]));
|
|
160
|
+
ext.registerTool(makeProxy("designer_get_philosophy", "Get Design Philosophy", "Get the full guide for one design philosophy: ethos, description, signature traits, keywords, " +
|
|
161
|
+
"best medium, scene affinity, and anti-patterns. Call designer_list_philosophies first to see all names.", "Get full design philosophy guide for a specific philosophy (e.g. 'Kenya Hara', 'Müller-Brockmann')", GetPhilosophyParams));
|
|
162
|
+
process.stderr.write("[designer] Registered 7 design tools (proxied to the Aexol backend /mcp).\n");
|
|
236
163
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aexol-mcp.d.ts","sourceRoot":"","sources":["../../src/extensions/aexol-mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoC,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"aexol-mcp.d.ts","sourceRoot":"","sources":["../../src/extensions/aexol-mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoC,MAAM,8BAA8B,CAAC;AA2InG,wBAA8B,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA2PhF"}
|
|
@@ -36,6 +36,27 @@ function toLabel(name) {
|
|
|
36
36
|
.map((w) => w.charAt(0).toUpperCase() + w.slice(1))
|
|
37
37
|
.join(" ") || name;
|
|
38
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Tool names owned by LOCAL extensions — never register them here.
|
|
41
|
+
*
|
|
42
|
+
* The designer extension (cli-node/src/designer/index.ts) registers the 7
|
|
43
|
+
* `designer_*` tools as thin proxies to the same backend `/mcp` endpoint.
|
|
44
|
+
* The backend's tools/list also exposes those 7 names, so without this skip
|
|
45
|
+
* list both extensions would register the same names. The runner keeps the
|
|
46
|
+
* FIRST registration per name (runner.ts getAllRegisteredTools) and
|
|
47
|
+
* DefaultResourceLoader.detectExtensionConflicts would report 7 spurious
|
|
48
|
+
* "Tool ... conflicts with ..." diagnostics. Skipping here leaves exactly
|
|
49
|
+
* one registration path per name — the local designer extension.
|
|
50
|
+
*/
|
|
51
|
+
const OWNED_BY_LOCAL_EXTENSIONS = new Set([
|
|
52
|
+
"designer_list_systems",
|
|
53
|
+
"designer_get_system",
|
|
54
|
+
"designer_list_skills",
|
|
55
|
+
"designer_get_skill",
|
|
56
|
+
"designer_get_guidelines",
|
|
57
|
+
"designer_list_philosophies",
|
|
58
|
+
"designer_get_philosophy",
|
|
59
|
+
]);
|
|
39
60
|
// ---------------------------------------------------------------------------
|
|
40
61
|
// Studio binding – in-memory cache, refreshed on startup & by local tools
|
|
41
62
|
// ---------------------------------------------------------------------------
|
|
@@ -151,6 +172,8 @@ export default async function aexolMcpExtension(ext) {
|
|
|
151
172
|
});
|
|
152
173
|
let registered = 0;
|
|
153
174
|
for (const tool of tools) {
|
|
175
|
+
if (OWNED_BY_LOCAL_EXTENSIONS.has(tool.name))
|
|
176
|
+
continue;
|
|
154
177
|
// Defensive defaults: an empty-object schema is valid JSON Schema and
|
|
155
178
|
// will pass the agent's validator if the model sends `{}`.
|
|
156
179
|
const parameters = (tool.inputSchema ?? { type: "object", properties: {} });
|
|
@@ -17,7 +17,7 @@ import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
|
17
17
|
import { dirname } from "node:path";
|
|
18
18
|
import { loadJsonl, sampleChars } from "./analyzer.js";
|
|
19
19
|
import { scrub } from "./scrubber.js";
|
|
20
|
-
const REDACTION_KINDS = ["api_key", "jwt", "bearer", "home_path", "secret_value"];
|
|
20
|
+
const REDACTION_KINDS = ["api_key", "jwt", "bearer", "home_path", "user_path", "secret_value"];
|
|
21
21
|
/**
|
|
22
22
|
* Walk a JSON tree and scrub every string leaf. Objects/arrays are rebuilt
|
|
23
23
|
* (structure and key order preserved); non-string leaves pass through.
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* - jwt — bare JWTs (eyJ... payload ... signature)
|
|
7
7
|
* - bearer — "Bearer <token>" and Authorization header values
|
|
8
8
|
* - home_path — /Users/<name>/ → /home/
|
|
9
|
+
* - user_path — Wine/Windows user segments (drive_c/users/<name>,
|
|
10
|
+
* <drive>:\Users\<name>) → <name> replaced with "user"
|
|
9
11
|
* - secret_value — opaque values passed in by the caller (secret-store
|
|
10
12
|
* values, .env values). The scrubber NEVER reads any
|
|
11
13
|
* store itself; callers decide what to pass.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrubber.d.ts","sourceRoot":"","sources":["../../../src/extensions/dataset-uploader/scrubber.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"scrubber.d.ts","sourceRoot":"","sources":["../../../src/extensions/dataset-uploader/scrubber.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAiED;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,CAyDvE"}
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* - jwt — bare JWTs (eyJ... payload ... signature)
|
|
7
7
|
* - bearer — "Bearer <token>" and Authorization header values
|
|
8
8
|
* - home_path — /Users/<name>/ → /home/
|
|
9
|
+
* - user_path — Wine/Windows user segments (drive_c/users/<name>,
|
|
10
|
+
* <drive>:\Users\<name>) → <name> replaced with "user"
|
|
9
11
|
* - secret_value — opaque values passed in by the caller (secret-store
|
|
10
12
|
* values, .env values). The scrubber NEVER reads any
|
|
11
13
|
* store itself; callers decide what to pass.
|
|
@@ -44,8 +46,27 @@ const JWT_PARTIAL_PATTERN = /\beyJ[A-Za-z0-9_-]{10,}(?:\.[A-Za-z0-9_-]+){0,2}\b/
|
|
|
44
46
|
* Normalized to /home (the marker would break the surrounding path).
|
|
45
47
|
*/
|
|
46
48
|
const HOME_PATH_PATTERN = /\/Users\/[A-Za-z0-9._-]+(?=\/|$)/g;
|
|
49
|
+
/**
|
|
50
|
+
* Wine / Windows user segment inside a path:
|
|
51
|
+
* - drive_c/users/<name> (Wine prefix, e.g. /home/.wine/drive_c/users/<name>)
|
|
52
|
+
* - <drive>:\Users\<name> (native Windows path, backslashes)
|
|
53
|
+
* Only the user segment is replaced with "user" — the surrounding path is
|
|
54
|
+
* kept intact (a full-path marker would break the surrounding text).
|
|
55
|
+
* The normalized "user" value itself never re-matches (lookahead), so
|
|
56
|
+
* scrubbing is idempotent: re-scrubbing redacted text produces no new
|
|
57
|
+
* redactions, not even no-op ones.
|
|
58
|
+
*/
|
|
59
|
+
const WINE_USER_PATH_PATTERN = /drive_c\/users\/(?!user(?=[/\\.\s-]|$))[A-Za-z0-9._-]+/g;
|
|
60
|
+
const WINDOWS_USER_PATH_PATTERN = /([A-Za-z]:\\Users\\)(?!user(?=[/\\.\s-]|$))[A-Za-z0-9._-]+/g;
|
|
47
61
|
/** Stable ordering of kinds in the returned redactions array. */
|
|
48
|
-
const REDACTION_KINDS = [
|
|
62
|
+
const REDACTION_KINDS = [
|
|
63
|
+
"api_key",
|
|
64
|
+
"jwt",
|
|
65
|
+
"bearer",
|
|
66
|
+
"home_path",
|
|
67
|
+
"user_path",
|
|
68
|
+
"secret_value",
|
|
69
|
+
];
|
|
49
70
|
/**
|
|
50
71
|
* Scrub `text` for secrets.
|
|
51
72
|
*
|
|
@@ -96,6 +117,14 @@ export function scrub(text, extraValues) {
|
|
|
96
117
|
counts.home_path = (counts.home_path ?? 0) + 1;
|
|
97
118
|
return "/home";
|
|
98
119
|
});
|
|
120
|
+
out = out.replace(WINE_USER_PATH_PATTERN, () => {
|
|
121
|
+
counts.user_path = (counts.user_path ?? 0) + 1;
|
|
122
|
+
return "drive_c/users/user";
|
|
123
|
+
});
|
|
124
|
+
out = out.replace(WINDOWS_USER_PATH_PATTERN, (match, prefix) => {
|
|
125
|
+
counts.user_path = (counts.user_path ?? 0) + 1;
|
|
126
|
+
return `${prefix}user`;
|
|
127
|
+
});
|
|
99
128
|
const redactions = [];
|
|
100
129
|
for (const kind of REDACTION_KINDS) {
|
|
101
130
|
const count = counts[kind];
|
|
@@ -2836,7 +2836,6 @@ export type ValueTypes = {
|
|
|
2836
2836
|
["AdminCustomLyceumModelInput"]: {
|
|
2837
2837
|
model: string | Variable<any, string>;
|
|
2838
2838
|
image?: string | undefined | null | Variable<any, string>;
|
|
2839
|
-
dockerfile?: string | undefined | null | Variable<any, string>;
|
|
2840
2839
|
env?: Array<ValueTypes["AdminLyceumEnvOverrideInput"]> | undefined | null | Variable<any, string>;
|
|
2841
2840
|
extraArgs?: Array<string> | undefined | null | Variable<any, string>;
|
|
2842
2841
|
startCommand?: string | undefined | null | Variable<any, string>;
|
|
@@ -5957,7 +5956,6 @@ export type ResolverInputTypes = {
|
|
|
5957
5956
|
["AdminCustomLyceumModelInput"]: {
|
|
5958
5957
|
model: string;
|
|
5959
5958
|
image?: string | undefined | null;
|
|
5960
|
-
dockerfile?: string | undefined | null;
|
|
5961
5959
|
env?: Array<ResolverInputTypes["AdminLyceumEnvOverrideInput"]> | undefined | null;
|
|
5962
5960
|
extraArgs?: Array<string> | undefined | null;
|
|
5963
5961
|
startCommand?: string | undefined | null;
|
|
@@ -8255,7 +8253,6 @@ export type ModelTypes = {
|
|
|
8255
8253
|
["AdminCustomLyceumModelInput"]: {
|
|
8256
8254
|
model: string;
|
|
8257
8255
|
image?: string | undefined | null;
|
|
8258
|
-
dockerfile?: string | undefined | null;
|
|
8259
8256
|
env?: Array<ModelTypes["AdminLyceumEnvOverrideInput"]> | undefined | null;
|
|
8260
8257
|
extraArgs?: Array<string> | undefined | null;
|
|
8261
8258
|
startCommand?: string | undefined | null;
|
|
@@ -10717,7 +10714,6 @@ export type GraphQLTypes = {
|
|
|
10717
10714
|
["AdminCustomLyceumModelInput"]: {
|
|
10718
10715
|
model: string;
|
|
10719
10716
|
image?: string | undefined | null;
|
|
10720
|
-
dockerfile?: string | undefined | null;
|
|
10721
10717
|
env?: Array<GraphQLTypes["AdminLyceumEnvOverrideInput"]> | undefined | null;
|
|
10722
10718
|
extraArgs?: Array<string> | undefined | null;
|
|
10723
10719
|
startCommand?: string | undefined | null;
|