@ailog/cli 0.2.3 → 0.3.0

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 +115 -18
  4. package/bin/cli.js +9 -0
  5. package/dist/client/assets/index-BBTm7Mxn.js +160 -0
  6. package/dist/client/assets/index-x-B7u97h.css +1 -0
  7. package/dist/client/index.html +19 -0
  8. package/dist/index.d.ts +122 -0
  9. package/dist/index.js +681 -0
  10. package/dist/viewer/server.js +413 -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,681 @@
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 RUNS_DIR = () => path.join(DB_DIR, "runs");
6
+ var BLOBS_DIR = () => path.join(DB_DIR, "blobs");
7
+ var RUN_INDEX_DIR = () => path.join(DB_DIR, "index", "runs");
8
+ var THREAD_INDEX_DIR = () => path.join(DB_DIR, "index", "threads");
9
+ var PAGE_SIZE = 50;
10
+ var AILOG_PORT = process.env.AILOG_PORT ? parseInt(process.env.AILOG_PORT) : 4985;
11
+ var dirResolved = false;
12
+ var dirResolvePromise = null;
13
+ var resolveDbDir = async () => {
14
+ if (dirResolved) return;
15
+ if (!dirResolvePromise) {
16
+ dirResolvePromise = (async () => {
17
+ try {
18
+ const res = await fetch(
19
+ `http://localhost:${AILOG_PORT}/api/db-dir`
20
+ );
21
+ if (res.ok) {
22
+ const body = await res.json();
23
+ if (typeof body.dir === "string" && body.dir.length > 0) {
24
+ DB_DIR = body.dir;
25
+ }
26
+ }
27
+ } catch {
28
+ } finally {
29
+ dirResolved = true;
30
+ }
31
+ })();
32
+ }
33
+ await dirResolvePromise;
34
+ };
35
+ var BLOB_THRESHOLD = 16 * 1024;
36
+ var notifyServer = (event, runId) => {
37
+ notifyServerAsync(event, runId);
38
+ };
39
+ var notifyServerAsync = async (event, runId) => {
40
+ try {
41
+ await fetch(`http://localhost:${AILOG_PORT}/api/notify`, {
42
+ method: "POST",
43
+ headers: { "Content-Type": "application/json" },
44
+ body: JSON.stringify({
45
+ event,
46
+ timestamp: Date.now(),
47
+ runId: runId ?? null
48
+ })
49
+ });
50
+ } catch {
51
+ }
52
+ };
53
+ var digitTimestamp = (date) => date.toISOString().replace(/[-:T.Z]/g, "").slice(0, 17);
54
+ var generateRunId = () => {
55
+ const timestamp = digitTimestamp(/* @__PURE__ */ new Date());
56
+ const uniqueId = crypto.randomUUID().slice(0, 8);
57
+ return `${timestamp}-${uniqueId}`;
58
+ };
59
+ var ensureGitignore = () => {
60
+ const gitignorePath = path.join(process.cwd(), ".gitignore");
61
+ if (!fs.existsSync(gitignorePath)) return;
62
+ const content = fs.readFileSync(gitignorePath, "utf-8");
63
+ const alreadyIgnored = content.split("\n").some((line) => line.trim() === ".ailog" || line.trim() === ".ailog/");
64
+ if (!alreadyIgnored) {
65
+ const next = content.endsWith("\n") ? `${content}.ailog
66
+ ` : `${content}
67
+ .ailog
68
+ `;
69
+ fs.writeFileSync(gitignorePath, next);
70
+ }
71
+ };
72
+ var ensureLayout = () => {
73
+ const isFirstRun = !fs.existsSync(DB_DIR);
74
+ fs.mkdirSync(RUNS_DIR(), { recursive: true });
75
+ fs.mkdirSync(BLOBS_DIR(), { recursive: true });
76
+ fs.mkdirSync(RUN_INDEX_DIR(), { recursive: true });
77
+ fs.mkdirSync(THREAD_INDEX_DIR(), { recursive: true });
78
+ if (isFirstRun) ensureGitignore();
79
+ };
80
+ var atomicWrite = (filePath, data) => {
81
+ ensureLayout();
82
+ const tmp = `${filePath}.${process.pid}.${Date.now()}.${Math.random().toString(36).slice(2, 6)}.tmp`;
83
+ fs.writeFileSync(tmp, data);
84
+ fs.renameSync(tmp, filePath);
85
+ };
86
+ var safeReadJson = (filePath, fallback) => {
87
+ try {
88
+ if (!fs.existsSync(filePath)) return fallback;
89
+ return JSON.parse(fs.readFileSync(filePath, "utf-8"));
90
+ } catch {
91
+ return fallback;
92
+ }
93
+ };
94
+ var blobPathFor = (stepId, field) => path.join("blobs", `${stepId}-${field}`);
95
+ var writeBlob = (relPath, content) => {
96
+ ensureLayout();
97
+ atomicWrite(path.join(DB_DIR, relPath), content);
98
+ };
99
+ var externalizeIfLarge = (value, stepId, field) => {
100
+ if (value === void 0 || value === null) return null;
101
+ if (value.length < BLOB_THRESHOLD) return value;
102
+ const rel = blobPathFor(stepId, field);
103
+ writeBlob(rel, value);
104
+ return { $blob: rel };
105
+ };
106
+ var runCache = /* @__PURE__ */ new Map();
107
+ var pageCache = /* @__PURE__ */ new Map();
108
+ var PAGE_FILE_RE = /^\d{17}\.json$/;
109
+ var nextPageFilePath = (dir) => {
110
+ let nowMs = Date.now();
111
+ const files = listPageFiles(dir);
112
+ if (files.length > 0) {
113
+ const latestName = path.basename(files[files.length - 1], ".json");
114
+ const latestMs = parseDigitTimestamp(latestName);
115
+ if (Number.isFinite(latestMs) && latestMs >= nowMs) nowMs = latestMs + 1;
116
+ }
117
+ return path.join(dir, digitTimestamp(new Date(nowMs)) + ".json");
118
+ };
119
+ var parseDigitTimestamp = (s) => {
120
+ if (!/^\d{17}$/.test(s)) return NaN;
121
+ const iso = s.slice(0, 4) + "-" + s.slice(4, 6) + "-" + s.slice(6, 8) + "T" + s.slice(8, 10) + ":" + s.slice(10, 12) + ":" + s.slice(12, 14) + "." + s.slice(14, 17) + "Z";
122
+ return new Date(iso).getTime();
123
+ };
124
+ var listPageFiles = (dir) => {
125
+ let entries;
126
+ try {
127
+ entries = fs.readdirSync(dir);
128
+ } catch {
129
+ return [];
130
+ }
131
+ return entries.filter((n) => PAGE_FILE_RE.test(n)).sort().map((n) => path.join(dir, n));
132
+ };
133
+ var loadPage = (file) => {
134
+ const cached = pageCache.get(file);
135
+ if (cached) return cached;
136
+ const data = safeReadJson(file, []);
137
+ pageCache.set(file, data);
138
+ return data;
139
+ };
140
+ var writePage = (file, items) => {
141
+ atomicWrite(file, JSON.stringify(items));
142
+ pageCache.set(file, items);
143
+ };
144
+ var appendToLatestPage = (dir, item) => {
145
+ ensureLayout();
146
+ const files = listPageFiles(dir);
147
+ if (files.length === 0) {
148
+ writePage(nextPageFilePath(dir), [item]);
149
+ return;
150
+ }
151
+ const latest = files[files.length - 1];
152
+ const page = loadPage(latest);
153
+ if (page.length >= PAGE_SIZE) {
154
+ writePage(nextPageFilePath(dir), [item]);
155
+ } else {
156
+ writePage(latest, [...page, item]);
157
+ }
158
+ };
159
+ var updateInPlace = (dir, predicate, mutator) => {
160
+ const files = listPageFiles(dir).reverse();
161
+ for (const file of files) {
162
+ const page = loadPage(file);
163
+ const i = page.findIndex(predicate);
164
+ if (i === -1) continue;
165
+ const next = page.slice();
166
+ next[i] = mutator(page[i]);
167
+ writePage(file, next);
168
+ return true;
169
+ }
170
+ return false;
171
+ };
172
+ var loadRunFile = (runId) => {
173
+ const cached = runCache.get(runId);
174
+ if (cached) return cached;
175
+ const file = safeReadJson(
176
+ path.join(RUNS_DIR(), `${runId}.json`),
177
+ null
178
+ );
179
+ if (!file) return null;
180
+ runCache.set(runId, file);
181
+ return file;
182
+ };
183
+ var persistRunFile = (runId, file) => {
184
+ runCache.set(runId, file);
185
+ atomicWrite(path.join(RUNS_DIR(), `${runId}.json`), JSON.stringify(file));
186
+ };
187
+ var stepIsInProgress = (s) => s.duration_ms === null && !s.error;
188
+ var extractFirstMessage = (rawInput) => {
189
+ try {
190
+ const parsed = JSON.parse(rawInput);
191
+ const messages = parsed?.prompt;
192
+ if (!Array.isArray(messages)) return null;
193
+ let lastUser;
194
+ for (let i = messages.length - 1; i >= 0; i--) {
195
+ const m = messages[i];
196
+ if (m?.role === "user") {
197
+ lastUser = m;
198
+ break;
199
+ }
200
+ }
201
+ if (!lastUser) return null;
202
+ const content = lastUser.content;
203
+ let text = "";
204
+ if (typeof content === "string") {
205
+ text = content;
206
+ } else if (Array.isArray(content)) {
207
+ const part = content.find(
208
+ (p) => p?.type === "text"
209
+ );
210
+ text = part?.text ?? "";
211
+ }
212
+ if (!text) return null;
213
+ return text.length > 60 ? text.slice(0, 60) + "..." : text;
214
+ } catch {
215
+ return null;
216
+ }
217
+ };
218
+ var recomputeSummary = (file) => {
219
+ const firstStep = file.steps[0];
220
+ const hasError = file.steps.some((s) => s.error !== null);
221
+ const isInProgress = file.steps.some(stepIsInProgress);
222
+ const firstMessage = firstStep ? extractFirstMessage(firstStep.input) : null;
223
+ return {
224
+ id: file.run.id,
225
+ started_at: file.run.started_at,
226
+ function_id: file.run.function_id,
227
+ thread_id: file.run.thread_id,
228
+ step_count: file.steps.length,
229
+ has_error: hasError,
230
+ is_in_progress: isInProgress,
231
+ first_message: firstMessage,
232
+ type: firstStep?.type ?? null
233
+ };
234
+ };
235
+ var upsertThread = (threadId, runStartedAt, metadata) => {
236
+ const updated = updateInPlace(
237
+ THREAD_INDEX_DIR(),
238
+ (t) => t.id === threadId,
239
+ (existing) => ({
240
+ ...existing,
241
+ updated_at: new Date(runStartedAt) > new Date(existing.updated_at) ? runStartedAt : existing.updated_at,
242
+ run_count: existing.run_count + 1
243
+ })
244
+ );
245
+ if (updated) return;
246
+ appendToLatestPage(THREAD_INDEX_DIR(), {
247
+ id: threadId,
248
+ created_at: runStartedAt,
249
+ updated_at: runStartedAt,
250
+ run_count: 1,
251
+ metadata: metadata && typeof metadata === "object" ? JSON.stringify(metadata) : null
252
+ });
253
+ };
254
+ var upsertSummary = (file) => {
255
+ const summary = recomputeSummary(file);
256
+ const updated = updateInPlace(
257
+ RUN_INDEX_DIR(),
258
+ (s) => s.id === summary.id,
259
+ () => summary
260
+ );
261
+ if (updated) return;
262
+ appendToLatestPage(RUN_INDEX_DIR(), summary);
263
+ };
264
+ var createRun = async (id, functionId, threadId, metadata) => {
265
+ await resolveDbDir();
266
+ ensureLayout();
267
+ const existing = loadRunFile(id);
268
+ if (existing) return existing.run;
269
+ const resolvedThreadId = threadId ?? `auto-${crypto.randomUUID().slice(0, 8)}`;
270
+ const startedAt = (/* @__PURE__ */ new Date()).toISOString();
271
+ const run = {
272
+ id,
273
+ started_at: startedAt,
274
+ function_id: functionId ?? null,
275
+ thread_id: resolvedThreadId
276
+ };
277
+ const file = { version: 1, run, steps: [] };
278
+ persistRunFile(id, file);
279
+ upsertSummary(file);
280
+ upsertThread(resolvedThreadId, startedAt, metadata);
281
+ notifyServer("run", id);
282
+ return run;
283
+ };
284
+ var createStep = async (step) => {
285
+ await resolveDbDir();
286
+ ensureLayout();
287
+ const file = loadRunFile(step.run_id);
288
+ if (!file) {
289
+ return 0;
290
+ }
291
+ const stepNumber = file.steps.length + 1;
292
+ const newStep = {
293
+ ...step,
294
+ step_number: stepNumber,
295
+ duration_ms: null,
296
+ output: null,
297
+ usage: null,
298
+ error: null,
299
+ raw_request: null,
300
+ raw_response: null,
301
+ raw_chunks: null
302
+ };
303
+ file.steps.push(newStep);
304
+ persistRunFile(file.run.id, file);
305
+ upsertSummary(file);
306
+ notifyServer("step", file.run.id);
307
+ return stepNumber;
308
+ };
309
+ var updateStepResult = async (stepId, result) => {
310
+ await resolveDbDir();
311
+ let file;
312
+ let step;
313
+ for (const cached of runCache.values()) {
314
+ const match = cached.steps.find((s) => s.id === stepId);
315
+ if (match) {
316
+ file = cached;
317
+ step = match;
318
+ break;
319
+ }
320
+ }
321
+ if (!file || !step) {
322
+ for (const pageFile of listPageFiles(RUN_INDEX_DIR())) {
323
+ for (const summary of loadPage(pageFile)) {
324
+ const candidate = loadRunFile(summary.id);
325
+ if (!candidate) continue;
326
+ const match = candidate.steps.find((s) => s.id === stepId);
327
+ if (match) {
328
+ file = candidate;
329
+ step = match;
330
+ break;
331
+ }
332
+ }
333
+ if (file) break;
334
+ }
335
+ }
336
+ if (!file || !step) return;
337
+ step.duration_ms = result.duration_ms;
338
+ step.usage = result.usage ?? null;
339
+ step.error = result.error ?? null;
340
+ step.output = externalizeIfLarge(result.output, stepId, "output");
341
+ step.raw_request = externalizeIfLarge(
342
+ result.raw_request,
343
+ stepId,
344
+ "raw_request"
345
+ );
346
+ step.raw_response = externalizeIfLarge(
347
+ result.raw_response,
348
+ stepId,
349
+ "raw_response"
350
+ );
351
+ step.raw_chunks = externalizeIfLarge(
352
+ result.raw_chunks,
353
+ stepId,
354
+ "raw_chunks"
355
+ );
356
+ persistRunFile(file.run.id, file);
357
+ upsertSummary(file);
358
+ notifyServer("step-update", file.run.id);
359
+ };
360
+
361
+ // src/middleware.ts
362
+ var generateId = () => crypto.randomUUID();
363
+ var activeSteps = /* @__PURE__ */ new Map();
364
+ var signalHandlersRegistered = false;
365
+ var registerSignalHandlers = () => {
366
+ if (signalHandlersRegistered) return;
367
+ signalHandlersRegistered = true;
368
+ const cleanup = async () => {
369
+ if (activeSteps.size === 0) return;
370
+ const promises = Array.from(activeSteps.entries()).map(
371
+ async ([stepId, data]) => {
372
+ const durationMs = Date.now() - data.startTime;
373
+ await updateStepResult(stepId, {
374
+ duration_ms: durationMs,
375
+ output: JSON.stringify(data.collectedOutput),
376
+ usage: null,
377
+ error: "Request aborted",
378
+ raw_request: data.request && typeof data.request === "object" && "body" in data.request ? JSON.stringify(data.request.body) : null,
379
+ raw_response: JSON.stringify(data.fullStreamChunks),
380
+ raw_chunks: JSON.stringify(data.rawChunks)
381
+ });
382
+ }
383
+ );
384
+ await Promise.all(promises);
385
+ await notifyServerAsync("step-update");
386
+ };
387
+ process.on("SIGINT", () => {
388
+ cleanup().then(() => process.exit(130));
389
+ });
390
+ process.on("SIGTERM", () => {
391
+ cleanup().then(() => process.exit(143));
392
+ });
393
+ };
394
+ var aiSdkMiddleware = (options = {}) => {
395
+ if (process.env.NODE_ENV === "production") {
396
+ throw new Error(
397
+ "ailog should not be used in production. Remove aiSdkMiddleware from your model configuration for production builds."
398
+ );
399
+ }
400
+ registerSignalHandlers();
401
+ const runId = generateRunId();
402
+ let runCreated = false;
403
+ const ensureRunCreated = async () => {
404
+ if (!runCreated) {
405
+ await createRun(
406
+ runId,
407
+ options.functionId,
408
+ options.threadId,
409
+ options.metadata
410
+ );
411
+ runCreated = true;
412
+ }
413
+ };
414
+ return {
415
+ specificationVersion: "v4",
416
+ wrapGenerate: async ({ doGenerate, params, model }) => {
417
+ const startTime = Date.now();
418
+ const stepId = generateId();
419
+ await ensureRunCreated();
420
+ await createStep({
421
+ id: stepId,
422
+ run_id: runId,
423
+ type: "generate",
424
+ model_id: model.modelId,
425
+ provider: model.provider,
426
+ started_at: (/* @__PURE__ */ new Date()).toISOString(),
427
+ input: JSON.stringify({
428
+ prompt: params.prompt,
429
+ tools: params.tools,
430
+ toolChoice: params.toolChoice,
431
+ maxOutputTokens: params.maxOutputTokens,
432
+ temperature: params.temperature,
433
+ topP: params.topP,
434
+ topK: params.topK,
435
+ presencePenalty: params.presencePenalty,
436
+ frequencyPenalty: params.frequencyPenalty,
437
+ seed: params.seed,
438
+ responseFormat: params.responseFormat
439
+ }),
440
+ provider_options: params.providerOptions ? JSON.stringify(params.providerOptions) : null
441
+ });
442
+ try {
443
+ const result = await doGenerate();
444
+ const durationMs = Date.now() - startTime;
445
+ await updateStepResult(stepId, {
446
+ duration_ms: durationMs,
447
+ output: JSON.stringify({
448
+ content: result.content,
449
+ finishReason: result.finishReason,
450
+ response: result.response
451
+ }),
452
+ usage: result.usage ? JSON.stringify(result.usage) : null,
453
+ error: null,
454
+ raw_request: result.request?.body ? JSON.stringify(result.request.body) : null,
455
+ raw_response: result.response?.body ? JSON.stringify(result.response.body) : null
456
+ });
457
+ return result;
458
+ } catch (error) {
459
+ const durationMs = Date.now() - startTime;
460
+ await updateStepResult(stepId, {
461
+ duration_ms: durationMs,
462
+ output: null,
463
+ usage: null,
464
+ error: error instanceof Error ? error.message : String(error),
465
+ raw_request: null,
466
+ raw_response: null
467
+ });
468
+ throw error;
469
+ }
470
+ },
471
+ wrapStream: async ({ doStream, params, model }) => {
472
+ const startTime = Date.now();
473
+ const stepId = generateId();
474
+ await ensureRunCreated();
475
+ const userRequestedRawChunks = params.includeRawChunks === true;
476
+ params.includeRawChunks = true;
477
+ await createStep({
478
+ id: stepId,
479
+ run_id: runId,
480
+ type: "stream",
481
+ model_id: model.modelId,
482
+ provider: model.provider,
483
+ started_at: (/* @__PURE__ */ new Date()).toISOString(),
484
+ input: JSON.stringify({
485
+ prompt: params.prompt,
486
+ tools: params.tools,
487
+ toolChoice: params.toolChoice,
488
+ maxOutputTokens: params.maxOutputTokens,
489
+ temperature: params.temperature,
490
+ topP: params.topP,
491
+ topK: params.topK,
492
+ presencePenalty: params.presencePenalty,
493
+ frequencyPenalty: params.frequencyPenalty,
494
+ seed: params.seed,
495
+ responseFormat: params.responseFormat
496
+ }),
497
+ provider_options: params.providerOptions ? JSON.stringify(params.providerOptions) : null
498
+ });
499
+ try {
500
+ const { stream, request, response, ...rest } = await doStream();
501
+ const collectedOutput = {
502
+ textParts: [],
503
+ reasoningParts: [],
504
+ toolCalls: []
505
+ };
506
+ const currentText = /* @__PURE__ */ new Map();
507
+ const currentReasoning = /* @__PURE__ */ new Map();
508
+ const fullStreamChunks = [];
509
+ const rawChunks = [];
510
+ activeSteps.set(stepId, {
511
+ startTime,
512
+ collectedOutput,
513
+ request,
514
+ fullStreamChunks,
515
+ rawChunks
516
+ });
517
+ const transformStream = new TransformStream({
518
+ transform(chunk, controller) {
519
+ if (chunk.type === "raw") {
520
+ rawChunks.push(chunk.rawValue);
521
+ if (userRequestedRawChunks) {
522
+ controller.enqueue(chunk);
523
+ }
524
+ return;
525
+ }
526
+ fullStreamChunks.push(chunk);
527
+ switch (chunk.type) {
528
+ case "text-start":
529
+ currentText.set(chunk.id, "");
530
+ break;
531
+ case "text-delta":
532
+ currentText.set(
533
+ chunk.id,
534
+ (currentText.get(chunk.id) ?? "") + chunk.delta
535
+ );
536
+ break;
537
+ case "text-end":
538
+ collectedOutput.textParts.push({
539
+ id: chunk.id,
540
+ text: currentText.get(chunk.id) ?? ""
541
+ });
542
+ break;
543
+ case "reasoning-start":
544
+ currentReasoning.set(chunk.id, "");
545
+ break;
546
+ case "reasoning-delta":
547
+ currentReasoning.set(
548
+ chunk.id,
549
+ (currentReasoning.get(chunk.id) ?? "") + chunk.delta
550
+ );
551
+ break;
552
+ case "reasoning-end":
553
+ collectedOutput.reasoningParts.push({
554
+ id: chunk.id,
555
+ text: currentReasoning.get(chunk.id) ?? ""
556
+ });
557
+ break;
558
+ case "tool-call":
559
+ collectedOutput.toolCalls.push(chunk);
560
+ break;
561
+ case "finish":
562
+ collectedOutput.finishReason = chunk.finishReason;
563
+ collectedOutput.usage = chunk.usage;
564
+ break;
565
+ }
566
+ controller.enqueue(chunk);
567
+ },
568
+ async flush() {
569
+ activeSteps.delete(stepId);
570
+ const durationMs = Date.now() - startTime;
571
+ await updateStepResult(stepId, {
572
+ duration_ms: durationMs,
573
+ output: JSON.stringify(collectedOutput),
574
+ usage: collectedOutput.usage ? JSON.stringify(collectedOutput.usage) : null,
575
+ error: null,
576
+ raw_request: request?.body ? JSON.stringify(request.body) : null,
577
+ raw_response: JSON.stringify(fullStreamChunks),
578
+ raw_chunks: JSON.stringify(rawChunks)
579
+ });
580
+ },
581
+ // @ts-expect-error - cancel is valid per WHATWG Streams spec but missing from TS types
582
+ async cancel() {
583
+ activeSteps.delete(stepId);
584
+ const durationMs = Date.now() - startTime;
585
+ await updateStepResult(stepId, {
586
+ duration_ms: durationMs,
587
+ output: JSON.stringify(collectedOutput),
588
+ usage: collectedOutput.usage ? JSON.stringify(collectedOutput.usage) : null,
589
+ error: "Request aborted",
590
+ raw_request: request?.body ? JSON.stringify(request.body) : null,
591
+ raw_response: JSON.stringify(fullStreamChunks),
592
+ raw_chunks: JSON.stringify(rawChunks)
593
+ });
594
+ }
595
+ });
596
+ return {
597
+ stream: stream.pipeThrough(transformStream),
598
+ request,
599
+ response,
600
+ ...rest
601
+ };
602
+ } catch (error) {
603
+ activeSteps.delete(stepId);
604
+ const durationMs = Date.now() - startTime;
605
+ await updateStepResult(stepId, {
606
+ duration_ms: durationMs,
607
+ output: null,
608
+ usage: null,
609
+ error: error instanceof Error ? error.message : String(error),
610
+ raw_request: null,
611
+ raw_response: null,
612
+ raw_chunks: null
613
+ });
614
+ throw error;
615
+ }
616
+ }
617
+ };
618
+ };
619
+
620
+ // src/logger.ts
621
+ var generateId2 = () => crypto.randomUUID();
622
+ var serialize = (value) => {
623
+ if (value === void 0 || value === null) return null;
624
+ if (typeof value === "string") return value;
625
+ try {
626
+ return JSON.stringify(value);
627
+ } catch {
628
+ return String(value);
629
+ }
630
+ };
631
+ async function createLogger(options = {}) {
632
+ if (process.env.NODE_ENV === "production") {
633
+ throw new Error(
634
+ "ailog should not be used in production. Remove createLogger calls from your production builds."
635
+ );
636
+ }
637
+ const runId = generateRunId();
638
+ await createRun(
639
+ runId,
640
+ options.functionId,
641
+ options.threadId,
642
+ options.metadata
643
+ );
644
+ return {
645
+ id: runId,
646
+ async step(input) {
647
+ const stepId = generateId2();
648
+ const startTime = Date.now();
649
+ await createStep({
650
+ id: stepId,
651
+ run_id: runId,
652
+ type: input.type ?? "generate",
653
+ model_id: input.modelId,
654
+ provider: input.provider ?? null,
655
+ started_at: (/* @__PURE__ */ new Date()).toISOString(),
656
+ input: serialize(input.input) ?? "null",
657
+ provider_options: serialize(input.providerOptions)
658
+ });
659
+ return {
660
+ id: stepId,
661
+ async end(result) {
662
+ const durationMs = Date.now() - startTime;
663
+ const errorMessage = result.error instanceof Error ? result.error.message : result.error !== void 0 && result.error !== null ? String(result.error) : null;
664
+ await updateStepResult(stepId, {
665
+ duration_ms: durationMs,
666
+ output: serialize(result.output),
667
+ usage: serialize(result.usage),
668
+ error: errorMessage,
669
+ raw_request: serialize(result.rawRequest),
670
+ raw_response: serialize(result.rawResponse),
671
+ raw_chunks: serialize(result.rawChunks)
672
+ });
673
+ }
674
+ };
675
+ }
676
+ };
677
+ }
678
+ export {
679
+ aiSdkMiddleware,
680
+ createLogger
681
+ };