reflex-agent 0.2.1

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 (365) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-build-manifest.json +319 -0
  3. package/.next/app-path-routes-manifest.json +34 -0
  4. package/.next/build-manifest.json +33 -0
  5. package/.next/diagnostics/build-diagnostics.json +6 -0
  6. package/.next/diagnostics/framework.json +1 -0
  7. package/.next/export-marker.json +6 -0
  8. package/.next/images-manifest.json +58 -0
  9. package/.next/next-minimal-server.js.nft.json +1 -0
  10. package/.next/next-server.js.nft.json +1 -0
  11. package/.next/package.json +1 -0
  12. package/.next/prerender-manifest.json +160 -0
  13. package/.next/react-loadable-manifest.json +8 -0
  14. package/.next/required-server-files.json +337 -0
  15. package/.next/routes-manifest.json +282 -0
  16. package/.next/server/app/_not-found/page.js +2 -0
  17. package/.next/server/app/_not-found/page.js.nft.json +1 -0
  18. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
  19. package/.next/server/app/_not-found.html +1 -0
  20. package/.next/server/app/_not-found.meta +8 -0
  21. package/.next/server/app/_not-found.rsc +18 -0
  22. package/.next/server/app/agents/[agentId]/page.js +3 -0
  23. package/.next/server/app/agents/[agentId]/page.js.nft.json +1 -0
  24. package/.next/server/app/agents/[agentId]/page_client-reference-manifest.js +1 -0
  25. package/.next/server/app/api/agents/[agentId]/respond/route.js +2 -0
  26. package/.next/server/app/api/agents/[agentId]/respond/route.js.nft.json +1 -0
  27. package/.next/server/app/api/agents/[agentId]/respond/route_client-reference-manifest.js +1 -0
  28. package/.next/server/app/api/images/[rootId]/[file]/route.js +1 -0
  29. package/.next/server/app/api/images/[rootId]/[file]/route.js.nft.json +1 -0
  30. package/.next/server/app/api/images/[rootId]/[file]/route_client-reference-manifest.js +1 -0
  31. package/.next/server/app/api/oauth/callback/route.js +22 -0
  32. package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -0
  33. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -0
  34. package/.next/server/app/api/oauth/start/route.js +1 -0
  35. package/.next/server/app/api/oauth/start/route.js.nft.json +1 -0
  36. package/.next/server/app/api/oauth/start/route_client-reference-manifest.js +1 -0
  37. package/.next/server/app/api/roots/[id]/attachments/route.js +0 -0
  38. package/.next/server/app/api/roots/[id]/attachments/route.js.nft.json +1 -0
  39. package/.next/server/app/api/roots/[id]/attachments/route_client-reference-manifest.js +1 -0
  40. package/.next/server/app/api/roots/[id]/chat/[topicId]/send/route.js +2 -0
  41. package/.next/server/app/api/roots/[id]/chat/[topicId]/send/route.js.nft.json +1 -0
  42. package/.next/server/app/api/roots/[id]/chat/[topicId]/send/route_client-reference-manifest.js +1 -0
  43. package/.next/server/app/api/roots/[id]/chat/[topicId]/stop/route.js +2 -0
  44. package/.next/server/app/api/roots/[id]/chat/[topicId]/stop/route.js.nft.json +1 -0
  45. package/.next/server/app/api/roots/[id]/chat/[topicId]/stop/route_client-reference-manifest.js +1 -0
  46. package/.next/server/app/api/roots/[id]/chat/[topicId]/stream/route.js +8 -0
  47. package/.next/server/app/api/roots/[id]/chat/[topicId]/stream/route.js.nft.json +1 -0
  48. package/.next/server/app/api/roots/[id]/chat/[topicId]/stream/route_client-reference-manifest.js +1 -0
  49. package/.next/server/app/api/roots/[id]/dashboard/route.js +1 -0
  50. package/.next/server/app/api/roots/[id]/dashboard/route.js.nft.json +1 -0
  51. package/.next/server/app/api/roots/[id]/dashboard/route_client-reference-manifest.js +1 -0
  52. package/.next/server/app/api/roots/[id]/suggestions/route.js +1 -0
  53. package/.next/server/app/api/roots/[id]/suggestions/route.js.nft.json +1 -0
  54. package/.next/server/app/api/roots/[id]/suggestions/route_client-reference-manifest.js +1 -0
  55. package/.next/server/app/api/utilities/[scope]/[id]/bundle.js/route.js +1 -0
  56. package/.next/server/app/api/utilities/[scope]/[id]/bundle.js/route.js.nft.json +1 -0
  57. package/.next/server/app/api/utilities/[scope]/[id]/bundle.js/route_client-reference-manifest.js +1 -0
  58. package/.next/server/app/api/utilities/[scope]/[id]/host/route.js +2 -0
  59. package/.next/server/app/api/utilities/[scope]/[id]/host/route.js.nft.json +1 -0
  60. package/.next/server/app/api/utilities/[scope]/[id]/host/route_client-reference-manifest.js +1 -0
  61. package/.next/server/app/api/utilities/[scope]/[id]/host-api.mjs/route.js +55 -0
  62. package/.next/server/app/api/utilities/[scope]/[id]/host-api.mjs/route.js.nft.json +1 -0
  63. package/.next/server/app/api/utilities/[scope]/[id]/host-api.mjs/route_client-reference-manifest.js +1 -0
  64. package/.next/server/app/api/utilities/[scope]/[id]/host-ui.mjs/route.js +114 -0
  65. package/.next/server/app/api/utilities/[scope]/[id]/host-ui.mjs/route.js.nft.json +1 -0
  66. package/.next/server/app/api/utilities/[scope]/[id]/host-ui.mjs/route_client-reference-manifest.js +1 -0
  67. package/.next/server/app/api/utilities/[scope]/[id]/iframe/route.js +21 -0
  68. package/.next/server/app/api/utilities/[scope]/[id]/iframe/route.js.nft.json +1 -0
  69. package/.next/server/app/api/utilities/[scope]/[id]/iframe/route_client-reference-manifest.js +1 -0
  70. package/.next/server/app/api/utilities/[scope]/[id]/style.css/route.js +1 -0
  71. package/.next/server/app/api/utilities/[scope]/[id]/style.css/route.js.nft.json +1 -0
  72. package/.next/server/app/api/utilities/[scope]/[id]/style.css/route_client-reference-manifest.js +1 -0
  73. package/.next/server/app/audit/page.js +2 -0
  74. package/.next/server/app/audit/page.js.nft.json +1 -0
  75. package/.next/server/app/audit/page_client-reference-manifest.js +1 -0
  76. package/.next/server/app/index.html +1 -0
  77. package/.next/server/app/index.meta +9 -0
  78. package/.next/server/app/index.rsc +19 -0
  79. package/.next/server/app/onboarding/page.js +10 -0
  80. package/.next/server/app/onboarding/page.js.nft.json +1 -0
  81. package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -0
  82. package/.next/server/app/page.js +2 -0
  83. package/.next/server/app/page.js.nft.json +1 -0
  84. package/.next/server/app/page_client-reference-manifest.js +1 -0
  85. package/.next/server/app/roots/[id]/chat/[topicId]/page.js +7 -0
  86. package/.next/server/app/roots/[id]/chat/[topicId]/page.js.nft.json +1 -0
  87. package/.next/server/app/roots/[id]/chat/[topicId]/page_client-reference-manifest.js +1 -0
  88. package/.next/server/app/roots/[id]/kb/[...slug]/page.js +6 -0
  89. package/.next/server/app/roots/[id]/kb/[...slug]/page.js.nft.json +1 -0
  90. package/.next/server/app/roots/[id]/kb/[...slug]/page_client-reference-manifest.js +1 -0
  91. package/.next/server/app/roots/[id]/page.js +5 -0
  92. package/.next/server/app/roots/[id]/page.js.nft.json +1 -0
  93. package/.next/server/app/roots/[id]/page_client-reference-manifest.js +1 -0
  94. package/.next/server/app/roots/[id]/workflows/[wfId]/page.js +2 -0
  95. package/.next/server/app/roots/[id]/workflows/[wfId]/page.js.nft.json +1 -0
  96. package/.next/server/app/roots/[id]/workflows/[wfId]/page_client-reference-manifest.js +1 -0
  97. package/.next/server/app/roots/[id]/workflows/page.js +2 -0
  98. package/.next/server/app/roots/[id]/workflows/page.js.nft.json +1 -0
  99. package/.next/server/app/roots/[id]/workflows/page_client-reference-manifest.js +1 -0
  100. package/.next/server/app/roots/new/page.js +5 -0
  101. package/.next/server/app/roots/new/page.js.nft.json +1 -0
  102. package/.next/server/app/roots/new/page_client-reference-manifest.js +1 -0
  103. package/.next/server/app/roots/new.html +1 -0
  104. package/.next/server/app/roots/new.meta +7 -0
  105. package/.next/server/app/roots/new.rsc +21 -0
  106. package/.next/server/app/settings/page.js +65 -0
  107. package/.next/server/app/settings/page.js.nft.json +1 -0
  108. package/.next/server/app/settings/page_client-reference-manifest.js +1 -0
  109. package/.next/server/app/settings.html +1 -0
  110. package/.next/server/app/settings.meta +7 -0
  111. package/.next/server/app/settings.rsc +22 -0
  112. package/.next/server/app/share/[id]/file/page.js +2 -0
  113. package/.next/server/app/share/[id]/file/page.js.nft.json +1 -0
  114. package/.next/server/app/share/[id]/file/page_client-reference-manifest.js +1 -0
  115. package/.next/server/app/share/[id]/page.js +2 -0
  116. package/.next/server/app/share/[id]/page.js.nft.json +1 -0
  117. package/.next/server/app/share/[id]/page_client-reference-manifest.js +1 -0
  118. package/.next/server/app/utilities/[scope]/[id]/page.js +2 -0
  119. package/.next/server/app/utilities/[scope]/[id]/page.js.nft.json +1 -0
  120. package/.next/server/app/utilities/[scope]/[id]/page_client-reference-manifest.js +1 -0
  121. package/.next/server/app/utilities/page.js +17 -0
  122. package/.next/server/app/utilities/page.js.nft.json +1 -0
  123. package/.next/server/app/utilities/page_client-reference-manifest.js +1 -0
  124. package/.next/server/app-paths-manifest.json +34 -0
  125. package/.next/server/chunks/1088.js +1 -0
  126. package/.next/server/chunks/1105.js +1 -0
  127. package/.next/server/chunks/1223.js +1 -0
  128. package/.next/server/chunks/1244.js +1 -0
  129. package/.next/server/chunks/133.js +490 -0
  130. package/.next/server/chunks/1888.js +1 -0
  131. package/.next/server/chunks/192.js +1 -0
  132. package/.next/server/chunks/1960.js +1 -0
  133. package/.next/server/chunks/1961.js +1 -0
  134. package/.next/server/chunks/1986.js +1 -0
  135. package/.next/server/chunks/2035.js +1 -0
  136. package/.next/server/chunks/2356.js +1 -0
  137. package/.next/server/chunks/2433.js +1 -0
  138. package/.next/server/chunks/2485.js +6 -0
  139. package/.next/server/chunks/2503.js +1 -0
  140. package/.next/server/chunks/3240.js +1 -0
  141. package/.next/server/chunks/3295.js +1 -0
  142. package/.next/server/chunks/3332.js +1 -0
  143. package/.next/server/chunks/3657.js +1 -0
  144. package/.next/server/chunks/4031.js +6 -0
  145. package/.next/server/chunks/4066.js +1 -0
  146. package/.next/server/chunks/4553.js +1 -0
  147. package/.next/server/chunks/4833.js +1 -0
  148. package/.next/server/chunks/4840.js +1 -0
  149. package/.next/server/chunks/4842.js +1 -0
  150. package/.next/server/chunks/4925.js +1 -0
  151. package/.next/server/chunks/5087.js +1 -0
  152. package/.next/server/chunks/5152.js +1 -0
  153. package/.next/server/chunks/5243.js +1 -0
  154. package/.next/server/chunks/5319.js +1 -0
  155. package/.next/server/chunks/5373.js +1 -0
  156. package/.next/server/chunks/5401.js +1 -0
  157. package/.next/server/chunks/5436.js +1 -0
  158. package/.next/server/chunks/5543.js +1 -0
  159. package/.next/server/chunks/569.js +1 -0
  160. package/.next/server/chunks/5895.js +16 -0
  161. package/.next/server/chunks/5986.js +3 -0
  162. package/.next/server/chunks/613.js +1 -0
  163. package/.next/server/chunks/6216.js +1 -0
  164. package/.next/server/chunks/6435.js +1 -0
  165. package/.next/server/chunks/6536.js +3 -0
  166. package/.next/server/chunks/6602.js +4 -0
  167. package/.next/server/chunks/6730.js +1 -0
  168. package/.next/server/chunks/6909.js +488 -0
  169. package/.next/server/chunks/7188.js +1 -0
  170. package/.next/server/chunks/7300.js +128 -0
  171. package/.next/server/chunks/7508.js +1 -0
  172. package/.next/server/chunks/7572.js +2 -0
  173. package/.next/server/chunks/8056.js +1 -0
  174. package/.next/server/chunks/8124.js +1 -0
  175. package/.next/server/chunks/8262.js +1 -0
  176. package/.next/server/chunks/8404.js +62 -0
  177. package/.next/server/chunks/8514.js +1 -0
  178. package/.next/server/chunks/8843.js +1 -0
  179. package/.next/server/chunks/9098.js +1 -0
  180. package/.next/server/chunks/9293.js +1 -0
  181. package/.next/server/chunks/9328.js +179 -0
  182. package/.next/server/chunks/94.js +1 -0
  183. package/.next/server/chunks/9579.js +1 -0
  184. package/.next/server/chunks/9631.js +16 -0
  185. package/.next/server/chunks/9692.js +6 -0
  186. package/.next/server/chunks/9739.js +108 -0
  187. package/.next/server/chunks/9803.js +22 -0
  188. package/.next/server/chunks/9835.js +1 -0
  189. package/.next/server/chunks/9842.js +1 -0
  190. package/.next/server/chunks/9861.js +128 -0
  191. package/.next/server/chunks/9995.js +1 -0
  192. package/.next/server/edge-runtime-webpack.js +2 -0
  193. package/.next/server/edge-runtime-webpack.js.map +1 -0
  194. package/.next/server/functions-config-manifest.json +21 -0
  195. package/.next/server/interception-route-rewrite-manifest.js +1 -0
  196. package/.next/server/middleware-build-manifest.js +1 -0
  197. package/.next/server/middleware-manifest.json +32 -0
  198. package/.next/server/middleware-react-loadable-manifest.js +1 -0
  199. package/.next/server/middleware.js +14 -0
  200. package/.next/server/middleware.js.map +1 -0
  201. package/.next/server/next-font-manifest.js +1 -0
  202. package/.next/server/next-font-manifest.json +1 -0
  203. package/.next/server/pages/404.html +1 -0
  204. package/.next/server/pages/500.html +1 -0
  205. package/.next/server/pages/_app.js +1 -0
  206. package/.next/server/pages/_app.js.nft.json +1 -0
  207. package/.next/server/pages/_document.js +1 -0
  208. package/.next/server/pages/_document.js.nft.json +1 -0
  209. package/.next/server/pages/_error.js +19 -0
  210. package/.next/server/pages/_error.js.nft.json +1 -0
  211. package/.next/server/pages-manifest.json +6 -0
  212. package/.next/server/server-reference-manifest.js +1 -0
  213. package/.next/server/server-reference-manifest.json +1 -0
  214. package/.next/server/webpack-runtime.js +1 -0
  215. package/.next/static/chunks/1217-407174d9b164a499.js +1 -0
  216. package/.next/static/chunks/146-ccee3b26755b68c8.js +1 -0
  217. package/.next/static/chunks/3335-5647a38ab2cfa88d.js +1 -0
  218. package/.next/static/chunks/3954-fe27ff41d9bf012d.js +1 -0
  219. package/.next/static/chunks/4108.d6ed46bc2fcab462.js +1 -0
  220. package/.next/static/chunks/4400-cdb1f7913ae34e09.js +1 -0
  221. package/.next/static/chunks/4895-712004156efeccf2.js +1 -0
  222. package/.next/static/chunks/5097-f07f6aeee3f60a33.js +1 -0
  223. package/.next/static/chunks/5235-990ba9c4c8446446.js +62 -0
  224. package/.next/static/chunks/6489-ecde2d94e57eb8a9.js +1 -0
  225. package/.next/static/chunks/6568-e4d2de23d9f8d347.js +1 -0
  226. package/.next/static/chunks/6727-d38536774bdb32d5.js +1 -0
  227. package/.next/static/chunks/6734-9d524ec49e4ba49c.js +1 -0
  228. package/.next/static/chunks/6744-dbfe3cc4ce461613.js +1 -0
  229. package/.next/static/chunks/6fe292aa-7126ff9d6732e864.js +1 -0
  230. package/.next/static/chunks/8566-5d4c89b722d9cee1.js +1 -0
  231. package/.next/static/chunks/8775-890699c74c28df61.js +1 -0
  232. package/.next/static/chunks/9045-731ff0865352dd95.js +1 -0
  233. package/.next/static/chunks/app/_not-found/page-ffead1b4e248e14d.js +1 -0
  234. package/.next/static/chunks/app/agents/[agentId]/page-0b5c2838354d0eba.js +1 -0
  235. package/.next/static/chunks/app/api/agents/[agentId]/respond/route-7e2f82a91b10b7e2.js +1 -0
  236. package/.next/static/chunks/app/api/images/[rootId]/[file]/route-7e2f82a91b10b7e2.js +1 -0
  237. package/.next/static/chunks/app/api/oauth/callback/route-7e2f82a91b10b7e2.js +1 -0
  238. package/.next/static/chunks/app/api/oauth/start/route-7e2f82a91b10b7e2.js +1 -0
  239. package/.next/static/chunks/app/api/roots/[id]/attachments/route-7e2f82a91b10b7e2.js +1 -0
  240. package/.next/static/chunks/app/api/roots/[id]/chat/[topicId]/send/route-7e2f82a91b10b7e2.js +1 -0
  241. package/.next/static/chunks/app/api/roots/[id]/chat/[topicId]/stop/route-7e2f82a91b10b7e2.js +1 -0
  242. package/.next/static/chunks/app/api/roots/[id]/chat/[topicId]/stream/route-7e2f82a91b10b7e2.js +1 -0
  243. package/.next/static/chunks/app/api/roots/[id]/dashboard/route-7e2f82a91b10b7e2.js +1 -0
  244. package/.next/static/chunks/app/api/roots/[id]/suggestions/route-7e2f82a91b10b7e2.js +1 -0
  245. package/.next/static/chunks/app/api/utilities/[scope]/[id]/bundle.js/route-7e2f82a91b10b7e2.js +1 -0
  246. package/.next/static/chunks/app/api/utilities/[scope]/[id]/host/route-7e2f82a91b10b7e2.js +1 -0
  247. package/.next/static/chunks/app/api/utilities/[scope]/[id]/host-api.mjs/route-7e2f82a91b10b7e2.js +1 -0
  248. package/.next/static/chunks/app/api/utilities/[scope]/[id]/host-ui.mjs/route-7e2f82a91b10b7e2.js +1 -0
  249. package/.next/static/chunks/app/api/utilities/[scope]/[id]/iframe/route-7e2f82a91b10b7e2.js +1 -0
  250. package/.next/static/chunks/app/api/utilities/[scope]/[id]/style.css/route-7e2f82a91b10b7e2.js +1 -0
  251. package/.next/static/chunks/app/audit/page-e3445076d462aa80.js +1 -0
  252. package/.next/static/chunks/app/layout-c7a35075cfbfa3e3.js +1 -0
  253. package/.next/static/chunks/app/onboarding/page-cde5b92b13b03c63.js +1 -0
  254. package/.next/static/chunks/app/page-ddaeffdc9a15f597.js +1 -0
  255. package/.next/static/chunks/app/roots/[id]/chat/[topicId]/page-1b55f68984817d29.js +1 -0
  256. package/.next/static/chunks/app/roots/[id]/kb/[...slug]/page-d4358cb6042740c4.js +1 -0
  257. package/.next/static/chunks/app/roots/[id]/layout-7e2f82a91b10b7e2.js +1 -0
  258. package/.next/static/chunks/app/roots/[id]/page-703d96bf8208af2f.js +1 -0
  259. package/.next/static/chunks/app/roots/[id]/workflows/[wfId]/page-738e8e4128baa722.js +1 -0
  260. package/.next/static/chunks/app/roots/[id]/workflows/page-e3445076d462aa80.js +1 -0
  261. package/.next/static/chunks/app/roots/new/page-534769dce46d0d29.js +1 -0
  262. package/.next/static/chunks/app/settings/page-86ee3d07ea1acbc7.js +1 -0
  263. package/.next/static/chunks/app/share/[id]/file/page-93e0105d7903f777.js +1 -0
  264. package/.next/static/chunks/app/share/[id]/page-5bbc8503cb9a9eeb.js +1 -0
  265. package/.next/static/chunks/app/utilities/[scope]/[id]/page-72546d245b840091.js +1 -0
  266. package/.next/static/chunks/app/utilities/page-9f949d831421d314.js +1 -0
  267. package/.next/static/chunks/framework-aaa7c1a953276299.js +1 -0
  268. package/.next/static/chunks/main-app-ebe67847147d19aa.js +1 -0
  269. package/.next/static/chunks/main-bfb98fc1d6aa1d45.js +1 -0
  270. package/.next/static/chunks/pages/_app-bf8bc157ace53d59.js +1 -0
  271. package/.next/static/chunks/pages/_error-da89ab2956f0cf38.js +1 -0
  272. package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  273. package/.next/static/chunks/webpack-2e8cca5826414cc6.js +1 -0
  274. package/.next/static/css/87e01f779d555d04.css +1 -0
  275. package/.next/static/p8t15rbWhT5Rrs5fOXWZ6/_buildManifest.js +1 -0
  276. package/.next/static/p8t15rbWhT5Rrs5fOXWZ6/_ssgManifest.js +1 -0
  277. package/.next/trace +46 -0
  278. package/.next/types/app/agents/[agentId]/page.ts +84 -0
  279. package/.next/types/app/api/agents/[agentId]/respond/route.ts +347 -0
  280. package/.next/types/app/api/images/[rootId]/[file]/route.ts +347 -0
  281. package/.next/types/app/api/oauth/callback/route.ts +347 -0
  282. package/.next/types/app/api/oauth/start/route.ts +347 -0
  283. package/.next/types/app/api/roots/[id]/attachments/route.ts +347 -0
  284. package/.next/types/app/api/roots/[id]/chat/[topicId]/send/route.ts +347 -0
  285. package/.next/types/app/api/roots/[id]/chat/[topicId]/stop/route.ts +347 -0
  286. package/.next/types/app/api/roots/[id]/chat/[topicId]/stream/route.ts +347 -0
  287. package/.next/types/app/api/roots/[id]/dashboard/route.ts +347 -0
  288. package/.next/types/app/api/roots/[id]/suggestions/route.ts +347 -0
  289. package/.next/types/app/api/utilities/[scope]/[id]/bundle.js/route.ts +347 -0
  290. package/.next/types/app/api/utilities/[scope]/[id]/host/route.ts +347 -0
  291. package/.next/types/app/api/utilities/[scope]/[id]/host-api.mjs/route.ts +347 -0
  292. package/.next/types/app/api/utilities/[scope]/[id]/host-ui.mjs/route.ts +347 -0
  293. package/.next/types/app/api/utilities/[scope]/[id]/iframe/route.ts +347 -0
  294. package/.next/types/app/api/utilities/[scope]/[id]/style.css/route.ts +347 -0
  295. package/.next/types/app/audit/page.ts +84 -0
  296. package/.next/types/app/onboarding/page.ts +84 -0
  297. package/.next/types/app/page.ts +84 -0
  298. package/.next/types/app/roots/[id]/chat/[topicId]/page.ts +84 -0
  299. package/.next/types/app/roots/[id]/kb/[...slug]/page.ts +84 -0
  300. package/.next/types/app/roots/[id]/layout.ts +84 -0
  301. package/.next/types/app/roots/[id]/page.ts +84 -0
  302. package/.next/types/app/roots/[id]/workflows/[wfId]/page.ts +84 -0
  303. package/.next/types/app/roots/[id]/workflows/page.ts +84 -0
  304. package/.next/types/app/roots/new/page.ts +84 -0
  305. package/.next/types/app/settings/page.ts +84 -0
  306. package/.next/types/app/share/[id]/file/page.ts +84 -0
  307. package/.next/types/app/share/[id]/page.ts +84 -0
  308. package/.next/types/app/utilities/[scope]/[id]/page.ts +84 -0
  309. package/.next/types/app/utilities/page.ts +84 -0
  310. package/.next/types/cache-life.d.ts +141 -0
  311. package/.next/types/package.json +1 -0
  312. package/.next/types/routes.d.ts +103 -0
  313. package/.next/types/validator.ts +349 -0
  314. package/README.md +72 -0
  315. package/dist/bin/cli.js +82 -0
  316. package/dist/bin/cli.js.map +1 -0
  317. package/dist/lib/reflex/agents/backend.js +14 -0
  318. package/dist/lib/reflex/agents/backend.js.map +1 -0
  319. package/dist/lib/reflex/agents/claude-code.js +48 -0
  320. package/dist/lib/reflex/agents/claude-code.js.map +1 -0
  321. package/dist/lib/reflex/agents/codex.js +46 -0
  322. package/dist/lib/reflex/agents/codex.js.map +1 -0
  323. package/dist/lib/reflex/agents/index.js +13 -0
  324. package/dist/lib/reflex/agents/index.js.map +1 -0
  325. package/dist/lib/reflex/agents/prompts.js +228 -0
  326. package/dist/lib/reflex/agents/prompts.js.map +1 -0
  327. package/dist/lib/reflex/commands/chat.js +41 -0
  328. package/dist/lib/reflex/commands/chat.js.map +1 -0
  329. package/dist/lib/reflex/commands/init.js +38 -0
  330. package/dist/lib/reflex/commands/init.js.map +1 -0
  331. package/dist/lib/reflex/commands/start.js +64 -0
  332. package/dist/lib/reflex/commands/start.js.map +1 -0
  333. package/dist/lib/reflex/commands/watch.js +137 -0
  334. package/dist/lib/reflex/commands/watch.js.map +1 -0
  335. package/dist/lib/reflex/config.js +42 -0
  336. package/dist/lib/reflex/config.js.map +1 -0
  337. package/dist/lib/reflex/ignore.js +83 -0
  338. package/dist/lib/reflex/ignore.js.map +1 -0
  339. package/dist/lib/reflex/kb.js +48 -0
  340. package/dist/lib/reflex/kb.js.map +1 -0
  341. package/dist/lib/reflex/paths.js +33 -0
  342. package/dist/lib/reflex/paths.js.map +1 -0
  343. package/dist/lib/reflex/prompts/defaults.js +363 -0
  344. package/dist/lib/reflex/prompts/defaults.js.map +1 -0
  345. package/dist/lib/reflex/prompts/render.js +14 -0
  346. package/dist/lib/reflex/prompts/render.js.map +1 -0
  347. package/dist/lib/reflex/prompts/store.js +54 -0
  348. package/dist/lib/reflex/prompts/store.js.map +1 -0
  349. package/dist/lib/reflex/walker.js +55 -0
  350. package/dist/lib/reflex/walker.js.map +1 -0
  351. package/next.config.ts +33 -0
  352. package/package.json +87 -0
  353. package/packages/utilities/learn-anything/README.md +41 -0
  354. package/packages/utilities/learn-anything/actions/_json.ts +191 -0
  355. package/packages/utilities/learn-anything/actions/_store.ts +248 -0
  356. package/packages/utilities/learn-anything/actions/buildModule.ts +487 -0
  357. package/packages/utilities/learn-anything/actions/explainSelection.ts +64 -0
  358. package/packages/utilities/learn-anything/actions/generateOutline.ts +170 -0
  359. package/packages/utilities/learn-anything/actions/generateQuiz.ts +72 -0
  360. package/packages/utilities/learn-anything/actions/generateTrainer.ts +106 -0
  361. package/packages/utilities/learn-anything/actions/refreshCourseCard.ts +76 -0
  362. package/packages/utilities/learn-anything/actions/tutorAsk.ts +93 -0
  363. package/packages/utilities/learn-anything/article-view.tsx +464 -0
  364. package/packages/utilities/learn-anything/manifest.json +42 -0
  365. package/packages/utilities/learn-anything/ui.tsx +1589 -0
