gorsee 0.2.4 → 0.2.5

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 (532) hide show
  1. package/README.md +261 -213
  2. package/dist-pkg/ai/artifact-lifecycle.d.ts +25 -0
  3. package/dist-pkg/ai/artifact-lifecycle.js +98 -0
  4. package/dist-pkg/ai/bridge.d.ts +26 -0
  5. package/dist-pkg/ai/bridge.js +82 -0
  6. package/dist-pkg/ai/bundle.d.ts +46 -0
  7. package/dist-pkg/ai/bundle.js +247 -0
  8. package/dist-pkg/ai/contracts.d.ts +1 -0
  9. package/dist-pkg/ai/contracts.js +1 -0
  10. package/dist-pkg/ai/ide.d.ts +37 -0
  11. package/dist-pkg/ai/ide.js +56 -0
  12. package/dist-pkg/ai/index.d.ts +85 -0
  13. package/dist-pkg/ai/index.js +267 -0
  14. package/dist-pkg/ai/json.d.ts +6 -0
  15. package/dist-pkg/ai/json.js +14 -0
  16. package/dist-pkg/ai/mcp.d.ts +28 -0
  17. package/dist-pkg/ai/mcp.js +152 -0
  18. package/dist-pkg/ai/session-pack.d.ts +28 -0
  19. package/dist-pkg/ai/session-pack.js +57 -0
  20. package/dist-pkg/ai/store.d.ts +67 -0
  21. package/dist-pkg/ai/store.js +174 -0
  22. package/dist-pkg/ai/summary.d.ts +57 -0
  23. package/dist-pkg/ai/summary.js +148 -0
  24. package/dist-pkg/ai/watch.d.ts +15 -0
  25. package/dist-pkg/ai/watch.js +66 -0
  26. package/dist-pkg/auth/action-tokens.d.ts +50 -0
  27. package/dist-pkg/auth/action-tokens.js +79 -0
  28. package/dist-pkg/auth/index.d.ts +70 -0
  29. package/dist-pkg/auth/index.js +199 -0
  30. package/dist-pkg/auth/redis-session-store.d.ts +7 -0
  31. package/dist-pkg/auth/redis-session-store.js +42 -0
  32. package/dist-pkg/auth/signing.d.ts +4 -0
  33. package/dist-pkg/auth/signing.js +33 -0
  34. package/dist-pkg/auth/sqlite-session-store.d.ts +12 -0
  35. package/dist-pkg/auth/sqlite-session-store.js +83 -0
  36. package/dist-pkg/auth/store-utils.d.ts +2 -0
  37. package/dist-pkg/auth/store-utils.js +20 -0
  38. package/dist-pkg/bin/gorsee.js +2 -0
  39. package/dist-pkg/build/backends/experimental-rolldown.d.ts +6 -0
  40. package/dist-pkg/build/backends/experimental-rolldown.js +9 -0
  41. package/dist-pkg/build/backends/register.d.ts +7 -0
  42. package/dist-pkg/build/backends/register.js +24 -0
  43. package/dist-pkg/build/backends/rolldown.d.ts +16 -0
  44. package/dist-pkg/build/backends/rolldown.js +176 -0
  45. package/dist-pkg/build/client-backend.d.ts +31 -0
  46. package/dist-pkg/build/client-backend.js +97 -0
  47. package/dist-pkg/build/client.d.ts +12 -0
  48. package/dist-pkg/build/client.js +93 -0
  49. package/dist-pkg/build/css-modules.d.ts +10 -0
  50. package/dist-pkg/build/css-modules.js +51 -0
  51. package/dist-pkg/build/devalue-parse.d.ts +1 -0
  52. package/dist-pkg/build/devalue-parse.js +1 -0
  53. package/dist-pkg/build/diagnostics.d.ts +20 -0
  54. package/dist-pkg/build/diagnostics.js +35 -0
  55. package/dist-pkg/build/fixtures.d.ts +7 -0
  56. package/dist-pkg/build/fixtures.js +60 -0
  57. package/dist-pkg/build/framework-imports.d.ts +4 -0
  58. package/dist-pkg/build/framework-imports.js +58 -0
  59. package/dist-pkg/build/init.d.ts +1 -0
  60. package/dist-pkg/build/init.js +6 -0
  61. package/dist-pkg/build/manifest.d.ts +3 -0
  62. package/dist-pkg/build/manifest.js +23 -0
  63. package/dist-pkg/build/parity.d.ts +32 -0
  64. package/dist-pkg/build/parity.js +71 -0
  65. package/dist-pkg/build/plugin.d.ts +11 -0
  66. package/dist-pkg/build/plugin.js +8 -0
  67. package/dist-pkg/build/readiness.d.ts +11 -0
  68. package/dist-pkg/build/readiness.js +18 -0
  69. package/dist-pkg/build/route-client-transform.d.ts +17 -0
  70. package/dist-pkg/build/route-client-transform.js +48 -0
  71. package/dist-pkg/build/route-metadata.d.ts +6 -0
  72. package/dist-pkg/build/route-metadata.js +8 -0
  73. package/dist-pkg/build/rpc-transform.d.ts +1 -0
  74. package/dist-pkg/build/rpc-transform.js +44 -0
  75. package/dist-pkg/build/server-bundle.d.ts +4 -0
  76. package/dist-pkg/build/server-bundle.js +261 -0
  77. package/dist-pkg/build/server-strip.d.ts +2 -0
  78. package/dist-pkg/build/server-strip.js +32 -0
  79. package/dist-pkg/build/ssg.d.ts +12 -0
  80. package/dist-pkg/build/ssg.js +36 -0
  81. package/dist-pkg/cli/bun-plugin.d.ts +2 -0
  82. package/dist-pkg/cli/bun-plugin.js +14 -0
  83. package/dist-pkg/cli/canonical-import-rewrite.d.ts +18 -0
  84. package/dist-pkg/cli/canonical-import-rewrite.js +94 -0
  85. package/dist-pkg/cli/canonical-imports.d.ts +8 -0
  86. package/dist-pkg/cli/canonical-imports.js +131 -0
  87. package/dist-pkg/cli/check-ast.d.ts +20 -0
  88. package/dist-pkg/cli/check-ast.js +126 -0
  89. package/dist-pkg/cli/cmd-ai.d.ts +4 -0
  90. package/dist-pkg/cli/cmd-ai.js +290 -0
  91. package/dist-pkg/cli/cmd-build.d.ts +12 -0
  92. package/dist-pkg/cli/cmd-build.js +198 -0
  93. package/dist-pkg/cli/cmd-check.d.ts +25 -0
  94. package/dist-pkg/cli/cmd-check.js +573 -0
  95. package/dist-pkg/cli/cmd-create.d.ts +6 -0
  96. package/dist-pkg/cli/cmd-create.js +600 -0
  97. package/dist-pkg/cli/cmd-deploy.d.ts +6 -0
  98. package/dist-pkg/cli/cmd-deploy.js +381 -0
  99. package/dist-pkg/cli/cmd-dev.d.ts +5 -0
  100. package/dist-pkg/cli/cmd-dev.js +5 -0
  101. package/dist-pkg/cli/cmd-docs.d.ts +50 -0
  102. package/dist-pkg/cli/cmd-docs.js +122 -0
  103. package/dist-pkg/cli/cmd-generate.d.ts +12 -0
  104. package/dist-pkg/cli/cmd-generate.js +320 -0
  105. package/dist-pkg/cli/cmd-migrate.d.ts +7 -0
  106. package/dist-pkg/cli/cmd-migrate.js +42 -0
  107. package/dist-pkg/cli/cmd-routes.d.ts +6 -0
  108. package/dist-pkg/cli/cmd-routes.js +24 -0
  109. package/dist-pkg/cli/cmd-start.d.ts +13 -0
  110. package/dist-pkg/cli/cmd-start.js +32 -0
  111. package/dist-pkg/cli/cmd-test.d.ts +20 -0
  112. package/dist-pkg/cli/cmd-test.js +103 -0
  113. package/dist-pkg/cli/cmd-typegen.d.ts +7 -0
  114. package/dist-pkg/cli/cmd-typegen.js +66 -0
  115. package/dist-pkg/cli/cmd-upgrade.d.ts +38 -0
  116. package/dist-pkg/cli/cmd-upgrade.js +232 -0
  117. package/dist-pkg/cli/context.d.ts +4 -0
  118. package/dist-pkg/cli/context.js +4 -0
  119. package/dist-pkg/cli/framework-md.d.ts +1 -0
  120. package/dist-pkg/cli/framework-md.js +391 -0
  121. package/dist-pkg/cli/index.d.ts +6 -0
  122. package/dist-pkg/cli/index.js +106 -0
  123. package/dist-pkg/cli/release-version.d.ts +2 -0
  124. package/dist-pkg/cli/release-version.js +33 -0
  125. package/dist-pkg/client.d.ts +16 -0
  126. package/dist-pkg/client.js +71 -0
  127. package/dist-pkg/compat.d.ts +1 -0
  128. package/dist-pkg/compat.js +1 -0
  129. package/dist-pkg/compiler/analysis-backend.d.ts +20 -0
  130. package/dist-pkg/compiler/analysis-backend.js +164 -0
  131. package/dist-pkg/compiler/backends/experimental-oxc.d.ts +6 -0
  132. package/dist-pkg/compiler/backends/experimental-oxc.js +9 -0
  133. package/dist-pkg/compiler/backends/oxc.d.ts +16 -0
  134. package/dist-pkg/compiler/backends/oxc.js +198 -0
  135. package/dist-pkg/compiler/backends/register.d.ts +7 -0
  136. package/dist-pkg/compiler/backends/register.js +22 -0
  137. package/dist-pkg/compiler/fixtures.d.ts +2 -0
  138. package/dist-pkg/compiler/fixtures.js +118 -0
  139. package/dist-pkg/compiler/init.d.ts +1 -0
  140. package/dist-pkg/compiler/init.js +6 -0
  141. package/dist-pkg/compiler/module-analysis.d.ts +13 -0
  142. package/dist-pkg/compiler/module-analysis.js +50 -0
  143. package/dist-pkg/compiler/parity.d.ts +35 -0
  144. package/dist-pkg/compiler/parity.js +89 -0
  145. package/dist-pkg/compiler/readiness.d.ts +11 -0
  146. package/dist-pkg/compiler/readiness.js +18 -0
  147. package/dist-pkg/compiler/route-facts.d.ts +34 -0
  148. package/dist-pkg/compiler/route-facts.js +75 -0
  149. package/dist-pkg/content/index.d.ts +27 -0
  150. package/dist-pkg/content/index.js +287 -0
  151. package/dist-pkg/db/index.d.ts +3 -0
  152. package/dist-pkg/db/index.js +6 -0
  153. package/dist-pkg/db/migrate.d.ts +7 -0
  154. package/dist-pkg/db/migrate.js +53 -0
  155. package/dist-pkg/db/postgres.d.ts +29 -0
  156. package/dist-pkg/db/postgres.js +59 -0
  157. package/dist-pkg/db/sqlite.d.ts +10 -0
  158. package/dist-pkg/db/sqlite.js +22 -0
  159. package/dist-pkg/deploy/cloudflare.d.ts +8 -0
  160. package/{src/deploy/cloudflare.ts → dist-pkg/deploy/cloudflare.js} +24 -26
  161. package/dist-pkg/deploy/conformance.d.ts +21 -0
  162. package/dist-pkg/deploy/conformance.js +98 -0
  163. package/dist-pkg/deploy/dockerfile.d.ts +3 -0
  164. package/{src/deploy/dockerfile.ts → dist-pkg/deploy/dockerfile.js} +8 -10
  165. package/dist-pkg/deploy/fly.d.ts +3 -0
  166. package/{src/deploy/fly.ts → dist-pkg/deploy/fly.js} +11 -12
  167. package/dist-pkg/deploy/index.d.ts +6 -0
  168. package/dist-pkg/deploy/index.js +26 -0
  169. package/dist-pkg/deploy/netlify.d.ts +2 -0
  170. package/{src/deploy/netlify.ts → dist-pkg/deploy/netlify.js} +17 -11
  171. package/dist-pkg/deploy/runtime.d.ts +2 -0
  172. package/dist-pkg/deploy/runtime.js +3 -0
  173. package/dist-pkg/deploy/vercel.d.ts +22 -0
  174. package/dist-pkg/deploy/vercel.js +53 -0
  175. package/dist-pkg/dev/error-overlay.d.ts +1 -0
  176. package/{src/dev/error-overlay.ts → dist-pkg/dev/error-overlay.js} +13 -23
  177. package/dist-pkg/dev/hmr.d.ts +30 -0
  178. package/dist-pkg/dev/hmr.js +86 -0
  179. package/dist-pkg/dev/partial-handler.d.ts +9 -0
  180. package/dist-pkg/dev/partial-handler.js +24 -0
  181. package/dist-pkg/dev/request-handler.d.ts +30 -0
  182. package/dist-pkg/dev/request-handler.js +67 -0
  183. package/dist-pkg/dev/watcher.d.ts +6 -0
  184. package/dist-pkg/dev/watcher.js +34 -0
  185. package/dist-pkg/dev.d.ts +11 -0
  186. package/dist-pkg/dev.js +268 -0
  187. package/dist-pkg/env/index.d.ts +3 -0
  188. package/dist-pkg/env/index.js +57 -0
  189. package/dist-pkg/errors/catalog.d.ts +9 -0
  190. package/{src/errors/catalog.ts → dist-pkg/errors/catalog.js} +8 -24
  191. package/dist-pkg/errors/formatter.d.ts +22 -0
  192. package/dist-pkg/errors/formatter.js +43 -0
  193. package/dist-pkg/errors/index.d.ts +2 -0
  194. package/dist-pkg/errors/index.js +2 -0
  195. package/dist-pkg/forms/action.d.ts +15 -0
  196. package/dist-pkg/forms/action.js +20 -0
  197. package/dist-pkg/forms/index.d.ts +4 -0
  198. package/dist-pkg/forms/index.js +12 -0
  199. package/dist-pkg/i18n/index.d.ts +61 -0
  200. package/dist-pkg/i18n/index.js +147 -0
  201. package/dist-pkg/index-client.d.ts +1 -0
  202. package/dist-pkg/index-client.js +1 -0
  203. package/dist-pkg/index.d.ts +32 -0
  204. package/dist-pkg/index.js +79 -0
  205. package/dist-pkg/jsx-runtime-client.d.ts +8 -0
  206. package/dist-pkg/jsx-runtime-client.js +1 -0
  207. package/dist-pkg/jsx-runtime.d.ts +13 -0
  208. package/dist-pkg/jsx-runtime.js +5 -0
  209. package/dist-pkg/jsx-types-html.d.ts +221 -0
  210. package/dist-pkg/jsx-types-html.js +0 -0
  211. package/dist-pkg/log/index.d.ts +8 -0
  212. package/dist-pkg/log/index.js +55 -0
  213. package/dist-pkg/plugins/drizzle.d.ts +16 -0
  214. package/dist-pkg/plugins/drizzle.js +50 -0
  215. package/dist-pkg/plugins/index.d.ts +62 -0
  216. package/dist-pkg/plugins/index.js +147 -0
  217. package/dist-pkg/plugins/lucia.d.ts +26 -0
  218. package/dist-pkg/plugins/lucia.js +63 -0
  219. package/dist-pkg/plugins/prisma.d.ts +14 -0
  220. package/dist-pkg/plugins/prisma.js +57 -0
  221. package/dist-pkg/plugins/resend.d.ts +21 -0
  222. package/dist-pkg/plugins/resend.js +45 -0
  223. package/dist-pkg/plugins/s3.d.ts +18 -0
  224. package/dist-pkg/plugins/s3.js +63 -0
  225. package/dist-pkg/plugins/stripe.d.ts +32 -0
  226. package/dist-pkg/plugins/stripe.js +69 -0
  227. package/dist-pkg/plugins/tailwind.d.ts +15 -0
  228. package/dist-pkg/plugins/tailwind.js +58 -0
  229. package/dist-pkg/prod.d.ts +21 -0
  230. package/dist-pkg/prod.js +347 -0
  231. package/dist-pkg/reactive/computed.d.ts +3 -0
  232. package/dist-pkg/reactive/computed.js +15 -0
  233. package/dist-pkg/reactive/data.d.ts +25 -0
  234. package/dist-pkg/reactive/data.js +56 -0
  235. package/dist-pkg/reactive/diagnostics.d.ts +100 -0
  236. package/dist-pkg/reactive/diagnostics.js +363 -0
  237. package/dist-pkg/reactive/effect.d.ts +3 -0
  238. package/dist-pkg/reactive/effect.js +6 -0
  239. package/dist-pkg/reactive/index.d.ts +9 -0
  240. package/dist-pkg/reactive/index.js +18 -0
  241. package/dist-pkg/reactive/live.d.ts +15 -0
  242. package/dist-pkg/reactive/live.js +58 -0
  243. package/dist-pkg/reactive/optimistic.d.ts +20 -0
  244. package/dist-pkg/reactive/optimistic.js +54 -0
  245. package/dist-pkg/reactive/resource.d.ts +25 -0
  246. package/dist-pkg/reactive/resource.js +97 -0
  247. package/dist-pkg/reactive/signal.d.ts +4 -0
  248. package/dist-pkg/reactive/signal.js +17 -0
  249. package/dist-pkg/reactive/store.d.ts +6 -0
  250. package/dist-pkg/reactive/store.js +19 -0
  251. package/dist-pkg/router/index.d.ts +2 -0
  252. package/dist-pkg/router/index.js +2 -0
  253. package/dist-pkg/router/matcher.d.ts +7 -0
  254. package/dist-pkg/router/matcher.js +40 -0
  255. package/dist-pkg/router/scanner.d.ts +14 -0
  256. package/dist-pkg/router/scanner.js +141 -0
  257. package/dist-pkg/routes/index.d.ts +1 -0
  258. package/dist-pkg/routes/index.js +10 -0
  259. package/dist-pkg/runtime/app-config.d.ts +26 -0
  260. package/dist-pkg/runtime/app-config.js +69 -0
  261. package/dist-pkg/runtime/client.d.ts +3 -0
  262. package/dist-pkg/runtime/client.js +31 -0
  263. package/dist-pkg/runtime/devtools.d.ts +64 -0
  264. package/dist-pkg/runtime/devtools.js +132 -0
  265. package/dist-pkg/runtime/error-boundary.d.ts +6 -0
  266. package/dist-pkg/runtime/error-boundary.js +17 -0
  267. package/dist-pkg/runtime/event-replay.d.ts +3 -0
  268. package/{src/runtime/event-replay.ts → dist-pkg/runtime/event-replay.js} +7 -22
  269. package/dist-pkg/runtime/event-source.d.ts +7 -0
  270. package/dist-pkg/runtime/event-source.js +24 -0
  271. package/dist-pkg/runtime/form.d.ts +24 -0
  272. package/dist-pkg/runtime/form.js +59 -0
  273. package/dist-pkg/runtime/head.d.ts +7 -0
  274. package/dist-pkg/runtime/head.js +90 -0
  275. package/dist-pkg/runtime/html-escape.d.ts +7 -0
  276. package/dist-pkg/runtime/html-escape.js +39 -0
  277. package/dist-pkg/runtime/hydration.d.ts +15 -0
  278. package/dist-pkg/runtime/hydration.js +103 -0
  279. package/dist-pkg/runtime/image.d.ts +49 -0
  280. package/dist-pkg/runtime/image.js +144 -0
  281. package/dist-pkg/runtime/index.d.ts +17 -0
  282. package/dist-pkg/runtime/index.js +59 -0
  283. package/dist-pkg/runtime/island-hydrator.d.ts +12 -0
  284. package/dist-pkg/runtime/island-hydrator.js +49 -0
  285. package/dist-pkg/runtime/island.d.ts +19 -0
  286. package/dist-pkg/runtime/island.js +36 -0
  287. package/dist-pkg/runtime/jsx-runtime.d.ts +12 -0
  288. package/dist-pkg/runtime/jsx-runtime.js +173 -0
  289. package/dist-pkg/runtime/link.d.ts +16 -0
  290. package/dist-pkg/runtime/link.js +47 -0
  291. package/dist-pkg/runtime/project.d.ts +37 -0
  292. package/dist-pkg/runtime/project.js +36 -0
  293. package/dist-pkg/runtime/renderable.d.ts +6 -0
  294. package/dist-pkg/runtime/renderable.js +0 -0
  295. package/dist-pkg/runtime/router.d.ts +47 -0
  296. package/dist-pkg/runtime/router.js +476 -0
  297. package/dist-pkg/runtime/server.d.ts +8 -0
  298. package/dist-pkg/runtime/server.js +71 -0
  299. package/dist-pkg/runtime/stream.d.ts +29 -0
  300. package/dist-pkg/runtime/stream.js +106 -0
  301. package/dist-pkg/runtime/suspense.d.ts +6 -0
  302. package/dist-pkg/runtime/suspense.js +16 -0
  303. package/dist-pkg/runtime/typed-routes.d.ts +24 -0
  304. package/dist-pkg/runtime/typed-routes.js +77 -0
  305. package/dist-pkg/runtime/validated-form.d.ts +40 -0
  306. package/dist-pkg/runtime/validated-form.js +120 -0
  307. package/dist-pkg/security/cors.d.ts +10 -0
  308. package/dist-pkg/security/cors.js +56 -0
  309. package/dist-pkg/security/csrf.d.ts +9 -0
  310. package/dist-pkg/security/csrf.js +53 -0
  311. package/dist-pkg/security/headers.d.ts +11 -0
  312. package/dist-pkg/security/headers.js +31 -0
  313. package/dist-pkg/security/index.d.ts +5 -0
  314. package/dist-pkg/security/index.js +5 -0
  315. package/dist-pkg/security/rate-limit.d.ts +10 -0
  316. package/dist-pkg/security/rate-limit.js +49 -0
  317. package/dist-pkg/security/redis-rate-limit.d.ts +14 -0
  318. package/dist-pkg/security/redis-rate-limit.js +23 -0
  319. package/dist-pkg/server/action.d.ts +21 -0
  320. package/dist-pkg/server/action.js +64 -0
  321. package/dist-pkg/server/cache-utils.d.ts +2 -0
  322. package/dist-pkg/server/cache-utils.js +26 -0
  323. package/dist-pkg/server/cache.d.ts +33 -0
  324. package/dist-pkg/server/cache.js +236 -0
  325. package/dist-pkg/server/compress.d.ts +2 -0
  326. package/dist-pkg/server/compress.js +49 -0
  327. package/dist-pkg/server/endpoint-execution.d.ts +28 -0
  328. package/dist-pkg/server/endpoint-execution.js +37 -0
  329. package/dist-pkg/server/etag.d.ts +3 -0
  330. package/dist-pkg/server/etag.js +18 -0
  331. package/dist-pkg/server/guard.d.ts +16 -0
  332. package/dist-pkg/server/guard.js +45 -0
  333. package/dist-pkg/server/html-shell.d.ts +12 -0
  334. package/dist-pkg/server/html-shell.js +52 -0
  335. package/dist-pkg/server/index.d.ts +36 -0
  336. package/dist-pkg/server/index.js +170 -0
  337. package/dist-pkg/server/jobs.d.ts +41 -0
  338. package/dist-pkg/server/jobs.js +81 -0
  339. package/dist-pkg/server/manifest.d.ts +19 -0
  340. package/dist-pkg/server/manifest.js +36 -0
  341. package/dist-pkg/server/middleware.d.ts +39 -0
  342. package/dist-pkg/server/middleware.js +122 -0
  343. package/dist-pkg/server/mime.d.ts +1 -0
  344. package/{src/server/mime.ts → dist-pkg/server/mime.js} +6 -17
  345. package/dist-pkg/server/not-found.d.ts +6 -0
  346. package/dist-pkg/server/not-found.js +24 -0
  347. package/dist-pkg/server/page-render.d.ts +29 -0
  348. package/dist-pkg/server/page-render.js +67 -0
  349. package/dist-pkg/server/partial-navigation.d.ts +4 -0
  350. package/dist-pkg/server/partial-navigation.js +16 -0
  351. package/dist-pkg/server/pipe.d.ts +9 -0
  352. package/dist-pkg/server/pipe.js +32 -0
  353. package/dist-pkg/server/redis-cache-store.d.ts +10 -0
  354. package/dist-pkg/server/redis-cache-store.js +73 -0
  355. package/dist-pkg/server/redis-client.d.ts +37 -0
  356. package/dist-pkg/server/redis-client.js +37 -0
  357. package/dist-pkg/server/request-policy.d.ts +55 -0
  358. package/dist-pkg/server/request-policy.js +216 -0
  359. package/dist-pkg/server/request-preflight.d.ts +23 -0
  360. package/dist-pkg/server/request-preflight.js +45 -0
  361. package/dist-pkg/server/request-security-policy.d.ts +17 -0
  362. package/dist-pkg/server/request-security-policy.js +34 -0
  363. package/dist-pkg/server/request-surface.d.ts +8 -0
  364. package/dist-pkg/server/request-surface.js +19 -0
  365. package/dist-pkg/server/route-request.d.ts +31 -0
  366. package/dist-pkg/server/route-request.js +112 -0
  367. package/dist-pkg/server/route-response.d.ts +22 -0
  368. package/dist-pkg/server/route-response.js +58 -0
  369. package/dist-pkg/server/rpc-hash.d.ts +2 -0
  370. package/dist-pkg/server/rpc-hash.js +7 -0
  371. package/dist-pkg/server/rpc-protocol.d.ts +22 -0
  372. package/dist-pkg/server/rpc-protocol.js +28 -0
  373. package/dist-pkg/server/rpc-utils.d.ts +2 -0
  374. package/dist-pkg/server/rpc-utils.js +26 -0
  375. package/dist-pkg/server/rpc.d.ts +20 -0
  376. package/dist-pkg/server/rpc.js +147 -0
  377. package/dist-pkg/server/runtime-dispatch.d.ts +19 -0
  378. package/dist-pkg/server/runtime-dispatch.js +67 -0
  379. package/dist-pkg/server/server-execution.d.ts +22 -0
  380. package/dist-pkg/server/server-execution.js +53 -0
  381. package/dist-pkg/server/sqlite-cache-store.d.ts +13 -0
  382. package/dist-pkg/server/sqlite-cache-store.js +88 -0
  383. package/dist-pkg/server/sse.d.ts +9 -0
  384. package/dist-pkg/server/sse.js +34 -0
  385. package/dist-pkg/server/static-file.d.ts +9 -0
  386. package/dist-pkg/server/static-file.js +43 -0
  387. package/dist-pkg/server/ws.d.ts +18 -0
  388. package/dist-pkg/server/ws.js +40 -0
  389. package/dist-pkg/server-entry.d.ts +19 -0
  390. package/dist-pkg/server-entry.js +93 -0
  391. package/dist-pkg/testing/index.d.ts +98 -0
  392. package/dist-pkg/testing/index.js +254 -0
  393. package/dist-pkg/types/index.d.ts +4 -0
  394. package/dist-pkg/types/index.js +4 -0
  395. package/dist-pkg/types/safe-html.d.ts +7 -0
  396. package/dist-pkg/types/safe-html.js +19 -0
  397. package/dist-pkg/types/safe-sql.d.ts +8 -0
  398. package/dist-pkg/types/safe-sql.js +14 -0
  399. package/dist-pkg/types/safe-url.d.ts +7 -0
  400. package/dist-pkg/types/safe-url.js +20 -0
  401. package/dist-pkg/types/user-input.d.ts +9 -0
  402. package/dist-pkg/types/user-input.js +3 -0
  403. package/dist-pkg/unsafe/index.d.ts +12 -0
  404. package/dist-pkg/unsafe/index.js +6 -0
  405. package/package.json +101 -45
  406. package/bin/gorsee.js +0 -2
  407. package/src/auth/index.ts +0 -178
  408. package/src/auth/redis-session-store.ts +0 -46
  409. package/src/auth/sqlite-session-store.ts +0 -98
  410. package/src/auth/store-utils.ts +0 -21
  411. package/src/build/client.ts +0 -139
  412. package/src/build/css-modules.ts +0 -69
  413. package/src/build/devalue-parse.ts +0 -2
  414. package/src/build/manifest.ts +0 -34
  415. package/src/build/route-metadata.ts +0 -12
  416. package/src/build/rpc-transform.ts +0 -62
  417. package/src/build/server-strip.ts +0 -87
  418. package/src/build/ssg.ts +0 -70
  419. package/src/cli/bun-plugin.ts +0 -58
  420. package/src/cli/cmd-build.ts +0 -153
  421. package/src/cli/cmd-check.ts +0 -239
  422. package/src/cli/cmd-create.ts +0 -328
  423. package/src/cli/cmd-deploy.ts +0 -149
  424. package/src/cli/cmd-dev.ts +0 -13
  425. package/src/cli/cmd-docs.ts +0 -152
  426. package/src/cli/cmd-generate.ts +0 -155
  427. package/src/cli/cmd-migrate.ts +0 -53
  428. package/src/cli/cmd-routes.ts +0 -36
  429. package/src/cli/cmd-start.ts +0 -30
  430. package/src/cli/cmd-test.ts +0 -129
  431. package/src/cli/cmd-typegen.ts +0 -93
  432. package/src/cli/cmd-upgrade.ts +0 -143
  433. package/src/cli/context.ts +0 -12
  434. package/src/cli/framework-md.ts +0 -223
  435. package/src/cli/index.ts +0 -107
  436. package/src/client.ts +0 -26
  437. package/src/db/index.ts +0 -2
  438. package/src/db/migrate.ts +0 -89
  439. package/src/db/sqlite.ts +0 -40
  440. package/src/deploy/index.ts +0 -31
  441. package/src/deploy/vercel.ts +0 -94
  442. package/src/dev/hmr.ts +0 -31
  443. package/src/dev/partial-handler.ts +0 -52
  444. package/src/dev/request-handler.ts +0 -127
  445. package/src/dev/watcher.ts +0 -48
  446. package/src/dev.ts +0 -208
  447. package/src/env/index.ts +0 -74
  448. package/src/errors/formatter.ts +0 -63
  449. package/src/errors/index.ts +0 -2
  450. package/src/i18n/index.ts +0 -72
  451. package/src/index-client.ts +0 -4
  452. package/src/index.ts +0 -43
  453. package/src/jsx-runtime-client.ts +0 -13
  454. package/src/jsx-runtime.ts +0 -20
  455. package/src/jsx-types-html.ts +0 -242
  456. package/src/log/index.ts +0 -44
  457. package/src/plugins/drizzle.ts +0 -84
  458. package/src/plugins/index.ts +0 -86
  459. package/src/plugins/lucia.ts +0 -111
  460. package/src/plugins/prisma.ts +0 -85
  461. package/src/plugins/resend.ts +0 -78
  462. package/src/plugins/s3.ts +0 -102
  463. package/src/plugins/stripe.ts +0 -133
  464. package/src/plugins/tailwind.ts +0 -92
  465. package/src/prod.ts +0 -252
  466. package/src/reactive/computed.ts +0 -7
  467. package/src/reactive/effect.ts +0 -7
  468. package/src/reactive/index.ts +0 -7
  469. package/src/reactive/live.ts +0 -97
  470. package/src/reactive/optimistic.ts +0 -83
  471. package/src/reactive/resource.ts +0 -138
  472. package/src/reactive/signal.ts +0 -20
  473. package/src/reactive/store.ts +0 -36
  474. package/src/router/index.ts +0 -2
  475. package/src/router/matcher.ts +0 -53
  476. package/src/router/scanner.ts +0 -206
  477. package/src/runtime/client.ts +0 -28
  478. package/src/runtime/error-boundary.ts +0 -35
  479. package/src/runtime/form.ts +0 -49
  480. package/src/runtime/head.ts +0 -113
  481. package/src/runtime/html-escape.ts +0 -30
  482. package/src/runtime/hydration.ts +0 -95
  483. package/src/runtime/image.ts +0 -48
  484. package/src/runtime/index.ts +0 -12
  485. package/src/runtime/island-hydrator.ts +0 -84
  486. package/src/runtime/island.ts +0 -88
  487. package/src/runtime/jsx-runtime.ts +0 -167
  488. package/src/runtime/link.ts +0 -45
  489. package/src/runtime/project.ts +0 -73
  490. package/src/runtime/router.ts +0 -224
  491. package/src/runtime/server.ts +0 -102
  492. package/src/runtime/stream.ts +0 -182
  493. package/src/runtime/suspense.ts +0 -37
  494. package/src/runtime/typed-routes.ts +0 -26
  495. package/src/runtime/validated-form.ts +0 -106
  496. package/src/security/cors.ts +0 -80
  497. package/src/security/csrf.ts +0 -85
  498. package/src/security/headers.ts +0 -50
  499. package/src/security/index.ts +0 -4
  500. package/src/security/rate-limit.ts +0 -80
  501. package/src/server/action.ts +0 -48
  502. package/src/server/cache-utils.ts +0 -23
  503. package/src/server/cache.ts +0 -125
  504. package/src/server/compress.ts +0 -60
  505. package/src/server/etag.ts +0 -23
  506. package/src/server/guard.ts +0 -69
  507. package/src/server/html-shell.ts +0 -69
  508. package/src/server/index.ts +0 -57
  509. package/src/server/manifest.ts +0 -36
  510. package/src/server/middleware.ts +0 -159
  511. package/src/server/not-found.ts +0 -35
  512. package/src/server/page-render.ts +0 -123
  513. package/src/server/pipe.ts +0 -46
  514. package/src/server/redis-cache-store.ts +0 -87
  515. package/src/server/redis-client.ts +0 -71
  516. package/src/server/request-preflight.ts +0 -45
  517. package/src/server/route-request.ts +0 -72
  518. package/src/server/rpc-hash.ts +0 -17
  519. package/src/server/rpc-utils.ts +0 -27
  520. package/src/server/rpc.ts +0 -177
  521. package/src/server/sqlite-cache-store.ts +0 -109
  522. package/src/server/sse.ts +0 -96
  523. package/src/server/static-file.ts +0 -63
  524. package/src/server/ws.ts +0 -56
  525. package/src/server-entry.ts +0 -36
  526. package/src/testing/index.ts +0 -74
  527. package/src/types/index.ts +0 -4
  528. package/src/types/safe-html.ts +0 -32
  529. package/src/types/safe-sql.ts +0 -28
  530. package/src/types/safe-url.ts +0 -40
  531. package/src/types/user-input.ts +0 -12
  532. package/src/unsafe/index.ts +0 -18
