gorsee 0.2.4 → 0.2.6

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 +283 -212
  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 +173 -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} +44 -28
  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 +53 -0
  215. package/dist-pkg/plugins/index.d.ts +62 -0
  216. package/dist-pkg/plugins/index.js +159 -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 +60 -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 +70 -0
  243. package/dist-pkg/reactive/optimistic.d.ts +20 -0
  244. package/dist-pkg/reactive/optimistic.js +67 -0
  245. package/dist-pkg/reactive/resource.d.ts +25 -0
  246. package/dist-pkg/reactive/resource.js +153 -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 +42 -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} +20 -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 +65 -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 +74 -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 +176 -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 +487 -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 +77 -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 +83 -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 +127 -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 +27 -0
  347. package/dist-pkg/server/page-render.d.ts +29 -0
  348. package/dist-pkg/server/page-render.js +70 -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 +46 -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 +61 -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 +257 -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 +110 -45
  406. package/bin/gorsee.js +0 -2
  407. package/src/auth/index.ts +0 -178
  408. package/src/auth/redis-session-store.ts +0 -46
  409. package/src/auth/sqlite-session-store.ts +0 -98
  410. package/src/auth/store-utils.ts +0 -21
  411. package/src/build/client.ts +0 -139
  412. package/src/build/css-modules.ts +0 -69
  413. package/src/build/devalue-parse.ts +0 -2
  414. package/src/build/manifest.ts +0 -34
  415. package/src/build/route-metadata.ts +0 -12
  416. package/src/build/rpc-transform.ts +0 -62
  417. package/src/build/server-strip.ts +0 -87
  418. package/src/build/ssg.ts +0 -70
  419. package/src/cli/bun-plugin.ts +0 -58
  420. package/src/cli/cmd-build.ts +0 -153
  421. package/src/cli/cmd-check.ts +0 -239
  422. package/src/cli/cmd-create.ts +0 -328
  423. package/src/cli/cmd-deploy.ts +0 -149
  424. package/src/cli/cmd-dev.ts +0 -13
  425. package/src/cli/cmd-docs.ts +0 -152
  426. package/src/cli/cmd-generate.ts +0 -155
  427. package/src/cli/cmd-migrate.ts +0 -53
  428. package/src/cli/cmd-routes.ts +0 -36
  429. package/src/cli/cmd-start.ts +0 -30
  430. package/src/cli/cmd-test.ts +0 -129
  431. package/src/cli/cmd-typegen.ts +0 -93
  432. package/src/cli/cmd-upgrade.ts +0 -143
  433. package/src/cli/context.ts +0 -12
  434. package/src/cli/framework-md.ts +0 -223
  435. package/src/cli/index.ts +0 -107
  436. package/src/client.ts +0 -26
  437. package/src/db/index.ts +0 -2
  438. package/src/db/migrate.ts +0 -89
  439. package/src/db/sqlite.ts +0 -40
  440. package/src/deploy/index.ts +0 -31
  441. package/src/deploy/vercel.ts +0 -94
  442. package/src/dev/hmr.ts +0 -31
  443. package/src/dev/partial-handler.ts +0 -52
  444. package/src/dev/request-handler.ts +0 -127
  445. package/src/dev/watcher.ts +0 -48
  446. package/src/dev.ts +0 -208
  447. package/src/env/index.ts +0 -74
  448. package/src/errors/formatter.ts +0 -63
  449. package/src/errors/index.ts +0 -2
  450. package/src/i18n/index.ts +0 -72
  451. package/src/index-client.ts +0 -4
  452. package/src/index.ts +0 -43
  453. package/src/jsx-runtime-client.ts +0 -13
  454. package/src/jsx-runtime.ts +0 -20
  455. package/src/jsx-types-html.ts +0 -242
  456. package/src/log/index.ts +0 -44
  457. package/src/plugins/drizzle.ts +0 -84
  458. package/src/plugins/index.ts +0 -86
  459. package/src/plugins/lucia.ts +0 -111
  460. package/src/plugins/prisma.ts +0 -85
  461. package/src/plugins/resend.ts +0 -78
  462. package/src/plugins/s3.ts +0 -102
  463. package/src/plugins/stripe.ts +0 -133
  464. package/src/plugins/tailwind.ts +0 -92
  465. package/src/prod.ts +0 -252
  466. package/src/reactive/computed.ts +0 -7
  467. package/src/reactive/effect.ts +0 -7
  468. package/src/reactive/index.ts +0 -7
  469. package/src/reactive/live.ts +0 -97
  470. package/src/reactive/optimistic.ts +0 -83
  471. package/src/reactive/resource.ts +0 -138
  472. package/src/reactive/signal.ts +0 -20
  473. package/src/reactive/store.ts +0 -36
  474. package/src/router/index.ts +0 -2
  475. package/src/router/matcher.ts +0 -53
  476. package/src/router/scanner.ts +0 -206
  477. package/src/runtime/client.ts +0 -28
  478. package/src/runtime/error-boundary.ts +0 -35
  479. package/src/runtime/form.ts +0 -49
  480. package/src/runtime/head.ts +0 -113
  481. package/src/runtime/html-escape.ts +0 -30
  482. package/src/runtime/hydration.ts +0 -95
  483. package/src/runtime/image.ts +0 -48
  484. package/src/runtime/index.ts +0 -12
  485. package/src/runtime/island-hydrator.ts +0 -84
  486. package/src/runtime/island.ts +0 -88
  487. package/src/runtime/jsx-runtime.ts +0 -167
  488. package/src/runtime/link.ts +0 -45
  489. package/src/runtime/project.ts +0 -73
  490. package/src/runtime/router.ts +0 -224
  491. package/src/runtime/server.ts +0 -102
  492. package/src/runtime/stream.ts +0 -182
  493. package/src/runtime/suspense.ts +0 -37
  494. package/src/runtime/typed-routes.ts +0 -26
  495. package/src/runtime/validated-form.ts +0 -106
  496. package/src/security/cors.ts +0 -80
  497. package/src/security/csrf.ts +0 -85
  498. package/src/security/headers.ts +0 -50
  499. package/src/security/index.ts +0 -4
  500. package/src/security/rate-limit.ts +0 -80
  501. package/src/server/action.ts +0 -48
  502. package/src/server/cache-utils.ts +0 -23
  503. package/src/server/cache.ts +0 -125
  504. package/src/server/compress.ts +0 -60
  505. package/src/server/etag.ts +0 -23
  506. package/src/server/guard.ts +0 -69
  507. package/src/server/html-shell.ts +0 -69
  508. package/src/server/index.ts +0 -57
  509. package/src/server/manifest.ts +0 -36
  510. package/src/server/middleware.ts +0 -159
  511. package/src/server/not-found.ts +0 -35
  512. package/src/server/page-render.ts +0 -123
  513. package/src/server/pipe.ts +0 -46
  514. package/src/server/redis-cache-store.ts +0 -87
  515. package/src/server/redis-client.ts +0 -71
  516. package/src/server/request-preflight.ts +0 -45
  517. package/src/server/route-request.ts +0 -72
  518. package/src/server/rpc-hash.ts +0 -17
  519. package/src/server/rpc-utils.ts +0 -27
  520. package/src/server/rpc.ts +0 -177
  521. package/src/server/sqlite-cache-store.ts +0 -109
  522. package/src/server/sse.ts +0 -96
  523. package/src/server/static-file.ts +0 -63
  524. package/src/server/ws.ts +0 -56
  525. package/src/server-entry.ts +0 -36
  526. package/src/testing/index.ts +0 -74
  527. package/src/types/index.ts +0 -4
  528. package/src/types/safe-html.ts +0 -32
  529. package/src/types/safe-sql.ts +0 -28
  530. package/src/types/safe-url.ts +0 -40
  531. package/src/types/user-input.ts +0 -12
  532. package/src/unsafe/index.ts +0 -18
