@ailog/cli 0.2.3 → 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 (321) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +12 -0
  3. package/README.md +117 -18
  4. package/bin/cli.js +9 -0
  5. package/dist/client/assets/index-BMqO0rJT.js +190 -0
  6. package/dist/client/assets/index-CdQ1JjwT.css +1 -0
  7. package/dist/client/index.html +19 -0
  8. package/dist/index.d.ts +144 -0
  9. package/dist/index.js +609 -0
  10. package/dist/viewer/server.js +360 -0
  11. package/package.json +65 -45
  12. package/dist/bin/cli.js +0 -1980
  13. package/dist/standalone/.next/BUILD_ID +0 -1
  14. package/dist/standalone/.next/app-path-routes-manifest.json +0 -10
  15. package/dist/standalone/.next/build-manifest.json +0 -21
  16. package/dist/standalone/.next/package.json +0 -1
  17. package/dist/standalone/.next/prerender-manifest.json +0 -118
  18. package/dist/standalone/.next/required-server-files.json +0 -333
  19. package/dist/standalone/.next/routes-manifest.json +0 -102
  20. package/dist/standalone/.next/server/app/_global-error/page/app-paths-manifest.json +0 -3
  21. package/dist/standalone/.next/server/app/_global-error/page/build-manifest.json +0 -18
  22. package/dist/standalone/.next/server/app/_global-error/page/next-font-manifest.json +0 -6
  23. package/dist/standalone/.next/server/app/_global-error/page/react-loadable-manifest.json +0 -1
  24. package/dist/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +0 -4
  25. package/dist/standalone/.next/server/app/_global-error/page.js +0 -11
  26. package/dist/standalone/.next/server/app/_global-error/page.js.map +0 -5
  27. package/dist/standalone/.next/server/app/_global-error/page.js.nft.json +0 -1
  28. package/dist/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +0 -2
  29. package/dist/standalone/.next/server/app/_global-error.html +0 -2
  30. package/dist/standalone/.next/server/app/_global-error.meta +0 -15
  31. package/dist/standalone/.next/server/app/_global-error.rsc +0 -13
  32. package/dist/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +0 -5
  33. package/dist/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +0 -13
  34. package/dist/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +0 -8
  35. package/dist/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +0 -4
  36. package/dist/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +0 -1
  37. package/dist/standalone/.next/server/app/_not-found/page/app-paths-manifest.json +0 -3
  38. package/dist/standalone/.next/server/app/_not-found/page/build-manifest.json +0 -18
  39. package/dist/standalone/.next/server/app/_not-found/page/next-font-manifest.json +0 -12
  40. package/dist/standalone/.next/server/app/_not-found/page/react-loadable-manifest.json +0 -1
  41. package/dist/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +0 -4
  42. package/dist/standalone/.next/server/app/_not-found/page.js +0 -14
  43. package/dist/standalone/.next/server/app/_not-found/page.js.map +0 -5
  44. package/dist/standalone/.next/server/app/_not-found/page.js.nft.json +0 -1
  45. package/dist/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +0 -2
  46. package/dist/standalone/.next/server/app/_not-found.html +0 -1
  47. package/dist/standalone/.next/server/app/_not-found.meta +0 -16
  48. package/dist/standalone/.next/server/app/_not-found.rsc +0 -19
  49. package/dist/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +0 -19
  50. package/dist/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +0 -8
  51. package/dist/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +0 -10
  52. package/dist/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +0 -5
  53. package/dist/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +0 -4
  54. package/dist/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +0 -2
  55. package/dist/standalone/.next/server/app/api/[[...route]]/route/app-paths-manifest.json +0 -3
  56. package/dist/standalone/.next/server/app/api/[[...route]]/route/build-manifest.json +0 -11
  57. package/dist/standalone/.next/server/app/api/[[...route]]/route/server-reference-manifest.json +0 -4
  58. package/dist/standalone/.next/server/app/api/[[...route]]/route.js +0 -7
  59. package/dist/standalone/.next/server/app/api/[[...route]]/route.js.map +0 -5
  60. package/dist/standalone/.next/server/app/api/[[...route]]/route.js.nft.json +0 -1
  61. package/dist/standalone/.next/server/app/api/[[...route]]/route_client-reference-manifest.js +0 -2
  62. package/dist/standalone/.next/server/app/apps/[appId]/page/app-paths-manifest.json +0 -3
  63. package/dist/standalone/.next/server/app/apps/[appId]/page/build-manifest.json +0 -18
  64. package/dist/standalone/.next/server/app/apps/[appId]/page/next-font-manifest.json +0 -12
  65. package/dist/standalone/.next/server/app/apps/[appId]/page/react-loadable-manifest.json +0 -1
  66. package/dist/standalone/.next/server/app/apps/[appId]/page/server-reference-manifest.json +0 -4
  67. package/dist/standalone/.next/server/app/apps/[appId]/page.js +0 -17
  68. package/dist/standalone/.next/server/app/apps/[appId]/page.js.map +0 -5
  69. package/dist/standalone/.next/server/app/apps/[appId]/page.js.nft.json +0 -1
  70. package/dist/standalone/.next/server/app/apps/[appId]/page_client-reference-manifest.js +0 -2
  71. package/dist/standalone/.next/server/app/apps/[appId]/settings/page/app-paths-manifest.json +0 -3
  72. package/dist/standalone/.next/server/app/apps/[appId]/settings/page/build-manifest.json +0 -18
  73. package/dist/standalone/.next/server/app/apps/[appId]/settings/page/next-font-manifest.json +0 -12
  74. package/dist/standalone/.next/server/app/apps/[appId]/settings/page/react-loadable-manifest.json +0 -1
  75. package/dist/standalone/.next/server/app/apps/[appId]/settings/page/server-reference-manifest.json +0 -4
  76. package/dist/standalone/.next/server/app/apps/[appId]/settings/page.js +0 -17
  77. package/dist/standalone/.next/server/app/apps/[appId]/settings/page.js.map +0 -5
  78. package/dist/standalone/.next/server/app/apps/[appId]/settings/page.js.nft.json +0 -1
  79. package/dist/standalone/.next/server/app/apps/[appId]/settings/page_client-reference-manifest.js +0 -2
  80. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page/app-paths-manifest.json +0 -3
  81. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page/build-manifest.json +0 -18
  82. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page/next-font-manifest.json +0 -12
  83. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page/react-loadable-manifest.json +0 -1
  84. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page/server-reference-manifest.json +0 -4
  85. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page.js +0 -17
  86. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page.js.map +0 -5
  87. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page.js.nft.json +0 -1
  88. package/dist/standalone/.next/server/app/apps/[appId]/threads/[threadId]/page_client-reference-manifest.js +0 -2
  89. package/dist/standalone/.next/server/app/favicon.ico/route/app-paths-manifest.json +0 -3
  90. package/dist/standalone/.next/server/app/favicon.ico/route/build-manifest.json +0 -11
  91. package/dist/standalone/.next/server/app/favicon.ico/route.js +0 -7
  92. package/dist/standalone/.next/server/app/favicon.ico/route.js.map +0 -5
  93. package/dist/standalone/.next/server/app/favicon.ico/route.js.nft.json +0 -1
  94. package/dist/standalone/.next/server/app/favicon.ico.body +0 -0
  95. package/dist/standalone/.next/server/app/favicon.ico.meta +0 -1
  96. package/dist/standalone/.next/server/app/index.html +0 -1
  97. package/dist/standalone/.next/server/app/index.meta +0 -14
  98. package/dist/standalone/.next/server/app/index.rsc +0 -26
  99. package/dist/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +0 -9
  100. package/dist/standalone/.next/server/app/index.segments/_full.segment.rsc +0 -26
  101. package/dist/standalone/.next/server/app/index.segments/_head.segment.rsc +0 -8
  102. package/dist/standalone/.next/server/app/index.segments/_index.segment.rsc +0 -10
  103. package/dist/standalone/.next/server/app/index.segments/_tree.segment.rsc +0 -5
  104. package/dist/standalone/.next/server/app/page/app-paths-manifest.json +0 -3
  105. package/dist/standalone/.next/server/app/page/build-manifest.json +0 -18
  106. package/dist/standalone/.next/server/app/page/next-font-manifest.json +0 -12
  107. package/dist/standalone/.next/server/app/page/react-loadable-manifest.json +0 -1
  108. package/dist/standalone/.next/server/app/page/server-reference-manifest.json +0 -4
  109. package/dist/standalone/.next/server/app/page.js +0 -16
  110. package/dist/standalone/.next/server/app/page.js.map +0 -5
  111. package/dist/standalone/.next/server/app/page.js.nft.json +0 -1
  112. package/dist/standalone/.next/server/app/page_client-reference-manifest.js +0 -2
  113. package/dist/standalone/.next/server/app-paths-manifest.json +0 -10
  114. package/dist/standalone/.next/server/chunks/32a5c_next_0375a1f1._.js +0 -17
  115. package/dist/standalone/.next/server/chunks/[root-of-the-server]__5f8f2b74._.js +0 -3
  116. package/dist/standalone/.next/server/chunks/[root-of-the-server]__7970807c._.js +0 -7
  117. package/dist/standalone/.next/server/chunks/[root-of-the-server]__a0f47697._.js +0 -28
  118. package/dist/standalone/.next/server/chunks/[root-of-the-server]__b89b5a39._.js +0 -3
  119. package/dist/standalone/.next/server/chunks/[turbopack]_runtime.js +0 -770
  120. package/dist/standalone/.next/server/chunks/apps_web__next-internal_server_app_api_[[___route]]_route_actions_ad756856.js +0 -3
  121. package/dist/standalone/.next/server/chunks/apps_web__next-internal_server_app_favicon_ico_route_actions_63c3b0d9.js +0 -3
  122. package/dist/standalone/.next/server/chunks/ssr/32a5c_next_dist_c1a879d9._.js +0 -4
  123. package/dist/standalone/.next/server/chunks/ssr/32a5c_next_dist_c1fdfc17._.js +0 -3
  124. package/dist/standalone/.next/server/chunks/ssr/32a5c_next_dist_client_components_9085e245._.js +0 -3
  125. package/dist/standalone/.next/server/chunks/ssr/32a5c_next_dist_client_components_builtin_forbidden_3bc2a141.js +0 -3
  126. package/dist/standalone/.next/server/chunks/ssr/32a5c_next_dist_client_components_builtin_global-error_4bb26d7f.js +0 -3
  127. package/dist/standalone/.next/server/chunks/ssr/32a5c_next_dist_client_components_builtin_unauthorized_5c95c9e3.js +0 -3
  128. package/dist/standalone/.next/server/chunks/ssr/32a5c_next_dist_esm_af731943._.js +0 -6
  129. package/dist/standalone/.next/server/chunks/ssr/32a5c_next_dist_esm_build_templates_app-page_5d311e9f.js +0 -4
  130. package/dist/standalone/.next/server/chunks/ssr/37f04__next-internal_server_app_apps_[appId]_threads_[threadId]_page_actions_0a164142.js +0 -3
  131. package/dist/standalone/.next/server/chunks/ssr/8eb43_sonner_dist_index_mjs_a249e53a._.js +0 -3
  132. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__15021a09._.js +0 -3
  133. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__1764fab0._.js +0 -3
  134. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__1d8f92d3._.js +0 -3
  135. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__277f3037._.js +0 -3
  136. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__379bd934._.js +0 -3
  137. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__42df4b63._.js +0 -3
  138. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__5064350d._.js +0 -3
  139. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__659dbfe7._.js +0 -4
  140. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__80ea63f6._.js +0 -4
  141. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__9f3ff72e._.js +0 -3
  142. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__b6cee269._.js +0 -3
  143. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__e55c02ca._.js +0 -3
  144. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__f7807403._.js +0 -3
  145. package/dist/standalone/.next/server/chunks/ssr/[turbopack]_runtime.js +0 -770
  146. package/dist/standalone/.next/server/chunks/ssr/_1db4c18c._.js +0 -4
  147. package/dist/standalone/.next/server/chunks/ssr/_203f0b29._.js +0 -7
  148. package/dist/standalone/.next/server/chunks/ssr/_289820d0._.js +0 -3
  149. package/dist/standalone/.next/server/chunks/ssr/_442031f8._.js +0 -7
  150. package/dist/standalone/.next/server/chunks/ssr/_4b4df737._.js +0 -4
  151. package/dist/standalone/.next/server/chunks/ssr/_5066b883._.js +0 -4
  152. package/dist/standalone/.next/server/chunks/ssr/_70dfbe56._.js +0 -3
  153. package/dist/standalone/.next/server/chunks/ssr/_8c0bfb07._.js +0 -3
  154. package/dist/standalone/.next/server/chunks/ssr/_b00f40b3._.js +0 -3
  155. package/dist/standalone/.next/server/chunks/ssr/_d81226f8._.js +0 -4
  156. package/dist/standalone/.next/server/chunks/ssr/_e5c457a7._.js +0 -3
  157. package/dist/standalone/.next/server/chunks/ssr/_fce9eb14._.js +0 -6
  158. package/dist/standalone/.next/server/chunks/ssr/apps_web__next-internal_server_app__global-error_page_actions_e7650f86.js +0 -3
  159. package/dist/standalone/.next/server/chunks/ssr/apps_web__next-internal_server_app__not-found_page_actions_3df07a96.js +0 -3
  160. package/dist/standalone/.next/server/chunks/ssr/apps_web__next-internal_server_app_apps_[appId]_page_actions_3e495976.js +0 -3
  161. package/dist/standalone/.next/server/chunks/ssr/apps_web__next-internal_server_app_apps_[appId]_settings_page_actions_e98061b7.js +0 -3
  162. package/dist/standalone/.next/server/chunks/ssr/apps_web__next-internal_server_app_page_actions_a0623280.js +0 -3
  163. package/dist/standalone/.next/server/chunks/ssr/apps_web_app_apps_[appId]_layout_tsx_4c06ec7f._.js +0 -3
  164. package/dist/standalone/.next/server/chunks/ssr/apps_web_app_apps_[appId]_page_tsx_15e4fa55._.js +0 -3
  165. package/dist/standalone/.next/server/chunks/ssr/apps_web_app_apps_[appId]_settings_page_tsx_c072e295._.js +0 -3
  166. package/dist/standalone/.next/server/chunks/ssr/apps_web_app_apps_[appId]_threads_[threadId]_page_tsx_7dd7d764._.js +0 -39
  167. package/dist/standalone/.next/server/chunks/ssr/apps_web_app_e92ffe16._.js +0 -3
  168. package/dist/standalone/.next/server/chunks/ssr/apps_web_app_page_tsx_66bf978b._.js +0 -3
  169. package/dist/standalone/.next/server/chunks/ssr/apps_web_components_ui_9822aec4._.js +0 -3
  170. package/dist/standalone/.next/server/chunks/ssr/apps_web_components_ui_alert-dialog_tsx_9188904e._.js +0 -9
  171. package/dist/standalone/.next/server/chunks/ssr/apps_web_components_ui_c8132c43._.js +0 -9
  172. package/dist/standalone/.next/server/chunks/ssr/apps_web_components_ui_card_tsx_2c0359d4._.js +0 -3
  173. package/dist/standalone/.next/server/chunks/ssr/apps_web_components_ui_cbe5b2b9._.js +0 -3
  174. package/dist/standalone/.next/server/chunks/ssr/apps_web_components_ui_cc5b288d._.js +0 -3
  175. package/dist/standalone/.next/server/chunks/ssr/node_modules__bun_2e4b1ed0._.js +0 -3
  176. package/dist/standalone/.next/server/chunks/ssr/node_modules__bun_4bd60410._.js +0 -6
  177. package/dist/standalone/.next/server/chunks/ssr/node_modules__bun_930fb349._.js +0 -3
  178. package/dist/standalone/.next/server/chunks/ssr/node_modules__bun_d2520564._.js +0 -3
  179. package/dist/standalone/.next/server/functions-config-manifest.json +0 -4
  180. package/dist/standalone/.next/server/middleware-build-manifest.js +0 -22
  181. package/dist/standalone/.next/server/middleware-manifest.json +0 -6
  182. package/dist/standalone/.next/server/next-font-manifest.js +0 -1
  183. package/dist/standalone/.next/server/next-font-manifest.json +0 -32
  184. package/dist/standalone/.next/server/pages/404.html +0 -1
  185. package/dist/standalone/.next/server/pages/500.html +0 -2
  186. package/dist/standalone/.next/server/pages-manifest.json +0 -4
  187. package/dist/standalone/.next/server/server-reference-manifest.js +0 -1
  188. package/dist/standalone/.next/server/server-reference-manifest.json +0 -5
  189. package/dist/standalone/.next/static/chunks/001d990e82d317e7.js +0 -1
  190. package/dist/standalone/.next/static/chunks/26aa014f0977bc3a.js +0 -4
  191. package/dist/standalone/.next/static/chunks/3468e573c929d9d3.js +0 -1
  192. package/dist/standalone/.next/static/chunks/3815bbfffdbb534d.js +0 -1
  193. package/dist/standalone/.next/static/chunks/3c1f17874396f056.js +0 -1
  194. package/dist/standalone/.next/static/chunks/5521918d58602ba4.css +0 -4
  195. package/dist/standalone/.next/static/chunks/61ce30fe62669a20.js +0 -1
  196. package/dist/standalone/.next/static/chunks/6a4ccd90d00f8188.js +0 -2
  197. package/dist/standalone/.next/static/chunks/6de1dc14b2653311.js +0 -2
  198. package/dist/standalone/.next/static/chunks/6ee1158d12a0c765.js +0 -1
  199. package/dist/standalone/.next/static/chunks/8bd29684c211a1e1.js +0 -37
  200. package/dist/standalone/.next/static/chunks/8eae4355671b488f.js +0 -1
  201. package/dist/standalone/.next/static/chunks/8ef339e3fd7a82de.js +0 -1
  202. package/dist/standalone/.next/static/chunks/a6dad97d9634a72d.js +0 -1
  203. package/dist/standalone/.next/static/chunks/ab703521ea4f2141.js +0 -1
  204. package/dist/standalone/.next/static/chunks/b337946fdc3c17b3.js +0 -1
  205. package/dist/standalone/.next/static/chunks/b46c6c394477214a.js +0 -1
  206. package/dist/standalone/.next/static/chunks/b8bc41a0b408222e.js +0 -5
  207. package/dist/standalone/.next/static/chunks/bbf59b867827b224.js +0 -7
  208. package/dist/standalone/.next/static/chunks/c416de6f3efbbe15.js +0 -7
  209. package/dist/standalone/.next/static/chunks/d70eda393c3966c3.js +0 -1
  210. package/dist/standalone/.next/static/chunks/f8e57df1af00077e.js +0 -5
  211. package/dist/standalone/.next/static/chunks/turbopack-e09224df42d3769a.js +0 -3
  212. package/dist/standalone/.next/static/media/13bf9871fe164e7f-s.f2220059.woff2 +0 -0
  213. package/dist/standalone/.next/static/media/3fe682a82f50d426-s.23358719.woff2 +0 -0
  214. package/dist/standalone/.next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
  215. package/dist/standalone/.next/static/media/70bc3e132a0a741e-s.p.15008bfb.woff2 +0 -0
  216. package/dist/standalone/.next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
  217. package/dist/standalone/.next/static/media/71b036adf157cdcf-s.bd5f4d11.woff2 +0 -0
  218. package/dist/standalone/.next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
  219. package/dist/standalone/.next/static/media/89b21bb081cb7469-s.51c18f09.woff2 +0 -0
  220. package/dist/standalone/.next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
  221. package/dist/standalone/.next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
  222. package/dist/standalone/.next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
  223. package/dist/standalone/.next/static/media/cc545e633e20c56d-s.f6f1950f.woff2 +0 -0
  224. package/dist/standalone/.next/static/media/favicon.0b3bf435.ico +0 -0
  225. package/dist/standalone/.next/static/p6HYmiCvyNSugdZfDkX0R/_buildManifest.js +0 -11
  226. package/dist/standalone/.next/static/p6HYmiCvyNSugdZfDkX0R/_clientMiddlewareManifest.json +0 -1
  227. package/dist/standalone/.next/static/p6HYmiCvyNSugdZfDkX0R/_ssgManifest.js +0 -1
  228. package/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  229. package/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  230. package/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  231. package/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  232. package/dist/standalone/components/apps-table.tsx +0 -274
  233. package/dist/standalone/components.json +0 -24
  234. package/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  235. package/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  236. package/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  237. package/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  238. package/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  239. package/dist/standalone/dist/standalone/components.json +0 -24
  240. package/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  241. package/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  242. package/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  243. package/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  244. package/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  245. package/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  246. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  247. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  248. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  249. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  250. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  251. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  252. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  253. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  254. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  255. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  256. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  257. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  258. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  259. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  260. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  261. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  262. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  263. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  264. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  265. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  266. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  267. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  268. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  269. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  270. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  271. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  272. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  273. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  274. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  275. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  276. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  277. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  278. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  279. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  280. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  281. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  282. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  283. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  284. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  285. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  286. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  287. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  288. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/layout.tsx +0 -3
  289. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/page.tsx +0 -238
  290. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/settings/page.tsx +0 -224
  291. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/app/apps/[appId]/threads/[threadId]/page.tsx +0 -283
  292. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components/apps-table.tsx +0 -274
  293. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/components.json +0 -24
  294. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/package.json +0 -66
  295. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  296. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/package.json +0 -65
  297. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  298. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/package.json +0 -65
  299. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  300. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/package.json +0 -65
  301. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  302. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/package.json +0 -65
  303. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  304. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/package.json +0 -66
  305. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  306. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/package.json +0 -66
  307. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  308. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/package.json +0 -66
  309. package/dist/standalone/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  310. package/dist/standalone/dist/standalone/dist/standalone/package.json +0 -66
  311. package/dist/standalone/dist/standalone/dist/standalone/tsconfig.json +0 -34
  312. package/dist/standalone/dist/standalone/package.json +0 -66
  313. package/dist/standalone/dist/standalone/tsconfig.json +0 -34
  314. package/dist/standalone/package.json +0 -66
  315. package/dist/standalone/public/file.svg +0 -1
  316. package/dist/standalone/public/globe.svg +0 -1
  317. package/dist/standalone/public/next.svg +0 -1
  318. package/dist/standalone/public/vercel.svg +0 -1
  319. package/dist/standalone/public/window.svg +0 -1
  320. package/dist/standalone/server.js +0 -44
  321. package/dist/standalone/tsconfig.json +0 -34