package/README.md CHANGED
@@ -1,267 +1,315 @@
1
1
  # Gorsee.js
2
2
 
3
- Full-stack TypeScript framework with features no one else has.
3
+ AI-first reactive full-stack TypeScript framework for deterministic collaboration between humans and coding agents.
4
+
5
+ Gorsee is not a pet project, not a research toy, and not a bundle of optional recipes. It is a product-grade framework with strict runtime contracts, built-in security boundaries, fine-grained reactivity, and AI-native developer tooling.
6
+
7
+ ## Product Direction
8
+
9
+ Gorsee is built around four non-negotiable product goals:
10
+
11
+ - AI-first development: the framework must be predictable for coding agents, not only ergonomic for humans.
12
+ - Deterministic architecture: one clear way beats many inconsistent ways.
13
+ - Reactive execution: fine-grained reactivity, islands, and minimal client JavaScript over VDOM-heavy legacy models.
14
+ - Built-in guarantees: auth, request policy, cache boundaries, diagnostics, and deploy contracts are framework properties, not scattered ecosystem recipes.
15
+
16
+ Read the strategic docs:
17
+
18
+ - [Product Vision](./docs/PRODUCT_VISION.md)
19
+ - [Framework Doctrine](./docs/FRAMEWORK_DOCTRINE.md)
20
+ - [Security Model](./docs/SECURITY_MODEL.md)
21
+ - [Top-Tier Roadmap](./docs/TOP_TIER_ROADMAP.md)
22
+ - [Canonical Language Plan](./docs/CANONICAL_LANGUAGE_PLAN.md)
23
+ - [Canonical Recipes](./docs/CANONICAL_RECIPES.md)
24
+ - [Canonical Examples](./examples/README.md)
25
+ - [Examples Policy](./docs/EXAMPLES_POLICY.md)
26
+ - [Reactive Runtime](./docs/REACTIVE_RUNTIME.md)
27
+ - [Reactive Benchmarks](./docs/REACTIVE_BENCHMARKS.md)
28
+ - [Reactive Patterns](./docs/REACTIVE_PATTERNS.md)
29
+ - [Reactive Hydration](./docs/REACTIVE_HYDRATION.md)
30
+ - [Reactive Debugging](./docs/REACTIVE_DEBUGGING.md)
31
+ - [Reactive Measurement Gaps](./docs/REACTIVE_MEASUREMENT_GAPS.md)
32
+ - [Benchmark Policy](./docs/BENCHMARK_POLICY.md)
33
+ - [Benchmark Methodology](./docs/BENCHMARK_METHODOLOGY.md)
34
+ - [SSR Benchmark Proof](./docs/SSR_BENCHMARK_PROOF.md)
35
+ - [DOM Benchmark Proof](./docs/DOM_BENCHMARK_PROOF.md)
36
+ - [Benchmark Artifacts](./docs/BENCHMARK_ARTIFACTS.md)
37
+ - [Benchmark Release Discipline](./docs/BENCHMARK_RELEASE_DISCIPLINE.md)
38
+ - [Build Diagnostics](./docs/BUILD_DIAGNOSTICS.md)
39
+ - [Runtime Failures](./docs/RUNTIME_FAILURES.md)
40
+ - [Cache Invalidation](./docs/CACHE_INVALIDATION.md)
41
+ - [Streaming and Hydration Failures](./docs/STREAMING_HYDRATION_FAILURES.md)
42
+ - [Runtime Triage](./docs/RUNTIME_TRIAGE.md)
43
+ - [Starter Failures](./docs/STARTER_FAILURES.md)
44
+ - [AI Workflows](./docs/AI_WORKFLOWS.md)
45
+ - [AI IDE Sync Workflow](./docs/AI_IDE_SYNC_WORKFLOW.md)
46
+ - [AI MCP Workflow](./docs/AI_MCP_WORKFLOW.md)
47
+ - [AI Bridge Workflow](./docs/AI_BRIDGE_WORKFLOW.md)
48
+ - [AI Tool Builders](./docs/AI_TOOL_BUILDERS.md)
49
+ - [AI Surface Stability](./docs/AI_SURFACE_STABILITY.md)
50
+ - [AI Session Packs](./docs/AI_SESSION_PACKS.md)
51
+ - [AI Debugging Workflows](./docs/AI_DEBUGGING_WORKFLOWS.md)
52
+ - [Starter Onboarding](./docs/STARTER_ONBOARDING.md)
53
+ - [Market-Ready Proof](./docs/MARKET_READY_PROOF.md)
54
+ - [Migration Guide](./docs/MIGRATION_GUIDE.md)
55
+ - [Upgrade Playbook](./docs/UPGRADE_PLAYBOOK.md)
56
+ - [Deploy Target Guide](./docs/DEPLOY_TARGET_GUIDE.md)
57
+ - [First Production Rollout](./docs/FIRST_PRODUCTION_ROLLOUT.md)
58
+ - [Auth / Cache / Data Paths](./docs/AUTH_CACHE_DATA_PATHS.md)
59
+ - [Recipe Boundaries](./docs/RECIPE_BOUNDARIES.md)
60
+ - [Workspace Adoption](./docs/WORKSPACE_ADOPTION.md)
61
+ - [Downstream Testing](./docs/DOWNSTREAM_TESTING.md)
62
+ - [Team Failures](./docs/TEAM_FAILURES.md)
63
+ - [Maturity Policy](./docs/MATURITY_POLICY.md)
64
+ - [Dependency Policy](./docs/DEPENDENCY_POLICY.md)
65
+ - [Compatibility Guardrails](./docs/COMPATIBILITY_GUARDRAILS.md)
66
+ - [Ambiguity Policy](./docs/AMBIGUITY_POLICY.md)
67
+ - [DX Feedback Loop](./docs/DX_FEEDBACK_LOOP.md)
68
+ - [Evidence Policy](./docs/EVIDENCE_POLICY.md)
69
+ - [Roadmap Completion Policy](./docs/ROADMAP_COMPLETION_POLICY.md)
4
70
 
