alepha 0.16.1 → 0.16.2

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 (503) hide show
  1. package/AGENTS.md +245 -0
  2. package/CLAUDE.md +245 -0
  3. package/README.md +20 -31
  4. package/assets/agents-template.md +245 -0
  5. package/assets/devtools-ui/200.html +10 -0
  6. package/assets/devtools-ui/200.html.br +4 -0
  7. package/assets/devtools-ui/200.html.gz +0 -0
  8. package/assets/devtools-ui/404.html +10 -0
  9. package/assets/devtools-ui/404.html.br +4 -0
  10. package/assets/devtools-ui/404.html.gz +0 -0
  11. package/assets/devtools-ui/CNAME +1 -0
  12. package/assets/devtools-ui/asset.BZV40eAE.css +1 -0
  13. package/assets/devtools-ui/asset.BZV40eAE.css.br +0 -0
  14. package/assets/devtools-ui/asset.BZV40eAE.css.gz +0 -0
  15. package/assets/devtools-ui/asset.BpaT354U.css +1 -0
  16. package/assets/devtools-ui/asset.BpaT354U.css.br +0 -0
  17. package/assets/devtools-ui/asset.BpaT354U.css.gz +0 -0
  18. package/assets/devtools-ui/chunk.9hA3oVE5.js +1 -0
  19. package/assets/devtools-ui/chunk.9hA3oVE5.js.br +0 -0
  20. package/assets/devtools-ui/chunk.9hA3oVE5.js.gz +0 -0
  21. package/assets/devtools-ui/chunk.B0wH9875.js +9 -0
  22. package/assets/devtools-ui/chunk.B0wH9875.js.br +0 -0
  23. package/assets/devtools-ui/chunk.B0wH9875.js.gz +0 -0
  24. package/assets/devtools-ui/chunk.BA6MpVG6.js +1 -0
  25. package/assets/devtools-ui/chunk.BA6MpVG6.js.br +0 -0
  26. package/assets/devtools-ui/chunk.BA6MpVG6.js.gz +0 -0
  27. package/assets/devtools-ui/chunk.BERstE_S.js +1 -0
  28. package/assets/devtools-ui/chunk.BERstE_S.js.br +0 -0
  29. package/assets/devtools-ui/chunk.BERstE_S.js.gz +0 -0
  30. package/assets/devtools-ui/chunk.BGhL1aTk.js +1 -0
  31. package/assets/devtools-ui/chunk.BGhL1aTk.js.br +3 -0
  32. package/assets/devtools-ui/chunk.BGhL1aTk.js.gz +0 -0
  33. package/assets/devtools-ui/chunk.BPLJadaO.js +1 -0
  34. package/assets/devtools-ui/chunk.BPLJadaO.js.br +0 -0
  35. package/assets/devtools-ui/chunk.BPLJadaO.js.gz +0 -0
  36. package/assets/devtools-ui/chunk.BfVJy4KT.js +1 -0
  37. package/assets/devtools-ui/chunk.BfVJy4KT.js.br +0 -0
  38. package/assets/devtools-ui/chunk.BfVJy4KT.js.gz +0 -0
  39. package/assets/devtools-ui/chunk.BioyJDYM.js +1 -0
  40. package/assets/devtools-ui/chunk.BioyJDYM.js.br +0 -0
  41. package/assets/devtools-ui/chunk.BioyJDYM.js.gz +0 -0
  42. package/assets/devtools-ui/chunk.ByxtH9X4.js +1 -0
  43. package/assets/devtools-ui/chunk.ByxtH9X4.js.br +0 -0
  44. package/assets/devtools-ui/chunk.ByxtH9X4.js.gz +0 -0
  45. package/assets/devtools-ui/chunk.CC9sVmtJ.js +1 -0
  46. package/assets/devtools-ui/chunk.CC9sVmtJ.js.br +0 -0
  47. package/assets/devtools-ui/chunk.CC9sVmtJ.js.gz +0 -0
  48. package/assets/devtools-ui/chunk.CCfDV7bM.js +1 -0
  49. package/assets/devtools-ui/chunk.CCfDV7bM.js.br +0 -0
  50. package/assets/devtools-ui/chunk.CCfDV7bM.js.gz +0 -0
  51. package/assets/devtools-ui/chunk.CJ-RgNWn.js +1 -0
  52. package/assets/devtools-ui/chunk.CJ-RgNWn.js.br +0 -0
  53. package/assets/devtools-ui/chunk.CJ-RgNWn.js.gz +0 -0
  54. package/assets/devtools-ui/chunk.CL-Gj_Zw.js +1 -0
  55. package/assets/devtools-ui/chunk.CL-Gj_Zw.js.br +0 -0
  56. package/assets/devtools-ui/chunk.CL-Gj_Zw.js.gz +0 -0
  57. package/assets/devtools-ui/chunk.CPBZzQ1W.js +7 -0
  58. package/assets/devtools-ui/chunk.CPBZzQ1W.js.br +0 -0
  59. package/assets/devtools-ui/chunk.CPBZzQ1W.js.gz +0 -0
  60. package/assets/devtools-ui/chunk.CYGSym54.js +2 -0
  61. package/assets/devtools-ui/chunk.CYGSym54.js.br +0 -0
  62. package/assets/devtools-ui/chunk.CYGSym54.js.gz +0 -0
  63. package/assets/devtools-ui/chunk.CZnj4xdD.js +1 -0
  64. package/assets/devtools-ui/chunk.CZnj4xdD.js.br +0 -0
  65. package/assets/devtools-ui/chunk.CZnj4xdD.js.gz +0 -0
  66. package/assets/devtools-ui/chunk.CfVEBVYK.js +1 -0
  67. package/assets/devtools-ui/chunk.CfVEBVYK.js.br +0 -0
  68. package/assets/devtools-ui/chunk.CfVEBVYK.js.gz +0 -0
  69. package/assets/devtools-ui/chunk.CzdBps3a.js +1 -0
  70. package/assets/devtools-ui/chunk.CzdBps3a.js.br +0 -0
  71. package/assets/devtools-ui/chunk.CzdBps3a.js.gz +0 -0
  72. package/assets/devtools-ui/chunk.D0vBEggU.js +1 -0
  73. package/assets/devtools-ui/chunk.D0vBEggU.js.br +0 -0
  74. package/assets/devtools-ui/chunk.D0vBEggU.js.gz +0 -0
  75. package/assets/devtools-ui/chunk.DA9sYPRz.js +1 -0
  76. package/assets/devtools-ui/chunk.DA9sYPRz.js.br +0 -0
  77. package/assets/devtools-ui/chunk.DA9sYPRz.js.gz +0 -0
  78. package/assets/devtools-ui/chunk.DQRyKwEs.js +1 -0
  79. package/assets/devtools-ui/chunk.DQRyKwEs.js.br +0 -0
  80. package/assets/devtools-ui/chunk.DQRyKwEs.js.gz +0 -0
  81. package/assets/devtools-ui/chunk.DqJ9oOlf.js +1 -0
  82. package/assets/devtools-ui/chunk.DqJ9oOlf.js.br +0 -0
  83. package/assets/devtools-ui/chunk.DqJ9oOlf.js.gz +0 -0
  84. package/assets/devtools-ui/chunk.DuvyGAtW.js +1 -0
  85. package/assets/devtools-ui/chunk.DuvyGAtW.js.br +1 -0
  86. package/assets/devtools-ui/chunk.DuvyGAtW.js.gz +0 -0
  87. package/assets/devtools-ui/chunk.DvC3T1B2.js +1 -0
  88. package/assets/devtools-ui/chunk.DvC3T1B2.js.br +0 -0
  89. package/assets/devtools-ui/chunk.DvC3T1B2.js.gz +0 -0
  90. package/assets/devtools-ui/chunk.Dyr5rJZ8.js +1 -0
  91. package/assets/devtools-ui/chunk.Dyr5rJZ8.js.br +3 -0
  92. package/assets/devtools-ui/chunk.Dyr5rJZ8.js.gz +0 -0
  93. package/assets/devtools-ui/chunk.U1DOTByB.js +1 -0
  94. package/assets/devtools-ui/chunk.U1DOTByB.js.br +0 -0
  95. package/assets/devtools-ui/chunk.U1DOTByB.js.gz +0 -0
  96. package/assets/devtools-ui/chunk.i6dOJAO-.js +1 -0
  97. package/assets/devtools-ui/chunk.i6dOJAO-.js.br +0 -0
  98. package/assets/devtools-ui/chunk.i6dOJAO-.js.gz +0 -0
  99. package/assets/devtools-ui/chunk.pCFnzo3_.js +1 -0
  100. package/assets/devtools-ui/chunk.pCFnzo3_.js.br +0 -0
  101. package/assets/devtools-ui/chunk.pCFnzo3_.js.gz +0 -0
  102. package/assets/devtools-ui/entry.Ben0QJOH.js +79 -0
  103. package/assets/devtools-ui/entry.Ben0QJOH.js.br +0 -0
  104. package/assets/devtools-ui/entry.Ben0QJOH.js.gz +0 -0
  105. package/assets/devtools-ui/index.html +10 -0
  106. package/assets/devtools-ui/index.html.br +4 -0
  107. package/assets/devtools-ui/index.html.gz +0 -0
  108. package/dist/api/audits/index.d.ts +332 -332
  109. package/dist/api/audits/index.d.ts.map +1 -1
  110. package/dist/api/audits/index.js +1 -1
  111. package/dist/api/audits/index.js.map +1 -1
  112. package/dist/api/clients/index.d.ts +683 -0
  113. package/dist/api/clients/index.d.ts.map +1 -0
  114. package/dist/api/clients/index.js +1329 -0
  115. package/dist/api/clients/index.js.map +1 -0
  116. package/dist/api/files/index.d.ts +170 -170
  117. package/dist/api/files/index.d.ts.map +1 -1
  118. package/dist/api/files/index.js +1 -1
  119. package/dist/api/files/index.js.map +1 -1
  120. package/dist/api/jobs/index.browser.js +4 -1
  121. package/dist/api/jobs/index.browser.js.map +1 -1
  122. package/dist/api/jobs/index.d.ts +222 -247
  123. package/dist/api/jobs/index.d.ts.map +1 -1
  124. package/dist/api/jobs/index.js +51 -129
  125. package/dist/api/jobs/index.js.map +1 -1
  126. package/dist/api/keys/index.d.ts +195 -195
  127. package/dist/api/keys/index.d.ts.map +1 -1
  128. package/dist/api/keys/index.js +6 -10
  129. package/dist/api/keys/index.js.map +1 -1
  130. package/dist/api/notifications/index.browser.js +2 -2
  131. package/dist/api/notifications/index.browser.js.map +1 -1
  132. package/dist/api/notifications/index.d.ts +167 -167
  133. package/dist/api/notifications/index.d.ts.map +1 -1
  134. package/dist/api/notifications/index.js +2 -2
  135. package/dist/api/notifications/index.js.map +1 -1
  136. package/dist/api/parameters/index.browser.js +0 -146
  137. package/dist/api/parameters/index.browser.js.map +1 -1
  138. package/dist/api/parameters/index.d.ts +669 -425
  139. package/dist/api/parameters/index.d.ts.map +1 -1
  140. package/dist/api/parameters/index.js +262 -276
  141. package/dist/api/parameters/index.js.map +1 -1
  142. package/dist/api/users/index.d.ts +910 -874
  143. package/dist/api/users/index.d.ts.map +1 -1
  144. package/dist/api/users/index.js +1371 -46
  145. package/dist/api/users/index.js.map +1 -1
  146. package/dist/api/verifications/index.d.ts +127 -127
  147. package/dist/api/verifications/index.d.ts.map +1 -1
  148. package/dist/batch/index.d.ts +4 -4
  149. package/dist/batch/index.d.ts.map +1 -1
  150. package/dist/bucket/index.d.ts +190 -7
  151. package/dist/bucket/index.d.ts.map +1 -1
  152. package/dist/bucket/index.js +150 -2
  153. package/dist/bucket/index.js.map +1 -1
  154. package/dist/bucket/index.workerd.js +339 -0
  155. package/dist/bucket/index.workerd.js.map +1 -0
  156. package/dist/cache/core/index.d.ts +12 -3
  157. package/dist/cache/core/index.d.ts.map +1 -1
  158. package/dist/cache/core/index.js +42 -8
  159. package/dist/cache/core/index.js.map +1 -1
  160. package/dist/cache/redis/index.d.ts +4 -4
  161. package/dist/cache/redis/index.d.ts.map +1 -1
  162. package/dist/cache/redis/index.js +6 -5
  163. package/dist/cache/redis/index.js.map +1 -1
  164. package/dist/cli/index.d.ts +206 -252
  165. package/dist/cli/index.d.ts.map +1 -1
  166. package/dist/cli/index.js +307 -767
  167. package/dist/cli/index.js.map +1 -1
  168. package/dist/command/index.d.ts +15 -15
  169. package/dist/command/index.d.ts.map +1 -1
  170. package/dist/command/index.js +1 -1
  171. package/dist/command/index.js.map +1 -1
  172. package/dist/core/index.browser.js +3 -3
  173. package/dist/core/index.browser.js.map +1 -1
  174. package/dist/core/index.d.ts +9 -6
  175. package/dist/core/index.d.ts.map +1 -1
  176. package/dist/core/index.js +3 -0
  177. package/dist/core/index.js.map +1 -1
  178. package/dist/core/index.native.js +3 -0
  179. package/dist/core/index.native.js.map +1 -1
  180. package/dist/datetime/index.d.ts +4 -4
  181. package/dist/datetime/index.d.ts.map +1 -1
  182. package/dist/devtools/index.browser.js +245 -0
  183. package/dist/devtools/index.browser.js.map +1 -0
  184. package/dist/devtools/index.d.ts +507 -0
  185. package/dist/devtools/index.d.ts.map +1 -0
  186. package/dist/devtools/index.js +812 -0
  187. package/dist/devtools/index.js.map +1 -0
  188. package/dist/email/index.d.ts +13 -13
  189. package/dist/email/index.d.ts.map +1 -1
  190. package/dist/email/index.js +259 -105
  191. package/dist/email/index.js.map +1 -1
  192. package/dist/fake/index.d.ts +128 -9
  193. package/dist/fake/index.d.ts.map +1 -1
  194. package/dist/fake/index.js +452 -433
  195. package/dist/fake/index.js.map +1 -1
  196. package/dist/lock/core/index.d.ts +6 -6
  197. package/dist/lock/core/index.d.ts.map +1 -1
  198. package/dist/lock/core/index.js +3 -3
  199. package/dist/lock/core/index.js.map +1 -1
  200. package/dist/lock/redis/index.d.ts +2 -2
  201. package/dist/lock/redis/index.d.ts.map +1 -1
  202. package/dist/logger/index.d.ts +14 -14
  203. package/dist/logger/index.d.ts.map +1 -1
  204. package/dist/logger/index.js +1 -1
  205. package/dist/logger/index.js.map +1 -1
  206. package/dist/mcp/index.d.ts +5 -5
  207. package/dist/mcp/index.d.ts.map +1 -1
  208. package/dist/orm/{chunk-DH6iiROE.js → chunk-DUknxb-w.js} +3 -3
  209. package/dist/orm/index.browser.js +283 -1
  210. package/dist/orm/index.browser.js.map +1 -1
  211. package/dist/orm/index.bun.js +367 -15
  212. package/dist/orm/index.bun.js.map +1 -1
  213. package/dist/orm/index.d.ts +259 -67
  214. package/dist/orm/index.d.ts.map +1 -1
  215. package/dist/orm/index.js +409 -35
  216. package/dist/orm/index.js.map +1 -1
  217. package/dist/queue/core/index.d.ts +8 -8
  218. package/dist/queue/core/index.d.ts.map +1 -1
  219. package/dist/queue/redis/index.d.ts +4 -4
  220. package/dist/queue/redis/index.d.ts.map +1 -1
  221. package/dist/react/auth/index.browser.js +6 -2
  222. package/dist/react/auth/index.browser.js.map +1 -1
  223. package/dist/react/auth/index.d.ts +5 -5
  224. package/dist/react/auth/index.d.ts.map +1 -1
  225. package/dist/react/auth/index.js +6 -2
  226. package/dist/react/auth/index.js.map +1 -1
  227. package/dist/react/core/index.d.ts +5 -5
  228. package/dist/react/core/index.d.ts.map +1 -1
  229. package/dist/react/core/index.js +5 -4
  230. package/dist/react/core/index.js.map +1 -1
  231. package/dist/react/form/index.d.ts +7 -2
  232. package/dist/react/form/index.d.ts.map +1 -1
  233. package/dist/react/form/index.js +24 -3
  234. package/dist/react/form/index.js.map +1 -1
  235. package/dist/react/head/index.browser.js +6 -1
  236. package/dist/react/head/index.browser.js.map +1 -1
  237. package/dist/react/head/index.d.ts +2 -2
  238. package/dist/react/head/index.d.ts.map +1 -1
  239. package/dist/react/head/index.js +6 -1
  240. package/dist/react/head/index.js.map +1 -1
  241. package/dist/react/i18n/index.d.ts +6 -6
  242. package/dist/react/i18n/index.d.ts.map +1 -1
  243. package/dist/react/i18n/index.js +1 -2
  244. package/dist/react/i18n/index.js.map +1 -1
  245. package/dist/react/intro/index.d.ts.map +1 -1
  246. package/dist/react/intro/index.js +8 -10
  247. package/dist/react/intro/index.js.map +1 -1
  248. package/dist/react/router/index.browser.js +10 -9
  249. package/dist/react/router/index.browser.js.map +1 -1
  250. package/dist/react/router/index.d.ts +207 -204
  251. package/dist/react/router/index.d.ts.map +1 -1
  252. package/dist/react/router/index.js +12 -11
  253. package/dist/react/router/index.js.map +1 -1
  254. package/dist/react/testing/chunk-C4KDipgg.js +22 -0
  255. package/dist/react/testing/index.d.ts +736 -0
  256. package/dist/react/testing/index.d.ts.map +1 -0
  257. package/dist/react/testing/index.js +13042 -0
  258. package/dist/react/testing/index.js.map +1 -0
  259. package/dist/redis/index.d.ts +19 -19
  260. package/dist/redis/index.d.ts.map +1 -1
  261. package/dist/retry/index.d.ts +2 -2
  262. package/dist/retry/index.d.ts.map +1 -1
  263. package/dist/scheduler/index.d.ts +8 -8
  264. package/dist/scheduler/index.d.ts.map +1 -1
  265. package/dist/security/index.d.ts +59 -43
  266. package/dist/security/index.d.ts.map +1 -1
  267. package/dist/security/index.js +62 -6
  268. package/dist/security/index.js.map +1 -1
  269. package/dist/server/auth/index.d.ts +167 -167
  270. package/dist/server/auth/index.d.ts.map +1 -1
  271. package/dist/server/auth/index.js +1 -1
  272. package/dist/server/auth/index.js.map +1 -1
  273. package/dist/server/cache/index.d.ts +7 -7
  274. package/dist/server/cache/index.d.ts.map +1 -1
  275. package/dist/server/cache/index.js +4 -1
  276. package/dist/server/cache/index.js.map +1 -1
  277. package/dist/server/compress/index.d.ts +3 -3
  278. package/dist/server/compress/index.d.ts.map +1 -1
  279. package/dist/server/cookies/index.d.ts +5 -5
  280. package/dist/server/cookies/index.d.ts.map +1 -1
  281. package/dist/server/core/index.browser.js +1 -1
  282. package/dist/server/core/index.browser.js.map +1 -1
  283. package/dist/server/core/index.d.ts +43 -43
  284. package/dist/server/core/index.d.ts.map +1 -1
  285. package/dist/server/core/index.js +11 -3
  286. package/dist/server/core/index.js.map +1 -1
  287. package/dist/server/cors/index.d.ts +11 -11
  288. package/dist/server/cors/index.d.ts.map +1 -1
  289. package/dist/server/health/index.d.ts +17 -17
  290. package/dist/server/health/index.d.ts.map +1 -1
  291. package/dist/server/helmet/index.d.ts +19 -19
  292. package/dist/server/helmet/index.d.ts.map +1 -1
  293. package/dist/server/links/index.d.ts +39 -39
  294. package/dist/server/links/index.d.ts.map +1 -1
  295. package/dist/server/metrics/index.d.ts +5 -5
  296. package/dist/server/metrics/index.d.ts.map +1 -1
  297. package/dist/server/metrics/index.js +3 -3
  298. package/dist/server/multipart/index.d.ts +4 -4
  299. package/dist/server/multipart/index.d.ts.map +1 -1
  300. package/dist/server/proxy/index.d.ts +3 -3
  301. package/dist/server/proxy/index.d.ts.map +1 -1
  302. package/dist/server/rate-limit/index.d.ts +10 -10
  303. package/dist/server/rate-limit/index.d.ts.map +1 -1
  304. package/dist/server/static/index.d.ts +9 -3
  305. package/dist/server/static/index.d.ts.map +1 -1
  306. package/dist/server/static/index.js +3 -0
  307. package/dist/server/static/index.js.map +1 -1
  308. package/dist/server/swagger/index.d.ts +5 -5
  309. package/dist/server/swagger/index.d.ts.map +1 -1
  310. package/dist/sms/index.d.ts +2 -2
  311. package/dist/sms/index.d.ts.map +1 -1
  312. package/dist/system/index.d.ts +3 -2
  313. package/dist/system/index.d.ts.map +1 -1
  314. package/dist/system/index.js +7 -5
  315. package/dist/system/index.js.map +1 -1
  316. package/dist/thread/index.d.ts +3 -3
  317. package/dist/thread/index.d.ts.map +1 -1
  318. package/dist/topic/core/index.d.ts +3 -3
  319. package/dist/topic/core/index.d.ts.map +1 -1
  320. package/dist/topic/redis/index.d.ts +3 -3
  321. package/dist/topic/redis/index.d.ts.map +1 -1
  322. package/dist/vite/index.d.ts +46 -2
  323. package/dist/vite/index.d.ts.map +1 -1
  324. package/dist/vite/index.js +109 -3
  325. package/dist/vite/index.js.map +1 -1
  326. package/dist/websocket/index.d.ts +34 -34
  327. package/dist/websocket/index.d.ts.map +1 -1
  328. package/package.json +28 -8
  329. package/src/api/audits/services/AuditService.ts +1 -1
  330. package/src/api/clients/controllers/AdminOAuthClientController.spec.ts +232 -0
  331. package/src/api/clients/controllers/AdminOAuthClientController.ts +117 -0
  332. package/src/api/clients/controllers/OAuth2Controller.spec.ts +613 -0
  333. package/src/api/clients/controllers/OAuth2Controller.ts +584 -0
  334. package/src/api/clients/entities/oauthClientEntity.ts +47 -0
  335. package/src/api/clients/entities/oauthGrantEntity.ts +27 -0
  336. package/src/api/clients/index.ts +54 -0
  337. package/src/api/clients/schemas/adminClientQuerySchema.ts +10 -0
  338. package/src/api/clients/schemas/adminClientResourceSchema.ts +24 -0
  339. package/src/api/clients/schemas/createClientBodySchema.ts +18 -0
  340. package/src/api/clients/schemas/createClientResponseSchema.ts +18 -0
  341. package/src/api/clients/schemas/oauth2ErrorSchema.ts +10 -0
  342. package/src/api/clients/schemas/oauth2IntrospectionResponseSchema.ts +15 -0
  343. package/src/api/clients/schemas/oauth2TokenRequestSchema.ts +17 -0
  344. package/src/api/clients/schemas/oauth2TokenResponseSchema.ts +12 -0
  345. package/src/api/clients/services/OAuth2Service.spec.ts +770 -0
  346. package/src/api/clients/services/OAuth2Service.ts +811 -0
  347. package/src/api/files/services/FileService.ts +1 -1
  348. package/src/api/jobs/__tests__/JobController.spec.ts +66 -0
  349. package/src/api/jobs/controllers/AdminJobController.ts +6 -14
  350. package/src/api/jobs/entities/jobExecutions.ts +3 -0
  351. package/src/api/jobs/index.ts +1 -2
  352. package/src/api/jobs/primitives/$job.ts +7 -10
  353. package/src/api/jobs/providers/JobProvider.ts +63 -38
  354. package/src/api/jobs/services/JobService.ts +8 -3
  355. package/src/api/keys/services/ApiKeyService.ts +8 -27
  356. package/src/api/notifications/services/NotificationSenderService.ts +1 -1
  357. package/src/api/notifications/services/NotificationService.ts +1 -1
  358. package/src/api/parameters/controllers/{AdminConfigController.ts → AdminParameterController.ts} +78 -76
  359. package/src/api/parameters/entities/parameters.ts +2 -2
  360. package/src/api/parameters/index.ts +18 -12
  361. package/src/api/parameters/primitives/{$config.spec.ts → $parameter.spec.ts} +210 -34
  362. package/src/api/parameters/primitives/{$config.ts → $parameter.ts} +32 -32
  363. package/src/api/parameters/schedulers/ParameterActivationScheduler.ts +30 -0
  364. package/src/api/parameters/schemas/activateParameterBodySchema.ts +14 -0
  365. package/src/api/parameters/schemas/checkScheduledResponseSchema.ts +5 -1
  366. package/src/api/parameters/schemas/createParameterVersionBodySchema.ts +26 -0
  367. package/src/api/parameters/schemas/index.ts +11 -11
  368. package/src/api/parameters/schemas/parameterCurrentResponseSchema.ts +18 -0
  369. package/src/api/parameters/schemas/parameterHistoryResponseSchema.ts +13 -0
  370. package/src/api/parameters/schemas/parameterNameParamSchema.ts +8 -0
  371. package/src/api/parameters/schemas/parameterNamesResponseSchema.ts +12 -0
  372. package/src/api/parameters/schemas/parameterResponseSchema.ts +4 -20
  373. package/src/api/parameters/schemas/parameterTreeNodeSchema.ts +13 -0
  374. package/src/api/parameters/schemas/parameterVersionParamSchema.ts +11 -0
  375. package/src/api/parameters/schemas/parameterVersionResponseSchema.ts +13 -0
  376. package/src/api/parameters/schemas/parametersByStatusResponseSchema.ts +13 -0
  377. package/src/api/parameters/schemas/rollbackParameterBodySchema.ts +17 -0
  378. package/src/api/parameters/schemas/statusParamSchema.ts +3 -4
  379. package/src/api/parameters/services/{ConfigStore.ts → ParameterStore.ts} +79 -78
  380. package/src/api/users/__tests__/ApiKeys-integration.spec.ts +2 -2
  381. package/src/api/users/__tests__/EmailVerification.spec.ts +1 -1
  382. package/src/api/users/controllers/RealmController.ts +3 -3
  383. package/src/api/users/primitives/$realm.ts +36 -0
  384. package/src/api/users/services/CredentialService.ts +12 -16
  385. package/src/api/users/services/IdentityService.ts +1 -1
  386. package/src/api/users/services/RegistrationService.ts +10 -10
  387. package/src/api/users/services/SessionCrudService.ts +1 -1
  388. package/src/api/users/services/SessionService.ts +19 -25
  389. package/src/api/users/services/UserParameters.ts +6 -6
  390. package/src/api/users/services/UserService.ts +17 -27
  391. package/src/bucket/index.ts +1 -0
  392. package/src/bucket/index.workerd.ts +32 -0
  393. package/src/bucket/providers/CloudflareR2Provider.ts +376 -0
  394. package/src/cache/core/__tests__/shared.ts +202 -0
  395. package/src/cache/core/primitives/$cache.spec.ts +25 -0
  396. package/src/cache/core/primitives/$cache.ts +75 -20
  397. package/src/cache/redis/__tests__/cache-redis.spec.ts +25 -0
  398. package/src/cache/redis/providers/RedisCacheProvider.ts +13 -8
  399. package/src/cli/atoms/buildOptions.ts +29 -2
  400. package/src/cli/commands/build.ts +14 -1
  401. package/src/cli/commands/init.spec.ts +5 -15
  402. package/src/cli/commands/init.ts +2 -10
  403. package/src/cli/providers/ViteDevServerProvider.ts +460 -189
  404. package/src/cli/services/ProjectScaffolder.ts +4 -13
  405. package/src/cli/templates/agentMd.ts +11 -277
  406. package/src/cli/templates/apiHelloControllerTs.ts +1 -3
  407. package/src/command/helpers/Runner.ts +1 -1
  408. package/src/core/Alepha.ts +3 -0
  409. package/src/core/index.browser.ts +5 -5
  410. package/src/devtools/__tests__/DevCollectorProvider.spec.ts +7 -0
  411. package/src/devtools/entities/logs.ts +21 -0
  412. package/src/devtools/index.browser.ts +11 -0
  413. package/src/devtools/index.shared.ts +16 -0
  414. package/src/devtools/index.ts +43 -0
  415. package/src/devtools/providers/DevToolsMetadataProvider.ts +468 -0
  416. package/src/devtools/providers/DevToolsProvider.ts +285 -0
  417. package/src/devtools/schemas/DevActionMetadata.ts +22 -0
  418. package/src/devtools/schemas/DevAtomMetadata.ts +26 -0
  419. package/src/devtools/schemas/DevBucketMetadata.ts +11 -0
  420. package/src/devtools/schemas/DevCacheMetadata.ts +10 -0
  421. package/src/devtools/schemas/DevCommandMetadata.ts +9 -0
  422. package/src/devtools/schemas/DevEntityMetadata.ts +60 -0
  423. package/src/devtools/schemas/DevEnvMetadata.ts +22 -0
  424. package/src/devtools/schemas/DevMetadata.ts +49 -0
  425. package/src/devtools/schemas/DevModuleMetadata.ts +8 -0
  426. package/src/devtools/schemas/DevPageMetadata.ts +24 -0
  427. package/src/devtools/schemas/DevProviderMetadata.ts +10 -0
  428. package/src/devtools/schemas/DevQueueMetadata.ts +10 -0
  429. package/src/devtools/schemas/DevRealmMetadata.ts +19 -0
  430. package/src/devtools/schemas/DevRouteMetadata.ts +8 -0
  431. package/src/devtools/schemas/DevSchedulerMetadata.ts +11 -0
  432. package/src/devtools/schemas/DevTopicMetadata.ts +11 -0
  433. package/src/lock/core/primitives/$lock.ts +3 -3
  434. package/src/logger/providers/MemoryDestinationProvider.ts +1 -1
  435. package/src/orm/__tests__/$repository-crud.spec.ts +28 -16
  436. package/src/orm/__tests__/$repository-hooks.spec.ts +1 -1
  437. package/src/orm/__tests__/$repository-save.spec.ts +2 -2
  438. package/src/orm/__tests__/delete-returning.spec.ts +1 -1
  439. package/src/orm/__tests__/deletedAt.spec.ts +1 -1
  440. package/src/orm/__tests__/joins.spec.ts +15 -15
  441. package/src/orm/__tests__/orm-errors.spec.ts +790 -0
  442. package/src/orm/__tests__/security.spec.ts +3 -3
  443. package/src/orm/__tests__/version.spec.ts +3 -3
  444. package/src/orm/errors/DbColumnNotFoundError.ts +74 -0
  445. package/src/orm/errors/DbConnectionError.ts +118 -0
  446. package/src/orm/errors/DbDeadlockError.ts +36 -0
  447. package/src/orm/errors/DbForeignKeyError.ts +64 -0
  448. package/src/orm/errors/DbNotNullError.ts +77 -0
  449. package/src/orm/errors/DbTableNotFoundError.ts +63 -0
  450. package/src/orm/index.shared.ts +6 -0
  451. package/src/orm/primitives/$transaction.spec.ts +2 -2
  452. package/src/orm/providers/drivers/DatabaseProvider.ts +44 -0
  453. package/src/orm/providers/drivers/NodeSqliteProvider.ts +68 -33
  454. package/src/orm/services/Repository.spec.ts +5 -5
  455. package/src/orm/services/Repository.ts +127 -19
  456. package/src/react/auth/services/ReactAuth.ts +6 -3
  457. package/src/react/core/hooks/useClient.ts +6 -1
  458. package/src/react/form/services/FormModel.ts +45 -1
  459. package/src/react/head/providers/HeadProvider.ts +10 -1
  460. package/src/react/intro/components/GettingStarted.tsx +4 -9
  461. package/src/react/intro/components/GettingStartedAdminSlide.tsx +8 -1
  462. package/src/react/intro/components/GettingStartedAuthSlide.tsx +8 -1
  463. package/src/react/router/__tests__/head-defaults.spec.ts +49 -0
  464. package/src/react/router/providers/ReactServerProvider.ts +1 -1
  465. package/src/react/router/providers/ReactServerTemplateProvider.spec.ts +3 -1
  466. package/src/react/router/providers/SSRManifestProvider.ts +1 -0
  467. package/src/react/router/services/ReactRouter.ts +5 -1
  468. package/src/react/testing/form.ts +266 -0
  469. package/src/react/testing/index.ts +47 -0
  470. package/src/react/testing/render.tsx +182 -0
  471. package/src/react/testing/setup.ts +101 -0
  472. package/src/security/__tests__/ServerCsrfProvider.spec.ts +132 -0
  473. package/src/security/index.ts +4 -0
  474. package/src/security/providers/ServerCsrfProvider.ts +57 -0
  475. package/src/security/providers/ServerSecurityProvider.ts +5 -1
  476. package/src/server/auth/providers/ServerAuthProvider.ts +1 -1
  477. package/src/server/cache/providers/ServerCacheProvider.ts +1 -0
  478. package/src/server/core/index.ts +3 -1
  479. package/src/server/core/providers/ServerLoggerProvider.ts +7 -1
  480. package/src/server/core/providers/ServerRouterProvider.ts +7 -0
  481. package/src/server/core/services/HttpClient.ts +3 -1
  482. package/src/server/static/primitives/$serve.ts +7 -0
  483. package/src/server/static/providers/ServerStaticProvider.ts +3 -0
  484. package/src/system/providers/NodeShellProvider.ts +11 -7
  485. package/src/vite/tasks/buildClient.ts +1 -0
  486. package/src/vite/tasks/generateCloudflare.ts +15 -0
  487. package/src/vite/tasks/generateStatic.ts +229 -0
  488. package/src/vite/tasks/index.ts +1 -0
  489. package/src/api/jobs/services/JobAudits.spec.ts +0 -89
  490. package/src/api/jobs/services/JobAudits.ts +0 -101
  491. package/src/api/parameters/schedulers/ConfigActivationScheduler.ts +0 -30
  492. package/src/api/parameters/schemas/activateConfigBodySchema.ts +0 -12
  493. package/src/api/parameters/schemas/configCurrentResponseSchema.ts +0 -13
  494. package/src/api/parameters/schemas/configHistoryResponseSchema.ts +0 -9
  495. package/src/api/parameters/schemas/configNameParamSchema.ts +0 -10
  496. package/src/api/parameters/schemas/configNamesResponseSchema.ts +0 -8
  497. package/src/api/parameters/schemas/configTreeNodeSchema.ts +0 -13
  498. package/src/api/parameters/schemas/configVersionParamSchema.ts +0 -9
  499. package/src/api/parameters/schemas/configVersionResponseSchema.ts +0 -9
  500. package/src/api/parameters/schemas/configsByStatusResponseSchema.ts +0 -9
  501. package/src/api/parameters/schemas/createConfigVersionBodySchema.ts +0 -24
  502. package/src/api/parameters/schemas/rollbackConfigBodySchema.ts +0 -15
  503. package/src/cli/providers/DevServerProvider.ts +0 -563
