gorsee 0.2.3 → 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 +102 -44
  406. package/bin/gorsee.js +0 -14
  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
@@ -0,0 +1,600 @@
1
+ import { copyFile, mkdir, readdir, readFile, writeFile } from "node:fs/promises";
2
+ import { join, relative } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { generateFrameworkMD } from "./framework-md.js";
5
+ import { createProjectContext } from "../runtime/project.js";
6
+ const DIRS = [
7
+ "routes",
8
+ "routes/api",
9
+ "shared",
10
+ "middleware",
11
+ "migrations",
12
+ "public"
13
+ ], INDEX_ROUTE = `import { createSignal, Head, Link } from "gorsee/client"
14
+
15
+ export default function HomePage() {
16
+ const [count, setCount] = createSignal(0)
17
+
18
+ return (
19
+ <div>
20
+ <Head>
21
+ <title>My Gorsee App</title>
22
+ <meta name="description" content="Built with Gorsee.js" />
23
+ </Head>
24
+ <h1>My Gorsee App</h1>
25
+ <p>Edit routes/index.tsx to get started.</p>
26
+ <nav>
27
+ <Link href="/">Home</Link> | <Link href="/about">About</Link>
28
+ </nav>
29
+ <div>
30
+ <button on:click={() => setCount((c: number) => c + 1)}>Count: {count}</button>
31
+ </div>
32
+ </div>
33
+ )
34
+ }
35
+ `, ABOUT_ROUTE = `import { Head, Link } from "gorsee/client"
36
+
37
+ export default function AboutPage() {
38
+ return (
39
+ <div>
40
+ <Head>
41
+ <title>About - My Gorsee App</title>
42
+ </Head>
43
+ <h1>About</h1>
44
+ <p>This app is built with <strong>Gorsee.js</strong> \u2014 a full-stack TypeScript framework.</p>
45
+ <Link href="/">Back to Home</Link>
46
+ </div>
47
+ )
48
+ }
49
+ `, LAYOUT = `export default function RootLayout(props: { children: unknown }) {
50
+ return (
51
+ <div class="layout">
52
+ <header>
53
+ <nav class="main-nav">
54
+ <strong>Gorsee App</strong>
55
+ </nav>
56
+ </header>
57
+ <main>{props.children}</main>
58
+ <footer>
59
+ <p>Built with Gorsee.js</p>
60
+ </footer>
61
+ </div>
62
+ )
63
+ }
64
+ `, ERROR_PAGE = `export default function ErrorPage(props: { error: Error }) {
65
+ return (
66
+ <div class="error-page">
67
+ <h1>Something went wrong</h1>
68
+ <p>{props.error.message}</p>
69
+ <a href="/">Go back home</a>
70
+ </div>
71
+ )
72
+ }
73
+ `, NOT_FOUND_PAGE = `import { Head, Link } from "gorsee/client"
74
+
75
+ export default function NotFoundPage() {
76
+ return (
77
+ <div>
78
+ <Head><title>404 - Not Found</title></Head>
79
+ <h1>404</h1>
80
+ <p>The page you're looking for doesn't exist.</p>
81
+ <Link href="/">Go back home</Link>
82
+ </div>
83
+ )
84
+ }
85
+ `, HEALTH_API = `import type { Context } from "gorsee/server"
86
+
87
+ export function GET(_ctx: Context): Response {
88
+ return Response.json({
89
+ status: "ok",
90
+ timestamp: new Date().toISOString(),
91
+ })
92
+ }
93
+ `, DEFAULT_CSS = `*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
94
+ body{font-family:system-ui,-apple-system,sans-serif;line-height:1.6;color:#1a1a1a;max-width:800px;margin:0 auto;padding:2rem 1rem}
95
+ h1{margin-bottom:.5rem}p{margin-bottom:.5rem}
96
+ a{color:#2563eb;text-decoration:none}a:hover{text-decoration:underline}
97
+ button{background:#2563eb;color:#fff;border:none;padding:.4rem 1rem;border-radius:4px;cursor:pointer;font-size:.9rem}
98
+ button:hover{background:#1d4ed8}
99
+ .layout{min-height:100vh;display:flex;flex-direction:column}
100
+ .layout main{flex:1}
101
+ .layout footer{margin-top:2rem;padding-top:1rem;border-top:1px solid #e5e7eb;color:#6b7280;font-size:.85rem}
102
+ `, ENV_EXAMPLE = `# App
103
+ PORT=3000
104
+ NODE_ENV=development
105
+ APP_ORIGIN=http://localhost:3000
106
+
107
+ # Auth (generate with: openssl rand -hex 32)
108
+ SESSION_SECRET=change-me-in-production
109
+
110
+ # Database
111
+ DATABASE_URL=./data.sqlite
112
+
113
+ # Public vars (exposed to client)
114
+ PUBLIC_APP_NAME=My Gorsee App
115
+ `, APP_CONFIG = `export default {
116
+ port: 3000,
117
+
118
+ db: {
119
+ driver: "sqlite" as const,
120
+ url: "./data.sqlite",
121
+ },
122
+
123
+ log: "info" as const,
124
+
125
+ ai: {
126
+ enabled: false,
127
+ // Writes structured events for AI agents and IDE tooling.
128
+ jsonlPath: ".gorsee/ai-events.jsonl",
129
+ diagnosticsPath: ".gorsee/ai-diagnostics.json",
130
+ sessionPack: {
131
+ enabled: true,
132
+ outDir: ".gorsee/agent",
133
+ triggerKinds: ["diagnostic.issue", "request.error", "build.summary", "check.summary"],
134
+ },
135
+ bridge: {
136
+ // Point this at a local IDE bridge or MCP helper when you want live diagnostics.
137
+ url: "http://127.0.0.1:4318/gorsee/ai-events",
138
+ timeoutMs: 250,
139
+ events: ["diagnostic.issue", "check.summary", "build.summary", "request.error"],
140
+ },
141
+ },
142
+
143
+ security: {
144
+ // Canonical application origin used for redirect and origin-sensitive checks.
145
+ origin: process.env.APP_ORIGIN ?? "http://localhost:3000",
146
+ proxy: {
147
+ // Use "vercel", "netlify", "fly", or "reverse-proxy" when deployed behind a trusted proxy hop.
148
+ preset: "none" as const,
149
+ trustForwardedHeaders: false,
150
+ trustedForwardedHops: 1,
151
+ },
152
+ csp: true,
153
+ hsts: true,
154
+ csrf: true,
155
+ rateLimit: {
156
+ requests: 100,
157
+ window: "1m",
158
+ },
159
+ rpc: {
160
+ // Add auth/CSRF middleware here when server() calls need protection.
161
+ // Example:
162
+ // middlewares: [auth.protect(), createCSRFMiddleware(process.env.SESSION_SECRET!)],
163
+ middlewares: [],
164
+ },
165
+ },
166
+
167
+ deploy: {
168
+ target: "bun" as const,
169
+ },
170
+ }
171
+ `, TSCONFIG = `{
172
+ "compilerOptions": {
173
+ "target": "ESNext",
174
+ "module": "ESNext",
175
+ "moduleResolution": "bundler",
176
+ "jsx": "preserve",
177
+ "jsxImportSource": "gorsee",
178
+ "strict": true,
179
+ "noUncheckedIndexedAccess": true,
180
+ "allowImportingTsExtensions": true,
181
+ "noEmit": true,
182
+ "types": ["bun"]
183
+ },
184
+ "include": ["routes/**/*.ts", "routes/**/*.tsx", "shared/**/*.ts", "middleware/**/*.ts"]
185
+ }
186
+ `, GITIGNORE = `node_modules/
187
+ dist/
188
+ .gorsee/
189
+ .env
190
+ .env.local
191
+ *.sqlite
192
+ *.db
193
+ .DS_Store
194
+ `, PACKAGE_MANAGER = "bun@1.3.9", CREATE_TEMPLATES = ["basic", "secure-saas", "content-site", "agent-aware-ops", "workspace-monorepo"], REPO_ROOT = fileURLToPath(new URL("../../", import.meta.url)), TEMPLATE_DEFINITIONS = {
195
+ "secure-saas": {
196
+ sourceDir: join(REPO_ROOT, "examples/secure-saas"),
197
+ readmeDescription: "Authenticated SaaS starter with protected route groups, explicit auth middleware, and private cache semantics.",
198
+ readmeHighlights: [
199
+ "protected `/app/*` route group with canonical auth middleware",
200
+ "shared auth surface in `auth-shared.ts`",
201
+ "RPC boundary ready for authenticated server workflows"
202
+ ]
203
+ },
204
+ "content-site": {
205
+ sourceDir: join(REPO_ROOT, "examples/content-site"),
206
+ readmeDescription: "Public content starter with prerendered entry pages, explicit public cache policy, and article routes.",
207
+ readmeHighlights: [
208
+ "public cache middleware with explicit auth-header policy",
209
+ "prerendered landing page",
210
+ "blog route shape for content collections"
211
+ ]
212
+ },
213
+ "agent-aware-ops": {
214
+ sourceDir: join(REPO_ROOT, "examples/agent-aware-ops"),
215
+ readmeDescription: "Internal operations starter where AI diagnostics, IDE sync, session packs, and MCP workflows are part of the product surface.",
216
+ readmeHighlights: [
217
+ "`ai.enabled` configured in `app.config.ts`",
218
+ "ops route focused on agent-facing workflows",
219
+ "diagnostics-first baseline for internal tooling"
220
+ ]
221
+ },
222
+ "workspace-monorepo": {
223
+ sourceDir: join(REPO_ROOT, "examples/workspace-monorepo"),
224
+ readmeDescription: "Workspace starter with one Gorsee app package and one shared package, keeping runtime ownership explicit.",
225
+ readmeHighlights: [
226
+ "root workspace with `apps/*` and `packages/*`",
227
+ "web app in `apps/web` using canonical `gorsee` scripts",
228
+ "shared package isolated from runtime ownership"
229
+ ],
230
+ postCreate: async (dir, name) => {
231
+ await writeFile(join(dir, ".gitignore"), GITIGNORE);
232
+ const rootPackageJson = {
233
+ name,
234
+ private: !0,
235
+ packageManager: PACKAGE_MANAGER,
236
+ workspaces: ["apps/*", "packages/*"]
237
+ };
238
+ await writeFile(join(dir, "package.json"), JSON.stringify(rootPackageJson, null, 2) + `
239
+ `);
240
+ const webPackagePath = join(dir, "apps/web/package.json"), webPackageJson = JSON.parse(await readFile(webPackagePath, "utf-8"));
241
+ webPackageJson.name = "@workspace/web";
242
+ webPackageJson.private = !0;
243
+ webPackageJson.type = "module";
244
+ webPackageJson.packageManager = PACKAGE_MANAGER;
245
+ webPackageJson.scripts = createPackageScripts();
246
+ webPackageJson.dependencies = {
247
+ gorsee: "latest",
248
+ "@workspace/shared": "workspace:*"
249
+ };
250
+ await writeFile(webPackagePath, JSON.stringify(webPackageJson, null, 2) + `
251
+ `);
252
+ const sharedPackagePath = join(dir, "packages/shared/package.json"), sharedPackageJson = JSON.parse(await readFile(sharedPackagePath, "utf-8"));
253
+ sharedPackageJson.name = "@workspace/shared";
254
+ sharedPackageJson.version = "0.0.0";
255
+ sharedPackageJson.type = "module";
256
+ sharedPackageJson.exports = "./index.ts";
257
+ await writeFile(sharedPackagePath, JSON.stringify(sharedPackageJson, null, 2) + `
258
+ `);
259
+ const routePath = join(dir, "apps/web/routes/index.tsx"), routeSource = await readFile(routePath, "utf-8");
260
+ await writeFile(routePath, routeSource.replaceAll("@example/shared", "@workspace/shared"));
261
+ }
262
+ }
263
+ };
264
+ function createPackageScripts() {
265
+ return {
266
+ dev: "gorsee dev",
267
+ build: "gorsee build",
268
+ start: "gorsee start",
269
+ check: "gorsee check"
270
+ };
271
+ }
272
+ function normalizePackageName(name) {
273
+ return name.trim().toLowerCase().replace(/[^a-z0-9._-]+/g, "-").replace(/^-+|-+$/g, "") || "gorsee-app";
274
+ }
275
+ function parseCreateArgs(args) {
276
+ let template = "basic";
277
+ const positional = [];
278
+ for (let i = 0;i < args.length; i += 1) {
279
+ const arg = args[i];
280
+ if (!arg)
281
+ continue;
282
+ if (arg === "--template" || arg === "-t") {
283
+ const value = args[i + 1];
284
+ if (!value)
285
+ printCreateUsageAndExit("Missing value for --template");
286
+ template = parseTemplateValue(value);
287
+ i += 1;
288
+ continue;
289
+ }
290
+ if (arg.startsWith("--template=")) {
291
+ template = parseTemplateValue(arg.slice(11));
292
+ continue;
293
+ }
294
+ positional.push(arg);
295
+ }
296
+ const name = positional[0];
297
+ if (!name)
298
+ printCreateUsageAndExit();
299
+ return { name, template };
300
+ }
301
+ function parseTemplateValue(value) {
302
+ if (CREATE_TEMPLATES.includes(value))
303
+ return value;
304
+ printCreateUsageAndExit(`Unknown template: ${value}`);
305
+ }
306
+ function printCreateUsageAndExit(message) {
307
+ if (message)
308
+ console.error(message);
309
+ console.error(`Usage: gorsee create <project-name> [--template ${CREATE_TEMPLATES.join("|")}]`);
310
+ process.exit(1);
311
+ }
312
+ async function copyTemplateTree(sourceDir, targetDir) {
313
+ await mkdir(targetDir, { recursive: !0 });
314
+ const entries = await readdir(sourceDir, { withFileTypes: !0 });
315
+ for (const entry of entries) {
316
+ if (shouldSkipTemplateEntry(entry.name))
317
+ continue;
318
+ const sourcePath = join(sourceDir, entry.name), targetPath = join(targetDir, entry.name);
319
+ if (entry.isDirectory()) {
320
+ await copyTemplateTree(sourcePath, targetPath);
321
+ continue;
322
+ }
323
+ if (entry.isFile())
324
+ await copyFile(sourcePath, targetPath);
325
+ }
326
+ }
327
+ function shouldSkipTemplateEntry(name) {
328
+ return name === ".gorsee" || name === "dist" || name === "node_modules" || name === "bun.lock";
329
+ }
330
+ async function normalizeSinglePackageManifest(packageJsonPath, packageName) {
331
+ const packageJson = JSON.parse(await readFile(packageJsonPath, "utf-8"));
332
+ packageJson.name = packageName;
333
+ packageJson.version = "0.1.0";
334
+ packageJson.private = !0;
335
+ packageJson.type = "module";
336
+ packageJson.packageManager = PACKAGE_MANAGER;
337
+ packageJson.scripts = createPackageScripts();
338
+ packageJson.dependencies = {
339
+ ...packageJson.dependencies ?? {},
340
+ gorsee: "latest"
341
+ };
342
+ await writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2) + `
343
+ `);
344
+ }
345
+ function generateTemplateReadme(name, template) {
346
+ const definition = TEMPLATE_DEFINITIONS[template], highlightLines = definition.readmeHighlights.map((item) => `- ${item}`).join(`
347
+ `), workspaceHint = template === "workspace-monorepo" ? `
348
+ ## Workspace Commands
349
+
350
+ Run the app package commands from \`apps/web\`.
351
+ ` : "";
352
+ return `# ${name}
353
+
354
+ Built with Gorsee.js \u2014 AI-first reactive full-stack TypeScript framework.
355
+
356
+ Template: \`${template}\`
357
+
358
+ ${definition.readmeDescription}
359
+
360
+ ## Included Shape
361
+
362
+ ${highlightLines}
363
+
364
+ ## Getting Started
365
+
366
+ \`\`\`bash
367
+ bun install
368
+ ${template === "workspace-monorepo" ? `cd apps/web
369
+ bun run dev` : "bun run dev"}
370
+ \`\`\`
371
+
372
+ Open [http://localhost:3000](http://localhost:3000).
373
+ ${workspaceHint}
374
+ ## Reproducibility
375
+
376
+ - Keep \`bun.lock\` in version control after the first \`bun install\`.
377
+ - Use \`bun install --frozen-lockfile\` in CI and deploy automation once the lockfile exists.
378
+
379
+ ## Commands
380
+
381
+ ${template === "workspace-monorepo" ? "- Root: workspace orchestration and shared packages\n- `apps/web`: `bun run dev`, `bun run build`, `bun run start`, `bun run check`" : "- `bun run dev`\n- `bun run build`\n- `bun run start`\n- `bun run check`"}
382
+
383
+ ## Product Rule
384
+
385
+ This starter is a first-party product baseline. Keep client/server boundaries explicit, replace placeholder origins before shipping, and use \`FRAMEWORK.md\` plus the Gorsee docs as the canonical extension surface.
386
+ `;
387
+ }
388
+ async function createBasicProject(dir, name) {
389
+ for (const d of DIRS)
390
+ await mkdir(join(dir, d), { recursive: !0 });
391
+ await writeFile(join(dir, "routes/index.tsx"), INDEX_ROUTE);
392
+ await writeFile(join(dir, "routes/about.tsx"), ABOUT_ROUTE);
393
+ await writeFile(join(dir, "routes/_layout.tsx"), LAYOUT);
394
+ await writeFile(join(dir, "routes/_error.tsx"), ERROR_PAGE);
395
+ await writeFile(join(dir, "routes/404.tsx"), NOT_FOUND_PAGE);
396
+ await writeFile(join(dir, "routes/api/health.ts"), HEALTH_API);
397
+ await writeFile(join(dir, "public/styles.css"), DEFAULT_CSS);
398
+ await writeFile(join(dir, "app.config.ts"), APP_CONFIG);
399
+ await writeFile(join(dir, "tsconfig.json"), TSCONFIG);
400
+ await writeFile(join(dir, ".gitignore"), GITIGNORE);
401
+ await writeFile(join(dir, ".env.example"), ENV_EXAMPLE);
402
+ await writeFile(join(dir, ".env"), ENV_EXAMPLE);
403
+ await writeFile(join(dir, "README.md"), generateReadme(name));
404
+ await writeFile(join(dir, "package.json"), JSON.stringify({
405
+ name: normalizePackageName(name),
406
+ version: "0.1.0",
407
+ type: "module",
408
+ packageManager: PACKAGE_MANAGER,
409
+ scripts: createPackageScripts(),
410
+ dependencies: {
411
+ gorsee: "latest"
412
+ },
413
+ devDependencies: {
414
+ "@types/bun": "1.3.10"
415
+ }
416
+ }, null, 2) + `
417
+ `);
418
+ }
419
+ async function createTemplateProject(dir, name, template) {
420
+ const definition = TEMPLATE_DEFINITIONS[template];
421
+ await copyTemplateTree(definition.sourceDir, dir);
422
+ await writeFile(join(dir, "README.md"), generateTemplateReadme(name, template));
423
+ if (template !== "workspace-monorepo") {
424
+ await writeFile(join(dir, ".gitignore"), GITIGNORE);
425
+ await normalizeSinglePackageManifest(join(dir, "package.json"), normalizePackageName(name));
426
+ }
427
+ if (definition.postCreate)
428
+ await definition.postCreate(dir, name);
429
+ }
430
+ function generateReadme(name) {
431
+ return `# ${name}
432
+
433
+ Built with Gorsee.js \u2014 AI-first reactive full-stack TypeScript framework.
434
+
435
+ This project inherits Gorsee's product model:
436
+
437
+ - deterministic collaboration between humans and coding agents
438
+ - strict client/server boundaries
439
+ - reactive runtime without VDOM baggage
440
+ - security and deploy behavior treated as framework contracts
441
+
442
+ Treat this app as a product codebase, not as a disposable scaffold.
443
+
444
+ ## Getting Started
445
+
446
+ \`\`\`bash
447
+ bun install
448
+ bun run dev
449
+ \`\`\`
450
+
451
+ Open [http://localhost:3000](http://localhost:3000).
452
+
453
+ ## Reproducibility
454
+
455
+ - Keep \`bun.lock\` in version control after the first \`bun install\`.
456
+ - Use \`bun install --frozen-lockfile\` in CI and deploy automation once the lockfile exists.
457
+
458
+ ## Choose Your App Class
459
+
460
+ - Secure SaaS App
461
+ - Content / Marketing Site
462
+ - Agent-Aware Internal Tool
463
+ - Workspace / Monorepo App
464
+
465
+ Use the Gorsee docs to pick one clear path before expanding architecture.
466
+
467
+ ## Commands
468
+
469
+ | Command | Description |
470
+ |---------|-------------|
471
+ | \`bun run dev\` | Start dev server with HMR |
472
+ | \`bun run build\` | Production build |
473
+ | \`bun run start\` | Start production server |
474
+ | \`bun run check\` | Type check + safety audit |
475
+ | \`bunx gorsee ai doctor\` | Summarize AI diagnostics and incidents |
476
+ | \`bunx gorsee ai tail --limit 20\` | Inspect recent structured AI events |
477
+ | \`bunx gorsee ai export --format markdown\` | Generate a compact AI context packet |
478
+ | \`bunx gorsee ai export --bundle --format markdown\` | Generate an AI packet with focused code snippets |
479
+ | \`bunx gorsee ai ide-sync\` | Write IDE-friendly diagnostics/events/context files |
480
+ | \`bunx gorsee routes\` | Show route table |
481
+ | \`bunx gorsee generate <entity>\` | CRUD scaffold |
482
+ | \`bunx gorsee typegen\` | Generate typed routes |
483
+ | \`bunx gorsee migrate\` | Run DB migrations |
484
+
485
+ ## Import Boundaries
486
+
487
+ - Use \`gorsee/client\` for route components, islands, links, forms, and reactive primitives.
488
+ - Use \`gorsee/server\` for \`load\`, \`action\`, middleware, cache, RPC, and route execution.
489
+ - Use scoped entrypoints such as \`gorsee/auth\`, \`gorsee/db\`, \`gorsee/security\`, \`gorsee/env\`, and \`gorsee/log\` when the concern is domain-specific.
490
+ - Do not use root \`gorsee\` in new code. It exists only as a compatibility entrypoint.
491
+
492
+ ## Security Notes
493
+
494
+ - \`routeCache()\` varies by \`Cookie\` and \`Authorization\` by default. Disable that only for explicitly public responses.
495
+ - \`/api/_rpc/*\` is a separate boundary. Protect it through \`security.rpc.middlewares\` in \`app.config.ts\` or via programmatic server options.
496
+ - Replace any \`APP_ORIGIN\` placeholders in deploy configs before shipping. \`gorsee check --strict\` flags placeholder origins and floating runtime dependency versions.
497
+
498
+ ## AI Notes
499
+
500
+ - AI observability is opt-in. Enable \`ai.enabled\` in \`app.config.ts\` when you want machine-readable runtime/build/check events.
501
+ - The default local sink is \`.gorsee/ai-events.jsonl\`. This is the stable source for agents, IDE tooling, and later summarization.
502
+ - Versioned AI packet, IDE projection, and session-pack expectations are documented in \`docs/AI_ARTIFACT_CONTRACT.md\` in the Gorsee repository.
503
+ - \`ai.bridge.url\` is optional. Use it only for a trusted local IDE/agent bridge; bridge failures never block the main app.
504
+ - \`bunx gorsee ai mcp\` starts a local stdio MCP server over the same AI state, so agents can read diagnostics without scraping logs.
505
+ - \`bunx gorsee ai doctor\` groups repeated failures into incident clusters so you can distinguish one-off errors from systemic regressions.
506
+ - \`bunx gorsee ai ide-sync\` writes \`.gorsee/ide/diagnostics.json\`, \`.gorsee/ide/events.json\`, and \`.gorsee/ide/context.md\` for editor integrations.
507
+ - \`bunx gorsee ai ide-sync --watch\` keeps those files fresh for live IDE diagnostics.
508
+ - \`bunx gorsee ai pack\` writes the latest agent-ready session pack to \`.gorsee/agent/latest.{json,md}\`.
509
+ - \`bun run ai:package:vscode\` stages and packages the VS Code/Cursor extension consumer.
510
+ - \`bun run release:extension\` emits a version-locked VSIX artifact for editor release/distribution.
511
+
512
+ ## Project Structure
513
+
514
+ \`\`\`
515
+ routes/ \u2192 pages and API routes (file-based routing)
516
+ index.tsx \u2192 /
517
+ about.tsx \u2192 /about
518
+ api/health.ts \u2192 /api/health (JSON API)
519
+ _layout.tsx \u2192 wraps all pages
520
+ _error.tsx \u2192 error boundary
521
+ 404.tsx \u2192 custom 404
522
+ shared/ \u2192 shared modules (imported by routes)
523
+ middleware/ \u2192 global middleware
524
+ migrations/ \u2192 SQL migration files
525
+ public/ \u2192 static assets (served as-is)
526
+ \`\`\`
527
+
528
+ ## Learn More
529
+
530
+ See \`FRAMEWORK.md\` for the full API reference (AI-friendly).
531
+
532
+ Use \`docs/CANONICAL_RECIPES.md\` in the Gorsee repository when you want the recommended production path for SaaS apps, content sites, internal tools, or workspace-based apps.
533
+
534
+ For common runtime/setup mistakes, also use \`docs/RUNTIME_FAILURES.md\`, \`docs/RUNTIME_TRIAGE.md\`, \`docs/CACHE_INVALIDATION.md\`, and \`docs/STARTER_FAILURES.md\` in the Gorsee repository.
535
+
536
+ For AI-first team workflows, also use \`docs/AI_WORKFLOWS.md\`, \`docs/AI_IDE_SYNC_WORKFLOW.md\`, \`docs/AI_MCP_WORKFLOW.md\`, \`docs/AI_BRIDGE_WORKFLOW.md\`, \`docs/AI_SESSION_PACKS.md\`, and \`docs/AI_DEBUGGING_WORKFLOWS.md\` in the Gorsee repository.
537
+
538
+ For adoption and rollout guidance, also use \`docs/STARTER_ONBOARDING.md\`, \`docs/MIGRATION_GUIDE.md\`, \`docs/UPGRADE_PLAYBOOK.md\`, \`docs/DEPLOY_TARGET_GUIDE.md\`, \`docs/FIRST_PRODUCTION_ROLLOUT.md\`, \`docs/AUTH_CACHE_DATA_PATHS.md\`, \`docs/RECIPE_BOUNDARIES.md\`, \`docs/WORKSPACE_ADOPTION.md\`, and \`docs/TEAM_FAILURES.md\` in the Gorsee repository.
539
+ `;
540
+ }
541
+ export async function createProject(args, options = {}) {
542
+ const { name, template } = parseCreateArgs(args), { cwd } = createProjectContext(options), dir = join(cwd, name), location = relative(cwd, dir) || name;
543
+ console.log(`
544
+ Creating ${name} (${template})...
545
+ `);
546
+ await mkdir(dir, { recursive: !0 });
547
+ if (template === "basic")
548
+ await createBasicProject(dir, name);
549
+ else
550
+ await createTemplateProject(dir, name, template);
551
+ const frameworkMD = generateFrameworkMD(name);
552
+ await writeFile(join(dir, "FRAMEWORK.md"), frameworkMD);
553
+ console.log(" Created:");
554
+ if (template === "basic") {
555
+ console.log(" routes/index.tsx home page with counter");
556
+ console.log(" routes/about.tsx about page");
557
+ console.log(" routes/_layout.tsx root layout (header + footer)");
558
+ console.log(" routes/_error.tsx error boundary");
559
+ console.log(" routes/404.tsx custom 404");
560
+ console.log(" routes/api/health.ts health check API");
561
+ console.log(" public/styles.css default styles");
562
+ console.log(" app.config.ts configuration");
563
+ console.log(" .env / .env.example environment variables");
564
+ console.log(" README.md project readme");
565
+ console.log(" FRAMEWORK.md AI context file");
566
+ console.log(" tsconfig.json");
567
+ console.log(" package.json");
568
+ } else if (template === "workspace-monorepo") {
569
+ console.log(" apps/web Gorsee app package");
570
+ console.log(" packages/shared shared workspace package");
571
+ console.log(" package.json workspace root");
572
+ console.log(" README.md template guide");
573
+ console.log(" FRAMEWORK.md AI context file");
574
+ } else {
575
+ console.log(` template source examples/${template}`);
576
+ console.log(" routes/ first-party starter routes");
577
+ console.log(" app.config.ts template configuration");
578
+ console.log(" package.json normalized package surface");
579
+ console.log(" README.md template guide");
580
+ console.log(" FRAMEWORK.md AI context file");
581
+ }
582
+ console.log();
583
+ console.log(" Next steps:");
584
+ console.log();
585
+ console.log(` cd ${location}`);
586
+ if (template === "workspace-monorepo") {
587
+ console.log(" bun install");
588
+ console.log(" cd apps/web");
589
+ console.log(" bun run dev");
590
+ } else {
591
+ console.log(" bun install");
592
+ console.log(" bun run dev");
593
+ }
594
+ console.log();
595
+ console.log(" Then open http://localhost:3000");
596
+ console.log();
597
+ }
598
+ export async function runCreate(args, options = {}) {
599
+ return createProject(args, options);
600
+ }
@@ -0,0 +1,6 @@
1
+ import { type RuntimeOptions } from "../runtime/project.js";
2
+ export interface DeployCommandOptions extends RuntimeOptions {
3
+ }
4
+ export declare function generateDeployConfig(args: string[], options?: DeployCommandOptions): Promise<void>;
5
+ /** @deprecated Use generateDeployConfig() for programmatic access. */
6
+ export declare function runDeploy(args: string[], options?: DeployCommandOptions): Promise<void>;