alepha 0.13.7 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (512) hide show
  1. package/README.md +5 -2
  2. package/assets/swagger-ui/swagger-ui-bundle.js +1 -1
  3. package/assets/swagger-ui/swagger-ui-standalone-preset.js +1 -1
  4. package/assets/swagger-ui/swagger-ui.css +1 -1
  5. package/dist/{api-audits → api/audits}/index.browser.js +4 -4
  6. package/dist/api/audits/index.browser.js.map +1 -0
  7. package/dist/{api-audits → api/audits}/index.d.ts +10 -9
  8. package/dist/api/audits/index.d.ts.map +1 -0
  9. package/dist/{api-audits → api/audits}/index.js +8 -8
  10. package/dist/api/audits/index.js.map +1 -0
  11. package/dist/{api-files → api/files}/index.browser.js +5 -5
  12. package/dist/api/files/index.browser.js.map +1 -0
  13. package/dist/{api-files → api/files}/index.d.ts +18 -10
  14. package/dist/api/files/index.d.ts.map +1 -0
  15. package/dist/{api-files → api/files}/index.js +10 -10
  16. package/dist/api/files/index.js.map +1 -0
  17. package/dist/{api-jobs → api/jobs}/index.browser.js +5 -5
  18. package/dist/api/jobs/index.browser.js.map +1 -0
  19. package/dist/{api-jobs → api/jobs}/index.d.ts +168 -167
  20. package/dist/api/jobs/index.d.ts.map +1 -0
  21. package/dist/{api-jobs → api/jobs}/index.js +9 -9
  22. package/dist/api/jobs/index.js.map +1 -0
  23. package/dist/{api-notifications → api/notifications}/index.browser.js +11 -11
  24. package/dist/api/notifications/index.browser.js.map +1 -0
  25. package/dist/api/notifications/index.d.ts +327 -0
  26. package/dist/api/notifications/index.d.ts.map +1 -0
  27. package/dist/{api-notifications → api/notifications}/index.js +11 -11
  28. package/dist/api/notifications/index.js.map +1 -0
  29. package/dist/{api-parameters → api/parameters}/index.browser.js +2 -2
  30. package/dist/api/parameters/index.browser.js.map +1 -0
  31. package/dist/{api-parameters → api/parameters}/index.d.ts +11 -11
  32. package/dist/api/parameters/index.d.ts.map +1 -0
  33. package/dist/{api-parameters → api/parameters}/index.js +7 -7
  34. package/dist/api/parameters/index.js.map +1 -0
  35. package/dist/{api-users → api/users}/index.browser.js +6 -6
  36. package/dist/api/users/index.browser.js.map +1 -0
  37. package/dist/{api-users → api/users}/index.d.ts +836 -836
  38. package/dist/api/users/index.d.ts.map +1 -0
  39. package/dist/{api-users → api/users}/index.js +99 -766
  40. package/dist/api/users/index.js.map +1 -0
  41. package/dist/{api-verifications → api/verifications}/index.browser.js +5 -5
  42. package/dist/api/verifications/index.browser.js.map +1 -0
  43. package/dist/api/verifications/index.d.ts +248 -0
  44. package/dist/api/verifications/index.d.ts.map +1 -0
  45. package/dist/{api-verifications → api/verifications}/index.js +11 -11
  46. package/dist/api/verifications/index.js.map +1 -0
  47. package/dist/batch/index.d.ts.map +1 -0
  48. package/dist/bucket/index.d.ts.map +1 -0
  49. package/dist/cache/{index.d.ts → core/index.d.ts} +4 -4
  50. package/dist/cache/core/index.d.ts.map +1 -0
  51. package/dist/cache/{index.js → core/index.js} +5 -5
  52. package/dist/cache/core/index.js.map +1 -0
  53. package/dist/{cache-redis → cache/redis}/index.d.ts +2 -2
  54. package/dist/cache/redis/index.d.ts.map +1 -0
  55. package/dist/{cache-redis → cache/redis}/index.js +2 -2
  56. package/dist/cache/redis/index.js.map +1 -0
  57. package/dist/cli/index.d.ts +78 -58
  58. package/dist/cli/index.d.ts.map +1 -0
  59. package/dist/cli/index.js +454 -154
  60. package/dist/cli/index.js.map +1 -1
  61. package/dist/command/index.d.ts +15 -5
  62. package/dist/command/index.d.ts.map +1 -0
  63. package/dist/command/index.js +45 -6
  64. package/dist/command/index.js.map +1 -1
  65. package/dist/core/index.browser.js +1334 -1318
  66. package/dist/core/index.browser.js.map +1 -1
  67. package/dist/core/index.d.ts +75 -71
  68. package/dist/core/index.d.ts.map +1 -0
  69. package/dist/core/index.js +1337 -1321
  70. package/dist/core/index.js.map +1 -1
  71. package/dist/core/index.native.js +1337 -1321
  72. package/dist/core/index.native.js.map +1 -1
  73. package/dist/datetime/index.d.ts.map +1 -0
  74. package/dist/email/index.d.ts.map +1 -0
  75. package/dist/fake/index.d.ts.map +1 -0
  76. package/dist/file/index.d.ts.map +1 -0
  77. package/dist/lock/{index.d.ts → core/index.d.ts} +5 -5
  78. package/dist/lock/core/index.d.ts.map +1 -0
  79. package/dist/lock/{index.js → core/index.js} +5 -5
  80. package/dist/lock/core/index.js.map +1 -0
  81. package/dist/{lock-redis → lock/redis}/index.d.ts +2 -2
  82. package/dist/lock/redis/index.d.ts.map +1 -0
  83. package/dist/{lock-redis → lock/redis}/index.js +2 -2
  84. package/dist/lock/redis/index.js.map +1 -0
  85. package/dist/logger/index.d.ts +1 -0
  86. package/dist/logger/index.d.ts.map +1 -0
  87. package/dist/mcp/index.d.ts +820 -0
  88. package/dist/mcp/index.d.ts.map +1 -0
  89. package/dist/mcp/index.js +978 -0
  90. package/dist/mcp/index.js.map +1 -0
  91. package/dist/orm/index.d.ts +180 -107
  92. package/dist/orm/index.d.ts.map +1 -0
  93. package/dist/orm/index.js +260 -174
  94. package/dist/orm/index.js.map +1 -1
  95. package/dist/queue/core/index.d.ts +548 -0
  96. package/dist/queue/core/index.d.ts.map +1 -0
  97. package/dist/queue/core/index.js +391 -0
  98. package/dist/queue/core/index.js.map +1 -0
  99. package/dist/queue/redis/index.d.ts +28 -0
  100. package/dist/queue/redis/index.d.ts.map +1 -0
  101. package/dist/queue/redis/index.js +43 -0
  102. package/dist/queue/redis/index.js.map +1 -0
  103. package/dist/redis/index.d.ts.map +1 -0
  104. package/dist/retry/index.d.ts.map +1 -0
  105. package/dist/router/index.d.ts.map +1 -0
  106. package/dist/scheduler/index.d.ts +1 -1
  107. package/dist/scheduler/index.d.ts.map +1 -0
  108. package/dist/scheduler/index.js +1 -393
  109. package/dist/scheduler/index.js.map +1 -1
  110. package/dist/security/index.d.ts +1 -1
  111. package/dist/security/index.d.ts.map +1 -0
  112. package/dist/security/index.js +2 -1413
  113. package/dist/security/index.js.map +1 -1
  114. package/dist/{server-auth → server/auth}/index.browser.js +6 -6
  115. package/dist/server/auth/index.browser.js.map +1 -0
  116. package/dist/{server-auth → server/auth}/index.d.ts +167 -167
  117. package/dist/server/auth/index.d.ts.map +1 -0
  118. package/dist/server/auth/index.js +742 -0
  119. package/dist/server/auth/index.js.map +1 -0
  120. package/dist/{server-cache → server/cache}/index.d.ts +2 -2
  121. package/dist/server/cache/index.d.ts.map +1 -0
  122. package/dist/{server-cache → server/cache}/index.js +2 -2
  123. package/dist/server/cache/index.js.map +1 -0
  124. package/dist/{server-compress → server/compress}/index.d.ts +2 -2
  125. package/dist/server/compress/index.d.ts.map +1 -0
  126. package/dist/{server-compress → server/compress}/index.js +2 -2
  127. package/dist/server/compress/index.js.map +1 -0
  128. package/dist/{server-cookies → server/cookies}/index.browser.js +3 -3
  129. package/dist/server/cookies/index.browser.js.map +1 -0
  130. package/dist/{server-cookies → server/cookies}/index.d.ts +4 -4
  131. package/dist/server/cookies/index.d.ts.map +1 -0
  132. package/dist/{server-cookies → server/cookies}/index.js +4 -4
  133. package/dist/server/cookies/index.js.map +1 -0
  134. package/dist/server/{index.browser.js → core/index.browser.js} +14 -14
  135. package/dist/server/core/index.browser.js.map +1 -0
  136. package/dist/server/{index.d.ts → core/index.d.ts} +36 -36
  137. package/dist/server/core/index.d.ts.map +1 -0
  138. package/dist/server/{index.js → core/index.js} +27 -27
  139. package/dist/server/core/index.js.map +1 -0
  140. package/dist/{server-cors → server/cors}/index.d.ts +3 -3
  141. package/dist/server/cors/index.d.ts.map +1 -0
  142. package/dist/{server-cors → server/cors}/index.js +3 -3
  143. package/dist/server/cors/index.js.map +1 -0
  144. package/dist/{server-health → server/health}/index.d.ts +3 -3
  145. package/dist/server/health/index.d.ts.map +1 -0
  146. package/dist/{server-health → server/health}/index.js +3 -3
  147. package/dist/server/health/index.js.map +1 -0
  148. package/dist/{server-helmet → server/helmet}/index.d.ts +2 -2
  149. package/dist/server/helmet/index.d.ts.map +1 -0
  150. package/dist/{server-helmet → server/helmet}/index.js +2 -2
  151. package/dist/server/helmet/index.js.map +1 -0
  152. package/dist/{server-links → server/links}/index.browser.js +5 -5
  153. package/dist/server/links/index.browser.js.map +1 -0
  154. package/dist/{server-links → server/links}/index.d.ts +40 -40
  155. package/dist/server/links/index.d.ts.map +1 -0
  156. package/dist/{server-links → server/links}/index.js +7 -7
  157. package/dist/server/links/index.js.map +1 -0
  158. package/dist/{server-metrics → server/metrics}/index.d.ts +2 -2
  159. package/dist/server/metrics/index.d.ts.map +1 -0
  160. package/dist/server/metrics/index.js +74 -0
  161. package/dist/server/metrics/index.js.map +1 -0
  162. package/dist/{server-multipart → server/multipart}/index.d.ts +2 -2
  163. package/dist/server/multipart/index.d.ts.map +1 -0
  164. package/dist/{server-multipart → server/multipart}/index.js +2 -2
  165. package/dist/server/multipart/index.js.map +1 -0
  166. package/dist/{server-proxy → server/proxy}/index.d.ts +3 -3
  167. package/dist/server/proxy/index.d.ts.map +1 -0
  168. package/dist/{server-proxy → server/proxy}/index.js +3 -3
  169. package/dist/server/proxy/index.js.map +1 -0
  170. package/dist/{server-rate-limit → server/rate-limit}/index.d.ts +4 -4
  171. package/dist/server/rate-limit/index.d.ts.map +1 -0
  172. package/dist/{server-rate-limit → server/rate-limit}/index.js +4 -4
  173. package/dist/server/rate-limit/index.js.map +1 -0
  174. package/dist/{server-security → server/security}/index.browser.js +1 -1
  175. package/dist/server/security/index.browser.js.map +1 -0
  176. package/dist/{server-security → server/security}/index.d.ts +4 -4
  177. package/dist/server/security/index.d.ts.map +1 -0
  178. package/dist/{server-security → server/security}/index.js +4 -4
  179. package/dist/server/security/index.js.map +1 -0
  180. package/dist/{server-static → server/static}/index.d.ts +3 -3
  181. package/dist/server/static/index.d.ts.map +1 -0
  182. package/dist/{server-static → server/static}/index.js +3 -3
  183. package/dist/server/static/index.js.map +1 -0
  184. package/dist/{server-swagger → server/swagger}/index.d.ts +3 -3
  185. package/dist/server/swagger/index.d.ts.map +1 -0
  186. package/dist/{server-swagger → server/swagger}/index.js +4 -4
  187. package/dist/server/swagger/index.js.map +1 -0
  188. package/dist/sms/index.d.ts.map +1 -0
  189. package/dist/thread/index.d.ts.map +1 -0
  190. package/dist/topic/{index.d.ts → core/index.d.ts} +6 -6
  191. package/dist/topic/core/index.d.ts.map +1 -0
  192. package/dist/topic/{index.js → core/index.js} +6 -6
  193. package/dist/topic/core/index.js.map +1 -0
  194. package/dist/{topic-redis → topic/redis}/index.d.ts +2 -2
  195. package/dist/topic/redis/index.d.ts.map +1 -0
  196. package/dist/{topic-redis → topic/redis}/index.js +2 -2
  197. package/dist/topic/redis/index.js.map +1 -0
  198. package/dist/vite/index.d.ts +21 -2
  199. package/dist/vite/index.d.ts.map +1 -0
  200. package/dist/vite/index.js +48 -19
  201. package/dist/vite/index.js.map +1 -1
  202. package/dist/websocket/index.d.ts.map +1 -0
  203. package/package.json +162 -158
  204. package/src/{api-files → api/files}/index.ts +1 -0
  205. package/src/{api-parameters → api/parameters}/index.ts +1 -1
  206. package/src/{api-users → api/users}/primitives/$userRealm.ts +1 -1
  207. package/src/{api-users → api/users}/providers/UserRealmProvider.ts +6 -7
  208. package/src/{api-verifications → api/verifications}/index.ts +2 -0
  209. package/src/cli/apps/AlephaCli.ts +2 -0
  210. package/src/cli/apps/AlephaPackageBuilderCli.ts +83 -54
  211. package/src/cli/assets/appRouterTs.ts +1 -1
  212. package/src/cli/assets/biomeJson.ts +1 -1
  213. package/src/cli/assets/indexHtml.ts +1 -1
  214. package/src/cli/assets/mainBrowserTs.ts +1 -1
  215. package/src/cli/assets/mainTs.ts +9 -10
  216. package/src/cli/assets/viteConfigTs.ts +1 -1
  217. package/src/cli/commands/ChangelogCommands.ts +389 -0
  218. package/src/cli/commands/CoreCommands.ts +10 -6
  219. package/src/cli/commands/DrizzleCommands.ts +204 -4
  220. package/src/cli/commands/VerifyCommands.ts +4 -1
  221. package/src/cli/commands/ViteCommands.ts +46 -25
  222. package/src/cli/services/AlephaCliUtils.ts +52 -164
  223. package/src/command/providers/CliProvider.ts +76 -5
  224. package/src/core/providers/SchemaValidator.ts +24 -2
  225. package/src/mcp/errors/McpError.ts +72 -0
  226. package/src/mcp/helpers/jsonrpc.ts +163 -0
  227. package/src/mcp/index.ts +132 -0
  228. package/src/mcp/interfaces/McpTypes.ts +248 -0
  229. package/src/mcp/primitives/$prompt.ts +188 -0
  230. package/src/mcp/primitives/$resource.ts +171 -0
  231. package/src/mcp/primitives/$tool.ts +285 -0
  232. package/src/mcp/providers/McpServerProvider.ts +382 -0
  233. package/src/mcp/transports/SseMcpTransport.ts +172 -0
  234. package/src/mcp/transports/StdioMcpTransport.ts +126 -0
  235. package/src/orm/index.ts +12 -0
  236. package/src/orm/providers/drivers/CloudflareD1Provider.ts +164 -0
  237. package/src/orm/providers/drivers/NodeSqliteProvider.ts +3 -1
  238. package/src/queue/{index.ts → core/index.ts} +2 -3
  239. package/src/queue/{primitives → core/primitives}/$queue.ts +17 -162
  240. package/src/queue/core/providers/MemoryQueueProvider.ts +19 -0
  241. package/src/queue/core/providers/QueueProvider.ts +23 -0
  242. package/src/queue/core/providers/WorkerProvider.ts +244 -0
  243. package/src/queue/redis/providers/RedisQueueProvider.ts +31 -0
  244. package/src/server/{index.ts → core/index.ts} +1 -0
  245. package/src/{server-rate-limit → server/rate-limit}/index.ts +1 -1
  246. package/src/{server-swagger → server/swagger}/providers/ServerSwaggerProvider.ts +1 -0
  247. package/src/vite/plugins/viteAlephaBuild.ts +8 -2
  248. package/src/vite/plugins/viteAlephaDev.ts +6 -2
  249. package/src/vite/tasks/buildServer.ts +1 -1
  250. package/src/vite/tasks/copyAssets.ts +32 -8
  251. package/src/vite/tasks/generateCloudflare.ts +43 -15
  252. package/src/vite/tasks/runAlepha.ts +1 -0
  253. package/dist/api-audits/index.browser.js.map +0 -1
  254. package/dist/api-audits/index.js.map +0 -1
  255. package/dist/api-files/index.browser.js.map +0 -1
  256. package/dist/api-files/index.js.map +0 -1
  257. package/dist/api-jobs/index.browser.js.map +0 -1
  258. package/dist/api-jobs/index.js.map +0 -1
  259. package/dist/api-notifications/index.browser.js.map +0 -1
  260. package/dist/api-notifications/index.d.ts +0 -327
  261. package/dist/api-notifications/index.js.map +0 -1
  262. package/dist/api-parameters/index.browser.js.map +0 -1
  263. package/dist/api-parameters/index.js.map +0 -1
  264. package/dist/api-users/index.browser.js.map +0 -1
  265. package/dist/api-users/index.js.map +0 -1
  266. package/dist/api-verifications/index.browser.js.map +0 -1
  267. package/dist/api-verifications/index.d.ts +0 -229
  268. package/dist/api-verifications/index.js.map +0 -1
  269. package/dist/cache/index.js.map +0 -1
  270. package/dist/cache-redis/index.js.map +0 -1
  271. package/dist/lock/index.js.map +0 -1
  272. package/dist/lock-redis/index.js.map +0 -1
  273. package/dist/queue/index.d.ts +0 -1265
  274. package/dist/queue/index.js +0 -1037
  275. package/dist/queue/index.js.map +0 -1
  276. package/dist/queue-redis/index.d.ts +0 -82
  277. package/dist/queue-redis/index.js +0 -872
  278. package/dist/queue-redis/index.js.map +0 -1
  279. package/dist/server/index.browser.js.map +0 -1
  280. package/dist/server/index.js.map +0 -1
  281. package/dist/server-auth/index.browser.js.map +0 -1
  282. package/dist/server-auth/index.js +0 -1973
  283. package/dist/server-auth/index.js.map +0 -1
  284. package/dist/server-cache/index.js.map +0 -1
  285. package/dist/server-compress/index.js.map +0 -1
  286. package/dist/server-cookies/index.browser.js.map +0 -1
  287. package/dist/server-cookies/index.js.map +0 -1
  288. package/dist/server-cors/index.js.map +0 -1
  289. package/dist/server-health/index.js.map +0 -1
  290. package/dist/server-helmet/index.js.map +0 -1
  291. package/dist/server-links/index.browser.js.map +0 -1
  292. package/dist/server-links/index.js.map +0 -1
  293. package/dist/server-metrics/index.js +0 -4532
  294. package/dist/server-metrics/index.js.map +0 -1
  295. package/dist/server-multipart/index.js.map +0 -1
  296. package/dist/server-proxy/index.js.map +0 -1
  297. package/dist/server-rate-limit/index.js.map +0 -1
  298. package/dist/server-security/index.browser.js.map +0 -1
  299. package/dist/server-security/index.js.map +0 -1
  300. package/dist/server-static/index.js.map +0 -1
  301. package/dist/server-swagger/index.js.map +0 -1
  302. package/dist/topic/index.js.map +0 -1
  303. package/dist/topic-redis/index.js.map +0 -1
  304. package/src/queue/interfaces/QueueJob.ts +0 -459
  305. package/src/queue/providers/MemoryQueueProvider.ts +0 -850
  306. package/src/queue/providers/QueueProvider.ts +0 -319
  307. package/src/queue/providers/WorkerProvider.ts +0 -344
  308. package/src/queue-redis/providers/RedisQueueProvider.ts +0 -1209
  309. /package/src/{api-audits → api/audits}/controllers/AuditController.ts +0 -0
  310. /package/src/{api-audits → api/audits}/entities/audits.ts +0 -0
  311. /package/src/{api-audits → api/audits}/index.browser.ts +0 -0
  312. /package/src/{api-audits → api/audits}/index.ts +0 -0
  313. /package/src/{api-audits → api/audits}/primitives/$audit.ts +0 -0
  314. /package/src/{api-audits → api/audits}/schemas/auditQuerySchema.ts +0 -0
  315. /package/src/{api-audits → api/audits}/schemas/auditResourceSchema.ts +0 -0
  316. /package/src/{api-audits → api/audits}/schemas/createAuditSchema.ts +0 -0
  317. /package/src/{api-audits → api/audits}/services/AuditService.ts +0 -0
  318. /package/src/{api-files → api/files}/controllers/FileController.ts +0 -0
  319. /package/src/{api-files → api/files}/controllers/StorageStatsController.ts +0 -0
  320. /package/src/{api-files → api/files}/entities/files.ts +0 -0
  321. /package/src/{api-files → api/files}/index.browser.ts +0 -0
  322. /package/src/{api-files → api/files}/jobs/FileJobs.ts +0 -0
  323. /package/src/{api-files → api/files}/schemas/fileQuerySchema.ts +0 -0
  324. /package/src/{api-files → api/files}/schemas/fileResourceSchema.ts +0 -0
  325. /package/src/{api-files → api/files}/schemas/storageStatsSchema.ts +0 -0
  326. /package/src/{api-files → api/files}/services/FileService.ts +0 -0
  327. /package/src/{api-jobs → api/jobs}/controllers/JobController.ts +0 -0
  328. /package/src/{api-jobs → api/jobs}/entities/jobExecutions.ts +0 -0
  329. /package/src/{api-jobs → api/jobs}/index.browser.ts +0 -0
  330. /package/src/{api-jobs → api/jobs}/index.ts +0 -0
  331. /package/src/{api-jobs → api/jobs}/primitives/$job.ts +0 -0
  332. /package/src/{api-jobs → api/jobs}/providers/JobProvider.ts +0 -0
  333. /package/src/{api-jobs → api/jobs}/schemas/jobExecutionQuerySchema.ts +0 -0
  334. /package/src/{api-jobs → api/jobs}/schemas/jobExecutionResourceSchema.ts +0 -0
  335. /package/src/{api-jobs → api/jobs}/schemas/triggerJobSchema.ts +0 -0
  336. /package/src/{api-jobs → api/jobs}/services/JobService.ts +0 -0
  337. /package/src/{api-notifications → api/notifications}/controllers/NotificationController.ts +0 -0
  338. /package/src/{api-notifications → api/notifications}/entities/notifications.ts +0 -0
  339. /package/src/{api-notifications → api/notifications}/index.browser.ts +0 -0
  340. /package/src/{api-notifications → api/notifications}/index.ts +0 -0
  341. /package/src/{api-notifications → api/notifications}/jobs/NotificationJobs.ts +0 -0
  342. /package/src/{api-notifications → api/notifications}/primitives/$notification.ts +0 -0
  343. /package/src/{api-notifications → api/notifications}/queues/NotificationQueues.ts +0 -0
  344. /package/src/{api-notifications → api/notifications}/schemas/notificationContactPreferencesSchema.ts +0 -0
  345. /package/src/{api-notifications → api/notifications}/schemas/notificationContactSchema.ts +0 -0
  346. /package/src/{api-notifications → api/notifications}/schemas/notificationCreateSchema.ts +0 -0
  347. /package/src/{api-notifications → api/notifications}/schemas/notificationQuerySchema.ts +0 -0
  348. /package/src/{api-notifications → api/notifications}/services/NotificationSenderService.ts +0 -0
  349. /package/src/{api-notifications → api/notifications}/services/NotificationService.ts +0 -0
  350. /package/src/{api-parameters → api/parameters}/controllers/ConfigController.ts +0 -0
  351. /package/src/{api-parameters → api/parameters}/entities/parameters.ts +0 -0
  352. /package/src/{api-parameters → api/parameters}/index.browser.ts +0 -0
  353. /package/src/{api-parameters → api/parameters}/primitives/$config.ts +0 -0
  354. /package/src/{api-parameters → api/parameters}/schedulers/ConfigActivationScheduler.ts +0 -0
  355. /package/src/{api-parameters → api/parameters}/services/ConfigStore.ts +0 -0
  356. /package/src/{api-users → api/users}/atoms/realmAuthSettingsAtom.ts +0 -0
  357. /package/src/{api-users → api/users}/controllers/IdentityController.ts +0 -0
  358. /package/src/{api-users → api/users}/controllers/SessionController.ts +0 -0
  359. /package/src/{api-users → api/users}/controllers/UserController.ts +0 -0
  360. /package/src/{api-users → api/users}/controllers/UserRealmController.ts +0 -0
  361. /package/src/{api-users → api/users}/entities/identities.ts +0 -0
  362. /package/src/{api-users → api/users}/entities/sessions.ts +0 -0
  363. /package/src/{api-users → api/users}/entities/users.ts +0 -0
  364. /package/src/{api-users → api/users}/index.browser.ts +0 -0
  365. /package/src/{api-users → api/users}/index.ts +0 -0
  366. /package/src/{api-users → api/users}/notifications/UserNotifications.ts +0 -0
  367. /package/src/{api-users → api/users}/schemas/completePasswordResetRequestSchema.ts +0 -0
  368. /package/src/{api-users → api/users}/schemas/completeRegistrationRequestSchema.ts +0 -0
  369. /package/src/{api-users → api/users}/schemas/createUserSchema.ts +0 -0
  370. /package/src/{api-users → api/users}/schemas/identityQuerySchema.ts +0 -0
  371. /package/src/{api-users → api/users}/schemas/identityResourceSchema.ts +0 -0
  372. /package/src/{api-users → api/users}/schemas/loginSchema.ts +0 -0
  373. /package/src/{api-users → api/users}/schemas/passwordResetIntentResponseSchema.ts +0 -0
  374. /package/src/{api-users → api/users}/schemas/registerQuerySchema.ts +0 -0
  375. /package/src/{api-users → api/users}/schemas/registerRequestSchema.ts +0 -0
  376. /package/src/{api-users → api/users}/schemas/registerResponseSchema.ts +0 -0
  377. /package/src/{api-users → api/users}/schemas/registerSchema.ts +0 -0
  378. /package/src/{api-users → api/users}/schemas/registrationIntentResponseSchema.ts +0 -0
  379. /package/src/{api-users → api/users}/schemas/resetPasswordSchema.ts +0 -0
  380. /package/src/{api-users → api/users}/schemas/sessionQuerySchema.ts +0 -0
  381. /package/src/{api-users → api/users}/schemas/sessionResourceSchema.ts +0 -0
  382. /package/src/{api-users → api/users}/schemas/updateUserSchema.ts +0 -0
  383. /package/src/{api-users → api/users}/schemas/userQuerySchema.ts +0 -0
  384. /package/src/{api-users → api/users}/schemas/userRealmConfigSchema.ts +0 -0
  385. /package/src/{api-users → api/users}/schemas/userResourceSchema.ts +0 -0
  386. /package/src/{api-users → api/users}/services/CredentialService.ts +0 -0
  387. /package/src/{api-users → api/users}/services/IdentityService.ts +0 -0
  388. /package/src/{api-users → api/users}/services/RegistrationService.ts +0 -0
  389. /package/src/{api-users → api/users}/services/SessionCrudService.ts +0 -0
  390. /package/src/{api-users → api/users}/services/SessionService.ts +0 -0
  391. /package/src/{api-users → api/users}/services/UserService.ts +0 -0
  392. /package/src/{api-verifications → api/verifications}/controllers/VerificationController.ts +0 -0
  393. /package/src/{api-verifications → api/verifications}/entities/verifications.ts +0 -0
  394. /package/src/{api-verifications → api/verifications}/index.browser.ts +0 -0
  395. /package/src/{api-verifications → api/verifications}/jobs/VerificationJobs.ts +0 -0
  396. /package/src/{api-verifications → api/verifications}/parameters/VerificationParameters.ts +0 -0
  397. /package/src/{api-verifications → api/verifications}/schemas/requestVerificationCodeResponseSchema.ts +0 -0
  398. /package/src/{api-verifications → api/verifications}/schemas/validateVerificationCodeResponseSchema.ts +0 -0
  399. /package/src/{api-verifications → api/verifications}/schemas/verificationSettingsSchema.ts +0 -0
  400. /package/src/{api-verifications → api/verifications}/schemas/verificationTypeEnumSchema.ts +0 -0
  401. /package/src/{api-verifications → api/verifications}/services/VerificationService.ts +0 -0
  402. /package/src/cache/{errors → core/errors}/CacheError.ts +0 -0
  403. /package/src/cache/{index.ts → core/index.ts} +0 -0
  404. /package/src/cache/{primitives → core/primitives}/$cache.ts +0 -0
  405. /package/src/cache/{providers → core/providers}/CacheProvider.ts +0 -0
  406. /package/src/cache/{providers → core/providers}/MemoryCacheProvider.ts +0 -0
  407. /package/src/{cache-redis → cache/redis}/index.ts +0 -0
  408. /package/src/{cache-redis → cache/redis}/providers/RedisCacheProvider.ts +0 -0
  409. /package/src/lock/{index.ts → core/index.ts} +0 -0
  410. /package/src/lock/{primitives → core/primitives}/$lock.ts +0 -0
  411. /package/src/lock/{providers → core/providers}/LockProvider.ts +0 -0
  412. /package/src/lock/{providers → core/providers}/LockTopicProvider.ts +0 -0
  413. /package/src/lock/{providers → core/providers}/MemoryLockProvider.ts +0 -0
  414. /package/src/{lock-redis → lock/redis}/index.ts +0 -0
  415. /package/src/{lock-redis → lock/redis}/providers/RedisLockProvider.ts +0 -0
  416. /package/src/queue/{primitives → core/primitives}/$consumer.ts +0 -0
  417. /package/src/{queue-redis → queue/redis}/index.ts +0 -0
  418. /package/src/{server-auth → server/auth}/constants/routes.ts +0 -0
  419. /package/src/{server-auth → server/auth}/index.browser.ts +0 -0
  420. /package/src/{server-auth → server/auth}/index.shared.ts +0 -0
  421. /package/src/{server-auth → server/auth}/index.ts +0 -0
  422. /package/src/{server-auth → server/auth}/primitives/$auth.ts +0 -0
  423. /package/src/{server-auth → server/auth}/primitives/$authApple.ts +0 -0
  424. /package/src/{server-auth → server/auth}/primitives/$authCredentials.ts +0 -0
  425. /package/src/{server-auth → server/auth}/primitives/$authGithub.ts +0 -0
  426. /package/src/{server-auth → server/auth}/primitives/$authGoogle.ts +0 -0
  427. /package/src/{server-auth → server/auth}/providers/ServerAuthProvider.ts +0 -0
  428. /package/src/{server-auth → server/auth}/schemas/authenticationProviderSchema.ts +0 -0
  429. /package/src/{server-auth → server/auth}/schemas/tokenResponseSchema.ts +0 -0
  430. /package/src/{server-auth → server/auth}/schemas/tokensSchema.ts +0 -0
  431. /package/src/{server-auth → server/auth}/schemas/userinfoResponseSchema.ts +0 -0
  432. /package/src/{server-cache → server/cache}/index.ts +0 -0
  433. /package/src/{server-cache → server/cache}/providers/ServerCacheProvider.ts +0 -0
  434. /package/src/{server-compress → server/compress}/index.ts +0 -0
  435. /package/src/{server-compress → server/compress}/providers/ServerCompressProvider.ts +0 -0
  436. /package/src/{server-cookies → server/cookies}/index.browser.ts +0 -0
  437. /package/src/{server-cookies → server/cookies}/index.ts +0 -0
  438. /package/src/{server-cookies → server/cookies}/primitives/$cookie.browser.ts +0 -0
  439. /package/src/{server-cookies → server/cookies}/primitives/$cookie.ts +0 -0
  440. /package/src/{server-cookies → server/cookies}/providers/ServerCookiesProvider.ts +0 -0
  441. /package/src/{server-cookies → server/cookies}/services/CookieParser.ts +0 -0
  442. /package/src/server/{constants → core/constants}/routeMethods.ts +0 -0
  443. /package/src/server/{errors → core/errors}/BadRequestError.ts +0 -0
  444. /package/src/server/{errors → core/errors}/ConflictError.ts +0 -0
  445. /package/src/server/{errors → core/errors}/ForbiddenError.ts +0 -0
  446. /package/src/server/{errors → core/errors}/HttpError.ts +0 -0
  447. /package/src/server/{errors → core/errors}/NotFoundError.ts +0 -0
  448. /package/src/server/{errors → core/errors}/UnauthorizedError.ts +0 -0
  449. /package/src/server/{errors → core/errors}/ValidationError.ts +0 -0
  450. /package/src/server/{helpers → core/helpers}/ServerReply.ts +0 -0
  451. /package/src/server/{helpers → core/helpers}/isMultipart.ts +0 -0
  452. /package/src/server/{index.browser.ts → core/index.browser.ts} +0 -0
  453. /package/src/server/{index.shared.ts → core/index.shared.ts} +0 -0
  454. /package/src/server/{interfaces → core/interfaces}/ServerRequest.ts +0 -0
  455. /package/src/server/{primitives → core/primitives}/$action.ts +0 -0
  456. /package/src/server/{primitives → core/primitives}/$route.ts +0 -0
  457. /package/src/server/{providers → core/providers}/BunHttpServerProvider.ts +0 -0
  458. /package/src/server/{providers → core/providers}/NodeHttpServerProvider.ts +0 -0
  459. /package/src/server/{providers → core/providers}/ServerBodyParserProvider.ts +0 -0
  460. /package/src/server/{providers → core/providers}/ServerLoggerProvider.ts +0 -0
  461. /package/src/server/{providers → core/providers}/ServerNotReadyProvider.ts +0 -0
  462. /package/src/server/{providers → core/providers}/ServerProvider.ts +0 -0
  463. /package/src/server/{providers → core/providers}/ServerRouterProvider.ts +0 -0
  464. /package/src/server/{providers → core/providers}/ServerTimingProvider.ts +0 -0
  465. /package/src/server/{schemas → core/schemas}/errorSchema.ts +0 -0
  466. /package/src/server/{schemas → core/schemas}/okSchema.ts +0 -0
  467. /package/src/server/{services → core/services}/HttpClient.ts +0 -0
  468. /package/src/server/{services → core/services}/ServerRequestParser.ts +0 -0
  469. /package/src/server/{services → core/services}/UserAgentParser.ts +0 -0
  470. /package/src/{server-cors → server/cors}/index.ts +0 -0
  471. /package/src/{server-cors → server/cors}/primitives/$cors.ts +0 -0
  472. /package/src/{server-cors → server/cors}/providers/ServerCorsProvider.ts +0 -0
  473. /package/src/{server-health → server/health}/index.ts +0 -0
  474. /package/src/{server-health → server/health}/providers/ServerHealthProvider.ts +0 -0
  475. /package/src/{server-health → server/health}/schemas/healthSchema.ts +0 -0
  476. /package/src/{server-helmet → server/helmet}/index.ts +0 -0
  477. /package/src/{server-helmet → server/helmet}/providers/ServerHelmetProvider.ts +0 -0
  478. /package/src/{server-links → server/links}/index.browser.ts +0 -0
  479. /package/src/{server-links → server/links}/index.ts +0 -0
  480. /package/src/{server-links → server/links}/primitives/$client.ts +0 -0
  481. /package/src/{server-links → server/links}/primitives/$remote.ts +0 -0
  482. /package/src/{server-links → server/links}/providers/LinkProvider.ts +0 -0
  483. /package/src/{server-links → server/links}/providers/RemotePrimitiveProvider.ts +0 -0
  484. /package/src/{server-links → server/links}/providers/ServerLinksProvider.ts +0 -0
  485. /package/src/{server-links → server/links}/schemas/apiLinksResponseSchema.ts +0 -0
  486. /package/src/{server-metrics → server/metrics}/index.ts +0 -0
  487. /package/src/{server-metrics → server/metrics}/providers/ServerMetricsProvider.ts +0 -0
  488. /package/src/{server-multipart → server/multipart}/index.ts +0 -0
  489. /package/src/{server-multipart → server/multipart}/providers/ServerMultipartProvider.ts +0 -0
  490. /package/src/{server-proxy → server/proxy}/index.ts +0 -0
  491. /package/src/{server-proxy → server/proxy}/primitives/$proxy.ts +0 -0
  492. /package/src/{server-proxy → server/proxy}/providers/ServerProxyProvider.ts +0 -0
  493. /package/src/{server-rate-limit → server/rate-limit}/primitives/$rateLimit.ts +0 -0
  494. /package/src/{server-rate-limit → server/rate-limit}/providers/ServerRateLimitProvider.ts +0 -0
  495. /package/src/{server-security → server/security}/index.browser.ts +0 -0
  496. /package/src/{server-security → server/security}/index.ts +0 -0
  497. /package/src/{server-security → server/security}/primitives/$basicAuth.ts +0 -0
  498. /package/src/{server-security → server/security}/providers/ServerBasicAuthProvider.ts +0 -0
  499. /package/src/{server-security → server/security}/providers/ServerSecurityProvider.ts +0 -0
  500. /package/src/{server-static → server/static}/index.ts +0 -0
  501. /package/src/{server-static → server/static}/primitives/$serve.ts +0 -0
  502. /package/src/{server-static → server/static}/providers/ServerStaticProvider.ts +0 -0
  503. /package/src/{server-swagger → server/swagger}/index.ts +0 -0
  504. /package/src/{server-swagger → server/swagger}/primitives/$swagger.ts +0 -0
  505. /package/src/topic/{errors → core/errors}/TopicTimeoutError.ts +0 -0
  506. /package/src/topic/{index.ts → core/index.ts} +0 -0
  507. /package/src/topic/{primitives → core/primitives}/$subscriber.ts +0 -0
  508. /package/src/topic/{primitives → core/primitives}/$topic.ts +0 -0
  509. /package/src/topic/{providers → core/providers}/MemoryTopicProvider.ts +0 -0
  510. /package/src/topic/{providers → core/providers}/TopicProvider.ts +0 -0
  511. /package/src/{topic-redis → topic/redis}/index.ts +0 -0
  512. /package/src/{topic-redis → topic/redis}/providers/RedisTopicProvider.ts +0 -0
