zugzbot 1.2.0 → 1.4.0
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/.opencode/agents/sdd-coder.md +5 -4
- package/.opencode/agents/sdd-orchestrator.md +11 -10
- package/.opencode/agents/sdd-spec-writer.md +3 -4
- package/.opencode/commands/loop.md +1 -1
- package/.opencode/plugins/loop-enforcer.ts +0 -1
- package/.opencode/plugins/sdd-bridge.ts +1 -1
- package/.opencode/rules/sdd-global.md +8 -0
- package/.opencode/scripts/lint-charts.js +1 -2
- package/.opencode/skills/sdd-foundation-overview/SKILL.md +3 -4
- package/.opencode/skills/sdd-methodology/SKILL.md +8 -10
- package/.opencode/skills/sdd-quickstart/SKILL.md +5 -9
- package/.opencode/skills/shadcn-templates/SKILL.md +93 -32
- package/.opencode/templates/nextjs-shadcn/components.json +4 -1
- package/.opencode/tools/sdd_bootstrap.ts +21 -0
- package/.opencode/tools/sdd_catalog.ts +1040 -0
- package/.opencode/tools/sdd_core.ts +8 -6
- package/.opencode/tools/sdd_lucide.ts +112 -0
- package/README.md +1 -7
- package/opencode.json +0 -10
- package/package.json +1 -3
- package/.opencode/oh-my-design/design-md/11st/.verification.md +0 -37
- package/.opencode/oh-my-design/design-md/11st/DESIGN.md +0 -400
- package/.opencode/oh-my-design/design-md/17live/DESIGN.md +0 -467
- package/.opencode/oh-my-design/design-md/29cm/DESIGN.md +0 -495
- package/.opencode/oh-my-design/design-md/29cm/_promo.json +0 -23
- package/.opencode/oh-my-design/design-md/29cm/_research.md +0 -103
- package/.opencode/oh-my-design/design-md/3o3/.verification.md +0 -73
- package/.opencode/oh-my-design/design-md/3o3/DESIGN.md +0 -454
- package/.opencode/oh-my-design/design-md/91app/.verification.md +0 -25
- package/.opencode/oh-my-design/design-md/91app/DESIGN.md +0 -182
- package/.opencode/oh-my-design/design-md/abema/.verification.md +0 -64
- package/.opencode/oh-my-design/design-md/abema/DESIGN.md +0 -535
- package/.opencode/oh-my-design/design-md/ably/DESIGN.md +0 -646
- package/.opencode/oh-my-design/design-md/ably/_promo.json +0 -18
- package/.opencode/oh-my-design/design-md/ably/_research.md +0 -120
- package/.opencode/oh-my-design/design-md/accupass/.verification.md +0 -66
- package/.opencode/oh-my-design/design-md/accupass/DESIGN.md +0 -494
- package/.opencode/oh-my-design/design-md/adobe/.verification.md +0 -63
- package/.opencode/oh-my-design/design-md/adobe/DESIGN.md +0 -458
- package/.opencode/oh-my-design/design-md/airbnb/.verification.md +0 -143
- package/.opencode/oh-my-design/design-md/airbnb/DESIGN.md +0 -639
- package/.opencode/oh-my-design/design-md/airbnb/README.md +0 -23
- package/.opencode/oh-my-design/design-md/airbnb/preview-dark.html +0 -234
- package/.opencode/oh-my-design/design-md/airbnb/preview.html +0 -233
- package/.opencode/oh-my-design/design-md/airtable/.verification.md +0 -136
- package/.opencode/oh-my-design/design-md/airtable/DESIGN.md +0 -314
- package/.opencode/oh-my-design/design-md/airtable/README.md +0 -23
- package/.opencode/oh-my-design/design-md/airtable/preview-dark.html +0 -165
- package/.opencode/oh-my-design/design-md/airtable/preview.html +0 -164
- package/.opencode/oh-my-design/design-md/alipay/DESIGN.md +0 -506
- package/.opencode/oh-my-design/design-md/amazingtalker/.verification.md +0 -38
- package/.opencode/oh-my-design/design-md/amazingtalker/DESIGN.md +0 -434
- package/.opencode/oh-my-design/design-md/appier/DESIGN.md +0 -465
- package/.opencode/oh-my-design/design-md/apple/.verification.md +0 -162
- package/.opencode/oh-my-design/design-md/apple/DESIGN.md +0 -613
- package/.opencode/oh-my-design/design-md/apple/README.md +0 -24
- package/.opencode/oh-my-design/design-md/apple/preview-dark.html +0 -420
- package/.opencode/oh-my-design/design-md/apple/preview.html +0 -414
- package/.opencode/oh-my-design/design-md/baemin/.verification.md +0 -132
- package/.opencode/oh-my-design/design-md/baemin/DESIGN.md +0 -578
- package/.opencode/oh-my-design/design-md/baemin/README.md +0 -19
- package/.opencode/oh-my-design/design-md/baemin/_research.md +0 -84
- package/.opencode/oh-my-design/design-md/banksalad/DESIGN.md +0 -688
- package/.opencode/oh-my-design/design-md/banksalad/_promo.json +0 -29
- package/.opencode/oh-my-design/design-md/banksalad/_research.md +0 -190
- package/.opencode/oh-my-design/design-md/bilibili/DESIGN.md +0 -471
- package/.opencode/oh-my-design/design-md/bithumb/.verification.md +0 -31
- package/.opencode/oh-my-design/design-md/bithumb/DESIGN.md +0 -208
- package/.opencode/oh-my-design/design-md/bmw/.verification.md +0 -114
- package/.opencode/oh-my-design/design-md/bmw/DESIGN.md +0 -360
- package/.opencode/oh-my-design/design-md/bmw/README.md +0 -23
- package/.opencode/oh-my-design/design-md/bmw/preview-dark.html +0 -211
- package/.opencode/oh-my-design/design-md/bmw/preview.html +0 -210
- package/.opencode/oh-my-design/design-md/brandi/.verification.md +0 -29
- package/.opencode/oh-my-design/design-md/brandi/DESIGN.md +0 -414
- package/.opencode/oh-my-design/design-md/bunjang/DESIGN.md +0 -374
- package/.opencode/oh-my-design/design-md/bunjang/assets/_reference/.live-inspect-proof.json +0 -260
- package/.opencode/oh-my-design/design-md/bunjang/assets/_reference/fonts.json +0 -33
- package/.opencode/oh-my-design/design-md/bunjang/assets/_reference/logo-icon.svg +0 -10
- package/.opencode/oh-my-design/design-md/bunjang/assets/_reference/structure.json +0 -131
- package/.opencode/oh-my-design/design-md/bunjang/assets/_reference/tokens.json +0 -147
- package/.opencode/oh-my-design/design-md/cakeresume/.verification.md +0 -25
- package/.opencode/oh-my-design/design-md/cakeresume/DESIGN.md +0 -191
- package/.opencode/oh-my-design/design-md/cal/.verification.md +0 -145
- package/.opencode/oh-my-design/design-md/cal/DESIGN.md +0 -481
- package/.opencode/oh-my-design/design-md/cal/README.md +0 -23
- package/.opencode/oh-my-design/design-md/cal/preview-dark.html +0 -449
- package/.opencode/oh-my-design/design-md/cal/preview.html +0 -575
- package/.opencode/oh-my-design/design-md/catchtable/DESIGN.md +0 -341
- package/.opencode/oh-my-design/design-md/catchtable/_research.md +0 -54
- package/.opencode/oh-my-design/design-md/catchtable/assets/_reference/.live-inspect-proof.json +0 -204
- package/.opencode/oh-my-design/design-md/catchtable/assets/_reference/.live-inspect-raw.json +0 -22
- package/.opencode/oh-my-design/design-md/catchtable/assets/_reference/fonts.json +0 -21
- package/.opencode/oh-my-design/design-md/catchtable/assets/_reference/structure.json +0 -42
- package/.opencode/oh-my-design/design-md/catchtable/assets/_reference/tokens.json +0 -95
- package/.opencode/oh-my-design/design-md/cathay/.verification.md +0 -44
- package/.opencode/oh-my-design/design-md/cathay/DESIGN.md +0 -432
- package/.opencode/oh-my-design/design-md/channeltalk/DESIGN.md +0 -422
- package/.opencode/oh-my-design/design-md/channeltalk/assets/_reference/.live-inspect-proof.json +0 -320
- package/.opencode/oh-my-design/design-md/channeltalk/assets/_reference/fonts.json +0 -53
- package/.opencode/oh-my-design/design-md/channeltalk/assets/_reference/structure.json +0 -47
- package/.opencode/oh-my-design/design-md/channeltalk/assets/_reference/tokens.json +0 -78
- package/.opencode/oh-my-design/design-md/class101/DESIGN.md +0 -484
- package/.opencode/oh-my-design/design-md/classting/.verification.md +0 -32
- package/.opencode/oh-my-design/design-md/classting/DESIGN.md +0 -292
- package/.opencode/oh-my-design/design-md/classum/DESIGN.md +0 -279
- package/.opencode/oh-my-design/design-md/classum/assets/_reference/.live-inspect-proof.json +0 -72
- package/.opencode/oh-my-design/design-md/classum/assets/_reference/fonts.json +0 -20
- package/.opencode/oh-my-design/design-md/classum/assets/_reference/structure.json +0 -21
- package/.opencode/oh-my-design/design-md/classum/assets/_reference/tokens.json +0 -56
- package/.opencode/oh-my-design/design-md/claude/.verification.md +0 -106
- package/.opencode/oh-my-design/design-md/claude/DESIGN.md +0 -561
- package/.opencode/oh-my-design/design-md/claude/README.md +0 -24
- package/.opencode/oh-my-design/design-md/claude/preview-dark.html +0 -803
- package/.opencode/oh-my-design/design-md/claude/preview.html +0 -826
- package/.opencode/oh-my-design/design-md/clay/.verification.md +0 -129
- package/.opencode/oh-my-design/design-md/clay/DESIGN.md +0 -454
- package/.opencode/oh-my-design/design-md/clay/README.md +0 -23
- package/.opencode/oh-my-design/design-md/clay/preview-dark.html +0 -316
- package/.opencode/oh-my-design/design-md/clay/preview.html +0 -315
- package/.opencode/oh-my-design/design-md/clickhouse/.verification.md +0 -132
- package/.opencode/oh-my-design/design-md/clickhouse/DESIGN.md +0 -424
- package/.opencode/oh-my-design/design-md/clickhouse/README.md +0 -24
- package/.opencode/oh-my-design/design-md/clickhouse/preview-dark.html +0 -834
- package/.opencode/oh-my-design/design-md/clickhouse/preview.html +0 -786
- package/.opencode/oh-my-design/design-md/cloudflare/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/cloudflare/DESIGN.md +0 -637
- package/.opencode/oh-my-design/design-md/cohere/.verification.md +0 -136
- package/.opencode/oh-my-design/design-md/cohere/DESIGN.md +0 -409
- package/.opencode/oh-my-design/design-md/cohere/README.md +0 -24
- package/.opencode/oh-my-design/design-md/cohere/preview-dark.html +0 -803
- package/.opencode/oh-my-design/design-md/cohere/preview.html +0 -807
- package/.opencode/oh-my-design/design-md/coinbase/.verification.md +0 -116
- package/.opencode/oh-my-design/design-md/coinbase/DESIGN.md +0 -353
- package/.opencode/oh-my-design/design-md/coinbase/README.md +0 -23
- package/.opencode/oh-my-design/design-md/coinbase/preview-dark.html +0 -164
- package/.opencode/oh-my-design/design-md/coinbase/preview.html +0 -163
- package/.opencode/oh-my-design/design-md/coinone/.verification.md +0 -38
- package/.opencode/oh-my-design/design-md/coinone/DESIGN.md +0 -257
- package/.opencode/oh-my-design/design-md/composio/.verification.md +0 -143
- package/.opencode/oh-my-design/design-md/composio/DESIGN.md +0 -441
- package/.opencode/oh-my-design/design-md/composio/README.md +0 -24
- package/.opencode/oh-my-design/design-md/composio/preview-dark.html +0 -958
- package/.opencode/oh-my-design/design-md/composio/preview.html +0 -933
- package/.opencode/oh-my-design/design-md/cookpad/DESIGN.md +0 -394
- package/.opencode/oh-my-design/design-md/coupang/.verification.md +0 -141
- package/.opencode/oh-my-design/design-md/coupang/DESIGN.md +0 -557
- package/.opencode/oh-my-design/design-md/cursor/.verification.md +0 -141
- package/.opencode/oh-my-design/design-md/cursor/DESIGN.md +0 -460
- package/.opencode/oh-my-design/design-md/cursor/README.md +0 -24
- package/.opencode/oh-my-design/design-md/cursor/preview-dark.html +0 -393
- package/.opencode/oh-my-design/design-md/cursor/preview.html +0 -383
- package/.opencode/oh-my-design/design-md/dabang/DESIGN.md +0 -267
- package/.opencode/oh-my-design/design-md/dabang/assets/_reference/.live-inspect-proof.json +0 -145
- package/.opencode/oh-my-design/design-md/dabang/assets/_reference/fonts.json +0 -22
- package/.opencode/oh-my-design/design-md/dabang/assets/_reference/raw-capture-map.json +0 -718
- package/.opencode/oh-my-design/design-md/dabang/assets/_reference/raw-capture.json +0 -1125
- package/.opencode/oh-my-design/design-md/dabang/assets/_reference/structure.json +0 -53
- package/.opencode/oh-my-design/design-md/dabang/assets/_reference/tokens.json +0 -130
- package/.opencode/oh-my-design/design-md/danawa/.verification.md +0 -60
- package/.opencode/oh-my-design/design-md/danawa/DESIGN.md +0 -477
- package/.opencode/oh-my-design/design-md/dcard/.verification.md +0 -118
- package/.opencode/oh-my-design/design-md/dcard/DESIGN.md +0 -633
- package/.opencode/oh-my-design/design-md/dcard/README.md +0 -12
- package/.opencode/oh-my-design/design-md/dcard/_research/forum-1440px.png +0 -0
- package/.opencode/oh-my-design/design-md/dcard/_research.md +0 -133
- package/.opencode/oh-my-design/design-md/dell/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/dell/DESIGN.md +0 -636
- package/.opencode/oh-my-design/design-md/devsisters/.verification.md +0 -32
- package/.opencode/oh-my-design/design-md/devsisters/DESIGN.md +0 -282
- package/.opencode/oh-my-design/design-md/discord/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/discord/DESIGN.md +0 -604
- package/.opencode/oh-my-design/design-md/dji/DESIGN.md +0 -454
- package/.opencode/oh-my-design/design-md/drnow/.verification.md +0 -41
- package/.opencode/oh-my-design/design-md/drnow/DESIGN.md +0 -383
- package/.opencode/oh-my-design/design-md/dropbox/.verification.md +0 -61
- package/.opencode/oh-my-design/design-md/dropbox/DESIGN.md +0 -445
- package/.opencode/oh-my-design/design-md/duolingo/.verification.md +0 -20
- package/.opencode/oh-my-design/design-md/duolingo/DESIGN.md +0 -563
- package/.opencode/oh-my-design/design-md/elevenlabs/.verification.md +0 -128
- package/.opencode/oh-my-design/design-md/elevenlabs/DESIGN.md +0 -415
- package/.opencode/oh-my-design/design-md/elevenlabs/README.md +0 -23
- package/.opencode/oh-my-design/design-md/elevenlabs/preview-dark.html +0 -252
- package/.opencode/oh-my-design/design-md/elevenlabs/preview.html +0 -251
- package/.opencode/oh-my-design/design-md/expo/.verification.md +0 -141
- package/.opencode/oh-my-design/design-md/expo/DESIGN.md +0 -412
- package/.opencode/oh-my-design/design-md/expo/README.md +0 -24
- package/.opencode/oh-my-design/design-md/expo/preview-dark.html +0 -533
- package/.opencode/oh-my-design/design-md/expo/preview.html +0 -533
- package/.opencode/oh-my-design/design-md/fastcampus/DESIGN.md +0 -529
- package/.opencode/oh-my-design/design-md/fastcampus/assets/_reference/.live-inspect-proof.json +0 -950
- package/.opencode/oh-my-design/design-md/fastcampus/assets/_reference/fonts.json +0 -14
- package/.opencode/oh-my-design/design-md/fastcampus/assets/_reference/structure.json +0 -30
- package/.opencode/oh-my-design/design-md/fastcampus/assets/_reference/tokens.json +0 -109
- package/.opencode/oh-my-design/design-md/ferrari/.verification.md +0 -119
- package/.opencode/oh-my-design/design-md/ferrari/DESIGN.md +0 -447
- package/.opencode/oh-my-design/design-md/ferrari/README.md +0 -23
- package/.opencode/oh-my-design/design-md/ferrari/preview-dark.html +0 -1162
- package/.opencode/oh-my-design/design-md/ferrari/preview.html +0 -1122
- package/.opencode/oh-my-design/design-md/figma/.verification.md +0 -206
- package/.opencode/oh-my-design/design-md/figma/DESIGN.md +0 -534
- package/.opencode/oh-my-design/design-md/figma/README.md +0 -24
- package/.opencode/oh-my-design/design-md/figma/preview-dark.html +0 -822
- package/.opencode/oh-my-design/design-md/figma/preview.html +0 -832
- package/.opencode/oh-my-design/design-md/finda/.verification.md +0 -33
- package/.opencode/oh-my-design/design-md/finda/DESIGN.md +0 -413
- package/.opencode/oh-my-design/design-md/firstory/.verification.md +0 -70
- package/.opencode/oh-my-design/design-md/firstory/DESIGN.md +0 -487
- package/.opencode/oh-my-design/design-md/flex/DESIGN.md +0 -356
- package/.opencode/oh-my-design/design-md/flex/_research.md +0 -49
- package/.opencode/oh-my-design/design-md/flex/assets/_reference/.live-inspect-proof.json +0 -192
- package/.opencode/oh-my-design/design-md/flex/assets/_reference/.raw-inspect.json +0 -873
- package/.opencode/oh-my-design/design-md/flex/assets/_reference/fonts.json +0 -17
- package/.opencode/oh-my-design/design-md/flex/assets/_reference/structure.json +0 -58
- package/.opencode/oh-my-design/design-md/flex/assets/_reference/tokens.json +0 -75
- package/.opencode/oh-my-design/design-md/flo/.verification.md +0 -33
- package/.opencode/oh-my-design/design-md/flo/DESIGN.md +0 -349
- package/.opencode/oh-my-design/design-md/framer/.verification.md +0 -147
- package/.opencode/oh-my-design/design-md/framer/DESIGN.md +0 -431
- package/.opencode/oh-my-design/design-md/framer/README.md +0 -23
- package/.opencode/oh-my-design/design-md/framer/preview-dark.html +0 -902
- package/.opencode/oh-my-design/design-md/framer/preview.html +0 -883
- package/.opencode/oh-my-design/design-md/freee/.verification.md +0 -145
- package/.opencode/oh-my-design/design-md/freee/DESIGN.md +0 -620
- package/.opencode/oh-my-design/design-md/freee/README.md +0 -12
- package/.opencode/oh-my-design/design-md/freee/_research/vibes-storybook-1440px.png +0 -0
- package/.opencode/oh-my-design/design-md/freee/_research.md +0 -116
- package/.opencode/oh-my-design/design-md/fugle/.verification.md +0 -40
- package/.opencode/oh-my-design/design-md/fugle/DESIGN.md +0 -290
- package/.opencode/oh-my-design/design-md/funnow/.verification.md +0 -62
- package/.opencode/oh-my-design/design-md/funnow/DESIGN.md +0 -431
- package/.opencode/oh-my-design/design-md/gangnamunni/DESIGN.md +0 -677
- package/.opencode/oh-my-design/design-md/gangnamunni/_promo.json +0 -26
- package/.opencode/oh-my-design/design-md/gangnamunni/_research.md +0 -113
- package/.opencode/oh-my-design/design-md/genie/.verification.md +0 -29
- package/.opencode/oh-my-design/design-md/genie/DESIGN.md +0 -415
- package/.opencode/oh-my-design/design-md/github/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/github/DESIGN.md +0 -727
- package/.opencode/oh-my-design/design-md/gmarket/DESIGN.md +0 -534
- package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/.live-inspect-proof.json +0 -217
- package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/fonts.json +0 -41
- package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/raw-capture-bestsellers.json +0 -1929
- package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/raw-capture-home.json +0 -3675
- package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/structure.json +0 -65
- package/.opencode/oh-my-design/design-md/gmarket/assets/_reference/tokens.json +0 -210
- package/.opencode/oh-my-design/design-md/gogolook/.verification.md +0 -31
- package/.opencode/oh-my-design/design-md/gogolook/DESIGN.md +0 -155
- package/.opencode/oh-my-design/design-md/gogoro/DESIGN.md +0 -441
- package/.opencode/oh-my-design/design-md/google/.verification.md +0 -61
- package/.opencode/oh-my-design/design-md/google/DESIGN.md +0 -499
- package/.opencode/oh-my-design/design-md/greenvines/.verification.md +0 -72
- package/.opencode/oh-my-design/design-md/greenvines/DESIGN.md +0 -454
- package/.opencode/oh-my-design/design-md/greeting/.verification.md +0 -64
- package/.opencode/oh-my-design/design-md/greeting/DESIGN.md +0 -462
- package/.opencode/oh-my-design/design-md/grip/.verification.md +0 -36
- package/.opencode/oh-my-design/design-md/grip/DESIGN.md +0 -289
- package/.opencode/oh-my-design/design-md/hahow/.verification.md +0 -31
- package/.opencode/oh-my-design/design-md/hahow/DESIGN.md +0 -184
- package/.opencode/oh-my-design/design-md/hashicorp/.verification.md +0 -142
- package/.opencode/oh-my-design/design-md/hashicorp/DESIGN.md +0 -411
- package/.opencode/oh-my-design/design-md/hashicorp/README.md +0 -24
- package/.opencode/oh-my-design/design-md/hashicorp/preview-dark.html +0 -1202
- package/.opencode/oh-my-design/design-md/hashicorp/preview.html +0 -1193
- package/.opencode/oh-my-design/design-md/hogangnono/.verification.md +0 -33
- package/.opencode/oh-my-design/design-md/hogangnono/DESIGN.md +0 -349
- package/.opencode/oh-my-design/design-md/hp/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/hp/DESIGN.md +0 -563
- package/.opencode/oh-my-design/design-md/hyperconnect/.verification.md +0 -40
- package/.opencode/oh-my-design/design-md/hyperconnect/DESIGN.md +0 -393
- package/.opencode/oh-my-design/design-md/hyundaicard/.verification.md +0 -25
- package/.opencode/oh-my-design/design-md/hyundaicard/DESIGN.md +0 -201
- package/.opencode/oh-my-design/design-md/ibm/.verification.md +0 -102
- package/.opencode/oh-my-design/design-md/ibm/DESIGN.md +0 -464
- package/.opencode/oh-my-design/design-md/ibm/README.md +0 -24
- package/.opencode/oh-my-design/design-md/ibm/preview-dark.html +0 -443
- package/.opencode/oh-my-design/design-md/ibm/preview.html +0 -428
- package/.opencode/oh-my-design/design-md/ichef/DESIGN.md +0 -455
- package/.opencode/oh-my-design/design-md/ikala/.verification.md +0 -35
- package/.opencode/oh-my-design/design-md/ikala/DESIGN.md +0 -400
- package/.opencode/oh-my-design/design-md/imweb/.verification.md +0 -61
- package/.opencode/oh-my-design/design-md/imweb/DESIGN.md +0 -460
- package/.opencode/oh-my-design/design-md/inflearn/DESIGN.md +0 -453
- package/.opencode/oh-my-design/design-md/inflearn/_promo.json +0 -29
- package/.opencode/oh-my-design/design-md/inflearn/_research.md +0 -85
- package/.opencode/oh-my-design/design-md/inflearn/assets/_reference/.live-inspect-proof-courses.json +0 -679
- package/.opencode/oh-my-design/design-md/inflearn/assets/_reference/.live-inspect-proof.json +0 -448
- package/.opencode/oh-my-design/design-md/inflearn/assets/_reference/fonts.json +0 -41
- package/.opencode/oh-my-design/design-md/inflearn/assets/_reference/structure.json +0 -110
- package/.opencode/oh-my-design/design-md/inflearn/assets/_reference/tokens.json +0 -54
- package/.opencode/oh-my-design/design-md/intercom/.verification.md +0 -144
- package/.opencode/oh-my-design/design-md/intercom/DESIGN.md +0 -271
- package/.opencode/oh-my-design/design-md/intercom/README.md +0 -23
- package/.opencode/oh-my-design/design-md/intercom/preview-dark.html +0 -185
- package/.opencode/oh-my-design/design-md/intercom/preview.html +0 -184
- package/.opencode/oh-my-design/design-md/jandi/.verification.md +0 -26
- package/.opencode/oh-my-design/design-md/jandi/DESIGN.md +0 -382
- package/.opencode/oh-my-design/design-md/jkopay/.verification.md +0 -32
- package/.opencode/oh-my-design/design-md/jkopay/DESIGN.md +0 -283
- package/.opencode/oh-my-design/design-md/jobkorea/.verification.md +0 -30
- package/.opencode/oh-my-design/design-md/jobkorea/DESIGN.md +0 -349
- package/.opencode/oh-my-design/design-md/jumpit/DESIGN.md +0 -403
- package/.opencode/oh-my-design/design-md/jumpit/_research.md +0 -119
- package/.opencode/oh-my-design/design-md/jumpit/assets/_reference/.live-inspect-proof.json +0 -182
- package/.opencode/oh-my-design/design-md/jumpit/assets/_reference/fonts.json +0 -20
- package/.opencode/oh-my-design/design-md/jumpit/assets/_reference/structure.json +0 -66
- package/.opencode/oh-my-design/design-md/jumpit/assets/_reference/tokens.json +0 -108
- package/.opencode/oh-my-design/design-md/kakao/.verification.md +0 -137
- package/.opencode/oh-my-design/design-md/kakao/DESIGN.md +0 -568
- package/.opencode/oh-my-design/design-md/kakao/README.md +0 -18
- package/.opencode/oh-my-design/design-md/kakao/_research.md +0 -98
- package/.opencode/oh-my-design/design-md/kakaobank/.verification.md +0 -133
- package/.opencode/oh-my-design/design-md/kakaobank/DESIGN.md +0 -602
- package/.opencode/oh-my-design/design-md/kakaopay/DESIGN.md +0 -603
- package/.opencode/oh-my-design/design-md/kakaopay/_promo.json +0 -22
- package/.opencode/oh-my-design/design-md/kakaopay/_research.md +0 -84
- package/.opencode/oh-my-design/design-md/kakaot/DESIGN.md +0 -507
- package/.opencode/oh-my-design/design-md/karrot/.verification.md +0 -143
- package/.opencode/oh-my-design/design-md/karrot/DESIGN.md +0 -494
- package/.opencode/oh-my-design/design-md/karrot/README.md +0 -18
- package/.opencode/oh-my-design/design-md/karrot/_research.md +0 -57
- package/.opencode/oh-my-design/design-md/kbank/DESIGN.md +0 -252
- package/.opencode/oh-my-design/design-md/kbank/assets/_reference/.live-inspect-proof.json +0 -215
- package/.opencode/oh-my-design/design-md/kbank/assets/_reference/.live-inspect-raw.json +0 -1
- package/.opencode/oh-my-design/design-md/kbank/assets/_reference/fonts.json +0 -20
- package/.opencode/oh-my-design/design-md/kbank/assets/_reference/structure.json +0 -151
- package/.opencode/oh-my-design/design-md/kbank/assets/_reference/tokens.json +0 -101
- package/.opencode/oh-my-design/design-md/kdan/.verification.md +0 -30
- package/.opencode/oh-my-design/design-md/kdan/DESIGN.md +0 -193
- package/.opencode/oh-my-design/design-md/kintone/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/kintone/DESIGN.md +0 -586
- package/.opencode/oh-my-design/design-md/kkbox/.verification.md +0 -27
- package/.opencode/oh-my-design/design-md/kkbox/DESIGN.md +0 -136
- package/.opencode/oh-my-design/design-md/kkday/DESIGN.md +0 -470
- package/.opencode/oh-my-design/design-md/kmong/.verification.md +0 -30
- package/.opencode/oh-my-design/design-md/kmong/DESIGN.md +0 -427
- package/.opencode/oh-my-design/design-md/krafton/.verification.md +0 -38
- package/.opencode/oh-my-design/design-md/krafton/DESIGN.md +0 -267
- package/.opencode/oh-my-design/design-md/kraken/.verification.md +0 -143
- package/.opencode/oh-my-design/design-md/kraken/DESIGN.md +0 -277
- package/.opencode/oh-my-design/design-md/kraken/README.md +0 -23
- package/.opencode/oh-my-design/design-md/kraken/preview-dark.html +0 -169
- package/.opencode/oh-my-design/design-md/kraken/preview.html +0 -168
- package/.opencode/oh-my-design/design-md/krds/.verification.md +0 -373
- package/.opencode/oh-my-design/design-md/krds/DESIGN.md +0 -1060
- package/.opencode/oh-my-design/design-md/kream/DESIGN.md +0 -432
- package/.opencode/oh-my-design/design-md/kream/assets/_reference/.live-inspect-proof.json +0 -289
- package/.opencode/oh-my-design/design-md/kream/assets/_reference/fonts.json +0 -26
- package/.opencode/oh-my-design/design-md/kream/assets/_reference/structure.json +0 -56
- package/.opencode/oh-my-design/design-md/kream/assets/_reference/tokens.json +0 -154
- package/.opencode/oh-my-design/design-md/kurly/.verification.md +0 -126
- package/.opencode/oh-my-design/design-md/kurly/DESIGN.md +0 -620
- package/.opencode/oh-my-design/design-md/laftel/.verification.md +0 -39
- package/.opencode/oh-my-design/design-md/laftel/DESIGN.md +0 -293
- package/.opencode/oh-my-design/design-md/lamborghini/.verification.md +0 -127
- package/.opencode/oh-my-design/design-md/lamborghini/DESIGN.md +0 -430
- package/.opencode/oh-my-design/design-md/lamborghini/README.md +0 -23
- package/.opencode/oh-my-design/design-md/lamborghini/preview-dark.html +0 -303
- package/.opencode/oh-my-design/design-md/lamborghini/preview.html +0 -381
- package/.opencode/oh-my-design/design-md/laundrygo/.verification.md +0 -60
- package/.opencode/oh-my-design/design-md/laundrygo/DESIGN.md +0 -434
- package/.opencode/oh-my-design/design-md/layerx/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/layerx/DESIGN.md +0 -615
- package/.opencode/oh-my-design/design-md/lezhin/.verification.md +0 -47
- package/.opencode/oh-my-design/design-md/lezhin/DESIGN.md +0 -348
- package/.opencode/oh-my-design/design-md/line/.verification.md +0 -137
- package/.opencode/oh-my-design/design-md/line/DESIGN.md +0 -467
- package/.opencode/oh-my-design/design-md/line/README.md +0 -12
- package/.opencode/oh-my-design/design-md/line/_research/home-1440px.png +0 -0
- package/.opencode/oh-my-design/design-md/line/_research.md +0 -65
- package/.opencode/oh-my-design/design-md/linear.app/.verification.md +0 -143
- package/.opencode/oh-my-design/design-md/linear.app/DESIGN.md +0 -642
- package/.opencode/oh-my-design/design-md/linear.app/README.md +0 -24
- package/.opencode/oh-my-design/design-md/linear.app/preview-dark.html +0 -383
- package/.opencode/oh-my-design/design-md/linear.app/preview.html +0 -373
- package/.opencode/oh-my-design/design-md/loom/.verification.md +0 -31
- package/.opencode/oh-my-design/design-md/loom/DESIGN.md +0 -396
- package/.opencode/oh-my-design/design-md/lovable/.verification.md +0 -154
- package/.opencode/oh-my-design/design-md/lovable/DESIGN.md +0 -423
- package/.opencode/oh-my-design/design-md/lovable/README.md +0 -24
- package/.opencode/oh-my-design/design-md/lovable/preview-dark.html +0 -349
- package/.opencode/oh-my-design/design-md/lovable/preview.html +0 -348
- package/.opencode/oh-my-design/design-md/lunit/DESIGN.md +0 -296
- package/.opencode/oh-my-design/design-md/lunit/assets/_reference/.live-inspect-proof.json +0 -249
- package/.opencode/oh-my-design/design-md/lunit/assets/_reference/fonts.json +0 -24
- package/.opencode/oh-my-design/design-md/lunit/assets/_reference/structure.json +0 -162
- package/.opencode/oh-my-design/design-md/lunit/assets/_reference/tokens.json +0 -115
- package/.opencode/oh-my-design/design-md/mastercard/.verification.md +0 -19
- package/.opencode/oh-my-design/design-md/mastercard/DESIGN.md +0 -587
- package/.opencode/oh-my-design/design-md/meituan/DESIGN.md +0 -466
- package/.opencode/oh-my-design/design-md/melon/.verification.md +0 -27
- package/.opencode/oh-my-design/design-md/melon/DESIGN.md +0 -179
- package/.opencode/oh-my-design/design-md/mercari/.verification.md +0 -155
- package/.opencode/oh-my-design/design-md/mercari/DESIGN.md +0 -514
- package/.opencode/oh-my-design/design-md/mercari/README.md +0 -12
- package/.opencode/oh-my-design/design-md/mercari/_research/home-1440px.png +0 -0
- package/.opencode/oh-my-design/design-md/mercari/_research.md +0 -137
- package/.opencode/oh-my-design/design-md/mercury/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/mercury/DESIGN.md +0 -589
- package/.opencode/oh-my-design/design-md/meta/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/meta/DESIGN.md +0 -615
- package/.opencode/oh-my-design/design-md/microsoft/.verification.md +0 -62
- package/.opencode/oh-my-design/design-md/microsoft/DESIGN.md +0 -508
- package/.opencode/oh-my-design/design-md/millie/DESIGN.md +0 -584
- package/.opencode/oh-my-design/design-md/minimax/.verification.md +0 -135
- package/.opencode/oh-my-design/design-md/minimax/DESIGN.md +0 -396
- package/.opencode/oh-my-design/design-md/minimax/README.md +0 -24
- package/.opencode/oh-my-design/design-md/minimax/preview-dark.html +0 -1262
- package/.opencode/oh-my-design/design-md/minimax/preview.html +0 -1248
- package/.opencode/oh-my-design/design-md/mintlify/.verification.md +0 -160
- package/.opencode/oh-my-design/design-md/mintlify/DESIGN.md +0 -472
- package/.opencode/oh-my-design/design-md/mintlify/README.md +0 -24
- package/.opencode/oh-my-design/design-md/mintlify/preview-dark.html +0 -409
- package/.opencode/oh-my-design/design-md/mintlify/preview.html +0 -398
- package/.opencode/oh-my-design/design-md/miricanvas/.verification.md +0 -61
- package/.opencode/oh-my-design/design-md/miricanvas/DESIGN.md +0 -464
- package/.opencode/oh-my-design/design-md/miro/.verification.md +0 -138
- package/.opencode/oh-my-design/design-md/miro/DESIGN.md +0 -319
- package/.opencode/oh-my-design/design-md/miro/README.md +0 -23
- package/.opencode/oh-my-design/design-md/miro/preview-dark.html +0 -174
- package/.opencode/oh-my-design/design-md/miro/preview.html +0 -173
- package/.opencode/oh-my-design/design-md/mistral.ai/.verification.md +0 -146
- package/.opencode/oh-my-design/design-md/mistral.ai/DESIGN.md +0 -390
- package/.opencode/oh-my-design/design-md/mistral.ai/README.md +0 -24
- package/.opencode/oh-my-design/design-md/mistral.ai/preview-dark.html +0 -806
- package/.opencode/oh-my-design/design-md/mistral.ai/preview.html +0 -805
- package/.opencode/oh-my-design/design-md/modusign/.verification.md +0 -58
- package/.opencode/oh-my-design/design-md/modusign/DESIGN.md +0 -524
- package/.opencode/oh-my-design/design-md/momoshop/.verification.md +0 -36
- package/.opencode/oh-my-design/design-md/momoshop/DESIGN.md +0 -322
- package/.opencode/oh-my-design/design-md/money-forward/DESIGN.md +0 -443
- package/.opencode/oh-my-design/design-md/mongodb/.verification.md +0 -145
- package/.opencode/oh-my-design/design-md/mongodb/DESIGN.md +0 -401
- package/.opencode/oh-my-design/design-md/mongodb/README.md +0 -23
- package/.opencode/oh-my-design/design-md/mongodb/preview-dark.html +0 -260
- package/.opencode/oh-my-design/design-md/mongodb/preview.html +0 -259
- package/.opencode/oh-my-design/design-md/muji/.verification.md +0 -20
- package/.opencode/oh-my-design/design-md/muji/DESIGN.md +0 -605
- package/.opencode/oh-my-design/design-md/musinsa/.verification.md +0 -59
- package/.opencode/oh-my-design/design-md/musinsa/DESIGN.md +0 -593
- package/.opencode/oh-my-design/design-md/mustit/.verification.md +0 -37
- package/.opencode/oh-my-design/design-md/mustit/DESIGN.md +0 -328
- package/.opencode/oh-my-design/design-md/myrealtrip/DESIGN.md +0 -494
- package/.opencode/oh-my-design/design-md/naver/.verification.md +0 -134
- package/.opencode/oh-my-design/design-md/naver/DESIGN.md +0 -582
- package/.opencode/oh-my-design/design-md/naverwebtoon/DESIGN.md +0 -477
- package/.opencode/oh-my-design/design-md/netflix/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/netflix/DESIGN.md +0 -572
- package/.opencode/oh-my-design/design-md/nexon/.verification.md +0 -27
- package/.opencode/oh-my-design/design-md/nexon/DESIGN.md +0 -389
- package/.opencode/oh-my-design/design-md/nhncloud/.verification.md +0 -23
- package/.opencode/oh-my-design/design-md/nhncloud/DESIGN.md +0 -207
- package/.opencode/oh-my-design/design-md/nike/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/nike/DESIGN.md +0 -588
- package/.opencode/oh-my-design/design-md/note/DESIGN.md +0 -346
- package/.opencode/oh-my-design/design-md/notion/.verification.md +0 -141
- package/.opencode/oh-my-design/design-md/notion/DESIGN.md +0 -557
- package/.opencode/oh-my-design/design-md/notion/README.md +0 -24
- package/.opencode/oh-my-design/design-md/notion/preview-dark.html +0 -372
- package/.opencode/oh-my-design/design-md/notion/preview.html +0 -364
- package/.opencode/oh-my-design/design-md/nvidia/.verification.md +0 -127
- package/.opencode/oh-my-design/design-md/nvidia/DESIGN.md +0 -550
- package/.opencode/oh-my-design/design-md/nvidia/README.md +0 -24
- package/.opencode/oh-my-design/design-md/nvidia/_research.md +0 -68
- package/.opencode/oh-my-design/design-md/nvidia/preview-dark.html +0 -374
- package/.opencode/oh-my-design/design-md/nvidia/preview.html +0 -366
- package/.opencode/oh-my-design/design-md/ohouse/.verification.md +0 -87
- package/.opencode/oh-my-design/design-md/ohouse/DESIGN.md +0 -635
- package/.opencode/oh-my-design/design-md/oliveyoung/DESIGN.md +0 -407
- package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/.live-inspect-proof.json +0 -158
- package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/_best_capture.json +0 -644
- package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/_detail_capture.json +0 -447
- package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/_main.html +0 -419
- package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/_main_capture.json +0 -1126
- package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/_search_capture.json +0 -912
- package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/fonts.json +0 -20
- package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/structure.json +0 -91
- package/.opencode/oh-my-design/design-md/oliveyoung/assets/_reference/tokens.json +0 -79
- package/.opencode/oh-my-design/design-md/ollama/.verification.md +0 -138
- package/.opencode/oh-my-design/design-md/ollama/DESIGN.md +0 -393
- package/.opencode/oh-my-design/design-md/ollama/README.md +0 -24
- package/.opencode/oh-my-design/design-md/ollama/preview-dark.html +0 -678
- package/.opencode/oh-my-design/design-md/ollama/preview.html +0 -678
- package/.opencode/oh-my-design/design-md/omnichat/.verification.md +0 -74
- package/.opencode/oh-my-design/design-md/omnichat/DESIGN.md +0 -499
- package/.opencode/oh-my-design/design-md/openai/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/openai/DESIGN.md +0 -641
- package/.opencode/oh-my-design/design-md/opencode.ai/.verification.md +0 -136
- package/.opencode/oh-my-design/design-md/opencode.ai/DESIGN.md +0 -425
- package/.opencode/oh-my-design/design-md/opencode.ai/README.md +0 -24
- package/.opencode/oh-my-design/design-md/opencode.ai/preview-dark.html +0 -366
- package/.opencode/oh-my-design/design-md/opencode.ai/preview.html +0 -357
- package/.opencode/oh-my-design/design-md/payco/.verification.md +0 -28
- package/.opencode/oh-my-design/design-md/payco/DESIGN.md +0 -267
- package/.opencode/oh-my-design/design-md/paypay/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/paypay/DESIGN.md +0 -656
- package/.opencode/oh-my-design/design-md/pchome/.verification.md +0 -38
- package/.opencode/oh-my-design/design-md/pchome/DESIGN.md +0 -439
- package/.opencode/oh-my-design/design-md/perplexity/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/perplexity/DESIGN.md +0 -546
- package/.opencode/oh-my-design/design-md/piccollage/.verification.md +0 -34
- package/.opencode/oh-my-design/design-md/piccollage/DESIGN.md +0 -320
- package/.opencode/oh-my-design/design-md/pinkoi/.verification.md +0 -147
- package/.opencode/oh-my-design/design-md/pinkoi/DESIGN.md +0 -639
- package/.opencode/oh-my-design/design-md/pinkoi/README.md +0 -12
- package/.opencode/oh-my-design/design-md/pinkoi/_research/browse-1440px.png +0 -0
- package/.opencode/oh-my-design/design-md/pinkoi/_research.md +0 -167
- package/.opencode/oh-my-design/design-md/pinterest/.verification.md +0 -141
- package/.opencode/oh-my-design/design-md/pinterest/DESIGN.md +0 -366
- package/.opencode/oh-my-design/design-md/pinterest/README.md +0 -23
- package/.opencode/oh-my-design/design-md/pinterest/preview-dark.html +0 -233
- package/.opencode/oh-my-design/design-md/pinterest/preview.html +0 -232
- package/.opencode/oh-my-design/design-md/pixiv/.verification.md +0 -20
- package/.opencode/oh-my-design/design-md/pixiv/DESIGN.md +0 -613
- package/.opencode/oh-my-design/design-md/pixnet/.verification.md +0 -31
- package/.opencode/oh-my-design/design-md/pixnet/DESIGN.md +0 -430
- package/.opencode/oh-my-design/design-md/posthog/.verification.md +0 -159
- package/.opencode/oh-my-design/design-md/posthog/DESIGN.md +0 -480
- package/.opencode/oh-my-design/design-md/posthog/README.md +0 -23
- package/.opencode/oh-my-design/design-md/posthog/preview-dark.html +0 -699
- package/.opencode/oh-my-design/design-md/posthog/preview.html +0 -749
- package/.opencode/oh-my-design/design-md/postype/.verification.md +0 -61
- package/.opencode/oh-my-design/design-md/postype/DESIGN.md +0 -431
- package/.opencode/oh-my-design/design-md/publy/DESIGN.md +0 -563
- package/.opencode/oh-my-design/design-md/qanda/.verification.md +0 -121
- package/.opencode/oh-my-design/design-md/qanda/DESIGN.md +0 -516
- package/.opencode/oh-my-design/design-md/ragic/.verification.md +0 -37
- package/.opencode/oh-my-design/design-md/ragic/DESIGN.md +0 -444
- package/.opencode/oh-my-design/design-md/rakuten/.verification.md +0 -60
- package/.opencode/oh-my-design/design-md/rakuten/DESIGN.md +0 -440
- package/.opencode/oh-my-design/design-md/ramp/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/ramp/DESIGN.md +0 -634
- package/.opencode/oh-my-design/design-md/rayark/.verification.md +0 -22
- package/.opencode/oh-my-design/design-md/rayark/DESIGN.md +0 -154
- package/.opencode/oh-my-design/design-md/raycast/.verification.md +0 -138
- package/.opencode/oh-my-design/design-md/raycast/DESIGN.md +0 -467
- package/.opencode/oh-my-design/design-md/raycast/README.md +0 -23
- package/.opencode/oh-my-design/design-md/raycast/preview-dark.html +0 -606
- package/.opencode/oh-my-design/design-md/raycast/preview.html +0 -688
- package/.opencode/oh-my-design/design-md/remember/.verification.md +0 -135
- package/.opencode/oh-my-design/design-md/remember/DESIGN.md +0 -504
- package/.opencode/oh-my-design/design-md/remember/_promo.json +0 -27
- package/.opencode/oh-my-design/design-md/remember/_research.md +0 -90
- package/.opencode/oh-my-design/design-md/renault/.verification.md +0 -139
- package/.opencode/oh-my-design/design-md/renault/DESIGN.md +0 -439
- package/.opencode/oh-my-design/design-md/renault/README.md +0 -23
- package/.opencode/oh-my-design/design-md/renault/preview-dark.html +0 -406
- package/.opencode/oh-my-design/design-md/renault/preview.html +0 -606
- package/.opencode/oh-my-design/design-md/replicate/.verification.md +0 -154
- package/.opencode/oh-my-design/design-md/replicate/DESIGN.md +0 -387
- package/.opencode/oh-my-design/design-md/replicate/README.md +0 -24
- package/.opencode/oh-my-design/design-md/replicate/preview-dark.html +0 -828
- package/.opencode/oh-my-design/design-md/replicate/preview.html +0 -831
- package/.opencode/oh-my-design/design-md/resend/.verification.md +0 -143
- package/.opencode/oh-my-design/design-md/resend/DESIGN.md +0 -440
- package/.opencode/oh-my-design/design-md/resend/README.md +0 -23
- package/.opencode/oh-my-design/design-md/resend/preview-dark.html +0 -355
- package/.opencode/oh-my-design/design-md/resend/preview.html +0 -354
- package/.opencode/oh-my-design/design-md/retool/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/retool/DESIGN.md +0 -645
- package/.opencode/oh-my-design/design-md/revolut/.verification.md +0 -140
- package/.opencode/oh-my-design/design-md/revolut/DESIGN.md +0 -319
- package/.opencode/oh-my-design/design-md/revolut/README.md +0 -23
- package/.opencode/oh-my-design/design-md/revolut/preview-dark.html +0 -234
- package/.opencode/oh-my-design/design-md/revolut/preview.html +0 -233
- package/.opencode/oh-my-design/design-md/richart/.verification.md +0 -41
- package/.opencode/oh-my-design/design-md/richart/DESIGN.md +0 -465
- package/.opencode/oh-my-design/design-md/ridi/.verification.md +0 -108
- package/.opencode/oh-my-design/design-md/ridi/DESIGN.md +0 -573
- package/.opencode/oh-my-design/design-md/riiid/.verification.md +0 -33
- package/.opencode/oh-my-design/design-md/riiid/DESIGN.md +0 -260
- package/.opencode/oh-my-design/design-md/ringle/.verification.md +0 -53
- package/.opencode/oh-my-design/design-md/ringle/DESIGN.md +0 -444
- package/.opencode/oh-my-design/design-md/robinhood/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/robinhood/DESIGN.md +0 -604
- package/.opencode/oh-my-design/design-md/runwayml/.verification.md +0 -141
- package/.opencode/oh-my-design/design-md/runwayml/DESIGN.md +0 -431
- package/.opencode/oh-my-design/design-md/runwayml/README.md +0 -24
- package/.opencode/oh-my-design/design-md/runwayml/preview-dark.html +0 -664
- package/.opencode/oh-my-design/design-md/runwayml/preview.html +0 -665
- package/.opencode/oh-my-design/design-md/salesforce/.verification.md +0 -66
- package/.opencode/oh-my-design/design-md/salesforce/DESIGN.md +0 -473
- package/.opencode/oh-my-design/design-md/sanity/.verification.md +0 -174
- package/.opencode/oh-my-design/design-md/sanity/DESIGN.md +0 -499
- package/.opencode/oh-my-design/design-md/sanity/README.md +0 -24
- package/.opencode/oh-my-design/design-md/sanity/preview-dark.html +0 -990
- package/.opencode/oh-my-design/design-md/sanity/preview.html +0 -1135
- package/.opencode/oh-my-design/design-md/sansan/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/sansan/DESIGN.md +0 -631
- package/.opencode/oh-my-design/design-md/sendbird/.verification.md +0 -67
- package/.opencode/oh-my-design/design-md/sendbird/DESIGN.md +0 -331
- package/.opencode/oh-my-design/design-md/sentry/.verification.md +0 -157
- package/.opencode/oh-my-design/design-md/sentry/DESIGN.md +0 -397
- package/.opencode/oh-my-design/design-md/sentry/README.md +0 -24
- package/.opencode/oh-my-design/design-md/sentry/preview-dark.html +0 -626
- package/.opencode/oh-my-design/design-md/sentry/preview.html +0 -951
- package/.opencode/oh-my-design/design-md/shinhancard/.verification.md +0 -31
- package/.opencode/oh-my-design/design-md/shinhancard/DESIGN.md +0 -421
- package/.opencode/oh-my-design/design-md/shopline/.verification.md +0 -34
- package/.opencode/oh-my-design/design-md/shopline/DESIGN.md +0 -431
- package/.opencode/oh-my-design/design-md/slack/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/slack/DESIGN.md +0 -635
- package/.opencode/oh-my-design/design-md/smarthr/DESIGN.md +0 -452
- package/.opencode/oh-my-design/design-md/smartnews/DESIGN.md +0 -360
- package/.opencode/oh-my-design/design-md/socar/DESIGN.md +0 -438
- package/.opencode/oh-my-design/design-md/socar/_promo.json +0 -28
- package/.opencode/oh-my-design/design-md/socar/_research.md +0 -55
- package/.opencode/oh-my-design/design-md/soomgo/.verification.md +0 -27
- package/.opencode/oh-my-design/design-md/soomgo/DESIGN.md +0 -326
- package/.opencode/oh-my-design/design-md/spacex/.verification.md +0 -132
- package/.opencode/oh-my-design/design-md/spacex/DESIGN.md +0 -415
- package/.opencode/oh-my-design/design-md/spacex/README.md +0 -23
- package/.opencode/oh-my-design/design-md/spacex/_research.md +0 -69
- package/.opencode/oh-my-design/design-md/spacex/preview-dark.html +0 -221
- package/.opencode/oh-my-design/design-md/spacex/preview.html +0 -220
- package/.opencode/oh-my-design/design-md/spoon/DESIGN.md +0 -492
- package/.opencode/oh-my-design/design-md/spotify/.verification.md +0 -128
- package/.opencode/oh-my-design/design-md/spotify/DESIGN.md +0 -489
- package/.opencode/oh-my-design/design-md/spotify/README.md +0 -23
- package/.opencode/oh-my-design/design-md/spotify/preview-dark.html +0 -231
- package/.opencode/oh-my-design/design-md/spotify/preview.html +0 -230
- package/.opencode/oh-my-design/design-md/starbucks/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/starbucks/DESIGN.md +0 -597
- package/.opencode/oh-my-design/design-md/stores/.verification.md +0 -61
- package/.opencode/oh-my-design/design-md/stores/DESIGN.md +0 -447
- package/.opencode/oh-my-design/design-md/stripe/.verification.md +0 -140
- package/.opencode/oh-my-design/design-md/stripe/DESIGN.md +0 -571
- package/.opencode/oh-my-design/design-md/stripe/README.md +0 -24
- package/.opencode/oh-my-design/design-md/stripe/preview-dark.html +0 -428
- package/.opencode/oh-my-design/design-md/stripe/preview.html +0 -419
- package/.opencode/oh-my-design/design-md/studio/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/studio/DESIGN.md +0 -602
- package/.opencode/oh-my-design/design-md/supabase/.verification.md +0 -145
- package/.opencode/oh-my-design/design-md/supabase/DESIGN.md +0 -389
- package/.opencode/oh-my-design/design-md/supabase/README.md +0 -24
- package/.opencode/oh-my-design/design-md/supabase/preview-dark.html +0 -977
- package/.opencode/oh-my-design/design-md/supabase/preview.html +0 -955
- package/.opencode/oh-my-design/design-md/superhuman/.verification.md +0 -184
- package/.opencode/oh-my-design/design-md/superhuman/DESIGN.md +0 -453
- package/.opencode/oh-my-design/design-md/superhuman/README.md +0 -23
- package/.opencode/oh-my-design/design-md/superhuman/preview-dark.html +0 -973
- package/.opencode/oh-my-design/design-md/superhuman/preview.html +0 -951
- package/.opencode/oh-my-design/design-md/surveycake/.verification.md +0 -31
- package/.opencode/oh-my-design/design-md/surveycake/DESIGN.md +0 -442
- package/.opencode/oh-my-design/design-md/tada/DESIGN.md +0 -579
- package/.opencode/oh-my-design/design-md/teamblind/.verification.md +0 -76
- package/.opencode/oh-my-design/design-md/teamblind/DESIGN.md +0 -497
- package/.opencode/oh-my-design/design-md/tesla/.verification.md +0 -149
- package/.opencode/oh-my-design/design-md/tesla/DESIGN.md +0 -501
- package/.opencode/oh-my-design/design-md/tesla/README.md +0 -23
- package/.opencode/oh-my-design/design-md/tesla/_research.md +0 -70
- package/.opencode/oh-my-design/design-md/tesla/preview-dark.html +0 -947
- package/.opencode/oh-my-design/design-md/tesla/preview.html +0 -925
- package/.opencode/oh-my-design/design-md/theverge/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/theverge/DESIGN.md +0 -500
- package/.opencode/oh-my-design/design-md/timee/.verification.md +0 -67
- package/.opencode/oh-my-design/design-md/timee/DESIGN.md +0 -444
- package/.opencode/oh-my-design/design-md/together.ai/.verification.md +0 -145
- package/.opencode/oh-my-design/design-md/together.ai/DESIGN.md +0 -389
- package/.opencode/oh-my-design/design-md/together.ai/README.md +0 -24
- package/.opencode/oh-my-design/design-md/together.ai/preview-dark.html +0 -892
- package/.opencode/oh-my-design/design-md/together.ai/preview.html +0 -897
- package/.opencode/oh-my-design/design-md/toss/.verification.md +0 -120
- package/.opencode/oh-my-design/design-md/toss/DESIGN.md +0 -698
- package/.opencode/oh-my-design/design-md/toss/README.md +0 -19
- package/.opencode/oh-my-design/design-md/toss-securities/DESIGN.md +0 -247
- package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/.live-inspect-proof.json +0 -126
- package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/.live-inspect-raw.json +0 -619
- package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/.live-inspect-stock.json +0 -525
- package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/fonts.json +0 -24
- package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/structure.json +0 -35
- package/.opencode/oh-my-design/design-md/toss-securities/assets/_reference/tokens.json +0 -87
- package/.opencode/oh-my-design/design-md/tossbank/DESIGN.md +0 -576
- package/.opencode/oh-my-design/design-md/trenbe/.verification.md +0 -32
- package/.opencode/oh-my-design/design-md/trenbe/DESIGN.md +0 -293
- package/.opencode/oh-my-design/design-md/triple/DESIGN.md +0 -481
- package/.opencode/oh-my-design/design-md/tumblbug/DESIGN.md +0 -578
- package/.opencode/oh-my-design/design-md/tving/DESIGN.md +0 -317
- package/.opencode/oh-my-design/design-md/tving/assets/_reference/.live-inspect-proof.json +0 -131
- package/.opencode/oh-my-design/design-md/tving/assets/_reference/LICENSE-NOTE.md +0 -37
- package/.opencode/oh-my-design/design-md/tving/assets/_reference/attribution.md +0 -52
- package/.opencode/oh-my-design/design-md/tving/assets/_reference/fonts.json +0 -31
- package/.opencode/oh-my-design/design-md/tving/assets/_reference/screenshots/hero-desktop.png +0 -0
- package/.opencode/oh-my-design/design-md/tving/assets/_reference/structure.json +0 -55
- package/.opencode/oh-my-design/design-md/tving/assets/_reference/tokens.json +0 -115
- package/.opencode/oh-my-design/design-md/uber/.verification.md +0 -128
- package/.opencode/oh-my-design/design-md/uber/DESIGN.md +0 -423
- package/.opencode/oh-my-design/design-md/uber/README.md +0 -24
- package/.opencode/oh-my-design/design-md/uber/preview-dark.html +0 -1120
- package/.opencode/oh-my-design/design-md/uber/preview.html +0 -1119
- package/.opencode/oh-my-design/design-md/ubie/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/ubie/DESIGN.md +0 -615
- package/.opencode/oh-my-design/design-md/uniqlo/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/uniqlo/DESIGN.md +0 -575
- package/.opencode/oh-my-design/design-md/upbit/DESIGN.md +0 -337
- package/.opencode/oh-my-design/design-md/upbit/_research.md +0 -83
- package/.opencode/oh-my-design/design-md/upbit/assets/_reference/.live-inspect-proof.json +0 -263
- package/.opencode/oh-my-design/design-md/upbit/assets/_reference/fonts.json +0 -18
- package/.opencode/oh-my-design/design-md/upbit/assets/_reference/raw-capture-exchange.json +0 -1901
- package/.opencode/oh-my-design/design-md/upbit/assets/_reference/raw-capture.json +0 -1121
- package/.opencode/oh-my-design/design-md/upbit/assets/_reference/structure.json +0 -52
- package/.opencode/oh-my-design/design-md/upbit/assets/_reference/tokens.json +0 -169
- package/.opencode/oh-my-design/design-md/upstage/DESIGN.md +0 -270
- package/.opencode/oh-my-design/design-md/upstage/assets/_reference/.live-inspect-proof.json +0 -157
- package/.opencode/oh-my-design/design-md/upstage/assets/_reference/_brand-resource-center.json +0 -44
- package/.opencode/oh-my-design/design-md/upstage/assets/_reference/_curated-samples.json +0 -310
- package/.opencode/oh-my-design/design-md/upstage/assets/_reference/_raw-capture.json +0 -1560
- package/.opencode/oh-my-design/design-md/upstage/assets/_reference/_root-vars.json +0 -76
- package/.opencode/oh-my-design/design-md/upstage/assets/_reference/_structure-raw.json +0 -298
- package/.opencode/oh-my-design/design-md/upstage/assets/_reference/fonts.json +0 -35
- package/.opencode/oh-my-design/design-md/upstage/assets/_reference/structure.json +0 -72
- package/.opencode/oh-my-design/design-md/upstage/assets/_reference/tokens.json +0 -183
- package/.opencode/oh-my-design/design-md/velog/.verification.md +0 -26
- package/.opencode/oh-my-design/design-md/velog/DESIGN.md +0 -196
- package/.opencode/oh-my-design/design-md/vercel/.verification.md +0 -134
- package/.opencode/oh-my-design/design-md/vercel/DESIGN.md +0 -523
- package/.opencode/oh-my-design/design-md/vercel/README.md +0 -24
- package/.opencode/oh-my-design/design-md/vercel/preview-dark.html +0 -368
- package/.opencode/oh-my-design/design-md/vercel/preview.html +0 -367
- package/.opencode/oh-my-design/design-md/voicetube/.verification.md +0 -34
- package/.opencode/oh-my-design/design-md/voicetube/DESIGN.md +0 -266
- package/.opencode/oh-my-design/design-md/voltagent/.verification.md +0 -159
- package/.opencode/oh-my-design/design-md/voltagent/DESIGN.md +0 -454
- package/.opencode/oh-my-design/design-md/voltagent/README.md +0 -24
- package/.opencode/oh-my-design/design-md/voltagent/preview-dark.html +0 -487
- package/.opencode/oh-my-design/design-md/voltagent/preview.html +0 -766
- package/.opencode/oh-my-design/design-md/wadiz/DESIGN.md +0 -415
- package/.opencode/oh-my-design/design-md/wadiz/assets/_reference/.live-inspect-proof.json +0 -137
- package/.opencode/oh-my-design/design-md/wadiz/assets/_reference/fonts.json +0 -17
- package/.opencode/oh-my-design/design-md/wadiz/assets/_reference/structure.json +0 -35
- package/.opencode/oh-my-design/design-md/wadiz/assets/_reference/tokens.json +0 -80
- package/.opencode/oh-my-design/design-md/wanted/DESIGN.md +0 -575
- package/.opencode/oh-my-design/design-md/wanted/_promo.json +0 -31
- package/.opencode/oh-my-design/design-md/wanted/_research.md +0 -119
- package/.opencode/oh-my-design/design-md/wantedly/.verification.md +0 -53
- package/.opencode/oh-my-design/design-md/wantedly/DESIGN.md +0 -437
- package/.opencode/oh-my-design/design-md/warp/.verification.md +0 -156
- package/.opencode/oh-my-design/design-md/warp/DESIGN.md +0 -431
- package/.opencode/oh-my-design/design-md/warp/README.md +0 -23
- package/.opencode/oh-my-design/design-md/warp/preview-dark.html +0 -500
- package/.opencode/oh-my-design/design-md/warp/preview.html +0 -533
- package/.opencode/oh-my-design/design-md/watcha/DESIGN.md +0 -465
- package/.opencode/oh-my-design/design-md/wavve/DESIGN.md +0 -480
- package/.opencode/oh-my-design/design-md/wconcept/DESIGN.md +0 -556
- package/.opencode/oh-my-design/design-md/webflow/.verification.md +0 -151
- package/.opencode/oh-my-design/design-md/webflow/DESIGN.md +0 -330
- package/.opencode/oh-my-design/design-md/webflow/README.md +0 -23
- package/.opencode/oh-my-design/design-md/webflow/preview-dark.html +0 -147
- package/.opencode/oh-my-design/design-md/webflow/preview.html +0 -146
- package/.opencode/oh-my-design/design-md/wired/.verification.md +0 -21
- package/.opencode/oh-my-design/design-md/wired/DESIGN.md +0 -572
- package/.opencode/oh-my-design/design-md/wise/.verification.md +0 -141
- package/.opencode/oh-my-design/design-md/wise/DESIGN.md +0 -317
- package/.opencode/oh-my-design/design-md/wise/README.md +0 -23
- package/.opencode/oh-my-design/design-md/wise/preview-dark.html +0 -230
- package/.opencode/oh-my-design/design-md/wise/preview.html +0 -229
- package/.opencode/oh-my-design/design-md/x.ai/.verification.md +0 -140
- package/.opencode/oh-my-design/design-md/x.ai/DESIGN.md +0 -397
- package/.opencode/oh-my-design/design-md/x.ai/README.md +0 -24
- package/.opencode/oh-my-design/design-md/x.ai/preview-dark.html +0 -356
- package/.opencode/oh-my-design/design-md/x.ai/preview.html +0 -407
- package/.opencode/oh-my-design/design-md/xiaohongshu/DESIGN.md +0 -462
- package/.opencode/oh-my-design/design-md/yanolja/.verification.md +0 -83
- package/.opencode/oh-my-design/design-md/yanolja/DESIGN.md +0 -508
- package/.opencode/oh-my-design/design-md/yeogiotte/.verification.md +0 -210
- package/.opencode/oh-my-design/design-md/yeogiotte/DESIGN.md +0 -500
- package/.opencode/oh-my-design/design-md/yogiyo/DESIGN.md +0 -515
- package/.opencode/oh-my-design/design-md/yourator/.verification.md +0 -39
- package/.opencode/oh-my-design/design-md/yourator/DESIGN.md +0 -453
- package/.opencode/oh-my-design/design-md/zapier/.verification.md +0 -156
- package/.opencode/oh-my-design/design-md/zapier/DESIGN.md +0 -474
- package/.opencode/oh-my-design/design-md/zapier/README.md +0 -24
- package/.opencode/oh-my-design/design-md/zapier/preview-dark.html +0 -380
- package/.opencode/oh-my-design/design-md/zapier/preview.html +0 -372
- package/.opencode/oh-my-design/design-md/zigbang/DESIGN.md +0 -500
- package/.opencode/oh-my-design/design-md/zigbang/_promo.json +0 -16
- package/.opencode/oh-my-design/design-md/zigbang/_research.md +0 -101
- package/.opencode/oh-my-design/design-md/zigzag/DESIGN.md +0 -695
- package/.opencode/oh-my-design/design-md/zigzag/_promo.json +0 -23
- package/.opencode/oh-my-design/design-md/zigzag/_research.md +0 -64
- package/.opencode/oh-my-design/design-md/zozotown/.verification.md +0 -20
- package/.opencode/oh-my-design/design-md/zozotown/DESIGN.md +0 -578
- package/.opencode/oh-my-design/packages/mcp/dist/index.mjs +0 -21685
- package/.opencode/oh-my-design/packages/mcp/dist/index.mjs.map +0 -1
- package/.opencode/tools/akash_catalog.ts +0 -596
- package/.opencode/tools/extract-design-pattern.py +0 -182
- package/.opencode/tools/sdd_design.ts +0 -303
|
@@ -1,596 +0,0 @@
|
|
|
1
|
-
import { tool } from "@opencode-ai/plugin"
|
|
2
|
-
import fs from "fs"
|
|
3
|
-
import path from "path"
|
|
4
|
-
import crypto from "crypto"
|
|
5
|
-
|
|
6
|
-
// ============================================================================
|
|
7
|
-
// Akash3444 Catalog MCP - Shadcn UI Blocks + Basecn
|
|
8
|
-
// ============================================================================
|
|
9
|
-
//
|
|
10
|
-
// Indexa localmente los catalogos externos de Akash (akash3444):
|
|
11
|
-
// - shadcn-ui-blocks: https://shadcnui-blocks.com (Radix-based)
|
|
12
|
-
// - basecn: https://basecn.dev (Base UI-based, fork)
|
|
13
|
-
//
|
|
14
|
-
// Para evitar redescubrimiento por webfetch en cada sesion, cacheamos:
|
|
15
|
-
// - .openspec/cache/akash-index.json (listado maestro, refresco cada 7d)
|
|
16
|
-
// - .openspec/cache/basecn-index.json (idem para basecn)
|
|
17
|
-
// - .openspec/cache/blocks/<registry>/<name>.json (fuente individual por bloque)
|
|
18
|
-
//
|
|
19
|
-
// TTL configurable via AKASH_INDEX_TTL_DAYS env (default 7).
|
|
20
|
-
// ============================================================================
|
|
21
|
-
|
|
22
|
-
const AKASH_REPO = "akash3444/shadcn-ui-blocks"
|
|
23
|
-
const BASECN_REPO = "akash3444/basecn"
|
|
24
|
-
|
|
25
|
-
const AKASH_API = `https://api.github.com/repos/${AKASH_REPO}/contents/public/r/radix`
|
|
26
|
-
const BASECN_API = `https://api.github.com/repos/${BASECN_REPO}/contents/public/r/basecn`
|
|
27
|
-
|
|
28
|
-
const AKASH_RAW = (name: string) =>
|
|
29
|
-
`https://raw.githubusercontent.com/${AKASH_REPO}/main/public/r/radix/${name}.json`
|
|
30
|
-
const BASECN_RAW = (name: string) =>
|
|
31
|
-
`https://raw.githubusercontent.com/${BASECN_REPO}/main/public/r/basecn/${name}.json`
|
|
32
|
-
|
|
33
|
-
const AKASH_INSTALL = (name: string) =>
|
|
34
|
-
`https://shadcnui-blocks.com/r/radix/${name}.json`
|
|
35
|
-
const BASECN_INSTALL = (name: string) =>
|
|
36
|
-
`https://basecn.dev/r/basecn/${name}.json`
|
|
37
|
-
|
|
38
|
-
const DEFAULT_TTL_DAYS = Number(process.env.AKASH_INDEX_TTL_DAYS || 7)
|
|
39
|
-
const TTL_MS = DEFAULT_TTL_DAYS * 24 * 60 * 60 * 1000
|
|
40
|
-
|
|
41
|
-
// Prefijos conocidos para extraer categoria del nombre de archivo
|
|
42
|
-
const CATEGORY_PREFIXES = [
|
|
43
|
-
"hero", "footer", "pricing", "features", "faq", "testimonials",
|
|
44
|
-
"cta", "navbar", "stats", "logo-cloud", "blog", "contact",
|
|
45
|
-
"team", "about", "gallery", "login", "signup", "forgot-password",
|
|
46
|
-
"otp", "chart", "sidebar", "dashboard", "table", "calendar",
|
|
47
|
-
"accordion", "alert", "avatar", "badge", "button", "card", "checkbox",
|
|
48
|
-
"combobox", "command", "date-picker", "dialog", "drawer", "dropdown-menu",
|
|
49
|
-
"input", "kbd", "menubar", "pagination", "popover", "progress",
|
|
50
|
-
"radio-group", "scroll-area", "select", "separator", "sheet", "skeleton",
|
|
51
|
-
"slider", "sonner", "switch", "tabs", "textarea", "toast", "toggle",
|
|
52
|
-
"tooltip", "carousel", "marquee", "bento", "integration", "comparison",
|
|
53
|
-
"how-it-works", "use-cases", "changelog", "cookie-banner", "newsletter"
|
|
54
|
-
]
|
|
55
|
-
|
|
56
|
-
// ============================================================================
|
|
57
|
-
// Helpers
|
|
58
|
-
// ============================================================================
|
|
59
|
-
|
|
60
|
-
const getRoot = (context: any): string => {
|
|
61
|
-
if (context?.directory && context.directory !== "/") return context.directory
|
|
62
|
-
if (context?.worktree && context.worktree !== "/") return context.worktree
|
|
63
|
-
if (context?.cwd && context.cwd !== "/") return context.cwd
|
|
64
|
-
return process.cwd()
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const getCacheDir = (root: string) => path.resolve(root, ".openspec/cache")
|
|
68
|
-
const getBlocksDir = (root: string, registry: string) =>
|
|
69
|
-
path.resolve(getCacheDir(root), "blocks", registry)
|
|
70
|
-
const getIndexPath = (root: string, registry: string) =>
|
|
71
|
-
path.resolve(getCacheDir(root), `${registry}-index.json`)
|
|
72
|
-
|
|
73
|
-
const ensureDir = (dir: string) => {
|
|
74
|
-
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true })
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
const inferCategory = (filename: string): string => {
|
|
78
|
-
const stem = filename.replace(/\.json$/, "")
|
|
79
|
-
for (const prefix of CATEGORY_PREFIXES) {
|
|
80
|
-
if (stem === prefix || stem.startsWith(`${prefix}-`)) return prefix
|
|
81
|
-
}
|
|
82
|
-
return "misc"
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
type IndexEntry = {
|
|
86
|
-
name: string
|
|
87
|
-
filename: string
|
|
88
|
-
category: string
|
|
89
|
-
registry: "shadcn" | "basecn"
|
|
90
|
-
size: number
|
|
91
|
-
sha: string
|
|
92
|
-
raw_url: string
|
|
93
|
-
install_url: string
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
type Index = {
|
|
97
|
-
cached_at: string
|
|
98
|
-
ttl_days: number
|
|
99
|
-
source_repo: string
|
|
100
|
-
total: number
|
|
101
|
-
entries: IndexEntry[]
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
const writeJson = (filePath: string, data: unknown) => {
|
|
105
|
-
ensureDir(path.dirname(filePath))
|
|
106
|
-
const tmp = `${filePath}.tmp`
|
|
107
|
-
fs.writeFileSync(tmp, JSON.stringify(data, null, 2), "utf8")
|
|
108
|
-
fs.renameSync(tmp, filePath)
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
const readJson = <T>(filePath: string): T | null => {
|
|
112
|
-
try {
|
|
113
|
-
if (fs.existsSync(filePath)) {
|
|
114
|
-
return JSON.parse(fs.readFileSync(filePath, "utf8")) as T
|
|
115
|
-
}
|
|
116
|
-
} catch (e) {
|
|
117
|
-
// ignore corrupt cache; will rebuild
|
|
118
|
-
}
|
|
119
|
-
return null
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
const isCacheStale = (index: Index | null): boolean => {
|
|
123
|
-
if (!index) return true
|
|
124
|
-
const cached = new Date(index.cached_at).getTime()
|
|
125
|
-
if (Number.isNaN(cached)) return true
|
|
126
|
-
return Date.now() - cached > TTL_MS
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
// ============================================================================
|
|
130
|
-
// GitHub API fetchers (with simple rate-limit handling)
|
|
131
|
-
// ============================================================================
|
|
132
|
-
|
|
133
|
-
const fetchGithubTree = async (
|
|
134
|
-
apiUrl: string,
|
|
135
|
-
repoLabel: string
|
|
136
|
-
): Promise<IndexEntry[]> => {
|
|
137
|
-
const res = await fetch(apiUrl, {
|
|
138
|
-
headers: {
|
|
139
|
-
"User-Agent": "zugzbot-sdd-catalog/1.0",
|
|
140
|
-
Accept: "application/vnd.github+json"
|
|
141
|
-
}
|
|
142
|
-
})
|
|
143
|
-
|
|
144
|
-
if (!res.ok) {
|
|
145
|
-
if (res.status === 403) {
|
|
146
|
-
throw new Error(
|
|
147
|
-
`GitHub API rate limit hit consultando ${repoLabel}. ` +
|
|
148
|
-
`Espera 1h o usa force_refresh=false con cache existente.`
|
|
149
|
-
)
|
|
150
|
-
}
|
|
151
|
-
if (res.status === 404) {
|
|
152
|
-
throw new Error(
|
|
153
|
-
`Repositorio ${repoLabel} no encontrado o ruta cambiada. ` +
|
|
154
|
-
`Verifica que ${apiUrl} siga vigente.`
|
|
155
|
-
)
|
|
156
|
-
}
|
|
157
|
-
throw new Error(`GitHub API ${res.status} ${res.statusText} consultando ${repoLabel}`)
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
const arr = (await res.json()) as Array<{
|
|
161
|
-
name: string
|
|
162
|
-
size: number
|
|
163
|
-
sha: string
|
|
164
|
-
download_url: string
|
|
165
|
-
}>
|
|
166
|
-
|
|
167
|
-
const registry: "shadcn" | "basecn" =
|
|
168
|
-
repoLabel.includes("basecn") ? "basecn" : "shadcn"
|
|
169
|
-
|
|
170
|
-
return arr
|
|
171
|
-
.filter((f) => f.name.endsWith(".json") && !f.name.startsWith("_"))
|
|
172
|
-
.map((f) => {
|
|
173
|
-
const filename = f.name
|
|
174
|
-
const name = filename.replace(/\.json$/, "")
|
|
175
|
-
const rawUrl =
|
|
176
|
-
registry === "basecn" ? BASECN_RAW(filename) : AKASH_RAW(filename)
|
|
177
|
-
const installUrl =
|
|
178
|
-
registry === "basecn"
|
|
179
|
-
? BASECN_INSTALL(filename)
|
|
180
|
-
: AKASH_INSTALL(filename)
|
|
181
|
-
|
|
182
|
-
return {
|
|
183
|
-
name,
|
|
184
|
-
filename,
|
|
185
|
-
category: inferCategory(filename),
|
|
186
|
-
registry,
|
|
187
|
-
size: f.size,
|
|
188
|
-
sha: f.sha,
|
|
189
|
-
raw_url: rawUrl,
|
|
190
|
-
install_url: installUrl
|
|
191
|
-
}
|
|
192
|
-
})
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
const buildOrLoadIndex = async (
|
|
196
|
-
root: string,
|
|
197
|
-
registry: "shadcn" | "basecn",
|
|
198
|
-
forceRefresh: boolean
|
|
199
|
-
): Promise<{ index: Index; refreshed: boolean; error?: string }> => {
|
|
200
|
-
const indexPath = getIndexPath(root, registry)
|
|
201
|
-
const apiUrl = registry === "basecn" ? BASECN_API : AKASH_API
|
|
202
|
-
const repoLabel = registry === "basecn" ? BASECN_REPO : AKASH_REPO
|
|
203
|
-
|
|
204
|
-
const cached = readJson<Index>(indexPath)
|
|
205
|
-
if (!forceRefresh && !isCacheStale(cached)) {
|
|
206
|
-
return { index: cached!, refreshed: false }
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
try {
|
|
210
|
-
const entries = await fetchGithubTree(apiUrl, repoLabel)
|
|
211
|
-
const index: Index = {
|
|
212
|
-
cached_at: new Date().toISOString(),
|
|
213
|
-
ttl_days: DEFAULT_TTL_DAYS,
|
|
214
|
-
source_repo: repoLabel,
|
|
215
|
-
total: entries.length,
|
|
216
|
-
entries
|
|
217
|
-
}
|
|
218
|
-
writeJson(indexPath, index)
|
|
219
|
-
return { index, refreshed: true }
|
|
220
|
-
} catch (e) {
|
|
221
|
-
if (cached) {
|
|
222
|
-
return {
|
|
223
|
-
index: cached,
|
|
224
|
-
refreshed: false,
|
|
225
|
-
error: `Refresh fallo (${(e as Error).message}); usando cache de ${cached.cached_at}`
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
throw e
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
// ============================================================================
|
|
233
|
-
// Tool: list_blocks
|
|
234
|
-
// ============================================================================
|
|
235
|
-
|
|
236
|
-
type ListResult = {
|
|
237
|
-
status: "SUCCESS" | "ERROR"
|
|
238
|
-
message: string
|
|
239
|
-
registries_queried: Array<"shadcn" | "basecn">
|
|
240
|
-
cached_at?: Record<string, string>
|
|
241
|
-
total?: number
|
|
242
|
-
filtered?: number
|
|
243
|
-
entries?: IndexEntry[]
|
|
244
|
-
errors?: string[]
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
export const list_blocks = tool({
|
|
248
|
-
description:
|
|
249
|
-
"Lista bloques del catalogo externo de Akash (shadcn-ui-blocks y/o basecn). " +
|
|
250
|
-
"Cachea el indice localmente en .openspec/cache/ y lo refresca cada 7 dias (configurable con AKASH_INDEX_TTL_DAYS). " +
|
|
251
|
-
"Filtra por categoria (hero, footer, pricing, faq, dashboard, etc.) y por registry.",
|
|
252
|
-
args: {
|
|
253
|
-
category: tool.schema
|
|
254
|
-
.string()
|
|
255
|
-
.optional()
|
|
256
|
-
.describe(
|
|
257
|
-
"Filtra por categoria exacta (hero, footer, pricing, faq, dashboard, etc). Opcional."
|
|
258
|
-
),
|
|
259
|
-
query: tool.schema
|
|
260
|
-
.string()
|
|
261
|
-
.optional()
|
|
262
|
-
.describe(
|
|
263
|
-
"Busqueda libre por substring sobre name o filename (case-insensitive). Opcional."
|
|
264
|
-
),
|
|
265
|
-
registry: tool.schema
|
|
266
|
-
.enum(["shadcn", "basecn", "both"])
|
|
267
|
-
.optional()
|
|
268
|
-
.default("both")
|
|
269
|
-
.describe(
|
|
270
|
-
"Que catalogo consultar: 'shadcn' (Radix), 'basecn' (Base UI) o 'both' (default)."
|
|
271
|
-
),
|
|
272
|
-
limit: tool.schema
|
|
273
|
-
.number()
|
|
274
|
-
.optional()
|
|
275
|
-
.default(50)
|
|
276
|
-
.describe("Maximo de entradas a devolver (default 50, max 500)."),
|
|
277
|
-
force_refresh: tool.schema
|
|
278
|
-
.boolean()
|
|
279
|
-
.optional()
|
|
280
|
-
.default(false)
|
|
281
|
-
.describe(
|
|
282
|
-
"Si true, ignora el TTL y re-descarga el arbol completo de GitHub API."
|
|
283
|
-
)
|
|
284
|
-
},
|
|
285
|
-
async execute(args, context) {
|
|
286
|
-
const root = getRoot(context)
|
|
287
|
-
const registries: Array<"shadcn" | "basecn"> =
|
|
288
|
-
args.registry === "both" || !args.registry
|
|
289
|
-
? ["shadcn", "basecn"]
|
|
290
|
-
: [args.registry]
|
|
291
|
-
|
|
292
|
-
const allEntries: IndexEntry[] = []
|
|
293
|
-
const cachedAt: Record<string, string> = {}
|
|
294
|
-
const errors: string[] = []
|
|
295
|
-
|
|
296
|
-
for (const reg of registries) {
|
|
297
|
-
try {
|
|
298
|
-
const { index, refreshed, error } = await buildOrLoadIndex(
|
|
299
|
-
root,
|
|
300
|
-
reg,
|
|
301
|
-
args.force_refresh || false
|
|
302
|
-
)
|
|
303
|
-
cachedAt[reg] = index.cached_at
|
|
304
|
-
if (refreshed) {
|
|
305
|
-
// noop; success already
|
|
306
|
-
}
|
|
307
|
-
if (error) errors.push(`[${reg}] ${error}`)
|
|
308
|
-
allEntries.push(...index.entries)
|
|
309
|
-
} catch (e) {
|
|
310
|
-
errors.push(`[${reg}] ${(e as Error).message}`)
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
let filtered = allEntries
|
|
315
|
-
if (args.category) {
|
|
316
|
-
const cat = args.category.toLowerCase()
|
|
317
|
-
filtered = filtered.filter(
|
|
318
|
-
(e) => e.category === cat || e.name.toLowerCase().startsWith(cat + "-")
|
|
319
|
-
)
|
|
320
|
-
}
|
|
321
|
-
if (args.query) {
|
|
322
|
-
const q = args.query.toLowerCase()
|
|
323
|
-
filtered = filtered.filter(
|
|
324
|
-
(e) =>
|
|
325
|
-
e.name.toLowerCase().includes(q) ||
|
|
326
|
-
e.filename.toLowerCase().includes(q)
|
|
327
|
-
)
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
const limit = Math.min(args.limit || 50, 500)
|
|
331
|
-
filtered = filtered.slice(0, limit)
|
|
332
|
-
|
|
333
|
-
const result: ListResult = {
|
|
334
|
-
status: errors.length && allEntries.length === 0 ? "ERROR" : "SUCCESS",
|
|
335
|
-
message:
|
|
336
|
-
errors.length && allEntries.length === 0
|
|
337
|
-
? `No se pudo cargar el catalogo. Errores: ${errors.join("; ")}`
|
|
338
|
-
: `Se encontraron ${filtered.length} bloques (total sin filtro: ${allEntries.length}).`,
|
|
339
|
-
registries_queried: registries,
|
|
340
|
-
cached_at: cachedAt,
|
|
341
|
-
total: allEntries.length,
|
|
342
|
-
filtered: filtered.length,
|
|
343
|
-
entries: filtered
|
|
344
|
-
}
|
|
345
|
-
if (errors.length) result.errors = errors
|
|
346
|
-
return JSON.stringify(result, null, 2)
|
|
347
|
-
}
|
|
348
|
-
})
|
|
349
|
-
|
|
350
|
-
// ============================================================================
|
|
351
|
-
// Tool: get_block
|
|
352
|
-
// ============================================================================
|
|
353
|
-
|
|
354
|
-
type GetResult = {
|
|
355
|
-
status: "SUCCESS" | "ERROR"
|
|
356
|
-
message: string
|
|
357
|
-
block: {
|
|
358
|
-
name: string
|
|
359
|
-
registry: "shadcn" | "basecn"
|
|
360
|
-
category: string
|
|
361
|
-
install_url: string
|
|
362
|
-
install_command: string
|
|
363
|
-
cached_source: boolean
|
|
364
|
-
cached_at: string
|
|
365
|
-
source_files: Array<{
|
|
366
|
-
path: string
|
|
367
|
-
type: string
|
|
368
|
-
target?: string
|
|
369
|
-
content?: string
|
|
370
|
-
}>
|
|
371
|
-
dependencies?: string[]
|
|
372
|
-
notes?: string
|
|
373
|
-
preview_url?: string
|
|
374
|
-
} | null
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
const fetchRaw = async (url: string): Promise<string> => {
|
|
378
|
-
const res = await fetch(url, {
|
|
379
|
-
headers: { "User-Agent": "zugzbot-sdd-catalog/1.0" }
|
|
380
|
-
})
|
|
381
|
-
if (!res.ok) {
|
|
382
|
-
throw new Error(`Fetch ${res.status} ${res.statusText} -> ${url}`)
|
|
383
|
-
}
|
|
384
|
-
return await res.text()
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
const tryParseBlockJson = (raw: string): any => {
|
|
388
|
-
// Algunos bloques Akash envuelven el JSON en JSON.stringify(...) dentro
|
|
389
|
-
// de un .json "doblemente serializado" para shadcn CLI. Manejamos ambos.
|
|
390
|
-
const trimmed = raw.trim()
|
|
391
|
-
try {
|
|
392
|
-
return JSON.parse(trimmed)
|
|
393
|
-
} catch {
|
|
394
|
-
// posible doble encoding
|
|
395
|
-
try {
|
|
396
|
-
return JSON.parse(JSON.parse(trimmed))
|
|
397
|
-
} catch {
|
|
398
|
-
throw new Error(`No se pudo parsear JSON del bloque`)
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
const normalizeBlock = (parsed: any, registry: "shadcn" | "basecn", name: string) => {
|
|
404
|
-
const files: Array<{
|
|
405
|
-
path: string
|
|
406
|
-
type: string
|
|
407
|
-
target?: string
|
|
408
|
-
content?: string
|
|
409
|
-
}> = []
|
|
410
|
-
|
|
411
|
-
const deps: string[] = []
|
|
412
|
-
const installUrl =
|
|
413
|
-
registry === "basecn" ? BASECN_INSTALL(name) : AKASH_INSTALL(name)
|
|
414
|
-
|
|
415
|
-
// Variantes comunes del schema JSON de Akash
|
|
416
|
-
if (Array.isArray(parsed?.files)) {
|
|
417
|
-
for (const f of parsed.files) {
|
|
418
|
-
files.push({
|
|
419
|
-
path: f.path || f.name || "unknown",
|
|
420
|
-
type: f.type || "unknown",
|
|
421
|
-
target: f.target,
|
|
422
|
-
content: f.content || f.code
|
|
423
|
-
})
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
if (Array.isArray(parsed?.dependencies)) deps.push(...parsed.dependencies)
|
|
427
|
-
if (Array.isArray(parsed?.deps)) deps.push(...parsed.deps)
|
|
428
|
-
if (parsed?.registryDependencies && typeof parsed.registryDependencies === "object") {
|
|
429
|
-
for (const [k, v] of Object.entries(parsed.registryDependencies)) {
|
|
430
|
-
deps.push(`${k}: ${v}`)
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
return { files, dependencies: deps, installUrl }
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
export const get_block = tool({
|
|
438
|
-
description:
|
|
439
|
-
"Obtiene el codigo fuente, archivos y dependencias de un bloque especifico " +
|
|
440
|
-
"del catalogo de Akash (shadcn-ui-blocks o basecn). " +
|
|
441
|
-
"Cachea la fuente localmente en .openspec/cache/blocks/<registry>/<name>.json. " +
|
|
442
|
-
"Devuelve ademas el comando `npx shadcn add` listo para ejecutar.",
|
|
443
|
-
args: {
|
|
444
|
-
name: tool.schema
|
|
445
|
-
.string()
|
|
446
|
-
.describe(
|
|
447
|
-
"Nombre del bloque SIN .json (ej: 'hero-06', 'login-01', 'sidebar-07')."
|
|
448
|
-
),
|
|
449
|
-
registry: tool.schema
|
|
450
|
-
.enum(["shadcn", "basecn"])
|
|
451
|
-
.optional()
|
|
452
|
-
.default("shadcn")
|
|
453
|
-
.describe("Catalogo a consultar. Default: 'shadcn'."),
|
|
454
|
-
force_refresh: tool.schema
|
|
455
|
-
.boolean()
|
|
456
|
-
.optional()
|
|
457
|
-
.default(false)
|
|
458
|
-
.describe("Si true, re-descarga la fuente del bloque aunque exista cache.")
|
|
459
|
-
},
|
|
460
|
-
async execute(args, context) {
|
|
461
|
-
const root = getRoot(context)
|
|
462
|
-
const reg = args.registry || "shadcn"
|
|
463
|
-
const filename = `${args.name}.json`
|
|
464
|
-
const cachePath = path.resolve(getBlocksDir(root, reg), filename)
|
|
465
|
-
const rawUrl = reg === "basecn" ? BASECN_RAW(filename) : AKASH_RAW(filename)
|
|
466
|
-
const installUrl = reg === "basecn"
|
|
467
|
-
? BASECN_INSTALL(filename)
|
|
468
|
-
: AKASH_INSTALL(filename)
|
|
469
|
-
|
|
470
|
-
let rawText: string
|
|
471
|
-
let cachedSource = false
|
|
472
|
-
if (!args.force_refresh && fs.existsSync(cachePath)) {
|
|
473
|
-
rawText = fs.readFileSync(cachePath, "utf8")
|
|
474
|
-
cachedSource = true
|
|
475
|
-
} else {
|
|
476
|
-
try {
|
|
477
|
-
rawText = await fetchRaw(rawUrl)
|
|
478
|
-
ensureDir(path.dirname(cachePath))
|
|
479
|
-
fs.writeFileSync(cachePath, rawText, "utf8")
|
|
480
|
-
} catch (e) {
|
|
481
|
-
return JSON.stringify(
|
|
482
|
-
{
|
|
483
|
-
status: "ERROR",
|
|
484
|
-
message: `No se pudo descargar ${rawUrl}: ${(e as Error).message}`,
|
|
485
|
-
block: null
|
|
486
|
-
} satisfies GetResult,
|
|
487
|
-
null,
|
|
488
|
-
2
|
|
489
|
-
)
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
let parsed: any
|
|
494
|
-
try {
|
|
495
|
-
parsed = tryParseBlockJson(rawText)
|
|
496
|
-
} catch (e) {
|
|
497
|
-
return JSON.stringify(
|
|
498
|
-
{
|
|
499
|
-
status: "ERROR",
|
|
500
|
-
message: `Bloque ${args.name} descargado pero no parseable: ${(e as Error).message}`,
|
|
501
|
-
block: null
|
|
502
|
-
} satisfies GetResult,
|
|
503
|
-
null,
|
|
504
|
-
2
|
|
505
|
-
)
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
const { files, dependencies, installUrl: install } = normalizeBlock(
|
|
509
|
-
parsed,
|
|
510
|
-
reg,
|
|
511
|
-
args.name
|
|
512
|
-
)
|
|
513
|
-
|
|
514
|
-
const previewUrl =
|
|
515
|
-
reg === "basecn"
|
|
516
|
-
? `https://basecn.dev/blocks/${args.name}`
|
|
517
|
-
: `https://shadcnui-blocks.com/blocks/${args.name}`
|
|
518
|
-
|
|
519
|
-
const installCommand = `npx shadcn@latest add ${install} --yes`
|
|
520
|
-
|
|
521
|
-
const result: GetResult = {
|
|
522
|
-
status: "SUCCESS",
|
|
523
|
-
message: `Bloque '${args.name}' (${reg}) listo. ${files.length} archivo(s), ${dependencies.length} dependencia(s).`,
|
|
524
|
-
block: {
|
|
525
|
-
name: args.name,
|
|
526
|
-
registry: reg,
|
|
527
|
-
category: inferCategory(filename),
|
|
528
|
-
install_url: install,
|
|
529
|
-
install_command: installCommand,
|
|
530
|
-
cached_source: cachedSource,
|
|
531
|
-
cached_at: new Date().toISOString(),
|
|
532
|
-
source_files: files,
|
|
533
|
-
dependencies,
|
|
534
|
-
notes:
|
|
535
|
-
reg === "basecn"
|
|
536
|
-
? "Bloque Base UI (fork). Verifica que tu proyecto tenga Base UI instalado."
|
|
537
|
-
: "Bloque Radix/shadcn-ui-blocks. Compatible con el stack nextjs-shadcn.",
|
|
538
|
-
preview_url: previewUrl
|
|
539
|
-
}
|
|
540
|
-
}
|
|
541
|
-
return JSON.stringify(result, null, 2)
|
|
542
|
-
}
|
|
543
|
-
})
|
|
544
|
-
|
|
545
|
-
// ============================================================================
|
|
546
|
-
// Tool: warm_index (utilidad para bootstrap)
|
|
547
|
-
// ============================================================================
|
|
548
|
-
|
|
549
|
-
type WarmResult = {
|
|
550
|
-
status: "SUCCESS" | "ERROR"
|
|
551
|
-
message: string
|
|
552
|
-
warmed: string[]
|
|
553
|
-
errors: string[]
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
export const warm_index = tool({
|
|
557
|
-
description:
|
|
558
|
-
"Pre-calienta (descarga) los indices de Akash y/o Basecn para evitar la latencia " +
|
|
559
|
-
"del primer list_blocks. Ideal de llamar al bootstrap del proyecto o al inicio de F0. " +
|
|
560
|
-
"Idempotente: si el cache existe y es fresco (<7d), no re-descarga.",
|
|
561
|
-
args: {
|
|
562
|
-
registry: tool.schema
|
|
563
|
-
.enum(["shadcn", "basecn", "both"])
|
|
564
|
-
.optional()
|
|
565
|
-
.default("both")
|
|
566
|
-
.describe("Que catalogos pre-calentar.")
|
|
567
|
-
},
|
|
568
|
-
async execute(args, context) {
|
|
569
|
-
const root = getRoot(context)
|
|
570
|
-
const registries: Array<"shadcn" | "basecn"> =
|
|
571
|
-
args.registry === "both" || !args.registry
|
|
572
|
-
? ["shadcn", "basecn"]
|
|
573
|
-
: [args.registry]
|
|
574
|
-
|
|
575
|
-
const warmed: string[] = []
|
|
576
|
-
const errors: string[] = []
|
|
577
|
-
|
|
578
|
-
for (const reg of registries) {
|
|
579
|
-
try {
|
|
580
|
-
const { refreshed, index } = await buildOrLoadIndex(root, reg, false)
|
|
581
|
-
if (refreshed) warmed.push(`${reg} (re-descargado, ${index.total} bloques)`)
|
|
582
|
-
else warmed.push(`${reg} (cache fresco de ${index.cached_at})`)
|
|
583
|
-
} catch (e) {
|
|
584
|
-
errors.push(`[${reg}] ${(e as Error).message}`)
|
|
585
|
-
}
|
|
586
|
-
}
|
|
587
|
-
|
|
588
|
-
const result: WarmResult = {
|
|
589
|
-
status: errors.length && warmed.length === 0 ? "ERROR" : "SUCCESS",
|
|
590
|
-
message: `Indices: ${warmed.length} listos, ${errors.length} errores.`,
|
|
591
|
-
warmed,
|
|
592
|
-
errors
|
|
593
|
-
}
|
|
594
|
-
return JSON.stringify(result, null, 2)
|
|
595
|
-
}
|
|
596
|
-
})
|