constellai 0.3.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/.next/BUILD_ID +1 -0
- package/.next/app-path-routes-manifest.json +54 -0
- package/.next/build-manifest.json +20 -0
- package/.next/diagnostics/build-diagnostics.json +6 -0
- package/.next/diagnostics/framework.json +1 -0
- package/.next/export-marker.json +6 -0
- package/.next/images-manifest.json +68 -0
- package/.next/next-minimal-server.js.nft.json +1 -0
- package/.next/next-server.js.nft.json +1 -0
- package/.next/package.json +1 -0
- package/.next/prerender-manifest.json +36 -0
- package/.next/react-loadable-manifest.json +14 -0
- package/.next/required-server-files.js +346 -0
- package/.next/required-server-files.json +346 -0
- package/.next/routes-manifest.json +368 -0
- package/.next/server/app/(app)/activity/page.js +2 -0
- package/.next/server/app/(app)/activity/page.js.nft.json +1 -0
- package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/agents/[handle]/page.js +18 -0
- package/.next/server/app/(app)/agents/[handle]/page.js.nft.json +1 -0
- package/.next/server/app/(app)/agents/[handle]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/code/page.js +2 -0
- package/.next/server/app/(app)/code/page.js.nft.json +1 -0
- package/.next/server/app/(app)/code/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/config/page.js +2 -0
- package/.next/server/app/(app)/config/page.js.nft.json +1 -0
- package/.next/server/app/(app)/config/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/costs/page.js +2 -0
- package/.next/server/app/(app)/costs/page.js.nft.json +1 -0
- package/.next/server/app/(app)/costs/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/cron/page.js +2 -0
- package/.next/server/app/(app)/cron/page.js.nft.json +1 -0
- package/.next/server/app/(app)/cron/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/dashboard/page.js +2 -0
- package/.next/server/app/(app)/dashboard/page.js.nft.json +1 -0
- package/.next/server/app/(app)/dashboard/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/design/page.js +354 -0
- package/.next/server/app/(app)/design/page.js.nft.json +1 -0
- package/.next/server/app/(app)/design/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/docs/[id]/page.js +2 -0
- package/.next/server/app/(app)/docs/[id]/page.js.nft.json +1 -0
- package/.next/server/app/(app)/docs/[id]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/docs/page.js +2 -0
- package/.next/server/app/(app)/docs/page.js.nft.json +1 -0
- package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/github/page.js +2 -0
- package/.next/server/app/(app)/github/page.js.nft.json +1 -0
- package/.next/server/app/(app)/github/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/goals/page.js +2 -0
- package/.next/server/app/(app)/goals/page.js.nft.json +1 -0
- package/.next/server/app/(app)/goals/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/inbox/page.js +2 -0
- package/.next/server/app/(app)/inbox/page.js.nft.json +1 -0
- package/.next/server/app/(app)/inbox/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/knowledge/page.js +3 -0
- package/.next/server/app/(app)/knowledge/page.js.nft.json +1 -0
- package/.next/server/app/(app)/knowledge/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/models/page.js +2 -0
- package/.next/server/app/(app)/models/page.js.nft.json +1 -0
- package/.next/server/app/(app)/models/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/notifications/page.js +2 -0
- package/.next/server/app/(app)/notifications/page.js.nft.json +1 -0
- package/.next/server/app/(app)/notifications/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/org/page.js +22 -0
- package/.next/server/app/(app)/org/page.js.nft.json +1 -0
- package/.next/server/app/(app)/org/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/organizations/page.js +2 -0
- package/.next/server/app/(app)/organizations/page.js.nft.json +1 -0
- package/.next/server/app/(app)/organizations/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/page.js +3 -0
- package/.next/server/app/(app)/page.js.nft.json +1 -0
- package/.next/server/app/(app)/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/planner/page.js +12 -0
- package/.next/server/app/(app)/planner/page.js.nft.json +1 -0
- package/.next/server/app/(app)/planner/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/plugins/page.js +2 -0
- package/.next/server/app/(app)/plugins/page.js.nft.json +1 -0
- package/.next/server/app/(app)/plugins/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/pm/page.js +2 -0
- package/.next/server/app/(app)/pm/page.js.nft.json +1 -0
- package/.next/server/app/(app)/pm/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/prepare-deploy/page.js +19 -0
- package/.next/server/app/(app)/prepare-deploy/page.js.nft.json +1 -0
- package/.next/server/app/(app)/prepare-deploy/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/profile/page.js +2 -0
- package/.next/server/app/(app)/profile/page.js.nft.json +1 -0
- package/.next/server/app/(app)/profile/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/pulse/page.js +2 -0
- package/.next/server/app/(app)/pulse/page.js.nft.json +1 -0
- package/.next/server/app/(app)/pulse/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/reports/[id]/page.js +3 -0
- package/.next/server/app/(app)/reports/[id]/page.js.nft.json +1 -0
- package/.next/server/app/(app)/reports/[id]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/reports/page.js +5 -0
- package/.next/server/app/(app)/reports/page.js.nft.json +1 -0
- package/.next/server/app/(app)/reports/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/routines/page.js +2 -0
- package/.next/server/app/(app)/routines/page.js.nft.json +1 -0
- package/.next/server/app/(app)/routines/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/search/page.js +2 -0
- package/.next/server/app/(app)/search/page.js.nft.json +1 -0
- package/.next/server/app/(app)/search/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/security/page.js +2 -0
- package/.next/server/app/(app)/security/page.js.nft.json +1 -0
- package/.next/server/app/(app)/security/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/skills/page.js +18 -0
- package/.next/server/app/(app)/skills/page.js.nft.json +1 -0
- package/.next/server/app/(app)/skills/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/tasks/page.js +2 -0
- package/.next/server/app/(app)/tasks/page.js.nft.json +1 -0
- package/.next/server/app/(app)/tasks/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/test-dev/page.js +2 -0
- package/.next/server/app/(app)/test-dev/page.js.nft.json +1 -0
- package/.next/server/app/(app)/test-dev/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/update/page.js +13 -0
- package/.next/server/app/(app)/update/page.js.nft.json +1 -0
- package/.next/server/app/(app)/update/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(auth)/login/page.js +2 -0
- package/.next/server/app/(auth)/login/page.js.nft.json +1 -0
- package/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(auth)/onboarding/page.js +2 -0
- package/.next/server/app/(auth)/onboarding/page.js.nft.json +1 -0
- package/.next/server/app/(auth)/onboarding/page_client-reference-manifest.js +1 -0
- package/.next/server/app/_global-error/page.js +32 -0
- package/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -0
- package/.next/server/app/_global-error.html +1 -0
- package/.next/server/app/_global-error.meta +16 -0
- package/.next/server/app/_global-error.rsc +15 -0
- package/.next/server/app/_global-error.segments/_full.segment.rsc +15 -0
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_index.segment.rsc +6 -0
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/.next/server/app/_not-found/page.js +2 -0
- package/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
- package/.next/server/app/api/auth/[...all]/route.js +1 -0
- package/.next/server/app/api/auth/[...all]/route.js.nft.json +1 -0
- package/.next/server/app/api/auth/[...all]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/cron/tick/route.js +53 -0
- package/.next/server/app/api/cron/tick/route.js.nft.json +1 -0
- package/.next/server/app/api/cron/tick/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/health/route.js +1 -0
- package/.next/server/app/api/health/route.js.nft.json +1 -0
- package/.next/server/app/api/health/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/locks/acquire/route.js +1 -0
- package/.next/server/app/api/locks/acquire/route.js.nft.json +1 -0
- package/.next/server/app/api/locks/acquire/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models/progress/route.js +1 -0
- package/.next/server/app/api/models/progress/route.js.nft.json +1 -0
- package/.next/server/app/api/models/progress/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/passkey/authenticate/options/route.js +1 -0
- package/.next/server/app/api/passkey/authenticate/options/route.js.nft.json +1 -0
- package/.next/server/app/api/passkey/authenticate/options/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/passkey/authenticate/verify/route.js +1 -0
- package/.next/server/app/api/passkey/authenticate/verify/route.js.nft.json +1 -0
- package/.next/server/app/api/passkey/authenticate/verify/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/passkey/register/options/route.js +1 -0
- package/.next/server/app/api/passkey/register/options/route.js.nft.json +1 -0
- package/.next/server/app/api/passkey/register/options/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/passkey/register/verify/route.js +1 -0
- package/.next/server/app/api/passkey/register/verify/route.js.nft.json +1 -0
- package/.next/server/app/api/passkey/register/verify/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/stream/route.js +4 -0
- package/.next/server/app/api/stream/route.js.nft.json +1 -0
- package/.next/server/app/api/stream/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sync/file/route.js +2 -0
- package/.next/server/app/api/sync/file/route.js.nft.json +1 -0
- package/.next/server/app/api/sync/file/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/telegram/poll/route.js +133 -0
- package/.next/server/app/api/telegram/poll/route.js.nft.json +1 -0
- package/.next/server/app/api/telegram/poll/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/upload/route.js +1 -0
- package/.next/server/app/api/upload/route.js.nft.json +1 -0
- package/.next/server/app/api/upload/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/v1/[[...path]]/route.js +1 -0
- package/.next/server/app/api/v1/[[...path]]/route.js.nft.json +1 -0
- package/.next/server/app/api/v1/[[...path]]/route_client-reference-manifest.js +1 -0
- package/.next/server/app-paths-manifest.json +54 -0
- package/.next/server/chunks/1249.js +910 -0
- package/.next/server/chunks/1388.js +1 -0
- package/.next/server/chunks/1572.js +1 -0
- package/.next/server/chunks/1591.js +24 -0
- package/.next/server/chunks/1619.js +188 -0
- package/.next/server/chunks/162.js +1 -0
- package/.next/server/chunks/1845.js +462 -0
- package/.next/server/chunks/2341.js +1 -0
- package/.next/server/chunks/2517.js +1 -0
- package/.next/server/chunks/259.js +119 -0
- package/.next/server/chunks/2599.js +1 -0
- package/.next/server/chunks/260.js +1 -0
- package/.next/server/chunks/2867.js +147 -0
- package/.next/server/chunks/288.js +1 -0
- package/.next/server/chunks/2939.js +12 -0
- package/.next/server/chunks/2960.js +14 -0
- package/.next/server/chunks/3050.js +18 -0
- package/.next/server/chunks/3056.js +1 -0
- package/.next/server/chunks/3131.js +1 -0
- package/.next/server/chunks/3234.js +869 -0
- package/.next/server/chunks/3243.js +67 -0
- package/.next/server/chunks/3266.js +15 -0
- package/.next/server/chunks/3440.js +1 -0
- package/.next/server/chunks/3550.js +1 -0
- package/.next/server/chunks/3609.js +2 -0
- package/.next/server/chunks/3882.js +417 -0
- package/.next/server/chunks/4302.js +26 -0
- package/.next/server/chunks/4616.js +479 -0
- package/.next/server/chunks/4619.js +1 -0
- package/.next/server/chunks/4679.js +1 -0
- package/.next/server/chunks/4804.js +1 -0
- package/.next/server/chunks/4832.js +2 -0
- package/.next/server/chunks/4979.js +67 -0
- package/.next/server/chunks/5060.js +1 -0
- package/.next/server/chunks/5181.js +1 -0
- package/.next/server/chunks/5278.js +1 -0
- package/.next/server/chunks/5614.js +1 -0
- package/.next/server/chunks/6431.js +1 -0
- package/.next/server/chunks/6479.js +1 -0
- package/.next/server/chunks/658.js +14 -0
- package/.next/server/chunks/6658.js +1 -0
- package/.next/server/chunks/6706.js +1 -0
- package/.next/server/chunks/6719.js +1 -0
- package/.next/server/chunks/683.js +1 -0
- package/.next/server/chunks/6873.js +1 -0
- package/.next/server/chunks/7037.js +1 -0
- package/.next/server/chunks/73.js +17 -0
- package/.next/server/chunks/7336.js +1 -0
- package/.next/server/chunks/7514.js +1 -0
- package/.next/server/chunks/7589.js +22 -0
- package/.next/server/chunks/7622.js +1 -0
- package/.next/server/chunks/7778.js +1 -0
- package/.next/server/chunks/7912.js +1 -0
- package/.next/server/chunks/7949.js +1 -0
- package/.next/server/chunks/7971.js +1 -0
- package/.next/server/chunks/7976.js +1 -0
- package/.next/server/chunks/7989.js +1 -0
- package/.next/server/chunks/834.js +4 -0
- package/.next/server/chunks/8497.js +1 -0
- package/.next/server/chunks/850.js +1 -0
- package/.next/server/chunks/8561.js +22 -0
- package/.next/server/chunks/8623.js +1 -0
- package/.next/server/chunks/8762.js +15 -0
- package/.next/server/chunks/8823.js +85 -0
- package/.next/server/chunks/9459.js +21 -0
- package/.next/server/chunks/9676.js +1 -0
- package/.next/server/chunks/9680.js +1 -0
- package/.next/server/chunks/9783.js +22 -0
- package/.next/server/chunks/9969.js +3 -0
- package/.next/server/functions-config-manifest.json +18 -0
- package/.next/server/instrumentation.js +1 -0
- package/.next/server/instrumentation.js.nft.json +1 -0
- package/.next/server/interception-route-rewrite-manifest.js +1 -0
- package/.next/server/middleware-build-manifest.js +1 -0
- package/.next/server/middleware-manifest.json +6 -0
- package/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/.next/server/middleware.js +18 -0
- package/.next/server/middleware.js.nft.json +1 -0
- package/.next/server/next-font-manifest.js +1 -0
- package/.next/server/next-font-manifest.json +1 -0
- package/.next/server/pages/500.html +1 -0
- package/.next/server/pages-manifest.json +3 -0
- package/.next/server/prefetch-hints.json +1 -0
- package/.next/server/server-reference-manifest.js +1 -0
- package/.next/server/server-reference-manifest.json +1 -0
- package/.next/server/webpack-runtime.js +1 -0
- package/.next/static/T0ETI55t9tc9pi5i_CGOe/_buildManifest.js +1 -0
- package/.next/static/T0ETI55t9tc9pi5i_CGOe/_ssgManifest.js +1 -0
- package/.next/static/chunks/2237-2a30470119df8616.js +1 -0
- package/.next/static/chunks/2320-fc8b39380e69d465.js +2 -0
- package/.next/static/chunks/23550918-ff694f70f4b0648c.js +1 -0
- package/.next/static/chunks/3219-9684aa1c634212de.js +1 -0
- package/.next/static/chunks/4263-adecb5b466380b6e.js +1 -0
- package/.next/static/chunks/5920.6451a68b63918988.js +1 -0
- package/.next/static/chunks/6834-4759af1ce7d95fb6.js +32 -0
- package/.next/static/chunks/7268-ac23e9901bf535af.js +4 -0
- package/.next/static/chunks/7509.721cd47a931c5518.js +1 -0
- package/.next/static/chunks/7555-d2209e697b0a798e.js +1 -0
- package/.next/static/chunks/8370-db3280cb1ba67bcd.js +12 -0
- package/.next/static/chunks/9219-4a39a98b5502d9d1.js +1 -0
- package/.next/static/chunks/9562-4b50b4e408bc0a42.js +1 -0
- package/.next/static/chunks/9690-53d5222618cbeddb.js +1 -0
- package/.next/static/chunks/9846-c853e71d4d8fbb80.js +1 -0
- package/.next/static/chunks/9950-703805abe4653068.js +1 -0
- package/.next/static/chunks/app/(app)/activity/page-f06add40c3785686.js +1 -0
- package/.next/static/chunks/app/(app)/agents/[handle]/page-2ddf1f9908c73eb1.js +1 -0
- package/.next/static/chunks/app/(app)/code/page-ef9dceeae728b9d1.js +1 -0
- package/.next/static/chunks/app/(app)/config/page-496e569efd86e75c.js +1 -0
- package/.next/static/chunks/app/(app)/costs/page-675f542fdd517bee.js +1 -0
- package/.next/static/chunks/app/(app)/cron/page-80a87a05492c0ffe.js +1 -0
- package/.next/static/chunks/app/(app)/dashboard/page-4bddca6808a3be40.js +1 -0
- package/.next/static/chunks/app/(app)/design/page-e0fd071fb7144c46.js +558 -0
- package/.next/static/chunks/app/(app)/docs/[id]/page-f05e389793127500.js +1 -0
- package/.next/static/chunks/app/(app)/docs/page-f6bbf5c6b9104cbe.js +1 -0
- package/.next/static/chunks/app/(app)/error-988cd28480809861.js +1 -0
- package/.next/static/chunks/app/(app)/github/page-5297c806ce6afa9b.js +1 -0
- package/.next/static/chunks/app/(app)/goals/page-3fa53e8541c8e9fc.js +1 -0
- package/.next/static/chunks/app/(app)/inbox/page-a2a74b5f6a6c326e.js +12 -0
- package/.next/static/chunks/app/(app)/knowledge/page-fb11b2bfa9ecd9a4.js +1 -0
- package/.next/static/chunks/app/(app)/layout-b74cd565406964d5.js +1 -0
- package/.next/static/chunks/app/(app)/models/page-c8acfc3d353fd9d0.js +1 -0
- package/.next/static/chunks/app/(app)/notifications/page-05a094d02d23f455.js +12 -0
- package/.next/static/chunks/app/(app)/org/page-883d6aa98b593c6b.js +12 -0
- package/.next/static/chunks/app/(app)/organizations/page-4595e8fa86ca3c01.js +1 -0
- package/.next/static/chunks/app/(app)/page-21d47e76fe9a6c63.js +1 -0
- package/.next/static/chunks/app/(app)/planner/page-1fc32005d05bbe69.js +1 -0
- package/.next/static/chunks/app/(app)/plugins/page-454613b9f5cb1d3d.js +1 -0
- package/.next/static/chunks/app/(app)/pm/page-8473da305f4c2880.js +1 -0
- package/.next/static/chunks/app/(app)/prepare-deploy/page-3ba948f5557dea38.js +1 -0
- package/.next/static/chunks/app/(app)/profile/page-05f25516fea20762.js +1 -0
- package/.next/static/chunks/app/(app)/pulse/page-540a80dbaf61453d.js +1 -0
- package/.next/static/chunks/app/(app)/reports/[id]/page-80a87a05492c0ffe.js +1 -0
- package/.next/static/chunks/app/(app)/reports/page-de1e69ca09d7cabb.js +1 -0
- package/.next/static/chunks/app/(app)/routines/page-83085c9ba3584ec9.js +1 -0
- package/.next/static/chunks/app/(app)/search/page-8769fd9075e21e36.js +1 -0
- package/.next/static/chunks/app/(app)/security/page-1baa88dc61c3fab8.js +1 -0
- package/.next/static/chunks/app/(app)/skills/page-fa75c290b456c629.js +1 -0
- package/.next/static/chunks/app/(app)/tasks/page-1eb62689244c8a79.js +1 -0
- package/.next/static/chunks/app/(app)/test-dev/page-c496b31087389906.js +1 -0
- package/.next/static/chunks/app/(app)/update/page-5a217e6479bc5289.js +1 -0
- package/.next/static/chunks/app/(auth)/login/page-ad50e3112f35f41c.js +1 -0
- package/.next/static/chunks/app/(auth)/onboarding/page-ab05f02e868c9eec.js +1 -0
- package/.next/static/chunks/app/_global-error/page-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/app/_not-found/page-dc38b02aebeab535.js +1 -0
- package/.next/static/chunks/app/api/auth/[...all]/route-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/app/api/cron/tick/route-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/app/api/health/route-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/app/api/locks/acquire/route-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/app/api/models/progress/route-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/app/api/passkey/authenticate/options/route-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/app/api/passkey/authenticate/verify/route-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/app/api/passkey/register/options/route-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/app/api/passkey/register/verify/route-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/app/api/stream/route-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/app/api/sync/file/route-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/app/api/telegram/poll/route-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/app/api/upload/route-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/app/api/v1/[[...path]]/route-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/app/error-09899a13c38b6e89.js +1 -0
- package/.next/static/chunks/app/global-error-c2ea8fef715f226d.js +1 -0
- package/.next/static/chunks/app/layout-e6008e66aea1a849.js +1 -0
- package/.next/static/chunks/framework-4b2c6b6043dd203f.js +1 -0
- package/.next/static/chunks/main-722e16032e7764d1.js +5 -0
- package/.next/static/chunks/main-app-761880af2b6f1962.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-eacef2b697bd0982.js +1 -0
- package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/.next/static/chunks/webpack-222e3894b78c67db.js +1 -0
- package/.next/static/css/e7b568809d5d9c72.css +1 -0
- package/.next/trace-build +1 -0
- package/.next/types/app/(app)/activity/page.ts +87 -0
- package/.next/types/app/(app)/agents/[handle]/page.ts +87 -0
- package/.next/types/app/(app)/code/page.ts +87 -0
- package/.next/types/app/(app)/config/page.ts +87 -0
- package/.next/types/app/(app)/costs/page.ts +87 -0
- package/.next/types/app/(app)/cron/page.ts +87 -0
- package/.next/types/app/(app)/dashboard/page.ts +87 -0
- package/.next/types/app/(app)/design/page.ts +87 -0
- package/.next/types/app/(app)/docs/[id]/page.ts +87 -0
- package/.next/types/app/(app)/docs/page.ts +87 -0
- package/.next/types/app/(app)/github/page.ts +87 -0
- package/.next/types/app/(app)/goals/page.ts +87 -0
- package/.next/types/app/(app)/inbox/page.ts +87 -0
- package/.next/types/app/(app)/knowledge/page.ts +87 -0
- package/.next/types/app/(app)/models/page.ts +87 -0
- package/.next/types/app/(app)/notifications/page.ts +87 -0
- package/.next/types/app/(app)/org/page.ts +87 -0
- package/.next/types/app/(app)/organizations/page.ts +87 -0
- package/.next/types/app/(app)/page.ts +87 -0
- package/.next/types/app/(app)/planner/page.ts +87 -0
- package/.next/types/app/(app)/plugins/page.ts +87 -0
- package/.next/types/app/(app)/pm/page.ts +87 -0
- package/.next/types/app/(app)/prepare-deploy/page.ts +87 -0
- package/.next/types/app/(app)/profile/page.ts +87 -0
- package/.next/types/app/(app)/pulse/page.ts +87 -0
- package/.next/types/app/(app)/reports/[id]/page.ts +87 -0
- package/.next/types/app/(app)/reports/page.ts +87 -0
- package/.next/types/app/(app)/routines/page.ts +87 -0
- package/.next/types/app/(app)/search/page.ts +87 -0
- package/.next/types/app/(app)/security/page.ts +87 -0
- package/.next/types/app/(app)/skills/page.ts +87 -0
- package/.next/types/app/(app)/tasks/page.ts +87 -0
- package/.next/types/app/(app)/test-dev/page.ts +87 -0
- package/.next/types/app/(app)/update/page.ts +87 -0
- package/.next/types/app/(auth)/login/page.ts +87 -0
- package/.next/types/app/(auth)/onboarding/page.ts +87 -0
- package/.next/types/app/api/auth/[...all]/route.ts +351 -0
- package/.next/types/app/api/cron/tick/route.ts +351 -0
- package/.next/types/app/api/health/route.ts +351 -0
- package/.next/types/app/api/locks/acquire/route.ts +351 -0
- package/.next/types/app/api/models/progress/route.ts +351 -0
- package/.next/types/app/api/passkey/authenticate/options/route.ts +351 -0
- package/.next/types/app/api/passkey/authenticate/verify/route.ts +351 -0
- package/.next/types/app/api/passkey/register/options/route.ts +351 -0
- package/.next/types/app/api/passkey/register/verify/route.ts +351 -0
- package/.next/types/app/api/stream/route.ts +351 -0
- package/.next/types/app/api/sync/file/route.ts +351 -0
- package/.next/types/app/api/telegram/poll/route.ts +351 -0
- package/.next/types/app/api/upload/route.ts +351 -0
- package/.next/types/app/api/v1/[[...path]]/route.ts +351 -0
- package/.next/types/cache-life.d.ts +145 -0
- package/.next/types/link.d.ts +211 -0
- package/.next/types/package.json +1 -0
- package/.next/types/routes.d.ts +121 -0
- package/.next/types/validator.ts +520 -0
- package/CHANGELOG.md +1084 -0
- package/LICENSE +21 -0
- package/README.md +477 -0
- package/README.pt-BR.md +487 -0
- package/bin/constella-update.mjs +131 -0
- package/bin/constella.mjs +455 -0
- package/bin/guard-hook.mjs +44 -0
- package/bin/lock-hook.mjs +49 -0
- package/bin/worker.mjs +142 -0
- package/docs/UPDATE.md +150 -0
- package/docs/assets/arch-orbit.svg +56 -0
- package/docs/assets/blackhole.svg +37 -0
- package/docs/assets/divider-orbit.svg +23 -0
- package/docs/assets/hero-constella.svg +72 -0
- package/docs/assets/screens/ceo-planner-specs.png +0 -0
- package/docs/assets/screens/ceo-planner.png +0 -0
- package/docs/assets/screens/dashboard.png +0 -0
- package/docs/assets/screens/design.png +0 -0
- package/docs/assets/screens/home.png +0 -0
- package/docs/assets/screens/knowledge-blocks.png +0 -0
- package/docs/assets/screens/knowledge.png +0 -0
- package/docs/assets/screens/models.png +0 -0
- package/docs/assets/screens/skills.png +0 -0
- package/docs/assets/screens/telegram.png +0 -0
- package/docs/en/AGENTS.md +279 -0
- package/docs/en/AI_ARCHITECTURE.md +373 -0
- package/docs/en/ARCHITECTURE.md +334 -0
- package/docs/en/CHAT_COMMANDS.md +305 -0
- package/docs/en/CONFIGURATION.md +340 -0
- package/docs/en/DEPLOY.md +341 -0
- package/docs/en/DESIGN.md +214 -0
- package/docs/en/DM.md +297 -0
- package/docs/en/FAQ.md +259 -0
- package/docs/en/GITHUB.md +341 -0
- package/docs/en/GOALS_SPECS_ISSUES.md +303 -0
- package/docs/en/INBOX.md +340 -0
- package/docs/en/INSTALLATION.md +374 -0
- package/docs/en/KB_AGENT.md +305 -0
- package/docs/en/KB_RAG.md +356 -0
- package/docs/en/MCP.md +313 -0
- package/docs/en/MEMORY_RAG.md +289 -0
- package/docs/en/MODELS.md +341 -0
- package/docs/en/ONBOARDING.md +327 -0
- package/docs/en/OPERATIONS.md +212 -0
- package/docs/en/PLUGINS.md +290 -0
- package/docs/en/PORTABLE_MODE.md +391 -0
- package/docs/en/PO_AGENT.md +379 -0
- package/docs/en/PREPARE_DEPLOY.md +308 -0
- package/docs/en/PROJECT_STACKS.md +258 -0
- package/docs/en/PUBLIC_API.md +315 -0
- package/docs/en/PUBLISHING.md +343 -0
- package/docs/en/README.md +98 -0
- package/docs/en/RELEASE_SMOKE.md +92 -0
- package/docs/en/SECURITY.md +280 -0
- package/docs/en/SKILLS.md +349 -0
- package/docs/en/START_MODE.md +285 -0
- package/docs/en/SYNCED_BLOCKS.md +320 -0
- package/docs/en/TEAM_ROOM.md +285 -0
- package/docs/en/TELEGRAM.md +294 -0
- package/docs/en/TEST_DEV.md +324 -0
- package/docs/en/TROUBLESHOOTING.md +294 -0
- package/docs/en/UPDATE.md +320 -0
- package/docs/en/VPS_MODE.md +405 -0
- package/docs/en/WORKFLOW.md +321 -0
- package/docs/pt/AGENTS.md +279 -0
- package/docs/pt/AI_ARCHITECTURE.md +373 -0
- package/docs/pt/ARCHITECTURE.md +334 -0
- package/docs/pt/CHAT_COMMANDS.md +307 -0
- package/docs/pt/CONFIGURATION.md +340 -0
- package/docs/pt/DEPLOY.md +341 -0
- package/docs/pt/DESIGN.md +215 -0
- package/docs/pt/DM.md +297 -0
- package/docs/pt/FAQ.md +259 -0
- package/docs/pt/GITHUB.md +341 -0
- package/docs/pt/GOALS_SPECS_ISSUES.md +303 -0
- package/docs/pt/INBOX.md +340 -0
- package/docs/pt/INSTALLATION.md +374 -0
- package/docs/pt/KB_AGENT.md +305 -0
- package/docs/pt/KB_RAG.md +356 -0
- package/docs/pt/MCP.md +313 -0
- package/docs/pt/MEMORY_RAG.md +289 -0
- package/docs/pt/MODELS.md +341 -0
- package/docs/pt/ONBOARDING.md +327 -0
- package/docs/pt/OPERATIONS.md +211 -0
- package/docs/pt/PLUGINS.md +290 -0
- package/docs/pt/PORTABLE_MODE.md +391 -0
- package/docs/pt/PO_AGENT.md +379 -0
- package/docs/pt/PREPARE_DEPLOY.md +308 -0
- package/docs/pt/PROJECT_STACKS.md +258 -0
- package/docs/pt/PUBLIC_API.md +315 -0
- package/docs/pt/PUBLISHING.md +343 -0
- package/docs/pt/README.md +98 -0
- package/docs/pt/RELEASE_SMOKE.md +94 -0
- package/docs/pt/SECURITY.md +280 -0
- package/docs/pt/SKILLS.md +349 -0
- package/docs/pt/START_MODE.md +284 -0
- package/docs/pt/SYNCED_BLOCKS.md +320 -0
- package/docs/pt/TEAM_ROOM.md +285 -0
- package/docs/pt/TELEGRAM.md +294 -0
- package/docs/pt/TEST_DEV.md +324 -0
- package/docs/pt/TROUBLESHOOTING.md +294 -0
- package/docs/pt/UPDATE.md +320 -0
- package/docs/pt/VPS_MODE.md +405 -0
- package/docs/pt/WORKFLOW.md +321 -0
- package/drizzle/0000_regular_nightshade.sql +644 -0
- package/drizzle/0001_mixed_zombie.sql +106 -0
- package/drizzle/0002_flimsy_kree.sql +48 -0
- package/drizzle/meta/0000_snapshot.json +4650 -0
- package/drizzle/meta/0001_snapshot.json +5418 -0
- package/drizzle/meta/0002_snapshot.json +5753 -0
- package/drizzle/meta/_journal.json +27 -0
- package/drizzle.config.mjs +16 -0
- package/next.config.mjs +21 -0
- package/package.json +139 -0
- package/scripts/clean-repo.mjs +20 -0
- package/scripts/dev-all.mjs +46 -0
- package/scripts/i18n-parity.mjs +57 -0
- package/scripts/install.sh +97 -0
- package/scripts/mcp-server.mjs +100 -0
- package/scripts/postbuild.mjs +11 -0
- package/scripts/postinstall.mjs +14 -0
- package/scripts/publish-public.mjs +116 -0
- package/scripts/smoke-login.mjs +138 -0
- package/scripts/start-all.mjs +45 -0
- package/scripts/trim-next.mjs +23 -0
- package/scripts/vps-clean.sh +66 -0
- package/scripts/vps-install.sh +84 -0
- package/scripts/vps-update.sh +28 -0
- package/skills/CONTRIBUTING.md +122 -0
- package/skills/COVERAGE.md +129 -0
- package/skills/INDEX.json +3443 -0
- package/skills/README.md +57 -0
- package/skills/design/agentic/DESIGN.md +55 -0
- package/skills/design/agentic/SKILL.md +89 -0
- package/skills/design/ai-audio-collection-playbook/SKILL.md +48 -0
- package/skills/design/algorithmic-art/LICENSE.txt +202 -0
- package/skills/design/algorithmic-art/SKILL.md +405 -0
- package/skills/design/algorithmic-art/templates/generator_template.js +223 -0
- package/skills/design/algorithmic-art/templates/viewer.html +599 -0
- package/skills/design/animation-motion/SKILL.md +60 -0
- package/skills/design/answers-surface-playbook/SKILL.md +102 -0
- package/skills/design/answers-surface-playbook/example.html +517 -0
- package/skills/design/ant/DESIGN.md +55 -0
- package/skills/design/ant/SKILL.md +89 -0
- package/skills/design/apple-interface-guidelines-playbook/SKILL.md +48 -0
- package/skills/design/application/DESIGN.md +55 -0
- package/skills/design/application/SKILL.md +84 -0
- package/skills/design/artistic/DESIGN.md +55 -0
- package/skills/design/artistic/SKILL.md +89 -0
- package/skills/design/bento/DESIGN.md +55 -0
- package/skills/design/bento/SKILL.md +83 -0
- package/skills/design/bold/DESIGN.md +55 -0
- package/skills/design/bold/SKILL.md +83 -0
- package/skills/design/brand-guidelines/LICENSE.txt +202 -0
- package/skills/design/brand-guidelines/SKILL.md +73 -0
- package/skills/design/brutalism/DESIGN.md +55 -0
- package/skills/design/brutalism/SKILL.md +97 -0
- package/skills/design/cafe/DESIGN.md +55 -0
- package/skills/design/cafe/SKILL.md +83 -0
- package/skills/design/campaign-concept-playbook/SKILL.md +48 -0
- package/skills/design/capture-playbook/SKILL.md +48 -0
- package/skills/design/captures-growth-playbook/SKILL.md +48 -0
- package/skills/design/claude/DESIGN.md +55 -0
- package/skills/design/claude/SKILL.md +81 -0
- package/skills/design/claymorphism/DESIGN.md +55 -0
- package/skills/design/claymorphism/SKILL.md +84 -0
- package/skills/design/clean/DESIGN.md +55 -0
- package/skills/design/clean/SKILL.md +84 -0
- package/skills/design/codex/DESIGN.md +55 -0
- package/skills/design/codex/SKILL.md +81 -0
- package/skills/design/color-and-typography/SKILL.md +60 -0
- package/skills/design/colorful/DESIGN.md +55 -0
- package/skills/design/colorful/SKILL.md +82 -0
- package/skills/design/commerce-visual-flow-playbook/SKILL.md +281 -0
- package/skills/design/commerce-visual-flow-playbook/example.html +504 -0
- package/skills/design/commerce-visual-flow-quality-gate/SKILL.md +78 -0
- package/skills/design/commerce-visual-flow-quality-gate/example.html +504 -0
- package/skills/design/composition-advisory-playbook/SKILL.md +48 -0
- package/skills/design/composition-audit-playbook/SKILL.md +48 -0
- package/skills/design/composition-markdown-playbook/SKILL.md +48 -0
- package/skills/design/composition-prompt-playbook/SKILL.md +234 -0
- package/skills/design/composition-taste-interface-playbook/LICENSE +21 -0
- package/skills/design/composition-taste-interface-playbook/SKILL.md +1222 -0
- package/skills/design/composition-taste-interface-v1-playbook/LICENSE +21 -0
- package/skills/design/composition-taste-interface-v1-playbook/SKILL.md +242 -0
- package/skills/design/concept-lead-playbook/SKILL.md +73 -0
- package/skills/design/constella-design/SKILL.md +97 -0
- package/skills/design/contemporary/DESIGN.md +55 -0
- package/skills/design/contemporary/SKILL.md +83 -0
- package/skills/design/corporate/DESIGN.md +55 -0
- package/skills/design/corporate/SKILL.md +89 -0
- package/skills/design/cosmic/DESIGN.md +55 -0
- package/skills/design/cosmic/SKILL.md +83 -0
- package/skills/design/creative/DESIGN.md +55 -0
- package/skills/design/creative/SKILL.md +83 -0
- package/skills/design/css-techniques/SKILL.md +58 -0
- package/skills/design/d3-visualization-playbook/SKILL.md +56 -0
- package/skills/design/dashboard/DESIGN.md +55 -0
- package/skills/design/dashboard/SKILL.md +89 -0
- package/skills/design/deliverables-assembler-playbook/SKILL.md +48 -0
- package/skills/design/delivery-save-diagnostics-playbook/SKILL.md +69 -0
- package/skills/design/design-systems/SKILL.md +60 -0
- package/skills/design/dithered/DESIGN.md +55 -0
- package/skills/design/dithered/SKILL.md +87 -0
- package/skills/design/document-paper-scroll-playbook/SKILL.md +54 -0
- package/skills/design/document-paper-scroll-playbook/example.html +84 -0
- package/skills/design/document-paper-scroll-sample-worked-sample/SKILL.md +45 -0
- package/skills/design/document-paper-scroll-sample-worked-sample/example.html +84 -0
- package/skills/design/document-playbook/SKILL.md +48 -0
- package/skills/design/doodle/DESIGN.md +55 -0
- package/skills/design/doodle/SKILL.md +97 -0
- package/skills/design/dramatic/DESIGN.md +55 -0
- package/skills/design/dramatic/SKILL.md +83 -0
- package/skills/design/editorial/DESIGN.md +55 -0
- package/skills/design/editorial/SKILL.md +86 -0
- package/skills/design/eight-bit-orbital-motion-blueprint/SKILL.md +58 -0
- package/skills/design/eight-bit-orbital-motion-blueprint/assets/template.html +506 -0
- package/skills/design/eight-bit-orbital-motion-blueprint/example.html +43 -0
- package/skills/design/eight-bit-orbital-motion-blueprint-quality-gate/SKILL.md +40 -0
- package/skills/design/eight-bit-orbital-motion-blueprint-quality-gate/assets/template.html +506 -0
- package/skills/design/eight-bit-orbital-motion-blueprint-quality-gate/example.html +43 -0
- package/skills/design/elegant/DESIGN.md +55 -0
- package/skills/design/elegant/SKILL.md +83 -0
- package/skills/design/energetic/DESIGN.md +51 -0
- package/skills/design/energetic/SKILL.md +86 -0
- package/skills/design/enterprise/DESIGN.md +55 -0
- package/skills/design/enterprise/SKILL.md +88 -0
- package/skills/design/expressive/DESIGN.md +55 -0
- package/skills/design/expressive/SKILL.md +83 -0
- package/skills/design/fal-3d-playbook/SKILL.md +48 -0
- package/skills/design/fal-compose-playbook/SKILL.md +48 -0
- package/skills/design/fal-enhance-playbook/SKILL.md +48 -0
- package/skills/design/fal-kling-o3-playbook/SKILL.md +48 -0
- package/skills/design/fal-lip-sync-playbook/SKILL.md +48 -0
- package/skills/design/fal-live-playbook/SKILL.md +48 -0
- package/skills/design/fal-motion-edit-playbook/SKILL.md +48 -0
- package/skills/design/fal-repair-playbook/SKILL.md +48 -0
- package/skills/design/fal-train-playbook/SKILL.md +48 -0
- package/skills/design/fal-tryon-playbook/SKILL.md +48 -0
- package/skills/design/fal-vision-playbook/SKILL.md +48 -0
- package/skills/design/fal-visual-edit-playbook/SKILL.md +48 -0
- package/skills/design/fantasy/DESIGN.md +55 -0
- package/skills/design/fantasy/SKILL.md +83 -0
- package/skills/design/fiction/DESIGN.md +55 -0
- package/skills/design/fiction/SKILL.md +81 -0
- package/skills/design/field-journal-magazine-blueprint/SKILL.md +61 -0
- package/skills/design/field-journal-magazine-blueprint/assets/template.html +287 -0
- package/skills/design/field-journal-magazine-blueprint/example.html +138 -0
- package/skills/design/field-journal-magazine-blueprint-quality-gate/SKILL.md +47 -0
- package/skills/design/field-journal-magazine-blueprint-quality-gate/assets/template.html +287 -0
- package/skills/design/field-journal-magazine-blueprint-quality-gate/example.html +138 -0
- package/skills/design/figma-author-composition-system-rules-playbook/SKILL.md +48 -0
- package/skills/design/figma-author-fresh-file-playbook/SKILL.md +48 -0
- package/skills/design/figma-build-composition-playbook/SKILL.md +48 -0
- package/skills/design/figma-code-bridge-parts-playbook/SKILL.md +48 -0
- package/skills/design/figma-compose-composition-playbook/SKILL.md +48 -0
- package/skills/design/figma-compose-library-playbook/SKILL.md +48 -0
- package/skills/design/figma-operator-playbook/SKILL.md +48 -0
- package/skills/design/flat/DESIGN.md +55 -0
- package/skills/design/flat/SKILL.md +101 -0
- package/skills/design/flutter-motion-apps-playbook/SKILL.md +48 -0
- package/skills/design/friendly/DESIGN.md +55 -0
- package/skills/design/friendly/SKILL.md +83 -0
- package/skills/design/full-delivery-enforcement-playbook/LICENSE +21 -0
- package/skills/design/full-delivery-enforcement-playbook/SKILL.md +65 -0
- package/skills/design/full-surface-capture-playbook/SKILL.md +48 -0
- package/skills/design/futuristic/DESIGN.md +55 -0
- package/skills/design/futuristic/SKILL.md +83 -0
- package/skills/design/generative-visuals-playbook/SKILL.md +48 -0
- package/skills/design/gif-sticker-maker-playbook/SKILL.md +48 -0
- package/skills/design/glassmorphism/DESIGN.md +55 -0
- package/skills/design/glassmorphism/SKILL.md +86 -0
- package/skills/design/gpt-taste-playbook/LICENSE +21 -0
- package/skills/design/gpt-taste-playbook/SKILL.md +91 -0
- package/skills/design/gradient/DESIGN.md +55 -0
- package/skills/design/gradient/SKILL.md +83 -0
- package/skills/design/gradients/SKILL.md +59 -0
- package/skills/design/graphic-design-basics/SKILL.md +55 -0
- package/skills/design/grid-concept-mode-blueprint/SKILL.md +62 -0
- package/skills/design/grid-concept-mode-blueprint/assets/template.html +375 -0
- package/skills/design/grid-concept-mode-blueprint/example.html +70 -0
- package/skills/design/grid-concept-mode-blueprint-quality-gate/SKILL.md +52 -0
- package/skills/design/grid-concept-mode-blueprint-quality-gate/assets/template.html +375 -0
- package/skills/design/grid-concept-mode-blueprint-quality-gate/example.html +70 -0
- package/skills/design/grid-user-research-motion-blueprint/SKILL.md +63 -0
- package/skills/design/grid-user-research-motion-blueprint/assets/template.html +265 -0
- package/skills/design/grid-user-research-motion-blueprint/example.html +265 -0
- package/skills/design/grid-user-research-motion-blueprint-quality-gate/SKILL.md +43 -0
- package/skills/design/grid-user-research-motion-blueprint-quality-gate/assets/template.html +265 -0
- package/skills/design/grid-user-research-motion-blueprint-quality-gate/example.html +265 -0
- package/skills/design/growth-psychology-playbook/SKILL.md +48 -0
- package/skills/design/gsap-core-playbook/SKILL.md +271 -0
- package/skills/design/gsap-frameworks-playbook/SKILL.md +254 -0
- package/skills/design/gsap-plugins-playbook/SKILL.md +450 -0
- package/skills/design/gsap-react-playbook/SKILL.md +153 -0
- package/skills/design/gsap-scrolltrigger-playbook/SKILL.md +314 -0
- package/skills/design/gsap-speed-playbook/SKILL.md +96 -0
- package/skills/design/gsap-timeline-playbook/SKILL.md +124 -0
- package/skills/design/gsap-utilities-playbook/SKILL.md +301 -0
- package/skills/design/hand-sketched-diagrams-playbook/SKILL.md +48 -0
- package/skills/design/high-end-visual-composition-playbook/LICENSE +21 -0
- package/skills/design/high-end-visual-composition-playbook/SKILL.md +114 -0
- package/skills/design/html-slides-retro-quarterly-audit-playbook/SKILL.md +65 -0
- package/skills/design/html-slides-retro-quarterly-audit-playbook/assets/template.html +164 -0
- package/skills/design/html-slides-retro-quarterly-audit-playbook/example.html +139 -0
- package/skills/design/html-slides-retro-quarterly-audit-quality-gate/SKILL.md +42 -0
- package/skills/design/html-slides-retro-quarterly-audit-quality-gate/assets/template.html +164 -0
- package/skills/design/html-slides-retro-quarterly-audit-quality-gate/example.html +139 -0
- package/skills/design/ideation-playbook/SKILL.md +48 -0
- package/skills/design/identity-capture-playbook/SKILL.md +222 -0
- package/skills/design/identity-capture-playbook/templates/brand-kit.html +757 -0
- package/skills/design/identity-kit-playbook/LICENSE +21 -0
- package/skills/design/identity-kit-playbook/SKILL.md +814 -0
- package/skills/design/identity-standards-playbook/SKILL.md +48 -0
- package/skills/design/imagecraft-interface-mobile-playbook/LICENSE +21 -0
- package/skills/design/imagecraft-interface-mobile-playbook/SKILL.md +1482 -0
- package/skills/design/imagecraft-interface-web-playbook/LICENSE +21 -0
- package/skills/design/imagecraft-interface-web-playbook/SKILL.md +1003 -0
- package/skills/design/imagecraft-playbook/SKILL.md +48 -0
- package/skills/design/imagen-playbook/SKILL.md +48 -0
- package/skills/design/immersive/DESIGN.md +55 -0
- package/skills/design/immersive/SKILL.md +81 -0
- package/skills/design/impeccable/DESIGN.md +55 -0
- package/skills/design/impeccable/SKILL.md +81 -0
- package/skills/design/improve-prompt-playbook/SKILL.md +48 -0
- package/skills/design/industrial-raw-ui-playbook/LICENSE +21 -0
- package/skills/design/industrial-raw-ui-playbook/SKILL.md +108 -0
- package/skills/design/interface-builder-playbook/SKILL.md +48 -0
- package/skills/design/interface-composition-playbook/LICENSE.txt +177 -0
- package/skills/design/interface-composition-playbook/SKILL.md +80 -0
- package/skills/design/interface-playbook/SKILL.md +48 -0
- package/skills/design/interface-slides-playbook/SKILL.md +48 -0
- package/skills/design/late-hours-magazine-blueprint/SKILL.md +62 -0
- package/skills/design/late-hours-magazine-blueprint/assets/template.html +173 -0
- package/skills/design/late-hours-magazine-blueprint/example.html +12 -0
- package/skills/design/late-hours-magazine-blueprint-quality-gate/SKILL.md +44 -0
- package/skills/design/late-hours-magazine-blueprint-quality-gate/assets/template.html +173 -0
- package/skills/design/late-hours-magazine-blueprint-quality-gate/example.html +12 -0
- package/skills/design/levels/DESIGN.md +55 -0
- package/skills/design/levels/SKILL.md +83 -0
- package/skills/design/lingo/DESIGN.md +55 -0
- package/skills/design/lingo/SKILL.md +87 -0
- package/skills/design/luxury/DESIGN.md +55 -0
- package/skills/design/luxury/SKILL.md +83 -0
- package/skills/design/magazine-wine-rules-blueprint/SKILL.md +59 -0
- package/skills/design/magazine-wine-rules-blueprint/assets/template.html +94 -0
- package/skills/design/magazine-wine-rules-blueprint/example.html +49 -0
- package/skills/design/magazine-wine-rules-blueprint-quality-gate/SKILL.md +41 -0
- package/skills/design/magazine-wine-rules-blueprint-quality-gate/assets/template.html +94 -0
- package/skills/design/magazine-wine-rules-blueprint-quality-gate/example.html +49 -0
- package/skills/design/market-campaigns-extractor-playbook/SKILL.md +48 -0
- package/skills/design/material/DESIGN.md +55 -0
- package/skills/design/material/SKILL.md +97 -0
- package/skills/design/matrix/DESIGN.md +55 -0
- package/skills/design/matrix/SKILL.md +82 -0
- package/skills/design/messagecraft-playbook/SKILL.md +48 -0
- package/skills/design/metrics-brief-playbook/SKILL.md +33 -0
- package/skills/design/metrics-brief-playbook/example.html +175 -0
- package/skills/design/metrics-brief-sample-worked-sample/SKILL.md +37 -0
- package/skills/design/metrics-brief-sample-worked-sample/example.html +175 -0
- package/skills/design/microinteractions/SKILL.md +58 -0
- package/skills/design/minimal/DESIGN.md +55 -0
- package/skills/design/minimal/SKILL.md +83 -0
- package/skills/design/minimal-ui-playbook/LICENSE +21 -0
- package/skills/design/minimal-ui-playbook/SKILL.md +101 -0
- package/skills/design/minimax-pdf-playbook/SKILL.md +48 -0
- package/skills/design/minimax-word-playbook/SKILL.md +48 -0
- package/skills/design/mockup-device-3d-playbook/SKILL.md +49 -0
- package/skills/design/mockup-device-3d-playbook/example.html +193 -0
- package/skills/design/mockup-device-3d-sample-worked-sample/SKILL.md +34 -0
- package/skills/design/mockup-device-3d-sample-worked-sample/example.html +193 -0
- package/skills/design/modern/DESIGN.md +55 -0
- package/skills/design/modern/SKILL.md +83 -0
- package/skills/design/mono/DESIGN.md +55 -0
- package/skills/design/mono/SKILL.md +88 -0
- package/skills/design/motion-craft-motion-playbook/SKILL.md +52 -0
- package/skills/design/motion-hyperframes-playbook/SKILL.md +32 -0
- package/skills/design/motion-hyperframes-playbook/example.html +140 -0
- package/skills/design/motion-hyperframes-sample-worked-sample/SKILL.md +44 -0
- package/skills/design/motion-hyperframes-sample-worked-sample/example.html +140 -0
- package/skills/design/motion-retriever-playbook/SKILL.md +48 -0
- package/skills/design/naming-name-brainstormer-playbook/SKILL.md +48 -0
- package/skills/design/nanobanana-slides-playbook/SKILL.md +48 -0
- package/skills/design/neobrutalism/DESIGN.md +55 -0
- package/skills/design/neobrutalism/SKILL.md +83 -0
- package/skills/design/neon-style/DESIGN.md +55 -0
- package/skills/design/neon-style/SKILL.md +83 -0
- package/skills/design/neumorphism/DESIGN.md +55 -0
- package/skills/design/neumorphism/SKILL.md +88 -0
- package/skills/design/numbers-finance-grid-blueprint/SKILL.md +56 -0
- package/skills/design/numbers-finance-grid-blueprint/assets/template.html +111 -0
- package/skills/design/numbers-finance-grid-blueprint/example.html +44 -0
- package/skills/design/numbers-finance-grid-blueprint-quality-gate/SKILL.md +42 -0
- package/skills/design/numbers-finance-grid-blueprint-quality-gate/assets/template.html +111 -0
- package/skills/design/numbers-finance-grid-blueprint-quality-gate/example.html +44 -0
- package/skills/design/operator-navigator-playbook/SKILL.md +227 -0
- package/skills/design/operators-operator-journal-playbook/SKILL.md +73 -0
- package/skills/design/orientation-guide/SKILL.md +44 -0
- package/skills/design/pacman/DESIGN.md +55 -0
- package/skills/design/pacman/SKILL.md +84 -0
- package/skills/design/palette-advisor-playbook/SKILL.md +48 -0
- package/skills/design/paper/DESIGN.md +55 -0
- package/skills/design/paper/SKILL.md +83 -0
- package/skills/design/paywall-upgrade-conversion-playbook/SKILL.md +48 -0
- package/skills/design/pdf-playbook/SKILL.md +48 -0
- package/skills/design/perspective/DESIGN.md +55 -0
- package/skills/design/perspective/SKILL.md +83 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/LICENSE.txt +201 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/SKILL.md +48 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/agents/openai.yaml +4 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/scripts/compose_atlas.py +150 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/scripts/derive_running_left_from_running_right.py +143 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/scripts/extract_strip_frames.py +323 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/scripts/finalize_pet_run.py +382 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/scripts/generate_pet_images.py +295 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/scripts/inspect_frames.py +246 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/scripts/make_contact_sheet.py +96 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/scripts/package_custom_pet.py +108 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/scripts/pet_job_status.py +117 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/scripts/prepare_pet_run.py +674 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/scripts/queue_pet_repairs.py +172 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/scripts/record_imagegen_result.py +250 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/scripts/render_animation_videos.py +134 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/scripts/render_animation_videos.sh +5 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/scripts/test_generate_pet_images.py +136 -0
- package/skills/design/pet-companion-animation-rows-reference-guide/scripts/validate_atlas.py +139 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/LICENSE.txt +201 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/SKILL.md +54 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/agents/openai.yaml +4 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/compose_atlas.py +150 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/derive_running_left_from_running_right.py +143 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/extract_strip_frames.py +323 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/finalize_pet_run.py +382 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/generate_pet_images.py +295 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/inspect_frames.py +246 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/make_contact_sheet.py +96 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/package_custom_pet.py +108 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/pet_job_status.py +117 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/prepare_pet_run.py +674 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/queue_pet_repairs.py +172 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/record_imagegen_result.py +250 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/render_animation_videos.py +134 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/render_animation_videos.sh +5 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/test_generate_pet_images.py +136 -0
- package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/validate_atlas.py +139 -0
- package/skills/design/pet-companion-orientation-guide/LICENSE.txt +201 -0
- package/skills/design/pet-companion-orientation-guide/SKILL.md +75 -0
- package/skills/design/pet-companion-orientation-guide/agents/openai.yaml +4 -0
- package/skills/design/pet-companion-orientation-guide/scripts/compose_atlas.py +150 -0
- package/skills/design/pet-companion-orientation-guide/scripts/derive_running_left_from_running_right.py +143 -0
- package/skills/design/pet-companion-orientation-guide/scripts/extract_strip_frames.py +323 -0
- package/skills/design/pet-companion-orientation-guide/scripts/finalize_pet_run.py +382 -0
- package/skills/design/pet-companion-orientation-guide/scripts/generate_pet_images.py +295 -0
- package/skills/design/pet-companion-orientation-guide/scripts/inspect_frames.py +246 -0
- package/skills/design/pet-companion-orientation-guide/scripts/make_contact_sheet.py +96 -0
- package/skills/design/pet-companion-orientation-guide/scripts/package_custom_pet.py +108 -0
- package/skills/design/pet-companion-orientation-guide/scripts/pet_job_status.py +117 -0
- package/skills/design/pet-companion-orientation-guide/scripts/prepare_pet_run.py +674 -0
- package/skills/design/pet-companion-orientation-guide/scripts/queue_pet_repairs.py +172 -0
- package/skills/design/pet-companion-orientation-guide/scripts/record_imagegen_result.py +250 -0
- package/skills/design/pet-companion-orientation-guide/scripts/render_animation_videos.py +134 -0
- package/skills/design/pet-companion-orientation-guide/scripts/render_animation_videos.sh +5 -0
- package/skills/design/pet-companion-orientation-guide/scripts/test_generate_pet_images.py +136 -0
- package/skills/design/pet-companion-orientation-guide/scripts/validate_atlas.py +139 -0
- package/skills/design/pet-companion-playbook/LICENSE.txt +201 -0
- package/skills/design/pet-companion-playbook/SKILL.md +344 -0
- package/skills/design/pet-companion-playbook/agents/openai.yaml +4 -0
- package/skills/design/pet-companion-playbook/scripts/compose_atlas.py +150 -0
- package/skills/design/pet-companion-playbook/scripts/derive_running_left_from_running_right.py +143 -0
- package/skills/design/pet-companion-playbook/scripts/extract_strip_frames.py +323 -0
- package/skills/design/pet-companion-playbook/scripts/finalize_pet_run.py +382 -0
- package/skills/design/pet-companion-playbook/scripts/generate_pet_images.py +295 -0
- package/skills/design/pet-companion-playbook/scripts/inspect_frames.py +246 -0
- package/skills/design/pet-companion-playbook/scripts/make_contact_sheet.py +96 -0
- package/skills/design/pet-companion-playbook/scripts/package_custom_pet.py +108 -0
- package/skills/design/pet-companion-playbook/scripts/pet_job_status.py +117 -0
- package/skills/design/pet-companion-playbook/scripts/prepare_pet_run.py +674 -0
- package/skills/design/pet-companion-playbook/scripts/queue_pet_repairs.py +172 -0
- package/skills/design/pet-companion-playbook/scripts/record_imagegen_result.py +250 -0
- package/skills/design/pet-companion-playbook/scripts/render_animation_videos.py +134 -0
- package/skills/design/pet-companion-playbook/scripts/render_animation_videos.sh +5 -0
- package/skills/design/pet-companion-playbook/scripts/test_generate_pet_images.py +136 -0
- package/skills/design/pet-companion-playbook/scripts/validate_atlas.py +139 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/LICENSE.txt +201 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/SKILL.md +79 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/agents/openai.yaml +4 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/compose_atlas.py +150 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/derive_running_left_from_running_right.py +143 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/extract_strip_frames.py +323 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/finalize_pet_run.py +382 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/generate_pet_images.py +295 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/inspect_frames.py +246 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/make_contact_sheet.py +96 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/package_custom_pet.py +108 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/pet_job_status.py +117 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/prepare_pet_run.py +674 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/queue_pet_repairs.py +172 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/record_imagegen_result.py +250 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/render_animation_videos.py +134 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/render_animation_videos.sh +5 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/test_generate_pet_images.py +136 -0
- package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/validate_atlas.py +139 -0
- package/skills/design/pixelbin-media-playbook/SKILL.md +48 -0
- package/skills/design/planning-composition-audit-playbook/SKILL.md +48 -0
- package/skills/design/platform-composition-playbook/SKILL.md +48 -0
- package/skills/design/polish-composition-finish-playbook/SKILL.md +54 -0
- package/skills/design/poster-hero-playbook/SKILL.md +31 -0
- package/skills/design/poster-hero-playbook/example.html +88 -0
- package/skills/design/poster-hero-sample-worked-sample/SKILL.md +32 -0
- package/skills/design/poster-hero-sample-worked-sample/example.html +88 -0
- package/skills/design/pr-feedback-quality-gate/SKILL.md +57 -0
- package/skills/design/premium/DESIGN.md +55 -0
- package/skills/design/premium/SKILL.md +83 -0
- package/skills/design/presentation-composer-playbook/SKILL.md +48 -0
- package/skills/design/presentation-html-fidelity-audit-font-discipline-aa2caa/SKILL.md +382 -0
- package/skills/design/presentation-html-fidelity-audit-font-discipline-aa2caa/scripts/extract_pptx.py +134 -0
- package/skills/design/presentation-html-fidelity-audit-font-discipline-aa2caa/scripts/verify_layout.py +144 -0
- package/skills/design/presentation-html-fidelity-audit-layout-discipline-d5a323/SKILL.md +390 -0
- package/skills/design/presentation-html-fidelity-audit-layout-discipline-d5a323/scripts/extract_pptx.py +134 -0
- package/skills/design/presentation-html-fidelity-audit-layout-discipline-d5a323/scripts/verify_layout.py +144 -0
- package/skills/design/presentation-html-fidelity-audit-playbook/SKILL.md +257 -0
- package/skills/design/presentation-html-fidelity-audit-playbook/scripts/extract_pptx.py +134 -0
- package/skills/design/presentation-html-fidelity-audit-playbook/scripts/verify_layout.py +144 -0
- package/skills/design/presentation-html-fidelity-audit-table-blueprint-1ad2ac/SKILL.md +77 -0
- package/skills/design/presentation-html-fidelity-audit-table-blueprint-1ad2ac/scripts/extract_pptx.py +134 -0
- package/skills/design/presentation-html-fidelity-audit-table-blueprint-1ad2ac/scripts/verify_layout.py +144 -0
- package/skills/design/presentation-playbook/SKILL.md +48 -0
- package/skills/design/professional/DESIGN.md +55 -0
- package/skills/design/professional/SKILL.md +83 -0
- package/skills/design/publication/DESIGN.md +55 -0
- package/skills/design/publication/SKILL.md +89 -0
- package/skills/design/reading-year-in-audit-motion-blueprint/SKILL.md +76 -0
- package/skills/design/reading-year-in-audit-motion-blueprint/assets/template.html +714 -0
- package/skills/design/reading-year-in-audit-motion-blueprint/example.html +63 -0
- package/skills/design/reading-year-in-audit-motion-blueprint-quality-gate/SKILL.md +45 -0
- package/skills/design/reading-year-in-audit-motion-blueprint-quality-gate/assets/template.html +714 -0
- package/skills/design/reading-year-in-audit-motion-blueprint-quality-gate/example.html +63 -0
- package/skills/design/reference-composition-contract-playbook/SKILL.md +97 -0
- package/skills/design/reference-composition-contract-playbook/example.html +236 -0
- package/skills/design/reference-composition-contract-quality-gate/SKILL.md +45 -0
- package/skills/design/reference-composition-contract-quality-gate/example.html +236 -0
- package/skills/design/refined/DESIGN.md +55 -0
- package/skills/design/refined/SKILL.md +83 -0
- package/skills/design/refresh-existing-projects-playbook/LICENSE +21 -0
- package/skills/design/refresh-existing-projects-playbook/SKILL.md +194 -0
- package/skills/design/release-journal-single-page-layouts-reference-guide/SKILL.md +318 -0
- package/skills/design/release-journal-single-page-layouts-reference-guide/assets/template.html +342 -0
- package/skills/design/release-journal-single-page-layouts-reference-guide/example.html +156 -0
- package/skills/design/release-journal-single-page-playbook/SKILL.md +100 -0
- package/skills/design/release-journal-single-page-playbook/assets/template.html +342 -0
- package/skills/design/release-journal-single-page-playbook/example.html +156 -0
- package/skills/design/release-journal-single-page-quality-gate/SKILL.md +60 -0
- package/skills/design/release-journal-single-page-quality-gate/assets/template.html +342 -0
- package/skills/design/release-journal-single-page-quality-gate/example.html +156 -0
- package/skills/design/remotion-playbook/SKILL.md +48 -0
- package/skills/design/replicate-playbook/SKILL.md +48 -0
- package/skills/design/research-decision-room-evidence-model-reference-guide/SKILL.md +96 -0
- package/skills/design/research-decision-room-evidence-model-reference-guide/example.html +890 -0
- package/skills/design/research-decision-room-playbook/SKILL.md +164 -0
- package/skills/design/research-decision-room-playbook/example.html +890 -0
- package/skills/design/research-decision-room-quality-gate/SKILL.md +66 -0
- package/skills/design/research-decision-room-quality-gate/example.html +890 -0
- package/skills/design/responsive-layout/SKILL.md +59 -0
- package/skills/design/resume-modern-playbook/SKILL.md +31 -0
- package/skills/design/resume-modern-playbook/example.html +122 -0
- package/skills/design/resume-modern-sample-worked-sample/SKILL.md +59 -0
- package/skills/design/resume-modern-sample-worked-sample/example.html +122 -0
- package/skills/design/retro/DESIGN.md +55 -0
- package/skills/design/retro/SKILL.md +83 -0
- package/skills/design/riso/DESIGN.md +55 -0
- package/skills/design/riso/SKILL.md +81 -0
- package/skills/design/scene-distortion-headline-playbook/SKILL.md +52 -0
- package/skills/design/scene-distortion-headline-playbook/example.html +99 -0
- package/skills/design/scene-distortion-headline-sample-worked-sample/SKILL.md +31 -0
- package/skills/design/scene-distortion-headline-sample-worked-sample/example.html +99 -0
- package/skills/design/scene-flow-notes/SKILL.md +51 -0
- package/skills/design/scene-flow-notes/example.html +137 -0
- package/skills/design/scene-flow-notes-sample-worked-sample/SKILL.md +32 -0
- package/skills/design/scene-flow-notes-sample-worked-sample/example.html +137 -0
- package/skills/design/scene-fluid-background-hero-playbook/SKILL.md +58 -0
- package/skills/design/scene-fluid-background-hero-playbook/example.html +64 -0
- package/skills/design/scene-fluid-background-hero-sample-worked-sample/SKILL.md +28 -0
- package/skills/design/scene-fluid-background-hero-sample-worked-sample/example.html +64 -0
- package/skills/design/scene-light-flare-cinema-playbook/SKILL.md +53 -0
- package/skills/design/scene-light-flare-cinema-playbook/example.html +81 -0
- package/skills/design/scene-light-flare-cinema-sample-worked-sample/SKILL.md +31 -0
- package/skills/design/scene-light-flare-cinema-sample-worked-sample/example.html +81 -0
- package/skills/design/scene-macos-alert-playbook/SKILL.md +57 -0
- package/skills/design/scene-macos-alert-playbook/example.html +60 -0
- package/skills/design/scene-macos-alert-sample-worked-sample/SKILL.md +29 -0
- package/skills/design/scene-macos-alert-sample-worked-sample/example.html +60 -0
- package/skills/design/scene-mark-ending-playbook/SKILL.md +49 -0
- package/skills/design/scene-mark-ending-playbook/example.html +80 -0
- package/skills/design/scene-mark-ending-sample-worked-sample/SKILL.md +31 -0
- package/skills/design/scene-mark-ending-sample-worked-sample/example.html +80 -0
- package/skills/design/scene-metrics-chart-nyt-playbook/SKILL.md +46 -0
- package/skills/design/scene-metrics-chart-nyt-playbook/example.html +101 -0
- package/skills/design/scene-metrics-chart-nyt-sample-worked-sample/SKILL.md +37 -0
- package/skills/design/scene-metrics-chart-nyt-sample-worked-sample/example.html +101 -0
- package/skills/design/sega/DESIGN.md +55 -0
- package/skills/design/sega/SKILL.md +81 -0
- package/skills/design/shadcn/DESIGN.md +55 -0
- package/skills/design/shadcn/SKILL.md +83 -0
- package/skills/design/shadcn-ui-playbook/SKILL.md +48 -0
- package/skills/design/shader-builder-playbook/SKILL.md +48 -0
- package/skills/design/signin-flow-playbook/SKILL.md +51 -0
- package/skills/design/signin-flow-playbook/example.html +362 -0
- package/skills/design/signin-flow-quality-gate/SKILL.md +38 -0
- package/skills/design/signin-flow-quality-gate/example.html +362 -0
- package/skills/design/simple/DESIGN.md +55 -0
- package/skills/design/simple/SKILL.md +83 -0
- package/skills/design/sketch/DESIGN.md +55 -0
- package/skills/design/sketch/SKILL.md +81 -0
- package/skills/design/skeumorphism/DESIGN.md +55 -0
- package/skills/design/skeumorphism/SKILL.md +97 -0
- package/skills/design/slack-gif-creator-playbook/SKILL.md +48 -0
- package/skills/design/sleek/DESIGN.md +55 -0
- package/skills/design/sleek/SKILL.md +83 -0
- package/skills/design/slides-grid-global-playbook/SKILL.md +65 -0
- package/skills/design/slides-grid-global-playbook/example.html +117 -0
- package/skills/design/slides-grid-global-sample-worked-sample/SKILL.md +34 -0
- package/skills/design/slides-grid-global-sample-worked-sample/example.html +117 -0
- package/skills/design/slides-guizang-magazine-playbook/SKILL.md +51 -0
- package/skills/design/slides-guizang-magazine-playbook/example.html +92 -0
- package/skills/design/slides-guizang-magazine-sample-worked-sample/SKILL.md +31 -0
- package/skills/design/slides-guizang-magazine-sample-worked-sample/example.html +92 -0
- package/skills/design/slides-keynote-playbook/SKILL.md +32 -0
- package/skills/design/slides-keynote-playbook/example.html +130 -0
- package/skills/design/slides-keynote-sample-worked-sample/SKILL.md +44 -0
- package/skills/design/slides-keynote-sample-worked-sample/example.html +130 -0
- package/skills/design/slides-live-canvas-workspace-playbook/SKILL.md +55 -0
- package/skills/design/slides-live-canvas-workspace-playbook/example.html +51 -0
- package/skills/design/slides-live-canvas-workspace-sample-worked-sample/SKILL.md +25 -0
- package/skills/design/slides-live-canvas-workspace-sample-worked-sample/example.html +51 -0
- package/skills/design/slides-playbook/SKILL.md +48 -0
- package/skills/design/social-reddit-tile-playbook/SKILL.md +54 -0
- package/skills/design/social-reddit-tile-playbook/example.html +56 -0
- package/skills/design/social-reddit-tile-sample-worked-sample/SKILL.md +27 -0
- package/skills/design/social-reddit-tile-sample-worked-sample/example.html +56 -0
- package/skills/design/social-spotify-tile-playbook/SKILL.md +53 -0
- package/skills/design/social-spotify-tile-playbook/example.html +70 -0
- package/skills/design/social-spotify-tile-sample-worked-sample/SKILL.md +29 -0
- package/skills/design/social-spotify-tile-sample-worked-sample/example.html +70 -0
- package/skills/design/social-x-post-tile-playbook/SKILL.md +51 -0
- package/skills/design/social-x-post-tile-playbook/example.html +53 -0
- package/skills/design/social-x-post-tile-sample-worked-sample/SKILL.md +30 -0
- package/skills/design/social-x-post-tile-sample-worked-sample/example.html +53 -0
- package/skills/design/sora-playbook/SKILL.md +48 -0
- package/skills/design/spacious/DESIGN.md +55 -0
- package/skills/design/spacious/SKILL.md +89 -0
- package/skills/design/speech-playbook/SKILL.md +48 -0
- package/skills/design/stitch-composition-taste-playbook/LICENSE +21 -0
- package/skills/design/stitch-composition-taste-playbook/SKILL.md +200 -0
- package/skills/design/stitch-loop-playbook/SKILL.md +48 -0
- package/skills/design/stitch-playbook-composition-journal/LICENSE +21 -0
- package/skills/design/stitch-playbook-composition-journal/SKILL.md +141 -0
- package/skills/design/story-publication-playbook/SKILL.md +32 -0
- package/skills/design/story-publication-playbook/example.html +81 -0
- package/skills/design/story-publication-sample-worked-sample/SKILL.md +57 -0
- package/skills/design/story-publication-sample-worked-sample/example.html +81 -0
- package/skills/design/storytelling/DESIGN.md +55 -0
- package/skills/design/storytelling/SKILL.md +83 -0
- package/skills/design/swiftui-composition-playbook/SKILL.md +48 -0
- package/skills/design/terracotta/DESIGN.md +55 -0
- package/skills/design/terracotta/SKILL.md +81 -0
- package/skills/design/tetris/DESIGN.md +55 -0
- package/skills/design/tetris/SKILL.md +83 -0
- package/skills/design/theme-factory/LICENSE.txt +202 -0
- package/skills/design/theme-factory/SKILL.md +59 -0
- package/skills/design/theme-factory/theme-showcase.pdf +0 -0
- package/skills/design/theme-factory/themes/arctic-frost.md +19 -0
- package/skills/design/theme-factory/themes/botanical-garden.md +19 -0
- package/skills/design/theme-factory/themes/desert-rose.md +19 -0
- package/skills/design/theme-factory/themes/forest-canopy.md +19 -0
- package/skills/design/theme-factory/themes/golden-hour.md +19 -0
- package/skills/design/theme-factory/themes/midnight-galaxy.md +19 -0
- package/skills/design/theme-factory/themes/modern-minimalist.md +19 -0
- package/skills/design/theme-factory/themes/ocean-depths.md +19 -0
- package/skills/design/theme-factory/themes/sunset-boulevard.md +19 -0
- package/skills/design/theme-factory/themes/tech-innovation.md +19 -0
- package/skills/design/theme-factory-playbook/SKILL.md +48 -0
- package/skills/design/threejs-playbook/SKILL.md +48 -0
- package/skills/design/tile-rednote-playbook/SKILL.md +31 -0
- package/skills/design/tile-rednote-playbook/example.html +98 -0
- package/skills/design/tile-rednote-sample-worked-sample/SKILL.md +46 -0
- package/skills/design/tile-rednote-sample-worked-sample/example.html +98 -0
- package/skills/design/tile-x-playbook/SKILL.md +31 -0
- package/skills/design/tile-x-playbook/example.html +58 -0
- package/skills/design/tile-x-sample-worked-sample/SKILL.md +24 -0
- package/skills/design/tile-x-sample-worked-sample/example.html +58 -0
- package/skills/design/ui-playbooks-playbook/SKILL.md +48 -0
- package/skills/design/ui-ux-principles/SKILL.md +58 -0
- package/skills/design/ui-ux-pro-max-playbook/SKILL.md +63 -0
- package/skills/design/uupm-banner-design/SKILL.md +196 -0
- package/skills/design/uupm-banner-design/references/banner-sizes-and-styles.md +118 -0
- package/skills/design/uupm-brand/SKILL.md +97 -0
- package/skills/design/uupm-brand/references/approval-checklist.md +169 -0
- package/skills/design/uupm-brand/references/asset-organization.md +157 -0
- package/skills/design/uupm-brand/references/brand-guideline-template.md +140 -0
- package/skills/design/uupm-brand/references/color-palette-management.md +186 -0
- package/skills/design/uupm-brand/references/consistency-checklist.md +94 -0
- package/skills/design/uupm-brand/references/logo-usage-rules.md +185 -0
- package/skills/design/uupm-brand/references/messaging-framework.md +85 -0
- package/skills/design/uupm-brand/references/typography-specifications.md +214 -0
- package/skills/design/uupm-brand/references/update.md +118 -0
- package/skills/design/uupm-brand/references/visual-identity.md +96 -0
- package/skills/design/uupm-brand/references/voice-framework.md +88 -0
- package/skills/design/uupm-brand/scripts/extract-colors.cjs +341 -0
- package/skills/design/uupm-brand/scripts/inject-brand-context.cjs +349 -0
- package/skills/design/uupm-brand/scripts/sync-brand-to-tokens.cjs +266 -0
- package/skills/design/uupm-brand/scripts/validate-asset.cjs +387 -0
- package/skills/design/uupm-brand/templates/brand-guidelines-starter.md +275 -0
- package/skills/design/uupm-design/SKILL.md +313 -0
- package/skills/design/uupm-design/data/cip/deliverables.csv +51 -0
- package/skills/design/uupm-design/data/cip/industries.csv +21 -0
- package/skills/design/uupm-design/data/cip/mockup-contexts.csv +21 -0
- package/skills/design/uupm-design/data/cip/styles.csv +21 -0
- package/skills/design/uupm-design/data/icon/styles.csv +16 -0
- package/skills/design/uupm-design/data/logo/colors.csv +56 -0
- package/skills/design/uupm-design/data/logo/industries.csv +56 -0
- package/skills/design/uupm-design/data/logo/styles.csv +56 -0
- package/skills/design/uupm-design/references/banner-sizes-and-styles.md +118 -0
- package/skills/design/uupm-design/references/cip-deliverable-guide.md +95 -0
- package/skills/design/uupm-design/references/cip-design.md +121 -0
- package/skills/design/uupm-design/references/cip-prompt-engineering.md +84 -0
- package/skills/design/uupm-design/references/cip-style-guide.md +68 -0
- package/skills/design/uupm-design/references/design-routing.md +207 -0
- package/skills/design/uupm-design/references/icon-design.md +122 -0
- package/skills/design/uupm-design/references/logo-color-psychology.md +101 -0
- package/skills/design/uupm-design/references/logo-design.md +92 -0
- package/skills/design/uupm-design/references/logo-prompt-engineering.md +158 -0
- package/skills/design/uupm-design/references/logo-style-guide.md +109 -0
- package/skills/design/uupm-design/references/slides-copywriting-formulas.md +84 -0
- package/skills/design/uupm-design/references/slides-create.md +4 -0
- package/skills/design/uupm-design/references/slides-html-template.md +295 -0
- package/skills/design/uupm-design/references/slides-layout-patterns.md +137 -0
- package/skills/design/uupm-design/references/slides-strategies.md +94 -0
- package/skills/design/uupm-design/references/slides.md +42 -0
- package/skills/design/uupm-design/references/social-photos-design.md +329 -0
- package/skills/design/uupm-design/scripts/cip/core.py +215 -0
- package/skills/design/uupm-design/scripts/cip/generate.py +484 -0
- package/skills/design/uupm-design/scripts/cip/render-html.py +424 -0
- package/skills/design/uupm-design/scripts/cip/search.py +127 -0
- package/skills/design/uupm-design/scripts/icon/generate.py +487 -0
- package/skills/design/uupm-design/scripts/logo/core.py +175 -0
- package/skills/design/uupm-design/scripts/logo/generate.py +362 -0
- package/skills/design/uupm-design/scripts/logo/search.py +114 -0
- package/skills/design/uupm-design-system/SKILL.md +244 -0
- package/skills/design/uupm-design-system/data/slide-backgrounds.csv +11 -0
- package/skills/design/uupm-design-system/data/slide-charts.csv +26 -0
- package/skills/design/uupm-design-system/data/slide-color-logic.csv +14 -0
- package/skills/design/uupm-design-system/data/slide-copy.csv +26 -0
- package/skills/design/uupm-design-system/data/slide-layout-logic.csv +16 -0
- package/skills/design/uupm-design-system/data/slide-layouts.csv +26 -0
- package/skills/design/uupm-design-system/data/slide-strategies.csv +16 -0
- package/skills/design/uupm-design-system/data/slide-typography.csv +15 -0
- package/skills/design/uupm-design-system/references/component-specs.md +236 -0
- package/skills/design/uupm-design-system/references/component-tokens.md +214 -0
- package/skills/design/uupm-design-system/references/primitive-tokens.md +203 -0
- package/skills/design/uupm-design-system/references/semantic-tokens.md +215 -0
- package/skills/design/uupm-design-system/references/states-and-variants.md +241 -0
- package/skills/design/uupm-design-system/references/tailwind-integration.md +251 -0
- package/skills/design/uupm-design-system/references/token-architecture.md +224 -0
- package/skills/design/uupm-design-system/scripts/embed-tokens.cjs +99 -0
- package/skills/design/uupm-design-system/scripts/fetch-background.py +317 -0
- package/skills/design/uupm-design-system/scripts/generate-slide.py +770 -0
- package/skills/design/uupm-design-system/scripts/generate-tokens.cjs +205 -0
- package/skills/design/uupm-design-system/scripts/html-token-validator.py +327 -0
- package/skills/design/uupm-design-system/scripts/search-slides.py +218 -0
- package/skills/design/uupm-design-system/scripts/slide-token-validator.py +35 -0
- package/skills/design/uupm-design-system/scripts/slide_search_core.py +453 -0
- package/skills/design/uupm-design-system/scripts/validate-tokens.cjs +251 -0
- package/skills/design/uupm-design-system/templates/design-tokens-starter.json +143 -0
- package/skills/design/uupm-slides/SKILL.md +40 -0
- package/skills/design/uupm-slides/references/copywriting-formulas.md +84 -0
- package/skills/design/uupm-slides/references/create.md +4 -0
- package/skills/design/uupm-slides/references/html-template.md +295 -0
- package/skills/design/uupm-slides/references/layout-patterns.md +137 -0
- package/skills/design/uupm-slides/references/slide-strategies.md +94 -0
- package/skills/design/uupm-ui-styling/LICENSE.txt +202 -0
- package/skills/design/uupm-ui-styling/SKILL.md +324 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/design/uupm-ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/design/uupm-ui-styling/references/canvas-design-system.md +320 -0
- package/skills/design/uupm-ui-styling/references/shadcn-accessibility.md +471 -0
- package/skills/design/uupm-ui-styling/references/shadcn-components.md +424 -0
- package/skills/design/uupm-ui-styling/references/shadcn-theming.md +373 -0
- package/skills/design/uupm-ui-styling/references/tailwind-customization.md +483 -0
- package/skills/design/uupm-ui-styling/references/tailwind-responsive.md +382 -0
- package/skills/design/uupm-ui-styling/references/tailwind-utilities.md +455 -0
- package/skills/design/uupm-ui-styling/scripts/.coverage +0 -0
- package/skills/design/uupm-ui-styling/scripts/requirements.txt +17 -0
- package/skills/design/uupm-ui-styling/scripts/shadcn_add.py +308 -0
- package/skills/design/uupm-ui-styling/scripts/tailwind_config_gen.py +473 -0
- package/skills/design/uupm-ui-styling/scripts/tests/coverage-ui.json +1 -0
- package/skills/design/uupm-ui-styling/scripts/tests/requirements.txt +3 -0
- package/skills/design/uupm-ui-styling/scripts/tests/test_shadcn_add.py +266 -0
- package/skills/design/uupm-ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
- package/skills/design/uupm-ui-ux-pro-max/SKILL.md +661 -0
- package/skills/design/uupm-ui-ux-pro-max/data +1 -0
- package/skills/design/uupm-ui-ux-pro-max/scripts +1 -0
- package/skills/design/venice-audio-playbook/SKILL.md +48 -0
- package/skills/design/venice-audio-speech-playbook/SKILL.md +48 -0
- package/skills/design/venice-motion-playbook/SKILL.md +48 -0
- package/skills/design/venice-visual-compose-playbook/SKILL.md +48 -0
- package/skills/design/venice-visual-edit-playbook/SKILL.md +48 -0
- package/skills/design/vfx-text-cursor-playbook/SKILL.md +49 -0
- package/skills/design/vfx-text-cursor-playbook/example.html +65 -0
- package/skills/design/vfx-text-cursor-sample-worked-sample/SKILL.md +31 -0
- package/skills/design/vfx-text-cursor-sample-worked-sample/example.html +65 -0
- package/skills/design/vibrant/DESIGN.md +55 -0
- package/skills/design/vibrant/SKILL.md +83 -0
- package/skills/design/vintage/DESIGN.md +55 -0
- package/skills/design/vintage/SKILL.md +83 -0
- package/skills/design/visual-enhancer-playbook/SKILL.md +48 -0
- package/skills/design/visual-to-code-playbook/LICENSE +21 -0
- package/skills/design/visual-to-code-playbook/SKILL.md +1245 -0
- package/skills/design/web-composition-standards-playbook/SKILL.md +48 -0
- package/skills/design/web-deliverables-assembler-playbook/SKILL.md +48 -0
- package/skills/design/word-playbook/SKILL.md +48 -0
- package/skills/design/workspace-composition-playbook/SKILL.md +48 -0
- package/skills/design/wpds-playbook/SKILL.md +48 -0
- package/skills/design/youtube-clipper-playbook/SKILL.md +48 -0
- package/skills/engineering/architecture/api-design-rest-graphql/SKILL.md +67 -0
- package/skills/engineering/architecture/caching-strategies/SKILL.md +59 -0
- package/skills/engineering/architecture/data-modeling/SKILL.md +64 -0
- package/skills/engineering/architecture/message-queues-async/SKILL.md +58 -0
- package/skills/engineering/architecture/scalability-reliability/SKILL.md +62 -0
- package/skills/engineering/architecture/software-architecture-patterns/SKILL.md +56 -0
- package/skills/engineering/architecture/system-design-fundamentals/SKILL.md +56 -0
- package/skills/engineering/backend/auth-and-authorization/SKILL.md +62 -0
- package/skills/engineering/backend/backend-fundamentals/SKILL.md +65 -0
- package/skills/engineering/backend/observability-logging/SKILL.md +60 -0
- package/skills/engineering/frontend/accessibility-wcag/SKILL.md +57 -0
- package/skills/engineering/frontend/frontend-architecture/SKILL.md +65 -0
- package/skills/engineering/frontend/rendering-strategies-ssr-csr/SKILL.md +60 -0
- package/skills/engineering/frontend/state-management/SKILL.md +69 -0
- package/skills/engineering/performance/backend-performance/SKILL.md +69 -0
- package/skills/engineering/performance/database-query-optimization/SKILL.md +64 -0
- package/skills/engineering/performance/profiling-and-benchmarking/SKILL.md +60 -0
- package/skills/engineering/performance/web-performance-core-vitals/SKILL.md +72 -0
- package/skills/engineering/practices/clean-code/SKILL.md +61 -0
- package/skills/engineering/practices/code-optimization/SKILL.md +60 -0
- package/skills/engineering/practices/code-review-practices/SKILL.md +58 -0
- package/skills/engineering/practices/git-workflow/SKILL.md +62 -0
- package/skills/engineering/practices/refactoring/SKILL.md +58 -0
- package/skills/engineering/security/appsec-fundamentals/SKILL.md +70 -0
- package/skills/engineering/security/dependency-supply-chain/SKILL.md +77 -0
- package/skills/engineering/security/owasp-asvs/SKILL.md +54 -0
- package/skills/engineering/security/owasp-top-10/SKILL.md +63 -0
- package/skills/engineering/security/secrets-management/SKILL.md +58 -0
- package/skills/engineering/security/secure-auth-sessions/SKILL.md +56 -0
- package/skills/engineering/testing/tdd-and-coverage/SKILL.md +62 -0
- package/skills/engineering/testing/testing-strategy-pyramid/SKILL.md +56 -0
- package/skills/engineering/testing/unit-integration-e2e/SKILL.md +75 -0
- package/skills/front-end/canvas-design/LICENSE.txt +202 -0
- package/skills/front-end/canvas-design/SKILL.md +130 -0
- package/skills/front-end/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/front-end/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/front-end/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/front-end/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/front-end/claude-api/LICENSE.txt +202 -0
- package/skills/front-end/claude-api/SKILL.md +356 -0
- package/skills/front-end/claude-api/csharp/claude-api.md +447 -0
- package/skills/front-end/claude-api/curl/examples.md +216 -0
- package/skills/front-end/claude-api/curl/managed-agents.md +338 -0
- package/skills/front-end/claude-api/go/claude-api.md +440 -0
- package/skills/front-end/claude-api/go/managed-agents/README.md +561 -0
- package/skills/front-end/claude-api/java/claude-api.md +461 -0
- package/skills/front-end/claude-api/java/managed-agents/README.md +442 -0
- package/skills/front-end/claude-api/php/claude-api.md +402 -0
- package/skills/front-end/claude-api/php/managed-agents/README.md +435 -0
- package/skills/front-end/claude-api/python/claude-api/README.md +536 -0
- package/skills/front-end/claude-api/python/claude-api/batches.md +198 -0
- package/skills/front-end/claude-api/python/claude-api/files-api.md +170 -0
- package/skills/front-end/claude-api/python/claude-api/streaming.md +179 -0
- package/skills/front-end/claude-api/python/claude-api/tool-use.md +590 -0
- package/skills/front-end/claude-api/python/managed-agents/README.md +334 -0
- package/skills/front-end/claude-api/ruby/claude-api.md +140 -0
- package/skills/front-end/claude-api/ruby/managed-agents/README.md +389 -0
- package/skills/front-end/claude-api/shared/agent-design.md +101 -0
- package/skills/front-end/claude-api/shared/anthropic-cli.md +246 -0
- package/skills/front-end/claude-api/shared/claude-platform-on-aws.md +59 -0
- package/skills/front-end/claude-api/shared/error-codes.md +233 -0
- package/skills/front-end/claude-api/shared/live-sources.md +143 -0
- package/skills/front-end/claude-api/shared/managed-agents-api-reference.md +422 -0
- package/skills/front-end/claude-api/shared/managed-agents-client-patterns.md +211 -0
- package/skills/front-end/claude-api/shared/managed-agents-core.md +252 -0
- package/skills/front-end/claude-api/shared/managed-agents-environments.md +219 -0
- package/skills/front-end/claude-api/shared/managed-agents-events.md +220 -0
- package/skills/front-end/claude-api/shared/managed-agents-memory.md +197 -0
- package/skills/front-end/claude-api/shared/managed-agents-multiagent.md +99 -0
- package/skills/front-end/claude-api/shared/managed-agents-onboarding.md +144 -0
- package/skills/front-end/claude-api/shared/managed-agents-outcomes.md +106 -0
- package/skills/front-end/claude-api/shared/managed-agents-overview.md +71 -0
- package/skills/front-end/claude-api/shared/managed-agents-scheduled-deployments.md +144 -0
- package/skills/front-end/claude-api/shared/managed-agents-self-hosted-sandboxes.md +174 -0
- package/skills/front-end/claude-api/shared/managed-agents-tools.md +358 -0
- package/skills/front-end/claude-api/shared/managed-agents-webhooks.md +110 -0
- package/skills/front-end/claude-api/shared/model-migration.md +1135 -0
- package/skills/front-end/claude-api/shared/models.md +132 -0
- package/skills/front-end/claude-api/shared/prompt-caching.md +223 -0
- package/skills/front-end/claude-api/shared/token-counting.md +56 -0
- package/skills/front-end/claude-api/shared/tool-use-concepts.md +347 -0
- package/skills/front-end/claude-api/typescript/claude-api/README.md +372 -0
- package/skills/front-end/claude-api/typescript/claude-api/batches.md +106 -0
- package/skills/front-end/claude-api/typescript/claude-api/files-api.md +98 -0
- package/skills/front-end/claude-api/typescript/claude-api/streaming.md +178 -0
- package/skills/front-end/claude-api/typescript/claude-api/tool-use.md +527 -0
- package/skills/front-end/claude-api/typescript/managed-agents/README.md +357 -0
- package/skills/front-end/doc-coauthoring/SKILL.md +375 -0
- package/skills/front-end/docx/LICENSE.txt +30 -0
- package/skills/front-end/docx/SKILL.md +590 -0
- package/skills/front-end/docx/scripts/__init__.py +1 -0
- package/skills/front-end/docx/scripts/accept_changes.py +135 -0
- package/skills/front-end/docx/scripts/comment.py +318 -0
- package/skills/front-end/docx/scripts/office/helpers/__init__.py +0 -0
- package/skills/front-end/docx/scripts/office/helpers/merge_runs.py +199 -0
- package/skills/front-end/docx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/skills/front-end/docx/scripts/office/pack.py +159 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/front-end/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/front-end/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/front-end/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/front-end/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/front-end/docx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/skills/front-end/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/front-end/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/front-end/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/front-end/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/front-end/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/front-end/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/front-end/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/front-end/docx/scripts/office/soffice.py +183 -0
- package/skills/front-end/docx/scripts/office/unpack.py +132 -0
- package/skills/front-end/docx/scripts/office/validate.py +111 -0
- package/skills/front-end/docx/scripts/office/validators/__init__.py +15 -0
- package/skills/front-end/docx/scripts/office/validators/base.py +847 -0
- package/skills/front-end/docx/scripts/office/validators/docx.py +446 -0
- package/skills/front-end/docx/scripts/office/validators/pptx.py +275 -0
- package/skills/front-end/docx/scripts/office/validators/redlining.py +247 -0
- package/skills/front-end/docx/scripts/templates/comments.xml +3 -0
- package/skills/front-end/docx/scripts/templates/commentsExtended.xml +3 -0
- package/skills/front-end/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/skills/front-end/docx/scripts/templates/commentsIds.xml +3 -0
- package/skills/front-end/docx/scripts/templates/people.xml +3 -0
- package/skills/front-end/frontend-design/LICENSE.txt +177 -0
- package/skills/front-end/frontend-design/SKILL.md +55 -0
- package/skills/front-end/frontend-slides/SKILL.md +380 -0
- package/skills/front-end/frontend-slides/STYLE_PRESETS.md +346 -0
- package/skills/front-end/frontend-slides/animation-patterns.md +110 -0
- package/skills/front-end/frontend-slides/bold-template-pack/README.md +77 -0
- package/skills/front-end/frontend-slides/bold-template-pack/deck-stage.js +619 -0
- package/skills/front-end/frontend-slides/bold-template-pack/selection-index.json +858 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/8-bit-orbit/design.md +573 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/8-bit-orbit/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/biennale-yellow/design.md +579 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/biennale-yellow/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/block-frame/design.md +609 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/block-frame/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/blue-professional/design.md +712 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/blue-professional/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/bold-poster/design.md +713 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/bold-poster/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/broadside/design.md +504 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/broadside/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/capsule/design.md +569 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/capsule/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/cartesian/design.md +524 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/cartesian/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/cobalt-grid/design.md +564 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/cobalt-grid/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/coral/design.md +615 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/coral/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/creative-mode/design.md +566 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/creative-mode/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/daisy-days/design.md +510 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/daisy-days/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/editorial-forest/design.md +508 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/editorial-forest/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/editorial-tri-tone/design.md +601 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/editorial-tri-tone/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/emerald-editorial/design.md +613 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/emerald-editorial/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/grove/design.md +570 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/grove/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/long-table/design.md +594 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/long-table/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/mat/design.md +474 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/mat/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/monochrome/design.md +493 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/monochrome/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/neo-grid-bold/design.md +564 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/neo-grid-bold/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/peoples-platform/design.md +701 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/peoples-platform/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/pin-and-paper/design.md +641 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/pin-and-paper/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/pink-script/design.md +673 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/pink-script/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/playful/design.md +491 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/playful/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/raw-grid/design.md +487 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/raw-grid/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/retro-windows/design.md +578 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/retro-windows/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/retro-zine/design.md +569 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/retro-zine/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/sakura-chroma/design.md +627 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/sakura-chroma/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/scatterbrain/design.md +575 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/scatterbrain/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/signal/design.md +528 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/signal/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/soft-editorial/design.md +626 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/soft-editorial/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/stencil-tablet/design.md +678 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/stencil-tablet/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/studio/design.md +497 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/studio/preview.md +55 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/vellum/design.md +547 -0
- package/skills/front-end/frontend-slides/bold-template-pack/templates/vellum/preview.md +55 -0
- package/skills/front-end/frontend-slides/html-template.md +350 -0
- package/skills/front-end/frontend-slides/scripts/deploy.sh +218 -0
- package/skills/front-end/frontend-slides/scripts/export-pdf.sh +418 -0
- package/skills/front-end/frontend-slides/scripts/extract-pptx.py +96 -0
- package/skills/front-end/frontend-slides/viewport-base.css +133 -0
- package/skills/front-end/internal-comms/LICENSE.txt +202 -0
- package/skills/front-end/internal-comms/SKILL.md +32 -0
- package/skills/front-end/internal-comms/examples/3p-updates.md +47 -0
- package/skills/front-end/internal-comms/examples/company-newsletter.md +65 -0
- package/skills/front-end/internal-comms/examples/faq-answers.md +30 -0
- package/skills/front-end/internal-comms/examples/general-comms.md +16 -0
- package/skills/front-end/mcp-builder/LICENSE.txt +202 -0
- package/skills/front-end/mcp-builder/SKILL.md +236 -0
- package/skills/front-end/mcp-builder/reference/evaluation.md +602 -0
- package/skills/front-end/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/skills/front-end/mcp-builder/reference/node_mcp_server.md +970 -0
- package/skills/front-end/mcp-builder/reference/python_mcp_server.md +719 -0
- package/skills/front-end/mcp-builder/scripts/connections.py +151 -0
- package/skills/front-end/mcp-builder/scripts/evaluation.py +373 -0
- package/skills/front-end/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/front-end/mcp-builder/scripts/requirements.txt +2 -0
- package/skills/front-end/pdf/LICENSE.txt +30 -0
- package/skills/front-end/pdf/SKILL.md +314 -0
- package/skills/front-end/pdf/forms.md +294 -0
- package/skills/front-end/pdf/reference.md +612 -0
- package/skills/front-end/pdf/scripts/check_bounding_boxes.py +65 -0
- package/skills/front-end/pdf/scripts/check_fillable_fields.py +11 -0
- package/skills/front-end/pdf/scripts/convert_pdf_to_images.py +33 -0
- package/skills/front-end/pdf/scripts/create_validation_image.py +37 -0
- package/skills/front-end/pdf/scripts/extract_form_field_info.py +122 -0
- package/skills/front-end/pdf/scripts/extract_form_structure.py +115 -0
- package/skills/front-end/pdf/scripts/fill_fillable_fields.py +98 -0
- package/skills/front-end/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
- package/skills/front-end/pptx/LICENSE.txt +30 -0
- package/skills/front-end/pptx/SKILL.md +232 -0
- package/skills/front-end/pptx/editing.md +205 -0
- package/skills/front-end/pptx/pptxgenjs.md +420 -0
- package/skills/front-end/pptx/scripts/__init__.py +0 -0
- package/skills/front-end/pptx/scripts/add_slide.py +195 -0
- package/skills/front-end/pptx/scripts/clean.py +286 -0
- package/skills/front-end/pptx/scripts/office/helpers/__init__.py +0 -0
- package/skills/front-end/pptx/scripts/office/helpers/merge_runs.py +199 -0
- package/skills/front-end/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/skills/front-end/pptx/scripts/office/pack.py +159 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/front-end/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/front-end/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/front-end/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/front-end/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/front-end/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/skills/front-end/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/front-end/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/front-end/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/front-end/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/front-end/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/front-end/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/front-end/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/front-end/pptx/scripts/office/soffice.py +183 -0
- package/skills/front-end/pptx/scripts/office/unpack.py +132 -0
- package/skills/front-end/pptx/scripts/office/validate.py +111 -0
- package/skills/front-end/pptx/scripts/office/validators/__init__.py +15 -0
- package/skills/front-end/pptx/scripts/office/validators/base.py +847 -0
- package/skills/front-end/pptx/scripts/office/validators/docx.py +446 -0
- package/skills/front-end/pptx/scripts/office/validators/pptx.py +275 -0
- package/skills/front-end/pptx/scripts/office/validators/redlining.py +247 -0
- package/skills/front-end/pptx/scripts/thumbnail.py +289 -0
- package/skills/front-end/skill-creator/LICENSE.txt +202 -0
- package/skills/front-end/skill-creator/SKILL.md +485 -0
- package/skills/front-end/skill-creator/agents/analyzer.md +274 -0
- package/skills/front-end/skill-creator/agents/comparator.md +202 -0
- package/skills/front-end/skill-creator/agents/grader.md +223 -0
- package/skills/front-end/skill-creator/assets/eval_review.html +146 -0
- package/skills/front-end/skill-creator/eval-viewer/generate_review.py +471 -0
- package/skills/front-end/skill-creator/eval-viewer/viewer.html +1325 -0
- package/skills/front-end/skill-creator/references/schemas.md +430 -0
- package/skills/front-end/skill-creator/scripts/__init__.py +0 -0
- package/skills/front-end/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/skills/front-end/skill-creator/scripts/generate_report.py +326 -0
- package/skills/front-end/skill-creator/scripts/improve_description.py +247 -0
- package/skills/front-end/skill-creator/scripts/package_skill.py +136 -0
- package/skills/front-end/skill-creator/scripts/quick_validate.py +103 -0
- package/skills/front-end/skill-creator/scripts/run_eval.py +310 -0
- package/skills/front-end/skill-creator/scripts/run_loop.py +328 -0
- package/skills/front-end/skill-creator/scripts/utils.py +47 -0
- package/skills/front-end/slack-gif-creator/LICENSE.txt +202 -0
- package/skills/front-end/slack-gif-creator/SKILL.md +254 -0
- package/skills/front-end/slack-gif-creator/core/easing.py +234 -0
- package/skills/front-end/slack-gif-creator/core/frame_composer.py +176 -0
- package/skills/front-end/slack-gif-creator/core/gif_builder.py +269 -0
- package/skills/front-end/slack-gif-creator/core/validators.py +136 -0
- package/skills/front-end/slack-gif-creator/requirements.txt +4 -0
- package/skills/front-end/web-artifacts-builder/LICENSE.txt +202 -0
- package/skills/front-end/web-artifacts-builder/SKILL.md +74 -0
- package/skills/front-end/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/skills/front-end/web-artifacts-builder/scripts/init-artifact.sh +322 -0
- package/skills/front-end/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/skills/front-end/webapp-testing/LICENSE.txt +202 -0
- package/skills/front-end/webapp-testing/SKILL.md +96 -0
- package/skills/front-end/webapp-testing/examples/console_logging.py +35 -0
- package/skills/front-end/webapp-testing/examples/element_discovery.py +40 -0
- package/skills/front-end/webapp-testing/examples/static_html_automation.py +33 -0
- package/skills/front-end/webapp-testing/scripts/with_server.py +106 -0
- package/skills/front-end/xlsx/LICENSE.txt +30 -0
- package/skills/front-end/xlsx/SKILL.md +292 -0
- package/skills/front-end/xlsx/scripts/office/helpers/__init__.py +0 -0
- package/skills/front-end/xlsx/scripts/office/helpers/merge_runs.py +199 -0
- package/skills/front-end/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
- package/skills/front-end/xlsx/scripts/office/pack.py +159 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/front-end/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/front-end/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
- package/skills/front-end/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/front-end/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/front-end/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/front-end/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/front-end/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/front-end/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/front-end/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/front-end/xlsx/scripts/office/soffice.py +183 -0
- package/skills/front-end/xlsx/scripts/office/unpack.py +132 -0
- package/skills/front-end/xlsx/scripts/office/validate.py +111 -0
- package/skills/front-end/xlsx/scripts/office/validators/__init__.py +15 -0
- package/skills/front-end/xlsx/scripts/office/validators/base.py +847 -0
- package/skills/front-end/xlsx/scripts/office/validators/docx.py +446 -0
- package/skills/front-end/xlsx/scripts/office/validators/pptx.py +275 -0
- package/skills/front-end/xlsx/scripts/office/validators/redlining.py +247 -0
- package/skills/front-end/xlsx/scripts/recalc.py +184 -0
- package/skills/languages/c/SKILL.md +74 -0
- package/skills/languages/clojure/SKILL.md +73 -0
- package/skills/languages/cpp/SKILL.md +75 -0
- package/skills/languages/csharp/SKILL.md +75 -0
- package/skills/languages/dart/SKILL.md +82 -0
- package/skills/languages/elixir/SKILL.md +74 -0
- package/skills/languages/erlang/SKILL.md +76 -0
- package/skills/languages/go/SKILL.md +83 -0
- package/skills/languages/haskell/SKILL.md +70 -0
- package/skills/languages/java/SKILL.md +71 -0
- package/skills/languages/javascript/SKILL.md +62 -0
- package/skills/languages/kotlin/SKILL.md +68 -0
- package/skills/languages/lua/SKILL.md +79 -0
- package/skills/languages/objectivec/SKILL.md +83 -0
- package/skills/languages/php/SKILL.md +74 -0
- package/skills/languages/python/SKILL.md +68 -0
- package/skills/languages/r/SKILL.md +70 -0
- package/skills/languages/ruby/SKILL.md +67 -0
- package/skills/languages/rust/SKILL.md +72 -0
- package/skills/languages/scala/SKILL.md +73 -0
- package/skills/languages/swift/SKILL.md +73 -0
- package/skills/languages/typescript/SKILL.md +69 -0
- package/skills/meta/authoring-agent-skills/SKILL.md +73 -0
- package/skills/meta/progressive-disclosure/SKILL.md +65 -0
- package/skills/meta/skill-frontmatter-spec/SKILL.md +65 -0
- package/skills/process/adr-technical-decisions/SKILL.md +59 -0
- package/skills/process/app-planning/SKILL.md +63 -0
- package/skills/process/architecture-before-code/SKILL.md +52 -0
- package/skills/process/breaking-work-into-sprints/SKILL.md +53 -0
- package/skills/process/idea-to-product/SKILL.md +50 -0
- package/skills/process/mocks-and-screen-flows/SKILL.md +52 -0
- package/skills/process/prioritization-moscow-rice/SKILL.md +64 -0
- package/skills/process/problem-framing/SKILL.md +51 -0
- package/skills/process/product-discovery/SKILL.md +53 -0
- package/skills/process/readme-generation/SKILL.md +90 -0
- package/skills/process/requirements-to-specs/SKILL.md +53 -0
- package/skills/process/research-official-docs/SKILL.md +58 -0
- package/skills/process/review-code-perf-security/SKILL.md +65 -0
- package/skills/process/security-by-design/SKILL.md +68 -0
- package/skills/process/specs-to-issues/SKILL.md +53 -0
- package/skills/process/testing-before-done/SKILL.md +61 -0
- package/skills/process/validating-ux-navigation/SKILL.md +63 -0
- package/skills/references/ai-attachments-ui/SKILL.md +66 -0
- package/skills/references/ai-in-browser-webllm/SKILL.md +74 -0
- package/skills/references/ai-tool-ui-patterns/SKILL.md +63 -0
- package/skills/references/component-patterns-gallery/SKILL.md +62 -0
- package/skills/references/gradient-resources/SKILL.md +66 -0
- package/skills/references/react-component-libraries/SKILL.md +61 -0
- package/skills/references/saas-landing-patterns/SKILL.md +67 -0
- package/skills/references/shadcn-tailwind-theming/SKILL.md +74 -0
- package/skills/references/vercel-ai-sdk-elements/SKILL.md +66 -0
- package/skills/references/web-animation-codrops/SKILL.md +68 -0
- package/skills/stacks/aiml/jupyter/SKILL.md +68 -0
- package/skills/stacks/aiml/keras/SKILL.md +77 -0
- package/skills/stacks/aiml/numpy/SKILL.md +69 -0
- package/skills/stacks/aiml/pandas/SKILL.md +72 -0
- package/skills/stacks/aiml/pytorch/SKILL.md +77 -0
- package/skills/stacks/aiml/scikit-learn/SKILL.md +74 -0
- package/skills/stacks/aiml/tensorflow/SKILL.md +79 -0
- package/skills/stacks/auth/auth0/SKILL.md +63 -0
- package/skills/stacks/auth/authjs/SKILL.md +69 -0
- package/skills/stacks/auth/clerk/SKILL.md +72 -0
- package/skills/stacks/auth/keycloak/SKILL.md +63 -0
- package/skills/stacks/auth/lucia/SKILL.md +56 -0
- package/skills/stacks/auth/passport/SKILL.md +70 -0
- package/skills/stacks/auth/supabase-auth/SKILL.md +66 -0
- package/skills/stacks/baas/amplify/SKILL.md +71 -0
- package/skills/stacks/baas/appwrite/SKILL.md +79 -0
- package/skills/stacks/baas/firebase/SKILL.md +73 -0
- package/skills/stacks/baas/heroku/SKILL.md +71 -0
- package/skills/stacks/backend/actix/SKILL.md +77 -0
- package/skills/stacks/backend/adonisjs/SKILL.md +65 -0
- package/skills/stacks/backend/aspnet-core/SKILL.md +75 -0
- package/skills/stacks/backend/codeigniter/SKILL.md +76 -0
- package/skills/stacks/backend/django/SKILL.md +62 -0
- package/skills/stacks/backend/express/SKILL.md +65 -0
- package/skills/stacks/backend/fastapi/SKILL.md +64 -0
- package/skills/stacks/backend/fastify/SKILL.md +64 -0
- package/skills/stacks/backend/fiber/SKILL.md +68 -0
- package/skills/stacks/backend/flask/SKILL.md +71 -0
- package/skills/stacks/backend/gin/SKILL.md +68 -0
- package/skills/stacks/backend/graphql/SKILL.md +70 -0
- package/skills/stacks/backend/hono/SKILL.md +64 -0
- package/skills/stacks/backend/koa/SKILL.md +63 -0
- package/skills/stacks/backend/laravel/SKILL.md +73 -0
- package/skills/stacks/backend/nestjs/SKILL.md +70 -0
- package/skills/stacks/backend/nginx/SKILL.md +77 -0
- package/skills/stacks/backend/phoenix/SKILL.md +68 -0
- package/skills/stacks/backend/rails/SKILL.md +67 -0
- package/skills/stacks/backend/spring/SKILL.md +70 -0
- package/skills/stacks/backend/spring-boot/SKILL.md +70 -0
- package/skills/stacks/backend/symfony/SKILL.md +77 -0
- package/skills/stacks/container/containerd/SKILL.md +75 -0
- package/skills/stacks/container/docker/SKILL.md +90 -0
- package/skills/stacks/container/podman/SKILL.md +93 -0
- package/skills/stacks/database/cassandra/SKILL.md +74 -0
- package/skills/stacks/database/cockroachdb/SKILL.md +69 -0
- package/skills/stacks/database/dynamodb/SKILL.md +62 -0
- package/skills/stacks/database/mariadb/SKILL.md +71 -0
- package/skills/stacks/database/mongodb/SKILL.md +71 -0
- package/skills/stacks/database/mysql/SKILL.md +72 -0
- package/skills/stacks/database/neon/SKILL.md +68 -0
- package/skills/stacks/database/planetscale/SKILL.md +70 -0
- package/skills/stacks/database/postgresql/SKILL.md +81 -0
- package/skills/stacks/database/redis/SKILL.md +78 -0
- package/skills/stacks/database/sqlite/SKILL.md +70 -0
- package/skills/stacks/database/supabase/SKILL.md +79 -0
- package/skills/stacks/dataviz/chart-js/SKILL.md +72 -0
- package/skills/stacks/dataviz/d3/SKILL.md +77 -0
- package/skills/stacks/dataviz/grafana/SKILL.md +69 -0
- package/skills/stacks/dataviz/plotly/SKILL.md +71 -0
- package/skills/stacks/frontend/alpine/SKILL.md +75 -0
- package/skills/stacks/frontend/angular/SKILL.md +75 -0
- package/skills/stacks/frontend/backbone/SKILL.md +82 -0
- package/skills/stacks/frontend/ember/SKILL.md +85 -0
- package/skills/stacks/frontend/htmx/SKILL.md +73 -0
- package/skills/stacks/frontend/lit/SKILL.md +76 -0
- package/skills/stacks/frontend/preact/SKILL.md +74 -0
- package/skills/stacks/frontend/qwik/SKILL.md +65 -0
- package/skills/stacks/frontend/react/SKILL.md +77 -0
- package/skills/stacks/frontend/solidjs/SKILL.md +75 -0
- package/skills/stacks/frontend/svelte/SKILL.md +70 -0
- package/skills/stacks/frontend/vue/SKILL.md +69 -0
- package/skills/stacks/infra/ansible/SKILL.md +76 -0
- package/skills/stacks/infra/aws/SKILL.md +66 -0
- package/skills/stacks/infra/azure/SKILL.md +72 -0
- package/skills/stacks/infra/circleci/SKILL.md +78 -0
- package/skills/stacks/infra/cloudflare/SKILL.md +65 -0
- package/skills/stacks/infra/fly-io/SKILL.md +63 -0
- package/skills/stacks/infra/gcp/SKILL.md +66 -0
- package/skills/stacks/infra/jenkins/SKILL.md +73 -0
- package/skills/stacks/infra/kubernetes/SKILL.md +64 -0
- package/skills/stacks/infra/netlify/SKILL.md +60 -0
- package/skills/stacks/infra/railway/SKILL.md +63 -0
- package/skills/stacks/infra/tailscale/SKILL.md +65 -0
- package/skills/stacks/infra/terraform/SKILL.md +75 -0
- package/skills/stacks/infra/vagrant/SKILL.md +70 -0
- package/skills/stacks/infra/vercel/SKILL.md +60 -0
- package/skills/stacks/meta/astro/SKILL.md +64 -0
- package/skills/stacks/meta/docusaurus/SKILL.md +71 -0
- package/skills/stacks/meta/eleventy/SKILL.md +69 -0
- package/skills/stacks/meta/gatsby/SKILL.md +63 -0
- package/skills/stacks/meta/hugo/SKILL.md +73 -0
- package/skills/stacks/meta/jekyll/SKILL.md +70 -0
- package/skills/stacks/meta/nextjs/SKILL.md +62 -0
- package/skills/stacks/meta/nuxt/SKILL.md +66 -0
- package/skills/stacks/meta/remix/SKILL.md +67 -0
- package/skills/stacks/meta/sveltekit/SKILL.md +70 -0
- package/skills/stacks/meta/vite/SKILL.md +63 -0
- package/skills/stacks/mobile/android/SKILL.md +77 -0
- package/skills/stacks/mobile/flutter/SKILL.md +77 -0
- package/skills/stacks/mobile/ionic/SKILL.md +72 -0
- package/skills/stacks/mobile/nativescript/SKILL.md +71 -0
- package/skills/stacks/mobile/react-native/SKILL.md +75 -0
- package/skills/stacks/mobile/xamarin/SKILL.md +73 -0
- package/skills/stacks/orm/diesel/SKILL.md +72 -0
- package/skills/stacks/orm/django-orm/SKILL.md +58 -0
- package/skills/stacks/orm/drizzle/SKILL.md +67 -0
- package/skills/stacks/orm/gorm/SKILL.md +73 -0
- package/skills/stacks/orm/knex/SKILL.md +64 -0
- package/skills/stacks/orm/mongoose/SKILL.md +64 -0
- package/skills/stacks/orm/prisma/SKILL.md +64 -0
- package/skills/stacks/orm/sequelize/SKILL.md +65 -0
- package/skills/stacks/orm/sqlalchemy/SKILL.md +71 -0
- package/skills/stacks/orm/typeorm/SKILL.md +70 -0
- package/skills/stacks/queue/bullmq/SKILL.md +69 -0
- package/skills/stacks/queue/celery/SKILL.md +68 -0
- package/skills/stacks/queue/kafka/SKILL.md +66 -0
- package/skills/stacks/queue/nats/SKILL.md +66 -0
- package/skills/stacks/queue/rabbitmq/SKILL.md +64 -0
- package/skills/stacks/queue/redis/SKILL.md +66 -0
- package/skills/stacks/runtime/beam/SKILL.md +72 -0
- package/skills/stacks/runtime/bun/SKILL.md +80 -0
- package/skills/stacks/runtime/deno/SKILL.md +74 -0
- package/skills/stacks/runtime/dotnet/SKILL.md +64 -0
- package/skills/stacks/runtime/jvm/SKILL.md +66 -0
- package/skills/stacks/runtime/node/SKILL.md +70 -0
- package/skills/stacks/runtime/pypy/SKILL.md +69 -0
- package/skills/stacks/runtime/python3/SKILL.md +70 -0
- package/skills/stacks/styling/bootstrap/SKILL.md +74 -0
- package/skills/stacks/styling/bulma/SKILL.md +80 -0
- package/skills/stacks/styling/chakra-ui/SKILL.md +61 -0
- package/skills/stacks/styling/css-modules/SKILL.md +54 -0
- package/skills/stacks/styling/mui/SKILL.md +60 -0
- package/skills/stacks/styling/sass/SKILL.md +63 -0
- package/skills/stacks/styling/shadcn-ui/SKILL.md +58 -0
- package/skills/stacks/styling/styled-components/SKILL.md +62 -0
- package/skills/stacks/styling/tailwind/SKILL.md +59 -0
- package/skills/stacks/styling/unocss/SKILL.md +64 -0
- package/skills/stacks/styling/vanilla-extract/SKILL.md +64 -0
- package/skills/stacks/styling/vuetify/SKILL.md +89 -0
- package/skills/stacks/testing/cypress/SKILL.md +68 -0
- package/skills/stacks/testing/jasmine/SKILL.md +67 -0
- package/skills/stacks/testing/jest/SKILL.md +67 -0
- package/skills/stacks/testing/mocha/SKILL.md +71 -0
- package/skills/stacks/testing/playwright/SKILL.md +68 -0
- package/skills/stacks/testing/puppeteer/SKILL.md +70 -0
- package/skills/stacks/testing/selenium/SKILL.md +70 -0
- package/skills/stacks/testing/vitest/SKILL.md +68 -0
|
@@ -0,0 +1,869 @@
|
|
|
1
|
+
"use strict";exports.id=3234,exports.ids=[3234],exports.modules={4370:(a,b,c)=>{c.d(b,{hB:()=>t,xF:()=>u});let d=[{c1:"0E0D17",c2:"E0A44E"},{c1:"0B1120",c2:"38BDF8"},{c1:"1A0B2E",c2:"A855F7"},{c1:"0A1F1C",c2:"2DD4BF"},{c1:"1F0A0A",c2:"F87171"},{c1:"0A0A1F",c2:"6366F1"},{c1:"131A0A",c2:"A3E635"},{c1:"1F140A",c2:"FB923C"}];function e(a){let b=0;for(let c=0;c<a.length;c++)b=31*b+a.charCodeAt(c)>>>0;return d[b%d.length]}let f=a=>(a||"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");function g(a){return Object.values(a||{}).filter(a=>a&&"None"!==a).slice(0,10).join(" \xb7 ")}function h(a){let b=e(a.company),c=a.objective?.trim()||"this product",d=g(a.stack);return`<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>${f(a.company)}</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root { color-scheme: dark; }
|
|
9
|
+
* { box-sizing: border-box; }
|
|
10
|
+
body { margin: 0; min-height: 100vh; display: grid; place-items: center; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
|
|
11
|
+
background: radial-gradient(1200px 800px at 70% -10%, #${b.c2}33, transparent), linear-gradient(160deg, #${b.c1}, #05060d); color: #e8eaf2; }
|
|
12
|
+
.card { max-width: 680px; padding: 48px 44px; text-align: center; }
|
|
13
|
+
.badge { display: inline-block; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: #${b.c2}; border: 1px solid #${b.c2}55; border-radius: 999px; padding: 5px 14px; margin-bottom: 22px; }
|
|
14
|
+
h1 { font-size: 52px; margin: 0 0 14px; background: linear-gradient(120deg, #fff, #${b.c2}); -webkit-background-clip: text; background-clip: text; color: transparent; }
|
|
15
|
+
.mission { font-size: 17px; line-height: 1.6; color: #c3c7d6; margin: 0 0 26px; }
|
|
16
|
+
.build { font-size: 14px; color: #9aa0b8; background: #ffffff0a; border: 1px solid #ffffff14; border-radius: 12px; padding: 14px 18px; margin-bottom: 22px; }
|
|
17
|
+
.build b { color: #${b.c2}; }
|
|
18
|
+
.chips { font-size: 12px; color: #8b90a8; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; margin-bottom: 30px; }
|
|
19
|
+
.foot { font-size: 12px; color: #6b7088; }
|
|
20
|
+
.dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: #${b.c2}; margin-right: 7px; box-shadow: 0 0 12px #${b.c2}; animation: pulse 1.8s ease-in-out infinite; }
|
|
21
|
+
@keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: .4; } }
|
|
22
|
+
</style>
|
|
23
|
+
</head>
|
|
24
|
+
<body>
|
|
25
|
+
<div class="card">
|
|
26
|
+
<span class="badge">● Live starter</span>
|
|
27
|
+
<h1>${f(a.company)}</h1>
|
|
28
|
+
<p class="mission">${f(a.mission||"Your project, scaffolded and running.")}</p>
|
|
29
|
+
<div class="build"><span class="dot"></span>Your AI team is building <b>${f(c)}</b> on top of this starter.</div>
|
|
30
|
+
${d?`<div class="chips">${f(d)}</div>`:""}
|
|
31
|
+
<div class="foot">Runnable starter scaffolded by Constella \xb7 edit these files to build the product.</div>
|
|
32
|
+
</div>
|
|
33
|
+
</body>
|
|
34
|
+
</html>`}let i=`node_modules
|
|
35
|
+
.next
|
|
36
|
+
dist
|
|
37
|
+
build
|
|
38
|
+
.env
|
|
39
|
+
.env.local
|
|
40
|
+
*.log
|
|
41
|
+
.DS_Store
|
|
42
|
+
`,j=`__pycache__/
|
|
43
|
+
*.pyc
|
|
44
|
+
.venv/
|
|
45
|
+
venv/
|
|
46
|
+
.env
|
|
47
|
+
*.log
|
|
48
|
+
.constella-pyinstalled
|
|
49
|
+
`,k=`/bin/
|
|
50
|
+
*.exe
|
|
51
|
+
.env
|
|
52
|
+
*.log
|
|
53
|
+
`,l=`/target
|
|
54
|
+
.env
|
|
55
|
+
*.log
|
|
56
|
+
`,m=`# Copy to .env and fill in. The dev server binds the PORT chosen by Test Dev.
|
|
57
|
+
PORT=
|
|
58
|
+
`,n=(a,b)=>JSON.stringify({name:a||"project",version:"0.1.0",private:!0,...b},null,2)+"\n";function o(a,b){let c,d,e="static"===b?"http":"node-express"===b?"express":"node-fastify"===b?"fastify":"node-koa"===b?"koa":"hono",f="express"===e?{express:"^4.19.2"}:"fastify"===e?{fastify:"^4.28.1"}:"koa"===e?{koa:"^2.15.3"}:"hono"===e?{hono:"^4.5.0","@hono/node-server":"^1.12.0"}:{};return[["package.json",n(a.slug,{scripts:{dev:"node server.js",start:"node server.js"},...Object.keys(f).length?{dependencies:f}:{}})],["server.js",(c=JSON.stringify(h(a)),d=`const PORT = Number(process.env.PORT) || 3000;
|
|
59
|
+
const HTML = ${c};
|
|
60
|
+
`,"http"===e?`const http = require("http");
|
|
61
|
+
${d}http.createServer((req, res) => { res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" }); res.end(HTML); }).listen(PORT, "127.0.0.1", () => console.log("listening on http://127.0.0.1:" + PORT));
|
|
62
|
+
`:"express"===e?`const express = require("express");
|
|
63
|
+
${d}const app = express();
|
|
64
|
+
app.get("/", (_req, res) => res.type("html").send(HTML));
|
|
65
|
+
app.listen(PORT, "127.0.0.1", () => console.log("listening on http://127.0.0.1:" + PORT));
|
|
66
|
+
`:"fastify"===e?`const Fastify = require("fastify");
|
|
67
|
+
${d}const app = Fastify();
|
|
68
|
+
app.get("/", (_req, reply) => reply.type("text/html").send(HTML));
|
|
69
|
+
app.listen({ port: PORT, host: "127.0.0.1" }).then(() => console.log("listening on http://127.0.0.1:" + PORT));
|
|
70
|
+
`:"koa"===e?`const Koa = require("koa");
|
|
71
|
+
${d}const app = new Koa();
|
|
72
|
+
app.use((ctx) => { ctx.type = "html"; ctx.body = HTML; });
|
|
73
|
+
app.listen(PORT, "127.0.0.1", () => console.log("listening on http://127.0.0.1:" + PORT));
|
|
74
|
+
`:`const { serve } = require("@hono/node-server");
|
|
75
|
+
const { Hono } = require("hono");
|
|
76
|
+
${d}const app = new Hono();
|
|
77
|
+
app.get("/", (c) => c.html(HTML));
|
|
78
|
+
serve({ fetch: app.fetch, port: PORT, hostname: "127.0.0.1" }, () => console.log("listening on http://127.0.0.1:" + PORT));
|
|
79
|
+
`)],[".gitignore",i],[".env.example",m]]}function p(a){return{p:e(a.company),obj:a.objective?.trim()||"this product",chips:g(a.stack)}}function q(a){let b=e(a.company);return`:root{color-scheme:dark}body{margin:0;min-height:100vh;display:grid;place-items:center;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;background:radial-gradient(1200px 800px at 70% -10%,#${b.c2}33,transparent),linear-gradient(160deg,#${b.c1},#05060d);color:#e8eaf2}.card{max-width:680px;padding:48px 44px;text-align:center}.badge{display:inline-block;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#${b.c2};border:1px solid #${b.c2}55;border-radius:999px;padding:5px 14px;margin-bottom:22px}h1{font-size:52px;margin:0 0 14px;background:linear-gradient(120deg,#fff,#${b.c2});-webkit-background-clip:text;background-clip:text;color:transparent}.mission{font-size:17px;line-height:1.6;color:#c3c7d6;margin:0 0 26px}.build{font-size:14px;color:#9aa0b8;background:#ffffff0a;border:1px solid #ffffff14;border-radius:12px;padding:14px 18px;margin-bottom:22px}.build b{color:#${b.c2}}.chips{font-size:12px;color:#8b90a8;font-family:ui-monospace,monospace;margin-bottom:30px}.foot{font-size:12px;color:#6b7088}
|
|
80
|
+
`}function r(a){return`HTML = """${h(a)}"""
|
|
81
|
+
`}let s=new Set(["Next.js","Nuxt","Remix","SvelteKit","Astro","Gatsby"]);function t(a){let b=a||{},c=b.meta,d=b.frontend,e=b.backend,f=b.language;return"Next.js"===c?"next":"HTML/CSS"===d||"Vanilla JS"===d||"Static (no framework)"===c?"static":"Vite (SPA)"===c||d&&"None"!==d&&(!c||"None"===c||s.has(c))?"Vue"===d?"vite-vue":"Svelte"===d||"SvelteKit"===c?"vite-svelte":"vite-react":"Express"===e?"node-express":"Fastify"===e?"node-fastify":"Koa"===e?"node-koa":"Hono"===e?"node-hono":"NestJS"===e?"node-nest":"FastAPI"===e?"fastapi":"Flask"===e?"flask":"Django"===e?"django":"Gin"===e?"go-gin":"Actix"===e?"rust-actix":"Python"===f?"flask":"Go"===f?"go-http":"Rust"===f?"rust-axum":"TypeScript"===f||"JavaScript"===f?"vite-react":"static"}function u(a){return{id:t(a.stack),files:function(a){var b,c;let d=t(a.stack);switch(d){case"next":return function(a){let{obj:b,chips:c}=p(a),d=`export default function Home() {
|
|
82
|
+
return (
|
|
83
|
+
<main className="card">
|
|
84
|
+
<span className="badge">● Live starter</span>
|
|
85
|
+
<h1>${JSON.stringify(a.company).slice(1,-1)}</h1>
|
|
86
|
+
<p className="mission">${JSON.stringify(a.mission||"Your project, scaffolded and running.").slice(1,-1)}</p>
|
|
87
|
+
<div className="build">Your AI team is building <b>${JSON.stringify(b).slice(1,-1)}</b> on top of this starter.</div>
|
|
88
|
+
${c?`<div className="chips">${JSON.stringify(c).slice(1,-1)}</div>`:""}
|
|
89
|
+
<div className="foot">Runnable starter scaffolded by Constella — edit app/page.tsx to build the product.</div>
|
|
90
|
+
</main>
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
`;return[["package.json",n(a.slug,{scripts:{dev:"next dev",build:"next build",start:"next start"},dependencies:{next:"^14.2.5",react:"^18.3.1","react-dom":"^18.3.1"},devDependencies:{typescript:"^5.5.4","@types/react":"^18.3.3","@types/node":"^20.14.0"}})],["next.config.mjs",`/** @type {import('next').NextConfig} */
|
|
94
|
+
export default { reactStrictMode: true };
|
|
95
|
+
`],["tsconfig.json",JSON.stringify({compilerOptions:{target:"ES2021",lib:["dom","dom.iterable","esnext"],jsx:"preserve",module:"esnext",moduleResolution:"bundler",strict:!1,skipLibCheck:!0,esModuleInterop:!0,plugins:[{name:"next"}],incremental:!0},include:["next-env.d.ts","**/*.ts","**/*.tsx"],exclude:["node_modules"]},null,2)+"\n"],["next-env.d.ts",`/// <reference types="next" />
|
|
96
|
+
/// <reference types="next/image-types/global" />
|
|
97
|
+
`],["app/layout.tsx",`import "./globals.css";
|
|
98
|
+
export const metadata = { title: ${JSON.stringify(a.company)} };
|
|
99
|
+
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
|
100
|
+
return (<html lang="en"><body>{children}</body></html>);
|
|
101
|
+
}
|
|
102
|
+
`],["app/page.tsx",d],["app/globals.css",q(a)],[".gitignore",i],[".env.example",m]]}(a);case"vite-react":return function(a){let{p:b,obj:c,chips:d}=p(a),e=`:root{color-scheme:dark}body{margin:0;min-height:100vh;display:grid;place-items:center;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;background:radial-gradient(1200px 800px at 70% -10%,#${b.c2}33,transparent),linear-gradient(160deg,#${b.c1},#05060d);color:#e8eaf2}.card{max-width:680px;padding:48px 44px;text-align:center}.badge{display:inline-block;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#${b.c2};border:1px solid #${b.c2}55;border-radius:999px;padding:5px 14px;margin-bottom:22px}h1{font-size:52px;margin:0 0 14px;background:linear-gradient(120deg,#fff,#${b.c2});-webkit-background-clip:text;background-clip:text;color:transparent}.mission{font-size:17px;line-height:1.6;color:#c3c7d6;margin:0 0 26px}.build{font-size:14px;color:#9aa0b8;background:#ffffff0a;border:1px solid #ffffff14;border-radius:12px;padding:14px 18px;margin-bottom:22px}.build b{color:#${b.c2}}.chips{font-size:12px;color:#8b90a8;font-family:ui-monospace,monospace;margin-bottom:30px}.foot{font-size:12px;color:#6b7088}`,g=`export default function App() {
|
|
103
|
+
return (
|
|
104
|
+
<div className="card">
|
|
105
|
+
<span className="badge">● Live starter</span>
|
|
106
|
+
<h1>${JSON.stringify(a.company).slice(1,-1)}</h1>
|
|
107
|
+
<p className="mission">${JSON.stringify(a.mission||"Your project, scaffolded and running.").slice(1,-1)}</p>
|
|
108
|
+
<div className="build">Your AI team is building <b>${JSON.stringify(c).slice(1,-1)}</b> on top of this starter.</div>
|
|
109
|
+
${d?`<div className="chips">${JSON.stringify(d).slice(1,-1)}</div>`:""}
|
|
110
|
+
<div className="foot">Runnable starter scaffolded by Constella — edit src/App.tsx to build the product.</div>
|
|
111
|
+
</div>
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
`;return[["package.json",n(a.slug,{scripts:{dev:"vite",build:"vite build",preview:"vite preview"},dependencies:{react:"^18.3.1","react-dom":"^18.3.1"},devDependencies:{vite:"^5.4.0","@vitejs/plugin-react":"^4.3.1",typescript:"^5.5.4","@types/react":"^18.3.3","@types/react-dom":"^18.3.0"}})],["vite.config.ts",`import { defineConfig } from "vite";
|
|
115
|
+
import react from "@vitejs/plugin-react";
|
|
116
|
+
export default defineConfig({ plugins: [react()], server: { host: "127.0.0.1", port: Number(process.env.PORT) || 5173, strictPort: false } });
|
|
117
|
+
`],["index.html",`<!doctype html>
|
|
118
|
+
<html lang="en"><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>${f(a.company)}</title></head>
|
|
119
|
+
<body><div id="root"></div><script type="module" src="/src/main.tsx"></script></body></html>
|
|
120
|
+
`],["src/main.tsx",`import React from "react";
|
|
121
|
+
import { createRoot } from "react-dom/client";
|
|
122
|
+
import App from "./App";
|
|
123
|
+
import "./index.css";
|
|
124
|
+
createRoot(document.getElementById("root")!).render(<React.StrictMode><App /></React.StrictMode>);
|
|
125
|
+
`],["src/App.tsx",g],["src/index.css",e+"\n"],["tsconfig.json",JSON.stringify({compilerOptions:{target:"ES2021",lib:["ES2021","DOM","DOM.Iterable"],jsx:"react-jsx",module:"ESNext",moduleResolution:"bundler",strict:!1,skipLibCheck:!0,esModuleInterop:!0},include:["src"]},null,2)+"\n"],[".gitignore",i],[".env.example",m]]}(a);case"vite-vue":return function(a){let{obj:b,chips:c}=p(a),d=`<template>
|
|
126
|
+
<div class="card">
|
|
127
|
+
<span class="badge">● Live starter</span>
|
|
128
|
+
<h1>{{ company }}</h1>
|
|
129
|
+
<p class="mission">{{ mission }}</p>
|
|
130
|
+
<div class="build">Your AI team is building <b>{{ objective }}</b> on top of this starter.</div>
|
|
131
|
+
<div v-if="chips" class="chips">{{ chips }}</div>
|
|
132
|
+
<div class="foot">Runnable starter scaffolded by Constella — edit src/App.vue to build the product.</div>
|
|
133
|
+
</div>
|
|
134
|
+
</template>
|
|
135
|
+
<script setup>
|
|
136
|
+
const company = ${JSON.stringify(a.company)};
|
|
137
|
+
const mission = ${JSON.stringify(a.mission||"Your project, scaffolded and running.")};
|
|
138
|
+
const objective = ${JSON.stringify(b)};
|
|
139
|
+
const chips = ${JSON.stringify(c)};
|
|
140
|
+
</script>
|
|
141
|
+
`;return[["package.json",n(a.slug,{scripts:{dev:"vite",build:"vite build",preview:"vite preview"},dependencies:{vue:"^3.4.38"},devDependencies:{vite:"^5.4.0","@vitejs/plugin-vue":"^5.1.2"}})],["vite.config.js",`import { defineConfig } from "vite";
|
|
142
|
+
import vue from "@vitejs/plugin-vue";
|
|
143
|
+
export default defineConfig({ plugins: [vue()], server: { host: "127.0.0.1", port: Number(process.env.PORT) || 5173, strictPort: false } });
|
|
144
|
+
`],["index.html",`<!doctype html>
|
|
145
|
+
<html lang="en"><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>${f(a.company)}</title></head>
|
|
146
|
+
<body><div id="app"></div><script type="module" src="/src/main.js"></script></body></html>
|
|
147
|
+
`],["src/main.js",`import { createApp } from "vue";
|
|
148
|
+
import App from "./App.vue";
|
|
149
|
+
import "./index.css";
|
|
150
|
+
createApp(App).mount("#app");
|
|
151
|
+
`],["src/App.vue",d],["src/index.css",q(a)],[".gitignore",i],[".env.example",m]]}(a);case"vite-svelte":return function(a){let{obj:b,chips:c}=p(a),d=`<script>
|
|
152
|
+
const company = ${JSON.stringify(a.company)};
|
|
153
|
+
const mission = ${JSON.stringify(a.mission||"Your project, scaffolded and running.")};
|
|
154
|
+
const objective = ${JSON.stringify(b)};
|
|
155
|
+
const chips = ${JSON.stringify(c)};
|
|
156
|
+
</script>
|
|
157
|
+
<div class="card">
|
|
158
|
+
<span class="badge">● Live starter</span>
|
|
159
|
+
<h1>{company}</h1>
|
|
160
|
+
<p class="mission">{mission}</p>
|
|
161
|
+
<div class="build">Your AI team is building <b>{objective}</b> on top of this starter.</div>
|
|
162
|
+
{#if chips}<div class="chips">{chips}</div>{/if}
|
|
163
|
+
<div class="foot">Runnable starter scaffolded by Constella — edit src/App.svelte to build the product.</div>
|
|
164
|
+
</div>
|
|
165
|
+
`;return[["package.json",n(a.slug,{scripts:{dev:"vite",build:"vite build",preview:"vite preview"},dependencies:{},devDependencies:{vite:"^5.4.0",svelte:"^4.2.19","@sveltejs/vite-plugin-svelte":"^3.1.1"}})],["vite.config.js",`import { defineConfig } from "vite";
|
|
166
|
+
import { svelte } from "@sveltejs/vite-plugin-svelte";
|
|
167
|
+
export default defineConfig({ plugins: [svelte()], server: { host: "127.0.0.1", port: Number(process.env.PORT) || 5173, strictPort: false } });
|
|
168
|
+
`],["svelte.config.js",`import { vitePreprocess } from "@sveltejs/vite-plugin-svelte";
|
|
169
|
+
export default { preprocess: vitePreprocess() };
|
|
170
|
+
`],["index.html",`<!doctype html>
|
|
171
|
+
<html lang="en"><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>${f(a.company)}</title></head>
|
|
172
|
+
<body><div id="app"></div><script type="module" src="/src/main.js"></script></body></html>
|
|
173
|
+
`],["src/main.js",`import App from "./App.svelte";
|
|
174
|
+
import "./index.css";
|
|
175
|
+
const app = new App({ target: document.getElementById("app") });
|
|
176
|
+
export default app;
|
|
177
|
+
`],["src/App.svelte",d],["src/index.css",q(a)],[".gitignore",i],[".env.example",m]]}(a);case"node-express":case"node-fastify":case"node-koa":case"node-hono":return o(a,d);case"node-nest":let g,s,u;return g=JSON.stringify(h(a)),s=`import "reflect-metadata";
|
|
178
|
+
import { Controller, Get, Module, Header } from "@nestjs/common";
|
|
179
|
+
import { NestFactory } from "@nestjs/core";
|
|
180
|
+
|
|
181
|
+
const HTML = ${g};
|
|
182
|
+
|
|
183
|
+
@Controller()
|
|
184
|
+
class AppController {
|
|
185
|
+
@Get()
|
|
186
|
+
@Header("Content-Type", "text/html")
|
|
187
|
+
home(): string { return HTML; }
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
@Module({ controllers: [AppController] })
|
|
191
|
+
class AppModule {}
|
|
192
|
+
|
|
193
|
+
async function bootstrap() {
|
|
194
|
+
const app = await NestFactory.create(AppModule, { logger: ["error", "warn"] });
|
|
195
|
+
const port = Number(process.env.PORT) || 3000;
|
|
196
|
+
await app.listen(port, "127.0.0.1");
|
|
197
|
+
console.log("listening on http://127.0.0.1:" + port);
|
|
198
|
+
}
|
|
199
|
+
bootstrap();
|
|
200
|
+
`,u=JSON.stringify({compilerOptions:{module:"commonjs",target:"ES2021",experimentalDecorators:!0,emitDecoratorMetadata:!0,esModuleInterop:!0,skipLibCheck:!0,strict:!1,outDir:"dist"}},null,2)+"\n",[["package.json",n(a.slug,{scripts:{dev:"tsx watch src/main.ts",start:"tsx src/main.ts"},dependencies:{"@nestjs/common":"^10.4.1","@nestjs/core":"^10.4.1","@nestjs/platform-express":"^10.4.1","reflect-metadata":"^0.2.2",rxjs:"^7.8.1"},devDependencies:{tsx:"^4.19.2",typescript:"^5.5.4"}})],["src/main.ts",s],["tsconfig.json",u],[".gitignore",i],[".env.example",m]];case"fastapi":return[["requirements.txt","fastapi>=0.111\nuvicorn[standard]>=0.30\n"],["main.py",`from fastapi import FastAPI
|
|
201
|
+
from fastapi.responses import HTMLResponse
|
|
202
|
+
|
|
203
|
+
${r(a)}
|
|
204
|
+
app = FastAPI()
|
|
205
|
+
|
|
206
|
+
@app.get("/", response_class=HTMLResponse)
|
|
207
|
+
def home():
|
|
208
|
+
return HTML
|
|
209
|
+
`],[".gitignore",j],[".env.example",m]];case"flask":return[["requirements.txt","flask>=3.0\n"],["main.py",`import os
|
|
210
|
+
from flask import Flask
|
|
211
|
+
|
|
212
|
+
${r(a)}
|
|
213
|
+
app = Flask(__name__)
|
|
214
|
+
|
|
215
|
+
@app.get("/")
|
|
216
|
+
def home():
|
|
217
|
+
return HTML
|
|
218
|
+
|
|
219
|
+
if __name__ == "__main__":
|
|
220
|
+
port = int(os.environ.get("PORT", 5000))
|
|
221
|
+
print("listening on http://127.0.0.1:" + str(port))
|
|
222
|
+
app.run(host="127.0.0.1", port=port)
|
|
223
|
+
`],[".gitignore",j],[".env.example",m]];case"django":let v;return v="django-insecure-"+e(a.company).c2+"-starter-key-change-me",[["requirements.txt","django>=5.0\n"],["manage.py",`#!/usr/bin/env python
|
|
224
|
+
import os, sys
|
|
225
|
+
if __name__ == "__main__":
|
|
226
|
+
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
|
|
227
|
+
from django.core.management import execute_from_command_line
|
|
228
|
+
execute_from_command_line(sys.argv)
|
|
229
|
+
`],["config/__init__.py",""],["config/settings.py",`from pathlib import Path
|
|
230
|
+
BASE_DIR = Path(__file__).resolve().parent.parent
|
|
231
|
+
SECRET_KEY = ${JSON.stringify(v)}
|
|
232
|
+
DEBUG = True
|
|
233
|
+
ALLOWED_HOSTS = ["*"]
|
|
234
|
+
INSTALLED_APPS = ["django.contrib.contenttypes", "django.contrib.staticfiles"]
|
|
235
|
+
MIDDLEWARE = ["django.middleware.common.CommonMiddleware"]
|
|
236
|
+
ROOT_URLCONF = "config.urls"
|
|
237
|
+
TEMPLATES = [{"BACKEND": "django.template.backends.django.DjangoTemplates", "DIRS": [], "APP_DIRS": True, "OPTIONS": {}}]
|
|
238
|
+
WSGI_APPLICATION = "config.wsgi.application"
|
|
239
|
+
STATIC_URL = "static/"
|
|
240
|
+
DATABASES = {}
|
|
241
|
+
`],["config/urls.py",`from django.http import HttpResponse
|
|
242
|
+
from django.urls import path
|
|
243
|
+
|
|
244
|
+
${r(a)}
|
|
245
|
+
def home(_request):
|
|
246
|
+
return HttpResponse(HTML)
|
|
247
|
+
|
|
248
|
+
urlpatterns = [path("", home)]
|
|
249
|
+
`],["config/wsgi.py",`import os
|
|
250
|
+
from django.core.wsgi import get_wsgi_application
|
|
251
|
+
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
|
|
252
|
+
application = get_wsgi_application()
|
|
253
|
+
`],[".gitignore",j],[".env.example",m]];case"go-http":let w;return w=h(a),[["go.mod",`module ${a.slug||"project"}
|
|
254
|
+
|
|
255
|
+
go 1.21
|
|
256
|
+
`],["main.go",`package main
|
|
257
|
+
|
|
258
|
+
import (
|
|
259
|
+
"log"
|
|
260
|
+
"net/http"
|
|
261
|
+
"os"
|
|
262
|
+
)
|
|
263
|
+
|
|
264
|
+
const html = \`${w}\`
|
|
265
|
+
|
|
266
|
+
func main() {
|
|
267
|
+
port := os.Getenv("PORT")
|
|
268
|
+
if port == "" {
|
|
269
|
+
port = "8080"
|
|
270
|
+
}
|
|
271
|
+
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
|
272
|
+
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
|
273
|
+
w.Write([]byte(html))
|
|
274
|
+
})
|
|
275
|
+
log.Println("listening on http://127.0.0.1:" + port)
|
|
276
|
+
log.Fatal(http.ListenAndServe("127.0.0.1:"+port, nil))
|
|
277
|
+
}
|
|
278
|
+
`],[".gitignore",k],[".env.example",m]];case"go-gin":let x;return x=h(a),[["go.mod",`module ${a.slug||"project"}
|
|
279
|
+
|
|
280
|
+
go 1.21
|
|
281
|
+
|
|
282
|
+
require github.com/gin-gonic/gin v1.10.0
|
|
283
|
+
`],["main.go",`package main
|
|
284
|
+
|
|
285
|
+
import (
|
|
286
|
+
"net/http"
|
|
287
|
+
"os"
|
|
288
|
+
|
|
289
|
+
"github.com/gin-gonic/gin"
|
|
290
|
+
)
|
|
291
|
+
|
|
292
|
+
const html = \`${x}\`
|
|
293
|
+
|
|
294
|
+
func main() {
|
|
295
|
+
port := os.Getenv("PORT")
|
|
296
|
+
if port == "" {
|
|
297
|
+
port = "8080"
|
|
298
|
+
}
|
|
299
|
+
r := gin.Default()
|
|
300
|
+
r.GET("/", func(c *gin.Context) {
|
|
301
|
+
c.Data(http.StatusOK, "text/html; charset=utf-8", []byte(html))
|
|
302
|
+
})
|
|
303
|
+
r.Run("127.0.0.1:" + port)
|
|
304
|
+
}
|
|
305
|
+
`],[".gitignore",k],[".env.example",m]];case"rust-axum":return[["Cargo.toml",`[package]
|
|
306
|
+
name = "${(a.slug||"project").replace(/[^a-z0-9_-]/gi,"-")}"
|
|
307
|
+
version = "0.1.0"
|
|
308
|
+
edition = "2021"
|
|
309
|
+
|
|
310
|
+
[dependencies]
|
|
311
|
+
axum = "0.7"
|
|
312
|
+
tokio = { version = "1", features = ["full"] }
|
|
313
|
+
`],["src/main.rs",`use axum::{routing::get, Router, response::Html};
|
|
314
|
+
use std::env;
|
|
315
|
+
|
|
316
|
+
async fn home() -> Html<&'static str> { Html(${(b=h(a),`r#"${b}"#`)}) }
|
|
317
|
+
|
|
318
|
+
#[tokio::main]
|
|
319
|
+
async fn main() {
|
|
320
|
+
let port = env::var("PORT").unwrap_or_else(|_| "8080".to_string());
|
|
321
|
+
let app = Router::new().route("/", get(home));
|
|
322
|
+
let addr = format!("127.0.0.1:{}", port);
|
|
323
|
+
println!("listening on http://{}", addr);
|
|
324
|
+
let listener = tokio::net::TcpListener::bind(&addr).await.unwrap();
|
|
325
|
+
axum::serve(listener, app).await.unwrap();
|
|
326
|
+
}
|
|
327
|
+
`],[".gitignore",l],[".env.example",m]];case"rust-actix":return[["Cargo.toml",`[package]
|
|
328
|
+
name = "${(a.slug||"project").replace(/[^a-z0-9_-]/gi,"-")}"
|
|
329
|
+
version = "0.1.0"
|
|
330
|
+
edition = "2021"
|
|
331
|
+
|
|
332
|
+
[dependencies]
|
|
333
|
+
actix-web = "4"
|
|
334
|
+
`],["src/main.rs",`use actix_web::{get, App, HttpServer, HttpResponse};
|
|
335
|
+
use std::env;
|
|
336
|
+
|
|
337
|
+
#[get("/")]
|
|
338
|
+
async fn home() -> HttpResponse { HttpResponse::Ok().content_type("text/html; charset=utf-8").body(${(c=h(a),`r#"${c}"#`)}) }
|
|
339
|
+
|
|
340
|
+
#[actix_web::main]
|
|
341
|
+
async fn main() -> std::io::Result<()> {
|
|
342
|
+
let port: u16 = env::var("PORT").ok().and_then(|p| p.parse().ok()).unwrap_or(8080);
|
|
343
|
+
println!("listening on http://127.0.0.1:{}", port);
|
|
344
|
+
HttpServer::new(|| App::new().service(home)).bind(("127.0.0.1", port))?.run().await
|
|
345
|
+
}
|
|
346
|
+
`],[".gitignore",l],[".env.example",m]];default:return o(a,"static")}}(a)}}},10133:(a,b,c)=>{c.d(b,{T1:()=>k});var d=c(83101),e=c(65121);let f={TypeScript:"js",JavaScript:"js",Python:"py",Go:"go",Rust:"rust",Java:"jvm",Kotlin:"jvm",Scala:"jvm","C#":"dotnet",Ruby:"ruby",PHP:"php",Elixir:"elixir",Swift:"other","C++":"other",Dart:"other"},g={"Node.js":"js",Bun:"js",Deno:"js","Python 3":"py",PyPy:"py",JVM:"jvm",".NET":"dotnet","BEAM (Erlang VM)":"elixir"},h={NestJS:"js",Fastify:"js",Express:"js",Hono:"js",Koa:"js",AdonisJS:"js",Django:"py",Flask:"py",FastAPI:"py","Spring Boot":"jvm",Spring:"jvm",Laravel:"php",Symfony:"php",CodeIgniter:"php","Ruby on Rails":"ruby",Gin:"go",Fiber:"go",Actix:"rust",Phoenix:"elixir","ASP.NET Core":"dotnet"},i={Prisma:"js",Drizzle:"js",TypeORM:"js",Sequelize:"js",Knex:"js",Mongoose:"js",SQLAlchemy:"py","Django ORM":"py",GORM:"go",Diesel:"rust"},j={js:"JavaScript/TypeScript",py:"Python",jvm:"JVM",dotnet:".NET",go:"Go",rust:"Rust",php:"PHP",ruby:"Ruby",elixir:"Elixir",other:"this"};function k(a){let b={...a},c=[],k=!0,l=0;for(;k&&l++<20;)for(let a of(k=!1,e.z)){let e=(0,d.jX)(b[a.key]);if(!e.length)continue;let l=[];for(let m of e){let e="None"===m?null:function(a,b,c){let e=f[(0,d.BT)(a.language)],k=(0,d.jX)(a.database),l=(0,d.jX)(a.backend);if("runtime"===b){let a=g[c];if(e&&a&&a!==e)return`Needs a ${j[a]} language`}if("backend"===b){let a=h[c];if(e&&a&&a!==e)return`Requires a ${j[a]} language`}if("orm"===b){let a=i[c];if(e&&a&&a!==e)return`${j[a]} only`;if("Mongoose"===c&&k.length>0&&!k.includes("MongoDB"))return"Mongoose needs MongoDB";if("Django ORM"===c&&!l.includes("Django"))return"Only with Django";if(l.includes("Django")&&"Django ORM"!==c&&"None"!==c)return"Django already ships its own ORM"}return null}(b,a.key,m);e?(c.push({cat:a.key,opt:m,reason:e}),k=!0):l.push(m)}l.length!==e.length&&(b={...b,[a.key]:(0,d.He)(l)})}return{stack:b,removed:c}}},24701:(a,b,c)=>{c.d(b,{I:()=>k});var d=c(77598),e=c(97603),f=c(65705),g=c(1890),h=c(88007);let i=new Set(["escalation","approval","needs-approval","block","blocked","security","deploy","error","alert","review","report","warn","warning","design-approval","design-pending","design-review"]);async function j(a,b){try{let c=b.kind??"info";if(!(!0===b.tg||!1!==b.tg&&i.has(c)))return;let[d]=await f.db.select({orgId:g.workspace.orgId}).from(g.workspace).where((0,e.eq)(g.workspace.id,a));if(!d)return;let[j]=await f.db.select({ownerId:g.organization.ownerId}).from(g.organization).where((0,e.eq)(g.organization.id,d.orgId));if(!j)return;let[k]=await f.db.select().from(g.notificationPref).where((0,e.eq)(g.notificationPref.userId,j.ownerId));if(k&&!1===k.telegram)return;let l=await (0,h._9)(a);if(!l)return;let m=c.replace(/[-_]/g," ").toUpperCase(),n=`🔔 ${m}
|
|
347
|
+
${b.text}${b.detail?`
|
|
348
|
+
${b.detail}`:""}`.slice(0,3400);await (0,h.bT)(l.botToken,l.chatId,n,"approval"===c||"needs-approval"===c?[[{text:"✅ Approve",data:"approve_plan"},{text:"▶️ Start execution",data:"start_exec"}],[{text:"\uD83D\uDCDD Review",data:"review"},{text:"↩️ Reject",data:"reject_plan"}]]:"design-approval"===c?[[{text:"✅ Approve & send to execution",data:"approve_design"}],[{text:"\uD83D\uDCDD Review",data:"review_design"},{text:"↩️ Request changes",data:"reject_design"}]]:"design-pending"===c||"design-review"===c?[[{text:"\uD83D\uDCDD Review design",data:"review_design"},{text:"\uD83D\uDCCA Status",data:"status"}]]:[[{text:"\uD83D\uDCDD Review",data:"review"},{text:"\uD83D\uDCCA Status",data:"status"}]])}catch{}}async function k(a,b){await f.db.insert(g.notification).values({id:(0,d.randomUUID)(),workspaceId:a,kind:b.kind??"info",text:b.text,detail:b.detail??"",agentId:b.agentId??null,messageId:b.messageId??null,channel:b.channel??""}),await j(a,b)}},29803:(a,b,c)=>{c.d(b,{WQ:()=>d,kH:()=>f});let d=[{id:"anthropic",displayName:"Anthropic",category:"cloud_api",connectionTypes:["api_key","oauth"],defaultAdapter:"http_anthropic",baseUrl:"https://api.anthropic.com",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"available",notes:"Claude family. Model list mapped from provider capabilities."},{id:"openai",displayName:"OpenAI",category:"cloud_api",connectionTypes:["api_key","oauth"],defaultAdapter:"http_openai",baseUrl:"https://api.openai.com/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"available",notes:"GPT-4o/o-series + DALL\xb7E + Whisper."},{id:"google_gemini",displayName:"Google AI / Gemini",category:"cloud_api",connectionTypes:["api_key","oauth"],defaultAdapter:"http_google",baseUrl:"https://generativelanguage.googleapis.com",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"available",notes:"Gemini 1.5/2.x via AI Studio API key."},{id:"xai_grok",displayName:"xAI / Grok",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_xai",baseUrl:"https://api.x.ai/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"available",notes:"OpenAI-compatible REST. Grok-2/3."},{id:"deepseek",displayName:"DeepSeek",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_deepseek",baseUrl:"https://api.deepseek.com",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"deepseek-chat / deepseek-reasoner."},{id:"cohere",displayName:"Cohere",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_cohere",baseUrl:"https://api.cohere.com/v2",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"Command R/R+ and strong rerank/embeddings."},{id:"ai21",displayName:"AI21",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_ai21",baseUrl:"https://api.ai21.com/studio/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"perplexity",displayName:"Perplexity",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_perplexity",baseUrl:"https://api.perplexity.ai",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"available"},{id:"groq",displayName:"Groq",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_groq",baseUrl:"https://api.groq.com/openai/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"Ultra-low-latency LPU inference, OpenAI-compatible."},{id:"nvidia_nim",displayName:"NVIDIA / NIM",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_nvidia",baseUrl:"https://integrate.api.nvidia.com/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"available",notes:"NIM microservices, OpenAI-compatible."},{id:"together",displayName:"Together AI",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_together",baseUrl:"https://api.together.xyz/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available"},{id:"fireworks",displayName:"Fireworks AI",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_fireworks",baseUrl:"https://api.fireworks.ai/inference/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available"},{id:"cerebras",displayName:"Cerebras",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_cerebras",baseUrl:"https://api.cerebras.ai/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,status:"available",notes:"Wafer-scale fast inference."},{id:"huggingface",displayName:"Hugging Face",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_hf",baseUrl:"https://api-inference.huggingface.co",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"replicate",displayName:"Replicate",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_replicate",baseUrl:"https://api.replicate.com/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"anyscale",displayName:"Anyscale",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_anyscale",baseUrl:"https://api.endpoints.anyscale.com/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"Endpoints product changing — adapter pending."},{id:"databricks",displayName:"Databricks",category:"cloud_api",connectionTypes:["api_key","oauth"],defaultAdapter:"http_databricks",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!0,status:"requires_setup"},{id:"stability",displayName:"Stability AI",category:"image",connectionTypes:["api_key"],defaultAdapter:"http_stability",baseUrl:"https://api.stability.ai",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"elevenlabs",displayName:"ElevenLabs",category:"audio",connectionTypes:["api_key"],defaultAdapter:"http_elevenlabs",baseUrl:"https://api.elevenlabs.io/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,status:"available",notes:"TTS / voice."},{id:"voyage",displayName:"Voyage AI",category:"embedding",connectionTypes:["api_key"],defaultAdapter:"http_voyage",baseUrl:"https://api.voyageai.com/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"available"},{id:"jina",displayName:"Jina AI",category:"embedding",connectionTypes:["api_key"],defaultAdapter:"http_jina",baseUrl:"https://api.jina.ai/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"available"},{id:"runpod",displayName:"RunPod",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_runpod",baseUrl:"https://api.runpod.ai/v2",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"requires_setup"},{id:"lambda",displayName:"Lambda Labs",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_lambda",baseUrl:"https://api.lambdalabs.com/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"modal",displayName:"Modal",category:"cloud_api",connectionTypes:["api_key","custom_endpoint"],defaultAdapter:"http_modal",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"requires_setup"},{id:"baseten",displayName:"Baseten",category:"cloud_api",connectionTypes:["api_key"],defaultAdapter:"http_baseten",baseUrl:"https://inference.baseten.co/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"requires_setup"},{id:"openrouter",displayName:"OpenRouter",category:"router",connectionTypes:["api_key","oauth"],defaultAdapter:"http_openrouter",baseUrl:"https://openrouter.ai/api/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"available",notes:"Aggregates 300+ models across providers — full live list."},{id:"omnirouter",displayName:"OmniRouter",category:"router",connectionTypes:["api_key"],defaultAdapter:"http_omnirouter",baseUrl:"https://api.omnirouter.ai/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,status:"experimental",notes:"OpenAI-compatible multi-provider router."},{id:"litellm",displayName:"LiteLLM",category:"openai_compatible",connectionTypes:["api_key","openai_compatible","custom_endpoint"],defaultAdapter:"http_litellm",baseUrl:"http://localhost:4000",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"Self-hosted proxy; unifies 100+ providers."},{id:"portkey",displayName:"Portkey",category:"router",connectionTypes:["api_key"],defaultAdapter:"http_portkey",baseUrl:"https://api.portkey.ai/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Gateway with virtual keys."},{id:"helicone",displayName:"Helicone",category:"router",connectionTypes:["api_key"],defaultAdapter:"http_helicone",baseUrl:"https://oai.helicone.ai/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"experimental",notes:"Observability proxy in front of OpenAI-compatible providers."},{id:"openai_compatible",displayName:"OpenAI-compatible endpoint",category:"openai_compatible",connectionTypes:["openai_compatible","api_key","custom_endpoint"],defaultAdapter:"http_openai_compat",baseUrl:"https://",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"Any server exposing /v1/chat/completions + /v1/models."},{id:"lmstudio_server",displayName:"LM Studio (OpenAI server)",category:"openai_compatible",connectionTypes:["openai_compatible","local"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:1234/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"available",notes:"Local OpenAI-compatible server from LM Studio."},{id:"ollama_openai",displayName:"Ollama (OpenAI endpoint)",category:"openai_compatible",connectionTypes:["openai_compatible","local"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:11434/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"Ollama's OpenAI-compatible surface."},{id:"vllm_server",displayName:"vLLM (OpenAI server)",category:"openai_compatible",connectionTypes:["openai_compatible","local"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:8000/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"High-throughput self-hosted serving."},{id:"tgi",displayName:"Text Generation Inference",category:"openai_compatible",connectionTypes:["openai_compatible","local","custom_endpoint"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:8080/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"experimental",notes:"HF TGI with OpenAI route."},{id:"localai",displayName:"LocalAI",category:"openai_compatible",connectionTypes:["openai_compatible","local"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:8080/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"available",notes:"Drop-in OpenAI replacement, fully local."},{id:"azure_openai",displayName:"Azure OpenAI",category:"cloud_platform",connectionTypes:["api_key","oauth"],defaultAdapter:"http_azure_openai",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"requires_setup"},{id:"aws_bedrock",displayName:"AWS Bedrock",category:"cloud_platform",connectionTypes:["api_key","custom_endpoint"],defaultAdapter:"sdk_bedrock",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"requires_setup",notes:"SigV4 auth; multi-vendor models."},{id:"vertex_ai",displayName:"Google Vertex AI",category:"cloud_platform",connectionTypes:["oauth","api_key"],defaultAdapter:"sdk_vertex",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!0,supportsVision:!0,supportsTools:!0,status:"requires_setup",notes:"GCP service-account / ADC."},{id:"cloudflare",displayName:"Cloudflare Workers AI",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_cloudflare",baseUrl:"https://api.cloudflare.com/client/v4",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,status:"experimental"},{id:"oci_genai",displayName:"Oracle OCI Generative AI",category:"cloud_platform",connectionTypes:["api_key","custom_endpoint"],defaultAdapter:"sdk_oci",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"OCI SDK signing — adapter pending."},{id:"watsonx",displayName:"IBM watsonx",category:"cloud_platform",connectionTypes:["api_key","oauth"],defaultAdapter:"http_watsonx",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!0,status:"requires_setup"},{id:"dashscope",displayName:"Alibaba DashScope / Qwen",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_dashscope",baseUrl:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"experimental",notes:"Qwen models, OpenAI-compatible mode."},{id:"qianfan",displayName:"Baidu Qianfan",category:"cloud_platform",connectionTypes:["api_key","oauth"],defaultAdapter:"http_qianfan",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!0,status:"planned",notes:"ERNIE; access-token auth — adapter pending."},{id:"hunyuan",displayName:"Tencent Hunyuan",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_hunyuan",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"TC3-HMAC signing — adapter pending."},{id:"zhipu",displayName:"Zhipu AI (GLM)",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_zhipu",baseUrl:"https://open.bigmodel.cn/api/paas/v4",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"experimental"},{id:"moonshot",displayName:"Moonshot AI / Kimi",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_moonshot",baseUrl:"https://api.moonshot.cn/v1",supportsModelSync:!0,supportsApiKey:!0,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"OpenAI-compatible; long context."},{id:"minimax",displayName:"MiniMax",category:"cloud_platform",connectionTypes:["api_key"],defaultAdapter:"http_minimax",baseUrl:"https://api.minimax.chat/v1",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"Group-id + key auth — adapter pending."},{id:"ollama",displayName:"Ollama",category:"local_runtime",connectionTypes:["local","cli"],defaultAdapter:"local_ollama",baseUrl:"http://localhost:11434",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsVision:!0,supportsTools:!0,status:"available",notes:"Pulls + serves local models; live /api/tags list."},{id:"llamacpp",displayName:"llama.cpp",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_llamacpp",baseUrl:"http://127.0.0.1:8082",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"available",notes:"GGUF models, SHA-256 verified, bound to 127.0.0.1."},{id:"lmstudio",displayName:"LM Studio",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_lmstudio",baseUrl:"http://localhost:1234",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsVision:!0,status:"available",notes:"Desktop runtime + local server."},{id:"vllm",displayName:"vLLM",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_vllm",baseUrl:"http://localhost:8000",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"available",notes:"GPU serving engine."},{id:"localai_rt",displayName:"LocalAI",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_localai",baseUrl:"http://localhost:8080",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"available"},{id:"gpt4all",displayName:"GPT4All",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_gpt4all",baseUrl:"http://localhost:4891/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"experimental"},{id:"koboldcpp",displayName:"KoboldCpp",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_kobold",baseUrl:"http://localhost:5001",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,status:"experimental"},{id:"jan",displayName:"Jan",category:"local_runtime",connectionTypes:["local"],defaultAdapter:"local_jan",baseUrl:"http://localhost:1337/v1",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"experimental"},{id:"anythingllm",displayName:"AnythingLLM (local)",category:"local_runtime",connectionTypes:["local","api_key"],defaultAdapter:"local_anythingllm",baseUrl:"http://localhost:3001/api",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"Workspace API — adapter pending."},{id:"openwebui",displayName:"Open WebUI (backend)",category:"local_runtime",connectionTypes:["local","openai_compatible"],defaultAdapter:"http_openai_compat",baseUrl:"http://localhost:3000/api",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"experimental"},{id:"claude_code",displayName:"Claude Code",category:"cli",connectionTypes:["cli","oauth"],defaultAdapter:"cli_claude_code",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!0,supportsTools:!0,status:"available",notes:"Drives the local Claude Code CLI / agent."},{id:"codex_cli",displayName:"Codex CLI",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_codex",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"OpenAI Codex CLI agent."},{id:"openclaw",displayName:"OpenClaw",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_openclaw",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"OpenClaw CLI — headless `openclaw infer model run --json` (provider-routed). No token/cost reported."},{id:"hermes_cli",displayName:"Hermes (Nous Research)",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_hermes",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Hermes agent CLI — headless `hermes -z`. Configure providers via `hermes model`."},{id:"gemini_cli",displayName:"Gemini CLI",category:"cli",connectionTypes:["cli","oauth"],defaultAdapter:"cli_gemini",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!0,supportsTools:!0,status:"experimental"},{id:"aider",displayName:"Aider",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_aider",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Headless `aider --message --yes-always`; provider-routed via its own env keys. Model list from `aider --list-models`. No token/cost reported."},{id:"opencode",displayName:"OpenCode",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_opencode",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Headless `opencode run`; providers via `opencode auth login`. Model list from `opencode models`. No token/cost reported."},{id:"copilot_cli",displayName:"GitHub Copilot CLI",category:"cli",connectionTypes:["cli","oauth"],defaultAdapter:"cli_copilot",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!0,supportsTools:!0,status:"experimental",notes:"Headless `copilot -p --allow-all-tools`; sign in with the Copilot CLI. No token/cost reported."},{id:"cursor_cli",displayName:"Cursor CLI",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_cursor",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Headless `cursor-agent -p --output-format json`; sign in via `cursor-agent login`. `-p` can hang → bounded timeout. No token/cost reported."},{id:"cline_cli",displayName:"Cline CLI",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_cline",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Headless `cline --json -y`; provider-routed via its own config. No token/cost reported."},{id:"kilo_code",displayName:"Kilo Code CLI",category:"cli",connectionTypes:["cli"],defaultAdapter:"cli_kilo",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,supportsTools:!0,status:"experimental",notes:"Headless `kilocode --yes`; provider-routed via its own config. No token/cost reported."},{id:"openai_cli",displayName:"OpenAI CLI",category:"cli",connectionTypes:["cli","api_key"],defaultAdapter:"cli_openai",supportsModelSync:!1,supportsApiKey:!0,supportsOAuth:!1,status:"planned",notes:"Thin CLI over the API — adapter pending."},{id:"ollama_cli",displayName:"Ollama CLI",category:"cli",connectionTypes:["cli","local"],defaultAdapter:"cli_ollama",supportsModelSync:!0,supportsApiKey:!1,supportsOAuth:!1,status:"available",notes:"`ollama run/list` driven."},{id:"custom_cli",displayName:"Custom CLI provider",category:"cli",connectionTypes:["cli","custom_endpoint"],defaultAdapter:"cli_custom",supportsModelSync:!1,supportsApiKey:!1,supportsOAuth:!1,status:"requires_setup",notes:"Define your own command + arg template."}],e=Object.fromEntries(d.map(a=>[a.id,a])),f=a=>e[a]},31578:(a,b,c)=>{c.d(b,{V$:()=>ah,Uw:()=>F,wp:()=>O,Jw:()=>X,Cp:()=>P,S8:()=>ab,kb:()=>ae,Hi:()=>ac,Vr:()=>ad,nl:()=>Y,LU:()=>Z,cm:()=>J,VH:()=>K,zO:()=>G,Gh:()=>I,I2:()=>H,ju:()=>M,Ac:()=>ag,m:()=>Q,az:()=>N,ts:()=>af,L0:()=>ai,lC:()=>aj});var d=c(6866),e=c(48161),f=c.n(e),g=c(77598),h=c(73024),i=c(31421),j=c(60547),k=c.n(j),l=c(76760),m=c(57075),n=c(46466),o=c(97603),p=c(31371),q=c(65705),r=c(1890),s=c(53993),t=c(57086),u=c(57300);function v(a,b,c=.02){let d=0;try{d=(0,h.statSync)(a).size}catch{return{ok:!1,actual:0,expected:b,message:"file missing after download"}}if(!b||b<=0)return{ok:!0,actual:d,expected:b,message:"size ok (no expected size)"};let e=d/b,f=e>=1-c&&e<=1+c;return{ok:f,actual:d,expected:b,message:f?"size verified":`size mismatch — got ${d} bytes, expected ~${b} (truncated/corrupt)`}}let w=new Map,x=[{repo:"Qwen2.5-0.5B-Instruct",paramsB:.5,kind:"chat"},{repo:"Qwen2.5-1.5B-Instruct",paramsB:1.5,kind:"chat"},{repo:"Qwen2.5-3B-Instruct",paramsB:3,kind:"chat"},{repo:"Qwen2.5-7B-Instruct",paramsB:7,kind:"chat"},{repo:"Qwen2.5-14B-Instruct",paramsB:14,kind:"chat"},{repo:"Qwen2.5-32B-Instruct",paramsB:32,kind:"chat"},{repo:"Qwen2.5-72B-Instruct",paramsB:72,kind:"chat"},{repo:"Qwen2.5-Coder-1.5B-Instruct",paramsB:1.5,kind:"code"},{repo:"Qwen2.5-Coder-3B-Instruct",paramsB:3,kind:"code"},{repo:"Qwen2.5-Coder-7B-Instruct",paramsB:7,kind:"code"},{repo:"Qwen2.5-Coder-14B-Instruct",paramsB:14,kind:"code"},{repo:"Qwen2.5-Coder-32B-Instruct",paramsB:32,kind:"code"},{repo:"Qwen3-0.6B",paramsB:.6,kind:"chat"},{repo:"Qwen3-1.7B",paramsB:1.7,kind:"chat"},{repo:"Qwen3-4B",paramsB:4,kind:"chat"},{repo:"Qwen3-8B",paramsB:8,kind:"chat"},{repo:"Qwen3-14B",paramsB:14,kind:"chat"},{repo:"Qwen3-32B",paramsB:32,kind:"chat"},{repo:"Llama-3.2-1B-Instruct",paramsB:1,kind:"chat"},{repo:"Llama-3.2-3B-Instruct",paramsB:3,kind:"chat"},{repo:"Meta-Llama-3.1-8B-Instruct",paramsB:8,kind:"chat"},{repo:"Meta-Llama-3.1-70B-Instruct",paramsB:70,kind:"chat"},{repo:"Llama-3.3-70B-Instruct",paramsB:70,kind:"chat"},{repo:"gemma-2-2b-it",paramsB:2,kind:"chat"},{repo:"gemma-2-9b-it",paramsB:9,kind:"chat"},{repo:"gemma-2-27b-it",paramsB:27,kind:"chat"},{repo:"gemma-3-1b-it",paramsB:1,kind:"chat"},{repo:"gemma-3-4b-it",paramsB:4,kind:"chat"},{repo:"gemma-3-12b-it",paramsB:12,kind:"chat"},{repo:"gemma-3-27b-it",paramsB:27,kind:"chat"},{repo:"Mistral-7B-Instruct-v0.3",paramsB:7,kind:"chat"},{repo:"Mistral-Nemo-Instruct-2407",paramsB:12,kind:"chat"},{repo:"Mistral-Small-Instruct-2409",paramsB:22,kind:"chat"},{repo:"Mistral-Small-24B-Instruct-2501",paramsB:24,kind:"chat"},{repo:"Codestral-22B-v0.1",paramsB:22,kind:"code"},{repo:"Phi-3.1-mini-4k-instruct",paramsB:3.8,kind:"chat"},{repo:"DeepSeek-R1-Distill-Qwen-1.5B",paramsB:1.5,kind:"reasoning"},{repo:"DeepSeek-R1-Distill-Qwen-7B",paramsB:7,kind:"reasoning"},{repo:"DeepSeek-R1-Distill-Qwen-14B",paramsB:14,kind:"reasoning"},{repo:"DeepSeek-R1-Distill-Qwen-32B",paramsB:32,kind:"reasoning"},{repo:"DeepSeek-R1-Distill-Llama-8B",paramsB:8,kind:"reasoning"},{repo:"DeepSeek-Coder-V2-Lite-Instruct",paramsB:16,kind:"code"},{repo:"Yi-1.5-9B-Chat",paramsB:9,kind:"chat"},{repo:"Yi-1.5-34B-Chat",paramsB:34,kind:"chat"},{repo:"granite-3.0-8b-instruct",paramsB:8,kind:"chat"},{repo:"granite-3.1-8b-instruct",paramsB:8,kind:"chat"},{repo:"SmolLM2-360M-Instruct",paramsB:.36,kind:"chat"},{repo:"SmolLM2-1.7B-Instruct",paramsB:1.7,kind:"chat"},{repo:"aya-expanse-8b",paramsB:8,kind:"chat"},{repo:"aya-expanse-32b",paramsB:32,kind:"chat"},{repo:"Falcon3-7B-Instruct",paramsB:7,kind:"chat"},{repo:"Falcon3-10B-Instruct",paramsB:10,kind:"chat"},{repo:"EXAONE-3.5-2.4B-Instruct",paramsB:2.4,kind:"chat"},{repo:"EXAONE-3.5-7.8B-Instruct",paramsB:7.8,kind:"chat"},{repo:"Qwen3.5-0.8B",paramsB:.8,kind:"chat"},{repo:"Qwen3.5-2B",paramsB:2,kind:"chat"},{repo:"Qwen3.5-9B",paramsB:9,kind:"chat"},{repo:"Qwen3.5-27B",paramsB:27,kind:"chat"},{repo:"Qwen3.5-35B-A3B",paramsB:35,kind:"chat"},{repo:"Qwen3.6-27B",paramsB:27,kind:"chat"},{repo:"Qwen3.6-35B-A3B",paramsB:35,kind:"chat"},{repo:"Qwen3-30B-A3B",paramsB:30,kind:"chat"},{repo:"Qwen3-30B-A3B-Instruct-2507",paramsB:30,kind:"chat"},{repo:"Qwen3-Next-80B-A3B-Instruct",paramsB:80,kind:"chat"},{repo:"Qwen3-4B-Thinking-2507",paramsB:4,kind:"reasoning"},{repo:"QwQ-32B",paramsB:32,kind:"reasoning"},{repo:"Qwen2.5-7B-Instruct-1M",paramsB:7,kind:"chat"},{repo:"Qwen2.5-Coder-0.5B-Instruct",paramsB:.5,kind:"code"},{repo:"Qwen2.5-Coder-3B",paramsB:3,kind:"code"},{repo:"Qwen2.5-Coder-32B",paramsB:32,kind:"code"},{repo:"Qwen2.5-Math-7B-Instruct",paramsB:7,kind:"chat"},{repo:"Qwen2-500M-Instruct",paramsB:.5,kind:"chat"},{repo:"Qwen1.5-32B-Chat",paramsB:32,kind:"chat"},{repo:"gemma-4-E2B-it",paramsB:2,kind:"chat"},{repo:"gemma-4-E4B-it",paramsB:4,kind:"chat"},{repo:"gemma-4-12B-it",paramsB:12,kind:"chat"},{repo:"gemma-4-26B-A4B-it",paramsB:26,kind:"chat"},{repo:"gemma-4-31B-it",paramsB:31,kind:"chat"},{repo:"gemma-3-270m-it",paramsB:.27,kind:"chat"},{repo:"gemma-1.1-2b-it",paramsB:2,kind:"chat"},{repo:"codegemma-2b",paramsB:2,kind:"code"},{repo:"codegemma-7b",paramsB:7,kind:"code"},{repo:"codegemma-7b-it",paramsB:7,kind:"code"},{repo:"codegemma-1.1-7b-it",paramsB:7,kind:"code"},{repo:"Ministral-3-3B-Instruct-2512",paramsB:3,kind:"chat"},{repo:"Ministral-3-8B-Instruct-2512",paramsB:8,kind:"chat"},{repo:"Ministral-3-14B-Instruct-2512",paramsB:14,kind:"chat"},{repo:"Ministral-3-3B-Reasoning-2512",paramsB:3,kind:"reasoning"},{repo:"Ministral-3-8B-Reasoning-2512",paramsB:8,kind:"reasoning"},{repo:"Ministral-3-14B-Reasoning-2512",paramsB:14,kind:"reasoning"},{repo:"Mistral-Small-3.1-24B-Instruct-2503",paramsB:24,kind:"chat"},{repo:"Mistral-Small-3.2-24B-Instruct-2506",paramsB:24,kind:"chat"},{repo:"Devstral-Small-2-24B-Instruct-2512",paramsB:24,kind:"code"},{repo:"mathstral-7B-v0.1",paramsB:7,kind:"chat"},{repo:"dolphin-2.8-mistral-7b-v02",paramsB:7,kind:"chat"},{repo:"WizardLM-2-7B",paramsB:7,kind:"chat"},{repo:"DeepSeek-R1-0528-Qwen3-8B",paramsB:8,kind:"reasoning"},{repo:"DeepSeek-R1-Distill-Llama-70B",paramsB:70,kind:"reasoning"},{repo:"deepseek-coder-1.3B-kexer",paramsB:1.3,kind:"code"},{repo:"deepseek-coder-6.7B-kexer",paramsB:6.7,kind:"code"},{repo:"granite-3.2-8b-instruct",paramsB:8,kind:"chat"},{repo:"granite-4.1-3b",paramsB:3,kind:"chat"},{repo:"granite-4.1-8b",paramsB:8,kind:"chat"},{repo:"granite-4.1-30b",paramsB:30,kind:"chat"},{repo:"Olmo-3-32B-Think",paramsB:32,kind:"reasoning"},{repo:"Seed-OSS-36B-Instruct",paramsB:36,kind:"chat"},{repo:"ERNIE-4.5-21B-A3B-PT",paramsB:21,kind:"chat"},{repo:"LFM2-24B-A2B",paramsB:24,kind:"chat"},{repo:"LFM2.5-1.2B-Instruct",paramsB:1.2,kind:"chat"},{repo:"LFM2.5-1.2B-Thinking",paramsB:1.2,kind:"reasoning"},{repo:"NVIDIA-Nemotron-3-Nano-4B",paramsB:4,kind:"chat"},{repo:"Hermes-4-70B",paramsB:70,kind:"chat"},{repo:"Llama-3.1-Tulu-3-8B",paramsB:8,kind:"chat"},{repo:"Meta-Llama-3-70B-Instruct",paramsB:70,kind:"chat"},{repo:"Llama3-ChatQA-1.5-70B",paramsB:70,kind:"chat"},{repo:"Llama-3-Groq-8B-Tool-Use",paramsB:8,kind:"chat"},{repo:"aya-23-8B",paramsB:8,kind:"chat"},{repo:"aya-23-35B",paramsB:35,kind:"chat"},{repo:"SmolLM2-135M-Instruct",paramsB:.135,kind:"chat"},{repo:"Yi-Coder-1.5B",paramsB:1.5,kind:"code"},{repo:"Yi-Coder-9B-Chat",paramsB:9,kind:"code"},{repo:"OpenCoder-1.5B-Instruct",paramsB:1.5,kind:"code"},{repo:"stable-code-instruct-3b",paramsB:3,kind:"code"},{repo:"internlm2-math-plus-7b",paramsB:7,kind:"chat"},{repo:"internlm2-math-plus-20b",paramsB:20,kind:"chat"}],y={Q3_K_L:.55,Q4_K_M:.67,Q6_K:.9,Q8_0:1.13},z=[{id:"nomic-embed-q8",name:"nomic-embed-text-v1.5 (Q8_0)",url:"https://huggingface.co/nomic-ai/nomic-embed-text-v1.5-GGUF/resolve/main/nomic-embed-text-v1.5.Q8_0.gguf",params:"137M",quant:"Q8_0",sizeBytes:146e6,kind:"embed",paramsB:.137},...function(){let a=[];for(let d of x){var b,c;let e=d.vendor??"lmstudio-community";for(let f of(b=d.paramsB)<=9?["Q3_K_L","Q4_K_M","Q6_K","Q8_0"]:b<=34?["Q3_K_L","Q4_K_M","Q6_K"]:["Q3_K_L","Q4_K_M"]){let b=`${d.repo}-${f}.gguf`;a.push({id:`${d.repo}-${f}`.toLowerCase().replace(/[^a-z0-9]+/g,"-"),name:`${d.repo} (${f})`,url:`https://huggingface.co/${e}/${d.repo}-GGUF/resolve/main/${b}`,params:(c=d.paramsB)<1?`${Math.round(1e3*c)}M`:`${c}B`,quant:f,sizeBytes:Math.round(1e9*d.paramsB*y[f]),kind:d.kind,paramsB:d.paramsB})}}return a}()];var A=c(74252);let B=process.env.OLLAMA_URL??"http://127.0.0.1:11434",C=process.env.LLAMACPP_URL??"http://127.0.0.1:8082",D=process.env.CONSTELLA_EMBED_URL??"http://127.0.0.1:8083",E=null;async function F(){if(E){let a=f().totalmem()/0x40000000,b=f().freemem()/0x40000000;return{...E,ram:`${a.toFixed(0)} GB \xb7 ${b.toFixed(1)} free`}}let a=f().cpus(),b=(a[0]?.model??"Unknown CPU").replace(/\s+/g," ").trim(),c=a.length,d=f().totalmem()/0x40000000,e=f().freemem()/0x40000000,g=`${d.toFixed(0)} GB \xb7 ${e.toFixed(1)} free`,h=f().platform(),j="—",k="—",l="CPU",m=[];try{let a=(0,i.execSync)("nvidia-smi --query-gpu=name,memory.total --format=csv,noheader,nounits",{timeout:4e3,stdio:["ignore","pipe","ignore"]}).toString().trim();if(a){let[b,c]=a.split("\n")[0].split(",");j=b.trim(),k=`${Math.round(Number(c)/1024)} GB`,l="CUDA",m.push("CUDA")}}catch{}if("CPU"===l&&"darwin"===h){l="Metal",m.push("Metal");let a="Apple Silicon";try{let b=(0,i.execFileSync)("sysctl",["-n","machdep.cpu.brand_string"],{timeout:3e3,stdio:["ignore","pipe","ignore"]}).toString().trim();b&&(a=b)}catch{/apple/i.test(b)&&(a=b)}j=/apple/i.test(a)?`${a} GPU`:"Apple GPU","arm64"===f().arch()&&(k=`${Math.max(1,Math.round(.7*d))} GB unified`)}m.push("arm64"===f().arch()?"NEON":"AVX2");let n="—";try{if("win32"===h){let a=((0,t.r$)()[0]||"C").toUpperCase(),b=/^[A-Z]$/.test(a)?a:"C",c=(0,i.execFileSync)("powershell",["-NoProfile","-Command",`(Get-PSDrive ${b}).Free`],{timeout:5e3,stdio:["ignore","pipe","ignore"]}).toString().trim(),d=Number(c.replace(/[^\d]/g,""));d>0&&(n=`${(d/0x40000000).toFixed(0)} GB`)}else{let a=(0,i.execFileSync)("df",["-h",(0,t.r$)()],{timeout:4e3,stdio:["ignore","pipe","ignore"]}).toString().trim().split("\n"),b=(a[a.length-1]??"").split(/\s+/);b[3]&&(n=b[3])}}catch{}return E={cpu:b,cores:c,ram:g,gpu:j,vram:k,diskFree:n,backend:l,accel:m,recommendedQuant:d>=32?"Q5_K_M":d>=16?"Q4_K_M":"Q4_0",maxParams:d>=64?"70B":d>=32?"34B":d>=16?"13B":"7B"}}async function G(){try{return(0,i.execSync)("ollama --version",{timeout:3e3,stdio:"ignore"}),!0}catch{return!1}}async function H(a){let b=await G(),c=[];if("start"===a){if(!b)return{up:!1,installed:!1,log:["Ollama is not installed — get it at https://ollama.com, then retry."]};if((await K()).up)return{up:!0,installed:b,log:[`server already running on ${B}`]};try{let a=(0,i.spawn)("ollama",["serve"],{detached:!0,stdio:"ignore"}),d="";a.on("error",a=>{d=String(a instanceof Error?a.message:a)}),a.unref(),c.push("$ ollama serve"),await new Promise(a=>setTimeout(a,2e3));let e=(await K()).up;return d&&c.push("spawn failed: "+d),c.push(e?`✓ ready \xb7 ${B}`:"still stopped — the port may be busy; run `ollama serve` in a terminal to see the error."),(0,p.revalidatePath)("/models"),{up:e,installed:b,log:c}}catch(a){return{up:!1,installed:b,log:["failed to start: "+String(a instanceof Error?a.message:a)]}}}try{"win32"===f().platform()?(0,i.execSync)("taskkill /IM ollama.exe /F",{stdio:"ignore",timeout:4e3}):(0,i.execSync)("pkill -f 'ollama serve'",{stdio:"ignore",timeout:4e3}),c.push("server stopped")}catch{c.push("no running ollama process found")}return(0,p.revalidatePath)("/models"),{up:!1,installed:b,log:c}}async function I(){try{let a=await fetch(`${B}/api/ps`,{signal:AbortSignal.timeout(3e3)});if(!a.ok)return{running:[]};return{running:((await a.json()).models??[]).map(a=>({name:a.name,vram:a.size_vram??0}))}}catch{return{running:[]}}}async function J(a){try{let b=await fetch(`${B}/api/generate`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({model:a,prompt:"",keep_alive:"30m"}),signal:AbortSignal.timeout(12e4)});if(!b.ok)return{ok:!1,error:`Ollama ${b.status}`};return await b.json().catch(()=>({})),(0,p.revalidatePath)("/models"),{ok:!0}}catch(b){let a=String(b instanceof Error?b.message:b);return{ok:!1,error:/abort|fetch failed|ECONN/i.test(a)?"Ollama not running":a}}}async function K(){try{let a=await fetch(`${B}/api/tags`,{signal:AbortSignal.timeout(3e3)});if(!a.ok)return{up:!1,models:[]};let b=await a.json();return{up:!0,models:(b.models??[]).map(a=>({name:a.name,size:a.size??0}))}}catch{return{up:!1,models:[]}}}async function L(a){let b=await K(),[c]=await q.db.select().from(r.provider).where((0,o.Uo)((0,o.eq)(r.provider.workspaceId,a),(0,o.eq)(r.provider.catalogId,"ollama"))),d={status:b.up?"connected":"needs_sync",modelCount:b.models.length,lastSync:b.up?new Date:null};c?await q.db.update(r.provider).set(d).where((0,o.eq)(r.provider.id,c.id)):await q.db.insert(r.provider).values({id:(0,g.randomUUID)(),workspaceId:a,catalogId:"ollama",adapter:"local_ollama",kind:"local",auth:"local",syncStatus:"implemented",...d})}async function M(a){let{workspace:b}=await (0,s.nP)();if(!a.trim())return{ok:!1,error:"no model name"};try{let c=await fetch(`${B}/api/pull`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({name:a.trim(),stream:!1}),signal:AbortSignal.timeout(18e5)});if(!c.ok){let a=await c.text().catch(()=>"");return{ok:!1,error:`Ollama ${c.status}${a?": "+a.slice(0,120):""}`}}let d=await c.json().catch(()=>({}));return await L(b.id),(0,p.revalidatePath)("/models"),{ok:"success"===d.status||null==d.error,error:d.error}}catch(b){let a=String(b instanceof Error?b.message:b);return{ok:!1,error:/abort|fetch failed|ECONN/i.test(a)?"Ollama not running — start it, then retry.":a}}}async function N(a){let{workspace:b}=await (0,s.nP)();try{await fetch(`${B}/api/delete`,{method:"DELETE",headers:{"content-type":"application/json"},body:JSON.stringify({name:a})})}catch{}return await L(b.id),(0,p.revalidatePath)("/models"),{ok:!0}}async function O(a){let{workspace:b}=await (0,s.nP)(),c=z.find(b=>b.id===a);if(!c)return{ok:!1,error:"unknown model"};let d=(0,l.join)((0,t.r$)(),"models");(0,h.mkdirSync)(d,{recursive:!0});let e=function(a){try{if("win32"===f().platform()){let b=(a[0]||"C").toUpperCase(),c=/^[A-Z]$/.test(b)?b:"C",d=(0,i.execFileSync)("powershell",["-NoProfile","-Command",`(Get-PSDrive ${c}).Free`],{timeout:6e3,stdio:["ignore","pipe","ignore"]}).toString().trim();return Number(d.replace(/[^\d]/g,""))||0}let b=(0,i.execFileSync)("df",["-k",a],{timeout:5e3,stdio:["ignore","pipe","ignore"]}).toString().trim().split("\n"),c=(b[b.length-1]??"").split(/\s+/),d=Number(c[3]);return d?1024*d:0}catch{return 0}}(d);if(e&&c.sizeBytes&&e<1.1*c.sizeBytes)return{ok:!1,error:`not enough free space — need ~${(c.sizeBytes/1e9).toFixed(1)} GB, ${(e/1e9).toFixed(1)} GB free`};let j=c.url.split("/").pop()??`${c.id}.gguf`,k=(0,l.join)(d,j);w.set(a,{received:0,total:0,done:!1});try{if(!(0,h.existsSync)(k)){let b=await fetch(c.url,{signal:AbortSignal.timeout(36e5)});if(!b.ok||!b.body)return w.set(a,{received:0,total:0,done:!0,error:`download failed (${b.status})`}),{ok:!1,error:`download failed (${b.status})`};let d=Number(b.headers.get("content-length"))||c.sizeBytes||0,e=0;w.set(a,{received:0,total:d,done:!1});let f=new m.PassThrough;f.on("data",b=>{e+=b.length;let c=w.get(a);c&&(c.received=e)}),await (0,n.pipeline)(m.Readable.fromWeb(b.body),f,(0,h.createWriteStream)(k));let g=v(k,d);if(!g.ok){try{(0,h.rmSync)(k)}catch{}return w.set(a,{received:e,total:d,done:!0,error:g.message}),{ok:!1,error:g.message}}}if((w.set(a,{received:1,total:1,done:!0}),c.sha256)&&await new Promise((a,b)=>{let c=(0,g.createHash)("sha256");(0,h.createReadStream)(k).on("data",a=>c.update(a)).on("end",()=>a(c.digest("hex"))).on("error",b)})!==c.sha256)return{ok:!1,error:"SHA-256 mismatch — file corrupt"};let d=(0,h.statSync)(k).size,[e]=await q.db.select().from(r.localModel).where((0,o.eq)(r.localModel.file,k));return e||await q.db.insert(r.localModel).values({id:(0,g.randomUUID)(),workspaceId:b.id,name:c.name,file:k,quant:c.quant,params:c.params,sizeBytes:d,sha256:c.sha256??"",bind:"127.0.0.1:8082"}),/embed|nomic|bge|mxbai|gte/i.test(c.name)&&ac().catch(()=>{}),(0,p.revalidatePath)("/models"),{ok:!0,path:k}}catch(d){let b=String(d instanceof Error?d.message:d),c=w.get(a);return w.set(a,{received:c?.received??0,total:c?.total??0,done:!0,error:b}),{ok:!1,error:b}}}async function P(a){return w.get(a)??null}async function Q(a){await (0,s.nP)();let[b]=await q.db.select().from(r.localModel).where((0,o.eq)(r.localModel.id,a));if(!b)return{ok:!1,error:"model not found"};try{b.file&&(0,h.existsSync)(b.file)&&(0,h.rmSync)(b.file,{force:!0})}catch{}return await q.db.delete(r.localModel).where((0,o.eq)(r.localModel.file,b.file)),(0,p.revalidatePath)("/models"),{ok:!0}}function R(){return(0,l.join)((0,t.r$)(),"bin","llama")}function S(){try{let a=(0,l.join)(R(),"INSTALLED");if(!(0,h.existsSync)(a))return null;let b=(0,h.readFileSync)(a,"utf8").trim();return b&&(0,h.existsSync)(b)?b:null}catch{return null}}async function T(a,b,c,d){let e=/\.(tar\.gz|tgz)$/i.test(b),f=(0,l.join)(c,b.replace(/[^\w.\-]+/g,"_"));(0,h.mkdirSync)(c,{recursive:!0});let g=await fetch(a,{signal:AbortSignal.timeout(18e5)});if(!g.ok||!g.body)return d&&w.set(d,{received:0,total:0,done:!0,error:`download failed (${g.status})`}),`download failed (${g.status})`;let j=Number(g.headers.get("content-length"))||0,o=m.Readable.fromWeb(g.body);if(d){let a=0;w.set(d,{received:0,total:j,done:!1});let b=new m.PassThrough;b.on("data",b=>{a+=b.length;let c=w.get(d);c&&(c.received=a)}),await (0,n.pipeline)(o,b,(0,h.createWriteStream)(f))}else await (0,n.pipeline)(o,(0,h.createWriteStream)(f));let p=v(f,j);if(!p.ok){try{(0,h.rmSync)(f)}catch{}return p.message}e?(0,i.execFileSync)("tar",["-xzf",f,"-C",c],{stdio:"ignore",timeout:12e4}):new(k())(f).extractAllTo(c,!0);try{(0,h.rmSync)(f)}catch{}return null}async function U(){try{let a=await fetch("https://api.github.com/repos/ggml-org/llama.cpp/releases/latest",{headers:{"User-Agent":"constella",Accept:"application/vnd.github+json"},signal:AbortSignal.timeout(15e3)});if(!a.ok)return null;return(await a.json()).assets??[]}catch{return null}}let V=!1;async function W(a=!1){let b;if("win32"!==f().platform())return{ok:!0,fetched:!1};let c=R();try{b=(0,h.readdirSync)(c)}catch{return{ok:!1,fetched:!1,reason:"no llama dir"}}let d=b.some(a=>/^ggml-cuda\.dll$/i.test(a)),e=b.some(a=>/^cudart64_\d+\.dll$/i.test(a));if(!d||e)return{ok:e||!d,fetched:!1};if(V&&!a)return{ok:!1,fetched:!1,reason:"already attempted this run"};V=!0;let g="12";try{let a=(0,h.readFileSync)((0,l.join)(c,"ggml-cuda.dll")).toString("latin1").match(/cudart64_(\d+)\.dll/i);a&&(g=a[1])}catch{}let i=await U();if(!i)return{ok:!1,fetched:!1,reason:"GitHub unreachable"};let j=i.filter(a=>/cudart/i.test(a.name)&&/x64|amd64/i.test(a.name)),k=j.find(a=>RegExp(`cuda-${g}\\.`,"i").test(a.name))??j[0];if(!k)return{ok:!1,fetched:!1,reason:"no cudart asset in the latest release"};let m=await T(k.browser_download_url,k.name,c).catch(a=>String(a instanceof Error?a.message:a));if(m)return{ok:!1,fetched:!1,reason:m};let n=!1;try{n=(0,h.readdirSync)(c).some(a=>/^cudart64_\d+\.dll$/i.test(a))}catch{}return{ok:n,fetched:n}}async function X(){let a;await (0,s.nP)();let b=[];if(S()||await Y()){let a=await W(!0).catch(()=>null);return{ok:!0,installed:!0,log:["llama-server already installed.",...a?.fetched?["✓ fetched the CUDA runtime DLLs — GPU enabled."]:a&&!a.ok?[`⚠ CUDA runtime still missing (${a.reason??"unknown"}).`]:[]]}}let c=await F(),d=/cuda|nvidia/i.test(c.backend)||(c.accel??[]).some(a=>/cuda|nvidia/i.test(a));b.push(`platform ${f().platform()}/${f().arch()} \xb7 backend ${c.backend} → ${d?"CUDA":"CPU"} build`);try{let c=await fetch("https://api.github.com/repos/ggml-org/llama.cpp/releases/latest",{headers:{"User-Agent":"constella",Accept:"application/vnd.github+json"},signal:AbortSignal.timeout(15e3)});if(!c.ok)return{ok:!1,installed:!1,log:b,error:403===c.status?"GitHub API rate-limited — try again later or install manually from the releases page.":`GitHub releases API ${c.status}`};a=(await c.json()).assets??[]}catch(a){return{ok:!1,installed:!1,log:b,error:"couldn't reach GitHub: "+String(a instanceof Error?a.message:a)}}let e=function(a,b){let c=f().platform(),d="win32"===c?/win/i:"darwin"===c?/macos/i:/(ubuntu|linux)/i,e="arm64"===f().arch(),g=a.filter(a=>/\.(zip|tar\.gz|tgz)$/i.test(a.name)&&d.test(a.name));e||(g=g.filter(a=>!/arm64|aarch64/i.test(a.name)));let h=/cuda|hip|vulkan|sycl|kompute|musa|cann|adreno/i,i=a=>{if(!a.length)return null;let b=e?a.filter(a=>/arm64|aarch64/i.test(a.name)):a.filter(a=>/x64|amd64/i.test(a.name)),c=(b.length?b:a).sort((a,b)=>a.name.length-b.name.length)[0];return c?{name:c.name,url:c.browser_download_url}:null};if(b){let a=g.filter(a=>/cuda/i.test(a.name));if(a.length)return i(a)}let j=g.filter(a=>!h.test(a.name));return i(j.length?j:g)}(a,!!d);if(!e)return{ok:!1,installed:!1,log:b,error:"no matching prebuilt for this platform — install manually from the releases page."};b.push(`downloading ${e.name}…`);let g=R();(0,h.mkdirSync)(g,{recursive:!0}),w.set("llama-server",{received:0,total:0,done:!1});try{let a=await T(e.url,e.name,g,"llama-server");if(a)return w.set("llama-server",{received:0,total:0,done:!0,error:a}),{ok:!1,installed:!1,log:b,error:a};if(d){let a=await W(!0);b.push(a.ok?a.fetched?"✓ CUDA runtime DLLs installed — GPU enabled.":"CUDA runtime already present.":`⚠ CUDA runtime not installed (${a.reason??"unknown"}) — runs on CPU; retries on next Start/Install.`)}}catch(a){return{ok:!1,installed:!1,log:b,error:"download/extract failed: "+String(a instanceof Error?a.message:a)}}let i=function a(b,c,d){let e;if(d<0)return null;try{e=(0,h.readdirSync)(b,{withFileTypes:!0})}catch{return null}for(let a of e)if(a.isFile()&&a.name===c)return(0,l.join)(b,a.name);for(let f of e)if(f.isDirectory()){let e=a((0,l.join)(b,f.name),c,d-1);if(e)return e}return null}(g,"win32"===f().platform()?"llama-server.exe":"llama-server",5);if(!i)return{ok:!1,installed:!1,log:b,error:"downloaded, but llama-server wasn't found in the archive."};if("win32"!==f().platform())try{(0,h.chmodSync)(i,493)}catch{}return(0,h.writeFileSync)((0,l.join)(g,"INSTALLED"),i,"utf8"),w.set("llama-server",{received:1,total:1,done:!0}),b.push(`✓ installed → ${i}`),await ah().catch(()=>{}),(0,p.revalidatePath)("/models"),{ok:!0,installed:!0,path:i,log:b}}async function Y(){if(S())return!0;try{return(0,i.execSync)("llama-server --version",{timeout:3e3,stdio:"ignore"}),!0}catch{return!1}}async function Z(){try{let a=await fetch(`${C}/v1/models`,{signal:AbortSignal.timeout(2500)});if(!a.ok)return{up:!1,model:null};let b=await a.json(),c=b.data?.[0]?.id;return{up:!0,model:c?c.split(/[\\/]/).pop()??c:null}}catch{return{up:!1,model:null}}}async function $(a){try{var b;let c,d=await F();if(!/cuda|metal/i.test(d.backend))return[];let e=(b=d.vram,(c=/([\d.]+)\s*GB/i.exec(b||""))?1e9*parseFloat(c[1]):0);if(a&&e&&1.15*a>e)return[];return["-ngl","99"]}catch{return[]}}function _(){try{let a=q.db.select({file:r.localModel.file,name:r.localModel.name}).from(r.localModel).all().find(a=>/embed|nomic|bge|mxbai|gte/i.test(a.name)&&a.file&&(0,h.existsSync)(a.file));return a?{file:a.file,name:a.name}:null}catch{return null}}function aa(){try{let a=q.db.select({file:r.localModel.file,name:r.localModel.name,sizeBytes:r.localModel.sizeBytes}).from(r.localModel).all().find(a=>!/embed|nomic|bge|mxbai|gte/i.test(a.name)&&a.file&&(0,h.existsSync)(a.file));return a?{file:a.file,name:a.name,sizeBytes:a.sizeBytes}:null}catch{return null}}async function ab(){try{return(await fetch(`${D}/health`,{signal:AbortSignal.timeout(1500)})).ok}catch{return!1}}async function ac(){if(await ab())return{up:!0};let a=S();if(!a)return{up:!1,reason:"llama-server not installed"};let b=_();if(!b)return{up:!1,reason:"no embedding model installed (download nomic-embed-text)"};try{await W().catch(()=>{});let c=await $(),d=(0,i.spawn)(a,["-m",b.file,"--embeddings","--host","127.0.0.1","--port","8083","-c","2048","--pooling","mean",...c],{detached:!0,stdio:"ignore"});d.on("error",()=>{}),d.unref()}catch(a){return{up:!1,reason:"spawn failed: "+String(a instanceof Error?a.message:a)}}for(let a=0;a<24;a++)if(await new Promise(a=>setTimeout(a,500)),await ab())return{up:!0,model:b.name};return{up:!1,reason:"embedding server didn't come up in time"}}async function ad(){if((await Z()).up)return{up:!0};let a=S();if(!a)return{up:!1,reason:"llama-server not installed"};let b=aa();if(!b)return{up:!1,reason:"no chat GGUF installed"};try{await W().catch(()=>{});let c=await $(b.sizeBytes),d=(0,i.spawn)(a,["-m",b.file,"--host","127.0.0.1","--port","8082","-c","4096",...c],{detached:!0,stdio:"ignore"});d.on("error",()=>{}),d.unref()}catch(a){return{up:!1,reason:"spawn failed: "+String(a instanceof Error?a.message:a)}}for(let a=0;a<24;a++)if(await new Promise(a=>setTimeout(a,500)),(await Z()).up)return{up:!0,model:b.name};return{up:!1,reason:"llama server didn't come up in time"}}async function ae(){let a=_();return{up:await ab(),model:a?.name??null,installed:!!a}}async function af(){let a=await ac();return(0,p.revalidatePath)("/models"),a}async function ag(){let{org:a}=await (0,s.nP)();await ac().catch(()=>{});let b=await (0,u.xV)(a.id);return(0,p.revalidatePath)("/models"),b}async function ah(){let{workspace:a}=await (0,s.nP)(),b=await Z(),c=new Set((await q.db.select({file:r.localModel.file}).from(r.localModel)).map(a=>a.file)).size,d={status:b.up?"connected":"needs_sync",modelCount:c,lastSync:b.up?new Date:null},[e]=await q.db.select().from(r.provider).where((0,o.Uo)((0,o.eq)(r.provider.workspaceId,a.id),(0,o.eq)(r.provider.catalogId,"llamacpp")));return e?await q.db.update(r.provider).set(d).where((0,o.eq)(r.provider.id,e.id)):await q.db.insert(r.provider).values({id:(0,g.randomUUID)(),workspaceId:a.id,catalogId:"llamacpp",adapter:"local_llamacpp",kind:"local",auth:"local",syncStatus:"implemented",...d}),(0,p.revalidatePath)("/models"),{ok:!0}}async function ai(a){let b;await (0,s.nP)();let c=await Y(),d=[];if(!c)return{up:!1,installed:!1,log:["llama-server not found — install llama.cpp from https://github.com/ggml-org/llama.cpp/releases (or `brew install llama.cpp`), then retry."]};if((await Z()).up)return{up:!0,installed:c,log:[`server already running on ${C}`]};let e=0;if(a){let d,[f]=await q.db.select().from(r.localModel).where((0,o.eq)(r.localModel.id,a));if(f&&(d=f.name,/embed|nomic|bge|mxbai|gte/i.test(d))){let a=await ac();return{up:a.up,installed:c,log:[`${f.name} is an EMBEDDING model — started the RAG embedding server on :8083 (it can't power chat on :8082).`,a.up?`✓ embeddings ready \xb7 ${D}`:`embeddings: ${a.reason??"failed to start"}`]}}b=f?.file,e=f?.sizeBytes??0}if(!b){let a=aa();b=a?.file,e=a?.sizeBytes??0}if(!b||!(0,h.existsSync)(b)){let a=_();if(a){let b=await ac();return{up:!1,installed:c,log:[`Your only local model (${a.name}) is an EMBEDDING model — it powers RAG on the embeddings server (${D}), not the chat server.`,b.up?"✓ embeddings server is running.":`embeddings: ${b.reason??"not started"}`,"Download a chat/instruct GGUF (e.g. Qwen, Llama) below to run the chat server on :8082."]}}return{up:!1,installed:c,log:["no GGUF model on disk — download one below first."]}}try{let a=S()??"llama-server";await W().catch(()=>{});let f=await $(e),g=(0,i.spawn)(a,["-m",b,"--host","127.0.0.1","--port","8082","-c","4096",...f],{detached:!0,stdio:"ignore"}),h="";g.on("error",a=>{h=String(a instanceof Error?a.message:a)}),g.unref(),d.push(`$ llama-server -m ${b.split(/[\\/]/).pop()} --port 8082${f.length?" -ngl 99 (GPU)":" (CPU)"}`);let j=!1;for(let a=0;a<12&&!j;a++)await new Promise(a=>setTimeout(a,1e3)),j=(await Z()).up;return h&&d.push("spawn failed: "+h),d.push(j?`✓ ready \xb7 ${C}`:"still starting — large models take longer; run llama-server in a terminal to see progress."),await ah(),(0,p.revalidatePath)("/models"),{up:j,installed:c,log:d}}catch(a){return{up:!1,installed:c,log:["failed to start: "+String(a instanceof Error?a.message:a)]}}}async function aj(){let a=await Y(),b=[];try{"win32"===f().platform()?(0,i.execSync)("taskkill /IM llama-server.exe /F",{stdio:"ignore",timeout:4e3}):(0,i.execSync)("pkill -f llama-server",{stdio:"ignore",timeout:4e3}),b.push("server stopped")}catch{b.push("no running llama-server process found")}return await ah(),(0,p.revalidatePath)("/models"),{up:!1,installed:a,log:b}}(0,A.D)([F,G,H,I,J,K,M,N,O,P,Q,X,Y,Z,ab,ac,ad,ae,af,ag,ah,ai,aj]),(0,d.A)(F,"002b23243d909b052f058eef370008e6ac191cb67c",null),(0,d.A)(G,"00712c870a25286e9ca69b4d8a077001e10ed38a44",null),(0,d.A)(H,"40a0f462b5c8f8797fff47108383f452a8dde1d4c5",null),(0,d.A)(I,"004abaa9cb248486b384459963ded9e6daa85d9acd",null),(0,d.A)(J,"40cc3938ec97ed589bd41ea22e6ea789dbd451693c",null),(0,d.A)(K,"008e182009da5a09f9e64cd9b87db6a2c8df4074a1",null),(0,d.A)(M,"40f4ef6ab0dc6a852c2184ca12f9a0aabddf636882",null),(0,d.A)(N,"40d49ce16e903eadd8af61e3f2c8ab269d0c1f3ece",null),(0,d.A)(O,"40a402e987f006d54c979322842b9d986a354863cd",null),(0,d.A)(P,"40fc7cb69a95583ca5eeeb98ca6f022c7bc87ec6d6",null),(0,d.A)(Q,"40536f2214bccc059b732ba48594e454baaa9b18d8",null),(0,d.A)(X,"002b2f946074813af241278856bc2a9631c6e738f4",null),(0,d.A)(Y,"0062afce3864c836ae5fb7bcc056c4e225a2b61809",null),(0,d.A)(Z,"005ea0a651313c53ddab6d0c74dd2dd94fdfb2c109",null),(0,d.A)(ab,"00e8ea103cc50f72242c40a48ba783b9bbde49b4cf",null),(0,d.A)(ac,"008d1ddd07427a26d8fbc2aa278b87aac8b07a8d1e",null),(0,d.A)(ad,"00e49e9385b91de00eeccc8fb8a152a0d0dfef79f7",null),(0,d.A)(ae,"001e76cec59a1e8dd669f1ca8463d3f47a618aa803",null),(0,d.A)(af,"0040789e81b7f4c5badcbd79723e48c23db549d982",null),(0,d.A)(ag,"00cf127c3ef99891a306c64721a5de2d06cad6f439",null),(0,d.A)(ah,"00bb1207c0a8b8048b2330ee1ad232a5e11accbe8f",null),(0,d.A)(ai,"408478624c9bf2a6cfc301804689e59642370024f1",null),(0,d.A)(aj,"0003e476ac4ec5fb77c9a9aa1f1ca5046bc8d1cd56",null)},35745:(a,b,c)=>{c.d(b,{T:()=>d});function d(a){return a<=.3?"Behavior (temperature low): be precise and deterministic. Give the single most correct, conventional answer; minimize speculation and creative variation; keep output tight and repeatable. Best for code, reviews and tools.":a<=.6?"Behavior (temperature balanced): be accurate and direct, but use reasonable judgment and allow a little exploration where the task clearly benefits.":a<=.85?"Behavior (temperature high): be creative and exploratory. Offer alternatives and non-obvious approaches and elaborate where it adds value — while staying correct and on-spec.":"Behavior (temperature max): be highly exploratory and generative. Brainstorm broadly, propose multiple distinct options and novel angles; favor breadth — still grounded in the requirements."}},38926:(a,b,c)=>{c.d(b,{IW:()=>i,Kh:()=>k,r6:()=>j});var d=c(77598),e=c(97603),f=c(65705),g=c(1890);function h(){let a=process.env.CONSTELLA_VAULT_KEY;if(!a)throw Error("CONSTELLA_VAULT_KEY is not set");let b=Buffer.from(a,"base64");if(32!==b.length)throw Error("CONSTELLA_VAULT_KEY must decode to 32 bytes");return b}async function i(a,b,c,i){let j=(0,d.randomBytes)(12),k=(0,d.createCipheriv)("aes-256-gcm",h(),j),l=Buffer.concat([k.update(c,"utf8"),k.final()]),m=k.getAuthTag(),n=Buffer.concat([l,m]).toString("base64");await f.db.delete(g.vault).where((0,e.Uo)((0,e.eq)(g.vault.workspaceId,a),(0,e.eq)(g.vault.ref,b))),await f.db.insert(g.vault).values({id:(0,d.randomUUID)(),workspaceId:a,providerId:i,ref:b,ciphertext:n,iv:j.toString("base64")})}async function j(a,b){let[c]=await f.db.select().from(g.vault).where((0,e.Uo)((0,e.eq)(g.vault.workspaceId,a),(0,e.eq)(g.vault.ref,b)));if(!c)return null;let i=Buffer.from(c.ciphertext,"base64"),j=i.subarray(i.length-16),k=i.subarray(0,i.length-16),l=(0,d.createDecipheriv)("aes-256-gcm",h(),Buffer.from(c.iv,"base64"));return l.setAuthTag(j),Buffer.concat([l.update(k),l.final()]).toString("utf8")}async function k(a,b){await f.db.delete(g.vault).where((0,e.Uo)((0,e.eq)(g.vault.workspaceId,a),(0,e.eq)(g.vault.ref,b)))}},53993:(a,b,c)=>{c.d(b,{Ht:()=>j,O5:()=>m,Yv:()=>o,nP:()=>n});var d=c(44013),e=c(84988),f=c(97603),g=c(65705),h=c(1890),i=c(37296);async function j(){return i.j2.api.getSession({headers:await (0,d.headers)()})}async function k(a,b){if(b){let[c]=await g.db.select({org:h.organization}).from(h.member).innerJoin(h.organization,(0,f.eq)(h.member.orgId,h.organization.id)).where((0,f.Uo)((0,f.eq)(h.member.userId,a),(0,f.eq)(h.organization.id,b)));if(c)return c.org}let c=await g.db.select({org:h.organization}).from(h.member).innerJoin(h.organization,(0,f.eq)(h.member.orgId,h.organization.id)).where((0,f.eq)(h.member.userId,a));return c[0]?.org??null}async function l(a){let[b]=await g.db.select().from(h.workspace).where((0,f.eq)(h.workspace.orgId,a));return b??null}async function m(a){return g.db.select({id:h.organization.id,name:h.organization.name}).from(h.member).innerJoin(h.organization,(0,f.eq)(h.member.orgId,h.organization.id)).where((0,f.eq)(h.member.userId,a))}async function n(){let a=await j();a||(0,e.redirect)("/login"),"1"===process.env.CONSTELLA_FORCE_ONBOARDING&&(0,e.redirect)("/onboarding");let b=await k(a.user.id,a.session.activeOrgId);b||(0,e.redirect)("/onboarding");let c=await l(b.id);return c||(0,e.redirect)("/onboarding"),{session:a,org:b,workspace:c}}function o(a){return(a||"org").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}},56267:(a,b,c)=>{c.d(b,{Lb:()=>u,bP:()=>v,tt:()=>w,GA:()=>x});var d=c(57086),e=c(65121);let f={TypeScript:{slug:"typescript"},JavaScript:{slug:"javascript"},Python:{slug:"python"},Go:{slug:"go",variant:"original-wordmark"},Rust:{slug:"rust"},Java:{slug:"java"},Kotlin:{slug:"kotlin"},"C#":{slug:"csharp"},Ruby:{slug:"ruby"},PHP:{slug:"php"},Elixir:{slug:"elixir"},Swift:{slug:"swift"},"C++":{slug:"cplusplus"},Scala:{slug:"scala"},Dart:{slug:"dart"},C:{slug:"c"},Clojure:{slug:"clojure"},Haskell:{slug:"haskell"},Lua:{slug:"lua"},R:{slug:"r"},"Objective-C":{slug:"objectivec"},Erlang:{slug:"erlang",variant:"plain"},"Node.js":{slug:"nodejs"},Bun:{slug:"bun"},Deno:{slug:"denojs"},"Python 3":{slug:"python"},JVM:{slug:"java"},".NET":{slug:"dotnetcore"},"BEAM (Erlang VM)":{slug:"erlang",variant:"plain"},React:{slug:"react"},Vue:{slug:"vuejs"},Svelte:{slug:"svelte"},Angular:{slug:"angular"},SolidJS:{slug:"solidjs"},"Alpine.js":{slug:"alpinejs"},Ember:{slug:"ember"},Backbone:{slug:"backbonejs"},"HTML/CSS":{slug:"html5"},"Vanilla JS":{slug:"javascript"},"Plain CSS":{slug:"css3"},"Next.js":{slug:"nextjs"},Nuxt:{slug:"nuxtjs"},Remix:{slug:"remix"},SvelteKit:{slug:"svelte"},Astro:{slug:"astro"},Gatsby:{slug:"gatsby"},"Vite (SPA)":{slug:"vitejs"},Hugo:{slug:"hugo"},Jekyll:{slug:"jekyll",variant:"original-wordmark"},NestJS:{slug:"nestjs"},Fastify:{slug:"fastify"},Express:{slug:"express"},Koa:{slug:"koa"},Django:{slug:"django",variant:"plain"},Flask:{slug:"flask"},FastAPI:{slug:"fastapi"},"Spring Boot":{slug:"spring"},Spring:{slug:"spring"},Laravel:{slug:"laravel"},"Ruby on Rails":{slug:"rails"},Gin:{slug:"go",variant:"original-wordmark"},Phoenix:{slug:"phoenix"},"ASP.NET Core":{slug:"dotnetcore"},Nginx:{slug:"nginx"},GraphQL:{slug:"graphql"},Symfony:{slug:"symfony"},CodeIgniter:{slug:"codeigniter"},PostgreSQL:{slug:"postgresql"},MySQL:{slug:"mysql"},MariaDB:{slug:"mariadb"},SQLite:{slug:"sqlite"},MongoDB:{slug:"mongodb"},Redis:{slug:"redis"},Cassandra:{slug:"cassandra"},DynamoDB:{slug:"dynamodb"},Supabase:{slug:"supabase"},Prisma:{slug:"prisma"},Sequelize:{slug:"sequelize"},SQLAlchemy:{slug:"sqlalchemy"},"Tailwind CSS":{slug:"tailwindcss"},"CSS Modules":{slug:"css3"},Sass:{slug:"sass"},MUI:{slug:"materialui"},Bootstrap:{slug:"bootstrap"},Bulma:{slug:"bulma"},Vuetify:{slug:"vuetify"},Docker:{slug:"docker"},Podman:{slug:"podman"},Vercel:{slug:"vercel"},Netlify:{slug:"netlify"},AWS:{slug:"amazonwebservices",variant:"original-wordmark"},GCP:{slug:"googlecloud"},Kubernetes:{slug:"kubernetes"},Azure:{slug:"azure"},Jenkins:{slug:"jenkins"},CircleCI:{slug:"circleci",variant:"plain"},Terraform:{slug:"terraform"},Ansible:{slug:"ansible"},Vagrant:{slug:"vagrant"},RabbitMQ:{slug:"rabbitmq"},Kafka:{slug:"apachekafka"},Auth0:{slug:"auth0",variant:"plain"},Keycloak:{slug:"keycloak"},"React Native":{slug:"react"},Flutter:{slug:"flutter"},Android:{slug:"android"},Ionic:{slug:"ionic"},Xamarin:{slug:"xamarin"},NativeScript:{slug:"nativescript"},TensorFlow:{slug:"tensorflow"},PyTorch:{slug:"pytorch"},"scikit-learn":{slug:"scikitlearn"},Pandas:{slug:"pandas"},NumPy:{slug:"numpy"},Jupyter:{slug:"jupyter"},Jest:{slug:"jest"},Vitest:{slug:"vitest"},Cypress:{slug:"cypressio"},Playwright:{slug:"playwright"},Selenium:{slug:"selenium"},Mocha:{slug:"mocha"},Jasmine:{slug:"jasmine"},Puppeteer:{slug:"puppeteer"},D3:{slug:"d3js"},Grafana:{slug:"grafana"},Firebase:{slug:"firebase"},Appwrite:{slug:"appwrite"},Heroku:{slug:"heroku"}},g=Object.fromEntries(e.z.map(a=>[a.key,a.label])),h={TypeScript:{logo:"typescript",color:"3178C6"},JavaScript:{logo:"javascript",color:"F7DF1E"},Python:{logo:"python",color:"3776AB"},"Python 3":{logo:"python",color:"3776AB"},Go:{logo:"go",color:"00ADD8"},Rust:{logo:"rust",color:"000000"},Java:{logo:"openjdk",color:"ED8B00"},Kotlin:{logo:"kotlin",color:"7F52FF"},"C#":{logo:"csharp",color:"512BD4"},Ruby:{logo:"ruby",color:"CC342D"},PHP:{logo:"php",color:"777BB4"},Elixir:{logo:"elixir",color:"4B275F"},Swift:{logo:"swift",color:"F05138"},"C++":{logo:"cplusplus",color:"00599C"},C:{logo:"c",color:"A8B9CC"},Scala:{logo:"scala",color:"DC322F"},Dart:{logo:"dart",color:"0175C2"},Clojure:{logo:"clojure",color:"5881D8"},Haskell:{logo:"haskell",color:"5D4F85"},Lua:{logo:"lua",color:"2C2D72"},R:{logo:"r",color:"276DC3"},Erlang:{logo:"erlang",color:"A90533"},"Node.js":{logo:"nodedotjs",color:"5FA04E"},Bun:{logo:"bun",color:"000000"},Deno:{logo:"deno",color:"70FFAF"},".NET":{logo:"dotnet",color:"512BD4"},React:{logo:"react",color:"61DAFB"},Vue:{logo:"vuedotjs",color:"4FC08D"},Svelte:{logo:"svelte",color:"FF3E00"},Angular:{logo:"angular",color:"DD0031"},SolidJS:{logo:"solid",color:"2C4F7C"},Preact:{logo:"preact",color:"673AB8"},Qwik:{logo:"qwik",color:"AC7EF4"},"Alpine.js":{logo:"alpinedotjs",color:"8BC0D0"},Ember:{logo:"emberdotjs",color:"E04E39"},"Next.js":{logo:"nextdotjs",color:"000000"},Nuxt:{logo:"nuxtdotjs",color:"00DC82"},Remix:{logo:"remix",color:"000000"},SvelteKit:{logo:"svelte",color:"FF3E00"},Astro:{logo:"astro",color:"BC52EE"},Gatsby:{logo:"gatsby",color:"663399"},"Vite (SPA)":{logo:"vite",color:"646CFF"},Hugo:{logo:"hugo",color:"FF4088"},Jekyll:{logo:"jekyll",color:"CC0000"},NestJS:{logo:"nestjs",color:"E0234E"},Fastify:{logo:"fastify",color:"000000"},Express:{logo:"express",color:"000000"},Hono:{logo:"hono",color:"E36002"},Koa:{logo:"koa",color:"33333D"},Django:{logo:"django",color:"092E20"},Flask:{logo:"flask",color:"000000"},FastAPI:{logo:"fastapi",color:"009688"},"Spring Boot":{logo:"springboot",color:"6DB33F"},Spring:{logo:"spring",color:"6DB33F"},Laravel:{logo:"laravel",color:"FF2D20"},Symfony:{logo:"symfony",color:"000000"},"Ruby on Rails":{logo:"rubyonrails",color:"D30001"},Gin:{logo:"gin",color:"008ECF"},Phoenix:{logo:"phoenixframework",color:"FD4F00"},"ASP.NET Core":{logo:"dotnet",color:"512BD4"},GraphQL:{logo:"graphql",color:"E10098"},Nginx:{logo:"nginx",color:"009639"},"React Native":{logo:"react",color:"61DAFB"},Flutter:{logo:"flutter",color:"02569B"},Android:{logo:"android",color:"3DDC84"},Ionic:{logo:"ionic",color:"3880FF"},PostgreSQL:{logo:"postgresql",color:"4169E1"},MySQL:{logo:"mysql",color:"4479A1"},MariaDB:{logo:"mariadb",color:"003545"},SQLite:{logo:"sqlite",color:"003B57"},MongoDB:{logo:"mongodb",color:"47A248"},Redis:{logo:"redis",color:"FF4438"},Cassandra:{logo:"apachecassandra",color:"1287B1"},DynamoDB:{logo:"amazondynamodb",color:"4053D6"},Supabase:{logo:"supabase",color:"3FCF8E"},Prisma:{logo:"prisma",color:"2D3748"},Drizzle:{logo:"drizzle",color:"C5F74F"},TypeORM:{logo:"typeorm",color:"FE0803"},Sequelize:{logo:"sequelize",color:"52B0E7"},SQLAlchemy:{logo:"sqlalchemy",color:"D71F00"},"Tailwind CSS":{logo:"tailwindcss",color:"06B6D4"},"CSS Modules":{logo:"cssmodules",color:"000000"},"styled-components":{logo:"styledcomponents",color:"DB7093"},Sass:{logo:"sass",color:"CC6699"},MUI:{logo:"mui",color:"007FFF"},Bootstrap:{logo:"bootstrap",color:"7952B3"},Bulma:{logo:"bulma",color:"00D1B2"},Vuetify:{logo:"vuetify",color:"1867C0"},Jest:{logo:"jest",color:"C21325"},Vitest:{logo:"vitest",color:"6E9F18"},Cypress:{logo:"cypress",color:"69D3A7"},Playwright:{logo:"playwright",color:"2EAD33"},Selenium:{logo:"selenium",color:"43B02A"},Mocha:{logo:"mocha",color:"8D6748"},TensorFlow:{logo:"tensorflow",color:"FF6F00"},PyTorch:{logo:"pytorch",color:"EE4C2C"},"scikit-learn":{logo:"scikitlearn",color:"F7931E"},Keras:{logo:"keras",color:"D00000"},Pandas:{logo:"pandas",color:"150458"},NumPy:{logo:"numpy",color:"013243"},Jupyter:{logo:"jupyter",color:"F37626"},D3:{logo:"d3dotjs",color:"F9A03C"},"Chart.js":{logo:"chartdotjs",color:"FF6384"},Grafana:{logo:"grafana",color:"F46800"},Plotly:{logo:"plotly",color:"3F4F75"},Docker:{logo:"docker",color:"2496ED"},Podman:{logo:"podman",color:"892CA0"},Vercel:{logo:"vercel",color:"000000"},Netlify:{logo:"netlify",color:"00C7B7"},AWS:{logo:"amazonwebservices",color:"232F3E"},GCP:{logo:"googlecloud",color:"4285F4"},Azure:{logo:"microsoftazure",color:"0078D4"},Kubernetes:{logo:"kubernetes",color:"326CE5"},Cloudflare:{logo:"cloudflare",color:"F38020"},Jenkins:{logo:"jenkins",color:"D24939"},CircleCI:{logo:"circleci",color:"343434"},Terraform:{logo:"terraform",color:"7B42BC"},Ansible:{logo:"ansible",color:"EE0000"},Firebase:{logo:"firebase",color:"DD2C00"},Appwrite:{logo:"appwrite",color:"FD366E"},Heroku:{logo:"heroku",color:"430098"},BullMQ:{logo:"bull",color:"CB0000"},RabbitMQ:{logo:"rabbitmq",color:"FF6600"},Kafka:{logo:"apachekafka",color:"231F20"},Celery:{logo:"celery",color:"37814A"},"Auth.js":{logo:"auth0",color:"EB5424"},Clerk:{logo:"clerk",color:"6C47FF"},Auth0:{logo:"auth0",color:"EB5424"},Keycloak:{logo:"keycloak",color:"4D4D4D"}},i=[{c1:"0E0D17",c2:"E0A44E"},{c1:"0B1120",c2:"38BDF8"},{c1:"1A0B2E",c2:"A855F7"},{c1:"0A1F1C",c2:"2DD4BF"},{c1:"1F0A0A",c2:"F87171"},{c1:"0A0A1F",c2:"6366F1"},{c1:"131A0A",c2:"A3E635"},{c1:"1F140A",c2:"FB923C"}];function j(a){return a.toLowerCase().replace(/[^\w\s-]/g,"").trim().replace(/\s+/g,"-")}function k(a){let b=h[a],c=a.replace(/-/g,"--").replace(/_/g,"__").replace(/ /g,"_");return b?``:``}function l(a){return Object.entries(a||{}).filter(([,a])=>a&&"None"!==a&&a.trim())}var m=c(4370),n=c(35745);let o=[{handle:"ada",name:"Ada",role:"CEO",color:"#e0a44e",reportsTo:null,model:"sonnet",provider:"cli_claude_code",temperature:.4,dailyCapUsd:15,tier:"critical",identity:"Decisive, outcome-driven leader. Speaks in goals, not tasks. Protects scope and budget.",ritual:"Read the company goals, decompose into epics, delegate to leads, review what shipped."},{handle:"linus",name:"Linus",role:"CTO",color:"#9a5cff",reportsTo:"ada",model:"sonnet",provider:"cli_claude_code",temperature:.3,dailyCapUsd:40,tier:"critical",identity:"Systems thinker. Balances delivery speed against technical debt.",ritual:"Turn epics into tickets, route work to specialists, clear blockers, review PRs."},{handle:"donald",name:"Donald",role:"Product Owner",color:"#4fc9b0",reportsTo:"ada",model:"haiku",provider:"cli_claude_code",temperature:.4,dailyCapUsd:20,tier:"heavy",identity:"Customer voice. Ruthless about priority and clarity.",ritual:"Groom the backlog with MoSCoW, plan the sprint, track delivery, close with a retro."},{handle:"margaret",name:"Margaret",role:"Backend",color:"#3fb98f",reportsTo:"linus",model:"sonnet",provider:"cli_claude_code",temperature:.3,dailyCapUsd:50,tier:"heavy",identity:"Pragmatic server engineer. Values correctness, small diffs and green tests.",ritual:"Pull one ticket, read context, implement on a branch, never push without a passing suite."},{handle:"grace",name:"Grace",role:"Frontend",color:"#5b8def",reportsTo:"linus",model:"sonnet",provider:"cli_claude_code",temperature:.5,dailyCapUsd:45,tier:"heavy",identity:"Craft-focused UI engineer. Cares about accessibility and clean component APIs.",ritual:"Read the design tokens, build the smallest component that works, typecheck before PR."},{handle:"edsger",name:"Edsger",role:"QA",color:"#e8688f",reportsTo:"linus",model:"haiku",provider:"cli_claude_code",temperature:.2,dailyCapUsd:25,tier:"heavy",identity:"Skeptical quality gate. Assumes nothing works until proven by a test.",ritual:"Reproduce, cover with a test, run the suite, then gate the sign-off."},{handle:"werner",name:"Werner",role:"DevOps",color:"#f0a35e",reportsTo:"linus",model:"haiku",provider:"cli_claude_code",temperature:.3,dailyCapUsd:20,tier:"heavy",identity:"Reliability-minded operator. Automates the boring, guards the leases.",ritual:"Build, deploy a preview, report the URL, never leave an env leased too long."},{handle:"barbara",name:"Barbara",role:"Docs",color:"#b3d97a",reportsTo:"ada",model:"haiku",provider:"cli_claude_code",temperature:.4,dailyCapUsd:15,tier:"light",identity:"Patient explainer. Turns changes into understandable docs.",ritual:"Watch merges, draft docs while context is fresh, verify every link."},{handle:"whitfield",name:"Whitfield",role:"CyberSec",color:"#c4a0ff",reportsTo:"linus",model:"opus",provider:"cli_claude_code",temperature:.2,dailyCapUsd:30,tier:"critical",identity:"Adversarial reviewer. Thinks like an attacker, writes like an auditor.",ritual:"Audit every change for secret handling and injection, file findings with a concrete fix."},{handle:"vannevar",name:"Vannevar",role:"Knowledge",color:"#7ac5e0",reportsTo:"ada",model:"haiku",provider:"cli_claude_code",temperature:.2,dailyCapUsd:10,tier:"light",identity:"Keeper of the company's semantic memory. Indexes every document AND conversation into embeddings so any agent can recall anything instantly.",ritual:"Keep the embedding server healthy; re-index the workspace docs and the chat (team room, DMs, Telegram) into the RAG index so retrieval stays current."}],p=[{name:"open-pr",summary:"Branch, commit, open a PR with a test plan and request CTO review.",trigger:"When a work product is ready to merge",steps:["Create a branch from main","Commit the change set","Open a PR with summary + test plan","Request review from the CTO"]},{name:"run-suite",summary:"Detect the package manager, run the test task and gate sign-off on red.",trigger:"Before any sign-off",steps:["Detect package manager","Run the workspace test task","Parse results","Block sign-off if red"]},{name:"secret-scan",summary:"Scan for plaintext keys, verify vault references and flag log leaks.",trigger:"On every adapter change",steps:["Grep for plaintext keys","Check vault references","Flag any echo to logs"]},{name:"telegram-notify",summary:"Format a digest and POST it to the Telegram Bot API.",trigger:"When a routine completes",steps:["Format the digest","Resolve the chat id from secrets","POST to Telegram Bot API"]},{name:"moscow-prioritise",summary:"Score backlog items and re-order them with the MoSCoW method.",trigger:"During backlog grooming",steps:["Score each item","Assign Must/Should/Could/Won't","Re-order the backlog"]},{name:"gguf-validate",summary:"Pull a GGUF, verify SHA-256 and bind to loopback.",trigger:"When installing a local model",steps:["Download the GGUF","Verify SHA-256","Bind to 127.0.0.1 only"]}],q=p.filter(a=>"telegram-notify"!==a.name&&"gguf-validate"!==a.name).map(a=>a.name);function r(a,b){return`# ${a}
|
|
349
|
+
|
|
350
|
+
${b}
|
|
351
|
+
`}function s(a){let b,c,d,e=[[".claude/organization.md",`---
|
|
352
|
+
orgId: ${a.orgId}
|
|
353
|
+
slug: ${a.slug}
|
|
354
|
+
name: ${a.company}
|
|
355
|
+
runMode: ${a.runMode??"start"}
|
|
356
|
+
created: ${a.createdAt??"(set at creation)"}
|
|
357
|
+
---
|
|
358
|
+
# ${a.company} — Organization
|
|
359
|
+
|
|
360
|
+
- **Organization ID:** \`${a.orgId}\` (stable; never changes even if the name does)
|
|
361
|
+
- **Workspace path:** \`~/.constella/organizations/${a.orgId}/workspace/\`
|
|
362
|
+
- **Runtime mode:** ${a.runMode??"start"} (local \xb7 auth \xb7 vps \xb7 portable)
|
|
363
|
+
|
|
364
|
+
## Mission
|
|
365
|
+
${a.mission||"_Define the company mission._"}
|
|
366
|
+
|
|
367
|
+
## Objective
|
|
368
|
+
${a.objective||"_Define the current objective._"}
|
|
369
|
+
|
|
370
|
+
## Active modules
|
|
371
|
+
Dashboard \xb7 Agents \xb7 Skills \xb7 Product \xb7 Planner \xb7 Docs \xb7 Reports \xb7 Code \xb7 Costs \xb7 Models \xb7 Security \xb7 Pulse \xb7 Chat.
|
|
372
|
+
|
|
373
|
+
## Default agents
|
|
374
|
+
${o.map(a=>`- **${a.name}** (@${a.handle}) — ${a.role}${a.reportsTo?`, reports to @${a.reportsTo}`:""}`).join("\n")}
|
|
375
|
+
|
|
376
|
+
## Organization rules
|
|
377
|
+
1. The directory is the source of truth; the database only indexes it.
|
|
378
|
+
2. Every agent and the Code editor are locked to THIS workspace — no access outside it.
|
|
379
|
+
3. Plan before building; every change passes a security review before merge.
|
|
380
|
+
4. Respect per-agent daily budget ceilings; stop at the cap.
|
|
381
|
+
`],[".claude/workspace.md",`# Workspace structure
|
|
382
|
+
|
|
383
|
+
This workspace is the operational brain of **${a.company}**. The platform reads these
|
|
384
|
+
files to operate; editing a file in the UI writes it back here, and editing it here is
|
|
385
|
+
picked up by the sync engine.
|
|
386
|
+
|
|
387
|
+
## Folders
|
|
388
|
+
| Path | Responsibility |
|
|
389
|
+
|---|---|
|
|
390
|
+
| \`.claude/\` | Control layer — org/workspace config, permissions, memory, routing, indexing, settings; agents & skills (read by the Claude CLI). |
|
|
391
|
+
| \`DOCS/\` | Documentation — architecture, API, database, standards, onboarding. |
|
|
392
|
+
| \`PO/\` | Product ownership — roadmap, backlog, sprint, requirements, user stories. |
|
|
393
|
+
| \`Reports/\` | System & agent reports — status, health, pulse, daily/weekly, errors. |
|
|
394
|
+
| \`specs/\` \`issues/\` | Planner output — specs and the issues agents implement. |
|
|
395
|
+
| _(project source)_ | The product the agents build. |
|
|
396
|
+
|
|
397
|
+
## File naming & Markdown rules
|
|
398
|
+
- Lower-case, hyphenated file names (\`sprint-plan.md\`).
|
|
399
|
+
- Each document opens with a single H1 title; use \`## Section\` headings the loaders parse.
|
|
400
|
+
- Optional YAML front-matter (\`---\`) for machine-readable fields.
|
|
401
|
+
|
|
402
|
+
## Sync behavior
|
|
403
|
+
- **Write-through:** UI edits write the \`.md\` immediately, then re-index.
|
|
404
|
+
- **Watcher:** external/agent edits are detected and re-indexed disk → DB.
|
|
405
|
+
- The DB is an index/cache only; this directory wins on conflict.
|
|
406
|
+
|
|
407
|
+
## Code module binding & isolation
|
|
408
|
+
The Code module opens ONLY this organization's workspace. The editor and every agent
|
|
409
|
+
are sandboxed here and cannot read, write or delete anything outside it.
|
|
410
|
+
`],[".claude/permissions.md",`# Permissions
|
|
411
|
+
|
|
412
|
+
Defines who may do what inside this workspace. The agent CLI sandbox (\`.claude/settings.json\`)
|
|
413
|
+
and the runner enforce these boundaries.
|
|
414
|
+
|
|
415
|
+
## File access boundary
|
|
416
|
+
- **Allowed root:** \`~/.constella/organizations/${a.orgId}/workspace/\` and everything beneath it.
|
|
417
|
+
- **Forbidden paths:** the user home, \`Documents\`, \`Desktop\`, any other organization's
|
|
418
|
+
directory, and anything outside the allowed root. Path traversal is rejected.
|
|
419
|
+
|
|
420
|
+
## User permissions
|
|
421
|
+
- Full read/write across this workspace via the UI.
|
|
422
|
+
- May connect providers, approve plans, manage budgets, switch organizations.
|
|
423
|
+
|
|
424
|
+
## Agent permissions
|
|
425
|
+
- Read / create / edit / delete / search **only inside this workspace** (cwd-jailed).
|
|
426
|
+
- Spend up to the agent's daily budget cap, then stop.
|
|
427
|
+
- Never exfiltrate secrets; secrets are referenced from the vault, never inlined.
|
|
428
|
+
|
|
429
|
+
## Tool permissions
|
|
430
|
+
- File tools auto-accept edits **within the workspace** (\`acceptEdits\`); no outside access.
|
|
431
|
+
- Bash is workspace-scoped; network/deploy tools require an explicit, configured integration.
|
|
432
|
+
|
|
433
|
+
## Deletion & security rules
|
|
434
|
+
- Deletions are workspace-scoped and revalidated; the runtime root is never deleted.
|
|
435
|
+
- No plaintext keys in any file or log; use vault references.
|
|
436
|
+
`],[".claude/memory.md",`# Memory
|
|
437
|
+
|
|
438
|
+
How the workspace remembers context across sessions, chats and DMs.
|
|
439
|
+
|
|
440
|
+
## What may be remembered
|
|
441
|
+
- Decisions, requirements, task state, files referenced, agent actions, pending work,
|
|
442
|
+
and explicit operator instructions.
|
|
443
|
+
|
|
444
|
+
## What must NOT be remembered
|
|
445
|
+
- Secrets, tokens, API keys, passwords, or any vault material.
|
|
446
|
+
- Personal data not required to do the work.
|
|
447
|
+
|
|
448
|
+
## Storage & linkage
|
|
449
|
+
- Long-lived context lives in this workspace (linked from here), not in an isolated store.
|
|
450
|
+
- The database indexes summaries for fast recall; the directory holds the canonical text.
|
|
451
|
+
|
|
452
|
+
## Chat & DM compaction
|
|
453
|
+
- When a conversation grows past the active model's context budget, older messages are
|
|
454
|
+
summarized into a compact context that PRESERVES decisions, tasks, files and instructions.
|
|
455
|
+
- Compaction is **model-aware**: a smaller model receives a more aggressive summary; a larger
|
|
456
|
+
model keeps more detail. The compacted context is linked back to this workspace.
|
|
457
|
+
`],[".claude/routing.md",`# Routing
|
|
458
|
+
|
|
459
|
+
How work is routed to agents, skills and tools.
|
|
460
|
+
|
|
461
|
+
## Task → agent
|
|
462
|
+
| Work type | Owner |
|
|
463
|
+
|---|---|
|
|
464
|
+
| Strategy / goals / approvals | @ada (CEO) |
|
|
465
|
+
| Architecture / tickets / PR review | @linus (CTO) |
|
|
466
|
+
| Backlog / sprint / priorities | @donald (Product Owner) |
|
|
467
|
+
| Server / API / data | @margaret (Backend) |
|
|
468
|
+
| UI / components | @grace (Frontend) |
|
|
469
|
+
| Tests / sign-off | @edsger (QA) |
|
|
470
|
+
| Build / deploy / infra | @werner (DevOps) |
|
|
471
|
+
| Docs | @barbara (Docs) |
|
|
472
|
+
| Security review | @whitfield (CyberSec) |
|
|
473
|
+
| Knowledge / RAG / embeddings / memory | @vannevar (Knowledge) |
|
|
474
|
+
|
|
475
|
+
## Skill & tool selection
|
|
476
|
+
- An agent selects a skill when its **trigger** matches the task (see \`.claude/skills/\`).
|
|
477
|
+
- Tools are chosen from the agent's \`tools.md\`; only workspace-scoped tools are permitted.
|
|
478
|
+
|
|
479
|
+
## Escalation & blocked tasks
|
|
480
|
+
- A blocked task is raised to the agent's \`reportsTo\`; budget blocks raise an inbox item.
|
|
481
|
+
- Unrecoverable failures are logged to \`Reports/error-report.md\` and surfaced to the operator.
|
|
482
|
+
`],[".claude/index.md","# Index\n\nHow the workspace is indexed into the database for search and recall.\n\n## Indexed folders & types\n- `.claude/skills/*.md`, `.claude/agents/*/Agent.md` + `skills.md`, `DOCS/*.md`, `PO/*.md`, `Reports/*.md`.\n- Markdown only for documents; code files are indexed for path + language + git status.\n\n## Parsing\n- YAML front-matter → structured fields; `## Section` blocks → addressable sections.\n- First non-heading line → summary; `**Trigger:**` lines → skill triggers.\n\n## Embeddings & ranking\n- Document summaries are embedded for semantic search; results rank by relevance then recency.\n\n## Stale-index refresh\n- Write-through re-indexes on every UI edit; the watcher re-indexes external edits.\n- A full `indexWorkspace()` reconciles everything on demand / on workspace load.\n"],[".claude/CLAUDE.md",(b=Object.entries(a.stack).map(([a,b])=>`- **${a}**: ${b}`).join("\n")||"- _(declare the stack)_",`# ${a.company} — Operating Manual
|
|
483
|
+
|
|
484
|
+
## Mission
|
|
485
|
+
${a.mission||"_Define the mission._"}
|
|
486
|
+
|
|
487
|
+
## Objective
|
|
488
|
+
${a.objective||"_Define the objective._"}
|
|
489
|
+
|
|
490
|
+
## Stack
|
|
491
|
+
${b}
|
|
492
|
+
|
|
493
|
+
## How this workspace works
|
|
494
|
+
Agents read their persona from \`.claude/agents/<handle>/\`. Skills live in \`.claude/skills/\`.
|
|
495
|
+
Plan before building; every change passes a security review before merge. All file work is
|
|
496
|
+
restricted to this organization's workspace directory.
|
|
497
|
+
`)],[".claude/settings.json",JSON.stringify({permissions:{defaultMode:"acceptEdits",allow:["Read","Edit","Write","Bash"],deny:[],additionalDirectories:[]},note:"Agents are jailed to this workspace (cwd). Do not add additionalDirectories outside it."},null,2)+"\n"]];for(let b of o){let c=`.claude/agents/${b.handle}`;e.push([`${c}/Agent.md`,`---
|
|
498
|
+
handle: ${b.handle}
|
|
499
|
+
name: ${b.name}
|
|
500
|
+
role: ${b.role}
|
|
501
|
+
reportsTo: ${b.reportsTo??"null"}
|
|
502
|
+
provider: ${b.provider}
|
|
503
|
+
model: ${b.model}
|
|
504
|
+
temperature: ${b.temperature}
|
|
505
|
+
dailyCapUsd: ${b.dailyCapUsd}
|
|
506
|
+
tierFloor: ${b.tier}
|
|
507
|
+
---
|
|
508
|
+
# ${b.name} — ${b.role}
|
|
509
|
+
|
|
510
|
+
**Identity:** ${b.identity}
|
|
511
|
+
|
|
512
|
+
**Ritual:** ${b.ritual}
|
|
513
|
+
|
|
514
|
+
## Responsibilities
|
|
515
|
+
- Own the ${b.role} function for ${a.company}; deliver outcomes, not busywork.
|
|
516
|
+
- Follow the rituals above every working cycle.
|
|
517
|
+
|
|
518
|
+
## Communication style
|
|
519
|
+
- Concise and direct. Lead with the decision or result, then the reasoning.
|
|
520
|
+
|
|
521
|
+
## Behavior
|
|
522
|
+
${(0,n.T)(b.temperature)}
|
|
523
|
+
|
|
524
|
+
## Decision-making rules
|
|
525
|
+
- Optimise for the company objective: "${a.objective||"ship value"}".
|
|
526
|
+
- Prefer the smallest change that works; escalate when blocked${b.reportsTo?` to @${b.reportsTo}`:""}.
|
|
527
|
+
|
|
528
|
+
## Execution rules
|
|
529
|
+
- Work one item at a time to completion. Stop at the daily budget cap ($${b.dailyCapUsd}).
|
|
530
|
+
- Use the skills listed in \`skills.md\`; use only the tools listed in \`tools.md\`.
|
|
531
|
+
|
|
532
|
+
## Workspace boundaries
|
|
533
|
+
- All file operations are restricted to this organization's workspace directory.
|
|
534
|
+
- Never read, write or delete anything outside it.
|
|
535
|
+
|
|
536
|
+
## Working with the Code module
|
|
537
|
+
- Read context from the workspace before editing; make small, reviewable diffs.
|
|
538
|
+
- Edit and create files directly on disk (the directory is the source of truth).
|
|
539
|
+
|
|
540
|
+
## Collaboration
|
|
541
|
+
- Coordinate via the team room / DMs; hand off across roles per \`.claude/routing.md\`.
|
|
542
|
+
|
|
543
|
+
## Allowed
|
|
544
|
+
- Read, create, edit, delete and search files **inside this workspace**.
|
|
545
|
+
|
|
546
|
+
## Not allowed
|
|
547
|
+
- Touch any path outside the workspace; inline secrets; exceed the budget cap.
|
|
548
|
+
|
|
549
|
+
## System prompt
|
|
550
|
+
You are ${b.name}, the ${b.role} of ${a.company}. ${b.identity} Ritual: ${b.ritual} Always
|
|
551
|
+
follow the skill procedures, stay within this workspace directory, and stop at your budget ceiling.
|
|
552
|
+
`]),e.push([`${c}/pulse.md`,`# Pulse — ${b.name}
|
|
553
|
+
|
|
554
|
+
intervalSec: 30
|
|
555
|
+
maxMissed: 2
|
|
556
|
+
wakeOn:
|
|
557
|
+
- queued_task
|
|
558
|
+
- mention
|
|
559
|
+
healthCheck: 1-token ping to ${b.provider} (${b.model})
|
|
560
|
+
|
|
561
|
+
## Liveness checks
|
|
562
|
+
- **Alive:** a pulse was recorded within \`intervalSec * maxMissed\`.
|
|
563
|
+
- **Functional:** the agent's executor (CLI/provider) responds to the health ping.
|
|
564
|
+
- **Blocked:** the agent has work but cannot proceed (budget, dependency, error).
|
|
565
|
+
|
|
566
|
+
## Wake / recover
|
|
567
|
+
- The sweep wakes a stale agent when it has a \`queued_task\` or is \`@mentioned\`.
|
|
568
|
+
- On repeated failure, mark **down**, log to \`Reports/error-report.md\`, and recover on the next healthy ping.
|
|
569
|
+
|
|
570
|
+
## Status values
|
|
571
|
+
\`idle\` \xb7 \`working\` \xb7 \`review\` \xb7 \`blocked\` (status) — \`alive\` \xb7 \`stale\` \xb7 \`down\` (health).
|
|
572
|
+
|
|
573
|
+
## Reporting
|
|
574
|
+
- Each sweep writes \`Reports/agent-status.md\` and \`Reports/system-health.md\`.
|
|
575
|
+
- Errors are appended to \`Reports/error-report.md\`.
|
|
576
|
+
`]),e.push([`${c}/tools.md`,function(a){let b="CyberSec"===a.role?["secret-scan","review.signoff","fs.read"]:"DevOps"===a.role?["run-suite","deploy.preview","telegram-notify"]:"Backend"===a.role||"Frontend"===a.role?["fs.read","fs.write","run-suite","open-pr"]:"QA"===a.role?["run-suite","review.gate"]:"Docs"===a.role?["fs.read","fs.write"]:"Knowledge"===a.role?["fs.read","rag.reindex","rag.index-chat","embed.health"]:["core.delegate","core.approve"];return`# Tools — ${a.name}
|
|
577
|
+
|
|
578
|
+
Provider: ${a.provider} \xb7 Model: ${a.model}
|
|
579
|
+
|
|
580
|
+
| Tool | Purpose | Allowed | Forbidden |
|
|
581
|
+
|---|---|---|---|
|
|
582
|
+
${b.map(a=>`| \`${a}\` | ${a.includes("fs")?"Workspace file access":a.includes("run")?"Run the test suite":a.includes("deploy")?"Preview deploy":a.includes("review")?"Review / sign-off":"Core action"} | inside this workspace | any path outside the workspace |`).join("\n")}
|
|
583
|
+
|
|
584
|
+
## File access rules
|
|
585
|
+
- All file operations are restricted to this organization's workspace (cwd-jailed).
|
|
586
|
+
- Reads/edits/writes auto-accept **inside** the workspace; nothing outside is reachable.
|
|
587
|
+
|
|
588
|
+
## Execution limits & safety
|
|
589
|
+
- Stop at the daily budget cap ($${a.dailyCapUsd}). Never inline or echo secrets.
|
|
590
|
+
- Use a tool only when its purpose matches the task; otherwise skip it.
|
|
591
|
+
`}(b)]),e.push([`${c}/skills.md`,function(a){var b;let c=[...new Set([...q,..."DevOps"===(b=a.role)?["telegram-notify"]:"Backend"===b||"DevOps"===b?["gguf-validate"]:[]])];return`# Skills — ${a.name}
|
|
592
|
+
|
|
593
|
+
Assigned procedures. Each links to a real file in \`../../skills/\`.
|
|
594
|
+
|
|
595
|
+
${c.map(a=>{let b=p.find(b=>b.name===a);return`## \`${a}\`
|
|
596
|
+
- **File:** \`.claude/skills/${a}.md\`
|
|
597
|
+
- **Use when:** ${b?.trigger??"as appropriate"}
|
|
598
|
+
- **Summary:** ${b?.summary??""}`}).join("\n\n")}
|
|
599
|
+
|
|
600
|
+
## Rituals
|
|
601
|
+
${a.ritual}
|
|
602
|
+
`}(b)])}for(let a of p)e.push([`.claude/skills/${a.name}.md`,`# Skill — ${a.name}
|
|
603
|
+
|
|
604
|
+
**Trigger:** ${a.trigger}
|
|
605
|
+
|
|
606
|
+
${a.summary}
|
|
607
|
+
|
|
608
|
+
## When to use
|
|
609
|
+
${a.trigger}.
|
|
610
|
+
|
|
611
|
+
## When NOT to use
|
|
612
|
+
- When the trigger condition is absent, or a more specific skill applies.
|
|
613
|
+
|
|
614
|
+
## Required context & inputs
|
|
615
|
+
- Read the relevant workspace files first; gather the inputs each step needs.
|
|
616
|
+
|
|
617
|
+
## Procedure
|
|
618
|
+
${a.steps.map((a,b)=>`${b+1}. ${a}`).join("\n")}
|
|
619
|
+
|
|
620
|
+
## Output format
|
|
621
|
+
- A concise result plus any files created/edited (paths relative to the workspace).
|
|
622
|
+
|
|
623
|
+
## Quality & validation rules
|
|
624
|
+
- Verify each step succeeded before the next; never report success on a failed step.
|
|
625
|
+
|
|
626
|
+
## Failure handling
|
|
627
|
+
- Stop, record what failed and why, and surface it (inbox / \`Reports/error-report.md\`).
|
|
628
|
+
|
|
629
|
+
## Related
|
|
630
|
+
- Files: this workspace. Agents: whoever owns the matching role in \`.claude/routing.md\`.
|
|
631
|
+
`]);return e.push(...(c=a.stack,[["DOCS/architecture.md",r("Architecture",`Runtime: ${c.runtime??"Node.js"} \xb7 Frontend: ${c.frontend??"React"} \xb7 Backend: ${c.backend??"—"}
|
|
632
|
+
Database: ${c.database??"SQLite"} \xb7 ORM: ${c.orm??"Drizzle"}
|
|
633
|
+
|
|
634
|
+
## Overview
|
|
635
|
+
${a.company} is built to: ${a.mission||"deliver value"}.
|
|
636
|
+
|
|
637
|
+
## Layout
|
|
638
|
+
- server/ API + scheduler
|
|
639
|
+
- ui/ dashboard
|
|
640
|
+
- packages/ shared + adapters
|
|
641
|
+
|
|
642
|
+
## Key decisions
|
|
643
|
+
- The workspace directory is the source of truth; the DB indexes it.`)],["DOCS/api.md",r("API",`## Conventions
|
|
644
|
+
- REST/RPC endpoints are documented here as they are built.
|
|
645
|
+
- Request/response shapes, auth, and error codes go in this file.
|
|
646
|
+
|
|
647
|
+
## Endpoints
|
|
648
|
+
_(none yet — agents document endpoints here as they ship.)_`)],["DOCS/database.md",r("Database",`Engine: ${c.database??"SQLite"} \xb7 ORM: ${c.orm??"Drizzle"}
|
|
649
|
+
|
|
650
|
+
## Schema
|
|
651
|
+
_(document tables, columns and relationships here as the data layer is built.)_
|
|
652
|
+
|
|
653
|
+
## Migrations
|
|
654
|
+
- Never wipe to apply changes; use surgical, additive migrations.`)],["DOCS/code-standards.md",r("Code standards",`- Match the surrounding code's style, naming and idioms.
|
|
655
|
+
- Small, reviewable diffs; typecheck before every PR.
|
|
656
|
+
- Every change passes a security review before merge.
|
|
657
|
+
- No plaintext secrets; reference the vault.`)],["DOCS/onboarding.md",r("Onboarding",`Welcome to ${a.company}.
|
|
658
|
+
|
|
659
|
+
## First steps
|
|
660
|
+
1. Read \`.claude/CLAUDE.md\` (the operating manual).
|
|
661
|
+
2. Skim \`DOCS/architecture.md\` and \`PO/roadmap.md\`.
|
|
662
|
+
3. Pull a task from the board and follow your agent ritual.`)],["DOCS/system-operation.md",r("System operation guide",`## Runtime modes
|
|
663
|
+
- start (local) \xb7 auth \xb7 vps \xb7 portable.
|
|
664
|
+
|
|
665
|
+
## Pulse
|
|
666
|
+
- Agents are health-checked on an interval; status lands in \`Reports/\`.
|
|
667
|
+
|
|
668
|
+
## Budgets
|
|
669
|
+
- Each agent has a daily cap; the system stops it at the ceiling.`)],["DOCS/workspace-structure.md",r("Workspace structure guide",`See \`.claude/workspace.md\` for the authoritative structure. This workspace lives at
|
|
670
|
+
\`~/.constella/organizations/${a.orgId}/workspace/\` and is isolated from every other org.`)]]),["PO/roadmap.md",r("Roadmap",`## Now
|
|
671
|
+
- Ship ${a.company} v0.1 — ${a.objective||"first release"}.
|
|
672
|
+
|
|
673
|
+
## Next
|
|
674
|
+
- Harden, document, and gather feedback.
|
|
675
|
+
|
|
676
|
+
## Later
|
|
677
|
+
- Scale and expand per the mission: ${a.mission||"—"}.`)],["PO/backlog.md",r("Backlog (MoSCoW)",`- [Must] Ship ${a.company} v0.1
|
|
678
|
+
- [Must] Pass the security gate
|
|
679
|
+
- [Should] Portable build
|
|
680
|
+
- [Could] Self-update with rollback
|
|
681
|
+
- [Won't] (track out-of-scope items here)`)],["PO/sprint-plan.md",r("Sprint plan",`## Sprint 1 — goal
|
|
682
|
+
Stand up the foundation of ${a.company}.
|
|
683
|
+
|
|
684
|
+
## Committed
|
|
685
|
+
_(the Product Owner pulls Must items here and assigns owners.)_`)],["PO/user-stories.md",r("User stories",`- As an operator, I can create an organization and get a working workspace immediately.
|
|
686
|
+
- As an operator, I can watch agents do real work inside my workspace.
|
|
687
|
+
- _(add stories as the product takes shape.)_`)],["PO/requirements.md",r("Requirements",`## Functional
|
|
688
|
+
- The directory is the source of truth; the DB indexes it.
|
|
689
|
+
- Agents and the editor are isolated to the active workspace.
|
|
690
|
+
|
|
691
|
+
## Non-functional
|
|
692
|
+
- No fabricated data; honest empty states; budget ceilings respected.`)],["PO/priorities.md",r("Priorities",`1. Correctness & isolation
|
|
693
|
+
2. Real, working features (no fakes)
|
|
694
|
+
3. Developer/operator clarity
|
|
695
|
+
4. Polish`)],["PO/acceptance-criteria.md",r("Acceptance criteria",`- A new workspace is never empty and passes validation.
|
|
696
|
+
- Editing a doc in the UI writes it to disk and re-indexes.
|
|
697
|
+
- Agents cannot touch anything outside the workspace.`)],["PO/status.md",r("Execution status","_(the Product Owner updates delivery status here each cycle.)_")],...(d=a.createdAt??"(creation)",[["Reports/agent-status.md",r("Agent status",`_Snapshot at scaffold; refreshed by the pulse sweep._
|
|
698
|
+
|
|
699
|
+
| Agent | Status | Health | Last pulse |
|
|
700
|
+
|---|---|---|---|
|
|
701
|
+
${o.map(a=>`| @${a.handle} | idle | alive | ${d} |`).join("\n")}`)],["Reports/system-health.md",r("System health",`_Snapshot at scaffold; refreshed by the pulse sweep._
|
|
702
|
+
|
|
703
|
+
- Status: awaiting first pulse sweep
|
|
704
|
+
- Agents: ${o.length}
|
|
705
|
+
- Created: ${d}`)],["Reports/pulse-history.md",r("Pulse history",`_Append-only log of pulse sweeps._
|
|
706
|
+
|
|
707
|
+
- ${d} — workspace bootstrapped.`)],["Reports/daily-report.md",r("Daily report",`_Template — an agent fills this each day._
|
|
708
|
+
|
|
709
|
+
## Wins
|
|
710
|
+
## Blockers
|
|
711
|
+
## Next`)],["Reports/weekly-report.md",r("Weekly report",`_Template — filled each week._
|
|
712
|
+
|
|
713
|
+
## Shipped
|
|
714
|
+
## Metrics
|
|
715
|
+
## Next week`)],["Reports/error-report.md",r("Error report","_Append-only log of failures and recoveries._")],["Reports/task-execution.md",r("Task execution report","_Append-only log of task runs (agent, task, result, cost)._")]])),e.push(["specs/README.md",r("Specs","The CEO Planner writes detailed specs here, then breaks them into issues.")]),e.push(["issues/README.md",r("Issues","Approved issues the agents implement (1–999).")]),e.push(["design-skills/README.md",r("Design skills","Design-specific skills (design system, palette, typography, spacing, UI/UX patterns, motion, accessibility) the frontend agent and CEO Planner consult while prototyping. Drop SKILL.md-style notes here; they are indexed into the KB/RAG.")]),e.push(["design-mock/README.md",r("Design mock","Everything the Design module produces: mocks, prototypes, screens, visual variations, screenshots, handoff files, visual docs, UI/UX decisions, proposed components, design system, palette, typography, spacing, visual states, and user annotations. The approved design is written to `design-mock/APPROVED.md` — the official visual reference the CEO Planner turns into specs, issues and the plan (zero drift).")]),a.preserveReadme||e.push(["README.md",function(a){let b,c,d,e,h,m,n,o,{company:p,mission:q,objective:r,stack:s}=a,t=function(a){let b=0;for(let c=0;c<a.length;c++)b=31*b+a.charCodeAt(c)>>>0;return i[b%i.length]}(p),u=(b=s.runtime||"",c=s.language||"","Bun"===b?{install:"bun install",dev:"bun run dev",build:"bun run build",test:"bun test"}:"Deno"===b?{install:"deno install",dev:"deno task dev",build:"deno task build",test:"deno test"}:/Python/.test(b)||"Python"===c?{install:"pip install -r requirements.txt",dev:"python main.py",build:"python -m build",test:"pytest"}:"Go"===c?{install:"go mod download",dev:"go run .",build:"go build ./...",test:"go test ./..."}:"Rust"===c?{install:"cargo build",dev:"cargo run",build:"cargo build --release",test:"cargo test"}:{install:"npm install",dev:"npm run dev",build:"npm run build",test:"npm test"}),v=l(s),w=`https://capsule-render.vercel.app/api?type=waving&height=200&color=0:${t.c1},100:${t.c2}&text=${encodeURIComponent(p)}&fontColor=ffffff&fontSize=64&fontAlignY=38&desc=${encodeURIComponent((q||"").slice(0,90))}&descAlignY=58&descSize=16&descColor=ffffff`,x=["language","runtime","meta","frontend","backend","mobile","database","orm","styling","container"].map(a=>s[a]).filter(a=>!!a&&"None"!==a).filter((a,b,c)=>c.indexOf(a)===b).slice(0,8).map(k).join("\n");return`<div align="center">
|
|
716
|
+
|
|
717
|
+
<img src="${w}" alt="${p}" />
|
|
718
|
+
|
|
719
|
+
# ${p}
|
|
720
|
+
|
|
721
|
+
**${(q||`${p} — built with Constella.`).trim()}**
|
|
722
|
+
|
|
723
|
+
${x}
|
|
724
|
+

|
|
725
|
+

|
|
726
|
+
|
|
727
|
+
</div>
|
|
728
|
+
|
|
729
|
+
---
|
|
730
|
+
|
|
731
|
+
## 📑 Table of Contents
|
|
732
|
+
|
|
733
|
+
- [About](#-about)
|
|
734
|
+
- [Tech Stack](#-tech-stack)
|
|
735
|
+
- [Architecture](#-architecture)
|
|
736
|
+
- [Getting Started](#-getting-started)
|
|
737
|
+
- [Usage](#-usage)
|
|
738
|
+
- [Configuration](#-configuration)
|
|
739
|
+
- [Commands](#-commands)
|
|
740
|
+
- [Project Structure](#-project-structure)
|
|
741
|
+
- [Roadmap](#-roadmap)
|
|
742
|
+
- [Contributing](#-contributing)
|
|
743
|
+
- [License](#-license)
|
|
744
|
+
|
|
745
|
+
---
|
|
746
|
+
|
|
747
|
+
## 🎯 About
|
|
748
|
+
|
|
749
|
+
> ${(q||"Mission to be defined.").trim()}
|
|
750
|
+
|
|
751
|
+
${r?`**Objective —** ${r.trim()}
|
|
752
|
+
`:""}
|
|
753
|
+
This repository is operated by an autonomous AI team (a CEO plus specialists) scaffolded with **[Constella](#)**. The working directory is the source of truth.
|
|
754
|
+
|
|
755
|
+
---
|
|
756
|
+
|
|
757
|
+
## 🧩 Tech Stack
|
|
758
|
+
|
|
759
|
+
${v.length?(d=l(s).map(([a,b])=>{let c,d=(c=f[b])?`https://cdn.jsdelivr.net/gh/devicons/devicon/icons/${c.slug}/${c.slug}-${c.variant??"original"}.svg`:null,e=d?`<img src="${d}" width="18" height="18" align="center" /> `:"";return`| **${g[a]??a}** | ${e}${b} |`}),`| Layer | Technology |
|
|
760
|
+
| :-- | :-- |
|
|
761
|
+
${d.join("\n")}`):"_No stack selected yet._"}
|
|
762
|
+
|
|
763
|
+
---
|
|
764
|
+
|
|
765
|
+
## 🏗️ Architecture
|
|
766
|
+
|
|
767
|
+
${e=s.frontend||s.mobile||"—",h=s.meta&&"None"!==s.meta?` \xb7 ${s.meta}`:"",m=s.backend&&"None"!==s.backend?s.backend:s.runtime||"—",n=s.database||"—",o=s.orm&&"None"!==s.orm?` (${s.orm})`:"",["```\n┌──────────────────────────────────────────────────────────┐",`│ CLIENT ${e}${h}`.padEnd(59)+"│","├──────────────────────────────────────────────────────────┤",`│ SERVER ${m} \xb7 runtime: ${s.runtime||"—"}`.padEnd(59)+"│","├──────────────────────────────────────────────────────────┤",`│ DATA ${n}${o}`.padEnd(59)+"│","└──────────────────────────────────────────────────────────┘\n```"].join("\n")}
|
|
768
|
+
|
|
769
|
+
---
|
|
770
|
+
|
|
771
|
+
## 🚀 Getting Started
|
|
772
|
+
|
|
773
|
+
> **Prerequisites:** ${s.runtime||s.language||"the project runtime"}${s.container&&"None"!==s.container?` \xb7 ${s.container} (optional)`:""}
|
|
774
|
+
|
|
775
|
+
\`\`\`bash
|
|
776
|
+
# 1. Clone
|
|
777
|
+
git clone <your-repo-url>
|
|
778
|
+
cd ${a.slug||j(p)||"project"}
|
|
779
|
+
|
|
780
|
+
# 2. Install dependencies
|
|
781
|
+
${u.install}
|
|
782
|
+
|
|
783
|
+
# 3. Configure environment
|
|
784
|
+
cp .env.example .env # then fill in the values below
|
|
785
|
+
|
|
786
|
+
# 4. Run the dev server
|
|
787
|
+
${u.dev}
|
|
788
|
+
\`\`\`
|
|
789
|
+
|
|
790
|
+
---
|
|
791
|
+
|
|
792
|
+
## 💡 Usage
|
|
793
|
+
|
|
794
|
+
After \`${u.dev}\`, open the app and follow the in-product flow. See [\`DOCS/\`](./DOCS) for module-level guides and [\`PO/roadmap.md\`](./PO/roadmap.md) for what's planned.
|
|
795
|
+
|
|
796
|
+
---
|
|
797
|
+
|
|
798
|
+
## ⚙️ Configuration
|
|
799
|
+
|
|
800
|
+
Environment variables live in \`.env\` (never commit it — secrets belong in the vault).
|
|
801
|
+
|
|
802
|
+
| Variable | Description | Required |
|
|
803
|
+
| :-- | :-- | :--: |
|
|
804
|
+
| \`NODE_ENV\` | \`development\` / \`production\` | ✅ |
|
|
805
|
+
${s.database&&"None"!==s.database?`| \`DATABASE_URL\` | ${s.database} connection string | ✅ |
|
|
806
|
+
`:""}| \`PORT\` | Port the server listens on | ⬜ |
|
|
807
|
+
|
|
808
|
+
> 🔒 Never hard-code API keys, tokens or passwords. A pre-commit secret scan blocks any commit that contains them.
|
|
809
|
+
|
|
810
|
+
---
|
|
811
|
+
|
|
812
|
+
## 🛠️ Commands
|
|
813
|
+
|
|
814
|
+
| Command | What it does |
|
|
815
|
+
| :-- | :-- |
|
|
816
|
+
| \`${u.dev}\` | Start the dev server |
|
|
817
|
+
| \`${u.build}\` | Production build |
|
|
818
|
+
| \`${u.test}\` | Run the test suite |
|
|
819
|
+
|
|
820
|
+
---
|
|
821
|
+
|
|
822
|
+
## 📁 Project Structure
|
|
823
|
+
|
|
824
|
+
\`\`\`
|
|
825
|
+
${a.slug||j(p)||"project"}/
|
|
826
|
+
├── .claude/ # agent personas, skills, operating manual (the brain)
|
|
827
|
+
├── DOCS/ # architecture, API, database, standards
|
|
828
|
+
├── PO/ # roadmap, backlog, sprint plan, requirements
|
|
829
|
+
├── specs/ # detailed specs written by the CEO planner
|
|
830
|
+
├── issues/ # approved issues the agents implement
|
|
831
|
+
├── Reports/ # status, health, pulse, daily/weekly reports
|
|
832
|
+
└── README.md # this file
|
|
833
|
+
\`\`\`
|
|
834
|
+
|
|
835
|
+
---
|
|
836
|
+
|
|
837
|
+
## 🗺️ Roadmap
|
|
838
|
+
|
|
839
|
+
- [x] Project scaffolded & team assembled
|
|
840
|
+
- [ ] Core feature set (see [\`PO/roadmap.md\`](./PO/roadmap.md))
|
|
841
|
+
- [ ] Tests green & CI wired
|
|
842
|
+
- [ ] First release
|
|
843
|
+
|
|
844
|
+

|
|
845
|
+
|
|
846
|
+
---
|
|
847
|
+
|
|
848
|
+
## 🤝 Contributing
|
|
849
|
+
|
|
850
|
+
Contributions are welcome. Read [\`DOCS/code-standards.md\`](./DOCS/code-standards.md) first, branch from \`main\`, keep PRs small with a clear test plan, and ensure \`${u.test}\` passes before requesting review.
|
|
851
|
+
|
|
852
|
+
---
|
|
853
|
+
|
|
854
|
+
## 📄 License
|
|
855
|
+
|
|
856
|
+
Released under the **MIT License** — see [\`LICENSE\`](./LICENSE).
|
|
857
|
+
|
|
858
|
+
<div align="center">
|
|
859
|
+
<sub>Scaffolded & maintained by an autonomous AI team \xb7 🤖 <a href="#">Constella</a></sub>
|
|
860
|
+
</div>
|
|
861
|
+
`}({company:a.company,mission:a.mission,objective:a.objective,stack:a.stack,slug:a.slug})]),e}let t=/^(\.claude\/organization\.md|\.claude\/CLAUDE\.md|README\.md|DOCS\/architecture\.md|DOCS\/onboarding\.md|PO\/roadmap\.md|\.claude\/agents\/[^/]+\/Agent\.md)$/;function u(a){let b=[];for(let[c,e]of s(a))t.test(c)&&((0,d.dx)(a.orgId,c,e),b.push(c));return b}function v(a){let b=[];for(let[c,e]of s(a)){let f=(0,d.sL)(a.orgId,c);(null==f||""===f.trim())&&((0,d.dx)(a.orgId,c,e),b.push(c))}return b.push(...w(a).written),b}function w(a){let b=[];try{let{id:c,files:e}=(0,m.xF)({company:a.company,mission:a.mission,objective:a.objective,slug:a.slug,stack:a.stack});for(let[c,f]of e)null==(0,d.sL)(a.orgId,c)&&((0,d.dx)(a.orgId,c,f),b.push(c));return{id:c,written:b}}catch(a){return console.error("[scaffold] project starter failed:",a),{id:"static",written:b}}}function x(a,b){var c={orgId:a,slug:b.slug??a,company:b.company,mission:b.mission,objective:b.objective,stack:b.stack,runMode:b.runMode,createdAt:new Date().toISOString().slice(0,10),preserveReadme:b.preserveReadme};for(let[a,b]of s(c))(0,d.dx)(c.orgId,a,b)}},57086:(a,b,c)=>{c.d(b,{xZ:()=>h,r$:()=>i,EX:()=>q,CS:()=>function a(b,c=""){let d=[];for(let e of m(b,c))if(e.isDir){if(n.has(e.name))continue;d.push(...a(b,e.path))}else d.push(e.path);return d},HZ:()=>k,Ci:()=>m,sL:()=>o,dx:()=>p});var d=c(73024),e=c(76760),f=c(48161),g=c(30043);let h=new Set(["node_modules",".git",".next",".turbo","dist","build","out","coverage",".cache",".pnpm-store",".vercel","vendor",".parcel-cache",".svelte-kit",".nuxt",".astro",".angular",".venv","venv","env","__pycache__",".mypy_cache",".pytest_cache",".ruff_cache",".tox",".nox","htmlcov","site-packages",".eggs",".ipynb_checkpoints","target",".gradle","bin","obj","Pods",".cargo","Carthage",".cxx","DerivedData",".idea",".vscode",".svn",".hg",".vs",".fleet","logs","tmp","temp",".terraform","archives",".testdev"]);function i(){return process.env.CONSTELLA_HOME?(0,g.Y)(process.env.CONSTELLA_HOME):(0,e.join)((0,f.homedir)(),".constella")}let j=new Set;function k(a){if(!/^[A-Za-z0-9_-]{6,64}$/.test(a))throw Error("Invalid orgId");let b=(0,e.join)(i(),"organizations",a,"workspace");if(!j.has(a)){j.add(a);try{let c=(0,e.join)(i(),"organizations",a,"constella"),f=!(0,d.existsSync)(b)||0===(0,d.readdirSync)(b).length;if((0,d.existsSync)(c)&&f)try{(0,d.renameSync)(c,b)}catch{(0,d.mkdirSync)(b,{recursive:!0}),0===(0,d.readdirSync)(b).length&&(0,d.cpSync)(c,b,{recursive:!0})}}catch{}}return b}function l(a,b){let c=(0,e.normalize)((0,e.join)(a,b));if(c!==a&&!c.startsWith(a+e.sep))throw Error("Path escapes workspace: "+b);if((0,d.existsSync)(a)){let f;try{f=d.realpathSync.native(a)}catch{f=a}let g=function(a){let b=a;for(;;){if((0,d.existsSync)(b))try{return d.realpathSync.native(b)}catch{return b}let a=(0,e.dirname)(b);if(a===b)return b;b=a}}(c);if(g!==f&&!g.startsWith(f+e.sep))throw Error("Path escapes workspace (symlink): "+b)}return c}function m(a,b=""){let c=l(k(a),b);return(0,d.existsSync)(c)?(0,d.readdirSync)(c).map(a=>{let f=(0,e.join)(c,a),g=(b?b+"/":"")+a;return{name:a,path:g,isDir:(0,d.statSync)(f).isDirectory()}}).sort((a,b)=>a.isDir===b.isDir?a.name.localeCompare(b.name):a.isDir?-1:1):[]}let n=new Set(["node_modules",".git",".next",".turbo","dist","build","out","coverage",".cache","archives",".testdev",".pnpm-store",".vercel","vendor"]);function o(a,b){let c=l(k(a),b);return(0,d.existsSync)(c)?(0,d.readFileSync)(c,"utf8"):null}function p(a,b,c){let f=l(k(a),b);(0,d.mkdirSync)((0,e.dirname)(f),{recursive:!0}),(0,d.writeFileSync)(f,c,"utf8")}function q(a,b){let c=l(k(a),b);(0,d.existsSync)(c)&&(0,d.rmSync)(c,{recursive:!0,force:!0})}},57300:(a,b,c)=>{c.d(b,{E6:()=>q,Nm:()=>A,PD:()=>w,SH:()=>y,U_:()=>r,hu:()=>u,sw:()=>s,xV:()=>t});var d=c(77598),e=c(97603),f=c(95357),g=c(65705),h=c(1890),i=c(57086);let j=process.env.OLLAMA_URL??"http://127.0.0.1:11434",k=process.env.CONSTELLA_EMBED_MODEL??"nomic-embed-text",l=/nomic/i.test(k),m=(a,b)=>`search_${b}: ${a}`,n=process.env.CONSTELLA_EMBED_URL??"http://127.0.0.1:8083",o=[".claude","DOCS","PO","Reports","specs","issues","design-skills"];function p(a){let b=a.replace(/\\/g,"/");return!(b.startsWith(".claude/kb/")||b.startsWith(".claude/skills/"))&&(b.startsWith("mock/")||b.startsWith("design-mock/")?/\.(md|html?|css|jsx?|tsx?|txt|json)$/i.test(b):b.endsWith(".md")&&o.some(a=>b===`${a}.md`||b.startsWith(`${a}/`)))}async function q(a,b="document"){try{let c=await fetch(`${j}/api/embeddings`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({model:k,prompt:l?m(a,b):a}),signal:AbortSignal.timeout(8e3)});if(c.ok){let a=await c.json();if(Array.isArray(a.embedding)&&a.embedding.length)return a.embedding}}catch{}try{let c=await fetch(`${n}/v1/embeddings`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({input:m(a,b),model:"nomic-embed"}),signal:AbortSignal.timeout(8e3)});if(c.ok){let a=await c.json(),b=a?.data?.[0]?.embedding;if(Array.isArray(b)&&b.length)return b}}catch{}return null}function r(a){let b=a.split(/\n(?=#{1,3}\s)/).map(a=>a.trim()).filter(Boolean),c=[];for(let d of b.length?b:[a])if(d)if(d.length<=1200)c.push(d);else for(let a=0;a<d.length;a+=1200)c.push(d.slice(a,a+1200));return c.slice(0,40)}function s(a,b){let c=0,d=0,e=0,f=Math.min(a.length,b.length);for(let g=0;g<f;g++)c+=a[g]*b[g],d+=a[g]*a[g],e+=b[g]*b[g];return d&&e?c/(Math.sqrt(d)*Math.sqrt(e)):0}async function t(a){let[b]=await g.db.select().from(h.workspace).where((0,e.eq)(h.workspace.orgId,a));if(!b)return{ok:!1,chunks:0,embedded:!1};let c=(0,i.CS)(a).filter(p);await g.db.delete(h.ragChunk).where((0,e.eq)(h.ragChunk.workspaceId,b.id));let f=0,j=!1;for(let e of c)for(let c of r((0,i.sL)(a,e)??"")){let a=await q(c);a&&(j=!0),await g.db.insert(h.ragChunk).values({id:(0,d.randomUUID)(),workspaceId:b.id,path:e,chunk:c,vector:a?JSON.stringify(a):null}),f++}return{ok:!0,chunks:f+=await u(a),embedded:j}}async function u(a){let[b]=await g.db.select().from(h.workspace).where((0,e.eq)(h.workspace.orgId,a));if(!b)return 0;await g.db.delete(h.ragChunk).where((0,e.Uo)((0,e.eq)(h.ragChunk.workspaceId,b.id),(0,e.mj)(h.ragChunk.path,"chat/%")));let c=await g.db.select().from(h.message).where((0,e.eq)(h.message.workspaceId,b.id)).orderBy((0,f.Y)(h.message.createdAt)),i=new Map;for(let a of c){let b=(a.text??"").replace(/\s+/g," ").trim();if(!b)continue;let c="operator"===a.fromKind?"Operator":"@"+(a.fromHandle??"agent"),d=i.get(a.channel);d||(d=[],i.set(a.channel,d)),d.push(`${c}: ${b}`)}let j=0;for(let[a,c]of i)for(let e of r(c.slice(-400).join("\n"))){let c=await q(e);await g.db.insert(h.ragChunk).values({id:(0,d.randomUUID)(),workspaceId:b.id,path:`chat/${a}`,chunk:e,vector:c?JSON.stringify(c):null}),j++}return j}let v=new Map;function w(a){let b=v.get(a);b&&clearTimeout(b),v.set(a,setTimeout(()=>{v.delete(a),u(a).catch(()=>{})},6e3))}async function x(a,b){if(!p(b))return;let[c]=await g.db.select().from(h.workspace).where((0,e.eq)(h.workspace.orgId,a));if(c)for(let f of(await g.db.delete(h.ragChunk).where((0,e.Uo)((0,e.eq)(h.ragChunk.workspaceId,c.id),(0,e.eq)(h.ragChunk.path,b))),r((0,i.sL)(a,b)??""))){let a=await q(f);await g.db.insert(h.ragChunk).values({id:(0,d.randomUUID)(),workspaceId:c.id,path:b,chunk:f,vector:a?JSON.stringify(a):null})}}async function y(a,b){if(!p(b))return;let[c]=await g.db.select().from(h.workspace).where((0,e.eq)(h.workspace.orgId,a));c&&await g.db.delete(h.ragChunk).where((0,e.Uo)((0,e.eq)(h.ragChunk.workspaceId,c.id),(0,e.eq)(h.ragChunk.path,b)))}let z=new Map;function A(a,b){if(!p(b))return;let c=a+"::"+b,d=z.get(c);d&&clearTimeout(d),z.set(c,setTimeout(()=>{z.delete(c),x(a,b).catch(()=>{})},2500))}},65121:(a,b,c)=>{c.d(b,{z:()=>d});let d=[{key:"language",label:"Language",opts:["TypeScript","JavaScript","Python","Go","Rust","Java","Kotlin","C#","Ruby","PHP","Elixir","Swift","C++","C","Scala","Dart","Clojure","Haskell","Lua","R","Objective-C","Erlang","None"]},{key:"runtime",label:"Runtime",opts:["Node.js","Bun","Deno","Python 3","PyPy","JVM",".NET","BEAM (Erlang VM)","None"]},{key:"frontend",label:"Frontend",opts:["React","Vue","Svelte","Angular","SolidJS","Preact","Qwik","Lit","HTMX","Alpine.js","Ember","Backbone","HTML/CSS","Vanilla JS","None"]},{key:"meta",label:"Meta-framework / SSG",opts:["Next.js","Nuxt","Remix","SvelteKit","Astro","Gatsby","Vite (SPA)","Hugo","Jekyll","Eleventy","Docusaurus","Static (no framework)","None"]},{key:"backend",label:"Backend framework",opts:["NestJS","Fastify","Express","Hono","Koa","Django","Flask","FastAPI","Spring Boot","Spring","Laravel","Symfony","CodeIgniter","Ruby on Rails","Gin","Fiber","Actix","Phoenix","ASP.NET Core","AdonisJS","GraphQL","Nginx","None"]},{key:"mobile",label:"Mobile",opts:["React Native","Flutter","Android","Ionic","Xamarin","NativeScript","None"]},{key:"database",label:"Database",opts:["PostgreSQL","MySQL","MariaDB","SQLite","MongoDB","Redis","CockroachDB","Cassandra","DynamoDB","Supabase","PlanetScale","Neon","None"]},{key:"orm",label:"ORM / Data layer",opts:["Prisma","Drizzle","TypeORM","Sequelize","SQLAlchemy","Django ORM","Mongoose","Knex","Diesel","GORM","None"]},{key:"styling",label:"Styling / UI",opts:["Tailwind CSS","Plain CSS","CSS Modules","styled-components","Sass","Vanilla Extract","UnoCSS","shadcn/ui","MUI","Bootstrap","Bulma","Vuetify","Chakra UI","None"]},{key:"testing",label:"Testing",opts:["Jest","Vitest","Cypress","Playwright","Selenium","Mocha","Jasmine","Puppeteer","None"]},{key:"aiml",label:"AI / ML",opts:["TensorFlow","PyTorch","scikit-learn","Keras","Pandas","NumPy","Jupyter","None"]},{key:"dataviz",label:"Data viz",opts:["D3","Chart.js","Grafana","Plotly","None"]},{key:"container",label:"Container",opts:["Docker","Podman","containerd","None"]},{key:"infra",label:"Infra / DevOps",opts:["Tailscale","Cloudflare","Vercel","Netlify","Fly.io","Railway","AWS","GCP","Azure","Kubernetes","Jenkins","CircleCI","Terraform","Ansible","Vagrant","None"]},{key:"baas",label:"Backend-as-a-service",opts:["Firebase","Appwrite","Amplify","Heroku","Supabase","None"]},{key:"queue",label:"Queue / Cache",opts:["Redis","BullMQ","RabbitMQ","Kafka","NATS","Celery","None"]},{key:"auth",label:"Auth",opts:["Auth.js","Clerk","Lucia","Supabase Auth","Keycloak","Auth0","Passport","None"]}]},70149:(a,b,c)=>{c.d(b,{$g:()=>U,Hs:()=>r,JN:()=>Z,KD:()=>C,Kp:()=>V,Pe:()=>o,UC:()=>u,ZB:()=>S,d1:()=>T,hW:()=>X,p1:()=>ab,qX:()=>Y,w5:()=>W});var d=c(31421),e=c(73024),f=c(48161),g=c(76760),h=c(57086);let i="win32"===process.platform,j=process.env.CONSTELLA_RUN_MODE??"start",k=null!=process.env.CONSTELLA_AGENT_FULL_ACCESS?"0"!==process.env.CONSTELLA_AGENT_FULL_ACCESS:"start"===j;function l(){return k?["--permission-mode","bypassPermissions"]:["--permission-mode","acceptEdits"]}let m=null,n=null;function o(a){n=a}function p(){return n??"1"===process.env.CONSTELLA_AGENT_LOCK_HOOK}let q=null;function r(a){q=a}function s(){return q??"1"===process.env.CONSTELLA_AGENT_CMD_GUARD}let t=null;function u(a){t=a}function v(){try{let a=(0,g.join)((0,h.r$)(),".agent-claude");(0,e.mkdirSync)(a,{recursive:!0});let b=(0,g.join)((0,f.homedir)(),".claude",".credentials.json");if(!(0,e.existsSync)(b))return null;(0,e.copyFileSync)(b,(0,g.join)(a,".credentials.json"));let c=(0,g.join)((0,f.homedir)(),".claude.json");if((0,e.existsSync)(c))try{(0,e.copyFileSync)(c,(0,g.join)(a,".claude.json"))}catch{}let d=process.env.CONSTELLA_PKG_ROOT||process.cwd(),i=[];return p()&&i.push({matcher:"Write|Edit|MultiEdit|NotebookEdit",hooks:[{type:"command",command:`node "${(0,g.join)(d,"bin","lock-hook.mjs")}"`}]}),s()&&i.push({matcher:"Bash",hooks:[{type:"command",command:`node "${(0,g.join)(d,"bin","guard-hook.mjs")}"`}]}),(0,e.writeFileSync)((0,g.join)(a,"settings.json"),JSON.stringify({hooks:{PreToolUse:i}}),"utf8"),a}catch{return null}}function w(){if((p()||s())&&v())return[];if(null===m)try{let a=(0,g.join)((0,f.tmpdir)(),"constella-agent-settings.json");(0,e.writeFileSync)(a,JSON.stringify({disableAllHooks:!0}),"utf8"),m=a}catch{m=""}return m?["--settings",m]:[]}function x(a){if(!p()&&!s())return process.env;let b=v();return b?{...process.env,CLAUDE_CONFIG_DIR:b,CONSTELLA_ORG_ID:a.orgId,CONSTELLA_TASK_ID:a.token||"",CONSTELLA_AGENT_ID:a.agentId||"",CONSTELLA_AGENT_HANDLE:a.agentHandle||"",CONSTELLA_BASE_URL:process.env.CONSTELLA_BASE_URL||"http://127.0.0.1:3000"}:process.env}function y(a){if(a)return/^[A-Za-z0-9][A-Za-z0-9._:-]{0,63}$/.test(a)?a:void 0}function z(a){if(a&&"(default)"!==a)return/^[A-Za-z0-9][A-Za-z0-9._:/-]{0,79}$/.test(a)?a:void 0}let A=new Map,B=new Set;function C(a){B.add(a);let b=A.get(a);if(!b)return!1;A.delete(a);try{return b.kill("SIGKILL"),!0}catch{return!1}}function D(a,b){if(a){if(B.has(a)){B.delete(a);try{b.kill("SIGKILL")}catch{}return}A.set(a,b)}}function E(a){a&&(A.delete(a),B.delete(a))}function F(a,b,c,e,f,g,h,j=i){return new Promise(i=>{let k=Date.now(),l=(0,d.spawn)(a,b,{cwd:e,shell:j,windowsHide:!0,env:g??process.env});D(h,l);let m="",n="",o=!1,p=setTimeout(()=>{o=!0;try{l.kill("SIGKILL")}catch{}},f);l.stdout.on("data",a=>m+=a.toString()),l.stderr.on("data",a=>n+=a.toString()),l.on("error",a=>{clearTimeout(p),E(h),i({code:-1,stdout:m,stderr:n+String(a),durationMs:Date.now()-k,timedOut:o})}),l.on("close",a=>{clearTimeout(p),E(h),i({code:a,stdout:m,stderr:n,durationMs:Date.now()-k,timedOut:o})}),c&&l.stdin.write(c),l.stdin.end()})}async function G(a,b){let c=(0,h.HZ)(b.orgId);(0,e.mkdirSync)(c,{recursive:!0});let d=y(b.model),f=["-p","--output-format","json",...w(),...l()];d&&f.push("--model",d);let g=await F("claude",f,a,c,b.timeoutMs??18e4,x(b),b.token);if(g.timedOut)return I("claude",b.model,g.durationMs,"timed out");let i=null;try{i=JSON.parse(g.stdout.trim())}catch{let a=g.stdout.split("\n").reverse().find(a=>a.includes('"type":"result"'));if(a)try{i=JSON.parse(a)}catch{}}if(!i)return I("claude",b.model,g.durationMs,g.stderr.slice(-300)||"no JSON output (code "+g.code+")");let j=i.usage??{};return{ok:!0!==i.is_error&&"success"===i.subtype,text:String(i.result??""),usd:Number(i.total_cost_usd??0),inputTokens:Number(j.input_tokens??0)+Number(j.cache_read_input_tokens??0)+Number(j.cache_creation_input_tokens??0),outputTokens:Number(j.output_tokens??0),durationMs:g.durationMs,binary:"claude",model:b.model,error:!0===i.is_error?String(i.result??"error"):void 0}}async function H(a,b){let c=(0,h.HZ)(b.orgId);(0,e.mkdirSync)(c,{recursive:!0});let d=y(b.model),f=["exec","--json","--skip-git-repo-check","-s",k?"danger-full-access":"workspace-write"];d&&f.push("-m",d);let g=await F("codex",f,a,c,b.timeoutMs??18e4,void 0,b.token);if(g.timedOut)return I("codex",b.model,g.durationMs,"timed out");let i="",j=0,l=0,m=0;for(let a of g.stdout.split("\n")){let b=a.trim();if(b.startsWith("{"))try{let a=JSON.parse(b),c=a.item??a.msg??{};"string"==typeof c.text&&c.text&&(i=c.text),"string"==typeof a.text&&(i=a.text);let d=a.usage??a.token_usage??c.usage??{};d.input_tokens&&(j=Number(d.input_tokens)),d.output_tokens&&(l=Number(d.output_tokens)),"number"==typeof a.cost_usd&&(m=a.cost_usd)}catch{}}return{ok:0===g.code,text:i,usd:m,inputTokens:j,outputTokens:l,durationMs:g.durationMs,binary:"codex",model:b.model,error:0===g.code?void 0:g.stderr.slice(-300)||"codex exit "+g.code}}function I(a,b,c,d){return{ok:!1,text:"",usd:0,inputTokens:0,outputTokens:0,durationMs:c,binary:a,model:b,error:d}}async function J(a,b){let c=(0,h.HZ)(b.orgId);(0,e.mkdirSync)(c,{recursive:!0});let d=z(b.model),f=["-z",a];if(d){let a=d.indexOf("/");a>0?f.push("--provider",d.slice(0,a),"--model",d.slice(a+1)):f.push("--model",d)}let g=await F("hermes",f,"",c,b.timeoutMs??18e4,void 0,b.token);if(g.timedOut)return I("hermes",b.model,g.durationMs,"timed out");let i=(g.stdout||"").trim();return{ok:0===g.code&&!!i,text:i,usd:0,inputTokens:0,outputTokens:0,durationMs:g.durationMs,binary:"hermes",model:b.model,error:0===g.code?void 0:g.stderr.slice(-300)||"hermes exit "+g.code}}async function K(a,b){let c=(0,h.HZ)(b.orgId);(0,e.mkdirSync)(c,{recursive:!0});let d=z(b.model),f=["infer","model","run","--prompt",a,"--json"];d&&f.push("--model",d);let g=await F("openclaw",f,"",c,b.timeoutMs??18e4,void 0,b.token);if(g.timedOut)return I("openclaw",b.model,g.durationMs,"timed out");let i="",j=0===g.code,k;try{var l;let a=JSON.parse(g.stdout.trim());j=!1!==a.ok&&0===g.code,i=(l=a.outputs)?"string"==typeof l?l:Array.isArray(l)?l.map(a=>"string"==typeof a?a:a&&"object"==typeof a?String(a.text??a.content??a.output??a.message??""):"").filter(Boolean).join("\n"):"object"==typeof l?String(l.text??l.content??""):"":"",a.error&&(k=String(a.error?.message??a.error))}catch{i=g.stdout.trim(),0!==g.code&&(j=!1,k=g.stderr.slice(-300)||"openclaw exit "+g.code)}return i||k||(k=g.stderr.slice(-300)||"no output (code "+g.code+")"),{ok:j&&!!i,text:i,usd:0,inputTokens:0,outputTokens:0,durationMs:g.durationMs,binary:"openclaw",model:b.model,error:k}}async function L(a,b,c){let d=(0,h.HZ)(c.orgId);(0,e.mkdirSync)(d,{recursive:!0});let f=await F(a,b,"",d,c.timeoutMs??18e4,void 0,c.token);if(f.timedOut)return I(a,c.model,f.durationMs,"timed out");let g=function(a){let b=a.trim();if(!b)return"";if(b.startsWith("{")||b.startsWith("["))try{let a=JSON.parse(b),c=a.result??a.text??a.response??a.content??a.message??a.output;if("string"==typeof c&&c)return c;if(c&&"object"==typeof c){let a=c.text??c.content;if("string"==typeof a)return a}}catch{}return b}(f.stdout),i=0===f.code?g?void 0:f.stderr.slice(-300)||"no output (code "+f.code+")":f.stderr.slice(-300)||`${a} exit ${f.code}`;return{ok:0===f.code&&!!g,text:g,usd:0,inputTokens:0,outputTokens:0,durationMs:f.durationMs,binary:a,model:c.model,error:i}}async function M(a,b){let c=z(b.model),d=["--message",a,"--yes-always","--no-auto-commits","--no-stream"];return c&&d.push("--model",c),L("aider",d,b)}async function N(a,b){let c=z(b.model),d=["run",a];return c&&d.push("--model",c),L("opencode",d,b)}async function O(a,b){let c=z(b.model),d=["-p",a,"--allow-all-tools"];return c&&d.push("--model",c),L("copilot",d,b)}async function P(a,b){let c=z(b.model),d=["-p",a,"--output-format","json"];return c&&d.push("--model",c),L("cursor-agent",d,{...b,timeoutMs:b.timeoutMs??15e4})}async function Q(a,b){let c=z(b.model),d=["--json","-y",a];return c&&d.push("--model",c),L("cline",d,b)}async function R(a,b){let c=z(b.model),d=["--yes",a];return c&&d.push("--model",c),L("kilocode",d,b)}async function S(a){try{if("opencode"===a){let a=await F("opencode",["models"],"",process.cwd(),2e4);if(0!==a.code)return[];return a.stdout.split("\n").map(a=>a.trim()).filter(a=>/^[\w.-]+\/[\w./:-]+$/.test(a)).slice(0,200)}if("aider"===a){let a=await F("aider",["--list-models","/"],"",process.cwd(),25e3);if(0!==a.code)return[];return a.stdout.split("\n").map(a=>a.replace(/^[-*\s]+/,"").trim()).filter(a=>/^[\w.-]+\/[\w./:-]+$/.test(a)).slice(0,200)}}catch{}return[]}async function T(a,b,c){return F(a,b,c.input??"",c.cwd,c.timeoutMs??6e4,c.env?{...process.env,...c.env}:void 0,void 0,!1)}async function U(a){let b=await F(a,["--version"],"",process.cwd(),15e3);return 0!==b.code?null:(b.stdout||b.stderr).trim().split("\n")[0]||"ok"}async function V(a){let b=(0,f.homedir)(),c=(...a)=>a.some(a=>(0,e.existsSync)((0,g.join)(b,a)));try{switch(a){case"claude":return c(".claude/.credentials.json",".claude.json",".config/claude")?"ready":"needs_login";case"codex":return c(".codex/auth.json",".codex")?"ready":"needs_login";case"aider":return process.env.OPENAI_API_KEY||process.env.ANTHROPIC_API_KEY||process.env.DEEPSEEK_API_KEY||process.env.GEMINI_API_KEY||process.env.OPENROUTER_API_KEY||process.env.GROQ_API_KEY?"ready":"needs_login";case"opencode":{let a=await F("opencode",["auth","list"],"",process.cwd(),8e3);if(0===a.code&&/\w/.test(a.stdout)&&!/\b(no|none|not)\b.*(auth|provider|credential|logged)/i.test(a.stdout))return"ready";return c(".local/share/opencode/auth.json",".config/opencode")?"ready":"needs_login"}case"copilot":return c(".config/github-copilot/apps.json",".config/github-copilot",".copilot")?"ready":"needs_login";case"cursor-agent":return c(".config/cursor-agent",".cursor-agent",".cursor")?"ready":"needs_login";case"openclaw":return c(".openclaw",".config/openclaw")?"ready":"unknown";case"hermes":return c(".hermes",".config/hermes")?"ready":"unknown";case"cline":return c(".cline",".config/cline")?"ready":"unknown";case"kilocode":return c(".kilocode",".config/kilocode")?"ready":"unknown"}}catch{}return"unknown"}let W={cli_claude_code:["opus","sonnet","haiku"],cli_codex:["gpt-5-codex","o4-mini"],cli_openclaw:["(default)","openai/gpt-5.4","anthropic/claude-sonnet-4"],cli_hermes:["(default)","anthropic/claude-sonnet-4.6","openai/gpt-5.5"],cli_aider:["(default)","anthropic/claude-sonnet-4-6","openai/gpt-5.2","deepseek/deepseek-chat"],cli_opencode:["(default)","anthropic/claude-sonnet-4-6","openai/gpt-5.2"],cli_copilot:["(default)","claude-sonnet-4.5","gpt-5"],cli_cursor:["(default)","claude-4.5-sonnet","gpt-5"],cli_cline:["(default)"],cli_kilo:["(default)"]};function X(a,b){if("cli_codex"===a||"cli_codex_cli"===a)return"codex";if("cli_openclaw"===a)return"openclaw";if("cli_hermes"===a)return"hermes";if("cli_aider"===a)return"aider";if("cli_opencode"===a)return"opencode";if("cli_copilot"===a||"cli_copilot_cli"===a)return"copilot";if("cli_cursor"===a||"cli_cursor_cli"===a)return"cursor-agent";if("cli_cline"===a||"cli_cline_cli"===a)return"cline";if("cli_kilo"===a||"cli_kilo_code"===a)return"kilocode";if("cli_claude_code"===a)return"claude";let c=(b??"").toLowerCase();return c.startsWith("codex")||c.startsWith("gpt")||c.startsWith("o1")||c.startsWith("o3")||c.startsWith("o4")?"codex":"claude"}function Y(a){let b=X(a);return"claude"===b?"opus":"codex"!==b?(W[a??""]??[]).find(a=>"(default)"!==a):void 0}async function Z(a,b){let c=b.binary??"claude",d={model:b.model,orgId:b.orgId,timeoutMs:b.timeoutMs,token:b.token,agentId:b.agentId,agentHandle:b.agentHandle};return"codex"===c?H(a,d):"openclaw"===c?K(a,d):"hermes"===c?J(a,d):"aider"===c?M(a,d):"opencode"===c?N(a,d):"copilot"===c?O(a,d):"cursor-agent"===c?P(a,d):"cline"===c?Q(a,d):"kilocode"===c?R(a,d):G(a,d)}async function $(a,b,c){let f=(0,h.HZ)(b.orgId);(0,e.mkdirSync)(f,{recursive:!0});let g=y(b.model),j=["-p","--output-format","stream-json","--include-partial-messages","--verbose",...w(),...l(),...t??"0"!==process.env.CONSTELLA_WEB_RESEARCH?["--allowedTools","WebSearch","WebFetch"]:[]];return g&&j.push("--model",g),new Promise(e=>{let g=Date.now(),h=(0,d.spawn)("claude",j,{cwd:f,shell:i,windowsHide:!0,env:x(b)});D(b.token,h);let k="",l="",m=0,n=0,o=0,p=!1,q,r="",s=0,t=!1,u=()=>{r.length>s&&(c({kind:"text",detail:r.slice(s,s+8e3)}),s=r.length)},v=setTimeout(()=>{try{h.kill("SIGKILL")}catch{}},b.timeoutMs??24e4);h.stdout.on("data",a=>{let b;for(k+=a.toString();(b=k.indexOf("\n"))>=0;){let a=k.slice(0,b).trim();if(k=k.slice(b+1),a.startsWith("{"))try{!function(a){if("stream_event"===a.type){let b=a.event;b?.type==="content_block_start"&&b.content_block?.type==="text"&&r?r+="\n\n":b?.type==="content_block_delta"&&b.delta?.type==="text_delta"&&b.delta.text&&(t=!0,(r+=b.delta.text).length-s>=120&&u())}else if("assistant"===a.type){for(let b of a.message?.content??[])"tool_use"===b.type&&b.name?c(function(a,b){if("Read"===a)return{kind:"read",target:String(b.file_path??"")};if("Write"===a)return{kind:"create",target:String(b.file_path??""),detail:String(b.content??"").slice(0,4e3)};if("Edit"===a||"NotebookEdit"===a){let a=String(b.old_string??"").split("\n"),c=String(b.new_string??"").split("\n"),d=[...a.map(a=>"-"+a),...c.map(a=>"+"+a)].slice(0,80).join("\n");return{kind:"edit",target:String(b.file_path??""),detail:d}}return"Bash"===a||"PowerShell"===a?{kind:"run",target:String(b.command??"").slice(0,200)}:"Glob"===a||"Grep"===a?{kind:"search",target:String(b.pattern??"")}:{kind:"read",target:a}}(b.name,b.input??{})):"text"===b.type&&b.text?(l=b.text,t||c({kind:"text",detail:b.text.slice(0,8e3)})):"thinking"===b.type&&b.thinking&&c({kind:"thinking",detail:b.thinking.slice(0,200)});u()}else if("result"===a.type){p=!0!==a.is_error&&"success"===a.subtype,"string"==typeof a.result&&(l=a.result),m=Number(a.total_cost_usd??0);let b=a.usage??{};n=Number(b.input_tokens??0)+Number(b.cache_read_input_tokens??0)+Number(b.cache_creation_input_tokens??0),o=Number(b.output_tokens??0),a.is_error&&(q=String(a.result??"error"))}}(JSON.parse(a))}catch{}}}),h.on("error",a=>{clearTimeout(v),E(b.token),e(I("claude",b.model,Date.now()-g,String(a)))}),h.on("close",()=>{clearTimeout(v),E(b.token),c({kind:"done"}),e({ok:p,text:l,usd:m,inputTokens:n,outputTokens:o,durationMs:Date.now()-g,binary:"claude",model:b.model,error:q})}),h.stdin.write(a),h.stdin.end()})}let _=[6e4,3e5,9e5],aa=a=>new Promise(b=>setTimeout(b,a));async function ab(a,b,c){let d=null;for(let f=0;f<=_.length;f++){var e;let g=await ac(a,b,c);if(g.ok||!((e=g.error)&&/(\b429\b|overloaded|rate[\s_-]?limit|usage limit|\bquota\b|too many requests|service unavailable|\b50[0-3]\b|\bupstream\b|fetch failed|network error|econnreset|enotfound|etimedout|econnrefused|socket hang up)/i.test(e)))return g;if(d=g,f<_.length){let a=_[f];c({kind:"thinking",target:`Provider limit / network — retrying in ${Math.round(a/6e4)} min (attempt ${f+2}/${_.length+1})…`,detail:(g.error||"").slice(0,160)}),await aa(a)}}return d}async function ac(a,b,c){let d=b.binary??"claude";if("claude"===d)return $(a,{model:b.model,orgId:b.orgId,timeoutMs:b.timeoutMs,token:b.token,agentId:b.agentId,agentHandle:b.agentHandle},c);let e={model:b.model,orgId:b.orgId,timeoutMs:b.timeoutMs,token:b.token},f="openclaw"===d?await K(a,e):"hermes"===d?await J(a,e):"aider"===d?await M(a,e):"opencode"===d?await N(a,e):"copilot"===d?await O(a,e):"cursor-agent"===d?await P(a,e):"cline"===d?await Q(a,e):"kilocode"===d?await R(a,e):await H(a,e);return c({kind:"done"}),f}},76158:(a,b,c)=>{c.d(b,{J$:()=>k,fR:()=>j});var d=c(77598),e=c(97603),f=c(65705),g=c(1890),h=c(57086),i=c(93571);function j(a){let{orgId:b,wsId:c,names:j,agentIds:k}=a,l=a.linkNames?new Set(a.linkNames):null,m=0;for(let a of j){let j=(0,i.fi)(a);if(!j||f.db.select({id:g.skill.id}).from(g.skill).where((0,e.Uo)((0,e.eq)(g.skill.workspaceId,c),(0,e.eq)(g.skill.name,a))).get())continue;let n=(0,i.qg)(a);if(!n)continue;let o=(0,i.BC)(n),p=`When working with ${a} in this project.`,q=`# Skill — ${a}
|
|
862
|
+
|
|
863
|
+
**Trigger:** ${p}
|
|
864
|
+
|
|
865
|
+
${j.description}
|
|
866
|
+
|
|
867
|
+
## Procedure
|
|
868
|
+
${o}
|
|
869
|
+
`;(0,h.dx)(b,`.claude/skills/${a}.md`,q);let r=(0,d.randomUUID)();if(f.db.insert(g.skill).values({id:r,workspaceId:c,name:a,summary:j.description,trigger:p,instructions:o,native:!0,provisional:!1,indexed:"indexed"}).run(),!l||l.has(a))for(let a of Object.keys(k))f.db.insert(g.agentSkill).values({agentId:k[a],skillId:r}).run();m++}return{seeded:m}}function k(a){let b=f.db.select({stack:g.workspace.stack}).from(g.workspace).where((0,e.eq)(g.workspace.id,a)).get();if(!b)return{agents:0,linked:0,unlinked:0};let c=b.stack??{},d=new Set((0,i.Cg)().keys()),h=f.db.select({id:g.skill.id,name:g.skill.name}).from(g.skill).where((0,e.eq)(g.skill.workspaceId,a)).all(),j=new Map(h.map(a=>[a.name,a.id])),k=new Map(h.map(a=>[a.id,a.name])),l=f.db.select({id:g.agent.id,role:g.agent.role}).from(g.agent).where((0,e.eq)(g.agent.workspaceId,a)).all(),m=0,n=0;for(let a of l){let b=new Set((0,i.x4)(c,a.role).filter(a=>j.has(a))),h=f.db.select({skillId:g.agentSkill.skillId,auto:g.agentSkill.auto}).from(g.agentSkill).where((0,e.eq)(g.agentSkill.agentId,a.id)).all(),l=new Set(h.map(a=>a.skillId));for(let c of h){let h=k.get(c.skillId);c.auto&&h&&d.has(h)&&!b.has(h)&&(f.db.delete(g.agentSkill).where((0,e.Uo)((0,e.eq)(g.agentSkill.agentId,a.id),(0,e.eq)(g.agentSkill.skillId,c.skillId))).run(),n++)}for(let c of b){let b=j.get(c);b&&!l.has(b)&&(f.db.insert(g.agentSkill).values({agentId:a.id,skillId:b,auto:!0}).onConflictDoNothing().run(),m++)}}return{agents:l.length,linked:m,unlinked:n}}},77558:(a,b,c)=>{c.d(b,{TC:()=>k,W_:()=>i,vE:()=>h,vG:()=>j});var d=c(77598),e=c(97603),f=c(65705),g=c(1890);async function h(a,b){try{if(b.refType&&b.refId){let[c]=await f.db.select({id:g.inboxItem.id}).from(g.inboxItem).where((0,e.Uo)((0,e.eq)(g.inboxItem.workspaceId,a),(0,e.eq)(g.inboxItem.refType,b.refType),(0,e.eq)(g.inboxItem.refId,b.refId),(0,e.eq)(g.inboxItem.resolved,!1)));if(c)return void await f.db.update(g.inboxItem).set({title:b.title,detail:b.detail??"",goalId:b.goalId??null,channel:b.channel??null,messageId:b.messageId??null,createdAt:new Date}).where((0,e.eq)(g.inboxItem.id,c.id))}await f.db.insert(g.inboxItem).values({id:(0,d.randomUUID)(),workspaceId:a,kind:b.kind,title:b.title,detail:b.detail??"",fromAgentId:b.fromAgentId??null,resolved:!1,refType:b.refType??null,refId:b.refId??null,goalId:b.goalId??null,channel:b.channel??null,messageId:b.messageId??null})}catch(a){console.error("[inbox] pushInbox failed:",a)}}async function i(a,b,c){try{await f.db.update(g.inboxItem).set({resolved:!0}).where((0,e.Uo)((0,e.eq)(g.inboxItem.workspaceId,a),(0,e.eq)(g.inboxItem.refType,b),(0,e.eq)(g.inboxItem.refId,c),(0,e.eq)(g.inboxItem.resolved,!1)))}catch(a){console.error("[inbox] resolveInboxFor failed:",a)}}async function j(a,b){try{await f.db.update(g.inboxItem).set({resolved:!0}).where((0,e.Uo)((0,e.eq)(g.inboxItem.workspaceId,a),(0,e.RV)(g.inboxItem.refType,b),(0,e.eq)(g.inboxItem.resolved,!1)))}catch(a){console.error("[inbox] resolveInboxRefTypes failed:",a)}}async function k(a,b){try{await f.db.update(g.inboxItem).set({resolved:!0}).where((0,e.Uo)((0,e.eq)(g.inboxItem.workspaceId,a),(0,e.eq)(g.inboxItem.goalId,b),(0,e.eq)(g.inboxItem.resolved,!1)))}catch(a){console.error("[inbox] resolveInboxForGoal failed:",a)}}},83101:(a,b,c)=>{function d(a){return a?a.split(",").map(a=>a.trim()).filter(Boolean):[]}function e(a){return a.join(", ")}function f(a){return d(a)[0]??""}c.d(b,{BT:()=>f,He:()=>e,jX:()=>d})},88007:(a,b,c)=>{c.d(b,{A3:()=>j,Py:()=>e,_9:()=>g,bT:()=>l,gg:()=>h,vH:()=>k});var d=c(38926);function e(a){return/^\d{6,}:[A-Za-z0-9_-]{30,}$/.test(a)}let f="https://api.telegram.org";async function g(a){let b=await (0,d.r6)(a,"telegram_bot");if(!b)return null;try{let a=JSON.parse(b);if(a.botToken&&a.chatId&&e(a.botToken))return a}catch{}return null}async function h(a){if(!e(a))return{ok:!1};try{let b=await fetch(`${f}/bot${a}/getMe`,{signal:AbortSignal.timeout(8e3)}),c=await b.json();return{ok:!!c.ok,username:c.result?.username}}catch{return{ok:!1}}}let i=[{command:"help",description:"Show the remote-control commands"},{command:"status",description:"Quick project status"},{command:"review",description:"Plan / issues / tasks summary"},{command:"tasks",description:"What's in flight right now"},{command:"approve",description:"Approve the pending plan"},{command:"start_execution",description:"Approve + run 24/7"},{command:"pause",description:"Pause 24/7 execution"},{command:"resume",description:"Resume 24/7 execution"},{command:"reject",description:"Send the plan back to the CEO"},{command:"new",description:"Start new work — describe it"},{command:"cancel",description:"Cancel the active goal"},{command:"archive",description:"Archive the active goal"},{command:"kb",description:"Ask the Knowledge Base"}];async function j(a,b=i){if(!e(a))return!1;try{let c=await fetch(`${f}/bot${a}/setMyCommands`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({commands:b}),signal:AbortSignal.timeout(8e3)});return!!(await c.json()).ok}catch{return!1}}async function k(a,b,c){if(!e(a))return!1;try{return(await fetch(`${f}/bot${a}/sendMessage`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({chat_id:b,text:c.slice(0,3800),disable_web_page_preview:!0})})).ok}catch{return!1}}async function l(a,b,c,d){if(!e(a))return{ok:!1};try{let e=await fetch(`${f}/bot${a}/sendMessage`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({chat_id:b,text:c.slice(0,3500),disable_web_page_preview:!0,reply_markup:{inline_keyboard:d.map(a=>a.map(a=>({text:a.text,callback_data:a.data.slice(0,64)})))}}),signal:AbortSignal.timeout(12e3)});if(!e.ok)return{ok:!1};let g=await e.json().catch(()=>({}));return{ok:!!g.ok,messageId:g.result?.message_id}}catch{return{ok:!1}}}},93571:(a,b,c)=>{c.d(b,{Ws:()=>v,IT:()=>x,fi:()=>q,AQ:()=>u,Cg:()=>p,qg:()=>r,x4:()=>w,et:()=>y,BC:()=>t});var d=c(73024),e=c(76760),f=c(30043);let g={TypeScript:"typescript",JavaScript:"javascript",Python:"python",Go:"go",Rust:"rust",Java:"java",Kotlin:"kotlin","C#":"csharp",Ruby:"ruby",PHP:"php",Elixir:"elixir",Swift:"swift","C++":"cpp",Scala:"scala",Dart:"dart",C:"c",Clojure:"clojure",Haskell:"haskell",Lua:"lua","Objective-C":"objectivec",Erlang:"erlang","Node.js":"node",Bun:"bun",Deno:"deno","Python 3":"python3",PyPy:"pypy",JVM:"jvm",".NET":"dotnet","BEAM (Erlang VM)":"beam",React:"react",Vue:"vue",Svelte:"svelte",Angular:"angular",SolidJS:"solidjs",Preact:"preact",Qwik:"qwik",Lit:"lit","Alpine.js":"alpine","Next.js":"nextjs",Nuxt:"nuxt",Remix:"remix",SvelteKit:"sveltekit",Astro:"astro",Gatsby:"gatsby","Vite (SPA)":"vite",NestJS:"nestjs",Fastify:"fastify",Express:"express",Hono:"hono",Koa:"koa",Django:"django",Flask:"flask",FastAPI:"fastapi","Spring Boot":"spring-boot",Spring:"spring",Laravel:"laravel",Symfony:"symfony","Ruby on Rails":"rails",Gin:"gin",Fiber:"fiber",Actix:"actix",Phoenix:"phoenix","ASP.NET Core":"aspnet-core",AdonisJS:"adonisjs","React Native":"react-native",Flutter:"flutter",PostgreSQL:"postgresql",MySQL:"mysql",MariaDB:"mariadb",SQLite:"sqlite",MongoDB:"mongodb",Redis:"redis",Supabase:"supabase",Prisma:"prisma",Drizzle:"drizzle",TypeORM:"typeorm",Sequelize:"sequelize",SQLAlchemy:"sqlalchemy","Django ORM":"django-orm",Mongoose:"mongoose",GORM:"gorm","Tailwind CSS":"tailwind","CSS Modules":"css-modules","styled-components":"styled-components",Sass:"sass",Jest:"jest",Vitest:"vitest",Cypress:"cypress",Playwright:"playwright",Docker:"docker",Podman:"podman",BullMQ:"bullmq",RabbitMQ:"rabbitmq",Kafka:"kafka",Celery:"celery","Auth.js":"authjs",Keycloak:"keycloak",R:"r",Ember:"ember",Backbone:"backbone",Hugo:"hugo",Jekyll:"jekyll",Eleventy:"eleventy",Docusaurus:"docusaurus",CodeIgniter:"codeigniter",GraphQL:"graphql",Nginx:"nginx",Android:"android",Ionic:"ionic",Xamarin:"xamarin",NativeScript:"nativescript",Bootstrap:"bootstrap",Bulma:"bulma",Vuetify:"vuetify",Selenium:"selenium",Mocha:"mocha",Jasmine:"jasmine",Puppeteer:"puppeteer",TensorFlow:"tensorflow",PyTorch:"pytorch","scikit-learn":"scikit-learn",Keras:"keras",Pandas:"pandas",NumPy:"numpy",Jupyter:"jupyter",D3:"d3","Chart.js":"chart-js",Grafana:"grafana",Plotly:"plotly",Azure:"azure",Jenkins:"jenkins",CircleCI:"circleci",Terraform:"terraform",Ansible:"ansible",Vagrant:"vagrant",Firebase:"firebase",Appwrite:"appwrite",Amplify:"amplify",Heroku:"heroku"},h=[{match:/\bceo\b|chief exec/i,profile:{stackPrefixes:[],allPrefixes:["process/","design/","front-end/","engineering/architecture/"],core:["app-planning","requirements-to-specs","specs-to-issues","architecture-before-code"]}},{match:/product owner|\bpo\b|product manager/i,profile:{stackPrefixes:[],allPrefixes:["process/"],core:["product-discovery","requirements-to-specs","specs-to-issues","prioritization-moscow-rice"]}},{match:/\bcto\b|chief tech|tech lead|architect/i,profile:{stackPrefixes:["stacks/"],allPrefixes:["engineering/architecture/","engineering/security/","engineering/performance/","process/architecture-before-code","process/adr-technical-decisions"],core:["system-design-fundamentals","software-architecture-patterns","architecture-before-code","api-design-rest-graphql"]}},{match:/front\s?end|\bui\b|\bux\b|web designer/i,profile:{stackPrefixes:["stacks/frontend/","stacks/styling/","stacks/meta/","stacks/mobile/","stacks/testing/"],allPrefixes:["design/","front-end/","engineering/frontend/","engineering/performance/web-performance-core-vitals"],core:["design-systems","ui-ux-principles","responsive-layout","color-and-typography","accessibility-wcag"]}},{match:/back\s?end|server|\bapi\b/i,profile:{stackPrefixes:["stacks/backend/","stacks/database/","stacks/orm/","stacks/queue/","stacks/runtime/","stacks/baas/","stacks/auth/"],allPrefixes:["engineering/backend/","engineering/architecture/","engineering/performance/"],core:["backend-fundamentals","api-design-rest-graphql","data-modeling","auth-and-authorization"]}},{match:/cyber\s?sec|security|appsec|\bsec\b/i,profile:{stackPrefixes:["stacks/auth/"],allPrefixes:["engineering/security/","process/security-by-design","process/review-code-perf-security"],core:["owasp-top-10","owasp-asvs","secrets-management","secure-auth-sessions"]}},{match:/\bqa\b|quality|test/i,profile:{stackPrefixes:["stacks/testing/"],allPrefixes:["engineering/testing/","process/testing-before-done"],core:["testing-strategy-pyramid","tdd-and-coverage","unit-integration-e2e"]}},{match:/devops|\bops\b|infra|platform|sre|deploy/i,profile:{stackPrefixes:["stacks/infra/","stacks/container/","stacks/runtime/"],allPrefixes:["engineering/architecture/scalability-reliability","engineering/security/secrets-management"],core:["scalability-reliability","secrets-management"]}},{match:/\bdocs?\b|documentation|technical writer/i,profile:{stackPrefixes:["stacks/"],allPrefixes:["process/readme-generation"],core:["readme-generation"]}}],i={stackPrefixes:["stacks/"],allPrefixes:["process/","engineering/practices/"],core:[]};function j(a){let b=(a??"").trim();for(let a of h)if(a.match.test(b))return a.profile;return i}var k=c(83101);function l(){let a=[process.env.CONSTELLA_PKG_ROOT,(0,f.v)(),process.cwd()].filter(Boolean).map(a=>(0,e.join)(a,"skills"));for(let b of a)try{if((0,d.statSync)(b).isDirectory())return b}catch{}return a[0]??(0,e.join)((0,f.v)(),"skills")}function m(a,b){let c=a.match(RegExp(`^${b}:\\s*(.+)$`,"m"));return c?c[1].trim().replace(/^["']|["']$/g,"").trim():""}function n(a,b){let c=a.match(RegExp(`(?:^|\\n)${b}:\\s*\\n([\\s\\S]*?)(?=\\n\\S|$)`));return c?c[1].split("\n").map(a=>a.match(/^\s*-\s+(.+?)\s*$/)?.[1]?.replace(/^["']|["']$/g,"").trim()).filter(a=>!!a):[]}let o=null;function p(){if(o)return o;let a=l(),b=new Map;try{(0,d.statSync)(a).isDirectory()&&function c(f,g){let h;if(!(g>8)){try{h=(0,d.readdirSync)(f,{withFileTypes:!0})}catch{return}for(let i of h){let h=(0,e.join)(f,i.name);if(i.isDirectory()){c(h,g+1);continue}if("SKILL.md"!==i.name)continue;let j="";try{j=(0,d.readFileSync)(h,"utf8")}catch{continue}let k=j.match(/^---\n([\s\S]*?)\n---/),l=k?.[1]??"",o=h.split(/[\\/]/).slice(-2,-1)[0]||m(l,"name");if(!o||b.has(o))continue;let p=h.slice(a.length).replace(/^[\\/]+/,"").replace(/\\/g,"/");b.set(o,{name:o,relPath:p,description:m(l,"description")||`${o} skill.`,domain:m(l,"domain")||p.split("/")[0]||"",category:m(l,"category")||"",sources:n(l,"official_sources"),tags:function(a,b){let c=a.match(RegExp(`^${b}:\\s*\\[(.*?)\\]\\s*$`,"m"));return c?c[1].split(",").map(a=>a.trim().replace(/^["']|["']$/g,"")).filter(Boolean):n(a,b)}(l,"tags")})}}}(a,0)}catch{}return o=b,b}function q(a){return p().get(a)??null}function r(a){let b=q(a);if(!b)return null;try{return(0,d.readFileSync)((0,e.join)(l(),b.relPath),"utf8")}catch{return null}}let s=["clean-code","git-workflow","code-review-practices","refactoring","code-optimization","owasp-top-10","secrets-management","appsec-fundamentals","testing-strategy-pyramid","tdd-and-coverage","unit-integration-e2e","ui-ux-principles","responsive-layout","accessibility-wcag","architecture-before-code","requirements-to-specs","specs-to-issues","testing-before-done","security-by-design","review-code-perf-security","research-official-docs","authoring-agent-skills","readme-generation"];function t(a){return a.replace(/^---\n[\s\S]*?\n---\n?/,"").trim()}function u(a){let b=p(),c=[...s];for(let b of Object.values(a??{}))for(let a of(0,k.jX)(b)){let b=g[a];b&&c.push(b)}return[...new Set(c)].filter(a=>b.has(a))}function v(){return[...p().keys()]}function w(a,b){let c=p(),d=j(b),e=new Set(u(a)),f=new Set(s.filter(a=>c.has(a)));for(let[a,b]of c)d.allPrefixes.some(a=>b.relPath.startsWith(a))?f.add(a):d.stackPrefixes.some(a=>b.relPath.startsWith(a))&&e.has(a)&&f.add(a);return[...f]}function x(a,b){let c=p(),d=j(b),e=new Set(u(a)),f=new Set(d.core.filter(a=>c.has(a)));for(let[a,b]of c)d.stackPrefixes.some(a=>b.relPath.startsWith(a))&&e.has(a)&&f.add(a);return[...f]}function y(a){let b=p(),c=new Set;for(let d of u(a))for(let a of b.get(d)?.sources??[])try{c.add(new URL(a).host.toLowerCase())}catch{}return[...c]}}};
|