@stacksjs/defaults 0.70.58 → 0.70.60

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.
Files changed (575) hide show
  1. package/app/Actions/AI/AskAction.ts +40 -0
  2. package/app/Actions/AI/SummaryAction.ts +40 -0
  3. package/app/Actions/Auth/AuthUserAction.ts +13 -0
  4. package/app/Actions/Auth/CreateTokenAction.ts +64 -0
  5. package/app/Actions/Auth/DisableTwoFactorAction.ts +37 -0
  6. package/app/Actions/Auth/EnableTwoFactorAction.ts +37 -0
  7. package/app/Actions/Auth/GenerateAuthenticationAction.ts +51 -0
  8. package/app/Actions/Auth/GenerateRegistrationAction.ts +53 -0
  9. package/app/Actions/Auth/GenerateTwoFactorSecretAction.ts +26 -0
  10. package/app/Actions/Auth/ListTokensAction.ts +30 -0
  11. package/app/Actions/Auth/LoginAction.ts +73 -0
  12. package/app/Actions/Auth/LogoutAction.ts +16 -0
  13. package/app/Actions/Auth/LogoutAllAction.ts +28 -0
  14. package/app/Actions/Auth/RefreshTokenAction.ts +39 -0
  15. package/app/Actions/Auth/RegisterAction.ts +57 -0
  16. package/app/Actions/Auth/ResendVerificationAction.ts +24 -0
  17. package/app/Actions/Auth/RevokeTokenAction.ts +43 -0
  18. package/app/Actions/Auth/TestAbilitiesAction.ts +61 -0
  19. package/app/Actions/Auth/VerifyAuthenticationAction.ts +94 -0
  20. package/app/Actions/Auth/VerifyEmailAction.ts +25 -0
  21. package/app/Actions/Auth/VerifyRegistrationAction.ts +59 -0
  22. package/app/Actions/Auth/VerifyTwoFactorLoginAction.ts +57 -0
  23. package/app/Actions/Billable/CheckoutAction.ts +25 -0
  24. package/app/Actions/Buddy/BuddyBrowseAction.ts +34 -0
  25. package/app/Actions/Buddy/BuddyCancelAction.ts +32 -0
  26. package/app/Actions/Buddy/BuddyCommitAction.ts +25 -0
  27. package/app/Actions/Buddy/BuddyGitHubConnectAction.ts +40 -0
  28. package/app/Actions/Buddy/BuddyGitHubDisconnectAction.ts +19 -0
  29. package/app/Actions/Buddy/BuddyProcessAction.ts +65 -0
  30. package/app/Actions/Buddy/BuddyProcessStreamAction.ts +128 -0
  31. package/app/Actions/Buddy/BuddyPushAction.ts +21 -0
  32. package/app/Actions/Buddy/BuddyRepoOpenAction.ts +44 -0
  33. package/app/Actions/Buddy/BuddyRepoValidateAction.ts +35 -0
  34. package/app/Actions/Buddy/BuddySettingsAction.ts +21 -0
  35. package/app/Actions/Buddy/BuddySettingsUpdateAction.ts +46 -0
  36. package/app/Actions/Buddy/BuddyStateAction.ts +28 -0
  37. package/app/Actions/Buddy/BuddyTitleAction.ts +49 -0
  38. package/app/Actions/Buddy/CommandsAction.ts +802 -0
  39. package/app/Actions/Buddy/JobCancelAction.ts +32 -0
  40. package/app/Actions/Buddy/JobRetryAction.ts +49 -0
  41. package/app/Actions/Buddy/JobsListAction.ts +141 -0
  42. package/app/Actions/Buddy/ScheduleListAction.ts +52 -0
  43. package/app/Actions/Buddy/VersionsAction.ts +12 -0
  44. package/app/Actions/Cms/AuthorDestroyAction.ts +21 -0
  45. package/app/Actions/Cms/AuthorIndexAction.ts +14 -0
  46. package/app/Actions/Cms/AuthorShowAction.ts +19 -0
  47. package/app/Actions/Cms/AuthorStoreAction.ts +20 -0
  48. package/app/Actions/Cms/AuthorUpdateAction.ts +24 -0
  49. package/app/Actions/Cms/CategorizableDestroyAction.ts +16 -0
  50. package/app/Actions/Cms/CategorizableIndexAction.ts +14 -0
  51. package/app/Actions/Cms/CategorizableShowAction.ts +16 -0
  52. package/app/Actions/Cms/CategorizableStoreAction.ts +42 -0
  53. package/app/Actions/Cms/CategorizableUpdateAction.ts +38 -0
  54. package/app/Actions/Cms/CommentDestroyAction.ts +16 -0
  55. package/app/Actions/Cms/CommentIndexAction.ts +17 -0
  56. package/app/Actions/Cms/CommentShowAction.ts +16 -0
  57. package/app/Actions/Cms/CommentStoreAction.ts +39 -0
  58. package/app/Actions/Cms/CommentUpdateAction.ts +37 -0
  59. package/app/Actions/Cms/PageDestroyAction.ts +16 -0
  60. package/app/Actions/Cms/PageIndexAction.ts +14 -0
  61. package/app/Actions/Cms/PageStoreAction.ts +31 -0
  62. package/app/Actions/Cms/PageUpdateAction.ts +27 -0
  63. package/app/Actions/Cms/PostDestroyAction.ts +17 -0
  64. package/app/Actions/Cms/PostIndexAction.ts +14 -0
  65. package/app/Actions/Cms/PostShowAction.ts +16 -0
  66. package/app/Actions/Cms/PostStoreAction.ts +37 -0
  67. package/app/Actions/Cms/PostUpdateAction.ts +32 -0
  68. package/app/Actions/Cms/PostViewsUpdateAction.ts +34 -0
  69. package/app/Actions/Cms/RssFeedAction.ts +59 -0
  70. package/app/Actions/Cms/SitemapAction.ts +60 -0
  71. package/app/Actions/Cms/TaggableDestroyAction.ts +16 -0
  72. package/app/Actions/Cms/TaggableIndexAction.ts +14 -0
  73. package/app/Actions/Cms/TaggableShowAction.ts +16 -0
  74. package/app/Actions/Cms/TaggableStoreAction.ts +36 -0
  75. package/app/Actions/Cms/TaggableUpdateAction.ts +37 -0
  76. package/app/Actions/Commerce/CouponDestroyAction.ts +18 -0
  77. package/app/Actions/Commerce/CouponIndexAction.ts +16 -0
  78. package/app/Actions/Commerce/CouponShowAction.ts +18 -0
  79. package/app/Actions/Commerce/CouponStoreAction.ts +21 -0
  80. package/app/Actions/Commerce/CouponUpdateAction.ts +31 -0
  81. package/app/Actions/Commerce/CustomerDestroyAction.ts +16 -0
  82. package/app/Actions/Commerce/CustomerIndexAction.ts +15 -0
  83. package/app/Actions/Commerce/CustomerShowAction.ts +18 -0
  84. package/app/Actions/Commerce/CustomerStoreAction.ts +29 -0
  85. package/app/Actions/Commerce/CustomerUpdateAction.ts +27 -0
  86. package/app/Actions/Commerce/DriverDestroyAction.ts +18 -0
  87. package/app/Actions/Commerce/GiftCardDestroyAction.ts +18 -0
  88. package/app/Actions/Commerce/GiftCardIndexAction.ts +16 -0
  89. package/app/Actions/Commerce/GiftCardShowAction.ts +18 -0
  90. package/app/Actions/Commerce/GiftCardStatsAction.ts +30 -0
  91. package/app/Actions/Commerce/GiftCardStoreAction.ts +35 -0
  92. package/app/Actions/Commerce/GiftCardUpdateAction.ts +26 -0
  93. package/app/Actions/Commerce/GiftCardUpdateBalanceAction.ts +36 -0
  94. package/app/Actions/Commerce/OrderDestroyAction.ts +18 -0
  95. package/app/Actions/Commerce/OrderExportAction.ts +15 -0
  96. package/app/Actions/Commerce/OrderIndexAction.ts +15 -0
  97. package/app/Actions/Commerce/OrderShowAction.ts +18 -0
  98. package/app/Actions/Commerce/OrderStoreAction.ts +32 -0
  99. package/app/Actions/Commerce/OrderUpdateAction.ts +34 -0
  100. package/app/Actions/Commerce/PaymentDestroyAction.ts +16 -0
  101. package/app/Actions/Commerce/PaymentFetchStatsAction.ts +31 -0
  102. package/app/Actions/Commerce/PaymentIndexAction.ts +15 -0
  103. package/app/Actions/Commerce/PaymentMonthlyTrendsAction.ts +21 -0
  104. package/app/Actions/Commerce/PaymentShowAction.ts +17 -0
  105. package/app/Actions/Commerce/PaymentStoreAction.ts +24 -0
  106. package/app/Actions/Commerce/PaymentUpdateAction.ts +35 -0
  107. package/app/Actions/Commerce/PrintDeviceDestroyAction.ts +18 -0
  108. package/app/Actions/Commerce/PrintDeviceIndexAction.ts +14 -0
  109. package/app/Actions/Commerce/PrintDeviceShowAction.ts +17 -0
  110. package/app/Actions/Commerce/PrintDeviceStoreAction.ts +27 -0
  111. package/app/Actions/Commerce/PrintDeviceUpdateAction.ts +27 -0
  112. package/app/Actions/Commerce/Product/ManufacturerDestroyAction.ts +20 -0
  113. package/app/Actions/Commerce/Product/ManufacturerIndexAction.ts +16 -0
  114. package/app/Actions/Commerce/Product/ManufacturerShowAction.ts +18 -0
  115. package/app/Actions/Commerce/Product/ManufacturerStoreAction.ts +14 -0
  116. package/app/Actions/Commerce/Product/ProductCategoryIndexAction.ts +16 -0
  117. package/app/Actions/Commerce/Product/ProductCategoryStoreAction.ts +16 -0
  118. package/app/Actions/Commerce/Product/ProductDestroyAction.ts +16 -0
  119. package/app/Actions/Commerce/Product/ProductIndexAction.ts +14 -0
  120. package/app/Actions/Commerce/Product/ProductManufacturerDestroyAction.ts +18 -0
  121. package/app/Actions/Commerce/Product/ProductManufacturerIndexAction.ts +14 -0
  122. package/app/Actions/Commerce/Product/ProductManufacturerShowAction.ts +16 -0
  123. package/app/Actions/Commerce/Product/ProductManufacturerStoreAction.ts +14 -0
  124. package/app/Actions/Commerce/Product/ProductManufacturerUpdateAction.ts +18 -0
  125. package/app/Actions/Commerce/Product/ProductShowAction.ts +18 -0
  126. package/app/Actions/Commerce/Product/ProductStoreAction.ts +17 -0
  127. package/app/Actions/Commerce/Product/ProductUnitDestroyAction.ts +18 -0
  128. package/app/Actions/Commerce/Product/ProductUnitIndexAction.ts +14 -0
  129. package/app/Actions/Commerce/Product/ProductUnitShowAction.ts +18 -0
  130. package/app/Actions/Commerce/Product/ProductUnitStoreAction.ts +15 -0
  131. package/app/Actions/Commerce/Product/ProductUpdateAction.ts +17 -0
  132. package/app/Actions/Commerce/Product/ProductVariantDestroyAction.ts +18 -0
  133. package/app/Actions/Commerce/Product/ProductVariantIndexAction.ts +14 -0
  134. package/app/Actions/Commerce/Product/ProductVariantShowAction.ts +17 -0
  135. package/app/Actions/Commerce/Product/ProductVariantStoreAction.ts +14 -0
  136. package/app/Actions/Commerce/Product/ProductVariantUpdateAction.ts +16 -0
  137. package/app/Actions/Commerce/ReceiptDestroyAction.ts +18 -0
  138. package/app/Actions/Commerce/ReceiptIndexAction.ts +14 -0
  139. package/app/Actions/Commerce/ReceiptShowAction.ts +18 -0
  140. package/app/Actions/Commerce/ReceiptStoreAction.ts +28 -0
  141. package/app/Actions/Commerce/ReceiptUpdateAction.ts +30 -0
  142. package/app/Actions/Commerce/ReviewIndexAction.ts +14 -0
  143. package/app/Actions/Commerce/ReviewShowAction.ts +16 -0
  144. package/app/Actions/Commerce/ReviewStoreAction.ts +26 -0
  145. package/app/Actions/Commerce/ReviewUpdateAction.ts +28 -0
  146. package/app/Actions/Commerce/Shipping/DeliveryRouteDestroyAction.ts +18 -0
  147. package/app/Actions/Commerce/Shipping/DeliveryRouteIndexAction.ts +16 -0
  148. package/app/Actions/Commerce/Shipping/DeliveryRouteShowAction.ts +18 -0
  149. package/app/Actions/Commerce/Shipping/DeliveryRouteStoreAction.ts +16 -0
  150. package/app/Actions/Commerce/Shipping/DeliveryRouteUpdateAction.ts +18 -0
  151. package/app/Actions/Commerce/Shipping/DigitalDeliveryDestroyAction.ts +18 -0
  152. package/app/Actions/Commerce/Shipping/DigitalDeliveryIndexAction.ts +16 -0
  153. package/app/Actions/Commerce/Shipping/DigitalDeliveryShowAction.ts +18 -0
  154. package/app/Actions/Commerce/Shipping/DigitalDeliveryStoreAction.ts +18 -0
  155. package/app/Actions/Commerce/Shipping/DigitalDeliveryUpdateAction.ts +18 -0
  156. package/app/Actions/Commerce/Shipping/DriverIndexAction.ts +16 -0
  157. package/app/Actions/Commerce/Shipping/DriverShowAction.ts +18 -0
  158. package/app/Actions/Commerce/Shipping/DriverStoreAction.ts +16 -0
  159. package/app/Actions/Commerce/Shipping/DriverUpdateAction.ts +18 -0
  160. package/app/Actions/Commerce/Shipping/LicenseKeyDestroyAction.ts +20 -0
  161. package/app/Actions/Commerce/Shipping/LicenseKeyIndexAction.ts +16 -0
  162. package/app/Actions/Commerce/Shipping/LicenseKeyShowAction.ts +18 -0
  163. package/app/Actions/Commerce/Shipping/LicenseKeyStoreAction.ts +18 -0
  164. package/app/Actions/Commerce/Shipping/LicenseKeyUpdateAction.ts +18 -0
  165. package/app/Actions/Commerce/Shipping/ShippingMethodDestroyAction.ts +16 -0
  166. package/app/Actions/Commerce/Shipping/ShippingMethodIndexAction.ts +14 -0
  167. package/app/Actions/Commerce/Shipping/ShippingMethodShowAction.ts +16 -0
  168. package/app/Actions/Commerce/Shipping/ShippingMethodStoreAction.ts +16 -0
  169. package/app/Actions/Commerce/Shipping/ShippingMethodUpdateAction.ts +15 -0
  170. package/app/Actions/Commerce/Shipping/ShippingRateDestroyAction.ts +16 -0
  171. package/app/Actions/Commerce/Shipping/ShippingRateIndexAction.ts +14 -0
  172. package/app/Actions/Commerce/Shipping/ShippingRateShowAction.ts +16 -0
  173. package/app/Actions/Commerce/Shipping/ShippingRateStoreAction.ts +16 -0
  174. package/app/Actions/Commerce/Shipping/ShippingRateUpdateAction.ts +17 -0
  175. package/app/Actions/Commerce/Shipping/ShippingZoneDestroyAction.ts +16 -0
  176. package/app/Actions/Commerce/Shipping/ShippingZoneIndexAction.ts +14 -0
  177. package/app/Actions/Commerce/Shipping/ShippingZoneShowAction.ts +16 -0
  178. package/app/Actions/Commerce/Shipping/ShippingZoneStoreAction.ts +16 -0
  179. package/app/Actions/Commerce/Shipping/ShippingZoneUpdateAction.ts +15 -0
  180. package/app/Actions/Commerce/TaxRateDestroyAction.ts +16 -0
  181. package/app/Actions/Commerce/TaxRateIndexAction.ts +14 -0
  182. package/app/Actions/Commerce/TaxRateShowAction.ts +17 -0
  183. package/app/Actions/Commerce/TaxRateStoreAction.ts +24 -0
  184. package/app/Actions/Commerce/TaxRateUpdateAction.ts +24 -0
  185. package/app/Actions/Commerce/WaitlistProductAnalyticsAction.ts +29 -0
  186. package/app/Actions/Commerce/WaitlistProductDestroyAction.ts +16 -0
  187. package/app/Actions/Commerce/WaitlistProductIndexAction.ts +14 -0
  188. package/app/Actions/Commerce/WaitlistProductQuantityDistributionAction.ts +32 -0
  189. package/app/Actions/Commerce/WaitlistProductShowAction.ts +16 -0
  190. package/app/Actions/Commerce/WaitlistProductStatusAction.ts +37 -0
  191. package/app/Actions/Commerce/WaitlistProductStoreAction.ts +27 -0
  192. package/app/Actions/Commerce/WaitlistProductTimeSeriesAction.ts +25 -0
  193. package/app/Actions/Commerce/WaitlistProductUpdateAction.ts +29 -0
  194. package/app/Actions/Commerce/WaitlistRestaurantDashboardAction.ts +29 -0
  195. package/app/Actions/Commerce/WaitlistRestaurantDestroyAction.ts +16 -0
  196. package/app/Actions/Commerce/WaitlistRestaurantIndexAction.ts +14 -0
  197. package/app/Actions/Commerce/WaitlistRestaurantShowAction.ts +16 -0
  198. package/app/Actions/Commerce/WaitlistRestaurantStoreAction.ts +31 -0
  199. package/app/Actions/Commerce/WaitlistRestaurantUpdateAction.ts +33 -0
  200. package/app/Actions/ContactAction.ts +72 -0
  201. package/app/Actions/Dashboard/Actions/CreateAction.ts +11 -0
  202. package/app/Actions/Dashboard/Actions/GetActionCount.ts +12 -0
  203. package/app/Actions/Dashboard/Actions/GetActions.ts +19 -0
  204. package/app/Actions/Dashboard/Analytics/BlogAnalyticsAction.ts +58 -0
  205. package/app/Actions/Dashboard/Analytics/BrowserAnalyticsAction.ts +42 -0
  206. package/app/Actions/Dashboard/Analytics/CommerceAnalyticsAction.ts +64 -0
  207. package/app/Actions/Dashboard/Analytics/CountryAnalyticsAction.ts +41 -0
  208. package/app/Actions/Dashboard/Analytics/DeviceAnalyticsAction.ts +58 -0
  209. package/app/Actions/Dashboard/Analytics/EventAnalyticsAction.ts +90 -0
  210. package/app/Actions/Dashboard/Analytics/MarketingAnalyticsAction.ts +76 -0
  211. package/app/Actions/Dashboard/Analytics/PageAnalyticsAction.ts +45 -0
  212. package/app/Actions/Dashboard/Analytics/ReferrerAnalyticsAction.ts +72 -0
  213. package/app/Actions/Dashboard/Analytics/SalesAnalyticsAction.ts +73 -0
  214. package/app/Actions/Dashboard/Analytics/WebAnalyticsAction.ts +114 -0
  215. package/app/Actions/Dashboard/Auth/MeAction.ts +84 -0
  216. package/app/Actions/Dashboard/BuddyDashboardAction.ts +34 -0
  217. package/app/Actions/Dashboard/Ci/RepoRunJobsAction.ts +60 -0
  218. package/app/Actions/Dashboard/Ci/RepoRunsAction.ts +67 -0
  219. package/app/Actions/Dashboard/Ci/RunnerHistoryAction.ts +58 -0
  220. package/app/Actions/Dashboard/Ci/StatusAction.ts +73 -0
  221. package/app/Actions/Dashboard/Ci/failure-notifier.ts +214 -0
  222. package/app/Actions/Dashboard/Ci/runner-pressure-monitor.ts +259 -0
  223. package/app/Actions/Dashboard/Cloud/CloudIndexAction.ts +61 -0
  224. package/app/Actions/Dashboard/Commands/CreateCommand.ts +11 -0
  225. package/app/Actions/Dashboard/Commands/GetAverageCommandTime.ts +12 -0
  226. package/app/Actions/Dashboard/Commands/GetCommandCount.ts +12 -0
  227. package/app/Actions/Dashboard/Commands/GetCommandSuccessRate.ts +12 -0
  228. package/app/Actions/Dashboard/Commands/GetCommands.ts +12 -0
  229. package/app/Actions/Dashboard/Commerce/CommerceCouponsAction.ts +48 -0
  230. package/app/Actions/Dashboard/Commerce/CommerceCustomersAction.ts +48 -0
  231. package/app/Actions/Dashboard/Commerce/CommerceDashboardAction.ts +98 -0
  232. package/app/Actions/Dashboard/Commerce/CommerceDeliveryAction.ts +65 -0
  233. package/app/Actions/Dashboard/Commerce/CommerceGiftCardsAction.ts +48 -0
  234. package/app/Actions/Dashboard/Commerce/CommerceOrdersAction.ts +51 -0
  235. package/app/Actions/Dashboard/Commerce/CommercePaymentsAction.ts +59 -0
  236. package/app/Actions/Dashboard/Commerce/CommerceProductsAction.ts +50 -0
  237. package/app/Actions/Dashboard/Commerce/CommerceTaxesAction.ts +46 -0
  238. package/app/Actions/Dashboard/Commerce/PosIndexAction.ts +57 -0
  239. package/app/Actions/Dashboard/Commerce/ReviewIndexAction.ts +51 -0
  240. package/app/Actions/Dashboard/Content/AuthorIndexAction.ts +51 -0
  241. package/app/Actions/Dashboard/Content/CategoryIndexAction.ts +27 -0
  242. package/app/Actions/Dashboard/Content/CommentIndexAction.ts +41 -0
  243. package/app/Actions/Dashboard/Content/ContentDashboardAction.ts +54 -0
  244. package/app/Actions/Dashboard/Content/FileIndexAction.ts +24 -0
  245. package/app/Actions/Dashboard/Content/PageIndexAction.ts +25 -0
  246. package/app/Actions/Dashboard/Content/PostIndexAction.ts +102 -0
  247. package/app/Actions/Dashboard/Content/SeoIndexAction.ts +17 -0
  248. package/app/Actions/Dashboard/Content/TagIndexAction.ts +23 -0
  249. package/app/Actions/Dashboard/CreateDnsRecords.ts +11 -0
  250. package/app/Actions/Dashboard/CreateMailbox.ts +11 -0
  251. package/app/Actions/Dashboard/DashboardActivityAction.ts +58 -0
  252. package/app/Actions/Dashboard/DashboardHealthAction.ts +52 -0
  253. package/app/Actions/Dashboard/DashboardHomeAction.ts +83 -0
  254. package/app/Actions/Dashboard/DashboardStatsAction.ts +48 -0
  255. package/app/Actions/Dashboard/Data/AccessTokenIndexAction.ts +65 -0
  256. package/app/Actions/Dashboard/Data/ActivityIndexAction.ts +28 -0
  257. package/app/Actions/Dashboard/Data/DataDashboardAction.ts +67 -0
  258. package/app/Actions/Dashboard/Data/SubscriberIndexAction.ts +48 -0
  259. package/app/Actions/Dashboard/Data/TeamIndexAction.ts +43 -0
  260. package/app/Actions/Dashboard/Data/UserIndexAction.ts +48 -0
  261. package/app/Actions/Dashboard/Deployments/CreateDeployment.ts +11 -0
  262. package/app/Actions/Dashboard/Deployments/GetAverageDeploymentTime.ts +15 -0
  263. package/app/Actions/Dashboard/Deployments/GetDeployScript.ts +12 -0
  264. package/app/Actions/Dashboard/Deployments/GetDeploymentCount.ts +12 -0
  265. package/app/Actions/Dashboard/Deployments/GetDeploymentLiveTerminalOutput.ts +12 -0
  266. package/app/Actions/Dashboard/Deployments/GetDeployments.ts +20 -0
  267. package/app/Actions/Dashboard/Deployments/GetRecentDeployments.ts +12 -0
  268. package/app/Actions/Dashboard/Deployments/UpdateDeployScript.ts +11 -0
  269. package/app/Actions/Dashboard/GetDnsRecords.ts +12 -0
  270. package/app/Actions/Dashboard/GetEmailInboxes.ts +12 -0
  271. package/app/Actions/Dashboard/GetProjects.ts +13 -0
  272. package/app/Actions/Dashboard/GetRecentCommits.ts +13 -0
  273. package/app/Actions/Dashboard/Inbox/InboxIndexAction.ts +144 -0
  274. package/app/Actions/Dashboard/Inbox/InboxShowAction.ts +89 -0
  275. package/app/Actions/Dashboard/Infrastructure/CommandIndexAction.ts +18 -0
  276. package/app/Actions/Dashboard/Infrastructure/DnsIndexAction.ts +101 -0
  277. package/app/Actions/Dashboard/Infrastructure/EnvironmentIndexAction.ts +67 -0
  278. package/app/Actions/Dashboard/Infrastructure/InsightsAction.ts +29 -0
  279. package/app/Actions/Dashboard/Infrastructure/LogIndexAction.ts +50 -0
  280. package/app/Actions/Dashboard/Infrastructure/MailboxIndexAction.ts +85 -0
  281. package/app/Actions/Dashboard/Infrastructure/PermissionIndexAction.ts +54 -0
  282. package/app/Actions/Dashboard/Infrastructure/RequestIndexAction.ts +44 -0
  283. package/app/Actions/Dashboard/Infrastructure/ServerIndexAction.ts +101 -0
  284. package/app/Actions/Dashboard/Jobs/CreateJob.ts +11 -0
  285. package/app/Actions/Dashboard/Jobs/GetAverageJobTime.ts +12 -0
  286. package/app/Actions/Dashboard/Jobs/GetJobHistory.ts +12 -0
  287. package/app/Actions/Dashboard/Jobs/GetJobs.ts +11 -0
  288. package/app/Actions/Dashboard/Jobs/GetJobsPerMinute.ts +12 -0
  289. package/app/Actions/Dashboard/Jobs/JobIndexAction.ts +136 -0
  290. package/app/Actions/Dashboard/Jobs/JobRetryAction.ts +23 -0
  291. package/app/Actions/Dashboard/Jobs/JobStatsAction.ts +49 -0
  292. package/app/Actions/Dashboard/Kanban/BoardDestroyAction.ts +84 -0
  293. package/app/Actions/Dashboard/Kanban/BoardShowAction.ts +215 -0
  294. package/app/Actions/Dashboard/Kanban/BoardStoreAction.ts +98 -0
  295. package/app/Actions/Dashboard/Kanban/BoardUpdateAction.ts +96 -0
  296. package/app/Actions/Dashboard/Kanban/BoardsIndexAction.ts +81 -0
  297. package/app/Actions/Dashboard/Kanban/BoardsReorderAction.ts +80 -0
  298. package/app/Actions/Dashboard/Kanban/CardAssigneesSyncAction.ts +103 -0
  299. package/app/Actions/Dashboard/Kanban/CardCommentDestroyAction.ts +33 -0
  300. package/app/Actions/Dashboard/Kanban/CardCommentStoreAction.ts +82 -0
  301. package/app/Actions/Dashboard/Kanban/CardDestroyAction.ts +48 -0
  302. package/app/Actions/Dashboard/Kanban/CardLabelsSyncAction.ts +103 -0
  303. package/app/Actions/Dashboard/Kanban/CardShowAction.ts +122 -0
  304. package/app/Actions/Dashboard/Kanban/CardStoreAction.ts +112 -0
  305. package/app/Actions/Dashboard/Kanban/CardUpdateAction.ts +91 -0
  306. package/app/Actions/Dashboard/Kanban/CardsReorderAction.ts +148 -0
  307. package/app/Actions/Dashboard/Kanban/ColumnDestroyAction.ts +59 -0
  308. package/app/Actions/Dashboard/Kanban/ColumnStoreAction.ts +94 -0
  309. package/app/Actions/Dashboard/Kanban/ColumnUpdateAction.ts +89 -0
  310. package/app/Actions/Dashboard/Kanban/ColumnsReorderAction.ts +85 -0
  311. package/app/Actions/Dashboard/Kanban/LabelDestroyAction.ts +41 -0
  312. package/app/Actions/Dashboard/Kanban/LabelStoreAction.ts +70 -0
  313. package/app/Actions/Dashboard/Kanban/LabelUpdateAction.ts +83 -0
  314. package/app/Actions/Dashboard/Kanban/UsersListAction.ts +36 -0
  315. package/app/Actions/Dashboard/Library/CreateComponent.ts +11 -0
  316. package/app/Actions/Dashboard/Library/CreateFunction.ts +11 -0
  317. package/app/Actions/Dashboard/Library/DependencyIndexAction.ts +92 -0
  318. package/app/Actions/Dashboard/Library/GetAverageReleaseTime.ts +12 -0
  319. package/app/Actions/Dashboard/Library/GetComponents.ts +24 -0
  320. package/app/Actions/Dashboard/Library/GetComponentsDownloadCount.ts +12 -0
  321. package/app/Actions/Dashboard/Library/GetDownloadCount.ts +12 -0
  322. package/app/Actions/Dashboard/Library/GetFunctions.ts +22 -0
  323. package/app/Actions/Dashboard/Library/GetFunctionsDownloadCount.ts +12 -0
  324. package/app/Actions/Dashboard/Library/GetReleaseCount.ts +12 -0
  325. package/app/Actions/Dashboard/Library/GetReleases.ts +28 -0
  326. package/app/Actions/Dashboard/Library/PackageIndexAction.ts +26 -0
  327. package/app/Actions/Dashboard/Marketing/CampaignIndexAction.ts +45 -0
  328. package/app/Actions/Dashboard/Marketing/ListIndexAction.ts +43 -0
  329. package/app/Actions/Dashboard/Marketing/SocialPostIndexAction.ts +47 -0
  330. package/app/Actions/Dashboard/Models/GetModels.ts +39 -0
  331. package/app/Actions/Dashboard/Models/GetSubscriberCount.ts +12 -0
  332. package/app/Actions/Dashboard/Models/GetUserCount.ts +12 -0
  333. package/app/Actions/Dashboard/Models/ModelShowAction.ts +131 -0
  334. package/app/Actions/Dashboard/Models/ModelsIndexAction.ts +169 -0
  335. package/app/Actions/Dashboard/Notifications/CreateNotification.ts +11 -0
  336. package/app/Actions/Dashboard/Notifications/GetAverageNotificationTime.ts +12 -0
  337. package/app/Actions/Dashboard/Notifications/GetNotificationCount.ts +12 -0
  338. package/app/Actions/Dashboard/Notifications/GetNotificationDeliveryRate.ts +12 -0
  339. package/app/Actions/Dashboard/Notifications/GetNotificationHistory.ts +12 -0
  340. package/app/Actions/Dashboard/Notifications/GetNotifications.ts +12 -0
  341. package/app/Actions/Dashboard/Notifications/NotificationDashboardAction.ts +43 -0
  342. package/app/Actions/Dashboard/Queries/QueryIndexAction.ts +22 -0
  343. package/app/Actions/Dashboard/Queue/QueueRetryFailedAction.ts +22 -0
  344. package/app/Actions/Dashboard/Queue/QueueStatsAction.ts +98 -0
  345. package/app/Actions/Dashboard/Queue/QueueWorkersAction.ts +46 -0
  346. package/app/Actions/Dashboard/Rbac/PermissionDestroyAction.ts +33 -0
  347. package/app/Actions/Dashboard/Rbac/PermissionStoreAction.ts +53 -0
  348. package/app/Actions/Dashboard/Rbac/PermissionsIndexAction.ts +34 -0
  349. package/app/Actions/Dashboard/Rbac/RoleDestroyAction.ts +35 -0
  350. package/app/Actions/Dashboard/Rbac/RolePermissionsShowAction.ts +45 -0
  351. package/app/Actions/Dashboard/Rbac/RolePermissionsSyncAction.ts +63 -0
  352. package/app/Actions/Dashboard/Rbac/RoleStoreAction.ts +58 -0
  353. package/app/Actions/Dashboard/Rbac/RolesIndexAction.ts +36 -0
  354. package/app/Actions/Dashboard/Rbac/UserRolesShowAction.ts +40 -0
  355. package/app/Actions/Dashboard/Rbac/UserRolesSyncAction.ts +65 -0
  356. package/app/Actions/Dashboard/Rbac/UsersListAction.ts +39 -0
  357. package/app/Actions/Dashboard/Realtime/RealtimeStatsAction.ts +50 -0
  358. package/app/Actions/Dashboard/Releases/ReleaseIndexAction.ts +21 -0
  359. package/app/Actions/Dashboard/Requests/GetAverageRequestTime.ts +12 -0
  360. package/app/Actions/Dashboard/Requests/GetRequestCount.ts +12 -0
  361. package/app/Actions/Dashboard/Requests/GetRequestSuccessRate.ts +12 -0
  362. package/app/Actions/Dashboard/Requests/GetRequests.ts +12 -0
  363. package/app/Actions/Dashboard/Search/GlobalSearchAction.ts +26 -0
  364. package/app/Actions/Dashboard/ServiceHealthAction.ts +243 -0
  365. package/app/Actions/Dashboard/Settings/MailSettingsGetAction.ts +20 -0
  366. package/app/Actions/Dashboard/Settings/MailSettingsUpdateAction.ts +10 -0
  367. package/app/Actions/Dashboard/Settings/SettingsIndexAction.ts +40 -0
  368. package/app/Actions/Dashboard/Settings/UpdateAiConfig.ts +27 -0
  369. package/app/Actions/Dashboard/Settings/UpdateAnalyticsConfig.ts +38 -0
  370. package/app/Actions/Dashboard/Settings/UpdateAppConfig.ts +38 -0
  371. package/app/Actions/Dashboard/Settings/UpdateCacheConfig.ts +11 -0
  372. package/app/Actions/Dashboard/Settings/UpdateCliConfig.ts +11 -0
  373. package/app/Actions/Dashboard/Settings/UpdateCloudConfig.ts +38 -0
  374. package/app/Actions/Dashboard/Settings/UpdateDatabaseConfig.ts +38 -0
  375. package/app/Actions/Dashboard/Settings/UpdateDnsConfig.ts +38 -0
  376. package/app/Actions/Dashboard/Settings/UpdateDocsConfig.ts +11 -0
  377. package/app/Actions/Dashboard/Settings/UpdateEmailConfig.ts +38 -0
  378. package/app/Actions/Dashboard/Settings/UpdateEnvConfig.ts +11 -0
  379. package/app/Actions/Dashboard/Settings/UpdateErrorsConfig.ts +11 -0
  380. package/app/Actions/Dashboard/Settings/UpdateFileSystemsConfig.ts +11 -0
  381. package/app/Actions/Dashboard/Settings/UpdateGitConfig.ts +11 -0
  382. package/app/Actions/Dashboard/Settings/UpdateHashingConfig.ts +11 -0
  383. package/app/Actions/Dashboard/Settings/UpdateLibraryConfig.ts +11 -0
  384. package/app/Actions/Dashboard/Settings/UpdateLoggerConfig.ts +11 -0
  385. package/app/Actions/Dashboard/Settings/UpdateNotificationConfig.ts +11 -0
  386. package/app/Actions/Dashboard/Settings/UpdatePaymentConfig.ts +11 -0
  387. package/app/Actions/Dashboard/Settings/UpdatePortsConfig.ts +38 -0
  388. package/app/Actions/Dashboard/Settings/UpdateQueueConfig.ts +11 -0
  389. package/app/Actions/Dashboard/Settings/UpdateSearchEngineConfig.ts +11 -0
  390. package/app/Actions/Dashboard/Settings/UpdateSecurityConfig.ts +38 -0
  391. package/app/Actions/Dashboard/Settings/UpdateServicesConfig.ts +38 -0
  392. package/app/Actions/Dashboard/Settings/UpdateStorageConfig.ts +11 -0
  393. package/app/Actions/Dashboard/Settings/UpdateTeamConfig.ts +11 -0
  394. package/app/Actions/Dashboard/Settings/UpdateUiConfig.ts +11 -0
  395. package/app/Actions/HealthAction.ts +112 -0
  396. package/app/Actions/InstallAction.ts +83 -0
  397. package/app/Actions/Locale/SetLocaleAction.ts +51 -0
  398. package/app/Actions/LogAction.ts +42 -0
  399. package/app/Actions/Logs/LogFetchStatsAction.ts +50 -0
  400. package/app/Actions/Logs/LogIndexOrmAction.ts +13 -0
  401. package/app/Actions/Logs/LogShowOrmAction.ts +17 -0
  402. package/app/Actions/Logs/LogStoreOrmAction.ts +16 -0
  403. package/app/Actions/Logs/LogUpdateOrmAction.ts +20 -0
  404. package/app/Actions/Monitoring/ErrorDestroyAction.ts +25 -0
  405. package/app/Actions/Monitoring/ErrorGroupAction.ts +21 -0
  406. package/app/Actions/Monitoring/ErrorIgnoreAction.ts +25 -0
  407. package/app/Actions/Monitoring/ErrorIndexAction.ts +14 -0
  408. package/app/Actions/Monitoring/ErrorResolveAction.ts +25 -0
  409. package/app/Actions/Monitoring/ErrorShowAction.ts +19 -0
  410. package/app/Actions/Monitoring/ErrorStatsAction.ts +14 -0
  411. package/app/Actions/Monitoring/ErrorTimelineAction.ts +14 -0
  412. package/app/Actions/Monitoring/ErrorUnresolveAction.ts +25 -0
  413. package/app/Actions/NotifyUser.ts +10 -0
  414. package/app/Actions/Password/PasswordResetAction.ts +54 -0
  415. package/app/Actions/Password/SendPasswordResetEmailAction.ts +66 -0
  416. package/app/Actions/Password/VerifyResetTokenAction.ts +27 -0
  417. package/app/Actions/Payment/CancelSubscriptionAction.ts +20 -0
  418. package/app/Actions/Payment/CreateCheckoutAction.ts +28 -0
  419. package/app/Actions/Payment/CreateInvoiceSubscription.ts +18 -0
  420. package/app/Actions/Payment/CreatePaymentIntentAction.ts +31 -0
  421. package/app/Actions/Payment/CreateSetupIntentAction.ts +20 -0
  422. package/app/Actions/Payment/CreateSubscriptionAction.ts +23 -0
  423. package/app/Actions/Payment/DeleteDefaultPaymentAction.ts +18 -0
  424. package/app/Actions/Payment/FetchActiveSubscriptionAction.ts +18 -0
  425. package/app/Actions/Payment/FetchDefaultPaymentMethodAction.ts +18 -0
  426. package/app/Actions/Payment/FetchPaymentCustomerAction.ts +18 -0
  427. package/app/Actions/Payment/FetchPaymentMethodsAction.ts +18 -0
  428. package/app/Actions/Payment/FetchProductAction.ts +15 -0
  429. package/app/Actions/Payment/FetchTransactionHistoryAction.ts +18 -0
  430. package/app/Actions/Payment/FetchUserSubscriptionsAction.ts +18 -0
  431. package/app/Actions/Payment/SetDefaultPaymentAction.ts +20 -0
  432. package/app/Actions/Payment/SetUserDefaultPaymentAction.ts +20 -0
  433. package/app/Actions/Payment/StorePaymentMethodAction.ts +20 -0
  434. package/app/Actions/Payment/StoreTransactionAction.ts +20 -0
  435. package/app/Actions/Payment/UpdateCustomerAction.ts +24 -0
  436. package/app/Actions/Payment/UpdateDefaultPaymentMethodAction.ts +18 -0
  437. package/app/Actions/Payment/UpdateSubscriptionAction.ts +22 -0
  438. package/app/Actions/Queue/FetchQueuesAction.ts +14 -0
  439. package/app/Actions/README.md +61 -0
  440. package/app/Actions/Realtime/FetchWebsocketsAction.ts +14 -0
  441. package/app/Actions/RobotsAction.ts +61 -0
  442. package/app/Actions/SendWelcomeEmail.ts +40 -0
  443. package/app/Actions/SitemapAction.ts +234 -0
  444. package/app/Actions/Storefront/AddToCartAction.ts +153 -0
  445. package/app/Actions/Storefront/CheckoutContactAction.ts +50 -0
  446. package/app/Actions/Storefront/CheckoutShippingAction.ts +61 -0
  447. package/app/Actions/Storefront/GetCartAction.ts +58 -0
  448. package/app/Actions/Storefront/PlaceOrderAction.ts +195 -0
  449. package/app/Actions/Storefront/SubmitReviewAction.ts +140 -0
  450. package/app/Actions/Storefront/UpdateCartItemAction.ts +83 -0
  451. package/app/Actions/Storefront/_shipping.ts +64 -0
  452. package/app/Actions/SubscriberEmailAction.ts +60 -0
  453. package/app/Actions/TestErrorAction.ts +163 -0
  454. package/app/Actions/UnsubscribeAction.ts +107 -0
  455. package/app/Actions/UploadTestAction.ts +57 -0
  456. package/app/Broadcasts/OrderShipped.ts +57 -0
  457. package/app/Commands/Inspire.ts +57 -0
  458. package/app/Commands/README.md +84 -0
  459. package/app/Commands.ts +38 -0
  460. package/app/Controllers/ComingSoonController.ts +9 -0
  461. package/app/Controllers/QueryController.ts +373 -0
  462. package/app/Events.ts +14 -0
  463. package/app/Gates.ts +107 -0
  464. package/app/Jobs/ExampleJob.ts +20 -0
  465. package/app/Jobs/ExampleTwoJob.ts +12 -0
  466. package/app/Jobs/PruneModelsJob.ts +61 -0
  467. package/app/Jobs/PruneQueryLogsJob.ts +51 -0
  468. package/app/Jobs/README.md +79 -0
  469. package/app/Jobs/SendCampaignJob.ts +201 -0
  470. package/app/Jobs/SendEmailJob.ts +52 -0
  471. package/app/Jobs/SendPasswordResetEmailJob.ts +44 -0
  472. package/app/Jobs/SyncSearchIndexJob.ts +64 -0
  473. package/app/Listener.ts +84 -0
  474. package/app/Listeners/Console.ts +22 -0
  475. package/app/Listeners/README.md +47 -0
  476. package/app/Mail/OrderConfirmation.ts +60 -0
  477. package/app/Mail/SubscriptionConfirmation.ts +41 -0
  478. package/app/Middleware/Abilities.ts +53 -0
  479. package/app/Middleware/Api.ts +26 -0
  480. package/app/Middleware/Auth.ts +59 -0
  481. package/app/Middleware/Can.ts +68 -0
  482. package/app/Middleware/Compress.ts +213 -0
  483. package/app/Middleware/Cors.ts +320 -0
  484. package/app/Middleware/Csrf.ts +224 -0
  485. package/app/Middleware/EnsureEmailIsVerified.ts +28 -0
  486. package/app/Middleware/Env.ts +24 -0
  487. package/app/Middleware/EnvDevelopment.ts +19 -0
  488. package/app/Middleware/EnvLocal.ts +19 -0
  489. package/app/Middleware/EnvNotDevelopment.ts +19 -0
  490. package/app/Middleware/EnvNotLocal.ts +19 -0
  491. package/app/Middleware/EnvNotProduction.ts +19 -0
  492. package/app/Middleware/EnvNotStaging.ts +19 -0
  493. package/app/Middleware/EnvProduction.ts +19 -0
  494. package/app/Middleware/EnvStaging.ts +19 -0
  495. package/app/Middleware/Guest.ts +25 -0
  496. package/app/Middleware/Logger.ts +20 -0
  497. package/app/Middleware/Maintenance.ts +36 -0
  498. package/app/Middleware/Permission.ts +42 -0
  499. package/app/Middleware/README.md +48 -0
  500. package/app/Middleware/Role.ts +42 -0
  501. package/app/Middleware/Signed.ts +31 -0
  502. package/app/Middleware/Team.ts +36 -0
  503. package/app/Middleware/Throttle.ts +96 -0
  504. package/app/Middleware.ts +35 -0
  505. package/app/Models/Activity.ts +94 -0
  506. package/app/Models/Board.ts +103 -0
  507. package/app/Models/BoardColumn.ts +87 -0
  508. package/app/Models/Campaign.ts +239 -0
  509. package/app/Models/CampaignSend.ts +107 -0
  510. package/app/Models/Card.ts +117 -0
  511. package/app/Models/CardComment.ts +68 -0
  512. package/app/Models/Comment.ts +108 -0
  513. package/app/Models/Content/Author.ts +104 -0
  514. package/app/Models/Content/Page.ts +99 -0
  515. package/app/Models/Content/Post.ts +144 -0
  516. package/app/Models/Deployment.ts +116 -0
  517. package/app/Models/EmailList.ts +126 -0
  518. package/app/Models/EmailListSubscriber.ts +91 -0
  519. package/app/Models/Error.ts +70 -0
  520. package/app/Models/FailedJob.ts +62 -0
  521. package/app/Models/Job.ts +63 -0
  522. package/app/Models/Label.ts +66 -0
  523. package/app/Models/Log.ts +110 -0
  524. package/app/Models/Notification.ts +118 -0
  525. package/app/Models/PaymentMethod.ts +98 -0
  526. package/app/Models/PaymentProduct.ts +91 -0
  527. package/app/Models/PaymentTransaction.ts +78 -0
  528. package/app/Models/README.md +31 -0
  529. package/app/Models/Release.ts +89 -0
  530. package/app/Models/Request.ts +114 -0
  531. package/app/Models/SocialPost.ts +136 -0
  532. package/app/Models/Subscriber.ts +89 -0
  533. package/app/Models/SubscriberEmail.ts +55 -0
  534. package/app/Models/Subscription.ts +153 -0
  535. package/app/Models/Tag.ts +82 -0
  536. package/app/Models/Team.ts +72 -0
  537. package/app/Models/User.ts +134 -0
  538. package/app/Models/commerce/Cart.ts +139 -0
  539. package/app/Models/commerce/CartItem.ts +137 -0
  540. package/app/Models/commerce/Category.ts +105 -0
  541. package/app/Models/commerce/Coupon.ts +181 -0
  542. package/app/Models/commerce/Customer.ts +132 -0
  543. package/app/Models/commerce/DeliveryRoute.ts +93 -0
  544. package/app/Models/commerce/DigitalDelivery.ts +105 -0
  545. package/app/Models/commerce/Driver.ts +97 -0
  546. package/app/Models/commerce/GiftCard.ts +191 -0
  547. package/app/Models/commerce/LicenseKey.ts +87 -0
  548. package/app/Models/commerce/LoyaltyPoint.ts +107 -0
  549. package/app/Models/commerce/LoyaltyReward.ts +124 -0
  550. package/app/Models/commerce/Manufacturer.ts +84 -0
  551. package/app/Models/commerce/Order.ts +142 -0
  552. package/app/Models/commerce/OrderItem.ts +51 -0
  553. package/app/Models/commerce/Payment.ts +163 -0
  554. package/app/Models/commerce/PrintDevice.ts +117 -0
  555. package/app/Models/commerce/Product.ts +148 -0
  556. package/app/Models/commerce/ProductUnit.ts +107 -0
  557. package/app/Models/commerce/ProductVariant.ts +106 -0
  558. package/app/Models/commerce/Receipt.ts +128 -0
  559. package/app/Models/commerce/Review.ts +140 -0
  560. package/app/Models/commerce/ShippingMethod.ts +97 -0
  561. package/app/Models/commerce/ShippingRate.ts +74 -0
  562. package/app/Models/commerce/ShippingZone.ts +111 -0
  563. package/app/Models/commerce/TaxRate.ts +114 -0
  564. package/app/Models/commerce/Transaction.ts +126 -0
  565. package/app/Models/commerce/WaitlistProduct.ts +149 -0
  566. package/app/Models/commerce/WaitlistRestaurant.ts +187 -0
  567. package/app/Models/realtime/Websocket.ts +77 -0
  568. package/app/Notifications/README.md +31 -0
  569. package/app/Notifications/Welcome.ts +32 -0
  570. package/app/Policies/PostPolicy.ts +131 -0
  571. package/app/README.md +23 -0
  572. package/app/Routes.ts +47 -0
  573. package/app/Scheduler.ts +28 -0
  574. package/app/Storefront/CartCookie.ts +109 -0
  575. package/package.json +3 -2