@@ -0,0 +1,3 @@
1
+ "use strict";exports.id=5986,exports.ids=[5986],exports.modules={879:(a,b,c)=>{c.d(b,{G:()=>k});var d=c(73024),e=c(76760),f=c.n(e),g=c(55136),h=c.n(g),i=c(54287);class j{constructor(a,b){this.root=a,this.layers=b}static async create(a){return new j(a,[]).enter(a)}async enter(a){let b,c=f().join(a,i.KZ);try{b=await d.promises.readFile(c,"utf8")}catch{return this}let e=h()().add(b);return new j(this.root,[...this.layers,{dir:a,ig:e}])}ignores(a){let b=f().basename(a);if(i.Lj.has(b))return!0;for(let{dir:b,ig:c}of this.layers){let d=f().relative(b,a);if(!(!d||d.startsWith(".."))&&c.ignores(d))return!0}return!1}}async function*k(a,b={}){let{maxDepth:c=1/0,followSymlinks:d=!1}=b,e=f().resolve(a),g=await j.create(e);yield{abs:e,rel:".",isDir:!0},yield*l(e,e,g,0,c,d)}async function*l(a,b,c,e,g,h){let i;if(!(e>=g)){try{i=await d.promises.readdir(b,{withFileTypes:!0})}catch{return}for(let d of(i.sort((a,b)=>a.name.localeCompare(b.name)),i)){var j,k;let i=f().join(b,d.name);if(c.ignores(i))continue;let n=d.isSymbolicLink();if(n&&!h)continue;let o=d.isDirectory()||n&&await m(i),p=(j=a,k=i,f().relative(j,k).split(f().sep).join("/"));if(yield{abs:i,rel:p,isDir:o},o){let b=await c.enter(i);yield*l(a,i,b,e+1,g,h)}}}}async function m(a){try{return(await d.promises.stat(a)).isDirectory()}catch{return!1}}},4168:(a,b,c)=>{c.d(b,{S:()=>j});var d=c(73745);c(66493);var e=c(76760),f=c.n(e),g=c(53905),h=c(54287),i=c(879);async function j(a,b){try{let d=await (0,g.Zn)(a);if(!d)return{ok:!1,error:"Root not found"};let e=(b??"").toLowerCase().trim(),j=[];try{let{listUtilities:b}=await Promise.resolve().then(c.bind(c,8118));for(let c of(await b({rootId:a})))j.push({kind:"utility",relPath:`util:${c.scope}/${c.manifest.id}`,absPath:"",label:`${c.manifest.name} (${c.scope})`,parent:"utilities"})}catch{}for await(let a of(0,i.G)((0,h.FF)(d.path))){if(a.isDir||!a.rel.toLowerCase().endsWith(".md")||a.rel.startsWith("topics/")||a.rel.startsWith("attachments/"))continue;let b=`${h.fW}/${a.rel}`;j.push({kind:"kb",relPath:b,absPath:a.abs,label:a.rel,parent:"."===f().dirname(a.rel)?h.fW:`${h.fW}/${f().dirname(a.rel)}`})}for await(let a of(0,i.G)(d.path))a.isDir||j.push({kind:"file",relPath:a.rel,absPath:a.abs,label:a.rel,parent:"."===f().dirname(a.rel)?"":f().dirname(a.rel)});let k=e?j.filter(a=>{let b=a.relPath.toLowerCase();return f().basename(a.relPath).toLowerCase().includes(e)||b.includes(e)}):j,l={utility:0,kb:1,file:2};return k.sort((a,b)=>{if(a.kind!==b.kind)return l[a.kind]-l[b.kind];if(e){let c=f().basename(a.label).toLowerCase(),d=f().basename(b.label).toLowerCase(),g=+!c.startsWith(e),h=+!d.startsWith(e);if(g!==h)return g-h}return a.relPath.localeCompare(b.relPath)}),{ok:!0,items:k.slice(0,30)}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}(0,c(63781).D)([j]),(0,d.A)(j,"60f34cb5f6b482a5a4bcd98f0904da410a527a2ab4",null)},4507:(a,b,c)=>{c.d(b,{L:()=>M});var d=c(64173),e=c(17240),f=c(54249),g=c(75430),h=c(34719),i=c(56189),j=c(41856),k=c(33120),l=c(69552),m=c(97338),n=c(25299),o=c(63387),p=c(53834),q=c(97162),r=c(62261),s=c(77311),t=c(25436),u=c(24555),v=c(68669),w=c(79145),x=c(66979),y=c(87671),z=c(44052),A=c(20583),B=c(45477),C=c(91344),D=c(3265);let E=(0,D.createServerReference)("60f34cb5f6b482a5a4bcd98f0904da410a527a2ab4",D.callServer,void 0,D.findSourceMapURL,"searchMentionsAction"),F=[{id:"plan",trigger:"plan",label:"/plan",description:"Сначала покажи план — Reflex распишет шаги и подождёт одобрения.",kind:"agent-mode",usage:"/plan <задача>",icon:"ListChecks"},{id:"goal",trigger:"goal",label:"/goal",description:"Поставь цель — Reflex будет двигаться к ней сам, без напоминаний.",kind:"agent-mode",usage:"/goal <чего достичь>",icon:"Target"},{id:"research",trigger:"research",label:"/research",description:"Глубокое исследование темы — поиск в интернете + сводка с источниками.",kind:"agent-mode",usage:"/research <тема>",icon:"Telescope"},{id:"widget",trigger:"widget",label:"/widget",description:"Создать карточку на дашборде пространства.",kind:"agent-mode",usage:"/widget <что показать>",icon:"LayoutGrid"},{id:"workflow",trigger:"workflow",label:"/workflow",description:"Собрать рецепт — линейная автоматизация из шагов под задачу.",kind:"agent-mode",usage:"/workflow <что автоматизировать>",icon:"Workflow"},{id:"remember",trigger:"remember",label:"/remember",description:"Запомнить заметку — сразу в память, без обращения к AI.",kind:"direct",usage:"/remember <что запомнить>",icon:"BookmarkPlus"},{id:"mcp",trigger:"mcp",label:"/mcp",description:"Подключить внешний сервис (мастер настройки откроется в чате).",kind:"agent-mode",usage:"/mcp <что нужно>",icon:"PackagePlus"},{id:"skill",trigger:"skill",label:"/skill",description:"Подключить роль — готовый набор инструкций на этот разговор.",kind:"agent-mode",usage:"/skill <id-роли> [запрос]",icon:"Sparkles"},{id:"delete-topic",trigger:"delete-topic",label:"/delete-topic",description:"Удалить этот разговор (с подтверждением).",kind:"direct",usage:"/delete-topic",requiresConfirm:!0,allowEmpty:!0,icon:"Trash2"},{id:"clear-project",trigger:"clear-project",label:"/clear-project",description:"ОПАСНО: очистить пространство — все разговоры, карточки, память. Двойное подтверждение.",kind:"direct",usage:"/clear-project",requiresConfirm:!0,allowEmpty:!0,icon:"AlertOctagon"},{id:"util",trigger:"util",label:"/util",description:"Открыть мини-приложение (по части названия или из списка).",kind:"direct",usage:"/util <часть названия или id>",allowEmpty:!0,icon:"Boxes"},{id:"help",trigger:"help",label:"/help",description:"Список доступных команд.",kind:"direct",usage:"/help",allowEmpty:!0,icon:"HelpCircle"}],G=(0,D.createServerReference)("6045aeea001632c03b9388bbb27307f9b85409f06d",D.callServer,void 0,D.findSourceMapURL,"rememberAction"),H=(0,D.createServerReference)("606b339f68fe3420b4187eca6ee3f6590debee6d06",D.callServer,void 0,D.findSourceMapURL,"deleteCurrentTopicCommand"),I=(0,D.createServerReference)("60baac6750be8d662265b7cf43a42a6b5c1db8b51b",D.callServer,void 0,D.findSourceMapURL,"openUtilityAction"),J=(0,D.createServerReference)("40dbd4ddbc72e3d08c6f93083ace525b84416b9c20",D.callServer,void 0,D.findSourceMapURL,"clearProjectAction");var K=c(88724);let L={ListChecks:f.A,Target:g.A,Telescope:h.A,LayoutGrid:i.A,BookmarkPlus:j.A,PackagePlus:k.A,Sparkles:l.A,Trash2:m.A,AlertOctagon:n.A,HelpCircle:o.A,Workflow:p.A,Boxes:q.A};function M({rootId:a,topicId:b,placeholder:c,submitLabel:f,pendingLabel:g,SubmitIcon:h,disabled:i,onSubmit:j,active:k,onStop:l,clarifyLabel:m="Уточнить",stopLabel:n="Стоп"}){let o=(0,y.useRouter)(),[p,q]=(0,e.useState)(""),[u,v]=(0,e.useState)([]),[w,x]=(0,e.useState)(!1),[D,G]=(0,e.useState)(!1),[H,I]=(0,e.useState)(!1),J=(0,e.useRef)(null),K=(0,e.useRef)(null),[L,M]=(0,e.useState)(null),[R,S]=(0,e.useState)([]),[T,U]=(0,e.useState)(0),[V,W]=(0,e.useState)(!1),X=(0,e.useRef)(0),[Y,Z]=(0,e.useState)(null);(0,e.useCallback)(()=>{let a=J.current;a&&(a.style.height="auto",a.style.height=Math.min(a.scrollHeight,240)+"px")},[]);let $=(0,e.useCallback)((b,c)=>{let d=c;for(;d>0;){let a=b[d-1];if("@"===a){d-=1;break}if(/\s/.test(a)){d=-1;break}d-=1}if(d<0||"@"!==b[d]||d>0&&!/\s/.test(b[d-1])){M(null),S([]);return}let e=b.slice(d+1,c);M({start:d,end:c}),U(0),W(!0);let f=++X.current;(async()=>{let b=await E(a,e);X.current===f&&(W(!1),S(b.ok?b.items:[]))})()},[a]),_=(0,e.useCallback)(()=>{M(null),S([]),X.current++},[]),aa=(0,e.useCallback)(a=>{if(!a.startsWith("/")||a.indexOf(" ")>=0)return void Z(null);let b=a.slice(1).toLowerCase(),c=F.filter(a=>a.trigger.startsWith(b)||a.label.toLowerCase().includes(b)||a.description.toLowerCase().includes(b));if(0===c.length)return void Z(null);Z({items:c,index:0})},[]),ab=(0,e.useCallback)(()=>Z(null),[]),ac=(0,e.useCallback)(a=>{let b=J.current,c=`/${a.trigger}${a.allowEmpty&&"direct"===a.kind?"":" "}`;q(c),Z(null),requestAnimationFrame(()=>{b&&(b.focus(),b.setSelectionRange(c.length,c.length))})},[]),ad=(0,e.useCallback)(a=>{let b=J.current;if(!b||!L)return;let c=p.slice(0,L.start),d=p.slice(L.end),e=`@${a.relPath} `;q(c+e+d),_();let f=c.length+e.length;requestAnimationFrame(()=>{b.focus(),b.setSelectionRange(f,f)})},[p,L,_]),ae=(0,e.useCallback)(async b=>{if(0!==b.length){x(!0);try{let c=new FormData;for(let a of b)c.append("files",a);let d=await fetch(`/api/roots/${a}/attachments`,{method:"POST",body:c});if(!d.ok){let a=await d.json().catch(()=>({}));z.oR.error(a.error??`Не удалось загрузить (${d.status})`);return}let e=await d.json();v(a=>[...a,...e.files])}catch(a){z.oR.error(a instanceof Error?a.message:String(a))}finally{x(!1)}}},[a]),af=p.trim().length>0||u.length>0,ag=k&&l?af?"clarify":"stop":"send",ah=(0,e.useCallback)(async()=>{if(D)return;if("stop"===ag){if(!l)return;G(!0);try{await l()}finally{G(!1)}return}let c=p.trim();if(!c&&0===u.length||i&&"send"===ag)return;let d=function(a){var b;let c=a.trim();if(!c.startsWith("/"))return null;let d=/^\/([a-z][a-z0-9-]*)(?:\s+([\s\S]*))?$/.exec(c);if(!d)return null;let e=(b=d[1],F.find(a=>a.trigger===b)??null);return e?{def:e,payload:(d[2]??"").trim()}:null}(c);if(d&&"direct"===d.def.kind){G(!0);try{await N({cmd:d.def,payload:d.payload,rootId:a,topicId:b,router:o}),q("")}finally{G(!1)}return}G(!0);try{"clarify"===ag&&l&&await l(),await j({message:c,attachments:u})&&(q(""),v([]))}finally{G(!1)}},[p,u,D,i,ag,l,j,a,b,o]),ai=!D&&!w&&("stop"===ag||af&&(!i||"clarify"===ag));return(0,d.jsxs)("form",{onSubmit:a=>{a.preventDefault(),ah()},onDragEnter:a=>{Array.from(a.dataTransfer.types).includes("Files")&&(a.preventDefault(),I(!0))},onDragOver:a=>{Array.from(a.dataTransfer.types).includes("Files")&&(a.preventDefault(),I(!0))},onDragLeave:a=>{a.currentTarget.contains(a.relatedTarget)||I(!1)},onDrop:a=>{a.preventDefault(),I(!1);let b=Array.from(a.dataTransfer.files);b.length>0&&ae(b)},className:(0,C.cn)("space-y-2 rounded-md transition-colors",H&&"ring-2 ring-ring/60 bg-accent/40"),children:[u.length>0&&(0,d.jsx)("div",{className:"flex flex-wrap gap-1.5",children:u.map((a,b)=>(0,d.jsx)(Q,{attachment:a,onRemove:()=>v(b=>b.filter(b=>b!==a))},a.absPath+b))}),(0,d.jsxs)("div",{className:"flex items-end gap-2",children:[(0,d.jsxs)("div",{className:"relative flex-1",children:[(0,d.jsx)(B.T,{ref:J,value:p,onChange:a=>{q(a.target.value),$(a.target.value,a.target.selectionStart),aa(a.target.value)},onKeyUp:a=>{let b=a.currentTarget;$(b.value,b.selectionStart),aa(b.value)},onClick:a=>{let b=a.currentTarget;$(b.value,b.selectionStart),aa(b.value)},onBlur:()=>{setTimeout(()=>{_(),ab()},150)},onKeyDown:a=>{if(Y){if("ArrowDown"===a.key){a.preventDefault(),Z(a=>a?{...a,index:Math.min(a.items.length-1,a.index+1)}:null);return}if("ArrowUp"===a.key){a.preventDefault(),Z(a=>a?{...a,index:Math.max(0,a.index-1)}:null);return}if("Tab"===a.key){a.preventDefault();let b=Y.items[Y.index];b&&ac(b);return}if("Escape"===a.key){a.preventDefault(),ab();return}}if(L&&R.length>0){if("ArrowDown"===a.key){a.preventDefault(),U(a=>Math.min(R.length-1,a+1));return}if("ArrowUp"===a.key){a.preventDefault(),U(a=>Math.max(0,a-1));return}if("Enter"===a.key||"Tab"===a.key){a.preventDefault();let b=R[T];b&&ad(b);return}if("Escape"===a.key){a.preventDefault(),_();return}}"Enter"!==a.key||a.shiftKey||a.nativeEvent.isComposing||(a.preventDefault(),ah())},onPaste:a=>{let b=Array.from(a.clipboardData.files);b.length>0&&(a.preventDefault(),ae(b))},placeholder:c,rows:1,disabled:i||D,className:"resize-none min-h-[44px] max-h-60 text-base bg-background/70 border-transparent focus-visible:border-ring py-2.5 w-full"}),L&&(0,d.jsx)(P,{items:R,index:T,loading:V,onPick:ad,onHover:a=>U(a)}),Y&&!L&&(0,d.jsx)(O,{items:Y.items,index:Y.index,onPick:ac,onHover:a=>Z(b=>b?{...b,index:a}:null),topicAvailable:!!b})]}),(0,d.jsx)("input",{ref:K,type:"file",multiple:!0,className:"hidden",onChange:a=>{let b=Array.from(a.target.files??[]);b.length>0&&ae(b),a.target.value=""}}),(0,d.jsx)(A.$,{type:"button",size:"icon",variant:"ghost",onClick:()=>K.current?.click(),disabled:w||D||i,title:"Прикрепить файлы (можно drag&drop или Cmd+V)",className:"h-11 w-11 shrink-0",children:w?(0,d.jsx)(r.A,{className:"h-4 w-4 animate-spin"}):(0,d.jsx)(s.A,{className:"h-4 w-4"})}),(0,d.jsx)(A.$,{type:"submit",size:"lg",disabled:!ai,variant:"stop"===ag?"destructive":"default",className:"h-11 px-6 shadow-md shrink-0",children:D?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(r.A,{className:"mr-2 h-4 w-4 animate-spin"}),g]}):"stop"===ag?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(t.A,{className:"mr-2 h-4 w-4",fill:"currentColor"}),n]}):"clarify"===ag?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(h,{className:"mr-2 h-4 w-4"}),m]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(h,{className:"mr-2 h-4 w-4"}),f]})})]}),(0,d.jsx)("div",{className:"text-[10px] text-muted-foreground",children:"Enter — отправить \xb7 Shift+Enter — новая строка \xb7 @ — упомянуть файл/заметку \xb7 `/` — команды \xb7 можно перетащить файлы или вставить из буфера"})]})}async function N({cmd:a,payload:b,rootId:c,topicId:d,router:e}){if("help"===a.id){let a=F.map(a=>`• ${a.label} — ${a.description}`);z.oR.info(`Доступные команды:
2
+ ${a.join("\n")}`,{duration:12e3});return}if("remember"===a.id){if(!b)return void z.oR.error("Пусто — нечего запоминать. Использование: /remember <текст>");let a=await G(c,b);return void(a.ok?(z.oR.success(a.message??"Сохранено в KB"),(0,K.$d)(K.Zi.kbChanged(c))):z.oR.error(a.error))}if("delete-topic"===a.id){if(!d)return void z.oR.error("Команда работает только внутри топика.");if(!confirm("Удалить этот топик? Это необратимо."))return;let a=await H(c,d);return void(a.ok?(z.oR.success(a.message??"Удалено"),(0,K.$d)(K.Zi.topicsChanged(c)),a.redirectTo&&e.push(a.redirectTo)):z.oR.error(a.error))}if("util"===a.id){let a=await I(c,b);if(!a.ok)return void z.oR.error(a.error);if("redirect"===a.kind)return void e.push(a.url);let d=a.items.slice(0,8).map(a=>`• ${a.name} (${a.scope}/${a.id})`).join("\n");return void z.oR.message(`Несколько подходит — уточни запрос:
3
+ ${d}`,{duration:12e3})}if("clear-project"===a.id){if(!confirm("ВНИМАНИЕ: будут удалены ВСЕ топики, виджеты и KB-файлы этого проекта. Это необратимо. Продолжить?"))return;let a=prompt("Введи фразу \xabочистить\xbb (без кавычек), чтобы подтвердить:");if(a?.trim().toLowerCase()!=="очистить")return void z.oR.message("Подтверждение не прошло — отмена.");let b=await J(c);return void(b.ok?(z.oR.success(b.message??"Проект очищен"),(0,K.$d)(K.Zi.topicsChanged(c)),(0,K.$d)(K.Zi.kbChanged(c)),b.redirectTo&&e.push(b.redirectTo)):z.oR.error(b.error))}z.oR.error(`Неизвестная команда: ${a.label}`)}function O({items:a,index:b,onPick:c,onHover:e,topicAvailable:f}){return(0,d.jsxs)("div",{className:"absolute bottom-full left-0 right-0 mb-2 z-50 max-h-80 overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-lg",children:[(0,d.jsx)("div",{className:"px-3 py-1.5 text-[10px] uppercase tracking-wider text-muted-foreground border-b",children:"Команды \xb7 Tab — вставить \xb7 ↑↓ — выбор \xb7 Esc — закрыть"}),(0,d.jsx)("ul",{children:a.map((a,g)=>{let h=L[a.icon]??l.A,i="delete-topic"===a.id&&!f;return(0,d.jsx)("li",{children:(0,d.jsxs)("button",{type:"button",onMouseDown:b=>{b.preventDefault(),i||c(a)},onMouseEnter:()=>e(g),disabled:i,className:(0,C.cn)("w-full flex items-start gap-2 px-3 py-2 text-left",g===b?"bg-accent":"hover:bg-accent/60",i&&"opacity-40 cursor-not-allowed"),children:[(0,d.jsx)(h,{className:(0,C.cn)("h-3.5 w-3.5 mt-0.5 shrink-0","direct"===a.kind?"text-amber-600":"text-violet-600")}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsxs)("div",{className:"flex items-baseline gap-2 flex-wrap",children:[(0,d.jsx)("span",{className:"font-mono text-xs font-medium",children:a.label}),"direct"===a.kind&&(0,d.jsx)("span",{className:"text-[9px] uppercase tracking-wider text-amber-700",children:"прямое действие"}),a.requiresConfirm&&(0,d.jsx)("span",{className:"text-[9px] uppercase tracking-wider text-destructive",children:"с подтверждением"})]}),(0,d.jsx)("p",{className:"text-[11px] text-muted-foreground leading-snug mt-0.5",children:a.description}),(0,d.jsx)("p",{className:"text-[10px] text-muted-foreground/80 font-mono mt-0.5",children:a.usage})]})]})},a.id)})})]})}function P({items:a,index:b,loading:c,onPick:e,onHover:f}){return(0,d.jsx)("div",{className:"absolute bottom-full left-0 right-0 mb-2 z-50 max-h-72 overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-lg",children:c&&0===a.length?(0,d.jsxs)("div",{className:"px-3 py-2 text-xs text-muted-foreground flex items-center gap-2",children:[(0,d.jsx)(r.A,{className:"h-3 w-3 animate-spin"})," поиск…"]}):0===a.length?(0,d.jsx)("div",{className:"px-3 py-2 text-xs text-muted-foreground italic",children:"ничего не найдено"}):(0,d.jsx)("ul",{children:a.map((a,c)=>{let g="kb"===a.kind?u.A:v.A;return(0,d.jsx)("li",{children:(0,d.jsxs)("button",{type:"button",onMouseDown:b=>{b.preventDefault(),e(a)},onMouseEnter:()=>f(c),className:(0,C.cn)("w-full flex items-center gap-2 px-3 py-1.5 text-sm text-left",c===b?"bg-accent":"hover:bg-accent/60"),children:[(0,d.jsx)(g,{className:(0,C.cn)("h-3.5 w-3.5 shrink-0","kb"===a.kind?"text-primary":"text-muted-foreground")}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("div",{className:"truncate font-mono text-xs",children:a.relPath}),a.parent&&(0,d.jsx)("div",{className:"truncate text-[10px] text-muted-foreground",children:a.parent})]}),(0,d.jsx)("span",{className:(0,C.cn)("text-[10px] uppercase tracking-wider shrink-0","kb"===a.kind?"text-primary":"text-muted-foreground"),children:a.kind})]})},a.absPath)})})})}function Q({attachment:a,onRemove:b}){var c;let e=a.mime.startsWith("image/")?w.A:v.A;return(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full bg-muted px-2 py-1 text-[11px] max-w-[18rem]",children:[(0,d.jsx)(e,{className:"h-3 w-3 text-muted-foreground shrink-0"}),(0,d.jsx)("span",{className:"truncate",title:a.name,children:a.name}),(0,d.jsx)("span",{className:"text-muted-foreground",children:(c=a.size)<1024?`${c} B`:c<1048576?`${(c/1024).toFixed(1)} KB`:`${(c/1048576).toFixed(1)} MB`}),(0,d.jsx)("button",{type:"button",onClick:b,className:"ml-0.5 text-muted-foreground hover:text-foreground",children:(0,d.jsx)(x.A,{className:"h-3 w-3"})})]})}},8836:(a,b,c)=>{c.d(b,{E:()=>f});var d=c(64173),e=c(69552);function f({label:a="Спроси Reflex",headerRight:b,children:c}){return(0,d.jsx)("div",{className:"border-t bg-background",children:(0,d.jsx)("div",{className:"mx-auto max-w-3xl px-6 py-5",children:(0,d.jsx)("div",{className:"reflex-gradient rounded-2xl p-[2px] shadow-[0_8px_40px_-12px_oklch(0.55_0.2_290/0.45)]",children:(0,d.jsxs)("div",{className:"rounded-[14px] bg-background/85 backdrop-blur-xl px-5 py-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,d.jsx)("span",{className:"reflex-gradient inline-flex h-6 w-6 items-center justify-center rounded-full text-white shadow-sm",children:(0,d.jsx)(e.A,{className:"h-3.5 w-3.5"})}),(0,d.jsx)("span",{className:"text-[11px] uppercase tracking-[0.18em] text-muted-foreground",children:a}),b&&(0,d.jsx)("span",{className:"ml-auto flex items-center gap-1",children:b})]}),c]})})})})}},26290:(a,b,c)=>{c.d(b,{cn:()=>f});var d=c(83243),e=c(86103);function f(...a){return(0,e.QP)((0,d.$)(a))}},45477:(a,b,c)=>{c.d(b,{T:()=>f});var d=c(64173);c(17240);var e=c(91344);function f({className:a,...b}){return(0,d.jsx)("textarea",{"data-slot":"textarea",className:(0,e.cn)("flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40",a),...b})}},67248:(a,b,c)=>{c.d(b,{E:()=>i});var d=c(63003);c(34750);var e=c(86209),f=c(65715),g=c(26290);let h=(0,e.F)("inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3",{variants:{variant:{default:"bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"bg-destructive text-white focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90",outline:"border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",ghost:"[a&]:hover:bg-accent [a&]:hover:text-accent-foreground",link:"text-primary underline-offset-4 [a&]:hover:underline"}},defaultVariants:{variant:"default"}});function i({className:a,variant:b="default",asChild:c=!1,...e}){let i=c?f.bL:"span";return(0,d.jsx)(i,{"data-slot":"badge","data-variant":b,className:(0,g.cn)(h({variant:b}),a),...e})}},72901:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{LL:()=>v,ZC:()=>z,b2:()=>u,qO:()=>t,wd:()=>y});var e=c(73745);c(66493);var f=c(73024),g=c(76760),h=c.n(g),i=c(65326),j=c(53905),k=c(54287),l=c(56942),m=c(5492),n=c(13415),o=c(93554),p=c(49410),q=c(96921),r=c(63781),s=a([n,o]);async function t(a,b){try{let c=b.trim();if(!c)return{ok:!1,error:"Пусто — нечего запоминать."};let d=await (0,j.Zn)(a);if(!d)return{ok:!1,error:"Root not found"};let e=c.split(/\r?\n/,1)[0].trim(),f=e.length>80?e.slice(0,77).trimEnd()+"…":e,g=await (0,l.j)({rootPath:d.path,directive:{kind:"note",title:f,body:c}});return(0,i.revalidatePath)(`/roots/${a}`),{ok:!0,message:`Сохранено в ${g.relPath}`}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function u(a,b){let c=await (0,n.L4)(a,b);return c.ok?{ok:!0,redirectTo:`/roots/${a}`,message:"Топик удалён"}:{ok:!1,error:c.error??"Failed"}}async function v(a){try{let b=await (0,j.Zn)(a);if(!b)return{ok:!1,error:"Root not found"};let c=(0,k.FF)(b.path);for(let a of(await (0,m.hk)(b.path)))await o.z.stopTopic(a.meta.id).catch(()=>void 0);return await w(h().join(c,"widgets")),await w(h().join(c,"dashboard-layout.json")),await w(h().join(c,"topics")),await x(c),(0,i.revalidatePath)(`/roots/${a}`),{ok:!0,redirectTo:`/roots/${a}`,message:"Проект очищен. Поехали с нуля."}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function w(a){try{await f.promises.rm(a,{recursive:!0,force:!0})}catch{}}async function x(a){let b;try{b=await f.promises.readdir(a,{withFileTypes:!0})}catch{return}for(let c of b){let b=h().join(a,c.name);if(c.isDirectory()){await x(b);try{let a=await f.promises.readdir(b);0===a.length&&await f.promises.rmdir(b)}catch{}continue}c.name.toLowerCase().endsWith(".md")&&await f.promises.unlink(b).catch(()=>void 0)}}async function y(){let a=await (0,p.b)();return{ok:!0,commands:q.Lo,skills:a}}async function z(a,b){let{listUtilities:d}=await Promise.resolve().then(c.bind(c,8118)),e=await d({rootId:a}),f=b.trim().toLowerCase(),g=e.map(a=>({id:a.manifest.id,name:a.manifest.name,scope:a.scope,rootId:a.rootId})),h=a=>{let b=a.rootId?`?rootId=${encodeURIComponent(a.rootId)}`:"";return`/utilities/${a.scope}/${a.id}${b}`};if(!f)return 0===g.length?{ok:!1,error:"Пока ни одного мини-приложения не установлено."}:{ok:!0,kind:"choices",items:g.map(a=>({url:h(a),id:a.id,name:a.name,scope:a.scope}))};let i=g.find(a=>a.id.toLowerCase()===f);if(i)return{ok:!0,kind:"redirect",url:h(i)};let j=g.filter(a=>a.id.toLowerCase().includes(f)||a.name.toLowerCase().includes(f));return 1===j.length?{ok:!0,kind:"redirect",url:h(j[0])}:0===j.length?{ok:!1,error:`Ничего не нашлось по \xab${b}\xbb. Установлено: ${g.length}.`}:{ok:!0,kind:"choices",items:j.map(a=>({url:h(a),id:a.id,name:a.name,scope:a.scope}))}}[n,o]=s.then?(await s)():s,(0,r.D)([t,u,v,y,z]),(0,e.A)(t,"6045aeea001632c03b9388bbb27307f9b85409f06d",null),(0,e.A)(u,"606b339f68fe3420b4187eca6ee3f6590debee6d06",null),(0,e.A)(v,"40dbd4ddbc72e3d08c6f93083ace525b84416b9c20",null),(0,e.A)(y,"0079c3d81ca282a36ecb9822e223ef5deb549c1448",null),(0,e.A)(z,"60baac6750be8d662265b7cf43a42a6b5c1db8b51b",null),d()}catch(a){d(a)}})},84913:(a,b,c)=>{c.d(b,{$:()=>i});var d=c(63003);c(34750);var e=c(86209),f=c(65715),g=c(26290);let h=(0,e.F)("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function i({className:a,variant:b="default",size:c="default",asChild:e=!1,...i}){let j=e?f.bL:"button";return(0,d.jsx)(j,{"data-slot":"button","data-variant":b,"data-size":c,className:(0,g.cn)(h({variant:b,size:c,className:a})),...i})}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=613,exports.ids=[613],exports.modules={50613:(a,b,c)=>{c.d(b,{UtilityIframe:()=>r});var d=c(64173),e=c(17240),f=c(53186),g=c(65177),h=c(66979),i=c(69552),j=c(62261),k=c(73569),l=c(1056),m=c.n(l),n=c(44052),o=c(3265);function p({scope:a,utilityId:b,utilityName:c,rootId:l,requestSnapshot:o,onClose:p}){let[r,s]=(0,e.useState)(null),[t,u]=(0,e.useState)([]),[v,w]=(0,e.useState)(""),[x,y]=(0,e.useState)(null),[z,A]=(0,e.useTransition)(),[B,C]=(0,e.useState)(!1),D=(0,e.useRef)(null);(0,e.useRef)(null),(0,e.useRef)("");let[E,F]=(0,e.useState)(""),G=()=>{let a=v.trim();a&&l&&r&&(w(""),u(b=>[...b,{role:"user",text:a,ts:new Date().toISOString()}]),A(async()=>{let b;try{b=await Promise.race([o(),new Promise(a=>setTimeout(()=>a(void 0),600))])}catch{}let c=void 0!==b?function(a,b){let c;try{c="string"==typeof b?b:JSON.stringify(b,null,2)}catch{c=String(b)}return c.length>4e3&&(c=c.slice(0,4e3)+"\n…[truncated]"),["[Контекст мини-приложения]",c,"[/контекст]\n",a].join("\n")}(a,b):a;try{let a=await fetch(`/api/roots/${l}/chat/${r}/send`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:c})});if(!a.ok){let b=await a.json().catch(()=>({}));n.oR.error(b.error??`HTTP ${a.status}`)}}catch(a){n.oR.error(String(a))}}))};return(0,d.jsxs)("aside",{className:"flex h-full flex-col border-l bg-card",children:[(0,d.jsxs)("header",{className:"border-b px-3 py-2 flex items-center gap-2",children:[(0,d.jsx)(f.A,{className:"h-3.5 w-3.5 text-violet-600"}),(0,d.jsx)("span",{className:"text-sm font-medium",children:"Помощник"}),(0,d.jsx)("span",{className:"text-[10px] text-muted-foreground ml-1",children:"знает контекст этого приложения"}),l&&r&&(0,d.jsx)(m(),{href:`/roots/${l}/chat/${r}`,className:"ml-auto p-1 rounded hover:bg-accent text-muted-foreground hover:text-foreground",title:"Открыть в полном чате",children:(0,d.jsx)(g.A,{className:"h-3.5 w-3.5"})}),p&&(0,d.jsx)("button",{type:"button",onClick:p,className:"p-1 rounded hover:bg-accent "+(l&&r?"":"ml-auto"),title:"Скрыть",children:(0,d.jsx)(h.A,{className:"h-3.5 w-3.5"})})]}),(0,d.jsxs)("div",{ref:D,className:"flex-1 overflow-y-auto px-3 py-2 space-y-2 text-sm",children:[x&&(0,d.jsx)("p",{className:"text-xs text-red-600",children:x}),!x&&0===t.length&&!E&&(0,d.jsxs)("div",{className:"text-xs text-muted-foreground flex items-start gap-2",children:[(0,d.jsx)(i.A,{className:"h-3 w-3 mt-0.5 text-violet-600 shrink-0"}),(0,d.jsx)("span",{children:"Спроси что-нибудь про данные этого мини-приложения. Диалог сохраняется как обычный разговор — можно открыть полностью по иконке в углу."})]}),t.map((a,b)=>(0,d.jsx)(q,{role:a.role,text:a.text},b)),B&&E&&(0,d.jsx)(q,{role:"assistant",text:E,streaming:!0}),z&&!B&&(0,d.jsxs)("div",{className:"mr-6 rounded-md bg-muted/40 px-2 py-1.5 text-xs text-muted-foreground inline-flex items-center gap-2",children:[(0,d.jsx)(j.A,{className:"h-3 w-3 animate-spin"}),"Reflex думает…"]})]}),(0,d.jsxs)("div",{className:"border-t px-3 py-2 flex items-end gap-1.5",children:[(0,d.jsx)("textarea",{value:v,onChange:a=>w(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.metaKey||a.ctrlKey)&&(a.preventDefault(),G())},rows:1,placeholder:"Спроси (⌘↵)…",disabled:z||!!x||!r,className:"flex-1 resize-none rounded border bg-background px-2 py-1 text-xs focus:outline-none focus:ring-1 focus:ring-violet-400 max-h-24"}),(0,d.jsx)("button",{type:"button",onClick:G,disabled:z||!v.trim()||!!x||!r,className:"inline-flex items-center justify-center rounded bg-violet-600 px-2 py-1 text-white hover:bg-violet-700 disabled:opacity-50",children:z?(0,d.jsx)(j.A,{className:"h-3 w-3 animate-spin"}):(0,d.jsx)(k.A,{className:"h-3 w-3"})})]})]})}function q({role:a,text:b,streaming:c}){let e=b;return("user"===a&&(e=e.replace(/^\s*\[Контекст мини-приложения\][\s\S]*?\[\/контекст\]\s*/,"").trim()),e.trim())?(0,d.jsxs)("div",{className:"user"===a?"ml-6 rounded-md bg-violet-50 dark:bg-violet-950/30 px-2 py-1.5":"mr-6 rounded-md bg-muted/40 px-2 py-1.5 whitespace-pre-wrap",children:[(0,d.jsxs)("div",{className:"text-[10px] uppercase tracking-wider text-muted-foreground mb-0.5",children:["user"===a?"Ты":"assistant"===a?"Reflex":"Система",c&&(0,d.jsx)("span",{className:"ml-1 text-violet-600",children:"●"})]}),e]}):null}function r({scope:a,id:b,rootId:c,className:g,title:h,agentChat:i,utilityName:j}){let k=(0,e.useRef)(null),l=(0,e.useRef)(null),[m,n]=(0,e.useState)(!0),o=c?`?rootId=${encodeURIComponent(c)}`:"",q=`/api/utilities/${a}/${b}/iframe${o}`,r=(0,d.jsx)("iframe",{ref:k,src:q,sandbox:"allow-scripts allow-forms allow-same-origin",className:g??"h-full w-full border-0 bg-white",title:h??`utility-${b}`});return i?(0,d.jsxs)("div",{className:"flex h-full w-full",children:[(0,d.jsxs)("div",{className:"flex-1 min-w-0 relative",children:[r,!m&&(0,d.jsxs)("button",{type:"button",onClick:()=>n(!0),className:"absolute right-3 bottom-3 inline-flex items-center gap-1 rounded-full bg-violet-600 px-3 py-1.5 text-xs text-white shadow-lg hover:bg-violet-700",title:"Открыть помощника",children:[(0,d.jsx)(f.A,{className:"h-3.5 w-3.5"}),"Помощник"]})]}),m&&(0,d.jsx)("div",{className:"w-80 shrink-0",children:(0,d.jsx)(p,{scope:a,utilityId:b,...j?{utilityName:j}:{},...c?{rootId:c}:{},requestSnapshot:()=>{let a=k.current?.contentWindow;return a?(l.current&&(clearTimeout(l.current.timer),l.current.resolve(void 0),l.current=null),new Promise(b=>{let c=setTimeout(()=>{l.current?.resolve===b&&(l.current=null,b(void 0))},500);l.current={resolve:b,timer:c};try{a.postMessage({type:"request-snapshot"},"*")}catch{clearTimeout(c),l.current=null,b(void 0)}})):Promise.resolve(void 0)},onClose:()=>n(!1)})})]}):r}o.callServer,o.findSourceMapURL,o.callServer,o.findSourceMapURL},65177:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(42557).A)("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]])},66979:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(42557).A)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},73569:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(42557).A)("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]])}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=6216,exports.ids=[1088,6216,6435],exports.modules={16435:(a,b,c)=>{c.d(b,{U:()=>w});var d=c(29021),e=c(21820),f=c(33873),g=c(79646),h=c(4984),i=c(8086);async function j(a){var b;if(void 0===a)return{cleanup:async()=>{}};if(!("object"==typeof(b=a)&&null!==b&&!Array.isArray(b)))throw Error("outputSchema must be a plain JSON object");let c=await d.promises.mkdtemp(f.join(e.tmpdir(),"codex-output-schema-")),g=f.join(c,"schema.json"),h=async()=>{try{await d.promises.rm(c,{recursive:!0,force:!0})}catch{}};try{return await d.promises.writeFile(g,JSON.stringify(a),"utf8"),{schemaPath:g,cleanup:h}}catch(a){throw await h(),a}}var k=class{_exec;_options;_id;_threadOptions;get id(){return this._id}constructor(a,b,c,d=null){this._exec=a,this._options=b,this._id=d,this._threadOptions=c}async runStreamed(a,b={}){return{events:this.runStreamedInternal(a,b)}}async *runStreamedInternal(a,b={}){let{schemaPath:c,cleanup:d}=await j(b.outputSchema),e=this._threadOptions,{prompt:f,images:g}=function(a){if("string"==typeof a)return{prompt:a,images:[]};let b=[],c=[];for(let d of a)"text"===d.type?b.push(d.text):"local_image"===d.type&&c.push(d.path);return{prompt:b.join("\n\n"),images:c}}(a),h=this._exec.run({input:f,baseUrl:this._options.baseUrl,apiKey:this._options.apiKey,threadId:this._id,images:g,model:e?.model,sandboxMode:e?.sandboxMode,workingDirectory:e?.workingDirectory,skipGitRepoCheck:e?.skipGitRepoCheck,outputSchemaFile:c,modelReasoningEffort:e?.modelReasoningEffort,signal:b.signal,networkAccessEnabled:e?.networkAccessEnabled,webSearchMode:e?.webSearchMode,webSearchEnabled:e?.webSearchEnabled,approvalPolicy:e?.approvalPolicy,additionalDirectories:e?.additionalDirectories});try{for await(let a of h){let b;try{b=JSON.parse(a)}catch(b){throw Error(`Failed to parse item: ${a}`,{cause:b})}"thread.started"===b.type&&(this._id=b.thread_id),yield b}}finally{await d()}}async run(a,b={}){let c=this.runStreamedInternal(a,b),d=[],e="",f=null,g=null;for await(let a of c)if("item.completed"===a.type)"agent_message"===a.item.type&&(e=a.item.text),d.push(a.item);else if("turn.completed"===a.type)f=a.usage;else if("turn.failed"===a.type){g=a.error;break}if(g)throw Error(g.message);return{items:d,finalResponse:e,usage:f}}},l="CODEX_INTERNAL_ORIGINATOR_OVERRIDE",m="@openai/codex",n={"x86_64-unknown-linux-musl":"@openai/codex-linux-x64","aarch64-unknown-linux-musl":"@openai/codex-linux-arm64","x86_64-apple-darwin":"@openai/codex-darwin-x64","aarch64-apple-darwin":"@openai/codex-darwin-arm64","x86_64-pc-windows-msvc":"@openai/codex-win32-x64","aarch64-pc-windows-msvc":"@openai/codex-win32-arm64"},o=(0,i.createRequire)("file:///home/runner/work/reflex-agent/reflex-agent/node_modules/.pnpm/@openai+codex-sdk@0.133.0/node_modules/@openai/codex-sdk/dist/index.js"),p=class{executablePath;pathDirs;envOverride;configOverrides;constructor(a=null,b,c){if(a)this.executablePath=a,this.pathDirs=[];else{let a=function(){let a,{platform:b,arch:c}=process,d=null;switch(b){case"linux":case"android":switch(c){case"x64":d="x86_64-unknown-linux-musl";break;case"arm64":d="aarch64-unknown-linux-musl"}break;case"darwin":switch(c){case"x64":d="x86_64-apple-darwin";break;case"arm64":d="aarch64-apple-darwin"}break;case"win32":switch(c){case"x64":d="x86_64-pc-windows-msvc";break;case"arm64":d="aarch64-pc-windows-msvc"}}if(!d)throw Error(`Unsupported platform: ${b} (${c})`);let e=n[d];if(!e)throw Error(`Unsupported target triple: ${d}`);try{let b=o.resolve(`${m}/package.json`),c=(0,i.createRequire)(b).resolve(`${e}/package.json`);a=f.join(f.dirname(c),"vendor")}catch{throw Error(`Unable to locate Codex CLI binaries. Ensure ${m} is installed with optional dependencies.`)}let g=function(a,b,c){let d=f.join(a,b),e=f.join(d,"bin",c);if(u(e)&&u(f.join(d,"codex-package.json")))return{executablePath:e,pathDirs:t(f.join(d,"codex-path"))};let g=f.join(d,"codex",c);return u(g)?{executablePath:g,pathDirs:t(f.join(d,"path"))}:null}(a,d,"win32"===process.platform?"codex.exe":"codex");if(!g)throw Error(`Unable to locate Codex CLI binaries for ${d}. Ensure ${m} is installed with optional dependencies.`);return g}();this.executablePath=a.executablePath,this.pathDirs=a.pathDirs}this.envOverride=b,this.configOverrides=c}async *run(a){let b=["exec","--experimental-json"];if(this.configOverrides)for(let a of function(a){let b=[];return function a(b,c,d){if(!s(b))if(c)return void d.push(`${c}=${q(b,c)}`);else throw Error("Codex config overrides must be a plain object");let e=Object.entries(b);if(c||0!==e.length){if(c&&0===e.length)return void d.push(`${c}={}`);for(let[b,f]of e){if(!b)throw Error("Codex config override keys must be non-empty strings");if(void 0===f)continue;let e=c?`${c}.${b}`:b;s(f)?a(f,e,d):d.push(`${e}=${q(f,e)}`)}}}(a,"",b),b}(this.configOverrides))b.push("--config",a);if(a.baseUrl&&b.push("--config",`openai_base_url=${q(a.baseUrl,"openai_base_url")}`),a.model&&b.push("--model",a.model),a.sandboxMode&&b.push("--sandbox",a.sandboxMode),a.workingDirectory&&b.push("--cd",a.workingDirectory),a.additionalDirectories?.length)for(let c of a.additionalDirectories)b.push("--add-dir",c);if(a.skipGitRepoCheck&&b.push("--skip-git-repo-check"),a.outputSchemaFile&&b.push("--output-schema",a.outputSchemaFile),a.modelReasoningEffort&&b.push("--config",`model_reasoning_effort="${a.modelReasoningEffort}"`),void 0!==a.networkAccessEnabled&&b.push("--config",`sandbox_workspace_write.network_access=${a.networkAccessEnabled}`),a.webSearchMode?b.push("--config",`web_search="${a.webSearchMode}"`):!0===a.webSearchEnabled?b.push("--config",'web_search="live"'):!1===a.webSearchEnabled&&b.push("--config",'web_search="disabled"'),a.approvalPolicy&&b.push("--config",`approval_policy="${a.approvalPolicy}"`),a.threadId&&b.push("resume",a.threadId),a.images?.length)for(let c of a.images)b.push("--image",c);let c={};if(this.envOverride)Object.assign(c,this.envOverride);else for(let[a,b]of Object.entries(process.env))void 0!==b&&(c[a]=b);c[l]||(c[l]="codex_sdk_ts"),a.apiKey&&(c.CODEX_API_KEY=a.apiKey),this.pathDirs.length>0&&function(a,b,c=process.platform){let d=function(a,b){if("win32"!==b)return"PATH";let c=Object.keys(a).filter(a=>"path"===a.toLowerCase());return c.includes("Path")?"Path":c.at(-1)??"PATH"}(a,c);if("win32"===c)for(let b of Object.keys(a))"path"===b.toLowerCase()&&b!==d&&delete a[b];let e=(a[d]??"").split(f.delimiter).filter(a=>a.length>0&&!b.includes(a));a[d]=[...b,...e].join(f.delimiter)}(c,this.pathDirs);let d=(0,g.spawn)(this.executablePath,b,{env:c,signal:a.signal}),e=null;if(d.once("error",a=>e=a),!d.stdin)throw d.kill(),Error("Child process has no stdin");if(d.stdin.write(a.input),d.stdin.end(),!d.stdout)throw d.kill(),Error("Child process has no stdout");let i=[];d.stderr&&d.stderr.on("data",a=>{i.push(a)});let j=new Promise(a=>{d.once("exit",(b,c)=>{a({code:b,signal:c})})}),k=h.createInterface({input:d.stdout,crlfDelay:1/0});try{for await(let a of k)yield a;if(e)throw e;let{code:a,signal:b}=await j;if(0!==a||b){let c=Buffer.concat(i),d=b?`signal ${b}`:`code ${a??1}`;throw Error(`Codex Exec exited with ${d}: ${c.toString("utf8")}`)}}finally{k.close(),d.removeAllListeners();try{d.killed||d.kill()}catch{}}}};function q(a,b){if("string"==typeof a)return JSON.stringify(a);if("number"==typeof a){if(!Number.isFinite(a))throw Error(`Codex config override at ${b} must be a finite number`);return`${a}`}if("boolean"==typeof a)return a?"true":"false";if(Array.isArray(a)){let c=a.map((a,c)=>q(a,`${b}[${c}]`));return`[${c.join(", ")}]`}if(s(a)){let d=[];for(let[e,f]of Object.entries(a)){var c;if(!e)throw Error("Codex config override keys must be non-empty strings");void 0!==f&&d.push(`${r.test(c=e)?c:JSON.stringify(c)} = ${q(f,`${b}.${e}`)}`)}return`{${d.join(", ")}}`}else if(null===a)throw Error(`Codex config override at ${b} cannot be null`);else{let c=typeof a;throw Error(`Unsupported Codex config override value at ${b}: ${c}`)}}var r=/^[A-Za-z0-9_-]+$/;function s(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function t(...a){return a.filter(v)}function u(a){try{return(0,d.statSync)(a).isFile()}catch{return!1}}function v(a){try{return(0,d.statSync)(a).isDirectory()}catch{return!1}}var w=class{exec;options;constructor(a={}){let{codexPathOverride:b,env:c,config:d}=a;this.exec=new p(b,c,d),this.options=a}startThread(a={}){return new k(this.exec,this.options,a)}resumeThread(a,b={}){return new k(this.exec,this.options,b,a)}}},61088:(a,b,c)=>{c.d(b,{He:()=>o,Nb:()=>s,Tf:()=>l,dt:()=>n,listCodexModels:()=>q});var d=c(16435),e=c(73024),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(31421);let k=null;function l(){return k||(k=new d.U),k}let m=null;async function n(){return m||(m=(async()=>{let a=process.env.CODEX_HOME||i().join(g().homedir(),".codex"),b=i().join(a,"skills",".system","imagegen"),c=i().join(b,"SKILL.md");try{await e.promises.access(c);return}catch{}let d=i().join(process.cwd(),"lib","server","codex","skills","imagegen","SKILL.md");try{await e.promises.mkdir(b,{recursive:!0}),await e.promises.copyFile(d,c)}catch(a){console.warn("Failed to install Reflex imagegen skill into $CODEX_HOME:",a instanceof Error?a.message:a)}})())}function o(){let a=process.env.CODEX_HOME||i().join(g().homedir(),".codex");return i().join(a,"generated_images")}let p=null;async function q(a={}){if(!a.force&&p&&Date.now()-p.at<6e4)return p.models;let b=await r();return p={at:Date.now(),models:b},b}async function r(){return new Promise((a,b)=>{let c=(0,j.spawn)("codex",["app-server"],{stdio:["pipe","pipe","pipe"]}),d="",e=!1,f=()=>{try{c.kill("SIGTERM")}catch{}},g=setTimeout(()=>{e||(e=!0,f(),b(Error("codex app-server model/list timed out")))},1e4);c.on("error",a=>{e||(e=!0,clearTimeout(g),b(a))}),c.stdout.on("data",b=>{let c=(d+=b.toString("utf8")).indexOf("\n");for(;c>=0;){let b=d.slice(0,c).trim();if(d=d.slice(c+1),b.length>0)try{let c=JSON.parse(b);if(2===c.id&&c.result&&Array.isArray(c.result.data)){let b=[];for(let a of c.result.data)"string"==typeof a?.id&&b.push({id:a.id,displayName:"string"==typeof a.displayName?a.displayName:a.id,description:"string"==typeof a.description?a.description:"",hidden:!0===a.hidden,isDefault:!0===a.isDefault});if(!e){e=!0,clearTimeout(g),f(),a(b);return}}}catch{}c=d.indexOf("\n")}}),c.stderr.on("data",()=>{}),c.stdin.write(JSON.stringify({jsonrpc:"2.0",id:1,method:"initialize",params:{clientInfo:{name:"reflex",title:"Reflex",version:"0.0.0"},capabilities:{}}})+"\n"),c.stdin.write(JSON.stringify({jsonrpc:"2.0",method:"initialized",params:{}})+"\n"),c.stdin.write(JSON.stringify({jsonrpc:"2.0",id:2,method:"model/list",params:{}})+"\n"),c.stdin.end()})}async function s(a){if(!a)return;let b=process.env.CODEX_HOME||i().join(g().homedir(),".codex"),c=i().join(b,"sessions"),d=new Date;for(let b of[-1,0,1]){let f,g=new Date(d);g.setDate(g.getDate()+b);let h=i().join(c,String(g.getFullYear()),String(g.getMonth()+1).padStart(2,"0"),String(g.getDate()).padStart(2,"0"));try{f=await e.promises.readdir(h)}catch{continue}for(let b of f)b.includes(a)&&await e.promises.unlink(i().join(h,b)).catch(()=>{})}}},76216:(a,b,c)=>{c.r(b),c.d(b,{generateWithCodex:()=>i});var d=c(73024),e=c(76760),f=c.n(e),g=c(61088),h=c(19219);async function i(a){await (0,g.dt)();let b=(0,g.He)(),c=await j(b),e=(0,g.Tf)().startThread({sandboxMode:"workspace-write",additionalDirectories:[b],approvalPolicy:"never",skipGitRepoCheck:!0}),i=[`$imagegen — generate one image.`,a.size?`Size: ${a.size}.`:"","After it is saved, print exactly one line:","RESULT_PATH=<absolute path to the saved file>","Then stop. Do not move the file; do not generate variants.","",`Image description: ${a.prompt}`].filter(Boolean).join("\n"),l="";try{l=(await e.run(i)).finalResponse??""}catch(b){let a=b instanceof Error?b.message:String(b);throw Error(`codex image-gen failed: ${a.slice(0,400)}`)}finally{await (0,g.Nb)(e.id)}let m=function(a){let b=/RESULT_PATH\s*=\s*([^\r\n]+?)\s*$/m.exec(a.trim());if(!b)return null;let c=b[1].trim().replace(/^['"]|['"]$/g,"");return c.length>0?c:null}(l);if(!m||!await k(m)){let a=function(a,b){let c=null;for(let[d,e]of b.files){let b=a.files.get(d);(void 0===b||e>b)&&(!c||e>c.mtime)&&(c={path:d,mtime:e})}return c?.path??null}(c,await j(b));a&&(m=a)}if(!m)throw Error(`Codex finished but no image file was found in ${b}. Last response: ${function(a,b){let c=a.trim();return c.length>200?"…"+c.slice(c.length-b):c}(l,200)}`);let n=await d.promises.readFile(m),o=f().extname(m).slice(1).toLowerCase()||"png",p=(0,h.tf)(o);return(0,h.YN)(a.rootId,n,p)}async function j(a){let b,c=new Map;try{b=await d.promises.readdir(a)}catch{return{files:c}}return await Promise.all(b.map(async b=>{let e=f().join(a,b);try{let a=await d.promises.stat(e);a.isFile()&&c.set(e,a.mtimeMs)}catch{}})),{files:c}}async function k(a){try{return(await d.promises.stat(a)).isFile()}catch{return!1}}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=6435,exports.ids=[6435],exports.modules={16435:(a,b,c)=>{c.d(b,{U:()=>w});var d=c(29021),e=c(21820),f=c(33873),g=c(79646),h=c(4984),i=c(8086);async function j(a){var b;if(void 0===a)return{cleanup:async()=>{}};if(!("object"==typeof(b=a)&&null!==b&&!Array.isArray(b)))throw Error("outputSchema must be a plain JSON object");let c=await d.promises.mkdtemp(f.join(e.tmpdir(),"codex-output-schema-")),g=f.join(c,"schema.json"),h=async()=>{try{await d.promises.rm(c,{recursive:!0,force:!0})}catch{}};try{return await d.promises.writeFile(g,JSON.stringify(a),"utf8"),{schemaPath:g,cleanup:h}}catch(a){throw await h(),a}}var k=class{_exec;_options;_id;_threadOptions;get id(){return this._id}constructor(a,b,c,d=null){this._exec=a,this._options=b,this._id=d,this._threadOptions=c}async runStreamed(a,b={}){return{events:this.runStreamedInternal(a,b)}}async *runStreamedInternal(a,b={}){let{schemaPath:c,cleanup:d}=await j(b.outputSchema),e=this._threadOptions,{prompt:f,images:g}=function(a){if("string"==typeof a)return{prompt:a,images:[]};let b=[],c=[];for(let d of a)"text"===d.type?b.push(d.text):"local_image"===d.type&&c.push(d.path);return{prompt:b.join("\n\n"),images:c}}(a),h=this._exec.run({input:f,baseUrl:this._options.baseUrl,apiKey:this._options.apiKey,threadId:this._id,images:g,model:e?.model,sandboxMode:e?.sandboxMode,workingDirectory:e?.workingDirectory,skipGitRepoCheck:e?.skipGitRepoCheck,outputSchemaFile:c,modelReasoningEffort:e?.modelReasoningEffort,signal:b.signal,networkAccessEnabled:e?.networkAccessEnabled,webSearchMode:e?.webSearchMode,webSearchEnabled:e?.webSearchEnabled,approvalPolicy:e?.approvalPolicy,additionalDirectories:e?.additionalDirectories});try{for await(let a of h){let b;try{b=JSON.parse(a)}catch(b){throw Error(`Failed to parse item: ${a}`,{cause:b})}"thread.started"===b.type&&(this._id=b.thread_id),yield b}}finally{await d()}}async run(a,b={}){let c=this.runStreamedInternal(a,b),d=[],e="",f=null,g=null;for await(let a of c)if("item.completed"===a.type)"agent_message"===a.item.type&&(e=a.item.text),d.push(a.item);else if("turn.completed"===a.type)f=a.usage;else if("turn.failed"===a.type){g=a.error;break}if(g)throw Error(g.message);return{items:d,finalResponse:e,usage:f}}},l="CODEX_INTERNAL_ORIGINATOR_OVERRIDE",m="@openai/codex",n={"x86_64-unknown-linux-musl":"@openai/codex-linux-x64","aarch64-unknown-linux-musl":"@openai/codex-linux-arm64","x86_64-apple-darwin":"@openai/codex-darwin-x64","aarch64-apple-darwin":"@openai/codex-darwin-arm64","x86_64-pc-windows-msvc":"@openai/codex-win32-x64","aarch64-pc-windows-msvc":"@openai/codex-win32-arm64"},o=(0,i.createRequire)("file:///home/runner/work/reflex-agent/reflex-agent/node_modules/.pnpm/@openai+codex-sdk@0.133.0/node_modules/@openai/codex-sdk/dist/index.js"),p=class{executablePath;pathDirs;envOverride;configOverrides;constructor(a=null,b,c){if(a)this.executablePath=a,this.pathDirs=[];else{let a=function(){let a,{platform:b,arch:c}=process,d=null;switch(b){case"linux":case"android":switch(c){case"x64":d="x86_64-unknown-linux-musl";break;case"arm64":d="aarch64-unknown-linux-musl"}break;case"darwin":switch(c){case"x64":d="x86_64-apple-darwin";break;case"arm64":d="aarch64-apple-darwin"}break;case"win32":switch(c){case"x64":d="x86_64-pc-windows-msvc";break;case"arm64":d="aarch64-pc-windows-msvc"}}if(!d)throw Error(`Unsupported platform: ${b} (${c})`);let e=n[d];if(!e)throw Error(`Unsupported target triple: ${d}`);try{let b=o.resolve(`${m}/package.json`),c=(0,i.createRequire)(b).resolve(`${e}/package.json`);a=f.join(f.dirname(c),"vendor")}catch{throw Error(`Unable to locate Codex CLI binaries. Ensure ${m} is installed with optional dependencies.`)}let g=function(a,b,c){let d=f.join(a,b),e=f.join(d,"bin",c);if(u(e)&&u(f.join(d,"codex-package.json")))return{executablePath:e,pathDirs:t(f.join(d,"codex-path"))};let g=f.join(d,"codex",c);return u(g)?{executablePath:g,pathDirs:t(f.join(d,"path"))}:null}(a,d,"win32"===process.platform?"codex.exe":"codex");if(!g)throw Error(`Unable to locate Codex CLI binaries for ${d}. Ensure ${m} is installed with optional dependencies.`);return g}();this.executablePath=a.executablePath,this.pathDirs=a.pathDirs}this.envOverride=b,this.configOverrides=c}async *run(a){let b=["exec","--experimental-json"];if(this.configOverrides)for(let a of function(a){let b=[];return function a(b,c,d){if(!s(b))if(c)return void d.push(`${c}=${q(b,c)}`);else throw Error("Codex config overrides must be a plain object");let e=Object.entries(b);if(c||0!==e.length){if(c&&0===e.length)return void d.push(`${c}={}`);for(let[b,f]of e){if(!b)throw Error("Codex config override keys must be non-empty strings");if(void 0===f)continue;let e=c?`${c}.${b}`:b;s(f)?a(f,e,d):d.push(`${e}=${q(f,e)}`)}}}(a,"",b),b}(this.configOverrides))b.push("--config",a);if(a.baseUrl&&b.push("--config",`openai_base_url=${q(a.baseUrl,"openai_base_url")}`),a.model&&b.push("--model",a.model),a.sandboxMode&&b.push("--sandbox",a.sandboxMode),a.workingDirectory&&b.push("--cd",a.workingDirectory),a.additionalDirectories?.length)for(let c of a.additionalDirectories)b.push("--add-dir",c);if(a.skipGitRepoCheck&&b.push("--skip-git-repo-check"),a.outputSchemaFile&&b.push("--output-schema",a.outputSchemaFile),a.modelReasoningEffort&&b.push("--config",`model_reasoning_effort="${a.modelReasoningEffort}"`),void 0!==a.networkAccessEnabled&&b.push("--config",`sandbox_workspace_write.network_access=${a.networkAccessEnabled}`),a.webSearchMode?b.push("--config",`web_search="${a.webSearchMode}"`):!0===a.webSearchEnabled?b.push("--config",'web_search="live"'):!1===a.webSearchEnabled&&b.push("--config",'web_search="disabled"'),a.approvalPolicy&&b.push("--config",`approval_policy="${a.approvalPolicy}"`),a.threadId&&b.push("resume",a.threadId),a.images?.length)for(let c of a.images)b.push("--image",c);let c={};if(this.envOverride)Object.assign(c,this.envOverride);else for(let[a,b]of Object.entries(process.env))void 0!==b&&(c[a]=b);c[l]||(c[l]="codex_sdk_ts"),a.apiKey&&(c.CODEX_API_KEY=a.apiKey),this.pathDirs.length>0&&function(a,b,c=process.platform){let d=function(a,b){if("win32"!==b)return"PATH";let c=Object.keys(a).filter(a=>"path"===a.toLowerCase());return c.includes("Path")?"Path":c.at(-1)??"PATH"}(a,c);if("win32"===c)for(let b of Object.keys(a))"path"===b.toLowerCase()&&b!==d&&delete a[b];let e=(a[d]??"").split(f.delimiter).filter(a=>a.length>0&&!b.includes(a));a[d]=[...b,...e].join(f.delimiter)}(c,this.pathDirs);let d=(0,g.spawn)(this.executablePath,b,{env:c,signal:a.signal}),e=null;if(d.once("error",a=>e=a),!d.stdin)throw d.kill(),Error("Child process has no stdin");if(d.stdin.write(a.input),d.stdin.end(),!d.stdout)throw d.kill(),Error("Child process has no stdout");let i=[];d.stderr&&d.stderr.on("data",a=>{i.push(a)});let j=new Promise(a=>{d.once("exit",(b,c)=>{a({code:b,signal:c})})}),k=h.createInterface({input:d.stdout,crlfDelay:1/0});try{for await(let a of k)yield a;if(e)throw e;let{code:a,signal:b}=await j;if(0!==a||b){let c=Buffer.concat(i),d=b?`signal ${b}`:`code ${a??1}`;throw Error(`Codex Exec exited with ${d}: ${c.toString("utf8")}`)}}finally{k.close(),d.removeAllListeners();try{d.killed||d.kill()}catch{}}}};function q(a,b){if("string"==typeof a)return JSON.stringify(a);if("number"==typeof a){if(!Number.isFinite(a))throw Error(`Codex config override at ${b} must be a finite number`);return`${a}`}if("boolean"==typeof a)return a?"true":"false";if(Array.isArray(a)){let c=a.map((a,c)=>q(a,`${b}[${c}]`));return`[${c.join(", ")}]`}if(s(a)){let d=[];for(let[e,f]of Object.entries(a)){var c;if(!e)throw Error("Codex config override keys must be non-empty strings");void 0!==f&&d.push(`${r.test(c=e)?c:JSON.stringify(c)} = ${q(f,`${b}.${e}`)}`)}return`{${d.join(", ")}}`}else if(null===a)throw Error(`Codex config override at ${b} cannot be null`);else{let c=typeof a;throw Error(`Unsupported Codex config override value at ${b}: ${c}`)}}var r=/^[A-Za-z0-9_-]+$/;function s(a){return"object"==typeof a&&null!==a&&!Array.isArray(a)}function t(...a){return a.filter(v)}function u(a){try{return(0,d.statSync)(a).isFile()}catch{return!1}}function v(a){try{return(0,d.statSync)(a).isDirectory()}catch{return!1}}var w=class{exec;options;constructor(a={}){let{codexPathOverride:b,env:c,config:d}=a;this.exec=new p(b,c,d),this.options=a}startThread(a={}){return new k(this.exec,this.options,a)}resumeThread(a,b={}){return new k(this.exec,this.options,b,a)}}}};
@@ -0,0 +1,3 @@
1
+ "use strict";exports.id=6536,exports.ids=[6536],exports.modules={4979:(a,b,c)=>{c.d(b,{h:()=>e});var d=c(3265);let e=(0,d.createServerReference)("7091b99a789641a5b42e215c5d4df0e01635ea4d0c",d.callServer,void 0,d.findSourceMapURL,"generateTopicTitleAction")},8904:(a,b,c)=>{c.d(b,{g:()=>e});var d=c(3265);let e=(0,d.createServerReference)("78aa2f0aa9b7272a731bab5e297ecdda045a5f8e9d",d.callServer,void 0,d.findSourceMapURL,"startTopicAction")},11178:(a,b,c)=>{c.d(b,{CA:()=>j,IK:()=>n,RP:()=>k,dj:()=>l,xO:()=>m});var d=c(73024),e=c(76760),f=c.n(e),g=c(30192),h=c.n(g),i=c(13474);async function j(a){let b=(0,i.FF)(a);return o(b,b)}async function k(a){let b=(0,i.FF)(a);try{let a=await o(b,b),c=a.reduce((a,b)=>a+b.size,0);return{exists:!0,fileCount:a.length,totalBytes:c}}catch{return{exists:!1,fileCount:0,totalBytes:0}}}async function l(a){let b=await j(a);return await Promise.all(b.map(async a=>({...a,meta:await p(a.abs)})))}async function m(a){return p(a)}async function n(a,b){let c=(0,i.FF)(a),e=f().resolve(c,b),g=f().relative(c,e);if(g.startsWith("..")||f().isAbsolute(g))throw Error(`Refused to read outside ${i.fW}: ${b}`);return d.promises.readFile(e,"utf8")}async function o(a,b){let c;try{c=await d.promises.readdir(b,{withFileTypes:!0})}catch{return[]}let e=[],g=[];for(let d of c){let c=f().join(b,d.name);if(d.isDirectory()){if(b===a&&"topics"===d.name)continue;e.push(o(a,c));continue}d.isFile()&&d.name.toLowerCase().endsWith(".md")&&g.push({rel:f().relative(a,c).split(f().sep).join("/"),abs:c,size:0,modifiedAt:""})}let h=await Promise.all(g.map(async a=>{try{let b=await d.promises.stat(a.abs);return{...a,size:b.size,modifiedAt:b.mtime.toISOString()}}catch{return a}}));for(let a of(await Promise.all(e)))h.push(...a);return h.sort((a,b)=>a.rel.localeCompare(b.rel)),h}async function p(a){try{let b=await d.promises.readFile(a,"utf8"),c=h()(b).data;return{...void 0!==q(c.title)?{title:q(c.title)}:{},...void 0!==r(c.version)?{version:r(c.version)}:{},...void 0!==q(c.date)?{date:q(c.date)}:{},...void 0!==q(c.kind)?{kind:q(c.kind)}:{},data:c}}catch{return{data:{}}}}function q(a){return"string"==typeof a?a:a instanceof Date?a.toISOString().slice(0,10):void 0}function r(a){if("string"==typeof a||"number"==typeof a)return a}},12650:(a,b,c)=>{c.d(b,{E:()=>f});var d=c(64173),e=c(91344);function f({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"skeleton",className:(0,e.cn)("animate-pulse rounded-md bg-accent",a),...b})}},13813:(a,b,c)=>{c.d(b,{ShareButton:()=>o});var d=c(64173),e=c(17240);let f=(0,c(42557).A)("Share2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]);var g=c(12619),h=c(28082),i=c(66979),j=c(42324),k=c(44052),l=c(3265);let m=(0,l.createServerReference)("403ed4d14b11a90cacc5b9f70460c86f0b95c3568a",l.callServer,void 0,l.findSourceMapURL,"createShareAction");var n=c(21080);function o(a){let[b,c]=(0,e.useState)(!1),[l,o]=(0,e.useState)(""),[p,q]=(0,e.useTransition)(),[r,s]=(0,e.useState)(null);return b?r?(0,d.jsxs)("div",{className:"rounded border bg-card p-2 text-xs space-y-1.5 w-full max-w-sm",children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5 text-emerald-700",children:[(0,d.jsx)(g.A,{className:"h-3.5 w-3.5"}),(0,d.jsx)("span",{className:"font-medium",children:"Ссылка создана"})]}),(0,d.jsx)("a",{href:r.url,target:"_blank",rel:"noopener noreferrer",className:"block font-mono text-[11px] text-violet-700 hover:underline break-all",children:r.url}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>void navigator.clipboard.writeText(r.url).then(()=>k.oR.success("Скопировано")),className:"inline-flex items-center gap-1 rounded border px-2 py-0.5 hover:bg-accent",children:[(0,d.jsx)(h.A,{className:"h-3 w-3"}),"Скопировать"]}),(0,d.jsx)("button",{type:"button",onClick:()=>{s(null),c(!1),o("")},className:"text-muted-foreground hover:text-foreground",children:"Готово"})]})]}):(0,d.jsxs)("div",{className:"rounded border bg-card p-2 text-xs space-y-1.5 w-full max-w-sm",children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)(f,{className:"h-3.5 w-3.5 text-violet-600"}),(0,d.jsx)("span",{className:"font-medium",children:"Новая публичная ссылка"}),(0,d.jsx)("button",{type:"button",onClick:()=>c(!1),className:"ml-auto text-muted-foreground hover:text-foreground",children:(0,d.jsx)(i.A,{className:"h-3 w-3"})})]}),(0,d.jsx)("label",{className:"block text-[10px] text-muted-foreground",children:"Пароль (опционально)"}),(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)(j.A,{className:"absolute left-2 top-1/2 -translate-y-1/2 h-3 w-3 text-muted-foreground pointer-events-none"}),(0,d.jsx)("input",{type:"password",value:l,onChange:a=>o(a.target.value),autoFocus:!0,placeholder:"пусто = открытая ссылка",className:"w-full rounded border bg-background pl-6 pr-2 py-1 text-xs focus:outline-none focus:ring-1 focus:ring-violet-400"})]}),(0,d.jsx)("button",{type:"button",onClick:()=>{q(async()=>{let b=await (0,n.N)(),c=await m({kind:a.kind,...a.rootId?{rootId:a.rootId}:{},...a.utilityScope?{utilityScope:a.utilityScope}:{},...a.utilityId?{utilityId:a.utilityId}:{},...a.kbRelPath?{kbRelPath:a.kbRelPath}:{},...a.label?{label:a.label}:{},...l.trim()?{password:l.trim()}:{}});if(!c.ok)return void k.oR.error(c.error);let d=b.status.publicUrl??window.location.origin,e=new URL(`/share/${c.share.id}`,d).toString();s({share:c.share,url:e}),navigator.clipboard.writeText(e).catch(()=>null),k.oR.success(b.status.running?"Ссылка создана и скопирована":"Ссылка создана; запусти ngrok-туннель в настройках чтобы открыть извне")})},disabled:p,className:"w-full rounded bg-violet-600 text-white px-2 py-1 hover:bg-violet-700 disabled:opacity-50 inline-flex items-center justify-center gap-1",children:p?"Создание…":"Создать ссылку"}),(0,d.jsx)("p",{className:"text-[10px] text-muted-foreground",children:"Ссылку будет видно только после старта ngrok-туннеля (Настройки → Публичные ссылки)."})]}):(0,d.jsxs)("button",{type:"button",onClick:()=>c(!0),className:a.iconOnly?"p-1 rounded hover:bg-accent text-muted-foreground hover:text-violet-700":"inline-flex items-center gap-1 rounded border px-2 py-1 text-xs hover:bg-accent",title:"Создать публичную ссылку",children:[(0,d.jsx)(f,{className:"h-3.5 w-3.5"}),!a.iconOnly&&"Поделиться"]})}},14425:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(42557).A)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]])},15620:(a,b,c)=>{c.d(b,{CommandBar:()=>n});var d=c(64173),e=c(17240),f=c(87671),g=c(73569),h=c(44052),i=c(8904),j=c(4979),k=c(8836),l=c(88724),m=c(4507);function n({rootId:a,focusFile:b}){let[,c]=(0,e.useTransition)(),n=(0,f.useRouter)();return(0,d.jsx)(k.E,{label:"Спроси Reflex",children:(0,d.jsx)(m.L,{rootId:a,placeholder:"Задай вопрос о проекте или дай команду…",submitLabel:"Начать",pendingLabel:"Старт",SubmitIcon:g.A,onSubmit:async({message:d,attachments:e})=>await new Promise(f=>{c(async()=>{let c=await (0,i.g)(a,d,e,b);if(!c.ok){h.oR.error(c.error??"Failed to start"),f(!1);return}(0,l.$d)(l.Zi.topicsChanged(a)),d.trim()&&(0,j.h)(a,c.topicId,d).then(b=>{b.ok&&(0,l.$d)(l.Zi.topicsChanged(a))}),n.push(`/roots/${a}/chat/${c.topicId}`),f(!0)})})})})}},16551:(a,b,c)=>{c.d(b,{Xi:()=>k,av:()=>l,j7:()=>j,tU:()=>h});var d=c(64173);c(17240);var e=c(20483),f=c(61193),g=c(91344);function h({className:a,orientation:b="horizontal",...c}){return(0,d.jsx)(f.Root,{"data-slot":"tabs","data-orientation":b,orientation:b,className:(0,g.cn)("group/tabs flex gap-2 data-[orientation=horizontal]:flex-col",a),...c})}let i=(0,e.F)("group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-[orientation=horizontal]/tabs:h-9 group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col data-[variant=line]:rounded-none",{variants:{variant:{default:"bg-muted",line:"gap-1 bg-transparent"}},defaultVariants:{variant:"default"}});function j({className:a,variant:b="default",...c}){return(0,d.jsx)(f.List,{"data-slot":"tabs-list","data-variant":b,className:(0,g.cn)(i({variant:b}),a),...c})}function k({className:a,...b}){return(0,d.jsx)(f.Trigger,{"data-slot":"tabs-trigger",className:(0,g.cn)("relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent","data-[state=active]:bg-background data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:data-[state=active]:text-foreground","after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100",a),...b})}function l({className:a,...b}){return(0,d.jsx)(f.Content,{"data-slot":"tabs-content",className:(0,g.cn)("flex-1 outline-none",a),...b})}},16805:(a,b,c)=>{c.d(b,{ShareButton:()=>d});let d=(0,c(54491).registerClientReference)(function(){throw Error("Attempted to call ShareButton() from the server but ShareButton is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/reflex-agent/reflex-agent/app/_components/share-button.tsx","ShareButton")},27129:(a,b,c)=>{c.d(b,{Cz:()=>k,IK:()=>l,hN:()=>j,uA:()=>i});var d=c(73745);c(66493);var e=c(56942),f=c(53905),g=c(84579),h=c(91388);async function i(a){try{let b,c=await (0,g.generateImage)({rootId:a.rootId,prompt:a.prompt,...a.provider?{provider:a.provider}:{},...a.aspectRatio?{aspectRatio:a.aspectRatio}:{},...a.alt?{alt:a.alt}:{}}),d=n(a.alt||a.prompt),e=`![${d}](${c.urlPath})`;return a.attachToKb&&(b=await m(a.rootId,{title:a.alt||a.prompt.slice(0,80),markdown:e,meta:{provider:c.provider,prompt:a.prompt,sha:c.sha,...a.aspectRatio?{aspectRatio:a.aspectRatio}:{}}})),{ok:!0,url:c.urlPath,sha:c.sha,markdown:e,...b?{kbRelPath:b}:{}}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function j(a){try{let b=await (0,g.searchImages)({query:a.query,...a.provider?{provider:a.provider}:{},...a.count?{count:a.count}:{}});return{ok:!0,results:b}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function k(a){try{let b,c=await (0,g.attachRemote)({rootId:a.rootId,sourceUrl:a.sourceUrl}),d=n(a.alt||"image"),e=a.attribution?`
2
+
3
+ _Фото: [${a.attribution.name}](${a.attribution.link})_`:"",f=`![${d}](${c.urlPath})${e}`;return a.attachToKb&&(b=await m(a.rootId,{title:a.alt||"Найденная картинка",markdown:f,meta:{source:"web",sourceUrl:a.sourceUrl,sha:c.sha,...a.attribution?{author:a.attribution.name,authorUrl:a.attribution.link}:{}}})),{ok:!0,url:c.urlPath,sha:c.sha,markdown:f,...b?{kbRelPath:b}:{}}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function l(a){try{let b,c=Buffer.from(a.base64,"base64");if(0===c.byteLength)return{ok:!1,error:"Empty upload"};if(!a.mime.startsWith("image/"))return{ok:!1,error:`Unsupported mime: ${a.mime}`};let d=await (0,h.YN)(a.rootId,c,a.mime),e=n(a.alt||"image"),f=`![${e}](${d.urlPath})`;return a.attachToKb&&(b=await m(a.rootId,{title:a.alt||"Загруженная картинка",markdown:f,meta:{source:"upload",sha:d.sha,mime:a.mime}})),{ok:!0,url:d.urlPath,sha:d.sha,markdown:f,...b?{kbRelPath:b}:{}}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function m(a,b){let c=await (0,f.Zn)(a);if(!c)throw Error(`unknown rootId: ${a}`);return(await (0,e.j)({rootPath:c.path,directive:{kind:"image",title:b.title,body:b.markdown,meta:b.meta}})).relPath}function n(a){return a.replace(/[\[\]\n]/g," ").slice(0,200)}(0,c(63781).D)([i,j,k,l]),(0,d.A)(i,"40a53333ef77b210d862245d73a76338db8916f65d",null),(0,d.A)(j,"40520afdf05c052a0d9150d0e1bd17e823d7a24310",null),(0,d.A)(k,"4052e2de29b5cf1b17e60fc810d6d98790e5e84554",null),(0,d.A)(l,"40293fb63a31f369ce72ce8c6761e38e226a29b8ad",null)},29130:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(42557).A)("Image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]])},71155:(a,b,c)=>{c.d(b,{bq:()=>l,eb:()=>n,gC:()=>m,l6:()=>j,yv:()=>k});var d=c(64173);c(17240);var e=c(58405),f=c(12619),g=c(78724),h=c(13976),i=c(91344);function j({...a}){return(0,d.jsx)(h.Root,{"data-slot":"select",...a})}function k({...a}){return(0,d.jsx)(h.Value,{"data-slot":"select-value",...a})}function l({className:a,size:b="default",children:c,...f}){return(0,d.jsxs)(h.Trigger,{"data-slot":"select-trigger","data-size":b,className:(0,i.cn)("flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",a),...f,children:[c,(0,d.jsx)(h.Icon,{asChild:!0,children:(0,d.jsx)(e.A,{className:"size-4 opacity-50"})})]})}function m({className:a,children:b,position:c="item-aligned",align:e="center",...f}){return(0,d.jsx)(h.Portal,{children:(0,d.jsxs)(h.Content,{"data-slot":"select-content",className:(0,i.cn)("relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95","popper"===c&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",a),position:c,align:e,...f,children:[(0,d.jsx)(o,{}),(0,d.jsx)(h.Viewport,{className:(0,i.cn)("p-1","popper"===c&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:b}),(0,d.jsx)(p,{})]})})}function n({className:a,children:b,...c}){return(0,d.jsxs)(h.Item,{"data-slot":"select-item",className:(0,i.cn)("relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",a),...c,children:[(0,d.jsx)("span",{"data-slot":"select-item-indicator",className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,d.jsx)(h.ItemIndicator,{children:(0,d.jsx)(f.A,{className:"size-4"})})}),(0,d.jsx)(h.ItemText,{children:b})]})}function o({className:a,...b}){return(0,d.jsx)(h.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:(0,i.cn)("flex cursor-default items-center justify-center py-1",a),...b,children:(0,d.jsx)(g.A,{className:"size-4"})})}function p({className:a,...b}){return(0,d.jsx)(h.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:(0,i.cn)("flex cursor-default items-center justify-center py-1",a),...b,children:(0,d.jsx)(e.A,{className:"size-4"})})}},78724:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(42557).A)("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]])},86673:(a,b,c)=>{c.d(b,{InsertImageButton:()=>d});let d=(0,c(54491).registerClientReference)(function(){throw Error("Attempted to call InsertImageButton() from the server but InsertImageButton is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/reflex-agent/reflex-agent/app/_components/kb/insert-image-button.tsx","InsertImageButton")},88842:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(19963).A)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]])},99891:(a,b,c)=>{c.d(b,{InsertImageButton:()=>B});var d=c(64173),e=c(17240),f=c(87671),g=c(29130),h=c(20583),i=c(66979),j=c(69552),k=c(65943);let l=(0,c(42557).A)("Upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]]);var m=c(44052),n=c(47071),o=c(45477),p=c(80281),q=c(71155),r=c(16551),s=c(27456),t=c(12650),u=c(3265);let v=(0,u.createServerReference)("40a53333ef77b210d862245d73a76338db8916f65d",u.callServer,void 0,u.findSourceMapURL,"generateAction"),w=(0,u.createServerReference)("40520afdf05c052a0d9150d0e1bd17e823d7a24310",u.callServer,void 0,u.findSourceMapURL,"searchAction"),x=(0,u.createServerReference)("4052e2de29b5cf1b17e60fc810d6d98790e5e84554",u.callServer,void 0,u.findSourceMapURL,"attachAction"),y=(0,u.createServerReference)("40293fb63a31f369ce72ce8c6761e38e226a29b8ad",u.callServer,void 0,u.findSourceMapURL,"uploadAction"),z=["1:1","16:9","9:16","4:3","3:4","21:9"];function A({rootId:a,open:b,onOpenChange:c,onInsert:f}){let[u,A]=(0,e.useState)(""),[B,C]=(0,e.useState)("gemini"),[D,E]=(0,e.useState)("1:1"),[F,G]=(0,e.useState)(!0),[H,I]=(0,e.useState)(null),[J,K]=(0,e.useTransition)(),[L,M]=(0,e.useState)(""),[N,O]=(0,e.useState)("unsplash"),[P,Q]=(0,e.useState)([]),[R,S]=(0,e.useTransition)(),[T,U]=(0,e.useState)(null),[V,W]=(0,e.useState)(!0),[X,Y]=(0,e.useState)(""),[Z,$]=(0,e.useState)(!0),[_,aa]=(0,e.useTransition)();if(!b)return null;let ab=()=>{L.trim()&&(Q([]),S(async()=>{let b=await w({rootId:a,query:L.trim(),provider:N,count:12});if(!b.ok)return void m.oR.error(b.error);Q(b.results)}))};return(0,d.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4",onClick:a=>{a.target===a.currentTarget&&c(!1)},children:[(0,d.jsx)("div",{"aria-hidden":!0,className:"absolute inset-0 bg-background/80 backdrop-blur-sm",onClick:()=>c(!1)}),(0,d.jsxs)("div",{className:"relative bg-card border rounded-lg shadow-xl w-full max-w-3xl max-h-[85vh] flex flex-col",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 px-4 py-3 border-b",children:[(0,d.jsx)(g.A,{className:"h-4 w-4 text-violet-600"}),(0,d.jsx)("h2",{className:"text-sm font-medium flex-1",children:"Картинка в KB"}),(0,d.jsx)(h.$,{type:"button",size:"icon",variant:"ghost",className:"h-7 w-7",onClick:()=>c(!1),children:(0,d.jsx)(i.A,{className:"h-4 w-4"})})]}),(0,d.jsxs)(r.tU,{defaultValue:"generate",className:"flex-1 min-h-0 flex flex-col",children:[(0,d.jsxs)(r.j7,{className:"mx-4 mt-3 self-start",children:[(0,d.jsxs)(r.Xi,{value:"generate",children:[(0,d.jsx)(j.A,{className:"mr-1 h-3.5 w-3.5"})," Сгенерировать"]}),(0,d.jsxs)(r.Xi,{value:"search",children:[(0,d.jsx)(k.A,{className:"mr-1 h-3.5 w-3.5"})," Найти"]}),(0,d.jsxs)(r.Xi,{value:"upload",children:[(0,d.jsx)(l,{className:"mr-1 h-3.5 w-3.5"})," Загрузить"]})]}),(0,d.jsxs)(s.F,{className:"flex-1 min-h-0",children:[(0,d.jsxs)(r.av,{value:"generate",className:"px-4 py-4 space-y-3",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(p.J,{htmlFor:"img-prompt",children:"Промпт"}),(0,d.jsx)(o.T,{id:"img-prompt",value:u,onChange:a=>A(a.target.value),placeholder:"Подробное описание: стиль, композиция, освещение...",rows:4})]}),(0,d.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(p.J,{children:"Провайдер"}),(0,d.jsxs)(q.l6,{value:B,onValueChange:a=>C(a),children:[(0,d.jsx)(q.bq,{children:(0,d.jsx)(q.yv,{})}),(0,d.jsxs)(q.gC,{children:[(0,d.jsx)(q.eb,{value:"gemini",children:"Gemini Nano Banana"}),(0,d.jsx)(q.eb,{value:"codex",children:"Codex $imagegen"})]})]})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(p.J,{children:"Соотношение"}),(0,d.jsxs)(q.l6,{value:D,onValueChange:E,children:[(0,d.jsx)(q.bq,{children:(0,d.jsx)(q.yv,{})}),(0,d.jsx)(q.gC,{children:z.map(a=>(0,d.jsx)(q.eb,{value:a,children:a},a))})]})]})]}),(0,d.jsxs)("label",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,d.jsx)("input",{type:"checkbox",checked:F,onChange:a=>G(a.target.checked)}),"Сохранить как отдельную запись в KB (kind: image)"]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(h.$,{type:"button",size:"sm",onClick:()=>{u.trim()&&(I(null),K(async()=>{let b=await v({rootId:a,prompt:u.trim(),provider:B,aspectRatio:D,attachToKb:F});if(!b.ok)return void m.oR.error(b.error);I({url:b.url,markdown:b.markdown,...b.kbRelPath?{kbRelPath:b.kbRelPath}:{}})}))},disabled:J||!u.trim(),children:J?"Генерирую...":"Сгенерировать"}),J&&(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:"Может занять до минуты"})]}),J?(0,d.jsx)(t.E,{className:"h-64 w-full"}):H?(0,d.jsxs)("div",{className:"space-y-2 border rounded p-3",children:[(0,d.jsx)("img",{src:H.url,alt:u,className:"max-h-80 mx-auto rounded"}),(0,d.jsxs)("div",{className:"flex gap-2 justify-end",children:[(0,d.jsx)(h.$,{type:"button",size:"sm",variant:"outline",onClick:()=>I(null),children:"Ещё раз"}),(0,d.jsx)(h.$,{type:"button",size:"sm",onClick:()=>{H&&(f?.(H),m.oR.success(H.kbRelPath?`Сохранено в KB: ${H.kbRelPath}`:"Картинка готова"),c(!1))},children:"Вставить"})]})]}):null]}),(0,d.jsxs)(r.av,{value:"search",className:"px-4 py-4 space-y-3",children:[(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(n.p,{value:L,onChange:a=>M(a.target.value),placeholder:"например: mountains sunrise",onKeyDown:a=>{"Enter"===a.key&&ab()}}),(0,d.jsxs)(q.l6,{value:N,onValueChange:a=>O(a),children:[(0,d.jsx)(q.bq,{className:"w-36",children:(0,d.jsx)(q.yv,{})}),(0,d.jsxs)(q.gC,{children:[(0,d.jsx)(q.eb,{value:"unsplash",children:"Unsplash"}),(0,d.jsx)(q.eb,{value:"pexels",children:"Pexels"}),(0,d.jsx)(q.eb,{value:"brave",children:"Brave (весь веб)"})]})]}),(0,d.jsx)(h.$,{type:"button",size:"sm",onClick:ab,disabled:R||!L.trim(),children:"Найти"})]}),(0,d.jsxs)("label",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,d.jsx)("input",{type:"checkbox",checked:V,onChange:a=>W(a.target.checked)}),"Сохранить как отдельную запись в KB (kind: image)"]}),R&&0===P.length?(0,d.jsx)("div",{className:"grid grid-cols-3 gap-2",children:Array.from({length:6}).map((a,b)=>(0,d.jsx)(t.E,{className:"h-32 w-full"},b))}):P.length>0?(0,d.jsx)("div",{className:"grid grid-cols-3 gap-2",children:P.map(b=>(0,d.jsxs)("button",{type:"button",disabled:null!==T,onClick:()=>{U(b.url),S(async()=>{let d=await x({rootId:a,sourceUrl:b.url,alt:L.trim()||"image",attribution:b.attribution,attachToKb:V});if(U(null),!d.ok)return void m.oR.error(d.error);f?.({url:d.url,markdown:d.markdown,...d.kbRelPath?{kbRelPath:d.kbRelPath}:{}}),m.oR.success(d.kbRelPath?`Сохранено в KB: ${d.kbRelPath}`:"Картинка добавлена в проект"),c(!1)})},className:"group relative overflow-hidden rounded border hover:border-violet-500 disabled:opacity-50",title:`${b.attribution.name} \xb7 ${b.provider}`,children:[(0,d.jsx)("img",{src:b.thumb,alt:"",className:"h-32 w-full object-cover"}),(0,d.jsx)("div",{className:"absolute bottom-0 inset-x-0 px-1.5 py-0.5 text-[10px] bg-black/60 text-white truncate",children:b.attribution.name}),T===b.url&&(0,d.jsx)("div",{className:"absolute inset-0 bg-black/40 flex items-center justify-center text-xs text-white",children:"Сохраняю…"})]},b.url))}):(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:"Нужен ключ Unsplash / Pexels в Settings → Images."})]}),(0,d.jsxs)(r.av,{value:"upload",className:"px-4 py-4 space-y-3",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(p.J,{htmlFor:"img-alt",children:"Подпись (alt)"}),(0,d.jsx)(n.p,{id:"img-alt",value:X,onChange:a=>Y(a.target.value),placeholder:"Что на картинке"})]}),(0,d.jsxs)("label",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,d.jsx)("input",{type:"checkbox",checked:Z,onChange:a=>$(a.target.checked)}),"Сохранить как отдельную запись в KB (kind: image)"]}),(0,d.jsx)(n.p,{type:"file",accept:"image/*",disabled:_,onChange:b=>{let d=b.target.files?.[0];d&&aa(async()=>{let b=function(a){let b=new Uint8Array(a),c="";for(let a=0;a<b.length;a+=32768){let d=b.subarray(a,a+32768);c+=String.fromCharCode.apply(null,Array.from(d))}return btoa(c)}(await d.arrayBuffer()),e=await y({rootId:a,base64:b,mime:d.type,alt:X||d.name.replace(/\.[^.]+$/,""),attachToKb:Z});if(!e.ok)return void m.oR.error(e.error);f?.({url:e.url,markdown:e.markdown,...e.kbRelPath?{kbRelPath:e.kbRelPath}:{}}),m.oR.success(e.kbRelPath?`Сохранено в KB: ${e.kbRelPath}`:"Картинка загружена"),c(!1)})}}),_&&(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:"Загружаю…"})]})]})]})]})]})}function B({rootId:a,redirectToKb:b=!0}){let[c,i]=(0,e.useState)(!1),j=(0,f.useRouter)();return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(h.$,{type:"button",variant:"ghost",size:"sm",onClick:()=>i(!0),children:[(0,d.jsx)(g.A,{className:"mr-1 h-4 w-4"})," Картинка"]}),(0,d.jsx)(A,{rootId:a,open:c,onOpenChange:i,onInsert:({kbRelPath:c})=>{if(b&&c){let b=c.split("/").map(encodeURIComponent).join("/");j.push(`/roots/${a}/kb/${b}`)}}})]})}}};
@@ -0,0 +1,4 @@
1
+ "use strict";exports.id=6602,exports.ids=[6602],exports.modules={16856:(a,b,c)=>{c.d(b,{Is:()=>g,L8:()=>h,ns:()=>i});var d=c(73745);c(66493);var e=c(65326),f=c(30878);async function g(a){try{if("utility"===a.kind&&(!a.utilityId||!a.utilityScope))return{ok:!1,error:"share kind=utility requires utilityId + utilityScope"};if("kb-file"===a.kind&&(!a.rootId||!a.kbRelPath))return{ok:!1,error:"share kind=kb-file requires rootId + kbRelPath"};if(("kb-tree"===a.kind||"project"===a.kind)&&!a.rootId)return{ok:!1,error:`share kind=${a.kind} requires rootId`};let b=await (0,f.cn)(a);return(0,e.revalidatePath)("/settings"),{ok:!0,share:b}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function h(){return{shares:await (0,f.Bg)()}}async function i(a){let b=await (0,f.Ru)(a);return(0,e.revalidatePath)("/settings"),{ok:b}}(0,c(63781).D)([g,h,i]),(0,d.A)(g,"403ed4d14b11a90cacc5b9f70460c86f0b95c3568a",null),(0,d.A)(h,"006be381f3bd84d5b49ca424fdcbdd5ba7aa2732e5",null),(0,d.A)(i,"40c646e8ace5a31f08b0a566acfd6617e206ed1651",null)},21080:(a,b,c)=>{c.d(b,{N:()=>e});var d=c(3265);let e=(0,d.createServerReference)("005adec00ada04c63ac5fd3676f300faaa566baba2",d.callServer,void 0,d.findSourceMapURL,"getTunnelStatusAction")},30878:(a,b,c)=>{c.d(b,{BE:()=>p,Bg:()=>n,Ru:()=>r,cn:()=>q,er:()=>o});var d=c(73024),e=c(76760),f=c.n(e),g=c(48161),h=c.n(g),i=c(77598),j=c.n(i);let k=f().join(h().homedir(),".reflex","shares.json");async function l(){try{let a=await d.promises.readFile(k,"utf8"),b=JSON.parse(a);if(b&&Array.isArray(b.shares))return b}catch{}return{version:1,shares:[]}}async function m(a){await d.promises.mkdir(f().dirname(k),{recursive:!0}),await d.promises.writeFile(k,JSON.stringify(a,null,2)+"\n",{mode:384})}async function n(){return(await l()).shares}async function o(a){return(await l()).shares.find(b=>b.id===a)??null}function p(a,b){if(!a.passwordHash)return!0;if(!a.passwordSalt)return!1;let c=j().createHash("sha256").update(a.passwordSalt+":"+b).digest("hex");return j().timingSafeEqual(Buffer.from(c,"hex"),Buffer.from(a.passwordHash,"hex"))}async function q(a){let b=await l(),c={id:function(){let a="abcdefghjkmnpqrstuvwxyz23456789",b="";for(let c=0;c<12;c++)b+=a[j().randomInt(0,a.length)];return b}(),kind:a.kind,createdAt:new Date().toISOString(),...a.rootId?{rootId:a.rootId}:{},...a.utilityScope?{utilityScope:a.utilityScope}:{},...a.utilityId?{utilityId:a.utilityId}:{},...a.kbRelPath?{kbRelPath:a.kbRelPath}:{},...a.expiresAt?{expiresAt:a.expiresAt}:{},...a.label?{label:a.label}:{}};if(a.password){let{salt:b,hash:d}=function(a){let b=j().randomBytes(16).toString("hex"),c=j().createHash("sha256").update(b+":"+a).digest("hex");return{salt:b,hash:c}}(a.password);c.passwordSalt=b,c.passwordHash=d}return b.shares=[c,...b.shares],await m(b),c}async function r(a){let b=await l(),c=b.shares.length;return b.shares=b.shares.filter(b=>b.id!==a),b.shares.length!==c&&(await m(b),!0)}},42382:(a,b,c)=>{c.d(b,{E:()=>i});var d=c(64173);c(17240);var e=c(20483),f=c(91520),g=c(91344);let h=(0,e.F)("inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3",{variants:{variant:{default:"bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"bg-destructive text-white focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90",outline:"border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",ghost:"[a&]:hover:bg-accent [a&]:hover:text-accent-foreground",link:"text-primary underline-offset-4 [a&]:hover:underline"}},defaultVariants:{variant:"default"}});function i({className:a,variant:b="default",asChild:c=!1,...e}){let i=c?f.bL:"span";return(0,d.jsx)(i,{"data-slot":"badge","data-variant":b,className:(0,g.cn)(h({variant:b}),a),...e})}},47071:(a,b,c)=>{c.d(b,{p:()=>f});var d=c(64173);c(17240);var e=c(91344);function f({className:a,type:b,...c}){return(0,d.jsx)("input",{type:b,"data-slot":"input",className:(0,e.cn)("h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30","focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50","aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",a),...c})}},60524:(a,b,c)=>{c.d(b,{Separator:()=>d});let d=(0,c(54491).registerClientReference)(function(){throw Error("Attempted to call Separator() from the server but Separator is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/reflex-agent/reflex-agent/components/ui/separator.tsx","Separator")},80281:(a,b,c)=>{c.d(b,{J:()=>g});var d=c(64173);c(17240);var e=c(90044),f=c(91344);function g({className:a,...b}){return(0,d.jsx)(e.Root,{"data-slot":"label",className:(0,f.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",a),...b})}},92814:(a,b,c)=>{c.d(b,{Ng:()=>t,bt:()=>w,Zl:()=>x,Nt:()=>u,Fm:()=>v});var d=c(73745);c(66493);var e=c(65326),f=c(36017),g=c(31421),h=c(73024),i=c(76760),j=c.n(i),k=c(48161),l=c.n(k);let m="__reflex_ngrok_tunnel__";function n(){return globalThis[m]}function o(a){globalThis[m]=a}async function p(a){let b;if(!a.authtoken)return{ok:!1,error:"ngrok authtoken is required"};let c=n();if(c&&null===c.child.exitCode)return{ok:!1,error:"Tunnel already running — stop it first."};let d=j().join(l().homedir(),".reflex");await h.promises.mkdir(d,{recursive:!0});let e=j().join(d,"ngrok.yml");await h.promises.writeFile(e,`version: 3
2
+ agent:
3
+ authtoken: ${a.authtoken}
4
+ `,{mode:384});let f=["http",String(a.port),"--config",e,"--log","stdout","--log-format","json"];a.domain&&f.push(`--domain=${a.domain}`);try{b=(0,g.spawn)("ngrok",f,{detached:!1,stdio:["ignore","pipe","pipe"]})}catch(a){return{ok:!1,error:"Failed to spawn ngrok — is the CLI installed and on PATH? "+(a instanceof Error?a.message:String(a))}}return b.on("error",a=>{console.error("[ngrok] spawn error:",a)}),b.on("exit",(a,c)=>{console.log(`[ngrok] tunnel exited code=${a} signal=${c??"-"}`);let d=n();d?.child===b&&o(void 0)}),b.stdout?.on("data",a=>{let b=a.toString().trim();b&&console.log("[ngrok]",b)}),b.stderr?.on("data",a=>{let b=a.toString().trim();b&&console.error("[ngrok!]",b)}),o({child:b,startedAt:new Date().toISOString(),port:a.port,...a.domain?{domain:a.domain}:{}}),{ok:!0}}async function q(){let a=Date.now()+6e3;for(;Date.now()<a;){try{let a=await fetch("http://127.0.0.1:4040/api/tunnels");if(a.ok){let b=await a.json(),c=b.tunnels.find(a=>"https"===a.proto),d=b.tunnels[0],e=c?.public_url??d?.public_url;if(e){let a=n();return a&&(a.publicUrl=e,o(a)),e}}}catch{}await new Promise(a=>setTimeout(a,400))}return null}async function r(){return new Promise(a=>{try{let b=(0,g.spawn)("ngrok",["version"],{stdio:["ignore","pipe","ignore"]}),c="";b.stdout?.on("data",a=>{c+=a.toString()}),b.on("close",()=>a(c.trim()||null)),b.on("error",()=>a(null))}catch{a(null)}})}async function s(a){if(!a)return{ok:!1,error:"ngrok API key not configured"};try{let b=await fetch("https://api.ngrok.com/reserved_domains",{headers:{Authorization:`Bearer ${a}`,"Ngrok-Version":"2"}});if(!b.ok)return{ok:!1,error:`ngrok API ${b.status}: ${(await b.text()).slice(0,200)}`};let c=await b.json();return{ok:!0,domains:(c.reserved_domains??[]).map(a=>({id:a.id,domain:a.domain,region:a.region}))}}catch(a){return{ok:!1,error:"ngrok API call failed: "+(a instanceof Error?a.message:String(a))}}}async function t(){let a=function(){let a=n();return a?null!==a.child.exitCode?(o(void 0),{running:!1}):{running:!0,...a.publicUrl?{publicUrl:a.publicUrl}:{},startedAt:a.startedAt,port:a.port,...a.domain?{domain:a.domain}:{}}:{running:!1}}();return{status:a,cliVersion:await r(),publicHost:process.env.REFLEX_NGROK_HOST??null}}async function u(){let a=await (0,f.M)();if(!a.ngrok.authtoken)return{ok:!1,error:"ngrok.authtoken пуст — заполни в настройках сверху."};let b=await p({port:a.ngrok.port,authtoken:a.ngrok.authtoken,...a.ngrok.domain?{domain:a.ngrok.domain}:{}});if(!b.ok)return b;let c=await q();if(c)try{let a=new URL(c);process.env.REFLEX_NGROK_HOST=a.host}catch{}return(0,e.revalidatePath)("/settings"),{ok:!0,publicUrl:c}}async function v(){let a=await new Promise(a=>{let b=n();if(!b)return void a(!1);let{child:c}=b,d=!1,e=b=>{d||(d=!0,o(void 0),a(b))};if(c.once("exit",()=>e(!0)),null!==c.exitCode)return void e(!0);try{c.kill("SIGTERM")}catch(a){console.error("[ngrok] SIGTERM failed:",a)}setTimeout(()=>{if(!d){try{c.kill("SIGKILL")}catch{}e(!0)}},2500)});return delete process.env.REFLEX_NGROK_HOST,(0,e.revalidatePath)("/settings"),{ok:a}}async function w(a){try{let b=await (0,f.M)(),c={...b,ngrok:{...b.ngrok,...a}};return await (0,f.D)(c),(0,e.revalidatePath)("/settings"),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function x(){return s((await (0,f.M)()).ngrok.apiKey)}(0,c(63781).D)([t,u,v,w,x]),(0,d.A)(t,"005adec00ada04c63ac5fd3676f300faaa566baba2",null),(0,d.A)(u,"0064965602a92a7e6738f2dd50c9c8649e58098591",null),(0,d.A)(v,"00d90c83ff3818ac4300bbac96d6eb8cc271e49800",null),(0,d.A)(w,"40f1ee513b299e663498197ffcdae6b859fb9f5187",null),(0,d.A)(x,"007586d80d3d9afecdd15a851ec6b13b2984a6600d",null)}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=6730,exports.ids=[3657,6730],exports.modules={63657:(a,b,c)=>{c.d(b,{Cs:()=>n,getOAuthProvider:()=>s,isOAuthProviderId:()=>t});var d=c(73024),e=c(48161),f=c.n(e),g=c(76760),h=c.n(g),i=c(14126);let j=i.Ik({title:i.Yj().min(1).max(200),body:i.Yj().max(2e3).optional(),field:i.Yj().max(200).optional(),copy:i.Yj().max(2e3).optional(),choice:i.Yj().max(200).optional()}),k=i.Ik({id:i.Yj().min(1).max(64).regex(/^[a-z][a-z0-9-]*$/,"provider id must be kebab-case (e.g. google, dropbox)"),label:i.Yj().min(1).max(120),authorizeUrl:i.Yj().url(),tokenUrl:i.Yj().url(),defaultScopes:i.YO(i.Yj()).default([]),supportsPKCE:i.zM().default(!0),refreshTokenSupported:i.zM().default(!0),extraAuthorizeParams:i.g1(i.Yj(),i.Yj()).default({}),needsClientSecret:i.zM().default(!0),setupHint:i.Yj().default(""),consoleUrl:i.Yj().url(),setupSteps:i.YO(j).default([])}),l={google:{id:"google",label:"Google",authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",defaultScopes:["openid","email","https://www.googleapis.com/auth/calendar"],supportsPKCE:!0,refreshTokenSupported:!0,extraAuthorizeParams:{access_type:"offline",prompt:"consent"},needsClientSecret:!0,setupHint:"Если ещё не делал — сначала включи нужный API (Calendar/Gmail/Drive) во вкладке APIs & Services → Library.",consoleUrl:"https://console.cloud.google.com/apis/credentials",setupSteps:[{title:"Открой Google Cloud Console → APIs & Services → Credentials."},{title:"Нажми \xab+ CREATE CREDENTIALS\xbb → \xabOAuth client ID\xbb."},{title:"Application type",choice:"Web application",body:"Не \xabDesktop\xbb — Reflex использует фиксированный localhost-redirect."},{title:"Name — любое, например \xabReflex\xbb."},{title:"Authorized redirect URIs → ADD URI",field:"Authorized redirect URIs",copy:"http://localhost:3210/api/oauth/callback",body:"Точно как есть, без слэша в конце, http (не https)."},{title:"Жми CREATE → откроется попап с Client ID и Client Secret."},{title:"Скопируй сюда оба значения. (Если потерял — открой клиент в Credentials, \xabDownload JSON\xbb или \xabReset secret\xbb.)"},{title:"Перед первым Authorize убедись, что нужный API включён: APIs & Services → Library → Google Calendar API → Enable (для других сервисов — аналогично)."}]},github:{id:"github",label:"GitHub",authorizeUrl:"https://github.com/login/oauth/authorize",tokenUrl:"https://github.com/login/oauth/access_token",defaultScopes:["repo","read:user"],supportsPKCE:!1,refreshTokenSupported:!1,extraAuthorizeParams:{},needsClientSecret:!0,setupHint:"Личные OAuth Apps живут в Settings → Developer settings.",consoleUrl:"https://github.com/settings/developers",setupSteps:[{title:"Открой github.com/settings/developers → OAuth Apps."},{title:"Нажми \xabNew OAuth App\xbb."},{title:"Application name — что угодно, например \xabReflex\xbb."},{title:"Homepage URL",field:"Homepage URL",copy:"http://localhost:3210"},{title:"Authorization callback URL",field:"Authorization callback URL",copy:"http://localhost:3210/api/oauth/callback"},{title:"Жми \xabRegister application\xbb."},{title:"Скопируй \xabClient ID\xbb отсюда → в Reflex."},{title:"Нажми \xabGenerate a new client secret\xbb, скопируй значение сразу (показывается один раз) → в Reflex."}]},notion:{id:"notion",label:"Notion",authorizeUrl:"https://api.notion.com/v1/oauth/authorize",tokenUrl:"https://api.notion.com/v1/oauth/token",defaultScopes:[],supportsPKCE:!1,refreshTokenSupported:!1,extraAuthorizeParams:{owner:"user"},needsClientSecret:!0,setupHint:"Reflex использует Public integration (с OAuth flow), не Internal.",consoleUrl:"https://www.notion.so/profile/integrations",setupSteps:[{title:"Открой notion.so/profile/integrations → \xab+ New integration\xbb."},{title:"Name — \xabReflex\xbb."},{title:"Associated workspace — твой workspace."},{title:"Type",choice:"Public",body:"Internal не подходит — для OAuth flow нужна публичная integration."},{title:"Submit → integration создана. Перейди на её страницу."},{title:"В разделе \xabOAuth Domain & URIs\xbb → Redirect URIs → Add URI",field:"Redirect URIs",copy:"http://localhost:3210/api/oauth/callback"},{title:"Save."},{title:"В \xabSecrets\xbb скопируй OAuth client ID и OAuth client secret сюда."}]},slack:{id:"slack",label:"Slack",authorizeUrl:"https://slack.com/oauth/v2/authorize",tokenUrl:"https://slack.com/api/oauth.v2.access",defaultScopes:["chat:write","channels:read"],supportsPKCE:!1,refreshTokenSupported:!0,extraAuthorizeParams:{},needsClientSecret:!0,setupHint:"Scopes по умолчанию (chat:write, channels:read) можно расширить в OAuth & Permissions.",consoleUrl:"https://api.slack.com/apps",setupSteps:[{title:"Открой api.slack.com/apps → \xabCreate New App\xbb → \xabFrom scratch\xbb."},{title:"App Name — \xabReflex\xbb, выбери свой workspace → Create App."},{title:"В левой панели открой \xabOAuth & Permissions\xbb → Redirect URLs → \xabAdd New Redirect URL\xbb",field:"Redirect URLs",copy:"http://localhost:3210/api/oauth/callback"},{title:"Save URLs."},{title:"Под Scopes → User Token Scopes добавь нужные (chat:write, channels:read и т.д. — из defaults Reflex)."},{title:"Вверху страницы Install App → разреши доступ → получишь Client ID и Client Secret в \xabBasic Information\xbb."}]},linear:{id:"linear",label:"Linear",authorizeUrl:"https://linear.app/oauth/authorize",tokenUrl:"https://api.linear.app/oauth/token",defaultScopes:["read","write"],supportsPKCE:!1,refreshTokenSupported:!0,extraAuthorizeParams:{},needsClientSecret:!0,setupHint:"Личная OAuth-aplication привязывается к твоему workspace.",consoleUrl:"https://linear.app/settings/api/applications/new",setupSteps:[{title:"Открой linear.app/settings/api/applications/new (Settings → API → OAuth applications → Create new)."},{title:"Name — \xabReflex\xbb, описание любое."},{title:"Developer URL",field:"Developer URL",copy:"http://localhost:3210"},{title:"Callback URLs",field:"Callback URLs",copy:"http://localhost:3210/api/oauth/callback"},{title:"Scopes — отметь read + write (или те, что нужны: issues:create и т.п.)."},{title:"Submit → копируй Client ID + Client Secret сюда."}]}},m=Object.keys(l),n="http://localhost:3210/api/oauth/callback",o=h().join(f().homedir(),".reflex","oauth","providers.json"),p=i.Ik({version:i.eu(1),providers:i.YO(k)});async function q(){try{let a=await d.promises.readFile(o,"utf8"),b=p.safeParse(JSON.parse(a));if(!b.success)return{version:1,providers:[]};return b.data}catch{return{version:1,providers:[]}}}async function r(){let a=await q(),b=new Set(a.providers.map(a=>a.id)),c=[];for(let a of m)b.has(a)||c.push({def:l[a],origin:"builtin"});for(let b of a.providers)c.push({def:b,origin:"user"});return c}async function s(a){let b=await r();return b.find(b=>b.def.id===a)?.def??null}async function t(a){return await s(a)!==null}},96730:(a,b,c)=>{c.d(b,{Dt:()=>p,getOAuthTokens:()=>q,tY:()=>o});var d=c(73024),e=c(48161),f=c.n(e),g=c(76760),h=c.n(g);c(63657);let i=h().join(f().homedir(),".reflex","oauth"),j=h().join(i,"clients"),k=h().join(i,"tokens");function l(a){return h().join(k,`${a}.json`)}async function m(a,b){await d.promises.mkdir(h().dirname(a),{recursive:!0}),await d.promises.writeFile(a,JSON.stringify(b,null,2)+"\n",{encoding:"utf8",mode:384});try{await d.promises.chmod(a,384)}catch{}}async function n(a){try{let b=await d.promises.readFile(a,"utf8");return JSON.parse(b)}catch{return null}}async function o(a){return n(h().join(j,`${a}.json`))}async function p(a,b){await m(l(a),{...b,updatedAt:new Date().toISOString()})}async function q(a){return n(l(a))}}};