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,98 @@
1
+ import { appendFile, mkdir, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ export async function writeArtifactLifecycleEvent(input) {
4
+ const gorseeDir = join(input.cwd, ".gorsee");
5
+ await mkdir(gorseeDir, { recursive: !0 });
6
+ const ts = new Date().toISOString();
7
+ await appendFile(join(gorseeDir, "ai-events.jsonl"), `${JSON.stringify({
8
+ id: crypto.randomUUID(),
9
+ kind: input.kind,
10
+ severity: input.severity,
11
+ ts,
12
+ source: input.source,
13
+ message: input.message,
14
+ code: input.code,
15
+ phase: input.phase,
16
+ data: input.data
17
+ })}
18
+ `, "utf-8");
19
+ }
20
+ export async function writeArtifactSuccessPack(cwd) {
21
+ const repoCliEntry = join(import.meta.dir, "..", "cli", "index.ts");
22
+ try {
23
+ await Bun.$`bun run ${repoCliEntry} ai pack`.cwd(cwd).quiet();
24
+ } catch {}
25
+ }
26
+ export async function writeArtifactFailurePack(cwd, source, kind, code, message) {
27
+ const gorseeDir = join(cwd, ".gorsee");
28
+ await mkdir(gorseeDir, { recursive: !0 });
29
+ const ts = new Date().toISOString();
30
+ await appendFile(join(gorseeDir, "ai-events.jsonl"), `${JSON.stringify({
31
+ id: crypto.randomUUID(),
32
+ kind,
33
+ severity: "error",
34
+ ts,
35
+ source,
36
+ message,
37
+ code
38
+ })}
39
+ `, "utf-8");
40
+ await writeFile(join(gorseeDir, "ai-diagnostics.json"), JSON.stringify({
41
+ updatedAt: ts,
42
+ latest: {
43
+ code,
44
+ message,
45
+ severity: "error",
46
+ source
47
+ }
48
+ }, null, 2), "utf-8");
49
+ await writeArtifactSuccessPack(cwd);
50
+ }
51
+ export async function runArtifactLifecycleStep(input) {
52
+ await writeArtifactLifecycleEvent({
53
+ cwd: input.cwd,
54
+ source: input.source,
55
+ phase: input.phase,
56
+ kind: `${input.step}.start`,
57
+ severity: "info",
58
+ message: input.startMessage,
59
+ data: {
60
+ version: input.version,
61
+ ...input.data ?? {}
62
+ }
63
+ });
64
+ try {
65
+ const result = await input.run();
66
+ await writeArtifactLifecycleEvent({
67
+ cwd: input.cwd,
68
+ source: input.source,
69
+ phase: input.phase,
70
+ kind: `${input.step}.finish`,
71
+ severity: "info",
72
+ message: input.finishMessage,
73
+ data: {
74
+ version: input.version,
75
+ ...input.data ?? {}
76
+ }
77
+ });
78
+ await writeArtifactSuccessPack(input.cwd);
79
+ return result;
80
+ } catch (error) {
81
+ const message = error instanceof Error ? error.message : String(error);
82
+ await writeArtifactLifecycleEvent({
83
+ cwd: input.cwd,
84
+ source: input.source,
85
+ phase: input.phase,
86
+ kind: `${input.step}.error`,
87
+ severity: "error",
88
+ message,
89
+ code: input.code,
90
+ data: {
91
+ version: input.version,
92
+ ...input.data ?? {}
93
+ }
94
+ });
95
+ await writeArtifactFailurePack(input.cwd, input.source, `${input.step}.failure`, input.code ?? "ARTIFACT_STEP", message);
96
+ throw error;
97
+ }
98
+ }
@@ -0,0 +1,26 @@
1
+ import type { AIDiagnostic, AIEvent } from "./index.js";
2
+ export interface AIBridgeServerOptions {
3
+ port?: number;
4
+ path?: string;
5
+ host?: string;
6
+ maxEvents?: number;
7
+ maxBodyBytes?: number;
8
+ persistPath?: string;
9
+ onEvent?: (event: AIEvent) => void | Promise<void>;
10
+ }
11
+ export interface AIBridgeSnapshot {
12
+ updatedAt: string | null;
13
+ events: AIEvent[];
14
+ diagnostics: AIDiagnostic[];
15
+ }
16
+ export interface AIBridgeHandler {
17
+ fetch(request: Request): Promise<Response> | Response;
18
+ snapshot(): AIBridgeSnapshot;
19
+ }
20
+ export interface AIBridgeServer {
21
+ port: number;
22
+ stop(closeActiveConnections?: boolean): void;
23
+ snapshot(): AIBridgeSnapshot;
24
+ }
25
+ export declare function createAIBridgeHandler(options?: AIBridgeServerOptions): AIBridgeHandler;
26
+ export declare function createAIBridgeServer(options?: AIBridgeServerOptions): AIBridgeServer;
@@ -0,0 +1,82 @@
1
+ import { appendFile, mkdir } from "node:fs/promises";
2
+ import { dirname } from "node:path";
3
+ import { isRecord, MAX_AI_JSON_BYTES, safeJSONParse } from "./json.js";
4
+ export function createAIBridgeHandler(options = {}) {
5
+ const path = options.path ?? "/gorsee/ai-events", maxEvents = options.maxEvents ?? 200, maxBodyBytes = options.maxBodyBytes ?? MAX_AI_JSON_BYTES, events = [], diagnostics = [];
6
+ let updatedAt = null;
7
+ return {
8
+ async fetch(request) {
9
+ const url = new URL(request.url);
10
+ if (request.method === "GET" && url.pathname === `${path}/health`)
11
+ return Response.json({ status: "ok", updatedAt });
12
+ if (request.method === "GET" && url.pathname === `${path}/events`)
13
+ return Response.json(snapshot());
14
+ if (request.method !== "POST" || url.pathname !== path)
15
+ return new Response("Not Found", { status: 404 });
16
+ if (!(request.headers.get("content-type") ?? "").includes("application/json"))
17
+ return Response.json({ error: "Unsupported media type" }, { status: 415 });
18
+ if (Number(request.headers.get("content-length") ?? "0") > maxBodyBytes)
19
+ return Response.json({ error: "Payload too large" }, { status: 413 });
20
+ const raw = await request.text();
21
+ if (Buffer.byteLength(raw, "utf-8") > maxBodyBytes)
22
+ return Response.json({ error: "Payload too large" }, { status: 413 });
23
+ const event = safeJSONParse(raw, { maxBytes: maxBodyBytes });
24
+ if (!event || !isValidAIEvent(event))
25
+ return Response.json({ error: "Invalid AI event payload" }, { status: 400 });
26
+ updatedAt = event.ts;
27
+ events.push(event);
28
+ if (events.length > maxEvents)
29
+ events.shift();
30
+ if (event.kind === "diagnostic.issue") {
31
+ diagnostics.push({
32
+ code: event.code ?? "UNKNOWN",
33
+ message: event.message,
34
+ severity: event.severity === "debug" ? "info" : event.severity,
35
+ source: event.source,
36
+ file: event.file,
37
+ line: event.line,
38
+ route: event.route,
39
+ fix: typeof event.data?.fix === "string" ? event.data.fix : void 0,
40
+ ts: event.ts
41
+ });
42
+ if (diagnostics.length > maxEvents)
43
+ diagnostics.shift();
44
+ }
45
+ if (options.persistPath) {
46
+ await mkdir(dirname(options.persistPath), { recursive: !0 });
47
+ await appendFile(options.persistPath, `${JSON.stringify(event)}
48
+ `, "utf-8");
49
+ }
50
+ if (options.onEvent)
51
+ await options.onEvent(event);
52
+ return Response.json({ ok: !0 });
53
+ },
54
+ snapshot
55
+ };
56
+ function snapshot() {
57
+ return {
58
+ updatedAt,
59
+ events: [...events],
60
+ diagnostics: [...diagnostics]
61
+ };
62
+ }
63
+ }
64
+ function isValidAIEvent(value) {
65
+ return isRecord(value) && typeof value.id === "string" && typeof value.kind === "string" && typeof value.severity === "string" && typeof value.ts === "string" && typeof value.source === "string" && typeof value.message === "string";
66
+ }
67
+ export function createAIBridgeServer(options = {}) {
68
+ const handler = createAIBridgeHandler(options), server = Bun.serve({
69
+ hostname: options.host ?? "127.0.0.1",
70
+ port: options.port ?? 4318,
71
+ fetch: handler.fetch
72
+ });
73
+ return {
74
+ port: server.port ?? options.port ?? 4318,
75
+ stop(closeActiveConnections = !1) {
76
+ server.stop(closeActiveConnections);
77
+ },
78
+ snapshot() {
79
+ return handler.snapshot();
80
+ }
81
+ };
82
+ }
@@ -0,0 +1,46 @@
1
+ import type { AIDiagnostic, AIEvent } from "./index.js";
2
+ import type { AIStorePaths, AIHealthReport } from "./store.js";
3
+ import { type AIContextPacket } from "./summary.js";
4
+ export interface AIContextSnippet {
5
+ file: string;
6
+ startLine: number;
7
+ endLine: number;
8
+ reason: string;
9
+ score: number;
10
+ content: string;
11
+ }
12
+ export interface AIContextBundle {
13
+ schemaVersion: string;
14
+ generatedAt: string;
15
+ packet: AIContextPacket;
16
+ report: AIHealthReport;
17
+ diagnostics: {
18
+ updatedAt?: string;
19
+ sessionId?: string;
20
+ latest?: Partial<AIDiagnostic>;
21
+ } | null;
22
+ recentEvents: AIEvent[];
23
+ artifacts: Array<{
24
+ kind: string;
25
+ path?: string;
26
+ version?: string;
27
+ message: string;
28
+ ts: string;
29
+ }>;
30
+ rootCauses: Array<{
31
+ key: string;
32
+ score: number;
33
+ kind: string;
34
+ route?: string;
35
+ file?: string;
36
+ latestTs: string;
37
+ reasons: string[];
38
+ }>;
39
+ snippets: AIContextSnippet[];
40
+ }
41
+ export declare function buildAIContextBundle(cwd: string, paths: AIStorePaths, options?: {
42
+ limit?: number;
43
+ snippetRadius?: number;
44
+ maxSnippets?: number;
45
+ }): Promise<AIContextBundle>;
46
+ export declare function renderAIContextBundleMarkdown(bundle: AIContextBundle): string;
@@ -0,0 +1,247 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { join, isAbsolute } from "node:path";
3
+ import { buildAIHealthReport, readAIDiagnosticsSnapshot, readAIEvents, readReactiveTraceArtifact } from "./store.js";
4
+ import { createAIContextPacket, renderAIContextMarkdown } from "./summary.js";
5
+ import { GORSEE_AI_CONTEXT_SCHEMA_VERSION } from "./contracts.js";
6
+ export async function buildAIContextBundle(cwd, paths, options = {}) {
7
+ const events = await readAIEvents(paths.eventsPath, { limit: options.limit ?? 200 }), diagnostics = await readAIDiagnosticsSnapshot(paths.diagnosticsPath), reactiveTrace = await readReactiveTraceArtifact(paths.reactiveTracePath), report = await buildAIHealthReport(paths, { limit: options.limit ?? 200 }), packet = createAIContextPacket(report, events, diagnostics?.latest, reactiveTrace), rootCauses = buildRootCauseRanking(report, diagnostics?.latest, events), snippets = await collectSnippets(cwd, diagnostics?.latest, report, events, rootCauses, {
8
+ snippetRadius: options.snippetRadius ?? 6,
9
+ maxSnippets: options.maxSnippets ?? 5
10
+ });
11
+ return {
12
+ schemaVersion: GORSEE_AI_CONTEXT_SCHEMA_VERSION,
13
+ generatedAt: new Date().toISOString(),
14
+ packet,
15
+ report,
16
+ diagnostics,
17
+ recentEvents: events.slice(-50),
18
+ artifacts: collectArtifacts(events),
19
+ rootCauses,
20
+ snippets
21
+ };
22
+ }
23
+ export function renderAIContextBundleMarkdown(bundle) {
24
+ const lines = [
25
+ renderAIContextMarkdown(bundle.packet),
26
+ "",
27
+ `Bundle Schema: ${bundle.schemaVersion}`,
28
+ "",
29
+ "## Root Causes",
30
+ ""
31
+ ];
32
+ if (bundle.artifacts.length > 0) {
33
+ lines.push("## Artifacts", "");
34
+ for (const artifact of bundle.artifacts.slice(0, 5)) {
35
+ const details = [artifact.version, artifact.path].filter(Boolean).join(" ");
36
+ lines.push(`- ${artifact.kind}: ${artifact.message}${details ? ` (${details})` : ""}`);
37
+ }
38
+ lines.push("");
39
+ }
40
+ if (bundle.rootCauses.length === 0)
41
+ lines.push("- No root-cause candidates ranked yet.");
42
+ else
43
+ for (const cause of bundle.rootCauses.slice(0, 5)) {
44
+ const loc = cause.file ? ` (${cause.file})` : cause.route ? ` (${cause.route})` : "";
45
+ lines.push(`- ${cause.kind} score=${cause.score}${loc}`);
46
+ if (cause.reasons.length > 0)
47
+ lines.push(` reasons: ${cause.reasons.join(", ")}`);
48
+ }
49
+ lines.push("", "## Snippets", "");
50
+ if (bundle.snippets.length === 0)
51
+ lines.push("- No relevant snippets collected.");
52
+ else
53
+ for (const snippet of bundle.snippets) {
54
+ lines.push(`### ${snippet.file}:${snippet.startLine}-${snippet.endLine}`);
55
+ lines.push("");
56
+ lines.push(`Reason: ${snippet.reason} (score: ${snippet.score})`);
57
+ lines.push("");
58
+ lines.push("```ts");
59
+ lines.push(snippet.content);
60
+ lines.push("```");
61
+ lines.push("");
62
+ }
63
+ return lines.join(`
64
+ `);
65
+ }
66
+ function collectArtifacts(events) {
67
+ return events.filter((event) => event.kind.startsWith("release.") || event.kind.startsWith("deploy.") || event.kind === "build.summary").map((event) => ({
68
+ kind: event.kind,
69
+ path: typeof event.data?.artifact === "string" ? event.data.artifact : void 0,
70
+ version: typeof event.data?.version === "string" ? event.data.version : void 0,
71
+ message: event.message,
72
+ ts: event.ts
73
+ })).slice(-10).reverse();
74
+ }
75
+ async function collectSnippets(cwd, latestDiagnostic, report, events, rootCauses, options) {
76
+ const candidates = new Map, fileFrequency = new Map, latestIncident = report.incidents[0], topCause = rootCauses[0], focusRoute = topCause?.route ?? latestDiagnostic?.route ?? latestIncident?.route, focusRequestId = topCause?.key.startsWith("request:") ? topCause.key.slice(8) : [...events].reverse().find((event) => event.severity === "error" || event.kind === "request.error")?.requestId, focusTraceId = topCause?.key.startsWith("trace:") ? topCause.key.slice(6) : [...events].reverse().find((event) => event.severity === "error" || event.kind === "request.error")?.traceId;
77
+ for (const event of events)
78
+ if (event.file)
79
+ fileFrequency.set(event.file, (fileFrequency.get(event.file) ?? 0) + 1);
80
+ if (latestDiagnostic?.file)
81
+ candidates.set(latestDiagnostic.file, {
82
+ line: latestDiagnostic.line,
83
+ reason: latestDiagnostic.code ? `latest diagnostic ${latestDiagnostic.code}` : "latest diagnostic",
84
+ score: 100
85
+ });
86
+ for (const incident of report.incidents) {
87
+ if (!incident.file)
88
+ continue;
89
+ const score = 60 + (fileFrequency.get(incident.file) ?? 0) * 5 + (incident.code ? 10 : 0), existing = candidates.get(incident.file);
90
+ if (!existing || score > existing.score)
91
+ candidates.set(incident.file, {
92
+ line: incident.line,
93
+ reason: incident.code ? `incident ${incident.code}` : incident.kind,
94
+ score
95
+ });
96
+ }
97
+ for (const event of events.filter((entry) => entry.severity === "error" || entry.kind === "request.error")) {
98
+ if (!event.file)
99
+ continue;
100
+ let score = (event.severity === "error" ? 40 : 20) + (fileFrequency.get(event.file) ?? 0) * 5;
101
+ if (focusRequestId && event.requestId === focusRequestId)
102
+ score += 20;
103
+ if (focusTraceId && event.traceId === focusTraceId)
104
+ score += 20;
105
+ const existing = candidates.get(event.file);
106
+ if (!existing || score > existing.score)
107
+ candidates.set(event.file, {
108
+ line: event.line,
109
+ reason: event.kind,
110
+ score
111
+ });
112
+ }
113
+ for (const cause of rootCauses) {
114
+ if (cause.file) {
115
+ const existing = candidates.get(cause.file);
116
+ if (!existing || cause.score > existing.score)
117
+ candidates.set(cause.file, {
118
+ line: latestDiagnostic?.file === cause.file ? latestDiagnostic.line : void 0,
119
+ reason: `root cause ${cause.key}`,
120
+ score: cause.score
121
+ });
122
+ }
123
+ if (cause.route)
124
+ for (const candidate of inferRouteFiles(cause.route)) {
125
+ const score = cause.score - (candidate.isLayout ? 8 : 0), existing = candidates.get(candidate.file);
126
+ if (!existing || score > existing.score)
127
+ candidates.set(candidate.file, {
128
+ line: 1,
129
+ reason: `root cause ${cause.key}`,
130
+ score
131
+ });
132
+ }
133
+ }
134
+ if (focusRoute)
135
+ for (const candidate of inferRouteFiles(focusRoute)) {
136
+ const score = 55 + (fileFrequency.get(candidate.file) ?? 0) * 5 + (candidate.isLayout ? 5 : 0), existing = candidates.get(candidate.file);
137
+ if (!existing || score > existing.score)
138
+ candidates.set(candidate.file, {
139
+ line: 1,
140
+ reason: candidate.reason,
141
+ score
142
+ });
143
+ }
144
+ const snippets = [], ranked = [...candidates.entries()].sort((a, b) => b[1].score - a[1].score).slice(0, options.maxSnippets);
145
+ for (const [file, meta] of ranked) {
146
+ const snippet = await readSnippet(cwd, file, meta.line, meta.reason, meta.score, options.snippetRadius);
147
+ if (snippet)
148
+ snippets.push(snippet);
149
+ }
150
+ return snippets;
151
+ }
152
+ function buildRootCauseRanking(report, latestDiagnostic, events) {
153
+ const causes = report.incidentClusters.map((cluster) => {
154
+ let score = cluster.count * 30;
155
+ if (cluster.traceId)
156
+ score += 25;
157
+ if (cluster.requestId)
158
+ score += 20;
159
+ if (cluster.file)
160
+ score += 15;
161
+ if (cluster.route)
162
+ score += 10;
163
+ if (latestDiagnostic?.file && cluster.file === latestDiagnostic.file)
164
+ score += 40;
165
+ if (latestDiagnostic?.route && cluster.route === latestDiagnostic.route)
166
+ score += 25;
167
+ if (cluster.codes.length > 0)
168
+ score += 10;
169
+ if (events.some((event) => event.traceId && cluster.traceId && event.traceId === cluster.traceId && event.kind === "request.error"))
170
+ score += 10;
171
+ return {
172
+ key: cluster.key,
173
+ score,
174
+ kind: cluster.kind,
175
+ route: cluster.route,
176
+ file: cluster.file,
177
+ latestTs: cluster.latestTs,
178
+ reasons: [
179
+ cluster.traceId ? "shared trace" : "",
180
+ cluster.requestId ? "shared request" : "",
181
+ cluster.file ? "file-locality" : "",
182
+ cluster.route ? "route-locality" : "",
183
+ cluster.count > 1 ? `repeated x${cluster.count}` : ""
184
+ ].filter(Boolean)
185
+ };
186
+ });
187
+ if (latestDiagnostic?.file && !causes.some((cause) => cause.file === latestDiagnostic.file))
188
+ causes.push({
189
+ key: `diagnostic:${latestDiagnostic.code ?? "latest"}`,
190
+ score: 120,
191
+ kind: "diagnostic.issue",
192
+ file: latestDiagnostic.file,
193
+ route: latestDiagnostic.route,
194
+ latestTs: new Date().toISOString(),
195
+ reasons: ["latest diagnostic"]
196
+ });
197
+ return causes.sort((a, b) => b.score - a.score).slice(0, 8);
198
+ }
199
+ async function readSnippet(cwd, file, line, reason, score, radius) {
200
+ const path = isAbsolute(file) ? file : join(cwd, file);
201
+ let content;
202
+ try {
203
+ content = await readFile(path, "utf-8");
204
+ } catch {
205
+ return null;
206
+ }
207
+ const lines = content.split(`
208
+ `), focus = Math.max(1, Math.min(line ?? 1, lines.length)), startLine = Math.max(1, focus - radius), endLine = Math.min(lines.length, focus + radius);
209
+ return {
210
+ file,
211
+ startLine,
212
+ endLine,
213
+ reason,
214
+ score,
215
+ content: lines.slice(startLine - 1, endLine).join(`
216
+ `)
217
+ };
218
+ }
219
+ function inferRouteFiles(route) {
220
+ const segments = (route === "/" ? "" : route.replace(/^\/+/, "")).split("/").filter(Boolean), files = [];
221
+ if (segments.length === 0) {
222
+ files.push({ file: "routes/index.tsx", reason: "focus route /" });
223
+ files.push({ file: "routes/_layout.tsx", reason: "root layout for focus route", isLayout: !0 });
224
+ return files;
225
+ }
226
+ const routePath = segments.join("/");
227
+ files.push({ file: `routes/${routePath}.tsx`, reason: `focus route ${route}` });
228
+ files.push({ file: `routes/${routePath}/index.tsx`, reason: `focus route ${route} index` });
229
+ files.push({ file: "routes/_layout.tsx", reason: "root layout for focus route", isLayout: !0 });
230
+ for (let i = 1;i <= segments.length; i++)
231
+ files.push({
232
+ file: `routes/${segments.slice(0, i).join("/")}/_layout.tsx`,
233
+ reason: `layout for ${route}`,
234
+ isLayout: !0
235
+ });
236
+ return dedupe(files);
237
+ }
238
+ function dedupe(files) {
239
+ const seen = new Set, unique = [];
240
+ for (const file of files) {
241
+ if (seen.has(file.file))
242
+ continue;
243
+ seen.add(file.file);
244
+ unique.push(file);
245
+ }
246
+ return unique;
247
+ }
@@ -0,0 +1 @@
1
+ export declare const GORSEE_AI_CONTEXT_SCHEMA_VERSION = "1.0";
@@ -0,0 +1 @@
1
+ export const GORSEE_AI_CONTEXT_SCHEMA_VERSION = "1.0";
@@ -0,0 +1,37 @@
1
+ import { type AIContextPacket } from "./summary.js";
2
+ import { type AIStorePaths } from "./store.js";
3
+ export interface IDEProjectionPaths {
4
+ diagnosticsPath: string;
5
+ eventsPath: string;
6
+ contextPath: string;
7
+ }
8
+ export interface IDEProjection {
9
+ schemaVersion: string;
10
+ updatedAt: string;
11
+ diagnostics: Array<{
12
+ code?: string;
13
+ message: string;
14
+ severity: string;
15
+ file?: string;
16
+ line?: number;
17
+ route?: string;
18
+ }>;
19
+ recentEvents: Array<{
20
+ kind: string;
21
+ severity: string;
22
+ message: string;
23
+ ts: string;
24
+ route?: string;
25
+ file?: string;
26
+ line?: number;
27
+ artifact?: string;
28
+ version?: string;
29
+ }>;
30
+ artifactRegressions: AIContextPacket["artifactRegressions"];
31
+ context: AIContextPacket;
32
+ }
33
+ export declare function resolveIDEProjectionPaths(cwd: string): IDEProjectionPaths;
34
+ export declare function buildIDEProjection(storePaths: AIStorePaths, options?: {
35
+ limit?: number;
36
+ }): Promise<IDEProjection>;
37
+ export declare function writeIDEProjection(projectionPaths: IDEProjectionPaths, projection: IDEProjection): Promise<void>;
@@ -0,0 +1,56 @@
1
+ import { mkdir, writeFile } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
+ import { createAIContextPacket, renderAIContextMarkdown } from "./summary.js";
4
+ import { buildAIHealthReport, readAIDiagnosticsSnapshot, readAIEvents, readReactiveTraceArtifact } from "./store.js";
5
+ import { GORSEE_AI_CONTEXT_SCHEMA_VERSION } from "./contracts.js";
6
+ export function resolveIDEProjectionPaths(cwd) {
7
+ const base = join(cwd, ".gorsee", "ide");
8
+ return {
9
+ diagnosticsPath: join(base, "diagnostics.json"),
10
+ eventsPath: join(base, "events.json"),
11
+ contextPath: join(base, "context.md")
12
+ };
13
+ }
14
+ export async function buildIDEProjection(storePaths, options = {}) {
15
+ const events = await readAIEvents(storePaths.eventsPath, { limit: options.limit ?? 100 }), diagnosticsSnapshot = await readAIDiagnosticsSnapshot(storePaths.diagnosticsPath), reactiveTrace = await readReactiveTraceArtifact(storePaths.reactiveTracePath), report = await buildAIHealthReport(storePaths, { limit: options.limit ?? 200 }), context = createAIContextPacket(report, events, diagnosticsSnapshot?.latest, reactiveTrace);
16
+ return {
17
+ schemaVersion: GORSEE_AI_CONTEXT_SCHEMA_VERSION,
18
+ updatedAt: new Date().toISOString(),
19
+ diagnostics: diagnosticsSnapshot?.latest ? [{
20
+ code: diagnosticsSnapshot.latest.code,
21
+ message: diagnosticsSnapshot.latest.message ?? "",
22
+ severity: diagnosticsSnapshot.latest.severity ?? "error",
23
+ file: diagnosticsSnapshot.latest.file,
24
+ line: diagnosticsSnapshot.latest.line,
25
+ route: diagnosticsSnapshot.latest.route
26
+ }] : [],
27
+ recentEvents: events.slice(-20).reverse().map((event) => ({
28
+ kind: event.kind,
29
+ severity: event.severity,
30
+ message: event.message,
31
+ ts: event.ts,
32
+ route: event.route,
33
+ file: event.file,
34
+ line: event.line,
35
+ artifact: typeof event.data?.artifact === "string" ? event.data.artifact : void 0,
36
+ version: typeof event.data?.version === "string" ? event.data.version : void 0
37
+ })),
38
+ artifactRegressions: context.artifactRegressions,
39
+ context
40
+ };
41
+ }
42
+ export async function writeIDEProjection(projectionPaths, projection) {
43
+ await mkdir(dirname(projectionPaths.diagnosticsPath), { recursive: !0 });
44
+ await writeFile(projectionPaths.diagnosticsPath, JSON.stringify({
45
+ schemaVersion: projection.schemaVersion,
46
+ updatedAt: projection.updatedAt,
47
+ diagnostics: projection.diagnostics
48
+ }, null, 2), "utf-8");
49
+ await writeFile(projectionPaths.eventsPath, JSON.stringify({
50
+ schemaVersion: projection.schemaVersion,
51
+ updatedAt: projection.updatedAt,
52
+ events: projection.recentEvents,
53
+ artifactRegressions: projection.artifactRegressions
54
+ }, null, 2), "utf-8");
55
+ await writeFile(projectionPaths.contextPath, renderAIContextMarkdown(projection.context), "utf-8");
56
+ }
@@ -0,0 +1,85 @@
1
+ import { type AISessionPackConfig } from "./session-pack.js";
2
+ export { GORSEE_AI_CONTEXT_SCHEMA_VERSION, } from "./contracts.js";
3
+ export { writeArtifactFailurePack, writeArtifactLifecycleEvent, writeArtifactSuccessPack, runArtifactLifecycleStep, type ArtifactLifecycleEventInput, } from "./artifact-lifecycle.js";
4
+ export { createAIBridgeHandler, createAIBridgeServer, type AIBridgeHandler, type AIBridgeServer, type AIBridgeServerOptions, type AIBridgeSnapshot, } from "./bridge.js";
5
+ export { buildAIHealthReport, readAIDiagnosticsSnapshot, readReactiveTraceArtifact, readAIEvents, resolveAIStorePaths, type AIHealthReport, type AIStorePaths, } from "./store.js";
6
+ export { createAIMCPServer, createLineReader, type AIMCPServerOptions, } from "./mcp.js";
7
+ export { createAIContextPacket, renderAIContextMarkdown, type AIContextPacket, } from "./summary.js";
8
+ export { buildAIContextBundle, renderAIContextBundleMarkdown, type AIContextBundle, type AIContextSnippet, } from "./bundle.js";
9
+ export { buildIDEProjection, resolveIDEProjectionPaths, writeIDEProjection, type IDEProjection, type IDEProjectionPaths, } from "./ide.js";
10
+ export { createIDEProjectionWatcher, type IDEProjectionWatcher, type IDEProjectionWatcherOptions, } from "./watch.js";
11
+ export { resolveAISessionPackConfig, resolveAISessionPackPaths, shouldGenerateAISessionPack, writeAISessionPack, type AISessionPackConfig, type AISessionPackPaths, } from "./session-pack.js";
12
+ export type AIEventSeverity = "debug" | "info" | "warn" | "error";
13
+ export type AIEventSource = "runtime" | "build" | "cli" | "check" | "deploy" | "dev" | "log";
14
+ export interface AITraceContext {
15
+ requestId?: string;
16
+ traceId: string;
17
+ spanId: string;
18
+ parentSpanId?: string;
19
+ }
20
+ export interface AIDiagnostic {
21
+ code: string;
22
+ message: string;
23
+ severity: Exclude<AIEventSeverity, "debug">;
24
+ source: AIEventSource;
25
+ file?: string;
26
+ line?: number;
27
+ route?: string;
28
+ fix?: string;
29
+ ts: string;
30
+ }
31
+ export interface AIEvent {
32
+ id: string;
33
+ kind: string;
34
+ severity: AIEventSeverity;
35
+ ts: string;
36
+ source: AIEventSource;
37
+ message: string;
38
+ route?: string;
39
+ requestId?: string;
40
+ traceId?: string;
41
+ spanId?: string;
42
+ parentSpanId?: string;
43
+ phase?: string;
44
+ code?: string;
45
+ durationMs?: number;
46
+ file?: string;
47
+ line?: number;
48
+ tags?: string[];
49
+ data?: Record<string, unknown>;
50
+ }
51
+ export interface AIBridgeConfig {
52
+ url: string;
53
+ headers?: Record<string, string>;
54
+ timeoutMs?: number;
55
+ events?: string[];
56
+ }
57
+ export interface AIObservabilityConfig {
58
+ enabled?: boolean;
59
+ jsonlPath?: string;
60
+ diagnosticsPath?: string;
61
+ redactKeys?: string[];
62
+ sessionId?: string;
63
+ bridge?: AIBridgeConfig;
64
+ sessionPack?: AISessionPackConfig;
65
+ }
66
+ export declare function configureAIObservability(config?: AIObservabilityConfig): void;
67
+ export declare function getAIObservabilityConfig(): AIObservabilityConfig;
68
+ export declare function isAIObservabilityEnabled(): boolean;
69
+ export declare function emitAIEvent(input: Omit<AIEvent, "id" | "ts"> & {
70
+ ts?: string;
71
+ id?: string;
72
+ }): Promise<void>;
73
+ export declare function emitAIDiagnostic(input: Omit<AIDiagnostic, "ts"> & {
74
+ ts?: string;
75
+ requestId?: string;
76
+ traceId?: string;
77
+ spanId?: string;
78
+ }): Promise<void>;
79
+ export declare function createTraceIds(parent?: Partial<AITraceContext>): AITraceContext;
80
+ export declare function runWithAITrace<T>(input: Omit<AIEvent, "id" | "ts" | "kind"> & {
81
+ kind: string;
82
+ trace?: Partial<AITraceContext>;
83
+ }, fn: (trace: AITraceContext) => Promise<T>): Promise<T>;
84
+ export declare function resolveAIObservabilityConfig(cwd: string, config?: AIObservabilityConfig): AIObservabilityConfig;
85
+ export declare function __resetAIObservability(): void;