package/dist/index.js ADDED
@@ -0,0 +1,609 @@
1
+ // src/db.ts
2
+ import path from "path";
3
+ import fs from "fs";
4
+ var DB_DIR = path.join(process.cwd(), ".ailog");
5
+ var INDEX_PATH = path.join(DB_DIR, "index.json");
6
+ var RUNS_DIR = path.join(DB_DIR, "runs");
7
+ var BLOBS_DIR = path.join(DB_DIR, "blobs");
8
+ var AILOG_PORT = process.env.AILOG_PORT ? parseInt(process.env.AILOG_PORT) : 4985;
9
+ var BLOB_THRESHOLD = 16 * 1024;
10
+ var notifyServer = (event, runId) => {
11
+ notifyServerAsync(event, runId);
12
+ };
13
+ var notifyServerAsync = async (event, runId) => {
14
+ try {
15
+ await fetch(`http://localhost:${AILOG_PORT}/api/notify`, {
16
+ method: "POST",
17
+ headers: { "Content-Type": "application/json" },
18
+ body: JSON.stringify({
19
+ event,
20
+ timestamp: Date.now(),
21
+ dbPath: INDEX_PATH,
22
+ runId: runId ?? null
23
+ })
24
+ });
25
+ } catch {
26
+ }
27
+ };
28
+ var generateRunId = () => {
29
+ const now = /* @__PURE__ */ new Date();
30
+ const timestamp = now.toISOString().replace(/[-:T.Z]/g, "").slice(0, 17);
31
+ const uniqueId = crypto.randomUUID().slice(0, 8);
32
+ return `${timestamp}-${uniqueId}`;
33
+ };
34
+ var EMPTY_INDEX = () => ({
35
+ version: 1,
36
+ runs: [],
37
+ threads: []
38
+ });
39
+ var normalizeIndex = (raw) => ({
40
+ version: 1,
41
+ runs: raw.runs ?? [],
42
+ threads: raw.threads ?? []
43
+ });
44
+ var ensureGitignore = () => {
45
+ const gitignorePath = path.join(process.cwd(), ".gitignore");
46
+ if (!fs.existsSync(gitignorePath)) return;
47
+ const content = fs.readFileSync(gitignorePath, "utf-8");
48
+ const alreadyIgnored = content.split("\n").some((line) => line.trim() === ".ailog" || line.trim() === ".ailog/");
49
+ if (!alreadyIgnored) {
50
+ const next = content.endsWith("\n") ? `${content}.ailog
51
+ ` : `${content}
52
+ .ailog
53
+ `;
54
+ fs.writeFileSync(gitignorePath, next);
55
+ }
56
+ };
57
+ var ensureLayout = () => {
58
+ const isFirstRun = !fs.existsSync(DB_DIR);
59
+ fs.mkdirSync(RUNS_DIR, { recursive: true });
60
+ fs.mkdirSync(BLOBS_DIR, { recursive: true });
61
+ if (isFirstRun) ensureGitignore();
62
+ };
63
+ var atomicWrite = (filePath, data) => {
64
+ ensureLayout();
65
+ const tmp = `${filePath}.${process.pid}.${Date.now()}.${Math.random().toString(36).slice(2, 6)}.tmp`;
66
+ fs.writeFileSync(tmp, data);
67
+ fs.renameSync(tmp, filePath);
68
+ };
69
+ var safeReadJson = (filePath, fallback) => {
70
+ try {
71
+ if (!fs.existsSync(filePath)) return fallback;
72
+ return JSON.parse(fs.readFileSync(filePath, "utf-8"));
73
+ } catch {
74
+ return fallback;
75
+ }
76
+ };
77
+ var blobPathFor = (stepId, field) => path.join("blobs", `${stepId}-${field}`);
78
+ var writeBlob = (relPath, content) => {
79
+ ensureLayout();
80
+ atomicWrite(path.join(DB_DIR, relPath), content);
81
+ };
82
+ var externalizeIfLarge = (value, stepId, field) => {
83
+ if (value === void 0 || value === null) return null;
84
+ if (value.length < BLOB_THRESHOLD) return value;
85
+ const rel = blobPathFor(stepId, field);
86
+ writeBlob(rel, value);
87
+ return { $blob: rel };
88
+ };
89
+ var indexCache = null;
90
+ var runCache = /* @__PURE__ */ new Map();
91
+ var remoteDbDir = null;
92
+ var currentDbDir = () => remoteDbDir ?? DB_DIR;
93
+ var currentIndexPath = () => path.join(currentDbDir(), "index.json");
94
+ var currentRunPath = (runId) => path.join(currentDbDir(), "runs", `${runId}.json`);
95
+ var loadIndex = () => {
96
+ if (indexCache) return indexCache;
97
+ indexCache = normalizeIndex(
98
+ safeReadJson(currentIndexPath(), EMPTY_INDEX())
99
+ );
100
+ return indexCache;
101
+ };
102
+ var persistIndex = () => {
103
+ if (!indexCache) return;
104
+ atomicWrite(INDEX_PATH, JSON.stringify(indexCache, null, 2));
105
+ };
106
+ var loadRunFile = (runId) => {
107
+ const cached = runCache.get(runId);
108
+ if (cached) return cached;
109
+ const file = safeReadJson(currentRunPath(runId), null);
110
+ if (!file) return null;
111
+ runCache.set(runId, file);
112
+ return file;
113
+ };
114
+ var persistRunFile = (runId, file) => {
115
+ runCache.set(runId, file);
116
+ atomicWrite(path.join(RUNS_DIR, `${runId}.json`), JSON.stringify(file));
117
+ };
118
+ var stepIsInProgress = (s) => s.duration_ms === null && !s.error;
119
+ var extractFirstMessage = (rawInput) => {
120
+ try {
121
+ const parsed = JSON.parse(rawInput);
122
+ const messages = parsed?.prompt;
123
+ if (!Array.isArray(messages)) return null;
124
+ let lastUser;
125
+ for (let i = messages.length - 1; i >= 0; i--) {
126
+ const m = messages[i];
127
+ if (m?.role === "user") {
128
+ lastUser = m;
129
+ break;
130
+ }
131
+ }
132
+ if (!lastUser) return null;
133
+ const content = lastUser.content;
134
+ let text = "";
135
+ if (typeof content === "string") {
136
+ text = content;
137
+ } else if (Array.isArray(content)) {
138
+ const part = content.find(
139
+ (p) => p?.type === "text"
140
+ );
141
+ text = part?.text ?? "";
142
+ }
143
+ if (!text) return null;
144
+ return text.length > 60 ? text.slice(0, 60) + "..." : text;
145
+ } catch {
146
+ return null;
147
+ }
148
+ };
149
+ var recomputeSummary = (file) => {
150
+ const firstStep = file.steps[0];
151
+ const hasError = file.steps.some((s) => s.error !== null);
152
+ const isInProgress = file.steps.some(stepIsInProgress);
153
+ const firstMessage = firstStep ? extractFirstMessage(firstStep.input) : null;
154
+ return {
155
+ id: file.run.id,
156
+ started_at: file.run.started_at,
157
+ function_id: file.run.function_id,
158
+ metadata: file.run.metadata,
159
+ thread_id: file.run.thread_id,
160
+ step_count: file.steps.length,
161
+ has_error: hasError,
162
+ is_in_progress: isInProgress,
163
+ first_message: firstMessage,
164
+ type: firstStep?.type ?? null
165
+ };
166
+ };
167
+ var upsertThread = (threadId, runStartedAt) => {
168
+ const index = loadIndex();
169
+ const existing = index.threads.find((t) => t.id === threadId);
170
+ if (existing) {
171
+ if (new Date(runStartedAt) > new Date(existing.updated_at)) {
172
+ existing.updated_at = runStartedAt;
173
+ }
174
+ existing.run_count += 1;
175
+ } else {
176
+ index.threads.push({
177
+ id: threadId,
178
+ created_at: runStartedAt,
179
+ updated_at: runStartedAt,
180
+ run_count: 1
181
+ });
182
+ }
183
+ };
184
+ var upsertSummary = (file) => {
185
+ const index = loadIndex();
186
+ const summary = recomputeSummary(file);
187
+ const i = index.runs.findIndex((r) => r.id === summary.id);
188
+ if (i === -1) {
189
+ index.runs.push(summary);
190
+ } else {
191
+ index.runs[i] = summary;
192
+ }
193
+ };
194
+ var createRun = async (id, functionId, metadata, threadId) => {
195
+ ensureLayout();
196
+ const existing = loadRunFile(id);
197
+ if (existing) return existing.run;
198
+ const startedAt = (/* @__PURE__ */ new Date()).toISOString();
199
+ const run = {
200
+ id,
201
+ started_at: startedAt,
202
+ function_id: functionId ?? null,
203
+ metadata: metadata && typeof metadata === "object" ? JSON.stringify(metadata) : null,
204
+ thread_id: threadId ?? null
205
+ };
206
+ const file = { version: 1, run, steps: [] };
207
+ persistRunFile(id, file);
208
+ upsertSummary(file);
209
+ if (threadId) upsertThread(threadId, startedAt);
210
+ persistIndex();
211
+ notifyServer("run", id);
212
+ return run;
213
+ };
214
+ var createStep = async (step) => {
215
+ ensureLayout();
216
+ const file = loadRunFile(step.run_id);
217
+ if (!file) {
218
+ return 0;
219
+ }
220
+ const stepNumber = file.steps.length + 1;
221
+ const newStep = {
222
+ ...step,
223
+ step_number: stepNumber,
224
+ duration_ms: null,
225
+ output: null,
226
+ usage: null,
227
+ error: null,
228
+ raw_request: null,
229
+ raw_response: null,
230
+ raw_chunks: null
231
+ };
232
+ file.steps.push(newStep);
233
+ persistRunFile(file.run.id, file);
234
+ upsertSummary(file);
235
+ persistIndex();
236
+ notifyServer("step", file.run.id);
237
+ return stepNumber;
238
+ };
239
+ var updateStepResult = async (stepId, result) => {
240
+ let file;
241
+ let step;
242
+ for (const cached of runCache.values()) {
243
+ const match = cached.steps.find((s) => s.id === stepId);
244
+ if (match) {
245
+ file = cached;
246
+ step = match;
247
+ break;
248
+ }
249
+ }
250
+ if (!file || !step) {
251
+ for (const summary of loadIndex().runs) {
252
+ const candidate = loadRunFile(summary.id);
253
+ if (!candidate) continue;
254
+ const match = candidate.steps.find((s) => s.id === stepId);
255
+ if (match) {
256
+ file = candidate;
257
+ step = match;
258
+ break;
259
+ }
260
+ }
261
+ }
262
+ if (!file || !step) return;
263
+ step.duration_ms = result.duration_ms;
264
+ step.usage = result.usage ?? null;
265
+ step.error = result.error ?? null;
266
+ step.output = externalizeIfLarge(result.output, stepId, "output");
267
+ step.raw_request = externalizeIfLarge(
268
+ result.raw_request,
269
+ stepId,
270
+ "raw_request"
271
+ );
272
+ step.raw_response = externalizeIfLarge(
273
+ result.raw_response,
274
+ stepId,
275
+ "raw_response"
276
+ );
277
+ step.raw_chunks = externalizeIfLarge(
278
+ result.raw_chunks,
279
+ stepId,
280
+ "raw_chunks"
281
+ );
282
+ persistRunFile(file.run.id, file);
283
+ upsertSummary(file);
284
+ persistIndex();
285
+ notifyServer("step-update", file.run.id);
286
+ };
287
+
288
+ // src/middleware.ts
289
+ var generateId = () => crypto.randomUUID();
290
+ var activeSteps = /* @__PURE__ */ new Map();
291
+ var signalHandlersRegistered = false;
292
+ var registerSignalHandlers = () => {
293
+ if (signalHandlersRegistered) return;
294
+ signalHandlersRegistered = true;
295
+ const cleanup = async () => {
296
+ if (activeSteps.size === 0) return;
297
+ const promises = Array.from(activeSteps.entries()).map(
298
+ async ([stepId, data]) => {
299
+ const durationMs = Date.now() - data.startTime;
300
+ await updateStepResult(stepId, {
301
+ duration_ms: durationMs,
302
+ output: JSON.stringify(data.collectedOutput),
303
+ usage: null,
304
+ error: "Request aborted",
305
+ raw_request: data.request && typeof data.request === "object" && "body" in data.request ? JSON.stringify(data.request.body) : null,
306
+ raw_response: JSON.stringify(data.fullStreamChunks),
307
+ raw_chunks: JSON.stringify(data.rawChunks)
308
+ });
309
+ }
310
+ );
311
+ await Promise.all(promises);
312
+ await notifyServerAsync("step-update");
313
+ };
314
+ process.on("SIGINT", () => {
315
+ cleanup().then(() => process.exit(130));
316
+ });
317
+ process.on("SIGTERM", () => {
318
+ cleanup().then(() => process.exit(143));
319
+ });
320
+ };
321
+ var aiSdkMiddleware = (options = {}) => {
322
+ if (process.env.NODE_ENV === "production") {
323
+ throw new Error(
324
+ "ailog should not be used in production. Remove aiSdkMiddleware from your model configuration for production builds."
325
+ );
326
+ }
327
+ registerSignalHandlers();
328
+ const runId = options.runId ?? generateRunId();
329
+ let runCreated = false;
330
+ const ensureRunCreated = async () => {
331
+ if (!runCreated) {
332
+ await createRun(
333
+ runId,
334
+ options.functionId,
335
+ options.metadata,
336
+ options.threadId
337
+ );
338
+ runCreated = true;
339
+ }
340
+ };
341
+ return {
342
+ specificationVersion: "v4",
343
+ wrapGenerate: async ({ doGenerate, params, model }) => {
344
+ const startTime = Date.now();
345
+ const stepId = generateId();
346
+ await ensureRunCreated();
347
+ await createStep({
348
+ id: stepId,
349
+ run_id: runId,
350
+ type: "generate",
351
+ model_id: model.modelId,
352
+ provider: model.provider,
353
+ started_at: (/* @__PURE__ */ new Date()).toISOString(),
354
+ input: JSON.stringify({
355
+ prompt: params.prompt,
356
+ tools: params.tools,
357
+ toolChoice: params.toolChoice,
358
+ maxOutputTokens: params.maxOutputTokens,
359
+ temperature: params.temperature,
360
+ topP: params.topP,
361
+ topK: params.topK,
362
+ presencePenalty: params.presencePenalty,
363
+ frequencyPenalty: params.frequencyPenalty,
364
+ seed: params.seed,
365
+ responseFormat: params.responseFormat
366
+ }),
367
+ provider_options: params.providerOptions ? JSON.stringify(params.providerOptions) : null
368
+ });
369
+ try {
370
+ const result = await doGenerate();
371
+ const durationMs = Date.now() - startTime;
372
+ await updateStepResult(stepId, {
373
+ duration_ms: durationMs,
374
+ output: JSON.stringify({
375
+ content: result.content,
376
+ finishReason: result.finishReason,
377
+ response: result.response
378
+ }),
379
+ usage: result.usage ? JSON.stringify(result.usage) : null,
380
+ error: null,
381
+ raw_request: result.request?.body ? JSON.stringify(result.request.body) : null,
382
+ raw_response: result.response?.body ? JSON.stringify(result.response.body) : null
383
+ });
384
+ return result;
385
+ } catch (error) {
386
+ const durationMs = Date.now() - startTime;
387
+ await updateStepResult(stepId, {
388
+ duration_ms: durationMs,
389
+ output: null,
390
+ usage: null,
391
+ error: error instanceof Error ? error.message : String(error),
392
+ raw_request: null,
393
+ raw_response: null
394
+ });
395
+ throw error;
396
+ }
397
+ },
398
+ wrapStream: async ({ doStream, params, model }) => {
399
+ const startTime = Date.now();
400
+ const stepId = generateId();
401
+ await ensureRunCreated();
402
+ const userRequestedRawChunks = params.includeRawChunks === true;
403
+ params.includeRawChunks = true;
404
+ await createStep({
405
+ id: stepId,
406
+ run_id: runId,
407
+ type: "stream",
408
+ model_id: model.modelId,
409
+ provider: model.provider,
410
+ started_at: (/* @__PURE__ */ new Date()).toISOString(),
411
+ input: JSON.stringify({
412
+ prompt: params.prompt,
413
+ tools: params.tools,
414
+ toolChoice: params.toolChoice,
415
+ maxOutputTokens: params.maxOutputTokens,
416
+ temperature: params.temperature,
417
+ topP: params.topP,
418
+ topK: params.topK,
419
+ presencePenalty: params.presencePenalty,
420
+ frequencyPenalty: params.frequencyPenalty,
421
+ seed: params.seed,
422
+ responseFormat: params.responseFormat
423
+ }),
424
+ provider_options: params.providerOptions ? JSON.stringify(params.providerOptions) : null
425
+ });
426
+ try {
427
+ const { stream, request, response, ...rest } = await doStream();
428
+ const collectedOutput = {
429
+ textParts: [],
430
+ reasoningParts: [],
431
+ toolCalls: []
432
+ };
433
+ const currentText = /* @__PURE__ */ new Map();
434
+ const currentReasoning = /* @__PURE__ */ new Map();
435
+ const fullStreamChunks = [];
436
+ const rawChunks = [];
437
+ activeSteps.set(stepId, {
438
+ startTime,
439
+ collectedOutput,
440
+ request,
441
+ fullStreamChunks,
442
+ rawChunks
443
+ });
444
+ const transformStream = new TransformStream({
445
+ transform(chunk, controller) {
446
+ if (chunk.type === "raw") {
447
+ rawChunks.push(chunk.rawValue);
448
+ if (userRequestedRawChunks) {
449
+ controller.enqueue(chunk);
450
+ }
451
+ return;
452
+ }
453
+ fullStreamChunks.push(chunk);
454
+ switch (chunk.type) {
455
+ case "text-start":
456
+ currentText.set(chunk.id, "");
457
+ break;
458
+ case "text-delta":
459
+ currentText.set(
460
+ chunk.id,
461
+ (currentText.get(chunk.id) ?? "") + chunk.delta
462
+ );
463
+ break;
464
+ case "text-end":
465
+ collectedOutput.textParts.push({
466
+ id: chunk.id,
467
+ text: currentText.get(chunk.id) ?? ""
468
+ });
469
+ break;
470
+ case "reasoning-start":
471
+ currentReasoning.set(chunk.id, "");
472
+ break;
473
+ case "reasoning-delta":
474
+ currentReasoning.set(
475
+ chunk.id,
476
+ (currentReasoning.get(chunk.id) ?? "") + chunk.delta
477
+ );
478
+ break;
479
+ case "reasoning-end":
480
+ collectedOutput.reasoningParts.push({
481
+ id: chunk.id,
482
+ text: currentReasoning.get(chunk.id) ?? ""
483
+ });
484
+ break;
485
+ case "tool-call":
486
+ collectedOutput.toolCalls.push(chunk);
487
+ break;
488
+ case "finish":
489
+ collectedOutput.finishReason = chunk.finishReason;
490
+ collectedOutput.usage = chunk.usage;
491
+ break;
492
+ }
493
+ controller.enqueue(chunk);
494
+ },
495
+ async flush() {
496
+ activeSteps.delete(stepId);
497
+ const durationMs = Date.now() - startTime;
498
+ await updateStepResult(stepId, {
499
+ duration_ms: durationMs,
500
+ output: JSON.stringify(collectedOutput),
501
+ usage: collectedOutput.usage ? JSON.stringify(collectedOutput.usage) : null,
502
+ error: null,
503
+ raw_request: request?.body ? JSON.stringify(request.body) : null,
504
+ raw_response: JSON.stringify(fullStreamChunks),
505
+ raw_chunks: JSON.stringify(rawChunks)
506
+ });
507
+ },
508
+ // @ts-expect-error - cancel is valid per WHATWG Streams spec but missing from TS types
509
+ async cancel() {
510
+ activeSteps.delete(stepId);
511
+ const durationMs = Date.now() - startTime;
512
+ await updateStepResult(stepId, {
513
+ duration_ms: durationMs,
514
+ output: JSON.stringify(collectedOutput),
515
+ usage: collectedOutput.usage ? JSON.stringify(collectedOutput.usage) : null,
516
+ error: "Request aborted",
517
+ raw_request: request?.body ? JSON.stringify(request.body) : null,
518
+ raw_response: JSON.stringify(fullStreamChunks),
519
+ raw_chunks: JSON.stringify(rawChunks)
520
+ });
521
+ }
522
+ });
523
+ return {
524
+ stream: stream.pipeThrough(transformStream),
525
+ request,
526
+ response,
527
+ ...rest
528
+ };
529
+ } catch (error) {
530
+ activeSteps.delete(stepId);
531
+ const durationMs = Date.now() - startTime;
532
+ await updateStepResult(stepId, {
533
+ duration_ms: durationMs,
534
+ output: null,
535
+ usage: null,
536
+ error: error instanceof Error ? error.message : String(error),
537
+ raw_request: null,
538
+ raw_response: null,
539
+ raw_chunks: null
540
+ });
541
+ throw error;
542
+ }
543
+ }
544
+ };
545
+ };
546
+
547
+ // src/logger.ts
548
+ var generateId2 = () => crypto.randomUUID();
549
+ var serialize = (value) => {
550
+ if (value === void 0 || value === null) return null;
551
+ if (typeof value === "string") return value;
552
+ try {
553
+ return JSON.stringify(value);
554
+ } catch {
555
+ return String(value);
556
+ }
557
+ };
558
+ async function createLogger(options = {}) {
559
+ if (process.env.NODE_ENV === "production") {
560
+ throw new Error(
561
+ "ailog should not be used in production. Remove createLogger calls from your production builds."
562
+ );
563
+ }
564
+ const runId = options.runId ?? generateRunId();
565
+ await createRun(
566
+ runId,
567
+ options.functionId,
568
+ options.metadata,
569
+ options.threadId
570
+ );
571
+ return {
572
+ id: runId,
573
+ async step(input) {
574
+ const stepId = generateId2();
575
+ const startTime = Date.now();
576
+ await createStep({
577
+ id: stepId,
578
+ run_id: runId,
579
+ type: input.type ?? "generate",
580
+ model_id: input.modelId,
581
+ provider: input.provider ?? null,
582
+ started_at: (/* @__PURE__ */ new Date()).toISOString(),
583
+ input: serialize(input.input) ?? "null",
584
+ provider_options: serialize(input.providerOptions)
585
+ });
586
+ return {
587
+ id: stepId,
588
+ async end(result) {
589
+ const durationMs = Date.now() - startTime;
590
+ const errorMessage = result.error instanceof Error ? result.error.message : result.error !== void 0 && result.error !== null ? String(result.error) : null;
591
+ await updateStepResult(stepId, {
592
+ duration_ms: durationMs,
593
+ output: serialize(result.output),
594
+ usage: serialize(result.usage),
595
+ error: errorMessage,
596
+ raw_request: serialize(result.rawRequest),
597
+ raw_response: serialize(result.rawResponse),
598
+ raw_chunks: serialize(result.rawChunks)
599
+ });
600
+ }
601
+ };
602
+ }
603
+ };
604
+ }
605
+ export {
606
+ aiSdkMiddleware,
607
+ createLogger,
608
+ generateRunId
609
+ };