package/AGENTS.md ADDED
@@ -0,0 +1,245 @@
1
+ # Alepha Framework
2
+
3
+ Convention-driven TypeScript framework for type-safe full-stack applications.
4
+
5
+ ## Philosophy
6
+
7
+ - **Primitives**: `$`-prefixed functions (`$action`, `$entity`, `$page`)
8
+ - **Class-Based**: Services are classes, primitives are class properties
9
+ - **Zero-Config**: Code structure IS configuration
10
+ - **End-to-End Types**: Database → API → React
11
+
12
+ ## Rules
13
+
14
+ - Use `t` from Alepha for schemas (not Zod)
15
+ - Use `protected` instead of `private` for class members
16
+ - Import with file extensions: `import { User } from "./User.ts"`
17
+ - Primitives are class properties (except `$entity`, `$atom`)
18
+ - No decorators, no Express/Fastify patterns
19
+ - No manual instantiation - use dependency injection
20
+
21
+ ## Project Structure
22
+
23
+ ```
24
+ src/
25
+ ├── api/ # Backend
26
+ │ ├── controllers/ # $action endpoints
27
+ │ ├── services/ # Business logic
28
+ │ ├── entities/ # $entity definitions
29
+ │ └── index.ts # $module
30
+ ├── web/ # Frontend (React)
31
+ │ ├── components/ # React components
32
+ │ ├── atoms/ # $atom state
33
+ │ ├── AppRouter.ts # $page routes
34
+ │ └── index.ts # $module
35
+ ├── main.server.ts # Server entry
36
+ ├── main.browser.ts # Browser entry
37
+ └── main.css # Styles
38
+ ```
39
+
40
+ ## Primitives Reference
41
+
42
+ ### Core (`alepha`)
43
+ | Primitive | Purpose |
44
+ |-----------|---------|
45
+ | `$inject` | Dependency injection |
46
+ | `$env` | Environment variables |
47
+ | `$hook` | Lifecycle hooks (on: "start", "stop") |
48
+ | `$atom` | Global state (module-level) |
49
+ | `$module` | Module definition |
50
+ | `$context` | Request-scoped context |
51
+
52
+ ### Server (`alepha/server`)
53
+ | Primitive | Purpose |
54
+ |-----------|---------|
55
+ | `$action` | REST API endpoints (auto GET/POST) |
56
+ | `$route` | Low-level HTTP routes |
57
+ | `$client` | Type-safe HTTP client for cross-module |
58
+
59
+ ### Database (`alepha/orm`)
60
+ | Primitive | Purpose |
61
+ |-----------|---------|
62
+ | `$entity` | Database table definition |
63
+ | `$repository` | Type-safe CRUD operations |
64
+ | `$sequence` | Auto-increment sequences |
65
+
66
+ ### Infrastructure
67
+ | Primitive | Import | Purpose |
68
+ |-----------|--------|---------|
69
+ | `$logger` | `alepha/logger` | Structured logging |
70
+ | `$queue` | `alepha/queue` | Background jobs |
71
+ | `$scheduler` | `alepha/scheduler` | Cron tasks |
72
+ | `$cache` | `alepha/cache` | Cached computations |
73
+ | `$bucket` | `alepha/bucket` | File storage |
74
+ | `$email` | `alepha/email` | Email sending |
75
+ | `$sms` | `alepha/sms` | SMS sending |
76
+ | `$lock` | `alepha/lock` | Distributed locks |
77
+ | `$retry` | `alepha/retry` | Retry with backoff |
78
+
79
+ ### Security (`alepha/security`)
80
+ | Primitive | Purpose |
81
+ |-----------|---------|
82
+ | `$issuer` | JWT token generation/validation |
83
+ | `$permission` | Permission definitions |
84
+ | `$role` | Role-based access |
85
+ | `$basicAuth` | HTTP Basic Auth |
86
+ | `$serviceAccount` | Service-to-service auth |
87
+
88
+ ### React (`alepha/react/router`)
89
+ | Primitive | Purpose |
90
+ |-----------|---------|
91
+ | `$page` | Pages with SSR, loaders, code-splitting |
92
+ | `$head` | Document head management |
93
+ | `$dictionary` | i18n translations |
94
+
95
+ ### Other
96
+ | Primitive | Import | Purpose |
97
+ |-----------|--------|---------|
98
+ | `$command` | `alepha/command` | CLI commands |
99
+ | `$channel` | `alepha/websocket` | WebSocket channels |
100
+ | `$swagger` | `alepha/server` | OpenAPI docs |
101
+ | `$proxy` | `alepha/server` | HTTP proxy |
102
+ | `$tool` | `alepha/mcp` | MCP tool definition |
103
+ | `$prompt` | `alepha/mcp` | MCP prompt definition |
104
+ | `$resource` | `alepha/mcp` | MCP resource definition |
105
+
106
+ ## React Hooks
107
+
108
+ ```typescript
109
+ import { useAlepha, useClient, useStore, useAction, useInject } from "alepha/react";
110
+ import { useRouter, useActive, useQueryParams } from "alepha/react/router";
111
+ import { useForm, useFormState } from "alepha/react/form";
112
+ import { useAuth } from "alepha/react/auth";
113
+ import { useHead } from "alepha/react/head";
114
+ import { useI18n } from "alepha/react/i18n";
115
+ ```
116
+
117
+ | Hook | Purpose |
118
+ |------|---------|
119
+ | `useClient<T>()` | Type-safe API calls |
120
+ | `useStore(atom)` | Global state `[value, setValue]` |
121
+ | `useAction({ handler })` | Async ops with loading/error |
122
+ | `useRouter<T>()` | Type-safe navigation |
123
+ | `useActive(path)` | Check if route is active |
124
+ | `useForm({ schema, handler })` | Forms with validation |
125
+ | `useAuth()` | Authentication state |
126
+ | `useInject(Service)` | Access DI container |
127
+
128
+ ## Examples
129
+
130
+ ### API Endpoint
131
+ ```typescript
132
+ import { t } from "alepha";
133
+ import { $action } from "alepha/server";
134
+
135
+ class UserController {
136
+ getUser = $action({
137
+ path: "/users/:id",
138
+ schema: {
139
+ params: t.object({ id: t.uuid() }),
140
+ response: t.object({ id: t.uuid(), email: t.email() }),
141
+ },
142
+ handler: async ({ params }) => this.userRepo.findById(params.id),
143
+ });
144
+ }
145
+ ```
146
+
147
+ ### Entity & Repository
148
+ ```typescript
149
+ import { t } from "alepha";
150
+ import { $entity, $repository, db } from "alepha/orm";
151
+
152
+ export const userEntity = $entity({
153
+ name: "users",
154
+ schema: t.object({
155
+ id: db.primaryKey(),
156
+ email: t.email(),
157
+ createdAt: db.createdAt(),
158
+ }),
159
+ });
160
+
161
+ class UserService {
162
+ users = $repository(userEntity);
163
+ }
164
+ ```
165
+
166
+ ### Page with Loader
167
+ ```tsx
168
+ import { t } from "alepha";
169
+ import { $page } from "alepha/react/router";
170
+ import { $client } from "alepha/server/links";
171
+
172
+ class AppRouter {
173
+ api = $client<UserController>();
174
+
175
+ userDetail = $page({
176
+ path: "/users/:id",
177
+ schema: { params: t.object({ id: t.uuid() }) },
178
+ loader: async ({ params }) => ({
179
+ user: await this.api.getUser({ params })
180
+ }),
181
+ component: ({ user }) => <div>{user.email}</div>,
182
+ });
183
+ }
184
+ ```
185
+
186
+ ### Form
187
+ ```tsx
188
+ import { t } from "alepha";
189
+ import { useForm } from "alepha/react/form";
190
+
191
+ function LoginForm() {
192
+ const form = useForm({
193
+ schema: t.object({
194
+ email: t.email(),
195
+ password: t.text(),
196
+ }),
197
+ handler: async (values) => {
198
+ await api.login(values);
199
+ },
200
+ });
201
+
202
+ return (
203
+ <form {...form.props}>
204
+ <input {...form.input.email.props} />
205
+ <input {...form.input.password.props} />
206
+ <button type="submit">Login</button>
207
+ </form>
208
+ );
209
+ }
210
+ ```
211
+
212
+ ## Schema Types (`t`)
213
+
214
+ ```typescript
215
+ import { t } from "alepha";
216
+
217
+ t.string() // Basic string
218
+ t.text() // String with maxLength, trim, lowercase options
219
+ t.email() // Email validation
220
+ t.uuid() // UUID validation
221
+ t.number() // Number
222
+ t.integer() // Integer
223
+ t.boolean() // Boolean
224
+ t.date() // Date
225
+ t.array(t.string()) // Array
226
+ t.object({ ... }) // Object
227
+ t.optional(t.string()) // Optional
228
+ t.nullable(t.string()) // Nullable
229
+ t.enum(["a", "b"]) // Enum
230
+ t.literal("value") // Literal
231
+ t.union([...]) // Union
232
+ ```
233
+
234
+ ## Common Mistakes
235
+
236
+ 1. Using decorators → Use primitives (`$action`, not `@Get()`)
237
+ 2. Using Zod → Use `t` from Alepha
238
+ 3. Using Express patterns → No `app.get()`, `router.use()`
239
+ 4. Using `$inject` across modules → Use `$client` instead
240
+ 5. Using async constructors → Use `$hook({ on: "start" })`
241
+ 6. Manual instantiation → Let DI container manage
242
+
243
+ ## Source Code
244
+
245
+ Read implementation at `src/` directory. Check `.spec.ts` files for usage examples.
package/CLAUDE.md ADDED
@@ -0,0 +1,245 @@
1
+ # Alepha Framework
2
+
3
+ Convention-driven TypeScript framework for type-safe full-stack applications.
4
+
5
+ ## Philosophy
6
+
7
+ - **Primitives**: `$`-prefixed functions (`$action`, `$entity`, `$page`)
8
+ - **Class-Based**: Services are classes, primitives are class properties
9
+ - **Zero-Config**: Code structure IS configuration
10
+ - **End-to-End Types**: Database → API → React
11
+
12
+ ## Rules
13
+
14
+ - Use `t` from Alepha for schemas (not Zod)
15
+ - Use `protected` instead of `private` for class members
16
+ - Import with file extensions: `import { User } from "./User.ts"`
17
+ - Primitives are class properties (except `$entity`, `$atom`)
18
+ - No decorators, no Express/Fastify patterns
19
+ - No manual instantiation - use dependency injection
20
+
21
+ ## Project Structure
22
+
23
+ ```
24
+ src/
25
+ ├── api/ # Backend
26
+ │ ├── controllers/ # $action endpoints
27
+ │ ├── services/ # Business logic
28
+ │ ├── entities/ # $entity definitions
29
+ │ └── index.ts # $module
30
+ ├── web/ # Frontend (React)
31
+ │ ├── components/ # React components
32
+ │ ├── atoms/ # $atom state
33
+ │ ├── AppRouter.ts # $page routes
34
+ │ └── index.ts # $module
35
+ ├── main.server.ts # Server entry
36
+ ├── main.browser.ts # Browser entry
37
+ └── main.css # Styles
38
+ ```
39
+
40
+ ## Primitives Reference
41
+
42
+ ### Core (`alepha`)
43
+ | Primitive | Purpose |
44
+ |-----------|---------|
45
+ | `$inject` | Dependency injection |
46
+ | `$env` | Environment variables |
47
+ | `$hook` | Lifecycle hooks (on: "start", "stop") |
48
+ | `$atom` | Global state (module-level) |
49
+ | `$module` | Module definition |
50
+ | `$context` | Request-scoped context |
51
+
52
+ ### Server (`alepha/server`)
53
+ | Primitive | Purpose |
54
+ |-----------|---------|
55
+ | `$action` | REST API endpoints (auto GET/POST) |
56
+ | `$route` | Low-level HTTP routes |
57
+ | `$client` | Type-safe HTTP client for cross-module |
58
+
59
+ ### Database (`alepha/orm`)
60
+ | Primitive | Purpose |
61
+ |-----------|---------|
62
+ | `$entity` | Database table definition |
63
+ | `$repository` | Type-safe CRUD operations |
64
+ | `$sequence` | Auto-increment sequences |
65
+
66
+ ### Infrastructure
67
+ | Primitive | Import | Purpose |
68
+ |-----------|--------|---------|
69
+ | `$logger` | `alepha/logger` | Structured logging |
70
+ | `$queue` | `alepha/queue` | Background jobs |
71
+ | `$scheduler` | `alepha/scheduler` | Cron tasks |
72
+ | `$cache` | `alepha/cache` | Cached computations |
73
+ | `$bucket` | `alepha/bucket` | File storage |
74
+ | `$email` | `alepha/email` | Email sending |
75
+ | `$sms` | `alepha/sms` | SMS sending |
76
+ | `$lock` | `alepha/lock` | Distributed locks |
77
+ | `$retry` | `alepha/retry` | Retry with backoff |
78
+
79
+ ### Security (`alepha/security`)
80
+ | Primitive | Purpose |
81
+ |-----------|---------|
82
+ | `$issuer` | JWT token generation/validation |
83
+ | `$permission` | Permission definitions |
84
+ | `$role` | Role-based access |
85
+ | `$basicAuth` | HTTP Basic Auth |
86
+ | `$serviceAccount` | Service-to-service auth |
87
+
88
+ ### React (`alepha/react/router`)
89
+ | Primitive | Purpose |
90
+ |-----------|---------|
91
+ | `$page` | Pages with SSR, loaders, code-splitting |
92
+ | `$head` | Document head management |
93
+ | `$dictionary` | i18n translations |
94
+
95
+ ### Other
96
+ | Primitive | Import | Purpose |
97
+ |-----------|--------|---------|
98
+ | `$command` | `alepha/command` | CLI commands |
99
+ | `$channel` | `alepha/websocket` | WebSocket channels |
100
+ | `$swagger` | `alepha/server` | OpenAPI docs |
101
+ | `$proxy` | `alepha/server` | HTTP proxy |
102
+ | `$tool` | `alepha/mcp` | MCP tool definition |
103
+ | `$prompt` | `alepha/mcp` | MCP prompt definition |
104
+ | `$resource` | `alepha/mcp` | MCP resource definition |
105
+
106
+ ## React Hooks
107
+
108
+ ```typescript
109
+ import { useAlepha, useClient, useStore, useAction, useInject } from "alepha/react";
110
+ import { useRouter, useActive, useQueryParams } from "alepha/react/router";
111
+ import { useForm, useFormState } from "alepha/react/form";
112
+ import { useAuth } from "alepha/react/auth";
113
+ import { useHead } from "alepha/react/head";
114
+ import { useI18n } from "alepha/react/i18n";
115
+ ```
116
+
117
+ | Hook | Purpose |
118
+ |------|---------|
119
+ | `useClient<T>()` | Type-safe API calls |
120
+ | `useStore(atom)` | Global state `[value, setValue]` |
121
+ | `useAction({ handler })` | Async ops with loading/error |
122
+ | `useRouter<T>()` | Type-safe navigation |
123
+ | `useActive(path)` | Check if route is active |
124
+ | `useForm({ schema, handler })` | Forms with validation |
125
+ | `useAuth()` | Authentication state |
126
+ | `useInject(Service)` | Access DI container |
127
+
128
+ ## Examples
129
+
130
+ ### API Endpoint
131
+ ```typescript
132
+ import { t } from "alepha";
133
+ import { $action } from "alepha/server";
134
+
135
+ class UserController {
136
+ getUser = $action({
137
+ path: "/users/:id",
138
+ schema: {
139
+ params: t.object({ id: t.uuid() }),
140
+ response: t.object({ id: t.uuid(), email: t.email() }),
141
+ },
142
+ handler: async ({ params }) => this.userRepo.findById(params.id),
143
+ });
144
+ }
145
+ ```
146
+
147
+ ### Entity & Repository
148
+ ```typescript
149
+ import { t } from "alepha";
150
+ import { $entity, $repository, db } from "alepha/orm";
151
+
152
+ export const userEntity = $entity({
153
+ name: "users",
154
+ schema: t.object({
155
+ id: db.primaryKey(),
156
+ email: t.email(),
157
+ createdAt: db.createdAt(),
158
+ }),
159
+ });
160
+
161
+ class UserService {
162
+ users = $repository(userEntity);
163
+ }
164
+ ```
165
+
166
+ ### Page with Loader
167
+ ```tsx
168
+ import { t } from "alepha";
169
+ import { $page } from "alepha/react/router";
170
+ import { $client } from "alepha/server/links";
171
+
172
+ class AppRouter {
173
+ api = $client<UserController>();
174
+
175
+ userDetail = $page({
176
+ path: "/users/:id",
177
+ schema: { params: t.object({ id: t.uuid() }) },
178
+ loader: async ({ params }) => ({
179
+ user: await this.api.getUser({ params })
180
+ }),
181
+ component: ({ user }) => <div>{user.email}</div>,
182
+ });
183
+ }
184
+ ```
185
+
186
+ ### Form
187
+ ```tsx
188
+ import { t } from "alepha";
189
+ import { useForm } from "alepha/react/form";
190
+
191
+ function LoginForm() {
192
+ const form = useForm({
193
+ schema: t.object({
194
+ email: t.email(),
195
+ password: t.text(),
196
+ }),
197
+ handler: async (values) => {
198
+ await api.login(values);
199
+ },
200
+ });
201
+
202
+ return (
203
+ <form {...form.props}>
204
+ <input {...form.input.email.props} />
205
+ <input {...form.input.password.props} />
206
+ <button type="submit">Login</button>
207
+ </form>
208
+ );
209
+ }
210
+ ```
211
+
212
+ ## Schema Types (`t`)
213
+
214
+ ```typescript
215
+ import { t } from "alepha";
216
+
217
+ t.string() // Basic string
218
+ t.text() // String with maxLength, trim, lowercase options
219
+ t.email() // Email validation
220
+ t.uuid() // UUID validation
221
+ t.number() // Number
222
+ t.integer() // Integer
223
+ t.boolean() // Boolean
224
+ t.date() // Date
225
+ t.array(t.string()) // Array
226
+ t.object({ ... }) // Object
227
+ t.optional(t.string()) // Optional
228
+ t.nullable(t.string()) // Nullable
229
+ t.enum(["a", "b"]) // Enum
230
+ t.literal("value") // Literal
231
+ t.union([...]) // Union
232
+ ```
233
+
234
+ ## Common Mistakes
235
+
236
+ 1. Using decorators → Use primitives (`$action`, not `@Get()`)
237
+ 2. Using Zod → Use `t` from Alepha
238
+ 3. Using Express patterns → No `app.get()`, `router.use()`
239
+ 4. Using `$inject` across modules → Use `$client` instead
240
+ 5. Using async constructors → Use `$hook({ on: "start" })`
241
+ 6. Manual instantiation → Let DI container manage
242
+
243
+ ## Source Code
244
+
245
+ Read implementation at `src/` directory. Check `.spec.ts` files for usage examples.
package/README.md CHANGED
@@ -9,33 +9,36 @@
9
9
  />