@@ -0,0 +1,267 @@
1
+ import { appendFile, mkdir, writeFile } from "node:fs/promises";
2
+ import { dirname, isAbsolute, join } from "node:path";
3
+ import {
4
+ resolveAISessionPackConfig,
5
+ shouldGenerateAISessionPack,
6
+ writeAISessionPack
7
+ } from "./session-pack.js";
8
+ export {
9
+ GORSEE_AI_CONTEXT_SCHEMA_VERSION
10
+ } from "./contracts.js";
11
+ export {
12
+ writeArtifactFailurePack,
13
+ writeArtifactLifecycleEvent,
14
+ writeArtifactSuccessPack,
15
+ runArtifactLifecycleStep
16
+ } from "./artifact-lifecycle.js";
17
+ export {
18
+ createAIBridgeHandler,
19
+ createAIBridgeServer
20
+ } from "./bridge.js";
21
+ export {
22
+ buildAIHealthReport,
23
+ readAIDiagnosticsSnapshot,
24
+ readReactiveTraceArtifact,
25
+ readAIEvents,
26
+ resolveAIStorePaths
27
+ } from "./store.js";
28
+ export {
29
+ createAIMCPServer,
30
+ createLineReader
31
+ } from "./mcp.js";
32
+ export {
33
+ createAIContextPacket,
34
+ renderAIContextMarkdown
35
+ } from "./summary.js";
36
+ export {
37
+ buildAIContextBundle,
38
+ renderAIContextBundleMarkdown
39
+ } from "./bundle.js";
40
+ export {
41
+ buildIDEProjection,
42
+ resolveIDEProjectionPaths,
43
+ writeIDEProjection
44
+ } from "./ide.js";
45
+ export {
46
+ createIDEProjectionWatcher
47
+ } from "./watch.js";
48
+ export {
49
+ resolveAISessionPackConfig,
50
+ resolveAISessionPackPaths,
51
+ shouldGenerateAISessionPack,
52
+ writeAISessionPack
53
+ } from "./session-pack.js";
54
+ const DEFAULT_REDACT_KEYS = [
55
+ "authorization",
56
+ "cookie",
57
+ "set-cookie",
58
+ "x-gorsee-csrf",
59
+ "token",
60
+ "secret",
61
+ "password",
62
+ "apiKey",
63
+ "api_key"
64
+ ];
65
+ let currentConfig = {
66
+ enabled: !1
67
+ }, sessionPackTimer;
68
+ export function configureAIObservability(config = {}) {
69
+ currentConfig = {
70
+ ...config,
71
+ enabled: config.enabled ?? !1
72
+ };
73
+ }
74
+ export function getAIObservabilityConfig() {
75
+ return currentConfig;
76
+ }
77
+ export function isAIObservabilityEnabled() {
78
+ return currentConfig.enabled === !0;
79
+ }
80
+ export async function emitAIEvent(input) {
81
+ if (!isAIObservabilityEnabled())
82
+ return;
83
+ const event = {
84
+ id: input.id ?? crypto.randomUUID(),
85
+ ts: input.ts ?? new Date().toISOString(),
86
+ ...input,
87
+ data: redactValue(input.data, currentConfig.redactKeys ?? DEFAULT_REDACT_KEYS)
88
+ }, writes = [];
89
+ if (currentConfig.jsonlPath)
90
+ writes.push(writeJSONL(currentConfig.jsonlPath, event));
91
+ if (currentConfig.diagnosticsPath && shouldPersistDiagnostic(event))
92
+ writes.push(writeDiagnosticsSnapshot(currentConfig.diagnosticsPath, event));
93
+ if (currentConfig.bridge && shouldForwardEvent(event, currentConfig.bridge))
94
+ writes.push(postBridgeEvent(currentConfig.bridge, event));
95
+ await Promise.allSettled(writes);
96
+ scheduleSessionPack(event);
97
+ }
98
+ export async function emitAIDiagnostic(input) {
99
+ await emitAIEvent({
100
+ kind: "diagnostic.issue",
101
+ severity: input.severity,
102
+ source: input.source,
103
+ message: input.message,
104
+ code: input.code,
105
+ file: input.file,
106
+ line: input.line,
107
+ route: input.route,
108
+ requestId: input.requestId,
109
+ traceId: input.traceId,
110
+ spanId: input.spanId,
111
+ ts: input.ts,
112
+ data: input.fix ? { fix: input.fix } : void 0
113
+ });
114
+ }
115
+ export function createTraceIds(parent) {
116
+ return {
117
+ requestId: parent?.requestId ?? crypto.randomUUID(),
118
+ traceId: parent?.traceId ?? crypto.randomUUID(),
119
+ spanId: crypto.randomUUID(),
120
+ parentSpanId: parent?.spanId
121
+ };
122
+ }
123
+ export async function runWithAITrace(input, fn) {
124
+ const trace = createTraceIds(input.trace), startedAt = performance.now();
125
+ await emitAIEvent({
126
+ ...input,
127
+ kind: `${input.kind}.start`,
128
+ requestId: trace.requestId,
129
+ traceId: trace.traceId,
130
+ spanId: trace.spanId,
131
+ parentSpanId: trace.parentSpanId
132
+ });
133
+ try {
134
+ const result = await fn(trace);
135
+ await emitAIEvent({
136
+ ...input,
137
+ kind: `${input.kind}.finish`,
138
+ requestId: trace.requestId,
139
+ traceId: trace.traceId,
140
+ spanId: trace.spanId,
141
+ parentSpanId: trace.parentSpanId,
142
+ durationMs: Number((performance.now() - startedAt).toFixed(2))
143
+ });
144
+ return result;
145
+ } catch (error) {
146
+ await emitAIEvent({
147
+ ...input,
148
+ kind: `${input.kind}.error`,
149
+ severity: "error",
150
+ requestId: trace.requestId,
151
+ traceId: trace.traceId,
152
+ spanId: trace.spanId,
153
+ parentSpanId: trace.parentSpanId,
154
+ durationMs: Number((performance.now() - startedAt).toFixed(2)),
155
+ data: {
156
+ ...input.data ?? {},
157
+ error: error instanceof Error ? { name: error.name, message: error.message } : String(error)
158
+ }
159
+ });
160
+ throw error;
161
+ }
162
+ }
163
+ export function resolveAIObservabilityConfig(cwd, config) {
164
+ const enabled = config?.enabled ?? !1, resolvedJsonlPath = config?.jsonlPath ? resolvePath(cwd, config.jsonlPath) : join(cwd, ".gorsee", "ai-events.jsonl"), resolvedDiagnosticsPath = config?.diagnosticsPath ? resolvePath(cwd, config.diagnosticsPath) : join(cwd, ".gorsee", "ai-diagnostics.json");
165
+ return {
166
+ ...config,
167
+ enabled,
168
+ jsonlPath: enabled ? resolvedJsonlPath : config?.jsonlPath,
169
+ diagnosticsPath: enabled ? resolvedDiagnosticsPath : config?.diagnosticsPath,
170
+ sessionPack: enabled ? resolveAISessionPackConfig(cwd, config?.sessionPack) : config?.sessionPack
171
+ };
172
+ }
173
+ export function __resetAIObservability() {
174
+ currentConfig = { enabled: !1 };
175
+ if (sessionPackTimer)
176
+ clearTimeout(sessionPackTimer);
177
+ sessionPackTimer = void 0;
178
+ }
179
+ function shouldForwardEvent(event, bridge) {
180
+ if (!bridge.events || bridge.events.length === 0)
181
+ return !0;
182
+ return bridge.events.includes(event.kind);
183
+ }
184
+ async function writeJSONL(path, event) {
185
+ await mkdir(dirname(path), { recursive: !0 });
186
+ await appendFile(path, `${JSON.stringify(event)}
187
+ `, "utf-8");
188
+ }
189
+ async function writeDiagnosticsSnapshot(path, event) {
190
+ const snapshot = {
191
+ updatedAt: event.ts,
192
+ sessionId: currentConfig.sessionId,
193
+ latest: {
194
+ code: event.code,
195
+ message: event.message,
196
+ severity: event.severity,
197
+ source: event.source,
198
+ file: event.file,
199
+ line: event.line,
200
+ route: event.route,
201
+ requestId: event.requestId,
202
+ traceId: event.traceId,
203
+ spanId: event.spanId
204
+ }
205
+ };
206
+ await mkdir(dirname(path), { recursive: !0 });
207
+ await writeFile(path, JSON.stringify(snapshot, null, 2), "utf-8");
208
+ }
209
+ async function postBridgeEvent(bridge, event) {
210
+ const controller = new AbortController, timeout = setTimeout(() => controller.abort(), bridge.timeoutMs ?? 300);
211
+ try {
212
+ await fetch(bridge.url, {
213
+ method: "POST",
214
+ headers: {
215
+ "Content-Type": "application/json",
216
+ ...bridge.headers ?? {}
217
+ },
218
+ body: JSON.stringify(event),
219
+ signal: controller.signal
220
+ });
221
+ } catch {} finally {
222
+ clearTimeout(timeout);
223
+ }
224
+ }
225
+ function redactValue(value, redactKeys) {
226
+ if (value == null)
227
+ return value;
228
+ if (typeof value === "string")
229
+ return value.length > 2000 ? `${value.slice(0, 2000)}...[truncated]` : value;
230
+ if (Array.isArray(value))
231
+ return value.map((item) => redactValue(item, redactKeys));
232
+ if (typeof value === "object") {
233
+ const result = {};
234
+ for (const [key, nestedValue] of Object.entries(value)) {
235
+ const shouldRedact = redactKeys.some((candidate) => candidate.toLowerCase() === key.toLowerCase());
236
+ result[key] = shouldRedact ? "[redacted]" : redactValue(nestedValue, redactKeys);
237
+ }
238
+ return result;
239
+ }
240
+ return value;
241
+ }
242
+ function shouldPersistDiagnostic(event) {
243
+ return event.kind === "diagnostic.issue" || event.severity === "error" || event.code?.startsWith("E") === !0;
244
+ }
245
+ function resolvePath(cwd, path) {
246
+ return isAbsolute(path) ? path : join(cwd, path);
247
+ }
248
+ function scheduleSessionPack(event) {
249
+ const config = currentConfig.sessionPack;
250
+ if (!currentConfig.enabled || !config)
251
+ return;
252
+ if (!shouldGenerateAISessionPack(event, config))
253
+ return;
254
+ if (!currentConfig.jsonlPath || !currentConfig.diagnosticsPath)
255
+ return;
256
+ const cwd = dirname(dirname(currentConfig.jsonlPath));
257
+ if (sessionPackTimer)
258
+ clearTimeout(sessionPackTimer);
259
+ sessionPackTimer = setTimeout(() => {
260
+ sessionPackTimer = void 0;
261
+ writeAISessionPack(cwd, {
262
+ eventsPath: currentConfig.jsonlPath,
263
+ diagnosticsPath: currentConfig.diagnosticsPath,
264
+ reactiveTracePath: join(cwd, ".gorsee", "reactive-trace.json")
265
+ }, config).catch(() => {});
266
+ }, config.debounceMs ?? 250);
267
+ }
@@ -0,0 +1,6 @@
1
+ export declare const MAX_AI_JSON_BYTES: number;
2
+ export declare const MAX_AI_EVENTS_READ = 5000;
3
+ export declare function safeJSONParse<T>(raw: string, options?: {
4
+ maxBytes?: number;
5
+ }): T | null;
6
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
@@ -0,0 +1,14 @@
1
+ export const MAX_AI_JSON_BYTES = 65536, MAX_AI_EVENTS_READ = 5000;
2
+ export function safeJSONParse(raw, options = {}) {
3
+ const maxBytes = options.maxBytes ?? MAX_AI_JSON_BYTES;
4
+ if (Buffer.byteLength(raw, "utf-8") > maxBytes)
5
+ return null;
6
+ try {
7
+ return JSON.parse(raw);
8
+ } catch {
9
+ return null;
10
+ }
11
+ }
12
+ export function isRecord(value) {
13
+ return typeof value === "object" && value !== null && !Array.isArray(value);
14
+ }
@@ -0,0 +1,28 @@
1
+ import type { AIStorePaths } from "./store.js";
2
+ interface JSONRPCRequest {
3
+ jsonrpc: "2.0";
4
+ id?: string | number | null;
5
+ method: string;
6
+ params?: unknown;
7
+ }
8
+ interface JSONRPCResponse {
9
+ jsonrpc: "2.0";
10
+ id: string | number | null;
11
+ result?: unknown;
12
+ error?: {
13
+ code: number;
14
+ message: string;
15
+ };
16
+ }
17
+ export interface AIMCPServerOptions {
18
+ paths: AIStorePaths;
19
+ limit?: number;
20
+ }
21
+ export declare function createAIMCPServer(options: AIMCPServerOptions): {
22
+ handleRequest: (request: JSONRPCRequest) => Promise<JSONRPCResponse | null>;
23
+ serve: (input: AsyncIterable<string>, output: {
24
+ write(chunk: string): void;
25
+ }) => Promise<void>;
26
+ };
27
+ export declare function createLineReader(input: NodeJS.ReadStream): AsyncIterable<string>;
28
+ export {};
@@ -0,0 +1,173 @@
1
+ import { buildAIHealthReport, readAIDiagnosticsSnapshot, readAIEvents } from "./store.js";
2
+ import { isRecord, MAX_AI_JSON_BYTES, safeJSONParse } from "./json.js";
3
+ export function createAIMCPServer(options) {
4
+ async function handleRequest(request) {
5
+ switch (request.method) {
6
+ case "initialize":
7
+ return ok(request.id, {
8
+ protocolVersion: "2025-06-18",
9
+ serverInfo: { name: "gorsee-ai-mcp", version: "0.1.0" },
10
+ capabilities: {
11
+ tools: {}
12
+ }
13
+ });
14
+ case "notifications/initialized":
15
+ return null;
16
+ case "tools/list":
17
+ return ok(request.id, {
18
+ tools: [
19
+ {
20
+ name: "gorsee_ai_recent_events",
21
+ description: "Read the most recent structured AI/runtime/build/check events.",
22
+ inputSchema: {
23
+ type: "object",
24
+ properties: {
25
+ limit: { type: "number" }
26
+ }
27
+ }
28
+ },
29
+ {
30
+ name: "gorsee_ai_diagnostics",
31
+ description: "Read the latest AI diagnostics snapshot.",
32
+ inputSchema: { type: "object", properties: {} }
33
+ },
34
+ {
35
+ name: "gorsee_ai_doctor",
36
+ description: "Summarize current AI health, incidents, and diagnostics for the workspace.",
37
+ inputSchema: {
38
+ type: "object",
39
+ properties: {
40
+ limit: { type: "number" }
41
+ }
42
+ }
43
+ }
44
+ ]
45
+ });
46
+ case "tools/call":
47
+ try {
48
+ return ok(request.id, await callTool(request.params));
49
+ } catch (error) {
50
+ const message = error instanceof Error ? error.message : "Tool invocation failed";
51
+ return err(request.id, -32602, message);
52
+ }
53
+ default:
54
+ return err(request.id, -32601, `Method not found: ${request.method}`);
55
+ }
56
+ }
57
+ async function serve(input, output) {
58
+ for await (const line of input) {
59
+ const trimmed = line.trim();
60
+ if (!trimmed)
61
+ continue;
62
+ let request;
63
+ request = safeJSONParse(trimmed, { maxBytes: MAX_AI_JSON_BYTES });
64
+ if (!request) {
65
+ output.write(`${JSON.stringify(err(null, -32700, "Parse error"))}
66
+ `);
67
+ continue;
68
+ }
69
+ const response = await handleRequest(request);
70
+ if (response)
71
+ output.write(`${JSON.stringify(response)}
72
+ `);
73
+ }
74
+ }
75
+ return {
76
+ handleRequest,
77
+ serve
78
+ };
79
+ async function callTool(params) {
80
+ const { name, limit } = parseToolCall(params, options.limit);
81
+ if (name === "gorsee_ai_recent_events") {
82
+ const events = await readAIEvents(options.paths.eventsPath, { limit });
83
+ return text(JSON.stringify(events, null, 2));
84
+ }
85
+ if (name === "gorsee_ai_diagnostics") {
86
+ const snapshot = await readAIDiagnosticsSnapshot(options.paths.diagnosticsPath);
87
+ return text(JSON.stringify(snapshot ?? {}, null, 2));
88
+ }
89
+ if (name === "gorsee_ai_doctor") {
90
+ const report = await buildAIHealthReport(options.paths, { limit });
91
+ return text(renderDoctorText(report));
92
+ }
93
+ throw Error(`Unknown tool: ${name}`);
94
+ }
95
+ }
96
+ function parseToolCall(params, defaultLimit) {
97
+ if (!isRecord(params))
98
+ throw Error("Invalid params: expected tool call object");
99
+ const { name, arguments: args } = params;
100
+ if (typeof name !== "string" || name.length === 0)
101
+ throw Error("Invalid params: tool name is required");
102
+ if (args !== void 0 && !isRecord(args))
103
+ throw Error("Invalid params: arguments must be an object");
104
+ const rawLimit = args?.limit;
105
+ if (rawLimit !== void 0 && typeof rawLimit !== "number")
106
+ throw Error("Invalid params: limit must be a number");
107
+ return {
108
+ name,
109
+ limit: Math.max(1, Math.min(rawLimit ?? defaultLimit ?? 50, 500))
110
+ };
111
+ }
112
+ export function createLineReader(input) {
113
+ const decoder = new TextDecoder;
114
+ return {
115
+ async* [Symbol.asyncIterator]() {
116
+ let buffer = "";
117
+ for await (const chunk of input) {
118
+ buffer += typeof chunk === "string" ? chunk : decoder.decode(chunk, { stream: !0 });
119
+ while (buffer.includes(`
120
+ `)) {
121
+ const index = buffer.indexOf(`
122
+ `), line = buffer.slice(0, index);
123
+ buffer = buffer.slice(index + 1);
124
+ yield line;
125
+ }
126
+ }
127
+ if (buffer.length > 0)
128
+ yield buffer;
129
+ }
130
+ };
131
+ }
132
+ function renderDoctorText(report) {
133
+ const lines = [
134
+ `Events: ${report.events.total}`,
135
+ `Diagnostics: ${report.diagnostics.total}`,
136
+ `Errors: ${report.diagnostics.errors}`,
137
+ `Warnings: ${report.diagnostics.warnings}`
138
+ ];
139
+ if (report.events.latest)
140
+ lines.push(`Latest event: ${report.events.latest.kind} at ${report.events.latest.ts}`);
141
+ if (report.diagnostics.latest?.code)
142
+ lines.push(`Latest diagnostic: ${report.diagnostics.latest.code} ${report.diagnostics.latest.message ?? ""}`.trim());
143
+ if (report.incidents.length > 0) {
144
+ lines.push("Incidents:");
145
+ for (const incident of report.incidents.slice(0, 5))
146
+ lines.push(`- [${incident.kind}] ${incident.message}`);
147
+ }
148
+ if (report.incidentClusters.length > 0) {
149
+ lines.push("Incident clusters:");
150
+ for (const cluster of report.incidentClusters.slice(0, 5)) {
151
+ const loc = cluster.file ? ` (${cluster.file})` : cluster.route ? ` (${cluster.route})` : "";
152
+ lines.push(`- [${cluster.kind}] x${cluster.count}${loc}`);
153
+ }
154
+ }
155
+ if (report.artifactRegressions.length > 0) {
156
+ lines.push("Artifact regressions:");
157
+ for (const artifact of report.artifactRegressions.slice(0, 5)) {
158
+ const details = [artifact.version, artifact.path].filter(Boolean).join(" ");
159
+ lines.push(`- [${artifact.phase}] errors=${artifact.errors} warnings=${artifact.warnings} successes=${artifact.successes}${details ? ` (${details})` : ""}`);
160
+ }
161
+ }
162
+ return lines.join(`
163
+ `);
164
+ }
165
+ function text(value) {
166
+ return { content: [{ type: "text", text: value }] };
167
+ }
168
+ function ok(id, result) {
169
+ return { jsonrpc: "2.0", id: id ?? null, result };
170
+ }
171
+ function err(id, code, message) {
172
+ return { jsonrpc: "2.0", id: id ?? null, error: { code, message } };
173
+ }
@@ -0,0 +1,28 @@
1
+ import type { AIStorePaths } from "./store.js";
2
+ import { type AIContextBundle } from "./bundle.js";
3
+ export interface AISessionPackConfig {
4
+ enabled?: boolean;
5
+ outDir?: string;
6
+ triggerKinds?: string[];
7
+ debounceMs?: number;
8
+ limit?: number;
9
+ maxSnippets?: number;
10
+ formats?: Array<"json" | "markdown">;
11
+ }
12
+ export interface AISessionPackPaths {
13
+ outDir: string;
14
+ latestJsonPath: string;
15
+ latestMarkdownPath: string;
16
+ historyDir: string;
17
+ }
18
+ export declare function resolveAISessionPackConfig(cwd: string, config?: AISessionPackConfig): AISessionPackConfig | undefined;
19
+ export declare function resolveAISessionPackPaths(cwd: string, config?: AISessionPackConfig): AISessionPackPaths;
20
+ export declare function writeAISessionPack(cwd: string, storePaths: AIStorePaths, config?: AISessionPackConfig): Promise<{
21
+ bundle: AIContextBundle;
22
+ paths: AISessionPackPaths;
23
+ stamp: string;
24
+ }>;
25
+ export declare function shouldGenerateAISessionPack(event: {
26
+ kind: string;
27
+ severity: string;
28
+ }, config?: AISessionPackConfig): boolean;
@@ -0,0 +1,57 @@
1
+ import { mkdir, writeFile } from "node:fs/promises";
2
+ import { isAbsolute, join } from "node:path";
3
+ import { buildAIContextBundle, renderAIContextBundleMarkdown } from "./bundle.js";
4
+ import { GORSEE_AI_CONTEXT_SCHEMA_VERSION } from "./contracts.js";
5
+ export function resolveAISessionPackConfig(cwd, config) {
6
+ if (!config?.enabled)
7
+ return config;
8
+ return {
9
+ enabled: !0,
10
+ outDir: config.outDir ? isAbsolute(config.outDir) ? config.outDir : join(cwd, config.outDir) : join(cwd, ".gorsee", "agent"),
11
+ triggerKinds: config.triggerKinds ?? ["diagnostic.issue", "request.error", "build.summary", "check.summary"],
12
+ debounceMs: config.debounceMs ?? 250,
13
+ limit: config.limit ?? 200,
14
+ maxSnippets: config.maxSnippets ?? 6,
15
+ formats: config.formats ?? ["json", "markdown"]
16
+ };
17
+ }
18
+ export function resolveAISessionPackPaths(cwd, config) {
19
+ const outDir = config?.outDir ? isAbsolute(config.outDir) ? config.outDir : join(cwd, config.outDir) : join(cwd, ".gorsee", "agent");
20
+ return {
21
+ outDir,
22
+ latestJsonPath: join(outDir, "latest.json"),
23
+ latestMarkdownPath: join(outDir, "latest.md"),
24
+ historyDir: join(outDir, "history")
25
+ };
26
+ }
27
+ export async function writeAISessionPack(cwd, storePaths, config) {
28
+ const resolved = resolveAISessionPackConfig(cwd, { enabled: !0, ...config ?? {} }), paths = resolveAISessionPackPaths(cwd, resolved), bundle = await buildAIContextBundle(cwd, storePaths, {
29
+ limit: resolved.limit,
30
+ maxSnippets: resolved.maxSnippets
31
+ });
32
+ await mkdir(paths.historyDir, { recursive: !0 });
33
+ const stamp = bundle.generatedAt.replace(/[:.]/g, "-"), json = JSON.stringify(bundle, null, 2), markdown = [
34
+ `<!-- gorsee-ai-schema: ${GORSEE_AI_CONTEXT_SCHEMA_VERSION} -->`,
35
+ renderAIContextBundleMarkdown(bundle)
36
+ ].join(`
37
+ `);
38
+ if ((resolved.formats ?? ["json", "markdown"]).includes("json")) {
39
+ await writeFile(paths.latestJsonPath, json, "utf-8");
40
+ await writeFile(join(paths.historyDir, `${stamp}.json`), json, "utf-8");
41
+ }
42
+ if ((resolved.formats ?? ["json", "markdown"]).includes("markdown")) {
43
+ await writeFile(paths.latestMarkdownPath, markdown, "utf-8");
44
+ await writeFile(join(paths.historyDir, `${stamp}.md`), markdown, "utf-8");
45
+ }
46
+ return { bundle, paths, stamp };
47
+ }
48
+ export function shouldGenerateAISessionPack(event, config) {
49
+ if (!config?.enabled)
50
+ return !1;
51
+ if ((config.triggerKinds ?? []).includes(event.kind)) {
52
+ if (event.kind.endsWith(".summary"))
53
+ return event.severity === "error" || event.severity === "warn";
54
+ return !0;
55
+ }
56
+ return event.severity === "error";
57
+ }
@@ -0,0 +1,67 @@
1
+ import type { AIDiagnostic, AIEvent } from "./index.js";
2
+ import type { ReactiveTraceArtifact } from "../reactive/diagnostics.js";
3
+ export interface AIStorePaths {
4
+ eventsPath: string;
5
+ diagnosticsPath: string;
6
+ reactiveTracePath: string;
7
+ }
8
+ export interface AIHealthReport {
9
+ events: {
10
+ total: number;
11
+ bySeverity: Record<string, number>;
12
+ byKind: Record<string, number>;
13
+ latest?: AIEvent;
14
+ };
15
+ diagnostics: {
16
+ total: number;
17
+ latest?: AIDiagnostic;
18
+ errors: number;
19
+ warnings: number;
20
+ };
21
+ incidents: Array<{
22
+ kind: string;
23
+ message: string;
24
+ ts: string;
25
+ route?: string;
26
+ file?: string;
27
+ line?: number;
28
+ code?: string;
29
+ }>;
30
+ incidentClusters: Array<{
31
+ key: string;
32
+ count: number;
33
+ kind: string;
34
+ latestTs: string;
35
+ route?: string;
36
+ file?: string;
37
+ requestId?: string;
38
+ traceId?: string;
39
+ messages: string[];
40
+ codes: string[];
41
+ }>;
42
+ artifactRegressions: Array<{
43
+ key: string;
44
+ phase: string;
45
+ path?: string;
46
+ version?: string;
47
+ errors: number;
48
+ warnings: number;
49
+ successes: number;
50
+ latestTs: string;
51
+ latestStatus: "error" | "warn" | "success" | "info";
52
+ messages: string[];
53
+ }>;
54
+ }
55
+ export declare function resolveAIStorePaths(cwd: string): AIStorePaths;
56
+ export declare function readAIEvents(path: string, options?: {
57
+ limit?: number;
58
+ }): Promise<AIEvent[]>;
59
+ export declare function readAIDiagnosticsSnapshot(path: string): Promise<{
60
+ updatedAt?: string;
61
+ sessionId?: string;
62
+ latest?: Partial<AIDiagnostic>;
63
+ } | null>;
64
+ export declare function readReactiveTraceArtifact(path: string): Promise<ReactiveTraceArtifact | null>;
65
+ export declare function buildAIHealthReport(paths: AIStorePaths, options?: {
66
+ limit?: number;
67
+ }): Promise<AIHealthReport>;