5
71
  ## Quick Start
6
72
 
7
73
  ```bash
8
- bunx gorsee create my-app
74
+ bunx gorsee create my-app --template secure-saas
9
75
  cd my-app
10
76
  bun install
11
77
  bun run dev
12
78
  ```
13
79
 
14
- Open [http://localhost:3000](http://localhost:3000).
80
+ Alternative bootstrap paths:
15
81
 
16
- ## Why Gorsee.js?
82
+ ```bash
83
+ npx create-gorsee my-app
84
+ npm create gorsee@latest my-app
85
+ ```
17
86
 
18
- | Feature | Gorsee.js | Next.js | Nuxt | SvelteKit |
19
- |---------|:---------:|:-------:|:----:|:---------:|
20
- | Islands (partial hydration) | ✅ | ❌ | ❌ | ❌ |
21
- | Reactive WebSocket signals | ✅ | ❌ | ❌ | ❌ |
22
- | Optimistic mutations + rollback | ✅ | ❌ | ❌ | ❌ |
23
- | Server-Sent Events (reactive) | ✅ | manual | manual | manual |
24
- | Route-level cache (SWR) | ✅ | ISR only | partial | ❌ |
25
- | Built-in auth (HMAC sessions) | ✅ | manual | manual | manual |
26
- | Guards (declarative ACL) | ✅ | manual | partial | ❌ |
27
- | Middleware pipe/compose | ✅ | ❌ | ❌ | ❌ |
28
- | Validated forms (client+server) | ✅ | ❌ | ❌ | ❌ |
29
- | Type-safe routes (generated) | ✅ | experimental | partial | ❌ |
30
- | Branded types (SafeSQL/HTML/URL) | ✅ | ❌ | ❌ | ❌ |
87
+ Open [http://localhost:3000](http://localhost:3000).
31
88
 
32
- **Zero-cost architecture** — every feature is a separate module. Don't use it? It's not in your bundle. Base client bundle: ~2-3 KB per route.
89
+ ## Why Gorsee
33
90
 
34
- ## Features
91
+ Most modern frameworks optimize for flexibility, historical compatibility, or ecosystem breadth.
92
+ Gorsee optimizes for deterministic delivery by humans and AI agents working in the same codebase.
35
93
 
36
- ### Islands partial hydration
94
+ What that means in practice:
37
95
 
38
- ```tsx
39
- import { island, createSignal } from "gorsee/client"
96
+ - strict client/server import boundaries
97
+ - explicit request classification and security policy
98
+ - fail-closed production origin model
99
+ - small reactive runtime without VDOM baggage
100
+ - route-scoped hydration through islands
101
+ - optimized image rendering with remote allowlists, srcset generation, and format-aware loaders
102
+ - structured form actions with field/form error handling and typed coercion
103
+ - explicit data queries and mutations with keyed invalidation over the reactive runtime
104
+ - typed route builders with params, query strings, and reusable route definitions
105
+ - locale negotiation, fallback dictionaries, Intl formatting, and locale-aware route helpers
106
+ - content collections with nested frontmatter parsing, schema validation, excerpts, block-scalar support, and locale-aware querying
107
+ - deterministic plugin platform with capabilities, dependency ordering, config validation, and conformance testing
108
+ - AI diagnostics, saved reactive-trace ingestion, context bundles, IDE projections, and MCP integration built into the framework lifecycle
109
+ - CLI enforcement through `gorsee check`, release gates, deploy contracts, and policy docs
40
110
 
41
- // Only THIS component gets JavaScript. Rest of the page = zero JS.
42
- export default island(function LikeButton({ postId }) {
43
- const [count, setCount] = createSignal(0)
44
- return <button on:click={() => setCount(c => c + 1)}>Like {count()}</button>
45
- })
46
- ```
111
+ ## Core Ideas
47
112
 
48
- ### Reactive WebSocket
113
+ ### AI-first development
49
114
 
50
- ```tsx
51
- import { createLive } from "gorsee/client"
52
-
53
- function StockPrice() {
54
- const { value: price, connected } = createLive({
55
- url: "wss://api.example.com/btc",
56
- initialValue: 0,
57
- reconnect: true, // auto-reconnect with exponential backoff
58
- })
59
- return <span>{connected() ? price() : "..."}</span>
60
- }
61
- ```
115
+ The framework must be easy for an agent to reason about:
62
116
 
63
- ### Optimistic Mutations
117
+ - deterministic project layout
118
+ - narrow public surfaces
119
+ - explicit runtime contracts
120
+ - strong defaults over open-ended composition
121
+ - observability artifacts that can be consumed by tools and models
64
122
 
65
- ```tsx
66
- import { createSignal, createMutation } from "gorsee/client"
123
+ ### Reactive-first runtime
67
124
 
68
- const [todos, setTodos] = createSignal(["Buy milk"])
69
- const addTodo = createMutation({
70
- mutationFn: async (text) => fetch("/api/todos", { method: "POST", body: text }),
71
- })
125
+ Gorsee follows a fine-grained reactive model closer to Solid than to React:
72
126
 
73
- // UI updates instantly. Rolls back automatically on server error.
74
- await addTodo.optimistic(todos, setTodos, (list, text) => [...list, text], "New todo")
75
- ```
76
-
77
- ### Built-in Auth
127
+ - signals instead of VDOM diffing
128
+ - direct SSR rendering
129
+ - explicit hydration model
130
+ - islands for minimal client JavaScript
78
131
 
79
132
  ```tsx
80
- import { createAuth } from "gorsee/server"
81
-
82
- const auth = createAuth({ secret: process.env.SESSION_SECRET })
133
+ import { island, createSignal } from "gorsee/client"
83
134
 
84
- // In middleware:
85
- export default auth.middleware // parses session
86
- export default auth.requireAuth // redirects to /login if not authenticated
135
+ export default island(function LikeButton() {
136
+ const [count, setCount] = createSignal(0)
137
+ return <button on:click={() => setCount((value) => value + 1)}>Like {count()}</button>
138
+ })
87
139
  ```
88
140
 
89
- ### File-Based Routing
141
+ ### Built-in guarantees
90
142
 
91
- ```
92
- routes/
93
- index.tsx → /
94
- about.tsx → /about
95
- users/[id].tsx → /users/:id
96
- blog/[...slug].tsx → /blog/*
97
- (admin)/
98
- dashboard.tsx → /dashboard (group — no /admin prefix)
99
- _layout.tsx → wraps all pages
100
- _middleware.ts → runs before all routes
101
- _error.tsx → error boundary
102
- _loading.tsx → loading state
103
- 404.tsx → custom 404
104
- ```
143
+ Capabilities are not bolt-on features. They are part of the framework contract:
105
144
 
106
- ### Middleware Pipe
145
+ - auth and session stores
146
+ - request policy and security validation
147
+ - route cache with explicit intent
148
+ - type-safe route generation
149
+ - validated forms
150
+ - deploy adapters with provider assumptions
151
+ - AI observability and bridge tooling
107
152
 
108
- ```tsx
109
- import { pipe, forPaths, forMethods } from "gorsee/server"
110
- import { cors } from "gorsee/security"
153
+ ## Canonical Route Grammar
111
154
 
112
- export default pipe(
113
- forPaths(["/api"], cors({ origin: "https://app.com" })),
114
- forMethods(["POST"], rateLimit(100, "1m")),
115
- auth.middleware,
116
- )
117
- ```
155
+ For greenfield route modules, prefer this structure:
118
156
 
119
- ## CLI Commands
157
+ - `default export` for page UI
158
+ - `load` for route data reads
159
+ - `action` for page-bound mutations
160
+ - `cache` for declarative cache policy
161
+ - `middleware` for cross-cutting request policy
162
+ - `GET` / `POST` / other method handlers for raw HTTP endpoints
163
+ - route contracts from `gorsee/routes` for typed links and navigation
120
164
 
121
- | Command | Description |
122
- |---------|-------------|
123
- | `gorsee create <name>` | Scaffold new project |
124
- | `gorsee dev` | Dev server with HMR |
125
- | `gorsee build` | Production build |
126
- | `gorsee start` | Production server |
127
- | `gorsee check` | Type check + safety audit |
128
- | `gorsee routes` | Show route table |
129
- | `gorsee generate <entity>` | CRUD scaffold |
130
- | `gorsee typegen` | Generate typed routes |
131
- | `gorsee migrate` | Run DB migrations |
165
+ Compatibility note: `loader` remains supported as a migration alias, but canonical route modules should use `load`.
132
166
 
133
- ## Recommended Imports
167
+ ## Public Entrypoints
134
168
 
135
169
  ```tsx
136
- // Route components, islands, navigation, forms, browser-safe reactivity
137
170
  import { createSignal, island, Link, Head } from "gorsee/client"
138
-
139
- // Middleware, loaders, auth, db, security, logging
140
- import { createAuth, createDB, cors, log } from "gorsee/server"
171
+ import { createAuth } from "gorsee/auth"
172
+ import { createDB } from "gorsee/db"
173
+ import { cors } from "gorsee/security"
174
+ import { log } from "gorsee/log"
175
+ import { defineForm, useFormAction } from "gorsee/forms"
176
+ import { createTypedRoute } from "gorsee/routes"
141
177
  ```
142
178
 
143
- - Use `gorsee/client` for route components and anything that must stay browser-safe.
144
- - Use `gorsee/server` for loaders, middleware, API routes, auth, db, security, env, and logging.
145
- - Keep root `gorsee` only for backward compatibility. New code should not depend on it.
146
- - If you need explicit legacy semantics during migration, use `gorsee/compat`.
147
-
148
- ## Adapter Utilities
149
-
150
179
  ```tsx
151
- import {
152
- createAuth,
153
- createMemorySessionStore,
154
- createNamespacedSessionStore,
155
- createRedisSessionStore,
156
- createSQLiteSessionStore,
157
- createMemoryCacheStore,
158
- createNamespacedCacheStore,
159
- createRedisCacheStore,
160
- createSQLiteCacheStore,
161
- createMemoryRPCRegistry,
162
- createScopedRPCRegistry,
163
- } from "gorsee/server"
164
-
165
- const sharedSessions = createMemorySessionStore()
166
- const tenantSessions = createNamespacedSessionStore(sharedSessions, "tenant-a")
167
- const auth = createAuth({ secret: process.env.SESSION_SECRET!, store: tenantSessions })
168
-
169
- const sharedCache = createMemoryCacheStore()
170
- const tenantCache = createNamespacedCacheStore(sharedCache, "tenant-a")
171
-
172
- const sessionStore = createSQLiteSessionStore("./data/auth.sqlite")
173
- const cacheStore = createSQLiteCacheStore("./data/cache.sqlite")
174
-
175
- const redisSessionStore = createRedisSessionStore(redisClient, { prefix: "gorsee:sessions" })
176
- const redisCacheStore = createRedisCacheStore(redisClient, { prefix: "gorsee:cache" })
177
-
178
- const sharedRPC = createMemoryRPCRegistry()
179
- const tenantRPC = createScopedRPCRegistry(sharedRPC, "tenant-a")
180
+ const userRoute = createTypedRoute("/users/[id]")
181
+
182
+ <Link href={userRoute} params={{ id: "42" }}>Profile</Link>
180
183
  ```
181
184
 
182
- - `createNamespacedSessionStore` isolates auth sessions over one shared backing store.
183
- - `createNamespacedCacheStore` isolates route cache keys per app, tenant, or test worker.
184
- - `createSQLiteSessionStore` and `createSQLiteCacheStore` provide persistent local adapters without adding external infrastructure.
185
- - `createSQLiteSessionStore` prunes expired rows automatically on hot paths and also exposes `deleteExpired()` for explicit maintenance.
186
- - `createSQLiteCacheStore` supports retention policy via `maxEntryAgeMs` and also exposes `deleteExpired()` for explicit cache pruning.
187
- - `createRedisSessionStore` and `createRedisCacheStore` work with any client that supports `get/set/del/keys`, so you can plug in `redis` or `ioredis` without framework lock-in.
188
- - RPC handlers remain intentionally process-local. The stable extension point is injected request-time registry resolution, not pretending closures can live in Redis.
189
- - `createScopedRPCRegistry` isolates RPC registrations without forking the entire server runtime.
185
+ - Use `gorsee/client` for route components and browser-safe APIs.
186
+ - Use `gorsee/server` for `load`, `action`, middleware, API routes, cache, request policy, and server runtime orchestration.
187
+ - Prefer scoped stable subpaths such as `gorsee/auth`, `gorsee/db`, `gorsee/security`, `gorsee/ai`, `gorsee/forms`, `gorsee/routes`, `gorsee/i18n`, and `gorsee/content` when the concern is already clear.
188
+ - Keep root `gorsee` only for compatibility. New code should not depend on it.
189
+ - Use `gorsee/compat` only for explicit legacy migration semantics.
190
+ - `Link` prefetch is explicit: `prefetch={true}` is eager, `prefetch="hover"` is pointer/focus triggered, and `prefetch="viewport"` is IntersectionObserver-driven. Links without `prefetch` do not prefetch implicitly.
190
191
 
191
- ## Redis Recipes
192
+ ## Package Distribution
192
193
 
193
- ### node-redis
194
+ - workspace development stays Bun-first and source-first
195
+ - production build output includes `dist/prod.js` for Bun, `dist/prod-node.js` for Node, and matching Bun/Node server-handler entries for adapter runtimes
196
+ - process deploy generators keep Bun-first defaults while also supporting explicit Node runtime profiles for Docker and Fly
197
+ - published packages are normalized at `npm pack` / publish time to compiled `dist-pkg/*.js` and `dist-pkg/*.d.ts` artifacts
198
+ - packed `gorsee` validates CLI install, starter creation, `check`, `typegen`, `docs`, `build`, and deploy generator paths before release
199
+ - published runtime dependencies are treated as product surface and must stay pinned exactly
194
200
 
195
- ```tsx
196
- import { createClient } from "redis"
197
- import {
198
- createAuth,
199
- createRedisSessionStore,
200
- createRedisCacheStore,
201
- createNodeRedisLikeClient,
202
- routeCache,
203
- } from "gorsee/server"
204
-
205
- const redis = createClient({ url: process.env.REDIS_URL })
206
- await redis.connect()
207
- const redisClient = createNodeRedisLikeClient(redis)
208
-
209
- const auth = createAuth({
210
- secret: process.env.SESSION_SECRET!,
211
- store: createRedisSessionStore(redisClient, { prefix: "app:sessions" }),
212
- })
201
+ ## Starter Templates
213
202
 
214
- export const cache = routeCache({
215
- maxAge: 60,
216
- staleWhileRevalidate: 300,
217
- store: createRedisCacheStore(redisClient, {
218
- prefix: "app:cache",
219
- maxEntryAgeMs: 360_000,
220
- }),
221
- })
222
- ```
203
+ `gorsee create` ships with one generic baseline and four first-party product starters:
223
204
 
224
- ### ioredis
205
+ - `basic` for the minimal canonical scaffold
206
+ - `secure-saas` for authenticated SaaS apps with protected route groups
207
+ - `content-site` for public content and marketing sites
208
+ - `agent-aware-ops` for internal tools with AI-first workflows enabled
209
+ - `workspace-monorepo` for workspace layouts with one app package and one shared package
225
210
 
226
- ```tsx
227
- import Redis from "ioredis"
228
- import {
229
- createAuth,
230
- createRedisSessionStore,
231
- createRedisCacheStore,
232
- createIORedisLikeClient,
233
- routeCache,
234
- } from "gorsee/server"
235
-
236
- const redis = new Redis(process.env.REDIS_URL!)
237
- const redisClient = createIORedisLikeClient(redis)
238
-
239
- const auth = createAuth({
240
- secret: process.env.SESSION_SECRET!,
241
- store: createRedisSessionStore(redisClient, { prefix: "app:sessions" }),
242
- })
211
+ Examples:
243
212
 
244
- export const cache = routeCache({
245
- maxAge: 60,
246
- staleWhileRevalidate: 300,
247
- store: createRedisCacheStore(redisClient, {
248
- prefix: "app:cache",
249
- maxEntryAgeMs: 360_000,
250
- }),
251
- })
213
+ ```bash
214
+ bunx gorsee create my-saas --template secure-saas
215
+ bunx gorsee create my-site --template content-site
216
+ bunx gorsee create my-ops --template agent-aware-ops
217
+ bunx gorsee create my-workspace --template workspace-monorepo
218
+ npx create-gorsee my-app
219
+ npm create gorsee@latest my-app
252
220
  ```
253
221
 
254
- ### Notes
255
-
256
- - For multi-instance deployments, keep the same Redis prefixes across all app replicas.
257
- - Session expiry is enforced by store TTL and validated again by `createAuth()`.
258
- - Cache retention is controlled by `maxEntryAgeMs`; `routeCache()` still decides HIT/STALE/MISS at request time.
259
- - `createNodeRedisLikeClient()` and `createIORedisLikeClient()` let you pass real Redis SDK clients without writing framework-specific glue.
260
-
261
- ## Requirements
222
+ ## CLI
262
223
 
263
- - [Bun](https://bun.sh) >= 1.0
264
-
265
- ## License
266
-
267
- MIT
224
+ | Command | Description |
225
+ |---------|-------------|
226
+ | `gorsee create <name> [--template <name>]` | Scaffold a new project from the canonical starter set |
227
+ | `gorsee dev` | Start development server with HMR |
228
+ | `gorsee build` | Build client and server output |
229
+ | `gorsee start` | Start production runtime |
230
+ | `gorsee start --runtime node` | Start the built Node production runtime entry |
231
+ | `gorsee check [--rewrite-imports] [--rewrite-loaders]` | Type, structure, TSX contract, and safety audit, with optional canonical autofix |
232
+ | `gorsee routes` | Show route table |
233
+ | `gorsee generate <entity>` | Generate CRUD scaffold with typed routes, validated forms, and inferred `memory|sqlite|postgres` data mode |
234
+ | `gorsee docs --format json --contracts` | Emit machine-readable route/docs contract artifact |
235
+ | `gorsee upgrade --rewrite-imports --check --report docs/upgrade-report.json` | Audit migration drift, rewrite obvious import/loader aliases, and write a structured upgrade report |
236
+ | `gorsee typegen` | Generate typed routes |
237
+ | `gorsee migrate` | Run database migrations |
238
+ | `gorsee deploy` | Generate deploy config for supported targets, with `--runtime bun|node` on process-based adapters |
239
+ | `gorsee ai` | AI diagnostics, bridge, IDE sync, export, and MCP tooling |
240
+
241
+ Runtime debugging surface:
242
+
243
+ - `createRuntimeDevtoolsSnapshot()` for a versioned inspector snapshot spanning router, hydration, and reactive diagnostics
244
+ - `renderRuntimeDevtoolsHTML()` / `renderRuntimeDevtoolsOverlay()` for a human-readable devtools view built from the same canonical artifacts
245
+
246
+ Migration ergonomics:
247
+
248
+ - `gorsee check --rewrite-imports --rewrite-loaders` can normalize obvious scoped-import and `loader -> load` drift before the audit runs.
249
+ - `gorsee upgrade --rewrite-imports --check --report docs/upgrade-report.json` is the canonical migration cleanup flow.
250
+
251
+ ## Product Standards
252
+
253
+ - Production behavior must remain deterministic across dev and prod.
254
+ - Security-sensitive behavior must be explicit, testable, and fail-closed.
255
+ - New APIs must strengthen the framework contract, not widen ambiguity.
256
+ - Performance claims must be backed by benchmarks and reproducible examples.
257
+ - Gorsee is developed as a mature product. Regressions in policy, runtime contracts, or release discipline are product failures.
258
+
259
+ ## Additional References
260
+
261
+ - [API Stability Policy](./docs/API_STABILITY.md)
262
+ - [AI Artifact Contract](./docs/AI_ARTIFACT_CONTRACT.md)
263
+ - [Reactive Runtime](./docs/REACTIVE_RUNTIME.md)
264
+ - [Reactive Benchmarks](./docs/REACTIVE_BENCHMARKS.md)
265
+ - [Reactive Patterns](./docs/REACTIVE_PATTERNS.md)
266
+ - [Reactive Hydration](./docs/REACTIVE_HYDRATION.md)
267
+ - [Reactive Debugging](./docs/REACTIVE_DEBUGGING.md)
268
+ - [Reactive Measurement Gaps](./docs/REACTIVE_MEASUREMENT_GAPS.md)
269
+ - [Benchmark Policy](./docs/BENCHMARK_POLICY.md)
270
+ - [Benchmark Methodology](./docs/BENCHMARK_METHODOLOGY.md)
271
+ - [SSR Benchmark Proof](./docs/SSR_BENCHMARK_PROOF.md)
272
+ - [DOM Benchmark Proof](./docs/DOM_BENCHMARK_PROOF.md)
273
+ - [Benchmark Artifacts](./docs/BENCHMARK_ARTIFACTS.md)
274
+ - [Benchmark Release Discipline](./docs/BENCHMARK_RELEASE_DISCIPLINE.md)
275
+ - [Build Diagnostics](./docs/BUILD_DIAGNOSTICS.md)
276
+ - [Runtime Failures](./docs/RUNTIME_FAILURES.md)
277
+ - [Cache Invalidation](./docs/CACHE_INVALIDATION.md)
278
+ - [Streaming and Hydration Failures](./docs/STREAMING_HYDRATION_FAILURES.md)
279
+ - [Runtime Triage](./docs/RUNTIME_TRIAGE.md)
280
+ - [Starter Failures](./docs/STARTER_FAILURES.md)
281
+ - [AI Workflows](./docs/AI_WORKFLOWS.md)
282
+ - [AI IDE Sync Workflow](./docs/AI_IDE_SYNC_WORKFLOW.md)
283
+ - [AI MCP Workflow](./docs/AI_MCP_WORKFLOW.md)
284
+ - [AI Bridge Workflow](./docs/AI_BRIDGE_WORKFLOW.md)
285
+ - [AI Tool Builders](./docs/AI_TOOL_BUILDERS.md)
286
+ - [AI Surface Stability](./docs/AI_SURFACE_STABILITY.md)
287
+ - [AI Session Packs](./docs/AI_SESSION_PACKS.md)
288
+ - [AI Debugging Workflows](./docs/AI_DEBUGGING_WORKFLOWS.md)
289
+ - [Starter Onboarding](./docs/STARTER_ONBOARDING.md)
290
+ - [Migration Guide](./docs/MIGRATION_GUIDE.md)
291
+ - [Upgrade Playbook](./docs/UPGRADE_PLAYBOOK.md)
292
+ - [Deploy Target Guide](./docs/DEPLOY_TARGET_GUIDE.md)
293
+ - [First Production Rollout](./docs/FIRST_PRODUCTION_ROLLOUT.md)
294
+ - [Auth / Cache / Data Paths](./docs/AUTH_CACHE_DATA_PATHS.md)
295
+ - [Recipe Boundaries](./docs/RECIPE_BOUNDARIES.md)
296
+ - [Workspace Adoption](./docs/WORKSPACE_ADOPTION.md)
297
+ - [Downstream Testing](./docs/DOWNSTREAM_TESTING.md)
298
+ - [Team Failures](./docs/TEAM_FAILURES.md)
299
+ - [Maturity Policy](./docs/MATURITY_POLICY.md)
300
+ - [Dependency Policy](./docs/DEPENDENCY_POLICY.md)
301
+ - [Compatibility Guardrails](./docs/COMPATIBILITY_GUARDRAILS.md)
302
+ - [Ambiguity Policy](./docs/AMBIGUITY_POLICY.md)
303
+ - [DX Feedback Loop](./docs/DX_FEEDBACK_LOOP.md)
304
+ - [Evidence Policy](./docs/EVIDENCE_POLICY.md)
305
+ - [Roadmap Completion Policy](./docs/ROADMAP_COMPLETION_POLICY.md)
306
+ - [Canonical Recipes](./docs/CANONICAL_RECIPES.md)
307
+ - [Canonical Examples](./examples/README.md)
308
+ - [Examples Policy](./docs/EXAMPLES_POLICY.md)
309
+ - [Support Matrix](./docs/SUPPORT_MATRIX.md)
310
+ - [Deprecation Policy](./docs/DEPRECATION_POLICY.md)
311
+ - [Secure Patterns](./docs/SECURE_PATTERNS.md)
312
+ - [Adapter Security](./docs/ADAPTER_SECURITY.md)
313
+ - [CI Policy](./docs/CI_POLICY.md)
314
+ - [Release Policy](./docs/RELEASE_POLICY.md)
315
+ - [Release Checklist](./docs/RELEASE_CHECKLIST.md)
@@ -0,0 +1,25 @@
1
+ export interface ArtifactLifecycleEventInput {
2
+ cwd: string;
3
+ source: "deploy" | "cli" | "build";
4
+ phase: "deploy" | "release" | "build";
5
+ kind: string;
6
+ severity: "info" | "warn" | "error";
7
+ message: string;
8
+ code?: string;
9
+ data?: Record<string, unknown>;
10
+ }
11
+ export declare function writeArtifactLifecycleEvent(input: ArtifactLifecycleEventInput): Promise<void>;
12
+ export declare function writeArtifactSuccessPack(cwd: string): Promise<void>;
13
+ export declare function writeArtifactFailurePack(cwd: string, source: "deploy" | "cli" | "build", kind: string, code: string, message: string): Promise<void>;
14
+ export declare function runArtifactLifecycleStep<T>(input: {
15
+ cwd: string;
16
+ source: "deploy" | "cli" | "build";
17
+ phase: "deploy" | "release" | "build";
18
+ step: string;
19
+ version?: string;
20
+ code?: string;
21
+ startMessage: string;
22
+ finishMessage: string;
23
+ data?: Record<string, unknown>;
24
+ run: () => Promise<T>;
25
+ }): Promise<T>;
@@ -0,0 +1,98 @@
1
+ import { appendFile, mkdir, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ export async function writeArtifactLifecycleEvent(input) {
4
+ const gorseeDir = join(input.cwd, ".gorsee");
5
+ await mkdir(gorseeDir, { recursive: !0 });
6
+ const ts = new Date().toISOString();
7
+ await appendFile(join(gorseeDir, "ai-events.jsonl"), `${JSON.stringify({
8
+ id: crypto.randomUUID(),
9
+ kind: input.kind,
10
+ severity: input.severity,
11
+ ts,
12
+ source: input.source,
13
+ message: input.message,
14
+ code: input.code,
15
+ phase: input.phase,
16
+ data: input.data
17
+ })}
18
+ `, "utf-8");
19
+ }
20
+ export async function writeArtifactSuccessPack(cwd) {
21
+ const repoCliEntry = join(import.meta.dir, "..", "cli", "index.ts");
22
+ try {
23
+ await Bun.$`bun run ${repoCliEntry} ai pack`.cwd(cwd).quiet();
24
+ } catch {}
25
+ }
26
+ export async function writeArtifactFailurePack(cwd, source, kind, code, message) {
27
+ const gorseeDir = join(cwd, ".gorsee");
28
+ await mkdir(gorseeDir, { recursive: !0 });
29
+ const ts = new Date().toISOString();
30
+ await appendFile(join(gorseeDir, "ai-events.jsonl"), `${JSON.stringify({
31
+ id: crypto.randomUUID(),
32
+ kind,
33
+ severity: "error",
34
+ ts,
35
+ source,
36
+ message,
37
+ code
38
+ })}
39
+ `, "utf-8");
40
+ await writeFile(join(gorseeDir, "ai-diagnostics.json"), JSON.stringify({
41
+ updatedAt: ts,
42
+ latest: {
43
+ code,
44
+ message,
45
+ severity: "error",
46
+ source
47
+ }
48
+ }, null, 2), "utf-8");
49
+ await writeArtifactSuccessPack(cwd);
50
+ }
51
+ export async function runArtifactLifecycleStep(input) {
52
+ await writeArtifactLifecycleEvent({
53
+ cwd: input.cwd,
54
+ source: input.source,
55
+ phase: input.phase,
56
+ kind: `${input.step}.start`,
57
+ severity: "info",
58
+ message: input.startMessage,
59
+ data: {
60
+ version: input.version,
61
+ ...input.data ?? {}
62
+ }
63
+ });
64
+ try {
65
+ const result = await input.run();
66
+ await writeArtifactLifecycleEvent({
67
+ cwd: input.cwd,
68
+ source: input.source,
69
+ phase: input.phase,
70
+ kind: `${input.step}.finish`,
71
+ severity: "info",
72
+ message: input.finishMessage,
73
+ data: {
74
+ version: input.version,
75
+ ...input.data ?? {}
76
+ }
77
+ });
78
+ await writeArtifactSuccessPack(input.cwd);
79
+ return result;
80
+ } catch (error) {
81
+ const message = error instanceof Error ? error.message : String(error);
82
+ await writeArtifactLifecycleEvent({
83
+ cwd: input.cwd,
84
+ source: input.source,
85
+ phase: input.phase,
86
+ kind: `${input.step}.error`,
87
+ severity: "error",
88
+ message,
89
+ code: input.code,
90
+ data: {
91
+ version: input.version,
92
+ ...input.data ?? {}
93
+ }
94
+ });
95
+ await writeArtifactFailurePack(input.cwd, input.source, `${input.step}.failure`, input.code ?? "ARTIFACT_STEP", message);
96
+ throw error;
97
+ }
98
+ }