@stacksjs/defaults 0.70.207 → 0.70.208
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/TODO.md +21 -0
- package/ai/AGENTS.md +79 -0
- package/ai/README.md +45 -0
- package/ai/claude/launch.json +12 -0
- package/ai/skills/stacks-actions/SKILL.md +128 -0
- package/ai/skills/stacks-ai/SKILL.md +276 -0
- package/ai/skills/stacks-alias/SKILL.md +94 -0
- package/ai/skills/stacks-analytics/SKILL.md +91 -0
- package/ai/skills/stacks-api/SKILL.md +738 -0
- package/ai/skills/stacks-arrays/SKILL.md +277 -0
- package/ai/skills/stacks-auth/SKILL.md +422 -0
- package/ai/skills/stacks-auto-imports/SKILL.md +138 -0
- package/ai/skills/stacks-brandkit/SKILL.md +811 -0
- package/ai/skills/stacks-browse/SKILL.md +127 -0
- package/ai/skills/stacks-browse/scripts/browse.ts +492 -0
- package/ai/skills/stacks-browser/SKILL.md +145 -0
- package/ai/skills/stacks-buddy/SKILL.md +676 -0
- package/ai/skills/stacks-build/SKILL.md +163 -0
- package/ai/skills/stacks-cache/SKILL.md +125 -0
- package/ai/skills/stacks-calendar/SKILL.md +113 -0
- package/ai/skills/stacks-chat/SKILL.md +371 -0
- package/ai/skills/stacks-cli/SKILL.md +112 -0
- package/ai/skills/stacks-cloud/SKILL.md +192 -0
- package/ai/skills/stacks-cms/SKILL.md +217 -0
- package/ai/skills/stacks-collections/SKILL.md +82 -0
- package/ai/skills/stacks-commerce/SKILL.md +114 -0
- package/ai/skills/stacks-composables/SKILL.md +161 -0
- package/ai/skills/stacks-config/SKILL.md +144 -0
- package/ai/skills/stacks-configuration/SKILL.md +154 -0
- package/ai/skills/stacks-cron/SKILL.md +123 -0
- package/ai/skills/stacks-crosswind/SKILL.md +190 -0
- package/ai/skills/stacks-dashboard/SKILL.md +173 -0
- package/ai/skills/stacks-database/SKILL.md +286 -0
- package/ai/skills/stacks-datetime/SKILL.md +269 -0
- package/ai/skills/stacks-dependencies/SKILL.md +111 -0
- package/ai/skills/stacks-deploy/SKILL.md +102 -0
- package/ai/skills/stacks-design-brutalist/SKILL.md +110 -0
- package/ai/skills/stacks-design-minimalist/SKILL.md +115 -0
- package/ai/skills/stacks-design-output/SKILL.md +55 -0
- package/ai/skills/stacks-design-soft/SKILL.md +156 -0
- package/ai/skills/stacks-design-taste/SKILL.md +1012 -0
- package/ai/skills/stacks-design-taste-codex/SKILL.md +294 -0
- package/ai/skills/stacks-desktop/SKILL.md +78 -0
- package/ai/skills/stacks-development/SKILL.md +298 -0
- package/ai/skills/stacks-dns/SKILL.md +149 -0
- package/ai/skills/stacks-docs/SKILL.md +109 -0
- package/ai/skills/stacks-email/SKILL.md +236 -0
- package/ai/skills/stacks-enums/SKILL.md +100 -0
- package/ai/skills/stacks-env/SKILL.md +181 -0
- package/ai/skills/stacks-error-handling/SKILL.md +137 -0
- package/ai/skills/stacks-events/SKILL.md +228 -0
- package/ai/skills/stacks-faker/SKILL.md +158 -0
- package/ai/skills/stacks-git/SKILL.md +158 -0
- package/ai/skills/stacks-guard/SKILL.md +98 -0
- package/ai/skills/stacks-health/SKILL.md +75 -0
- package/ai/skills/stacks-http/SKILL.md +316 -0
- package/ai/skills/stacks-i18n/SKILL.md +198 -0
- package/ai/skills/stacks-image-to-code/SKILL.md +629 -0
- package/ai/skills/stacks-imagegen-mobile/SKILL.md +1474 -0
- package/ai/skills/stacks-imagegen-web/SKILL.md +998 -0
- package/ai/skills/stacks-investigate/SKILL.md +119 -0
- package/ai/skills/stacks-jobs/SKILL.md +136 -0
- package/ai/skills/stacks-lint/SKILL.md +184 -0
- package/ai/skills/stacks-listeners/SKILL.md +99 -0
- package/ai/skills/stacks-logging/SKILL.md +78 -0
- package/ai/skills/stacks-mail/SKILL.md +120 -0
- package/ai/skills/stacks-middleware/SKILL.md +249 -0
- package/ai/skills/stacks-migrations/SKILL.md +105 -0
- package/ai/skills/stacks-models/SKILL.md +267 -0
- package/ai/skills/stacks-new-feature/SKILL.md +206 -0
- package/ai/skills/stacks-notifications/SKILL.md +210 -0
- package/ai/skills/stacks-objects/SKILL.md +205 -0
- package/ai/skills/stacks-office-hours/SKILL.md +134 -0
- package/ai/skills/stacks-orm/SKILL.md +342 -0
- package/ai/skills/stacks-path/SKILL.md +118 -0
- package/ai/skills/stacks-payments/SKILL.md +373 -0
- package/ai/skills/stacks-plan-review/SKILL.md +152 -0
- package/ai/skills/stacks-plugins/SKILL.md +149 -0
- package/ai/skills/stacks-push/SKILL.md +376 -0
- package/ai/skills/stacks-query-builder/SKILL.md +128 -0
- package/ai/skills/stacks-queue/SKILL.md +559 -0
- package/ai/skills/stacks-realtime/SKILL.md +442 -0
- package/ai/skills/stacks-redesign/SKILL.md +182 -0
- package/ai/skills/stacks-registry/SKILL.md +58 -0
- package/ai/skills/stacks-repl/SKILL.md +80 -0
- package/ai/skills/stacks-retro/SKILL.md +122 -0
- package/ai/skills/stacks-review/SKILL.md +135 -0
- package/ai/skills/stacks-router/SKILL.md +231 -0
- package/ai/skills/stacks-routes/SKILL.md +105 -0
- package/ai/skills/stacks-scaffolding/SKILL.md +162 -0
- package/ai/skills/stacks-scheduler/SKILL.md +363 -0
- package/ai/skills/stacks-search-engine/SKILL.md +112 -0
- package/ai/skills/stacks-security/SKILL.md +129 -0
- package/ai/skills/stacks-security-audit/SKILL.md +128 -0
- package/ai/skills/stacks-server/SKILL.md +458 -0
- package/ai/skills/stacks-shell/SKILL.md +62 -0
- package/ai/skills/stacks-slug/SKILL.md +87 -0
- package/ai/skills/stacks-sms/SKILL.md +385 -0
- package/ai/skills/stacks-socials/SKILL.md +303 -0
- package/ai/skills/stacks-storage/SKILL.md +576 -0
- package/ai/skills/stacks-strings/SKILL.md +416 -0
- package/ai/skills/stacks-stx/SKILL.md +176 -0
- package/ai/skills/stacks-technical-diagrams/LICENSE +22 -0
- package/ai/skills/stacks-technical-diagrams/SKILL.md +290 -0
- package/ai/skills/stacks-technical-diagrams/agents/openai.yaml +4 -0
- package/ai/skills/stacks-technical-diagrams/assets/template.html +1252 -0
- package/ai/skills/stacks-technical-diagrams/bin/technical-diagrams.mjs +289 -0
- package/ai/skills/stacks-technical-diagrams/bunfig.toml +1 -0
- package/ai/skills/stacks-technical-diagrams/examples/agent-run.lifecycle.json +64 -0
- package/ai/skills/stacks-technical-diagrams/examples/agent-tool-call.workflow.json +88 -0
- package/ai/skills/stacks-technical-diagrams/examples/cache-miss-request.sequence.json +75 -0
- package/ai/skills/stacks-technical-diagrams/examples/product-analytics.dataflow.json +70 -0
- package/ai/skills/stacks-technical-diagrams/examples/web-app.architecture.json +41 -0
- package/ai/skills/stacks-technical-diagrams/renderers/architecture/grid.mjs +62 -0
- package/ai/skills/stacks-technical-diagrams/renderers/architecture/render-architecture.mjs +371 -0
- package/ai/skills/stacks-technical-diagrams/renderers/dataflow/README.md +82 -0
- package/ai/skills/stacks-technical-diagrams/renderers/dataflow/render-dataflow.mjs +295 -0
- package/ai/skills/stacks-technical-diagrams/renderers/lifecycle/README.md +91 -0
- package/ai/skills/stacks-technical-diagrams/renderers/lifecycle/render-lifecycle.mjs +384 -0
- package/ai/skills/stacks-technical-diagrams/renderers/sequence/README.md +84 -0
- package/ai/skills/stacks-technical-diagrams/renderers/sequence/render-sequence.mjs +257 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/cli.mjs +42 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/generated-validators.mjs +13 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/geometry.mjs +230 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/layout-report.mjs +40 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/utils.mjs +88 -0
- package/ai/skills/stacks-technical-diagrams/renderers/shared/validator.mjs +40 -0
- package/ai/skills/stacks-technical-diagrams/renderers/workflow/README.md +103 -0
- package/ai/skills/stacks-technical-diagrams/renderers/workflow/render-workflow.mjs +481 -0
- package/ai/skills/stacks-technical-diagrams/schemas/README.md +68 -0
- package/ai/skills/stacks-technical-diagrams/schemas/architecture.schema.json +121 -0
- package/ai/skills/stacks-technical-diagrams/schemas/common.schema.json +43 -0
- package/ai/skills/stacks-technical-diagrams/schemas/dataflow.schema.json +221 -0
- package/ai/skills/stacks-technical-diagrams/schemas/lifecycle.schema.json +241 -0
- package/ai/skills/stacks-technical-diagrams/schemas/sequence.schema.json +186 -0
- package/ai/skills/stacks-technical-diagrams/schemas/workflow.schema.json +332 -0
- package/ai/skills/stacks-technical-diagrams/scripts/check-render-output.mjs +297 -0
- package/ai/skills/stacks-technical-diagrams/scripts/render-examples.mjs +28 -0
- package/ai/skills/stacks-testing/SKILL.md +129 -0
- package/ai/skills/stacks-tunnel/SKILL.md +125 -0
- package/ai/skills/stacks-types/SKILL.md +178 -0
- package/ai/skills/stacks-ui/SKILL.md +246 -0
- package/ai/skills/stacks-utils/SKILL.md +444 -0
- package/ai/skills/stacks-validation/SKILL.md +371 -0
- package/ai/skills/stacks-whois/SKILL.md +315 -0
- package/assets/world-map-data.ts +121 -0
- package/bootstrap.ts +114 -0
- package/docs/api-examples.md +46 -0
- package/docs/index.md +24 -0
- package/docs/markdown-examples.md +87 -0
- package/functions/analytics.ts +97 -0
- package/functions/api.ts +143 -0
- package/functions/auth.ts +208 -0
- package/functions/billing/payments.ts +149 -0
- package/functions/blog.ts +120 -0
- package/functions/cms/categorizables.ts +107 -0
- package/functions/cms/pages.ts +108 -0
- package/functions/cms/posts.ts +100 -0
- package/functions/cms/taggables.ts +102 -0
- package/functions/commerce/coupons.ts +128 -0
- package/functions/commerce/customers.ts +128 -0
- package/functions/commerce/gift-cards.ts +119 -0
- package/functions/commerce/orders.ts +112 -0
- package/functions/commerce/payments.ts +119 -0
- package/functions/commerce/products/categories.ts +123 -0
- package/functions/commerce/products/manufacturers.ts +123 -0
- package/functions/commerce/products/products.ts +123 -0
- package/functions/commerce/products/reviews.ts +123 -0
- package/functions/commerce/products/units.ts +123 -0
- package/functions/commerce/products/variants.ts +123 -0
- package/functions/commerce/shippings/delivery-routes.ts +123 -0
- package/functions/commerce/shippings/digital-deliveries.ts +119 -0
- package/functions/commerce/shippings/drivers.ts +123 -0
- package/functions/commerce/shippings/license-keys.ts +123 -0
- package/functions/commerce/shippings/shipping-methods.ts +123 -0
- package/functions/commerce/shippings/shipping-rates.ts +119 -0
- package/functions/commerce/shippings/shipping-zones.ts +119 -0
- package/functions/commerce/taxes.ts +119 -0
- package/functions/commerce/waitlist/products.ts +123 -0
- package/functions/commerce/waitlist/restaurants.ts +123 -0
- package/functions/craft.ts +107 -0
- package/functions/dashboard.ts +153 -0
- package/functions/inbox.ts +95 -0
- package/functions/jobs.ts +86 -0
- package/functions/monitoring/errors.ts +295 -0
- package/functions/queue.ts +111 -0
- package/functions/realtime/websockets.ts +96 -0
- package/functions/realtime.ts +52 -0
- package/functions/releases.ts +49 -0
- package/functions/search.ts +126 -0
- package/functions/toasts.ts +95 -0
- package/functions/uploads.ts +216 -0
- package/ide/.gitignore +4 -0
- package/ide/cursor/rules/auto-imports.mdc +574 -0
- package/ide/cursor/rules/code-style.mdc +12 -0
- package/ide/cursor/rules/documentation.mdc +9 -0
- package/ide/cursor/rules/error-handling-validation.mdc +11 -0
- package/ide/cursor/rules/key-conventions.mdc +11 -0
- package/ide/cursor/rules/project-structure.mdc +169 -0
- package/ide/cursor/rules/readme.mdc +318 -0
- package/ide/cursor/rules/syntax-formatting.mdc +9 -0
- package/ide/cursor/rules/testing.mdc +10 -0
- package/ide/cursor/rules/typescript.mdc +9 -0
- package/ide/cursor/rules/ui-styling.mdc +0 -0
- package/ide/dictionary.txt +397 -0
- package/ide/jetbrains/.fleet/settings.json +4 -0
- package/ide/jetbrains/.idea/.gitignore +5 -0
- package/ide/jetbrains/.idea/.name +1 -0
- package/ide/jetbrains/.idea/inspectionProfiles/Project_Default.xml +6 -0
- package/ide/jetbrains/.idea/jsLinters/eslint.xml +7 -0
- package/ide/jetbrains/.idea/modules.xml +8 -0
- package/ide/jetbrains/.idea/stacks.iml +22 -0
- package/ide/jetbrains/.idea/vcs.xml +6 -0
- package/ide/jetbrains/.idea/webResources.xml +14 -0
- package/ide/jetbrains/IntelliJ IDEA Global Settings +0 -0
- package/ide/jetbrains/installed.txt +4 -0
- package/ide/jetbrains/options/github-copilot.xml +5 -0
- package/ide/jetbrains/options/nodejs.xml +7 -0
- package/ide/jetbrains/options/templates.xml +124 -0
- package/ide/jetbrains/templates/JavaScript.xml +6 -0
- package/ide/jetbrains/templates/Stacks.xml +8 -0
- package/ide/vscode/.vscode/README.md +23 -0
- package/ide/vscode/.vscode/extensions.json +5 -0
- package/ide/vscode/.vscode/settings.json +176 -0
- package/ide/vscode/.vscode/stacks.code-snippets +181 -0
- package/ide/vscode/LICENSE.md +21 -0
- package/ide/vscode/README.md +36 -0
- package/ide/vscode/logo.png +0 -0
- package/ide/vscode/package.json +79 -0
- package/ide/zed/.zed/settings.json +139 -0
- package/lang/README.md +28 -0
- package/lang/de.yml +14 -0
- package/lang/en.yml +15 -0
- package/package.json +19 -3
- package/project/bootstrap +161 -0
- package/project/buddy +175 -0
- package/project/storage/framework/tsconfig.app.json +50 -0
- package/project/storage/framework/tsconfig.base.json +58 -0
- package/routes/core.ts +78 -0
- package/routes/dashboard-api.ts +233 -0
- package/routes/dashboard.ts +739 -0
- package/routes/email.ts +129 -0
- package/stores/[name].stx +16 -0
- package/stores/git.ts +71 -0
- package/stores/payment.ts +474 -0
- package/stores/queue.ts +43 -0
- package/stores/user.ts +29 -0
- package/stx-components-plugin.ts +25 -0
- package/styles/design-tokens.css +597 -0
- package/types/dashboard.ts +70 -0
- package/types/defaults.ts +438 -0
- package/vcs/github/CODE_OF_CONDUCT.md +83 -0
- package/vcs/github/CONTRIBUTING.md +187 -0
- package/vcs/github/EXPLANATIONS.md +41 -0
- package/vcs/github/FUNDING.yml +1 -0
- package/vcs/github/ISSUE_TEMPLATE/bug_report.yml +49 -0
- package/vcs/github/ISSUE_TEMPLATE/config.yml +10 -0
- package/vcs/github/ISSUE_TEMPLATE/feature_request.yml +44 -0
- package/vcs/github/SECURITY.md +70 -0
- package/vcs/github/renovate.json +5 -0
- package/vcs/github/stale.yml +14 -0
- package/vcs/github/workflows/README.md +16 -0
- package/vcs/github/workflows/ci.yml +114 -0
- package/vcs/github/workflows/export-size.yml +25 -0
- package/vcs/github/workflows/labeler.yml +13 -0
- package/vcs/github/workflows/release.yml +219 -0
- package/views/[...all].stx +8 -0
- package/views/about.md +3 -0
- package/views/auth/login.stx +1 -0
- package/views/auth/signup.stx +85 -0
- package/views/dashboard/.discovered-models.json +542 -0
- package/views/dashboard/AUDIT.md +904 -0
- package/views/dashboard/[...all].stx +89 -0
- package/views/dashboard/access-tokens/index.stx +177 -0
- package/views/dashboard/actions/index.stx +129 -0
- package/views/dashboard/analytics/blog/index.stx +356 -0
- package/views/dashboard/analytics/browsers/index.stx +263 -0
- package/views/dashboard/analytics/commerce/sales/index.stx +329 -0
- package/views/dashboard/analytics/commerce/web/index.stx +379 -0
- package/views/dashboard/analytics/countries/index.stx +289 -0
- package/views/dashboard/analytics/devices/index.stx +305 -0
- package/views/dashboard/analytics/events/index.stx +536 -0
- package/views/dashboard/analytics/index.stx +88 -0
- package/views/dashboard/analytics/marketing/index.stx +315 -0
- package/views/dashboard/analytics/pages/index.stx +271 -0
- package/views/dashboard/analytics/referrers/index.stx +319 -0
- package/views/dashboard/analytics/web/index.stx +356 -0
- package/views/dashboard/buddy/index.stx +198 -0
- package/views/dashboard/ci/index.stx +462 -0
- package/views/dashboard/cloud/index.stx +452 -0
- package/views/dashboard/commands/index.stx +295 -0
- package/views/dashboard/commerce/categories/index.stx +406 -0
- package/views/dashboard/commerce/coupons/index.stx +485 -0
- package/views/dashboard/commerce/customers/index.stx +410 -0
- package/views/dashboard/commerce/dashboard/index.stx +287 -0
- package/views/dashboard/commerce/delivery/delivery-routes.stx +305 -0
- package/views/dashboard/commerce/delivery/digital-delivery.stx +332 -0
- package/views/dashboard/commerce/delivery/drivers.stx +397 -0
- package/views/dashboard/commerce/delivery/index.stx +18 -0
- package/views/dashboard/commerce/delivery/license-keys.stx +380 -0
- package/views/dashboard/commerce/delivery/shipping-methods.stx +346 -0
- package/views/dashboard/commerce/delivery/shipping-rates.stx +338 -0
- package/views/dashboard/commerce/delivery/shipping-zones.stx +302 -0
- package/views/dashboard/commerce/delivery/tabs.ts +25 -0
- package/views/dashboard/commerce/gift-cards/index.stx +561 -0
- package/views/dashboard/commerce/manufacturers/index.stx +308 -0
- package/views/dashboard/commerce/orders/index.stx +247 -0
- package/views/dashboard/commerce/payments/index.stx +535 -0
- package/views/dashboard/commerce/pos/index.stx +653 -0
- package/views/dashboard/commerce/printers/devices/index.stx +273 -0
- package/views/dashboard/commerce/printers/receipts/index.stx +308 -0
- package/views/dashboard/commerce/products/detail.stx +563 -0
- package/views/dashboard/commerce/products/index.stx +370 -0
- package/views/dashboard/commerce/reviews/index.stx +656 -0
- package/views/dashboard/commerce/reviews/index.ts +0 -0
- package/views/dashboard/commerce/taxes/index.stx +377 -0
- package/views/dashboard/commerce/units/index.stx +317 -0
- package/views/dashboard/commerce/variants/index.stx +319 -0
- package/views/dashboard/commerce/waitlist/products.stx +942 -0
- package/views/dashboard/commerce/waitlist/restaurant.stx +1024 -0
- package/views/dashboard/components/index.stx +330 -0
- package/views/dashboard/composables/index.ts +19 -0
- package/views/dashboard/composables/useChart.ts +77 -0
- package/views/dashboard/composables/useNavigation.ts +99 -0
- package/views/dashboard/composables/useRole.ts +58 -0
- package/views/dashboard/composables/useTheme.ts +74 -0
- package/views/dashboard/content/authors/index.stx +171 -0
- package/views/dashboard/content/blog/index.stx +493 -0
- package/views/dashboard/content/categories/index.stx +169 -0
- package/views/dashboard/content/comments/index.stx +189 -0
- package/views/dashboard/content/dashboard.stx +383 -0
- package/views/dashboard/content/files/index.stx +706 -0
- package/views/dashboard/content/pages/index.stx +174 -0
- package/views/dashboard/content/posts/index.stx +269 -0
- package/views/dashboard/content/seo/index.stx +240 -0
- package/views/dashboard/content/tags/index.stx +167 -0
- package/views/dashboard/data/activity/index.stx +261 -0
- package/views/dashboard/data/dashboard/index.stx +116 -0
- package/views/dashboard/data/subscribers.stx +270 -0
- package/views/dashboard/data/teams.stx +275 -0
- package/views/dashboard/data/users.stx +279 -0
- package/views/dashboard/dependencies/index.stx +178 -0
- package/views/dashboard/deployments/[id].stx +234 -0
- package/views/dashboard/deployments/index.stx +9 -0
- package/views/dashboard/dns/index.stx +163 -0
- package/views/dashboard/environment/index.stx +283 -0
- package/views/dashboard/errors/index.stx +274 -0
- package/views/dashboard/forgot-password.stx +57 -0
- package/views/dashboard/functions/index.stx +159 -0
- package/views/dashboard/health/index.stx +248 -0
- package/views/dashboard/inbox/activity.stx +350 -0
- package/views/dashboard/inbox/index.stx +452 -0
- package/views/dashboard/inbox/settings.stx +290 -0
- package/views/dashboard/index.stx +252 -0
- package/views/dashboard/insights/index.stx +529 -0
- package/views/dashboard/jobs/[id].stx +430 -0
- package/views/dashboard/jobs/history.stx +222 -0
- package/views/dashboard/jobs/index.stx +214 -0
- package/views/dashboard/kanban/[id].stx +899 -0
- package/views/dashboard/kanban/index.stx +260 -0
- package/views/dashboard/layouts/default.stx +565 -0
- package/views/dashboard/layouts/guest.stx +10 -0
- package/views/dashboard/login.stx +48 -0
- package/views/dashboard/logs/index.stx +540 -0
- package/views/dashboard/mailboxes/index.stx +149 -0
- package/views/dashboard/management/permissions/index.stx +490 -0
- package/views/dashboard/marketing/campaigns/index.stx +604 -0
- package/views/dashboard/marketing/lists/index.stx +514 -0
- package/views/dashboard/marketing/reviews/index.stx +475 -0
- package/views/dashboard/marketing/social-posts/index.stx +560 -0
- package/views/dashboard/models/[model].stx +195 -0
- package/views/dashboard/models/index.stx +159 -0
- package/views/dashboard/monitoring/errors/index.stx +415 -0
- package/views/dashboard/notifications/dashboard.stx +383 -0
- package/views/dashboard/notifications/email.stx +336 -0
- package/views/dashboard/notifications/history.stx +373 -0
- package/views/dashboard/notifications/sms.stx +332 -0
- package/views/dashboard/packages/index.stx +195 -0
- package/views/dashboard/queries/[id].stx +381 -0
- package/views/dashboard/queries/history.stx +227 -0
- package/views/dashboard/queries/index.stx +335 -0
- package/views/dashboard/queries/slow.stx +318 -0
- package/views/dashboard/queue/index.stx +427 -0
- package/views/dashboard/realtime/index.stx +429 -0
- package/views/dashboard/register.stx +46 -0
- package/views/dashboard/releases/index.stx +389 -0
- package/views/dashboard/requests/index.stx +462 -0
- package/views/dashboard/serverless/index.stx +475 -0
- package/views/dashboard/servers/[id].stx +299 -0
- package/views/dashboard/servers/index.stx +483 -0
- package/views/dashboard/settings/billing.stx +50 -0
- package/views/dashboard/settings/index.stx +256 -0
- package/views/dashboard/settings/mail.stx +252 -0
- package/views/dashboard/stores/auth.ts +123 -0
- package/views/dashboard/stores/ci.ts +342 -0
- package/views/dashboard/stores/index.ts +129 -0
- package/views/dashboard/stores/kanban.ts +723 -0
- package/views/dashboard/stores/rbac.ts +350 -0
- package/views/dashboard/stx.config.ts +34 -0
- package/views/dashboard/teams/[id].stx +170 -0
- package/views/forum/category.stx +92 -0
- package/views/forum/index.stx +209 -0
- package/views/forum/new-topic.stx +113 -0
- package/views/forum/profile.stx +1 -0
- package/views/forum/topic.stx +143 -0
- package/views/hello-world/[name].stx +47 -0
- package/views/index.stx +21 -0
- package/views/system-tray/index.stx +147 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: stacks-search-engine
|
|
3
|
+
description: Use when implementing search in Stacks — full-text search with Meilisearch or Algolia backends, document indexing, search settings management, the useSearch model trait for automatic indexing, or search driver configuration. Covers @stacksjs/search-engine and config/search-engine.ts.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Bun >= 1.3.0, TypeScript
|
|
6
|
+
allowed-tools: Read Edit Write Bash Grep Glob
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Stacks Search Engine
|
|
10
|
+
|
|
11
|
+
Full-text search integration with Meilisearch and Algolia drivers.
|
|
12
|
+
|
|
13
|
+
## Key Paths
|
|
14
|
+
- Core package: `storage/framework/core/search-engine/src/`
|
|
15
|
+
- Configuration: `config/search-engine.ts`
|
|
16
|
+
|
|
17
|
+
## Search Driver Factory
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
import { useSearchEngine, useAlgolia, useMeilisearch } from '@stacksjs/search-engine'
|
|
21
|
+
|
|
22
|
+
const search = useSearchEngine() // default driver
|
|
23
|
+
const algolia = useAlgolia() // Algolia client
|
|
24
|
+
const meili = useMeilisearch() // Meilisearch client
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Document Operations
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
// Index documents
|
|
31
|
+
await search.addDocuments('products', [
|
|
32
|
+
{ id: 1, name: 'Widget', description: 'A useful widget', price: 29.99 },
|
|
33
|
+
{ id: 2, name: 'Gadget', description: 'A cool gadget', price: 49.99 }
|
|
34
|
+
])
|
|
35
|
+
|
|
36
|
+
// Search
|
|
37
|
+
const results = await search.search('products', 'widget')
|
|
38
|
+
|
|
39
|
+
// List indexes
|
|
40
|
+
const indexes = await search.listIndexes()
|
|
41
|
+
|
|
42
|
+
// Get/update settings
|
|
43
|
+
const settings = await search.getSettings('products')
|
|
44
|
+
await search.updateSettings('products', {
|
|
45
|
+
searchableAttributes: ['name', 'description'],
|
|
46
|
+
filterableAttributes: ['price', 'category'],
|
|
47
|
+
sortableAttributes: ['price', 'created_at']
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
// Flush all documents
|
|
51
|
+
await search.flush('products')
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Model Integration (useSearch Trait)
|
|
55
|
+
|
|
56
|
+
Models with `useSearch` trait are automatically indexed:
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
defineModel({
|
|
60
|
+
name: 'Product',
|
|
61
|
+
traits: {
|
|
62
|
+
useSearch: {
|
|
63
|
+
displayable: ['name', 'description', 'price'],
|
|
64
|
+
searchable: ['name', 'description'],
|
|
65
|
+
sortable: ['name', 'price', 'created_at'],
|
|
66
|
+
filterable: ['category', 'status', 'price']
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
})
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## CLI Commands
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
buddy search-engine:update # index all searchable models
|
|
76
|
+
buddy search-engine:update --model Product # index specific model
|
|
77
|
+
buddy search-engine:update --flush # flush before re-indexing
|
|
78
|
+
buddy search-engine:update --settings # update search settings only
|
|
79
|
+
buddy search-engine:settings # list current settings
|
|
80
|
+
buddy search-engine:settings --model Product # settings for specific model
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Driver Comparison
|
|
84
|
+
|
|
85
|
+
| Feature | Meilisearch | Algolia |
|
|
86
|
+
|---------|------------|---------|
|
|
87
|
+
| Self-hosted | Yes | No (cloud) |
|
|
88
|
+
| Pricing | Free (self-hosted) | Per-search pricing |
|
|
89
|
+
| Typo tolerance | Built-in | Built-in |
|
|
90
|
+
| Faceted search | Yes | Yes |
|
|
91
|
+
| Geo search | Yes | Yes |
|
|
92
|
+
| Speed | Very fast | Very fast |
|
|
93
|
+
|
|
94
|
+
## config/search-engine.ts
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
{ driver: 'opensearch' } // 'meilisearch' | 'algolia' | 'opensearch'
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Environment variables: `MEILISEARCH_HOST`, `MEILISEARCH_KEY`, `SEARCH_ENGINE_DRIVER`
|
|
101
|
+
|
|
102
|
+
## Gotchas
|
|
103
|
+
- Default driver is `opensearch` — configure in config or env
|
|
104
|
+
- `useSearch` trait determines which model fields are indexed
|
|
105
|
+
- `displayable` controls which fields appear in search results
|
|
106
|
+
- `searchable` controls which fields are queried during search
|
|
107
|
+
- `filterable` enables faceted filtering on those fields
|
|
108
|
+
- `sortable` enables sorting by those fields
|
|
109
|
+
- Use `buddy search-engine:update --flush` for full re-index
|
|
110
|
+
- Meilisearch requires a running Meilisearch server
|
|
111
|
+
- Algolia requires API keys from your Algolia dashboard
|
|
112
|
+
- Settings updates don't re-index — run `search-engine:update` after changes
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: stacks-security
|
|
3
|
+
description: Use when implementing security in Stacks — password hashing (bcrypt/argon2), app key generation, AES encryption/decryption, hash verification, rehashing detection, or security configuration (firewall, rate limiting, IP allowlists). Covers @stacksjs/security and config/security.ts.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Bun >= 1.3.0, TypeScript
|
|
6
|
+
allowed-tools: Read Edit Write Bash Grep Glob
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Stacks Security
|
|
10
|
+
|
|
11
|
+
## Key Paths
|
|
12
|
+
- Core package: `storage/framework/core/security/src/`
|
|
13
|
+
- Security config: `config/security.ts`
|
|
14
|
+
- Hashing config: `config/hashing.ts`
|
|
15
|
+
|
|
16
|
+
## Source Files
|
|
17
|
+
```
|
|
18
|
+
security/src/
|
|
19
|
+
├── index.ts # all exports
|
|
20
|
+
├── key.ts # generateAppKey()
|
|
21
|
+
├── crypt.ts # encrypt/decrypt (AES via APP_KEY)
|
|
22
|
+
└── hash.ts # password hashing (bcrypt/argon2)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## App Key Generation
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import { generateAppKey } from '@stacksjs/security'
|
|
29
|
+
|
|
30
|
+
const key = generateAppKey() // 32-character random string
|
|
31
|
+
// Run via CLI: buddy key:generate
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Encryption / Decryption
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
import { encrypt, decrypt } from '@stacksjs/security'
|
|
38
|
+
|
|
39
|
+
const encrypted = await encrypt('sensitive data') // uses APP_KEY
|
|
40
|
+
const encrypted = await encrypt('data', 'custom-passphrase')
|
|
41
|
+
const decrypted = await decrypt(encrypted)
|
|
42
|
+
const decrypted = await decrypt(encrypted, 'custom-passphrase')
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Password Hashing
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
import { make, check, needsRehash, info, detectAlgorithm } from '@stacksjs/security'
|
|
49
|
+
|
|
50
|
+
// Hash a password
|
|
51
|
+
const hash = await make('password123') // bcrypt (default)
|
|
52
|
+
const hash = await make('password123', { algorithm: 'argon2' })
|
|
53
|
+
const hash = await make('password123', { rounds: 14 }) // bcrypt rounds
|
|
54
|
+
|
|
55
|
+
// Verify
|
|
56
|
+
const valid = await check('password123', hash) // true/false
|
|
57
|
+
|
|
58
|
+
// Check if rehash needed (e.g., after changing rounds)
|
|
59
|
+
const needs = needsRehash(hash, { rounds: 14 })
|
|
60
|
+
|
|
61
|
+
// Inspect hash
|
|
62
|
+
const hashInfo = info(hash) // { algorithm, options }
|
|
63
|
+
const algo = detectAlgorithm(hash) // 'bcrypt' | 'argon2' | 'argon2id' | ...
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Aliases
|
|
67
|
+
- `hashMake` = `make`
|
|
68
|
+
- `hashCheck` = `check`
|
|
69
|
+
- `hashNeedsRehash` = `needsRehash`
|
|
70
|
+
- `hashInfo` = `info`
|
|
71
|
+
- `makeHash` = `make`
|
|
72
|
+
- `verifyHash` = `check`
|
|
73
|
+
|
|
74
|
+
### Algorithm-Specific Functions
|
|
75
|
+
```typescript
|
|
76
|
+
bcryptEncode(value, rounds?) // bcrypt hash
|
|
77
|
+
bcryptVerify(value, hash) // bcrypt verify
|
|
78
|
+
argon2Encode(value, options?) // argon2 hash
|
|
79
|
+
argon2Verify(value, hash) // argon2 verify
|
|
80
|
+
md5Encode(value) // MD5 (legacy only)
|
|
81
|
+
base64Encode(value) // base64
|
|
82
|
+
base64Verify(value, encoded) // base64 compare
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## HashMakeOptions
|
|
86
|
+
```typescript
|
|
87
|
+
interface HashMakeOptions {
|
|
88
|
+
algorithm?: 'bcrypt' | 'argon2' | 'argon2id' | 'argon2i' | 'argon2d'
|
|
89
|
+
rounds?: number // bcrypt (default: 12)
|
|
90
|
+
memory?: number // argon2 (default: 65536)
|
|
91
|
+
time?: number // argon2 (default: 3)
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## config/hashing.ts
|
|
96
|
+
```typescript
|
|
97
|
+
{
|
|
98
|
+
driver: 'bcrypt',
|
|
99
|
+
bcrypt: { rounds: 12 },
|
|
100
|
+
argon2: { memory: 65536, time: 3 }
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## config/security.ts
|
|
105
|
+
```typescript
|
|
106
|
+
{
|
|
107
|
+
firewall: {
|
|
108
|
+
enabled: true,
|
|
109
|
+
countryCodes: [], // block by country
|
|
110
|
+
ipAddresses: {
|
|
111
|
+
allowlist: [],
|
|
112
|
+
blocklist: []
|
|
113
|
+
},
|
|
114
|
+
rateLimitPerMinute: 500,
|
|
115
|
+
useIpReputationLists: true,
|
|
116
|
+
useKnownBadInputsRuleSet: true
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Gotchas
|
|
122
|
+
- Default hashing is bcrypt with 12 rounds — sufficient for most applications
|
|
123
|
+
- `needsRehash()` compares current hash options against provided options — useful after config changes
|
|
124
|
+
- APP_KEY is used for `encrypt()`/`decrypt()` — generate via `buddy key:generate`
|
|
125
|
+
- APP_KEY format is colon-separated (validated during deployment)
|
|
126
|
+
- Argon2 requires more memory/time but is more resistant to GPU attacks
|
|
127
|
+
- `md5Encode()` exists for legacy compatibility only — never use for passwords
|
|
128
|
+
- The firewall config is used by cloud deployment for WAF rules
|
|
129
|
+
- Rate limiting is per-minute per-IP (500 default)
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: stacks-security-audit
|
|
3
|
+
description: Use when performing security analysis on a Stacks application — OWASP Top 10, STRIDE threat modeling, attack surface mapping, dependency audit. Requires concrete exploit scenarios. Invoke with /stacks-security-audit.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: Bun >= 1.3.0, TypeScript
|
|
6
|
+
allowed-tools: Read Edit Write Bash Grep Glob
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# /stacks-security-audit — Security Analysis
|
|
10
|
+
|
|
11
|
+
You are performing a security analysis for a Stacks application. Be concrete — every finding must include a realistic exploit scenario. Vague warnings are worthless.
|
|
12
|
+
|
|
13
|
+
## Determine Scope
|
|
14
|
+
|
|
15
|
+
1. If the user specifies files or a feature, analyze that scope
|
|
16
|
+
2. Otherwise, analyze: API routes (`routes/`), auth flows (`@stacksjs/auth`), middleware, data handling, config/services.ts
|
|
17
|
+
|
|
18
|
+
## Step 1: Attack Surface Map
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
## Attack Surface
|
|
22
|
+
|
|
23
|
+
| Entry Point | Type | Auth Required? | Input Validation |
|
|
24
|
+
|-------------|------|----------------|------------------|
|
|
25
|
+
| [route/handler] | [HTTP/CLI/WebSocket] | [yes/no] | [description] |
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
For Stacks specifically, check:
|
|
29
|
+
- API routes in `routes/api.ts` (136+ routes auto-generated)
|
|
30
|
+
- CLI command handlers via `buddy` (command injection via user args)
|
|
31
|
+
- WebSocket endpoints (`@stacksjs/realtime`)
|
|
32
|
+
- Config file parsing
|
|
33
|
+
- Dev server endpoints (`rpx`, `localtunnels` exposure)
|
|
34
|
+
- Dashboard routes (auth middleware applied?)
|
|
35
|
+
- File upload handling via `EnhancedRequest.file()`
|
|
36
|
+
|
|
37
|
+
## Step 2: OWASP Top 10
|
|
38
|
+
|
|
39
|
+
Evaluate each applicable category. **Only report findings with confidence ≥ 8/10.**
|
|
40
|
+
|
|
41
|
+
For each finding:
|
|
42
|
+
1. **The vulnerability** — file:line reference
|
|
43
|
+
2. **Exploit scenario** — step-by-step
|
|
44
|
+
3. **Impact** — what attacker gains
|
|
45
|
+
4. **Confidence** — 1-10
|
|
46
|
+
5. **Fix** — concrete code change
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
### [OWASP Category]
|
|
50
|
+
|
|
51
|
+
🔴 **[Finding]** (Confidence: [N]/10)
|
|
52
|
+
|
|
53
|
+
**Location**: [file:line]
|
|
54
|
+
**Vulnerability**: [what's wrong]
|
|
55
|
+
|
|
56
|
+
**Exploit scenario**:
|
|
57
|
+
1. Attacker does [X]
|
|
58
|
+
2. System responds with [Y]
|
|
59
|
+
3. Attacker gains [Z]
|
|
60
|
+
|
|
61
|
+
**Impact**: [specific impact]
|
|
62
|
+
**Fix**: [concrete change]
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Stacks-Specific Security Checks
|
|
66
|
+
|
|
67
|
+
- **Auth token handling**: Check `@stacksjs/auth` for token validation, rotation (30d expiry, 7d rotation)
|
|
68
|
+
- **Webhook URLs in `config/services.ts`**: Discord, Slack, Stripe keys — are they properly secured?
|
|
69
|
+
- **ORM injection**: Check if user input flows unsanitized into query builder `.where()` calls
|
|
70
|
+
- **Middleware gaps**: Are admin routes protected by `auth` middleware? Check `routes/api.ts` group middleware
|
|
71
|
+
- **Rate limiting**: Is `throttle` middleware applied to auth endpoints?
|
|
72
|
+
- **Passkey handling**: Check `@stacksjs/auth` passkey credential storage
|
|
73
|
+
- **File uploads**: Check `EnhancedRequest.file()` for path traversal, size limits
|
|
74
|
+
- **Maintenance mode bypass**: Check secret URL mechanism in Maintenance middleware
|
|
75
|
+
|
|
76
|
+
## Step 3: STRIDE Threat Model
|
|
77
|
+
|
|
78
|
+
| Threat | Question | Finding |
|
|
79
|
+
|--------|----------|---------|
|
|
80
|
+
| **Spoofing** | Can someone impersonate a user/service? | |
|
|
81
|
+
| **Tampering** | Can data be modified in transit/rest? | |
|
|
82
|
+
| **Repudiation** | Can actions happen without traces? | |
|
|
83
|
+
| **Information Disclosure** | Can unauthorized data be accessed? | |
|
|
84
|
+
| **Denial of Service** | Can the system be made unavailable? | |
|
|
85
|
+
| **Elevation of Privilege** | Can higher privileges be gained? | |
|
|
86
|
+
|
|
87
|
+
## Step 4: Dependency Audit
|
|
88
|
+
|
|
89
|
+
1. Read `package.json` for direct dependencies
|
|
90
|
+
2. Check for known vulnerabilities
|
|
91
|
+
3. Flag overly permissive version ranges
|
|
92
|
+
4. Check dependencies with filesystem/network/child_process access
|
|
93
|
+
|
|
94
|
+
## Output Format
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
# Security Analysis: [scope]
|
|
98
|
+
|
|
99
|
+
## Attack Surface
|
|
100
|
+
[table]
|
|
101
|
+
|
|
102
|
+
## Critical Findings (Confidence ≥ 8/10)
|
|
103
|
+
[findings sorted by severity]
|
|
104
|
+
|
|
105
|
+
## STRIDE Assessment
|
|
106
|
+
[table]
|
|
107
|
+
|
|
108
|
+
## Dependency Audit
|
|
109
|
+
[findings]
|
|
110
|
+
|
|
111
|
+
## Lower Confidence Observations
|
|
112
|
+
[< 8/10 findings]
|
|
113
|
+
|
|
114
|
+
## Summary
|
|
115
|
+
- Critical findings: [count]
|
|
116
|
+
- Risk: [LOW / MEDIUM / HIGH / CRITICAL]
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Rules
|
|
120
|
+
|
|
121
|
+
- **Concrete exploits only.** "Doesn't validate input" is not a finding. Show the exact exploit.
|
|
122
|
+
- **8/10 confidence threshold.** False positives erode trust.
|
|
123
|
+
- **No theoretical threats.** If the code doesn't handle XML, skip XXE.
|
|
124
|
+
- **Never suggest security-through-obscurity.**
|
|
125
|
+
|
|
126
|
+
## Downstream
|
|
127
|
+
|
|
128
|
+
> **Security analysis complete.** Run `/stacks-review` to verify fixes against these findings.
|