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,131 @@
1
+ export const SERVER_SCOPED_IMPORTS = new Map([
2
+ ["createAuth", "gorsee/auth"],
3
+ ["createMemorySessionStore", "gorsee/auth"],
4
+ ["createNamespacedSessionStore", "gorsee/auth"],
5
+ ["createRedisSessionStore", "gorsee/auth"],
6
+ ["createSQLiteSessionStore", "gorsee/auth"],
7
+ ["createAuthActionTokenManager", "gorsee/auth"],
8
+ ["createMemoryAuthActionTokenStore", "gorsee/auth"],
9
+ ["sessionHasRole", "gorsee/auth"],
10
+ ["sessionHasPermission", "gorsee/auth"],
11
+ ["AuthConfig", "gorsee/auth"],
12
+ ["AuthEvent", "gorsee/auth"],
13
+ ["AuthEventHandler", "gorsee/auth"],
14
+ ["AuthActionTokenClaims", "gorsee/auth"],
15
+ ["AuthActionTokenPurpose", "gorsee/auth"],
16
+ ["AuthActionTokenReplayStore", "gorsee/auth"],
17
+ ["PermissionResolver", "gorsee/auth"],
18
+ ["Session", "gorsee/auth"],
19
+ ["SessionStore", "gorsee/auth"],
20
+ ["createDB", "gorsee/db"],
21
+ ["createPostgresDB", "gorsee/db"],
22
+ ["toPostgresSQL", "gorsee/db"],
23
+ ["runMigrations", "gorsee/db"],
24
+ ["createMigration", "gorsee/db"],
25
+ ["DB", "gorsee/db"],
26
+ ["PostgresDB", "gorsee/db"],
27
+ ["PostgresClientLike", "gorsee/db"],
28
+ ["PostgresConnectionLike", "gorsee/db"],
29
+ ["PostgresPoolLike", "gorsee/db"],
30
+ ["PostgresQueryResult", "gorsee/db"],
31
+ ["MigrationResult", "gorsee/db"],
32
+ ["securityHeaders", "gorsee/security"],
33
+ ["csrfProtection", "gorsee/security"],
34
+ ["createCSRFMiddleware", "gorsee/security"],
35
+ ["generateCSRFToken", "gorsee/security"],
36
+ ["validateCSRFToken", "gorsee/security"],
37
+ ["createRateLimiter", "gorsee/security"],
38
+ ["createRedisRateLimiter", "gorsee/security"],
39
+ ["parseRateLimitWindow", "gorsee/security"],
40
+ ["cors", "gorsee/security"],
41
+ ["SecurityConfig", "gorsee/security"],
42
+ ["RateLimiter", "gorsee/security"],
43
+ ["AsyncRateLimiter", "gorsee/security"],
44
+ ["AsyncRateLimitResult", "gorsee/security"],
45
+ ["CORSOptions", "gorsee/security"],
46
+ ["env", "gorsee/env"],
47
+ ["getPublicEnv", "gorsee/env"],
48
+ ["loadEnv", "gorsee/env"],
49
+ ["log", "gorsee/log"],
50
+ ["setLogLevel", "gorsee/log"],
51
+ ["setupI18n", "gorsee/i18n"],
52
+ ["loadLocale", "gorsee/i18n"],
53
+ ["getLocale", "gorsee/i18n"],
54
+ ["getLocales", "gorsee/i18n"],
55
+ ["getDefaultLocale", "gorsee/i18n"],
56
+ ["getFallbackLocales", "gorsee/i18n"],
57
+ ["setLocale", "gorsee/i18n"],
58
+ ["t", "gorsee/i18n"],
59
+ ["plural", "gorsee/i18n"],
60
+ ["negotiateLocale", "gorsee/i18n"],
61
+ ["resolveLocaleFromPath", "gorsee/i18n"],
62
+ ["stripLocalePrefix", "gorsee/i18n"],
63
+ ["withLocalePath", "gorsee/i18n"],
64
+ ["buildHreflangLinks", "gorsee/i18n"],
65
+ ["formatNumber", "gorsee/i18n"],
66
+ ["formatDate", "gorsee/i18n"],
67
+ ["formatRelativeTime", "gorsee/i18n"],
68
+ ["I18nConfig", "gorsee/i18n"],
69
+ ["LocaleNegotiationInput", "gorsee/i18n"],
70
+ ["LocaleNegotiationResult", "gorsee/i18n"],
71
+ ["loadContentCollection", "gorsee/content"],
72
+ ["parseFrontmatter", "gorsee/content"],
73
+ ["extractExcerpt", "gorsee/content"],
74
+ ["queryContent", "gorsee/content"],
75
+ ["getContentEntryBySlug", "gorsee/content"],
76
+ ["ContentCollectionOptions", "gorsee/content"],
77
+ ["ContentEntry", "gorsee/content"],
78
+ ["ContentQueryOptions", "gorsee/content"]
79
+ ]), CLIENT_SCOPED_IMPORTS = new Map([
80
+ ["defineForm", "gorsee/forms"],
81
+ ["defineFormAction", "gorsee/forms"],
82
+ ["validateForm", "gorsee/forms"],
83
+ ["validateAction", "gorsee/forms"],
84
+ ["toFieldErrors", "gorsee/forms"],
85
+ ["fieldAttrs", "gorsee/forms"],
86
+ ["actionSuccess", "gorsee/forms"],
87
+ ["actionFailure", "gorsee/forms"],
88
+ ["FormField", "gorsee/forms"],
89
+ ["FormSchema", "gorsee/forms"],
90
+ ["ValidationResult", "gorsee/forms"],
91
+ ["ActionValidationResult", "gorsee/forms"],
92
+ ["ValidationError", "gorsee/forms"],
93
+ ["DefineFormActionOptions", "gorsee/forms"],
94
+ ["FormActionContext", "gorsee/forms"],
95
+ ["ActionResult", "gorsee/forms"],
96
+ ["typedLink", "gorsee/routes"],
97
+ ["typedNavigate", "gorsee/routes"],
98
+ ["typedPrefetch", "gorsee/routes"],
99
+ ["resolveTypedRouteTarget", "gorsee/routes"],
100
+ ["buildSearchParams", "gorsee/routes"],
101
+ ["buildTypedPath", "gorsee/routes"],
102
+ ["createTypedRoute", "gorsee/routes"],
103
+ ["extractRouteParamKeys", "gorsee/routes"],
104
+ ["TypedRouteDefinition", "gorsee/routes"],
105
+ ["TypedRouteTarget", "gorsee/routes"]
106
+ ]);
107
+ export function collectCanonicalImportDrift(imports) {
108
+ const drift = [];
109
+ for (const entry of imports) {
110
+ if (entry.specifier === "gorsee/server") {
111
+ const replacements = collectScopedReplacements(entry, SERVER_SCOPED_IMPORTS);
112
+ if (replacements.size > 0)
113
+ drift.push({ source: "gorsee/server", replacements });
114
+ }
115
+ if (entry.specifier === "gorsee/client") {
116
+ const replacements = collectScopedReplacements(entry, CLIENT_SCOPED_IMPORTS);
117
+ if (replacements.size > 0)
118
+ drift.push({ source: "gorsee/client", replacements });
119
+ }
120
+ }
121
+ return drift;
122
+ }
123
+ function collectScopedReplacements(entry, scopedMap) {
124
+ const replacements = new Map;
125
+ for (const name of entry.names) {
126
+ const target = scopedMap.get(name);
127
+ if (target)
128
+ replacements.set(name, target);
129
+ }
130
+ return replacements;
131
+ }
@@ -0,0 +1,20 @@
1
+ import { type ModuleImportFact } from "../compiler/module-analysis.js";
2
+ export interface ASTCheckIssue {
3
+ code: string;
4
+ file: string;
5
+ line?: number;
6
+ message: string;
7
+ fix?: string;
8
+ }
9
+ export interface ASTFileFacts {
10
+ issues: ASTCheckIssue[];
11
+ hasServerCall: boolean;
12
+ hasRouteCacheCall: boolean;
13
+ hasCreateAuthCall: boolean;
14
+ hasRedirectCall: boolean;
15
+ hasCtxRedirectCall: boolean;
16
+ hasLegacyLoaderExport: boolean;
17
+ importsRootGorsee: boolean;
18
+ imports: ModuleImportFact[];
19
+ }
20
+ export declare function analyzeFileWithAST(file: string, cwd: string, content: string): Promise<ASTFileFacts | null>;
@@ -0,0 +1,126 @@
1
+ import { relative } from "node:path";
2
+ import { analyzeModuleSource } from "../compiler/module-analysis.js";
3
+ let tsModulePromise = null;
4
+ async function loadTypeScript() {
5
+ if (!tsModulePromise)
6
+ tsModulePromise = import("typescript").catch(() => null);
7
+ return tsModulePromise;
8
+ }
9
+ function pushIssue(issues, seen, issue) {
10
+ const key = `${issue.code}:${issue.file}:${issue.line ?? 0}:${issue.message}`;
11
+ if (seen.has(key))
12
+ return;
13
+ seen.add(key);
14
+ issues.push(issue);
15
+ }
16
+ function isIdentifier(ts, node, name) {
17
+ return ts.isIdentifier(node) && node.text === name;
18
+ }
19
+ function getLine(ts, sourceFile, node) {
20
+ return sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1;
21
+ }
22
+ function isLiteralRedirectTarget(ts, node) {
23
+ if (!node)
24
+ return !1;
25
+ if (ts.isStringLiteralLike(node))
26
+ return !0;
27
+ if (ts.isNoSubstitutionTemplateLiteral(node))
28
+ return !0;
29
+ return !1;
30
+ }
31
+ function isDbCall(ts, expr) {
32
+ if (!ts.isPropertyAccessExpression(expr.expression))
33
+ return !1;
34
+ const target = expr.expression.expression, method = expr.expression.name.text;
35
+ return isIdentifier(ts, target, "db") && ["get", "all", "run"].includes(method);
36
+ }
37
+ function hasRouteCacheIntent(ts, expr) {
38
+ const firstArg = expr.arguments[0];
39
+ if (!firstArg || !ts.isObjectLiteralExpression(firstArg))
40
+ return !1;
41
+ return firstArg.properties.some((prop) => {
42
+ if (!ts.isPropertyAssignment(prop) && !ts.isShorthandPropertyAssignment(prop))
43
+ return !1;
44
+ const name = prop.name?.getText(firstArg.getSourceFile()).replace(/['"]/g, "");
45
+ return name === "includeAuthHeaders" || name === "vary" || name === "key" || name === "mode";
46
+ });
47
+ }
48
+ export async function analyzeFileWithAST(file, cwd, content) {
49
+ const ts = await loadTypeScript();
50
+ if (!ts)
51
+ return null;
52
+ const sourceFile = ts.createSourceFile(file, content, ts.ScriptTarget.Latest, !0, ts.ScriptKind.TSX), moduleFacts = analyzeModuleSource(file, content), rel = relative(cwd, file), issues = [], seen = new Set, facts = {
53
+ issues,
54
+ hasServerCall: !1,
55
+ hasRouteCacheCall: !1,
56
+ hasCreateAuthCall: !1,
57
+ hasRedirectCall: !1,
58
+ hasCtxRedirectCall: !1,
59
+ hasLegacyLoaderExport: moduleFacts.exportedNames.has("loader"),
60
+ importsRootGorsee: moduleFacts.imports.some((entry) => entry.specifier === "gorsee"),
61
+ imports: moduleFacts.imports
62
+ }, visit = (node) => {
63
+ if (ts.isBinaryExpression(node) && node.operatorToken.kind === ts.SyntaxKind.EqualsToken && ts.isPropertyAccessExpression(node.left) && node.left.name.text === "innerHTML")
64
+ pushIssue(issues, seen, {
65
+ code: "E002",
66
+ file: rel,
67
+ line: getLine(ts, sourceFile, node),
68
+ message: "Direct innerHTML assignment (XSS risk)",
69
+ fix: "Use SafeHTML`...`, sanitize(), or DOM fragment replacement helpers"
70
+ });
71
+ if (ts.isCallExpression(node)) {
72
+ if (isIdentifier(ts, node.expression, "server"))
73
+ facts.hasServerCall = !0;
74
+ if (isIdentifier(ts, node.expression, "createAuth"))
75
+ facts.hasCreateAuthCall = !0;
76
+ if (isIdentifier(ts, node.expression, "routeCache")) {
77
+ facts.hasRouteCacheCall = !0;
78
+ if (!hasRouteCacheIntent(ts, node))
79
+ pushIssue(issues, seen, {
80
+ code: "W904",
81
+ file: rel,
82
+ line: getLine(ts, sourceFile, node),
83
+ message: "routeCache() is used without explicit public/private cache intent",
84
+ fix: "Set includeAuthHeaders, vary, key, or mode explicitly to document cache boundary"
85
+ });
86
+ }
87
+ if (isIdentifier(ts, node.expression, "redirect")) {
88
+ facts.hasRedirectCall = !0;
89
+ if (!isLiteralRedirectTarget(ts, node.arguments[0]))
90
+ pushIssue(issues, seen, {
91
+ code: "W905",
92
+ file: rel,
93
+ line: getLine(ts, sourceFile, node),
94
+ message: "Throwable redirect() uses a non-literal target",
95
+ fix: "Prefer ctx.redirect() for user-controlled values or sanitize redirect targets explicitly before throwing redirect()"
96
+ });
97
+ }
98
+ if (ts.isPropertyAccessExpression(node.expression) && ts.isIdentifier(node.expression.expression) && node.expression.expression.text === "ctx" && node.expression.name.text === "redirect")
99
+ facts.hasCtxRedirectCall = !0;
100
+ if (isDbCall(ts, node)) {
101
+ const firstArg = node.arguments[0];
102
+ if (firstArg) {
103
+ if (ts.isNoSubstitutionTemplateLiteral(firstArg) || ts.isTemplateExpression(firstArg))
104
+ pushIssue(issues, seen, {
105
+ code: "E001",
106
+ file: rel,
107
+ line: getLine(ts, sourceFile, node),
108
+ message: "Raw template literal in database query (SQL injection risk)",
109
+ fix: "Use SafeSQL`...` tagged template: db.get(SafeSQL`SELECT ...`)"
110
+ });
111
+ else if (ts.isStringLiteral(firstArg) || ts.isBinaryExpression(firstArg))
112
+ pushIssue(issues, seen, {
113
+ code: "E001",
114
+ file: rel,
115
+ line: getLine(ts, sourceFile, node),
116
+ message: "String concatenation in database query (SQL injection risk)",
117
+ fix: "Use SafeSQL`...` tagged template with parameterized values"
118
+ });
119
+ }
120
+ }
121
+ }
122
+ ts.forEachChild(node, visit);
123
+ };
124
+ visit(sourceFile);
125
+ return facts;
126
+ }
@@ -0,0 +1,4 @@
1
+ import { type RuntimeOptions } from "../runtime/project.js";
2
+ export interface AICommandOptions extends RuntimeOptions {
3
+ }
4
+ export declare function runAI(args: string[], options?: AICommandOptions): Promise<void>;
@@ -0,0 +1,290 @@
1
+ import { createProjectContext } from "../runtime/project.js";
2
+ import {
3
+ buildAIHealthReport,
4
+ buildAIContextBundle,
5
+ buildIDEProjection,
6
+ createIDEProjectionWatcher,
7
+ createAIBridgeServer,
8
+ createAIContextPacket,
9
+ createAIMCPServer,
10
+ createLineReader,
11
+ readAIDiagnosticsSnapshot,
12
+ readAIEvents,
13
+ readReactiveTraceArtifact,
14
+ renderAIContextMarkdown,
15
+ renderAIContextBundleMarkdown,
16
+ resolveAIStorePaths,
17
+ resolveAISessionPackPaths,
18
+ resolveIDEProjectionPaths,
19
+ writeAISessionPack,
20
+ writeIDEProjection
21
+ } from "../ai/index.js";
22
+ export async function runAI(args, options = {}) {
23
+ const subcommand = args[0] ?? "help", flags = parseAIFlags(args.slice(1)), { cwd } = createProjectContext(options), paths = resolveAIStorePaths(cwd);
24
+ switch (subcommand) {
25
+ case "tail":
26
+ return runAITail(paths.eventsPath, flags);
27
+ case "doctor":
28
+ return runAIDoctor(paths, flags);
29
+ case "replay":
30
+ return runAIReplay(paths.eventsPath, flags);
31
+ case "export":
32
+ return runAIExport(cwd, paths, flags);
33
+ case "pack":
34
+ return runAIPack(cwd, paths, flags);
35
+ case "ide-sync":
36
+ return runAIIDESync(cwd, paths, flags);
37
+ case "bridge":
38
+ return runAIBridge(paths.eventsPath, flags);
39
+ case "mcp":
40
+ return runAIMCP(paths, flags);
41
+ case "help":
42
+ default:
43
+ printAIHelp();
44
+ }
45
+ }
46
+ async function runAITail(eventsPath, flags) {
47
+ const events = await readAIEvents(eventsPath, { limit: flags.limit ?? 20 });
48
+ if (flags.json) {
49
+ console.log(JSON.stringify(events, null, 2));
50
+ return;
51
+ }
52
+ if (events.length === 0) {
53
+ console.log(`
54
+ No AI events found.
55
+ `);
56
+ return;
57
+ }
58
+ console.log();
59
+ for (const event of events) {
60
+ const loc = [event.route, event.file && event.line ? `${event.file}:${event.line}` : event.file].filter(Boolean).join(" ");
61
+ console.log(` [${event.severity}] ${event.kind} ${event.message}`);
62
+ console.log(` ${event.ts}${loc ? ` ${loc}` : ""}`);
63
+ }
64
+ console.log();
65
+ }
66
+ async function runAIDoctor(paths, flags) {
67
+ const report = await buildAIHealthReport(paths, { limit: flags.limit ?? 200 }), reactiveTrace = await readReactiveTraceArtifact(paths.reactiveTracePath);
68
+ if (flags.json) {
69
+ console.log(JSON.stringify({
70
+ ...report,
71
+ reactiveTrace: reactiveTrace ? {
72
+ schemaVersion: reactiveTrace.schemaVersion,
73
+ nodes: reactiveTrace.nodes.length,
74
+ edges: reactiveTrace.edges.length,
75
+ events: reactiveTrace.events.length,
76
+ latestEventKind: reactiveTrace.events.at(-1)?.kind
77
+ } : null
78
+ }, null, 2));
79
+ return;
80
+ }
81
+ console.log(`
82
+ Gorsee AI Doctor
83
+ `);
84
+ console.log(` Events: ${report.events.total}`);
85
+ console.log(` Diagnostics: ${report.diagnostics.total}`);
86
+ console.log(` Errors: ${report.diagnostics.errors}`);
87
+ console.log(` Warnings: ${report.diagnostics.warnings}`);
88
+ if (report.events.latest)
89
+ console.log(` Latest event: ${report.events.latest.kind} @ ${report.events.latest.ts}`);
90
+ if (report.diagnostics.latest?.code)
91
+ console.log(` Latest diagnostic: ${report.diagnostics.latest.code} ${report.diagnostics.latest.message ?? ""}`.trim());
92
+ if (report.incidents.length > 0) {
93
+ console.log(`
94
+ Recent incidents:`);
95
+ for (const incident of report.incidents.slice(0, 5)) {
96
+ const loc = incident.file ? ` (${incident.file}${incident.line ? `:${incident.line}` : ""})` : incident.route ? ` (${incident.route})` : "";
97
+ console.log(` - [${incident.kind}] ${incident.message}${loc}`);
98
+ }
99
+ }
100
+ if (report.incidentClusters.length > 0) {
101
+ console.log(`
102
+ Incident clusters:`);
103
+ for (const cluster of report.incidentClusters.slice(0, 5)) {
104
+ const loc = cluster.file ? ` (${cluster.file})` : cluster.route ? ` (${cluster.route})` : "";
105
+ console.log(` - [${cluster.kind}] x${cluster.count}${loc}`);
106
+ }
107
+ }
108
+ if (report.artifactRegressions.length > 0) {
109
+ console.log(`
110
+ Artifact regressions:`);
111
+ for (const artifact of report.artifactRegressions.slice(0, 5)) {
112
+ const details = [artifact.version, artifact.path].filter(Boolean).join(" ");
113
+ console.log(` - [${artifact.phase}] errors=${artifact.errors} warnings=${artifact.warnings} successes=${artifact.successes}${details ? ` (${details})` : ""}`);
114
+ }
115
+ }
116
+ if (reactiveTrace) {
117
+ console.log(`
118
+ Reactive trace:`);
119
+ console.log(` - schema=${reactiveTrace.schemaVersion} nodes=${reactiveTrace.nodes.length} edges=${reactiveTrace.edges.length} events=${reactiveTrace.events.length}`);
120
+ if (reactiveTrace.events.at(-1)?.kind)
121
+ console.log(` - latest=${reactiveTrace.events.at(-1)?.kind}`);
122
+ }
123
+ console.log();
124
+ }
125
+ async function runAIReplay(eventsPath, flags) {
126
+ const events = await readAIEvents(eventsPath, { limit: flags.limit ?? 50 });
127
+ if (events.length === 0) {
128
+ console.log(`
129
+ No AI events found.
130
+ `);
131
+ return;
132
+ }
133
+ console.log(`
134
+ Gorsee AI Replay
135
+ `);
136
+ for (const event of events) {
137
+ const trace = [event.requestId, event.traceId, event.spanId].filter(Boolean).join(" / "), loc = [event.route, event.file && event.line ? `${event.file}:${event.line}` : event.file].filter(Boolean).join(" "), artifact = typeof event.data?.artifact === "string" ? event.data.artifact : void 0, version = typeof event.data?.version === "string" ? event.data.version : void 0;
138
+ console.log(` ${event.ts} [${event.severity}] ${event.kind}`);
139
+ console.log(` ${event.message}`);
140
+ if (trace)
141
+ console.log(` trace: ${trace}`);
142
+ if (loc)
143
+ console.log(` loc: ${loc}`);
144
+ if (version || artifact)
145
+ console.log(` data: ${[version, artifact].filter(Boolean).join(" ")}`);
146
+ }
147
+ console.log();
148
+ }
149
+ async function runAIExport(cwd, paths, flags) {
150
+ if (flags.bundle) {
151
+ const bundle = await buildAIContextBundle(cwd, paths, { limit: flags.limit ?? 200 });
152
+ if ((flags.format ?? "json") === "markdown") {
153
+ console.log(renderAIContextBundleMarkdown(bundle));
154
+ return;
155
+ }
156
+ console.log(JSON.stringify(bundle, null, 2));
157
+ return;
158
+ }
159
+ const events = await readAIEvents(paths.eventsPath, { limit: flags.limit ?? 200 }), diagnostics = await readAIDiagnosticsSnapshot(paths.diagnosticsPath), reactiveTrace = await readReactiveTraceArtifact(paths.reactiveTracePath), report = await buildAIHealthReport(paths, { limit: flags.limit ?? 200 }), packet = createAIContextPacket(report, events, diagnostics?.latest, reactiveTrace);
160
+ if ((flags.format ?? "json") === "markdown") {
161
+ console.log(renderAIContextMarkdown(packet));
162
+ return;
163
+ }
164
+ console.log(JSON.stringify(packet, null, 2));
165
+ }
166
+ async function runAIPack(cwd, paths, flags) {
167
+ const result = await writeAISessionPack(cwd, paths, {
168
+ enabled: !0,
169
+ outDir: resolveAISessionPackPaths(cwd).outDir,
170
+ limit: flags.limit ?? 200
171
+ });
172
+ if (flags.json) {
173
+ console.log(JSON.stringify({
174
+ generatedAt: result.bundle.generatedAt,
175
+ latestJsonPath: result.paths.latestJsonPath,
176
+ latestMarkdownPath: result.paths.latestMarkdownPath,
177
+ historyDir: result.paths.historyDir,
178
+ snippets: result.bundle.snippets.length
179
+ }, null, 2));
180
+ return;
181
+ }
182
+ console.log(`
183
+ Gorsee AI Session Pack
184
+ `);
185
+ console.log(` latest json -> ${result.paths.latestJsonPath}`);
186
+ console.log(` latest md -> ${result.paths.latestMarkdownPath}`);
187
+ console.log(` history -> ${result.paths.historyDir}`);
188
+ console.log(` snippets -> ${result.bundle.snippets.length}`);
189
+ console.log();
190
+ }
191
+ async function runAIIDESync(cwd, paths, flags) {
192
+ const projection = await buildIDEProjection(paths, { limit: flags.limit ?? 100 }), projectionPaths = resolveIDEProjectionPaths(cwd);
193
+ await writeIDEProjection(projectionPaths, projection);
194
+ if (flags.watch) {
195
+ createIDEProjectionWatcher({
196
+ storePaths: paths,
197
+ projectionPaths,
198
+ limit: flags.limit ?? 100,
199
+ intervalMs: flags.intervalMs ?? 1000
200
+ }).start();
201
+ console.log(`
202
+ Gorsee AI IDE Sync --watch
203
+ `);
204
+ console.log(` diagnostics -> ${projectionPaths.diagnosticsPath}`);
205
+ console.log(` events -> ${projectionPaths.eventsPath}`);
206
+ console.log(` context -> ${projectionPaths.contextPath}`);
207
+ console.log(` interval -> ${flags.intervalMs ?? 1000}ms`);
208
+ console.log();
209
+ await new Promise(() => {});
210
+ }
211
+ if (flags.json) {
212
+ console.log(JSON.stringify({ projectionPaths, diagnostics: projection.diagnostics.length, events: projection.recentEvents.length }, null, 2));
213
+ return;
214
+ }
215
+ console.log(`
216
+ Gorsee AI IDE Sync
217
+ `);
218
+ console.log(` diagnostics -> ${projectionPaths.diagnosticsPath}`);
219
+ console.log(` events -> ${projectionPaths.eventsPath}`);
220
+ console.log(` context -> ${projectionPaths.contextPath}`);
221
+ console.log();
222
+ }
223
+ async function runAIBridge(eventsPath, flags) {
224
+ const bridge = createAIBridgeServer({
225
+ port: flags.port ?? 4318,
226
+ host: flags.host ?? "127.0.0.1",
227
+ persistPath: flags.persistPath ?? eventsPath
228
+ });
229
+ console.log(`
230
+ Gorsee AI bridge listening on http://${flags.host ?? "127.0.0.1"}:${bridge.port}/gorsee/ai-events
231
+ `);
232
+ await new Promise(() => {});
233
+ }
234
+ async function runAIMCP(paths, flags) {
235
+ await createAIMCPServer({
236
+ paths,
237
+ limit: flags.limit ?? 50
238
+ }).serve(createLineReader(process.stdin), process.stdout);
239
+ }
240
+ function parseAIFlags(args) {
241
+ const flags = { json: !1, bundle: !1, watch: !1 };
242
+ for (let i = 0;i < args.length; i++) {
243
+ const arg = args[i];
244
+ if (arg === "--json")
245
+ flags.json = !0;
246
+ if (arg === "--bundle")
247
+ flags.bundle = !0;
248
+ if (arg === "--watch")
249
+ flags.watch = !0;
250
+ if (arg === "--limit")
251
+ flags.limit = Number(args[i + 1] ?? "0");
252
+ if (arg === "--interval")
253
+ flags.intervalMs = Number(args[i + 1] ?? "1000");
254
+ if (arg === "--port")
255
+ flags.port = Number(args[i + 1] ?? "4318");
256
+ if (arg === "--host")
257
+ flags.host = args[i + 1];
258
+ if (arg === "--persist")
259
+ flags.persistPath = args[i + 1];
260
+ if (arg === "--format") {
261
+ const format = args[i + 1];
262
+ if (format === "json" || format === "markdown")
263
+ flags.format = format;
264
+ }
265
+ }
266
+ return flags;
267
+ }
268
+ function printAIHelp() {
269
+ console.log(`
270
+ gorsee ai <subcommand>
271
+ `);
272
+ console.log(" Subcommands:");
273
+ console.log(" tail Read recent structured AI events");
274
+ console.log(" doctor Summarize diagnostics and recent incidents");
275
+ console.log(" replay Replay correlated AI events in timeline order");
276
+ console.log(" export Export a compact AI context packet or bundle");
277
+ console.log(" pack Write the latest agent-ready session pack to disk");
278
+ console.log(" ide-sync Write IDE-friendly diagnostics/events/context files");
279
+ console.log(" bridge Start local HTTP bridge for IDE/agent ingestion");
280
+ console.log(" mcp Start stdio MCP server over local AI state");
281
+ console.log();
282
+ console.log(" Common flags:");
283
+ console.log(" --json Render machine-readable output");
284
+ console.log(" --format <fmt> json | markdown");
285
+ console.log(" --limit <n> Limit the amount of AI history read");
286
+ console.log(" --bundle Include ranked code snippets in export output");
287
+ console.log(" --watch Keep IDE projection files in sync");
288
+ console.log(" --interval <ms> Watch/poll interval for ide-sync --watch");
289
+ console.log();
290
+ }
@@ -0,0 +1,12 @@
1
+ import { type ClientBuildBackend } from "../build/client-backend.js";
2
+ import { type RuntimeOptions } from "../runtime/project.js";
3
+ import { type AIObservabilityConfig } from "../ai/index.js";
4
+ export interface BuildCommandOptions extends RuntimeOptions {
5
+ minify?: boolean;
6
+ sourcemap?: boolean;
7
+ ai?: AIObservabilityConfig;
8
+ clientBuildBackend?: ClientBuildBackend;
9
+ }
10
+ export declare function buildProject(options?: BuildCommandOptions): Promise<void>;
11
+ export declare function watchBuildProject(options?: BuildCommandOptions): Promise<void>;
12
+ export declare function runBuild(args: string[], options?: BuildCommandOptions): Promise<void>;