@@ -0,0 +1,53 @@
1
+ import { Action } from '@stacksjs/actions'
2
+ import { createPermission, findPermission } from '@stacksjs/auth'
3
+
4
+ interface PermissionInput {
5
+ name?: unknown
6
+ guardName?: unknown
7
+ description?: unknown
8
+ }
9
+
10
+ /**
11
+ * `POST /api/dashboard/rbac/permissions` (stacksjs/stacks#1845).
12
+ *
13
+ * Mirrors RoleStoreAction. Permissions are typically dotted names
14
+ * like `posts.publish` or `users.delete` — the dashboard imposes
15
+ * no naming convention, that's an app-layer concern.
16
+ */
17
+ export default new Action({
18
+ name: 'Dashboard RBAC Permission Store',
19
+ description: 'Create a new permission.',
20
+ method: 'POST',
21
+ apiResponse: true,
22
+ async handle(request) {
23
+ const body = (request as any).jsonBody as PermissionInput | undefined ?? {}
24
+
25
+ const name = typeof body.name === 'string' ? body.name.trim() : ''
26
+ if (!name || name.length > 100) {
27
+ return { error: '`name` is required and must be 1-100 characters.', status: 400 }
28
+ }
29
+ const guardName = typeof body.guardName === 'string' && body.guardName ? body.guardName.trim() : 'web'
30
+ const description = typeof body.description === 'string' ? body.description.trim() : undefined
31
+
32
+ try {
33
+ const existing = await findPermission(name, guardName)
34
+ if (existing) {
35
+ return { error: 'A permission with that name and guard already exists.', status: 409 }
36
+ }
37
+ const permission = await createPermission(name, guardName, description)
38
+ return {
39
+ permission: {
40
+ id: permission.id,
41
+ name: permission.name,
42
+ guardName: permission.guard_name,
43
+ description: permission.description ?? null,
44
+ createdAt: permission.created_at ?? null,
45
+ },
46
+ }
47
+ }
48
+ catch (err) {
49
+ console.error('[dashboard/rbac] PermissionStoreAction failed:', err)
50
+ return { error: err instanceof Error ? err.message : 'unknown error', status: 500 }
51
+ }
52
+ },
53
+ })
@@ -0,0 +1,34 @@
1
+ import { Action } from '@stacksjs/actions'
2
+ import { getAllPermissions } from '@stacksjs/auth'
3
+
4
+ /**
5
+ * `GET /api/dashboard/rbac/permissions` (stacksjs/stacks#1845).
6
+ *
7
+ * Same shape as RolesIndexAction but against permissions. Drives the
8
+ * Permissions tab on the management page + the column headers of the
9
+ * Role-Permission matrix.
10
+ */
11
+ export default new Action({
12
+ name: 'Dashboard RBAC Permissions Index',
13
+ description: 'List every permission known to the RBAC store.',
14
+ method: 'GET',
15
+ apiResponse: true,
16
+ async handle() {
17
+ try {
18
+ const permissions = await getAllPermissions()
19
+ return {
20
+ permissions: permissions.map(p => ({
21
+ id: p.id,
22
+ name: p.name,
23
+ guardName: p.guard_name,
24
+ description: p.description ?? null,
25
+ createdAt: p.created_at ?? null,
26
+ })),
27
+ }
28
+ }
29
+ catch (err) {
30
+ console.error('[dashboard/rbac] PermissionsIndexAction failed:', err)
31
+ return { permissions: [], error: err instanceof Error ? err.message : 'unknown error' }
32
+ }
33
+ },
34
+ })
@@ -0,0 +1,35 @@
1
+ import { Action } from '@stacksjs/actions'
2
+ import { deleteRole } from '@stacksjs/auth'
3
+
4
+ /**
5
+ * `DELETE /api/dashboard/rbac/roles/:name` (stacksjs/stacks#1845).
6
+ *
7
+ * Removes a role by name + guard. The underlying store cascades the
8
+ * user_roles + role_permissions pivot rows so a deleted role doesn't
9
+ * leave orphan attachments. No notification to formerly-assigned
10
+ * users — the dashboard's role-gated visibility re-evaluates on the
11
+ * next page load.
12
+ */
13
+ export default new Action({
14
+ name: 'Dashboard RBAC Role Destroy',
15
+ description: 'Hard-delete a role + its pivot rows.',
16
+ method: 'DELETE',
17
+ apiResponse: true,
18
+ async handle(request) {
19
+ const name = String((request as any)?.params?.name ?? '').trim()
20
+ if (!name) {
21
+ return { error: '`name` route param is required.', status: 400 }
22
+ }
23
+ const url = new URL(request.url ?? 'http://localhost/')
24
+ const guardName = url.searchParams.get('guard') || 'web'
25
+
26
+ try {
27
+ await deleteRole(name, guardName)
28
+ return { deleted: true, name, guardName }
29
+ }
30
+ catch (err) {
31
+ console.error('[dashboard/rbac] RoleDestroyAction failed:', err)
32
+ return { error: err instanceof Error ? err.message : 'unknown error', status: 500 }
33
+ }
34
+ },
35
+ })
@@ -0,0 +1,45 @@
1
+ import { Action } from '@stacksjs/actions'
2
+ import { findRole, getRolePermissions } from '@stacksjs/auth'
3
+
4
+ /**
5
+ * `GET /api/dashboard/rbac/roles/:name/permissions` (stacksjs/stacks#1845).
6
+ *
7
+ * Returns the permissions attached to a role. Drives the
8
+ * Role-Permission matrix on the management page — when an admin
9
+ * picks a role, this populates which permission checkboxes are
10
+ * currently on.
11
+ */
12
+ export default new Action({
13
+ name: 'Dashboard RBAC Role Permissions Show',
14
+ description: 'List permissions attached to one role.',
15
+ method: 'GET',
16
+ apiResponse: true,
17
+ async handle(request) {
18
+ const name = String((request as any)?.params?.name ?? '').trim()
19
+ if (!name) {
20
+ return { error: '`name` route param is required.', status: 400 }
21
+ }
22
+ const url = new URL(request.url ?? 'http://localhost/')
23
+ const guardName = url.searchParams.get('guard') || 'web'
24
+
25
+ try {
26
+ const role = await findRole(name, guardName)
27
+ if (!role) {
28
+ return { error: 'Role not found.', status: 404 }
29
+ }
30
+ const permissions = await getRolePermissions(role.id)
31
+ return {
32
+ role: { id: role.id, name: role.name, guardName: role.guard_name },
33
+ permissions: permissions.map(p => ({
34
+ id: p.id,
35
+ name: p.name,
36
+ guardName: p.guard_name,
37
+ })),
38
+ }
39
+ }
40
+ catch (err) {
41
+ console.error('[dashboard/rbac] RolePermissionsShowAction failed:', err)
42
+ return { permissions: [], error: err instanceof Error ? err.message : 'unknown error' }
43
+ }
44
+ },
45
+ })
@@ -0,0 +1,63 @@
1
+ import { Action } from '@stacksjs/actions'
2
+ import { getRolePermissions, findRole, syncRolePermissions } from '@stacksjs/auth'
3
+
4
+ interface SyncInput {
5
+ permissions?: unknown
6
+ guardName?: unknown
7
+ }
8
+
9
+ /**
10
+ * `POST /api/dashboard/rbac/roles/:name/permissions` (stacksjs/stacks#1845).
11
+ *
12
+ * Replace-all: pass the full new permission-name list. The facade
13
+ * resolves names → ids and calls the store's syncRolePermissions
14
+ * (which is `delete-then-insert` under the hood, transactional).
15
+ */
16
+ export default new Action({
17
+ name: 'Dashboard RBAC Role Permissions Sync',
18
+ description: 'Replace the permission set attached to one role.',
19
+ method: 'POST',
20
+ apiResponse: true,
21
+ async handle(request) {
22
+ const roleName = String((request as any)?.params?.name ?? '').trim()
23
+ if (!roleName) {
24
+ return { error: '`name` route param is required.', status: 400 }
25
+ }
26
+
27
+ const body = (request as any).jsonBody as SyncInput | undefined ?? {}
28
+ if (!Array.isArray(body.permissions)) {
29
+ return { error: '`permissions` must be an array of permission names (possibly empty).', status: 400 }
30
+ }
31
+ const names: string[] = []
32
+ for (const v of body.permissions) {
33
+ if (typeof v !== 'string' || !v.trim()) {
34
+ return { error: '`permissions` must contain non-empty strings.', status: 400 }
35
+ }
36
+ names.push(v.trim())
37
+ }
38
+ const guardName = typeof body.guardName === 'string' && body.guardName ? body.guardName.trim() : 'web'
39
+
40
+ try {
41
+ await syncRolePermissions(roleName, Array.from(new Set(names)), guardName)
42
+ // Re-fetch the role + its current permissions so the optimistic
43
+ // UI can reconcile against canonical state.
44
+ const role = await findRole(roleName, guardName)
45
+ if (!role) {
46
+ return { error: 'Role not found after sync.', status: 404 }
47
+ }
48
+ const after = await getRolePermissions(role.id)
49
+ return {
50
+ role: { id: role.id, name: role.name, guardName: role.guard_name },
51
+ permissions: after.map(p => ({ id: p.id, name: p.name, guardName: p.guard_name })),
52
+ }
53
+ }
54
+ catch (err) {
55
+ const msg = err instanceof Error ? err.message : 'unknown error'
56
+ if (msg.includes('not found')) {
57
+ return { error: msg, status: 400 }
58
+ }
59
+ console.error('[dashboard/rbac] RolePermissionsSyncAction failed:', err)
60
+ return { error: msg, status: 500 }
61
+ }
62
+ },
63
+ })
@@ -0,0 +1,58 @@
1
+ import { Action } from '@stacksjs/actions'
2
+ import { createRole, findRole } from '@stacksjs/auth'
3
+
4
+ interface RoleInput {
5
+ name?: unknown
6
+ guardName?: unknown
7
+ description?: unknown
8
+ }
9
+
10
+ /**
11
+ * `POST /api/dashboard/rbac/roles` (stacksjs/stacks#1845).
12
+ *
13
+ * Creates a new role. Pre-checks uniqueness for (name, guard_name)
14
+ * up front so the response carries a clean 409 instead of letting
15
+ * the DB's unique-constraint surface bubble through as a 500.
16
+ *
17
+ * Idempotency note: the underlying BqbRbacStore swallows the
18
+ * unique-violation race at the SQL level too, so concurrent calls
19
+ * with the same (name, guard) settle on a single row regardless of
20
+ * which one wins the SELECT-then-INSERT race.
21
+ */
22
+ export default new Action({
23
+ name: 'Dashboard RBAC Role Store',
24
+ description: 'Create a new role.',
25
+ method: 'POST',
26
+ apiResponse: true,
27
+ async handle(request) {
28
+ const body = (request as any).jsonBody as RoleInput | undefined ?? {}
29
+
30
+ const name = typeof body.name === 'string' ? body.name.trim() : ''
31
+ if (!name || name.length > 60) {
32
+ return { error: '`name` is required and must be 1-60 characters.', status: 400 }
33
+ }
34
+ const guardName = typeof body.guardName === 'string' && body.guardName ? body.guardName.trim() : 'web'
35
+ const description = typeof body.description === 'string' ? body.description.trim() : undefined
36
+
37
+ try {
38
+ const existing = await findRole(name, guardName)
39
+ if (existing) {
40
+ return { error: 'A role with that name and guard already exists.', status: 409 }
41
+ }
42
+ const role = await createRole(name, guardName, description)
43
+ return {
44
+ role: {
45
+ id: role.id,
46
+ name: role.name,
47
+ guardName: role.guard_name,
48
+ description: role.description ?? null,
49
+ createdAt: role.created_at ?? null,
50
+ },
51
+ }
52
+ }
53
+ catch (err) {
54
+ console.error('[dashboard/rbac] RoleStoreAction failed:', err)
55
+ return { error: err instanceof Error ? err.message : 'unknown error', status: 500 }
56
+ }
57
+ },
58
+ })
@@ -0,0 +1,36 @@
1
+ import { Action } from '@stacksjs/actions'
2
+ import { getAllRoles } from '@stacksjs/auth'
3
+
4
+ /**
5
+ * `GET /api/dashboard/rbac/roles` (stacksjs/stacks#1845).
6
+ *
7
+ * Returns every role in the system. The dashboard's permissions page
8
+ * renders this as a list users can pick from when assigning roles.
9
+ * Soft-errors to an empty list rather than 500 so a broken RBAC store
10
+ * (e.g., migrations not run) renders an empty-state instead of
11
+ * yelling at the user.
12
+ */
13
+ export default new Action({
14
+ name: 'Dashboard RBAC Roles Index',
15
+ description: 'List every role known to the RBAC store.',
16
+ method: 'GET',
17
+ apiResponse: true,
18
+ async handle() {
19
+ try {
20
+ const roles = await getAllRoles()
21
+ return {
22
+ roles: roles.map(r => ({
23
+ id: r.id,
24
+ name: r.name,
25
+ guardName: r.guard_name,
26
+ description: r.description ?? null,
27
+ createdAt: r.created_at ?? null,
28
+ })),
29
+ }
30
+ }
31
+ catch (err) {
32
+ console.error('[dashboard/rbac] RolesIndexAction failed:', err)
33
+ return { roles: [], error: err instanceof Error ? err.message : 'unknown error' }
34
+ }
35
+ },
36
+ })
@@ -0,0 +1,40 @@
1
+ import { Action } from '@stacksjs/actions'
2
+ import { getUserRoles } from '@stacksjs/auth'
3
+
4
+ /**
5
+ * `GET /api/dashboard/rbac/users/:id/roles` (stacksjs/stacks#1845).
6
+ *
7
+ * Returns the roles attached to a single user. Drives the per-user
8
+ * picker on the Users tab of the management page — when an admin
9
+ * clicks a user, this populates the "currently assigned" set so
10
+ * the sync UI can diff against it.
11
+ */
12
+ export default new Action({
13
+ name: 'Dashboard RBAC User Roles Show',
14
+ description: 'List roles attached to one user.',
15
+ method: 'GET',
16
+ apiResponse: true,
17
+ async handle(request) {
18
+ const rawId = (request as any)?.params?.id
19
+ const userId = Number(rawId)
20
+ if (!Number.isFinite(userId) || userId <= 0) {
21
+ return { error: 'Invalid user id.', status: 400 }
22
+ }
23
+
24
+ try {
25
+ const roles = await getUserRoles(userId)
26
+ return {
27
+ userId,
28
+ roles: roles.map(r => ({
29
+ id: r.id,
30
+ name: r.name,
31
+ guardName: r.guard_name,
32
+ })),
33
+ }
34
+ }
35
+ catch (err) {
36
+ console.error('[dashboard/rbac] UserRolesShowAction failed:', err)
37
+ return { userId, roles: [], error: err instanceof Error ? err.message : 'unknown error' }
38
+ }
39
+ },
40
+ })
@@ -0,0 +1,65 @@
1
+ import { Action } from '@stacksjs/actions'
2
+ import { getUserRoles, syncRoles } from '@stacksjs/auth'
3
+
4
+ interface SyncInput {
5
+ roles?: unknown
6
+ guardName?: unknown
7
+ }
8
+
9
+ /**
10
+ * `POST /api/dashboard/rbac/users/:id/roles` (stacksjs/stacks#1845).
11
+ *
12
+ * Replace-all sync: pass the full new role-name list and the
13
+ * underlying facade attaches/detaches to match. Same semantics as
14
+ * the kanban label/assignee sync endpoints.
15
+ *
16
+ * The facade resolves role names → role ids internally (and throws
17
+ * if any name doesn't exist), so we surface those as 400s rather
18
+ * than letting them bubble as 500s.
19
+ */
20
+ export default new Action({
21
+ name: 'Dashboard RBAC User Roles Sync',
22
+ description: 'Replace the role set attached to one user.',
23
+ method: 'POST',
24
+ apiResponse: true,
25
+ async handle(request) {
26
+ const rawId = (request as any)?.params?.id
27
+ const userId = Number(rawId)
28
+ if (!Number.isFinite(userId) || userId <= 0) {
29
+ return { error: 'Invalid user id.', status: 400 }
30
+ }
31
+
32
+ const body = (request as any).jsonBody as SyncInput | undefined ?? {}
33
+ if (!Array.isArray(body.roles)) {
34
+ return { error: '`roles` must be an array of role names (possibly empty).', status: 400 }
35
+ }
36
+ const names: string[] = []
37
+ for (const v of body.roles) {
38
+ if (typeof v !== 'string' || !v.trim()) {
39
+ return { error: '`roles` must contain non-empty strings.', status: 400 }
40
+ }
41
+ names.push(v.trim())
42
+ }
43
+ const guardName = typeof body.guardName === 'string' && body.guardName ? body.guardName.trim() : 'web'
44
+
45
+ try {
46
+ await syncRoles(userId, Array.from(new Set(names)), guardName)
47
+ const after = await getUserRoles(userId)
48
+ return {
49
+ userId,
50
+ roles: after.map(r => ({ id: r.id, name: r.name, guardName: r.guard_name })),
51
+ }
52
+ }
53
+ catch (err) {
54
+ const msg = err instanceof Error ? err.message : 'unknown error'
55
+ // The facade throws "Role 'X' not found" — surface as 400 so
56
+ // the UI can show "this role doesn't exist anymore" rather
57
+ // than a 500.
58
+ if (msg.includes('not found')) {
59
+ return { error: msg, status: 400 }
60
+ }
61
+ console.error('[dashboard/rbac] UserRolesSyncAction failed:', err)
62
+ return { error: msg, status: 500 }
63
+ }
64
+ },
65
+ })
@@ -0,0 +1,39 @@
1
+ import { Action } from '@stacksjs/actions'
2
+ import { db } from '@stacksjs/database'
3
+
4
+ /**
5
+ * `GET /api/dashboard/rbac/users` (stacksjs/stacks#1845).
6
+ *
7
+ * Lightweight user list for the RBAC Users tab. Returns `{ id,
8
+ * name, email }` only — enough to show a row label + run the
9
+ * per-user role-sync UI. Bounded to 500 rows so a typo doesn't
10
+ * dump the whole users table into one response (the page can
11
+ * paginate / filter later if needed).
12
+ *
13
+ * Scoped to RBAC rather than reusing the kanban users list because:
14
+ * - The two surfaces have different role-gating contracts
15
+ * (kanban: admin+dev; RBAC: admin-only when the auth middleware
16
+ * is applied).
17
+ * - Future RBAC-specific filters (e.g. `?withoutRole=admin`)
18
+ * belong on this endpoint, not on the kanban one.
19
+ */
20
+ export default new Action({
21
+ name: 'Dashboard RBAC Users List',
22
+ description: 'Lightweight user list for the RBAC assignment UI.',
23
+ method: 'GET',
24
+ apiResponse: true,
25
+ async handle() {
26
+ try {
27
+ const rows = await db.unsafe(
28
+ 'SELECT id, name, email FROM users ORDER BY name ASC, id ASC LIMIT 500',
29
+ ).execute() as Array<{ id: number, name: string | null, email: string | null }>
30
+ return {
31
+ users: (rows ?? []).map(r => ({ id: r.id, name: r.name, email: r.email })),
32
+ }
33
+ }
34
+ catch (err) {
35
+ console.error('[dashboard/rbac] UsersListAction failed:', err)
36
+ return { users: [], error: err instanceof Error ? err.message : 'unknown error' }
37
+ }
38
+ },
39
+ })
@@ -0,0 +1,50 @@
1
+ import { Action } from '@stacksjs/actions'
2
+ import { Websocket } from '@stacksjs/orm'
3
+
4
+ export default new Action({
5
+ name: 'RealtimeStatsAction',
6
+ description: 'Returns realtime connection statistics.',
7
+ method: 'GET',
8
+ async handle() {
9
+ try {
10
+ const allConnections = await Websocket.all()
11
+ const totalConnections = await Websocket.count()
12
+
13
+ // Group connections by channel
14
+ const channelMap: Record<string, { connections: number, messages: number }> = {}
15
+ for (const conn of allConnections) {
16
+ const channel = String(conn.get('channel') || conn.get('name') || 'default')
17
+ if (!channelMap[channel]) {
18
+ channelMap[channel] = { connections: 0, messages: 0 }
19
+ }
20
+ channelMap[channel].connections++
21
+ channelMap[channel].messages += Number(conn.get('message_count') || 0)
22
+ }
23
+
24
+ const channels = Object.entries(channelMap).map(([name, data]) => ({
25
+ name,
26
+ connections: data.connections,
27
+ messages: `${data.messages}/min`,
28
+ }))
29
+
30
+ return {
31
+ channels,
32
+ stats: {
33
+ activeConnections: totalConnections,
34
+ messagesPerMinute: '-',
35
+ avgLatency: '-',
36
+ },
37
+ }
38
+ }
39
+ catch {
40
+ return {
41
+ channels: [],
42
+ stats: {
43
+ activeConnections: 0,
44
+ messagesPerMinute: '0',
45
+ avgLatency: '-',
46
+ },
47
+ }
48
+ }
49
+ },
50
+ })
@@ -0,0 +1,21 @@
1
+ import { Action } from '@stacksjs/actions'
2
+
3
+ export default new Action({
4
+ name: 'ReleaseIndexAction',
5
+ description: 'Returns the list of releases with download stats.',
6
+ method: 'GET',
7
+ async handle() {
8
+ return {
9
+ data: [
10
+ { version: '0.72.0', codename: 'Nebula', size: '2.4 MB', path: '/releases/0.72.0', createdAt: '2024-03-15T10:00:00Z' },
11
+ { version: '0.71.0', codename: 'Aurora', size: '2.3 MB', path: '/releases/0.71.0', createdAt: '2024-03-01T10:00:00Z' },
12
+ { version: '0.70.0', codename: 'Zenith', size: '2.2 MB', path: '/releases/0.70.0', createdAt: '2024-02-15T10:00:00Z' },
13
+ ],
14
+ stats: {
15
+ labels: Array.from({ length: 30 }, (_, i) => new Date(Date.now() - (29 - i) * 86400000).toISOString().split('T')[0]),
16
+ downloads: Array.from({ length: 30 }, () => Math.floor(Math.random() * 500) + 100),
17
+ releaseTimes: Array.from({ length: 30 }, () => Math.floor(Math.random() * 30) + 5),
18
+ },
19
+ }
20
+ },
21
+ })
@@ -0,0 +1,12 @@
1
+ import { Action } from '@stacksjs/actions'
2
+ // import { Library } from '@stacksjs/orm'
3
+
4
+ export default new Action({
5
+ name: 'GetAverageReleaseTime',
6
+ description: 'Gets the average release time of your library.',
7
+ apiResponse: true,
8
+
9
+ async handle() {
10
+ // return Library.averageReleaseTime()
11
+ },
12
+ })
@@ -0,0 +1,12 @@
1
+ import { Action } from '@stacksjs/actions'
2
+ // import { Request } from '@stacksjs/orm'
3
+
4
+ export default new Action({
5
+ name: 'GetRequestCount',
6
+ description: 'Gets the total number of requests.',
7
+ apiResponse: true,
8
+
9
+ async handle() {
10
+ // return Request.count()
11
+ },
12
+ })
@@ -0,0 +1,12 @@
1
+ import { Action } from '@stacksjs/actions'
2
+ // import { Request } from '@stacksjs/orm'
3
+
4
+ export default new Action({
5
+ name: 'GetRequestSuccessRate',
6
+ description: 'Gets the request success rate of your application.',
7
+ apiResponse: true,
8
+
9
+ async handle() {
10
+ // return Request.successRate()
11
+ },
12
+ })
@@ -0,0 +1,12 @@
1
+ import { Action } from '@stacksjs/actions'
2
+ // import { Request } from '@stacksjs/orm'
3
+
4
+ export default new Action({
5
+ name: 'GetRequests',
6
+ description: 'Gets your requests.',
7
+ apiResponse: true,
8
+
9
+ async handle() {
10
+ // return Request.all()
11
+ },
12
+ })
@@ -0,0 +1,26 @@
1
+ import { Action } from '@stacksjs/actions'
2
+
3
+ export default new Action({
4
+ name: 'GlobalSearchAction',
5
+ description: 'Returns global search results grouped by model.',
6
+ method: 'GET',
7
+ async handle(request: RequestInstance) {
8
+ const q = request?.get('q') || ''
9
+
10
+ if (!q) return { results: {} }
11
+
12
+ return {
13
+ results: {
14
+ users: [
15
+ { id: 1, title: 'Chris Breuer', subtitle: 'chris@stacks.dev', href: '/data/users', icon: 'i-hugeicons-user-02' },
16
+ ],
17
+ posts: [
18
+ { id: 1, title: 'Getting Started with Stacks', subtitle: 'Published 2 days ago', href: '/content/posts', icon: 'i-hugeicons-note-edit' },
19
+ ],
20
+ products: [
21
+ { id: 1, title: 'Premium Plan', subtitle: '$99/mo', href: '/commerce/products', icon: 'i-hugeicons-shopping-bag-02' },
22
+ ],
23
+ },
24
+ }
25
+ },
26
+ })