10
10
  Alepha
11
11
  </h1>
12
- <p>TypeScript Framework Made Easy</p>
12
+ <p>The AI-Native Application Engine</p>
13
13
  <a href="https://www.npmjs.com/package/alepha"><img src="https://img.shields.io/npm/v/alepha.svg" alt="npm version"/></a>
14
14
  <a href="https://www.npmjs.com/package/alepha"><img src="https://img.shields.io/npm/l/alepha.svg" alt="license"/></a>
15
15
  <a href="https://codecov.io/gh/feunard/alepha"><img src="https://codecov.io/gh/feunard/alepha/graph/badge.svg?token=ZDLWI514CP" alt="coverage"/></a>
16
16
  <a href="https://www.npmjs.com/package/alepha"><img src="https://img.shields.io/npm/dt/alepha.svg" alt="downloads"/></a>
17
17
  </div>
18
18
 
19
- ## What is this?
19
+ > [!WARNING]
20
+ > This project is in active development and may not be suitable for production use. Please report any issues or bugs on [GitHub](https://github.com/feunard/alepha/issues).
20
21
 
21
- Enterprise-grade TypeScript framework for building full-stack applications with end-to-end type safety and minimal boilerplate.
22
+ ## What is Alepha?
22
23
 
23
- - **Multi-runtime** Same code runs on Node, Bun, Workerd, Browser, and Expo
24
- - **One schema, everywhere** — Define once, get database, validation, TypeScript types, and React forms
24
+ Full-stack TypeScript engine for agentic era. Define your schema once — get database, API, types, and forms.
25
+
26
+ - **One schema, everywhere** — Database, API validation, TypeScript types, React forms — all from one definition
25
27
  - **Full autocomplete** — Client calls server with complete type safety, zero codegen
26
- - **Substitutable** — Swap any service with `.with()` for testing or customization
28
+ - **Multi-runtime** — Same code runs on Node, Bun, and Cloudflare Workers
27
29
  - **Deploy anywhere** — Cloudflare, Vercel, Docker, bare metal
28
- - **AI friendly** — Built-in [llms.txt](https://alepha.dev/llms.txt) for LLM context
29
30
 
30
- Pick your layer. Each one builds on the previous.
31
+ Built on predictable conventions and typed primitives works great with AI coding assistants (BYOA).
32
+
33
+ Each layer builds on the previous.
31
34
 
32
- | Layer | Description | Primitives |
33
- |-------|-------------|------------|
34
- | **L0** | Foundation: DI, lifecycle, config | `$inject`, `$client`, `$env`, `$module`, `$hook`, `$logger` |
35
- | **L1** | Backend: database, queues, storage | `$entity`, `$action`, `$queue`, `$bucket`, `$permission` |
36
- | **L2** | React frontend with SSR, routing, i18n | `$page`, `$head`, `$atom`, `$dictionary` |
37
- | **L3** | SaaS features: users, jobs, audits | `$realm`, `$job`, `$audit`, `$notification` |
38
- | **L4** | Admin panel & auth UI included | `$uiAdmin`, `$uiAuth` |
35
+ | Layer | Description | Primitives |
36
+ |-------|-------------|---------------------------------------------------------|
37
+ | **Foundation** | DI, lifecycle, config | `$inject`, `$env`, `$module`, `$hook`, `$logger` |
38
+ | **Backend** | Database, queues, storage, API | `$entity`, `$action`, `$queue`, `$bucket`, `$scheduler` |
39
+ | **Frontend** | React with SSR, routing, i18n | `$page`, `$head`, `$atom`, `$dictionary` |
40
+ | **Platform** | Users, auth, jobs, audits | `$realm`, `$job`, `$audit`, `$notification` |
41
+ | **Admin** | Admin panel & auth UI | `$uiAdmin`, `$uiAuth` |
39
42
 
40
43
  ## Example
41
44
 
@@ -92,26 +95,12 @@ Requirements: [Node.js](https://nodejs.org/) 22+ or [Bun](https://bun.sh/) 1.3+
92
95
 
93
96
  ```bash
94
97
  npx alepha init my-app --api # L1: Backend only
95
- npx alepha init my-app --react # L2: + React frontend
96
- npx alepha init my-app --admin # L4: Full SaaS starter
97
- npx alepha init my-app --admin --ai # L4: + AI assistant context
98
+ --react # L2: + React frontend
99
+ --admin # L3: + Admin UI
98
100
 
99
101
  cd my-app && npm run dev
100
102
  ```
101
103
 
102
- ## CLI
103
-
104
- ```bash
105
- alepha dev # Dev server with HMR
106
- alepha lint # Format & lint code
107
- alepha typecheck # TypeScript check
108
- alepha test # Run tests
109
- alepha build # Production build
110
- alepha db generate # Generate migrations
111
- alepha db migrate # Apply migrations
112
- alepha db studio # Visual database browser
113
- ```
114
-
115
104
  ## Learn More
116
105
 
117
106
  - [Documentation](https://alepha.dev)