@@ -0,0 +1,132 @@
1
+ import { $module } from "alepha";
2
+ import { $prompt } from "./primitives/$prompt.ts";
3
+ import { $resource } from "./primitives/$resource.ts";
4
+ import { $tool } from "./primitives/$tool.ts";
5
+ import { McpServerProvider } from "./providers/McpServerProvider.ts";
6
+ import { SseMcpTransport } from "./transports/SseMcpTransport.ts";
7
+ import { StdioMcpTransport } from "./transports/StdioMcpTransport.ts";
8
+
9
+ // ---------------------------------------------------------------------------------------------------------------------
10
+
11
+ export {
12
+ McpError,
13
+ McpInvalidParamsError,
14
+ McpMethodNotFoundError,
15
+ McpPromptNotFoundError,
16
+ McpResourceNotFoundError,
17
+ McpToolNotFoundError,
18
+ } from "./errors/McpError.ts";
19
+ export {
20
+ createErrorResponse,
21
+ createInternalError,
22
+ createInvalidParamsError,
23
+ createInvalidRequestError,
24
+ createMethodNotFoundError,
25
+ createNotification,
26
+ createParseError,
27
+ createResponse,
28
+ isNotification,
29
+ isValidJsonRpcRequest,
30
+ JSONRPC_VERSION,
31
+ JsonRpcErrorCodes,
32
+ JsonRpcParseError,
33
+ MCP_PROTOCOL_VERSION,
34
+ parseMessage,
35
+ } from "./helpers/jsonrpc.ts";
36
+ export type {
37
+ JsonRpcError,
38
+ JsonRpcNotification,
39
+ // JSON-RPC types
40
+ JsonRpcRequest,
41
+ JsonRpcResponse,
42
+ // MCP protocol types
43
+ McpCapabilities,
44
+ McpClientInfo,
45
+ McpContent,
46
+ // Context type for auth/headers
47
+ McpContext,
48
+ McpInitializeParams,
49
+ McpInitializeResult,
50
+ McpJsonSchema,
51
+ McpPromptArgument,
52
+ McpPromptContent,
53
+ // Prompt types
54
+ McpPromptDescriptor,
55
+ McpPromptGetParams,
56
+ McpPromptGetResult,
57
+ McpPromptMessage,
58
+ McpResourceContent,
59
+ // Resource types
60
+ McpResourceDescriptor,
61
+ McpResourceReadParams,
62
+ McpResourceReadResult,
63
+ McpServerInfo,
64
+ McpToolCallParams,
65
+ McpToolCallResult,
66
+ // Tool types
67
+ McpToolDescriptor,
68
+ PromptHandler,
69
+ PromptHandlerArgs,
70
+ PromptMessage,
71
+ ResourceContent,
72
+ ResourceHandler,
73
+ ResourceHandlerArgs,
74
+ ToolHandler,
75
+ ToolHandlerArgs,
76
+ ToolHandlerResult,
77
+ // Handler types
78
+ ToolPrimitiveSchema,
79
+ } from "./interfaces/McpTypes.ts";
80
+ export type { PromptPrimitiveOptions } from "./primitives/$prompt.ts";
81
+ export { $prompt, PromptPrimitive } from "./primitives/$prompt.ts";
82
+ export type { ResourcePrimitiveOptions } from "./primitives/$resource.ts";
83
+ export { $resource, ResourcePrimitive } from "./primitives/$resource.ts";
84
+ export type { ToolPrimitiveOptions } from "./primitives/$tool.ts";
85
+ export { $tool, ToolPrimitive } from "./primitives/$tool.ts";
86
+ export { McpServerProvider } from "./providers/McpServerProvider.ts";
87
+ export { SseMcpTransport } from "./transports/SseMcpTransport.ts";
88
+ export { StdioMcpTransport } from "./transports/StdioMcpTransport.ts";
89
+
90
+ // ---------------------------------------------------------------------------------------------------------------------
91
+
92
+ /**
93
+ * Core MCP module with primitives and server provider.
94
+ *
95
+ * This module registers the $tool, $resource, and $prompt primitives
96
+ * and the McpServerProvider. You need to add a transport module
97
+ * (AlephaMcpStdio or AlephaMcpSse) for actual communication.
98
+ *
99
+ * @example
100
+ * ```ts
101
+ * import { Alepha, run } from "alepha";
102
+ * import { AlephaMcp, AlephaMcpStdio, $tool, t } from "alepha/mcp";
103
+ *
104
+ * class MyMcpServer {
105
+ * add = $tool({
106
+ * description: "Add two numbers",
107
+ * schema: {
108
+ * params: t.object({ a: t.number(), b: t.number() }),
109
+ * result: t.number(),
110
+ * },
111
+ * handler: async ({ params }) => params.a + params.b,
112
+ * });
113
+ * }
114
+ *
115
+ * run(
116
+ * Alepha.create()
117
+ * .with(AlephaMcp)
118
+ * .with(AlephaMcpStdio)
119
+ * .with(MyMcpServer)
120
+ * );
121
+ * ```
122
+ *
123
+ * @module alepha.mcp
124
+ */
125
+ export const AlephaMcp = $module({
126
+ name: "alepha.mcp",
127
+ primitives: [$tool, $resource, $prompt],
128
+ services: [McpServerProvider, SseMcpTransport, StdioMcpTransport],
129
+ register: (alepha) => {
130
+ alepha.with(McpServerProvider);
131
+ },
132
+ });
@@ -0,0 +1,248 @@
1
+ import type { Async, Static, TObject, TSchema } from "alepha";
2
+
3
+ // ---------------------------------------------------------------------------------------------------------------------
4
+ // JSON-RPC 2.0 Types
5
+ // ---------------------------------------------------------------------------------------------------------------------
6
+
7
+ export interface JsonRpcRequest {
8
+ jsonrpc: "2.0";
9
+ id?: string | number;
10
+ method: string;
11
+ params?: Record<string, unknown>;
12
+ }
13
+
14
+ export interface JsonRpcResponse {
15
+ jsonrpc: "2.0";
16
+ id: string | number;
17
+ result?: unknown;
18
+ error?: JsonRpcError;
19
+ }
20
+
21
+ export interface JsonRpcNotification {
22
+ jsonrpc: "2.0";
23
+ method: string;
24
+ params?: Record<string, unknown>;
25
+ }
26
+
27
+ export interface JsonRpcError {
28
+ code: number;
29
+ message: string;
30
+ data?: unknown;
31
+ }
32
+
33
+ // ---------------------------------------------------------------------------------------------------------------------
34
+ // MCP Protocol Types
35
+ // ---------------------------------------------------------------------------------------------------------------------
36
+
37
+ export interface McpCapabilities {
38
+ tools?: Record<string, never>;
39
+ resources?: Record<string, never>;
40
+ prompts?: Record<string, never>;
41
+ }
42
+
43
+ export interface McpServerInfo {
44
+ name: string;
45
+ version: string;
46
+ }
47
+
48
+ export interface McpClientInfo {
49
+ name: string;
50
+ version: string;
51
+ }
52
+
53
+ export interface McpInitializeParams {
54
+ protocolVersion: string;
55
+ capabilities: McpCapabilities;
56
+ clientInfo: McpClientInfo;
57
+ }
58
+
59
+ export interface McpInitializeResult {
60
+ protocolVersion: string;
61
+ capabilities: McpCapabilities;
62
+ serverInfo: McpServerInfo;
63
+ }
64
+
65
+ // ---------------------------------------------------------------------------------------------------------------------
66
+ // Tool Types
67
+ // ---------------------------------------------------------------------------------------------------------------------
68
+
69
+ export interface McpToolDescriptor {
70
+ name: string;
71
+ description: string;
72
+ inputSchema: McpJsonSchema;
73
+ }
74
+
75
+ export interface McpJsonSchema {
76
+ type: string;
77
+ properties?: Record<string, unknown>;
78
+ required?: string[];
79
+ }
80
+
81
+ export interface McpToolCallParams {
82
+ name: string;
83
+ arguments?: Record<string, unknown>;
84
+ }
85
+
86
+ export interface McpToolCallResult {
87
+ content: McpContent[];
88
+ isError?: boolean;
89
+ }
90
+
91
+ export interface McpContent {
92
+ type: "text" | "image" | "resource";
93
+ text?: string;
94
+ data?: string;
95
+ mimeType?: string;
96
+ }
97
+
98
+ // ---------------------------------------------------------------------------------------------------------------------
99
+ // Resource Types
100
+ // ---------------------------------------------------------------------------------------------------------------------
101
+
102
+ export interface McpResourceDescriptor {
103
+ uri: string;
104
+ name: string;
105
+ description?: string;
106
+ mimeType?: string;
107
+ }
108
+
109
+ export interface McpResourceReadParams {
110
+ uri: string;
111
+ }
112
+
113
+ export interface McpResourceReadResult {
114
+ contents: McpResourceContent[];
115
+ }
116
+
117
+ export interface McpResourceContent {
118
+ uri: string;
119
+ mimeType?: string;
120
+ text?: string;
121
+ blob?: string;
122
+ }
123
+
124
+ // ---------------------------------------------------------------------------------------------------------------------
125
+ // Prompt Types
126
+ // ---------------------------------------------------------------------------------------------------------------------
127
+
128
+ export interface McpPromptDescriptor {
129
+ name: string;
130
+ description?: string;
131
+ arguments?: McpPromptArgument[];
132
+ }
133
+
134
+ export interface McpPromptArgument {
135
+ name: string;
136
+ description?: string;
137
+ required?: boolean;
138
+ }
139
+
140
+ export interface McpPromptGetParams {
141
+ name: string;
142
+ arguments?: Record<string, string>;
143
+ }
144
+
145
+ export interface McpPromptGetResult {
146
+ description?: string;
147
+ messages: McpPromptMessage[];
148
+ }
149
+
150
+ export interface McpPromptMessage {
151
+ role: "user" | "assistant";
152
+ content: McpPromptContent;
153
+ }
154
+
155
+ export interface McpPromptContent {
156
+ type: "text" | "image" | "resource";
157
+ text?: string;
158
+ data?: string;
159
+ mimeType?: string;
160
+ }
161
+
162
+ // ---------------------------------------------------------------------------------------------------------------------
163
+ // Primitive Schema Types
164
+ // ---------------------------------------------------------------------------------------------------------------------
165
+
166
+ export interface ToolPrimitiveSchema {
167
+ params?: TObject;
168
+ result?: TSchema;
169
+ }
170
+
171
+ export interface ResourcePrimitiveSchema {
172
+ contents?: TSchema;
173
+ }
174
+
175
+ export interface PromptPrimitiveSchema {
176
+ args?: TObject;
177
+ }
178
+
179
+ // ---------------------------------------------------------------------------------------------------------------------
180
+ // Context Types
181
+ // ---------------------------------------------------------------------------------------------------------------------
182
+
183
+ /**
184
+ * Context passed to MCP handlers from the transport layer.
185
+ *
186
+ * This allows tools, resources, and prompts to access request-level
187
+ * information like headers for authentication.
188
+ */
189
+ export interface McpContext<T = unknown> {
190
+ /**
191
+ * HTTP headers from the request (for SSE transport).
192
+ */
193
+ headers?: Record<string, string | string[] | undefined>;
194
+
195
+ /**
196
+ * Custom context data set by transport or middleware.
197
+ * Can be used to pass authenticated user, project scope, etc.
198
+ */
199
+ data?: T;
200
+ }
201
+
202
+ // ---------------------------------------------------------------------------------------------------------------------
203
+ // Handler Types
204
+ // ---------------------------------------------------------------------------------------------------------------------
205
+
206
+ export type ToolHandler<T extends ToolPrimitiveSchema, TContext = unknown> = (
207
+ args: ToolHandlerArgs<T, TContext>,
208
+ ) => Async<ToolHandlerResult<T>>;
209
+
210
+ export interface ToolHandlerArgs<
211
+ T extends ToolPrimitiveSchema,
212
+ TContext = unknown,
213
+ > {
214
+ params: T["params"] extends TObject
215
+ ? Static<T["params"]>
216
+ : Record<string, never>;
217
+ context?: McpContext<TContext>;
218
+ }
219
+
220
+ export type ToolHandlerResult<T extends ToolPrimitiveSchema> =
221
+ T["result"] extends TSchema ? Static<T["result"]> : unknown;
222
+
223
+ export type ResourceHandler<TContext = unknown> = (
224
+ args: ResourceHandlerArgs<TContext>,
225
+ ) => Async<ResourceContent>;
226
+
227
+ export interface ResourceHandlerArgs<TContext = unknown> {
228
+ context?: McpContext<TContext>;
229
+ }
230
+
231
+ export interface ResourceContent {
232
+ text?: string;
233
+ blob?: Uint8Array;
234
+ }
235
+
236
+ export type PromptHandler<T extends TObject, TContext = unknown> = (
237
+ args: PromptHandlerArgs<T, TContext>,
238
+ ) => Async<PromptMessage[]>;
239
+
240
+ export interface PromptHandlerArgs<T extends TObject, TContext = unknown> {
241
+ args: Static<T>;
242
+ context?: McpContext<TContext>;
243
+ }
244
+
245
+ export interface PromptMessage {
246
+ role: "user" | "assistant";
247
+ content: string;
248
+ }
@@ -0,0 +1,188 @@
1
+ import {
2
+ $inject,
3
+ type Async,
4
+ createPrimitive,
5
+ KIND,
6
+ Primitive,
7
+ type Static,
8
+ type TObject,
9
+ t,
10
+ } from "alepha";
11
+ import type {
12
+ McpContext,
13
+ McpPromptArgument,
14
+ McpPromptDescriptor,
15
+ PromptHandlerArgs,
16
+ PromptMessage,
17
+ } from "../interfaces/McpTypes.ts";
18
+ import { McpServerProvider } from "../providers/McpServerProvider.ts";
19
+
20
+ // ---------------------------------------------------------------------------------------------------------------------
21
+
22
+ /**
23
+ * Creates an MCP prompt primitive for defining reusable prompt templates.
24
+ *
25
+ * Prompts allow you to define templated messages that can be filled in
26
+ * with arguments at runtime. They're useful for creating consistent
27
+ * interaction patterns.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * class Prompts {
32
+ * greeting = $prompt({
33
+ * description: "Generate a personalized greeting",
34
+ * args: t.object({
35
+ * name: t.text({ description: "Name of the person to greet" }),
36
+ * style: t.optional(t.enum(["formal", "casual"])),
37
+ * }),
38
+ * handler: async ({ args }) => [
39
+ * {
40
+ * role: "user",
41
+ * content: args.style === "formal"
42
+ * ? `Please greet ${args.name} in a formal manner.`
43
+ * : `Say hi to ${args.name}!`,
44
+ * },
45
+ * ],
46
+ * });
47
+ *
48
+ * codeReview = $prompt({
49
+ * description: "Request a code review",
50
+ * args: t.object({
51
+ * code: t.text({ description: "The code to review" }),
52
+ * language: t.text({ description: "Programming language" }),
53
+ * }),
54
+ * handler: async ({ args }) => [
55
+ * {
56
+ * role: "user",
57
+ * content: `Please review this ${args.language} code:\n\n${args.code}`,
58
+ * },
59
+ * ],
60
+ * });
61
+ * }
62
+ * ```
63
+ */
64
+ export const $prompt = <T extends TObject>(
65
+ options: PromptPrimitiveOptions<T>,
66
+ ): PromptPrimitive<T> => {
67
+ return createPrimitive(PromptPrimitive<T>, options);
68
+ };
69
+
70
+ // ---------------------------------------------------------------------------------------------------------------------
71
+
72
+ export interface PromptPrimitiveOptions<T extends TObject> {
73
+ /**
74
+ * The name of the prompt.
75
+ *
76
+ * If not provided, defaults to the property key where the prompt is declared.
77
+ *
78
+ * @example "greeting"
79
+ * @example "code-review"
80
+ */
81
+ name?: string;
82
+
83
+ /**
84
+ * Description of what this prompt does.
85
+ *
86
+ * Helps users understand the purpose of the prompt.
87
+ *
88
+ * @example "Generate a personalized greeting message"
89
+ */
90
+ description?: string;
91
+
92
+ /**
93
+ * TypeBox schema defining the prompt arguments.
94
+ *
95
+ * Each property in the schema becomes an argument that can be
96
+ * filled in when the prompt is used.
97
+ */
98
+ args?: T;
99
+
100
+ /**
101
+ * Handler function that generates the prompt messages.
102
+ *
103
+ * Receives the validated arguments and returns an array of messages.
104
+ *
105
+ * @param args - Object containing validated arguments
106
+ * @returns Array of prompt messages
107
+ */
108
+ handler: (args: PromptHandlerArgs<T>) => Async<PromptMessage[]>;
109
+ }
110
+
111
+ // ---------------------------------------------------------------------------------------------------------------------
112
+
113
+ export class PromptPrimitive<T extends TObject> extends Primitive<
114
+ PromptPrimitiveOptions<T>
115
+ > {
116
+ protected readonly mcpServer = $inject(McpServerProvider);
117
+
118
+ /**
119
+ * Returns the name of the prompt.
120
+ */
121
+ public get name(): string {
122
+ return this.options.name ?? this.config.propertyKey;
123
+ }
124
+
125
+ /**
126
+ * Returns the description of the prompt.
127
+ */
128
+ public get description(): string | undefined {
129
+ return this.options.description;
130
+ }
131
+
132
+ protected onInit(): void {
133
+ this.mcpServer.registerPrompt(this);
134
+ }
135
+
136
+ /**
137
+ * Get the prompt messages with the given arguments.
138
+ *
139
+ * @param rawArgs - Raw arguments to validate and pass to the handler
140
+ * @param context - Optional context from the transport layer
141
+ * @returns Array of prompt messages
142
+ */
143
+ public async get(
144
+ rawArgs: unknown,
145
+ context?: McpContext,
146
+ ): Promise<PromptMessage[]> {
147
+ let args = (rawArgs ?? {}) as Static<T>;
148
+
149
+ if (this.options.args) {
150
+ args = this.alepha.codec.decode(this.options.args, rawArgs ?? {});
151
+ }
152
+
153
+ return this.options.handler({ args, context });
154
+ }
155
+
156
+ /**
157
+ * Convert the prompt to an MCP prompt descriptor for protocol messages.
158
+ */
159
+ public toDescriptor(): McpPromptDescriptor {
160
+ return {
161
+ name: this.name,
162
+ description: this.description,
163
+ arguments: this.options.args
164
+ ? this.schemaToArguments(this.options.args)
165
+ : [],
166
+ };
167
+ }
168
+
169
+ /**
170
+ * Convert a TypeBox schema to an array of prompt arguments.
171
+ */
172
+ protected schemaToArguments(schema: TObject): McpPromptArgument[] {
173
+ const args: McpPromptArgument[] = [];
174
+
175
+ for (const [name, propSchema] of Object.entries(schema.properties)) {
176
+ const prop = propSchema as Record<string, unknown>;
177
+ args.push({
178
+ name,
179
+ description: prop.description as string | undefined,
180
+ required: !t.schema.isOptional(propSchema),
181
+ });
182
+ }
183
+
184
+ return args;
185
+ }
186
+ }
187
+
188
+ $prompt[KIND] = PromptPrimitive;