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,179 @@
1
+ "use strict";exports.id=9328,exports.ids=[8514,9328],exports.modules={9328:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Bp:()=>A,JR:()=>P,Kt:()=>I,L_:()=>z,QI:()=>G,QR:()=>y,RK:()=>K,Yt:()=>Q,Zh:()=>J,b7:()=>L,gn:()=>B,i8:()=>R,jf:()=>F,k_:()=>O,mR:()=>E,nO:()=>C,q_:()=>H,vv:()=>x});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(5492),l=c(36017),m=c(51021),n=c(99861),o=c(45730),p=c(97453),q=c(16975),r=c(8118),s=c(28514),t=c(12140),u=c(20050),v=c(63781),w=a([m,n,o]);async function x(a){try{let b=await (0,r.listUtilities)(a??{});return{ok:!0,utilities:b}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function y(a){let b=await (0,o.w)(a);return b.ok?{ok:!0,preview:b.preview}:{ok:!1,error:b.error}}async function z(a){try{let b=await (0,o.installFromGithubConfirmed)(a);return(0,i.revalidatePath)("/utilities"),{ok:!0,scope:b.scope,id:b.id}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function A(){let{getCuratedRegistry:a}=await c.e(4925).then(c.bind(c,44925));return{items:await a()}}async function B(a){if(a.github.startsWith("builtin:"))try{let{installFromBuiltin:b}=await c.e(2035).then(c.bind(c,32035)),d=await b({builtin:a.github,scope:a.scope,...a.rootId?{rootId:a.rootId}:{}});return(0,i.revalidatePath)("/utilities"),{ok:!0,scope:d.scope,id:d.id}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}let b=await (0,o.w)(a.github);if(!b.ok)return{ok:!1,error:b.error};try{let c=await (0,o.installFromGithubConfirmed)({preview:b.preview,scope:a.scope,...a.rootId?{rootId:a.rootId}:{}});return(0,i.revalidatePath)("/utilities"),{ok:!0,scope:c.scope,id:c.id}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function C(a){try{let b=await (0,r.listUtilities)({...a?.rootId?{rootId:a.rootId}:{}}),d=[];for(let a of b){let b=a.manifest.source?.origin??"";if(b.startsWith("builtin:")){let b=await D(a.manifest.id,a.manifest.version);b&&d.push({scope:a.scope,id:a.manifest.id,name:a.manifest.name,currentVersion:a.manifest.version,latestVersion:b.version,source:"builtin",ref:b.spec})}else if(b.startsWith("github:"))try{let{checkGithubUpdate:b}=await Promise.resolve().then(c.bind(c,45730)),e=await b(a.scope,a.manifest.id,a.rootId);!e.upToDate&&e.preview&&d.push({scope:a.scope,id:a.manifest.id,name:a.manifest.name,currentVersion:a.manifest.version,latestVersion:e.preview.manifest.version,source:"github",ref:`github:${e.preview.source.owner}/${e.preview.source.repo}@${e.latestSha}`})}catch{}}return{ok:!0,updates:d}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function D(a,b){try{let d=await Promise.resolve().then(c.t.bind(c,51455,23)),e=(await Promise.resolve().then(c.t.bind(c,76760,23))).join(process.cwd(),"packages","utilities",a,"manifest.json"),f=await d.readFile(e,"utf8"),g=JSON.parse(f);if(!g.version||g.version===b)return null;return{version:g.version,spec:`builtin:${a}@${g.version}`}}catch{return null}}async function E(a){try{let{withUpdateSnapshot:b}=await c.e(4840).then(c.bind(c,94840)),d=await b(a.scope,a.id,a.rootId,async()=>{if("builtin"===a.source){let{installFromBuiltin:b}=await c.e(2035).then(c.bind(c,32035));return(await b({builtin:a.ref,scope:a.scope,...a.rootId?{rootId:a.rootId}:{}})).origin.split("@")[1]??a.latestVersion}if("github"===a.source){let{checkGithubUpdate:b,installFromGithubConfirmed:d}=await Promise.resolve().then(c.bind(c,45730)),e=await b(a.scope,a.id,a.rootId);return e.upToDate||!e.preview?a.currentVersion:(await d({preview:e.preview,scope:a.scope,...a.rootId?{rootId:a.rootId}:{}}),e.preview.manifest.version)}throw Error(`Unknown update source: ${a.source}`)});return(0,i.revalidatePath)("/utilities"),a.rootId&&(0,i.revalidatePath)(`/roots/${a.rootId}`),{ok:!0,newVersion:d}}catch(c){var b,d;let a=c instanceof Error?c.message:String(c);return{ok:!1,error:`Обновление откатано — старая версия восстановлена. Ошибка: ${b=a,d=600,b.length<=600?b:b.slice(0,d)+"…"}`}}}async function F(a,b,c){try{return await (0,r.jc)(a,b,c),await (0,s.J8)(a,b,c),(0,i.revalidatePath)("/utilities"),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function G(a,b,c){try{let d=await (0,r.getUtility)(a,b,c);if(!d)return{ok:!1,error:"utility not found"};return await (0,n.buildUtility)(d),(0,i.revalidatePath)(`/utilities/${a}/${b}`),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function H(a,b,c){try{let d=await (0,o.checkGithubUpdate)(a,b,c);return{ok:!0,...d}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function I(a){return(0,t.y4)(a??{})}async function J(a){let b=p.McpConfigSchema.safeParse(a);if(!b.success)return{ok:!1,error:b.error.message};try{let a=await (0,p.connectAndListTools)(b.data);return{ok:!0,...a.name?{serverName:a.name}:{},...a.version?{serverVersion:a.version}:{},tools:a.tools}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function K(a){try{var b;let c=p.McpConfigSchema.parse(a.config),d=await (0,p.connectAndListTools)(c),e=(0,q.U)({id:a.id,name:a.name,description:a.description??d.name??"",tools:d.tools}),g=u.pL.parse(e.manifest),j=await (0,r.gd)({scope:a.scope,...a.rootId?{rootId:a.rootId}:{},manifest:g,files:e.files,source:{type:"mcp",origin:(b=c,"stdio"===b.transport?`mcp:stdio:${b.command}${b.args.length?" "+b.args.join(" "):""}`:`mcp:${b.transport}:${b.url}`),fetchedAt:new Date().toISOString(),installedBy:"user"}});return await f.promises.writeFile(h().join(j.dir,"mcp.json"),JSON.stringify(c,null,2)+"\n","utf8"),await (0,n.buildUtility)(j),(0,i.revalidatePath)("/utilities"),{ok:!0,scope:j.scope,id:j.manifest.id}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function L(a){try{let b=await (0,r.getUtility)(a.scope,a.id,a.rootId);if(!b)return{ok:!1,error:"utility not found"};if(!a.instruction.trim())return{ok:!1,error:"instruction is empty"};let c=await M(b,a.rootId);if(!c)return{ok:!1,error:"no project root available — register a root first"};let d=await (0,j.Zn)(c);if(!d)return{ok:!1,error:"root not found"};let e=await N(b.dir),f=function(a,b,c,d){let e=c.map(a=>{var b;return"### "+a.rel+"\n```"+((b=a.rel).endsWith(".tsx")?"tsx":b.endsWith(".ts")?"ts":b.endsWith(".jsx")?"jsx":b.endsWith(".js")?"js":b.endsWith(".json")?"json":b.endsWith(".css")?"css":b.endsWith(".md")?"md":"")+"\n"+a.content+"\n```"}).join("\n\n");return[`/goal Доработай Reflex-утилиту "${a.name}" (id: ${a.id}).`,"",`Текущая директория утилиты на диске: \`${b}\`.`,`Scope: ${a.source?.type??"agent"} → manifest.id=${a.id}.`,"\n## Что просит пользователь",d.trim(),"\n## Текущие файлы утилиты",e||"(нет читаемых файлов)",'\n## Что от тебя требуется\n1. Прочитай файлы выше и пойми текущее поведение.\n2. Внеси изменения по запросу пользователя.\n3. Эмить обновлённую утилиту через маркер `<<reflex:utility>>` с тем же `id` и (увеличенной) `version`. Reflex переустановит её поверх существующей и сразу перебилдит bundle.\n4. Проверь, что новый бандл собирается без ошибок и UI отражает запрошенное изменение.\n5. По завершении эмить `<<reflex:kb>>{"kind":"goal-completion",...}` и фразу `GOAL ACHIEVED` на отдельной строке.\n\nНе выдумывай новых импортов вне whitelist (`react`, `react-dom/client`, `react/jsx-runtime`, `@host/api`, `@host/ui`). Если запрос требует чего-то невозможного — спроси через `<<reflex:question>>`.'].join("\n")}(b.manifest,b.dir,e,a.instruction),g=await (0,l.M)(),h=g.assignments.chat,n=await (0,k.OY)({root:d.path,firstMessage:`Edit: ${b.manifest.name}`,harness:h.harness,model:h.model,language:g.language}),o=await (0,m.W)({rootId:c,topicId:n.meta.id,message:f});if("error"in o)return{ok:!1,error:o.error};return(0,i.revalidatePath)(`/roots/${c}`),{ok:!0,rootId:c,topicId:n.meta.id}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function M(a,b){if(a.rootId)return a.rootId;let c=a.manifest.source?.origin;if(c?.startsWith("agent:")){let a=c.split(":");if(a.length>=4){let b=a[1];if(await (0,j.Zn)(b))return b}}if(b&&await (0,j.Zn)(b))return b;let d=await (0,j.qV)();return d[0]?.id}async function N(a){let b=[],c=async(a,d)=>{for(let e of(await f.promises.readdir(a,{withFileTypes:!0}))){if("data"===e.name||"dist"===e.name||"node_modules"===e.name)continue;let g=h().join(a,e.name),i=d?`${d}/${e.name}`:e.name;if(e.isDirectory())await c(g,i);else if(/\.(tsx?|jsx?|md|json|css)$/.test(e.name)&&"bundle.js"!==e.name&&"style.css"!==e.name){let a=await f.promises.readFile(g,"utf8");a.length<32e3&&b.push({rel:i,content:a})}}};return await c(a,""),b}async function O(a){try{let b=await (0,r.getUtility)(a.scope,a.id,a.rootId);if(!b)return{ok:!1,error:"utility not found"};let c=b.manifest.secrets??[],d=new Set(await (0,s.listSecretKeys)(a.scope,a.id,a.rootId));return{ok:!0,secrets:c.map(a=>({key:a.key,label:a.label,description:a.description,required:a.required,set:d.has(a.key)}))}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function P(a){try{let b=await (0,r.getUtility)(a.scope,a.id,a.rootId);if(!b)return{ok:!1,error:"utility not found"};if(!(b.manifest.secrets??[]).find(b=>b.key===a.key))return{ok:!1,error:`secret "${a.key}" is not declared in manifest.secrets`};if(!a.value)return{ok:!1,error:"empty value — use delete instead"};return await (0,s.Pq)(a.scope,a.id,a.key,a.value,a.rootId),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function Q(a){try{return await (0,s.e3)(a.scope,a.id,a.key,a.rootId),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function R(a,b,c){try{let d=await (0,r.getUtility)(a,b,c);if(!d)return{ok:!1,error:"utility not found"};return{ok:!0,manifest:d.manifest}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}[m,n,o]=w.then?(await w)():w,(0,v.D)([x,y,z,A,B,C,E,F,G,H,I,J,K,L,O,P,Q,R]),(0,e.A)(x,"40e190efd19937a6de23f0cc4efd2cb8ca6ef4b305",null),(0,e.A)(y,"400f4906db059227810bcf2c1768a77a6b34085c03",null),(0,e.A)(z,"40d4d9589e0215dda459fcdb925582cfb60cc8c23a",null),(0,e.A)(A,"00e0e47a8d18329615142bb067bec3f0f8a2ff16cb",null),(0,e.A)(B,"40fb59f02e358b555e430fc3390876e456117b1abb",null),(0,e.A)(C,"4040554654d5edea1128bcf68d7626bb8bd051088a",null),(0,e.A)(E,"400f8c81914f27c5d8546cd057d9f36ff0bcae8739",null),(0,e.A)(F,"7023eb83f74367f0a71df3d12450747b3299db5304",null),(0,e.A)(G,"702d15b9ace2262ece44db6727e46c6cad833f4ecb",null),(0,e.A)(H,"70ac02314e6ca01a568db94b9a3ccf46ade9038e8d",null),(0,e.A)(I,"4070ed88f38de095d26addcd3ff2c0159378d1a1da",null),(0,e.A)(J,"4015e0bffd95ecf3c74df7cc8b369a0651e58661c4",null),(0,e.A)(K,"409c8effbefaed45aa73def7d435b9330167f9d049",null),(0,e.A)(L,"40c162a66a03d4a646079dd6e77a1e93f7c2022e01",null),(0,e.A)(O,"400db4e15da3acc3df3f48815dc7cdf9edb50d99d9",null),(0,e.A)(P,"403f57c294212361496c5a9ea50e46ee54acd13000",null),(0,e.A)(Q,"4032ab42fd454a3006bd38a108f93ce6dd32c65a1e",null),(0,e.A)(R,"700c5aa6aa889cefeab553f8e413ed7ef102ed924a",null),d()}catch(a){d(a)}})},12140:(a,b,c)=>{c.d(b,{Md:()=>q,u0:()=>n,y4:()=>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","audit");function l(a){return f().join(k,`${a}.jsonl`)}function m(a=new Date){return a.toISOString().slice(0,10)}async function n(a){let b={ts:a.ts??new Date().toISOString(),...a};await d.promises.mkdir(k,{recursive:!0});let c=l(m());await d.promises.appendFile(c,JSON.stringify(b)+"\n","utf8")}async function o(a={}){let b,c=await p(),e=a.date??c[0]??m(),f=a.limit??500,g=l(e);try{b=await d.promises.readFile(g,"utf8")}catch{return{date:e,entries:[],availableDates:c}}let h=[],i=b.split(/\r?\n/);for(let b=i.length-1;b>=0&&h.length<f;b--){let c,d=i[b];if(d){try{c=JSON.parse(d)}catch{continue}(function(a,b){if(!b)return!0;if(b.utilityId&&a.utilityId!==b.utilityId||b.method&&a.method!==b.method||b.phase&&a.phase!==b.phase)return!1;if(b.status){let c=!a.error;if("ok"===b.status&&!c||"error"===b.status&&c)return!1}return!0})(c,a.filter)&&h.push(c)}}return{date:e,entries:h,availableDates:c}}async function p(){let a;try{a=await d.promises.readdir(k)}catch{return[]}return a.filter(a=>/^\d{4}-\d{2}-\d{2}\.jsonl$/.test(a)).map(a=>a.replace(/\.jsonl$/,"")).sort().reverse()}async function q(a,b){let c=j().randomUUID().replace(/-/g,"").slice(0,16),d=Date.now();await n({ts:new Date().toISOString(),utilityId:a.utilityId,scope:a.scope,channel:a.channel,method:a.method,phase:"start",correlationId:c,...a.parentCorrelationId?{parentCorrelationId:a.parentCorrelationId}:{},args:r(a.args)});try{let e=await b(c);return await n({ts:new Date().toISOString(),utilityId:a.utilityId,scope:a.scope,channel:a.channel,method:a.method,phase:"end",correlationId:c,durationMs:Date.now()-d,result:r(e)}),e}catch(e){let b=e instanceof Error?e.message:String(e);throw await n({ts:new Date().toISOString(),utilityId:a.utilityId,scope:a.scope,channel:a.channel,method:a.method,phase:"end",correlationId:c,durationMs:Date.now()-d,error:b}),e}}function r(a,b=0){if(null==a)return a;if("string"==typeof a)return a.length>2e3?a.slice(0,2e3)+"…[truncated]":a;if("object"!=typeof a)return a;if(b>3)return"[…]";if(Array.isArray(a))return a.slice(0,50).map(a=>r(a,b+1));let c={},d=0;for(let[e,f]of Object.entries(a)){if(d++>=50){c["…"]="truncated";break}c[e]=r(f,b+1)}return c}},16975:(a,b,c)=>{function d(a){var b;return{manifest:{id:a.id,name:a.name,description:a.description,version:"0.1.0",ui:"ui.tsx",serverActions:[],permissions:{audit:{write:!0}}},files:{"ui.tsx":function(a){let b=JSON.stringify(a.tools,null,2);return`import { useState } from "react";
2
+ import { reflex } from "@host/api";
3
+ import {
4
+ Button,
5
+ Card,
6
+ CardContent,
7
+ CardHeader,
8
+ CardTitle,
9
+ Input,
10
+ Label,
11
+ Textarea,
12
+ Badge,
13
+ } from "@host/ui";
14
+
15
+ interface Tool {
16
+ name: string;
17
+ description?: string;
18
+ inputSchema?: {
19
+ type?: string;
20
+ properties?: Record<string, JsonSchemaProperty>;
21
+ required?: string[];
22
+ };
23
+ }
24
+
25
+ interface JsonSchemaProperty {
26
+ type?: string | string[];
27
+ description?: string;
28
+ enum?: unknown[];
29
+ default?: unknown;
30
+ }
31
+
32
+ const TOOLS: Tool[] = ${b};
33
+
34
+ export default function McpBridge() {
35
+ return (
36
+ <div className="p-6 space-y-4 max-w-3xl mx-auto">
37
+ <header className="space-y-1">
38
+ <h1 className="text-xl font-semibold">${e(a.name)}</h1>
39
+ ${a.description?`<p className="text-sm text-slate-600">${e(a.description)}</p>`:""}
40
+ <Badge variant="outline">MCP \xb7 {TOOLS.length} tools</Badge>
41
+ </header>
42
+ {TOOLS.map((tool) => (
43
+ <ToolCard key={tool.name} tool={tool} />
44
+ ))}
45
+ </div>
46
+ );
47
+ }
48
+
49
+ function ToolCard({ tool }: { tool: Tool }) {
50
+ const properties = tool.inputSchema?.properties ?? {};
51
+ const propertyNames = Object.keys(properties);
52
+ const initial: Record<string, string> = {};
53
+ for (const k of propertyNames) {
54
+ const d = properties[k]?.default;
55
+ initial[k] = d == null ? "" : typeof d === "string" ? d : JSON.stringify(d);
56
+ }
57
+ const [values, setValues] = useState<Record<string, string>>(initial);
58
+ const [result, setResult] = useState<string | null>(null);
59
+ const [error, setError] = useState<string | null>(null);
60
+ const [busy, setBusy] = useState(false);
61
+
62
+ const run = async () => {
63
+ setBusy(true);
64
+ setError(null);
65
+ setResult(null);
66
+ try {
67
+ const args: Record<string, unknown> = {};
68
+ for (const k of propertyNames) {
69
+ const prop = properties[k];
70
+ args[k] = coerceValue(values[k], prop);
71
+ }
72
+ const res = await reflex.mcp.call({ tool: tool.name, args });
73
+ setResult(typeof res === "string" ? res : JSON.stringify(res, null, 2));
74
+ } catch (err) {
75
+ setError(err instanceof Error ? err.message : String(err));
76
+ } finally {
77
+ setBusy(false);
78
+ }
79
+ };
80
+
81
+ return (
82
+ <Card>
83
+ <CardHeader>
84
+ <CardTitle className="flex items-center gap-2">
85
+ <span className="font-mono text-sm">{tool.name}</span>
86
+ </CardTitle>
87
+ {tool.description && (
88
+ <p className="text-xs text-slate-600">{tool.description}</p>
89
+ )}
90
+ </CardHeader>
91
+ <CardContent>
92
+ <div className="space-y-3">
93
+ {propertyNames.length === 0 && (
94
+ <p className="text-xs italic text-slate-500">No input parameters.</p>
95
+ )}
96
+ {propertyNames.map((k) => {
97
+ const prop = properties[k];
98
+ const t = primitiveType(prop);
99
+ const isLong = t === "object" || t === "array";
100
+ return (
101
+ <div key={k} className="space-y-1">
102
+ <Label className="flex items-center gap-2">
103
+ <span className="font-mono">{k}</span>
104
+ <span className="text-slate-400 text-[10px]">{describeType(prop)}</span>
105
+ </Label>
106
+ {prop?.description && (
107
+ <p className="text-xs text-slate-500">{prop.description}</p>
108
+ )}
109
+ {isLong ? (
110
+ <Textarea
111
+ value={values[k]}
112
+ onChange={(e) =>
113
+ setValues({ ...values, [k]: e.target.value })
114
+ }
115
+ placeholder={t === "array" ? "[]" : "{}"}
116
+ />
117
+ ) : (
118
+ <Input
119
+ value={values[k]}
120
+ onChange={(e) =>
121
+ setValues({ ...values, [k]: e.target.value })
122
+ }
123
+ placeholder={t}
124
+ />
125
+ )}
126
+ </div>
127
+ );
128
+ })}
129
+ <Button onClick={run} disabled={busy}>
130
+ {busy ? "Выполняется…" : "Запустить"}
131
+ </Button>
132
+ {error && (
133
+ <pre className="text-xs whitespace-pre-wrap text-red-700 bg-red-50 border border-red-200 rounded p-2">
134
+ {error}
135
+ </pre>
136
+ )}
137
+ {result && (
138
+ <pre className="text-xs whitespace-pre-wrap bg-slate-50 border border-slate-200 rounded p-2 max-h-72 overflow-auto">
139
+ {result}
140
+ </pre>
141
+ )}
142
+ </div>
143
+ </CardContent>
144
+ </Card>
145
+ );
146
+ }
147
+
148
+ function primitiveType(prop?: JsonSchemaProperty): string {
149
+ if (!prop) return "string";
150
+ const t = Array.isArray(prop.type) ? prop.type[0] : prop.type;
151
+ return t ?? "string";
152
+ }
153
+
154
+ function describeType(prop?: JsonSchemaProperty): string {
155
+ if (!prop) return "string";
156
+ const t = primitiveType(prop);
157
+ if (prop.enum) return t + " \xb7 " + prop.enum.map((e) => JSON.stringify(e)).join(" | ");
158
+ return t;
159
+ }
160
+
161
+ function coerceValue(raw: string, prop?: JsonSchemaProperty): unknown {
162
+ if (raw === "") return undefined;
163
+ const t = primitiveType(prop);
164
+ if (t === "number" || t === "integer") {
165
+ const n = Number(raw);
166
+ if (Number.isNaN(n)) throw new Error(\`expected number for \${prop ? "param" : "value"}\`);
167
+ return n;
168
+ }
169
+ if (t === "boolean") {
170
+ if (raw === "true") return true;
171
+ if (raw === "false") return false;
172
+ throw new Error("expected boolean (true/false)");
173
+ }
174
+ if (t === "object" || t === "array") {
175
+ return JSON.parse(raw);
176
+ }
177
+ return raw;
178
+ }
179
+ `}(a),"README.md":(b=a,[`# ${b.name}`,"",`Reflex-обёртка над MCP-сервером. Tools (${b.tools.length}):`,"",...b.tools.map(a=>`- **${a.name}**${a.description?` — ${a.description}`:""}`),"","Конфиг сервера — в `mcp.json` рядом с этим файлом.",""].join("\n"))}}}function e(a){return a.replace(/[\\"`]/g,"\\$&").replace(/\n/g," ")}c.d(b,{U:()=>d})},28514:(a,b,c)=>{c.d(b,{J8:()=>r,Pq:()=>o,e3:()=>p,getSecret:()=>n,listSecretKeys:()=>q});var d=c(73024),e=c(48161),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598);let j=h().join(f().homedir(),".reflex","secrets");function k(a,b,c){return h().join(j,a,function(a,b){if("global"===a)return"_";if(!b)throw Error("project-scope secrets require rootId");return/^[a-f0-9]{8,64}$/.test(b)?b:(0,i.createHash)("sha1").update(b).digest("hex").slice(0,16)}(a,c),`${b}.json`)}async function l(a){try{let b=await d.promises.readFile(a,"utf8"),c=JSON.parse(b);if(1!==c.version||!c.values||"object"!=typeof c.values)return{version:1,values:{}};return{version:1,values:c.values}}catch{return{version:1,values:{}}}}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,b,c,d){let e=await l(k(a,b,d));return Object.prototype.hasOwnProperty.call(e.values,c)?e.values[c]:null}async function o(a,b,c,d,e){let f=k(a,b,e),g=await l(f);g.values[c]=d,await m(f,g)}async function p(a,b,c,d){let e=k(a,b,d),f=await l(e);c in f.values&&(delete f.values[c],await m(e,f))}async function q(a,b,c){return Object.keys((await l(k(a,b,c))).values).sort()}async function r(a,b,c){let e=k(a,b,c);try{await d.promises.unlink(e)}catch{}}},45730:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{checkGithubUpdate:()=>l,installFromGithubConfirmed:()=>k,w:()=>j});var e=c(56149),f=c(20050),g=c(8118),h=c(99861),i=a([h]);async function j(a){let b;try{b=function(a){let b,c,d="HEAD",e=/^github:([^/]+)\/([^@]+)(?:@(.+))?$/.exec(a.trim());if(e)b=e[1],c=e[2],e[3]&&(d=e[3]);else{let e;try{e=new URL(a)}catch{throw Error("not a valid URL")}if("github.com"!==e.hostname)throw Error("only github.com URLs are supported");let f=e.pathname.split("/").filter(Boolean);if(f.length<2)throw Error("URL must include owner/repo");b=f[0],c=f[1].replace(/\.git$/,""),"tree"===f[2]&&f[3]&&(d=f.slice(3).join("/"))}return{owner:b,repo:c,ref:d}}(a)}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}try{let a=await m(b),c={...b,sha:a},{manifest:d,files:e,sizes:f}=await o(c);return{ok:!0,preview:{source:c,manifest:d,files:e,sizes:f}}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function k(a){let b=`github:${a.preview.source.owner}/${a.preview.source.repo}@${a.preview.source.sha}`,c=await (0,g.gd)({scope:a.scope,...a.rootId?{rootId:a.rootId}:{},manifest:a.preview.manifest,files:a.preview.files,source:{type:"github",origin:b,fetchedAt:new Date().toISOString(),installedBy:"github-installer"}});return await (0,h.buildUtility)(c),{scope:c.scope,id:c.manifest.id,origin:b}}async function l(a,b,c){let d=await (0,g.getUtility)(a,b,c);if(!d)throw Error("utility not found");let e=d.manifest.source?.origin;if(!e||!e.startsWith("github:"))throw Error("utility was not installed from github");let f=/^github:([^/]+)\/([^@]+)@(.+)$/.exec(e);if(!f)throw Error(`unrecognized github origin: ${e}`);let h={owner:f[1],repo:f[2],ref:"HEAD",sha:f[3]},i=await m(h);if(i===h.sha)return{upToDate:!0,currentSha:h.sha,latestSha:i};let j={...h,sha:i},{manifest:k,files:l,sizes:n}=await o(j);return{upToDate:!1,currentSha:h.sha,latestSha:i,preview:{source:j,manifest:k,files:l,sizes:n}}}async function m(a){let b=await fetch(`https://api.github.com/repos/${a.owner}/${a.repo}/commits/${encodeURIComponent(a.ref)}`,{headers:{Accept:"application/vnd.github+json"},signal:AbortSignal.timeout(8e3)});if(!b.ok)throw Error(`github: ${b.status} resolving ${a.owner}/${a.repo}@${a.ref}`);let c=await b.json();if(!c.sha)throw Error("github returned no sha");return c.sha}async function n(a,b,c=!1){let d=`https://raw.githubusercontent.com/${a.owner}/${a.repo}/${a.sha}/${b}`,e=await fetch(d,{signal:AbortSignal.timeout(1e4)});if(!e.ok){if(c&&404===e.status)return null;throw Error(`github raw: ${e.status} for ${b}`)}let f=await e.text();if(f.length>262144)throw Error(`file ${b} exceeds 262144 bytes`);return f}h=(i.then?(await i)():i)[0];let p=e.g1(e.Yj(),e.Yj());async function o(a){let b=await n(a,"manifest.json");if(!b)throw Error("manifest.json missing");let c=f.pL.parse(JSON.parse(b)),d={},e={},g=await n(a,c.ui);if(!g)throw Error(`${c.ui} missing`);d[c.ui]=g,e[c.ui]=Buffer.byteLength(g,"utf8");let h=await n(a,"README.md",!0);for(let b of(h&&(d["README.md"]=h,e["README.md"]=Buffer.byteLength(h,"utf8")),c.serverActions)){let c=await n(a,b.entry);if(!c)throw Error(`server action entry ${b.entry} missing`);d[b.entry]=c,e[b.entry]=Buffer.byteLength(c,"utf8")}let i=`https://raw.githubusercontent.com/${a.owner}/${a.repo}/${a.sha}/icon.png`,j=await fetch(i,{signal:AbortSignal.timeout(5e3)});if(j.ok){let a=Buffer.from(await j.arrayBuffer());a.length<=32768&&(d["icon.png"]=a.toString("base64"),e["icon.png"]=a.length)}return p.parse(d),{manifest:c,files:d,sizes:e}}d()}catch(a){d(a)}})}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=94,exports.ids=[94],exports.modules={10094:(a,b,c)=>{c.d(b,{Cs:()=>n,E4:()=>s,H:()=>w,To:()=>v,getOAuthProvider:()=>t,isOAuthProviderId:()=>u,lL:()=>k,uq:()=>x});var d=c(73024),e=c(48161),f=c.n(e),g=c(76760),h=c.n(g),i=c(56149);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(a){await d.promises.mkdir(h().dirname(o),{recursive:!0}),await d.promises.writeFile(o,JSON.stringify(a,null,2)+"\n",{encoding:"utf8",mode:384});try{await d.promises.chmod(o,384)}catch{}}async function s(){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 t(a){let b=await s();return b.find(b=>b.def.id===a)?.def??null}async function u(a){return await t(a)!==null}async function v(a){let b=k.parse(a);if(void 0!==l[b.id])throw Error(`"${b.id}" is a built-in provider id — pick a different slug`);let c=await q();if(c.providers.some(a=>a.id===b.id))throw Error(`provider "${b.id}" already exists`);c.providers.push(b),await r(c)}async function w(a,b){if(void 0!==l[a])throw Error(`cannot edit built-in provider "${a}"`);let c=await q(),d=c.providers.findIndex(b=>b.id===a);if(d<0)throw Error(`provider "${a}" not found`);let e=k.parse({...c.providers[d],...b,id:a});c.providers[d]=e,await r(c)}async function x(a){if(void 0!==l[a])throw Error(`cannot remove built-in provider "${a}"`);let b=await q(),c=b.providers.filter(b=>b.id!==a);c.length!==b.providers.length&&(b.providers=c,await r(b))}}};
@@ -0,0 +1 @@
1
+ exports.id=9579,exports.ids=[1960,9579],exports.modules={29579:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{runServerAction:()=>m});var e=c(75919),f=c(76760),g=c.n(f),h=c(73136),i=c(47300),j=c(62485),k=c(25475),l=a([i,j]);async function m(a){let b=(0,i.actionBundlePath)(a.utility.dir,a.action.name),c=(0,h.pathToFileURL)(b).toString(),d=function(){let a=g().resolve(process.cwd(),"lib/server/utilities/worker-bootstrap.js"),b=null;try{b=95679}catch{}return b&&g().isAbsolute(b)?b:a}();return new Promise((b,f)=>{let g=new e.Worker(d,{workerData:{bundleUrl:c,actionName:a.action.name,utilityId:a.utility.manifest.id,scope:a.utility.scope},env:{},eval:!1,resourceLimits:{maxOldGenerationSizeMb:256,maxYoungGenerationSizeMb:64}}),h=!1,i=(c,d,e)=>{h||(h=!0,clearTimeout(l),g.removeAllListeners(),g.terminate().catch(()=>{}),c?((0,k.u0)({ts:new Date().toISOString(),utilityId:a.utility.manifest.id,scope:a.utility.scope,channel:"worker",method:`action:${a.action.name}`,phase:"end",correlationId:a.parentCorrelationId??"(detached)",error:e??c.message}),f(c)):b(d))},l=setTimeout(()=>{i(Error("server action timed out"),void 0,"timeout")},a.action.timeoutMs);g.on("error",a=>i(a)),g.on("exit",a=>{0!==a&&i(Error(`worker exited with code ${a}`))}),g.on("message",async b=>{if(b&&"object"==typeof b){if("host-rpc"===b.type){let c=b.id,d=b.method,e=b.args;try{let b=await (0,j.p)({utility:a.utility,channel:"worker",...a.parentCorrelationId?{parentCorrelationId:a.parentCorrelationId}:{}},d,e);g.postMessage({type:"host-rpc-result",id:c,ok:!0,result:b})}catch(a){g.postMessage({type:"host-rpc-result",id:c,ok:!1,error:a instanceof Error?a.message:String(a)})}return}"invoke-result"===b.type&&(b.ok?i(null,b.result):i(Error(b.error||"server action failed")))}}),g.postMessage({type:"invoke",args:a.args})})}[i,j]=l.then?(await l)():l,d()}catch(a){d(a)}})},46735:a=>{function b(a){return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b})}b.keys=()=>[],b.resolve=b,b.id=46735,a.exports=b},95679:(a,b,c)=>{"use strict";var d=c(75919);if(!d.parentPort)throw Error("worker-bootstrap.js must be loaded as a worker_threads child");let e=new Map,f=1,g=new Proxy({},{get(a,b){if("string"==typeof b)return new Proxy({},{get(a,c){if("string"==typeof c)return a=>new Promise((g,h)=>{let i=f++;e.set(i,{resolve:g,reject:h}),d.parentPort.postMessage({type:"host-rpc",id:i,method:`${b}.${c}`,args:a})})}})}});globalThis.__reflexHost=g,d.parentPort.on("message",async a=>{if(a&&"host-rpc-result"===a.type){let b=e.get(a.id);if(!b)return;e.delete(a.id),a.ok?b.resolve(a.result):b.reject(Error(a.error||"rpc failed"));return}if(a&&"invoke"===a.type)try{let b=await c(46735)(d.workerData.bundleUrl),e=b[d.workerData.actionName]??b.default;if("function"!=typeof e)throw Error(`action "${d.workerData.actionName}" must export a function (named export or default)`);let f=await e(a.args,g);d.parentPort.postMessage({type:"invoke-result",ok:!0,result:f})}catch(a){d.parentPort.postMessage({type:"invoke-result",ok:!1,error:a&&a.message?a.message:String(a)})}})}};