reflex-agent 0.13.5 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +101 -94
- package/.next/app-path-routes-manifest.json +8 -7
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +7 -7
- package/.next/react-loadable-manifest.json +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/agents/[agentId]/page.js +2 -2
- package/.next/server/app/agents/[agentId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agents/[agentId]/respond/route.js +1 -1
- package/.next/server/app/api/agents/[agentId]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/images/[rootId]/[file]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/start/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/attachments/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/send/route.js +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/send/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/stop/route.js +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/stop/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/chat/[topicId]/stream/route.js +2 -2
- package/.next/server/app/api/roots/[id]/chat/[topicId]/stream/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/dashboard/route.js +1 -1
- package/.next/server/app/api/roots/[id]/dashboard/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/roots/[id]/suggestions/route.js +1 -1
- package/.next/server/app/api/roots/[id]/suggestions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/bundle.js/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/host/route.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/host/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/host-api.mjs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/host-ui.mjs/route.js +53 -1
- package/.next/server/app/api/utilities/[scope]/[id]/host-ui.mjs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/iframe/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/[scope]/[id]/style.css/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/utilities/install-archive/route.js +1 -0
- package/.next/server/app/api/utilities/install-archive/route.js.nft.json +1 -0
- package/.next/server/app/api/utilities/install-archive/route_client-reference-manifest.js +1 -0
- package/.next/server/app/audit/page.js +1 -1
- package/.next/server/app/audit/page_client-reference-manifest.js +1 -1
- package/.next/server/app/onboarding/page.js +3 -3
- package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/[id]/chat/[topicId]/page.js +2 -2
- package/.next/server/app/roots/[id]/chat/[topicId]/page.js.nft.json +1 -1
- package/.next/server/app/roots/[id]/chat/[topicId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/[id]/kb/[...slug]/page.js +2 -2
- package/.next/server/app/roots/[id]/kb/[...slug]/page.js.nft.json +1 -1
- package/.next/server/app/roots/[id]/kb/[...slug]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/[id]/memory/page.js +1 -1
- package/.next/server/app/roots/[id]/memory/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/[id]/page.js +4 -4
- package/.next/server/app/roots/[id]/page.js.nft.json +1 -1
- package/.next/server/app/roots/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/[id]/workflows/[wfId]/page.js +2 -2
- package/.next/server/app/roots/[id]/workflows/[wfId]/page.js.nft.json +1 -1
- package/.next/server/app/roots/[id]/workflows/[wfId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/[id]/workflows/page.js +2 -2
- package/.next/server/app/roots/[id]/workflows/page.js.nft.json +1 -1
- package/.next/server/app/roots/[id]/workflows/page_client-reference-manifest.js +1 -1
- package/.next/server/app/roots/new/page.js +4 -4
- package/.next/server/app/roots/new/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +5 -5
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/share/[id]/file/page.js +2 -2
- package/.next/server/app/share/[id]/file/page_client-reference-manifest.js +1 -1
- package/.next/server/app/share/[id]/page.js +2 -2
- package/.next/server/app/share/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/utilities/[scope]/[id]/page.js +2 -2
- package/.next/server/app/utilities/[scope]/[id]/page.js.nft.json +1 -1
- package/.next/server/app/utilities/[scope]/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/utilities/page.js +2 -2
- package/.next/server/app/utilities/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +8 -7
- package/.next/server/chunks/1105.js +1 -1
- package/.next/server/chunks/1358.js +1 -1
- package/.next/server/chunks/285.js +9 -6
- package/.next/server/chunks/3091.js +1 -0
- package/.next/server/chunks/3332.js +1 -1
- package/.next/server/chunks/3795.js +3 -0
- package/.next/server/chunks/{7564.js → 4299.js} +2 -2
- package/.next/server/chunks/4812.js +1 -1
- package/.next/server/chunks/6648.js +1 -0
- package/.next/server/chunks/7300.js +56 -4
- package/.next/server/chunks/7358.js +3 -0
- package/.next/server/chunks/9098.js +1 -1
- package/.next/server/chunks/969.js +1 -0
- package/.next/server/chunks/9809.js +1 -1
- package/.next/server/chunks/9861.js +57 -5
- package/.next/server/functions-config-manifest.json +5 -4
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/1y4wPze4yO8DprxGKwSXQ/_buildManifest.js +1 -0
- package/.next/static/chunks/2608-755e5d9ca79c19dc.js +1 -0
- package/.next/static/chunks/4108.17cd7704e88bcb32.js +1 -0
- package/.next/static/chunks/4442-79daa48fe7845771.js +1 -0
- package/.next/static/chunks/6226-819ec17660994a7d.js +1 -0
- package/.next/static/chunks/7922-9a16eb68adcc7498.js +1 -0
- package/.next/static/chunks/9624-7dc547ab202a1d82.js +1 -0
- package/.next/static/chunks/app/api/agents/[agentId]/respond/route-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/api/images/[rootId]/[file]/route-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/api/oauth/callback/route-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/api/oauth/start/route-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/api/roots/[id]/attachments/route-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/api/roots/[id]/chat/[topicId]/send/route-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/api/roots/[id]/chat/[topicId]/stop/route-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/api/roots/[id]/chat/[topicId]/stream/route-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/api/roots/[id]/dashboard/route-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/api/roots/[id]/suggestions/route-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/api/utilities/[scope]/[id]/bundle.js/route-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/api/utilities/[scope]/[id]/host/route-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/api/utilities/[scope]/[id]/host-api.mjs/route-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/api/utilities/[scope]/[id]/host-ui.mjs/route-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/api/utilities/[scope]/[id]/iframe/route-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/api/utilities/[scope]/[id]/style.css/route-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/api/utilities/install-archive/route-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/layout-5caae9e60f5d6d42.js +1 -0
- package/.next/static/chunks/app/onboarding/page-3bb8ad02f9c88fdf.js +1 -0
- package/.next/static/chunks/app/page-6e32890e646e50aa.js +1 -0
- package/.next/static/chunks/app/roots/[id]/chat/[topicId]/page-ac00a7a8d6a16da8.js +1 -0
- package/.next/static/chunks/app/roots/[id]/kb/[...slug]/page-14cb4b8a24e40dc7.js +1 -0
- package/.next/static/chunks/app/roots/[id]/layout-5d0cd3b754198853.js +1 -0
- package/.next/static/chunks/app/roots/[id]/memory/page-7bbe675652b7f9e8.js +1 -0
- package/.next/static/chunks/app/roots/[id]/page-2080ede443a668d2.js +1 -0
- package/.next/static/chunks/app/roots/[id]/workflows/[wfId]/page-c744450355558209.js +1 -0
- package/.next/static/chunks/app/roots/[id]/workflows/page-8175a0fbbc465472.js +1 -0
- package/.next/static/chunks/app/roots/new/page-3d83b5dfb0a8f869.js +1 -0
- package/.next/static/chunks/app/settings/page-550fab06213d866c.js +1 -0
- package/.next/static/chunks/app/share/[id]/page-c290e46d1beba1ff.js +1 -0
- package/.next/static/chunks/app/utilities/[scope]/[id]/{page-3c6c50d24b9aa8a3.js → page-5aaa4731a5ab783d.js} +1 -1
- package/.next/static/chunks/app/utilities/page-0e362fd622574297.js +1 -0
- package/.next/static/chunks/{webpack-87d6f4f6cb0681d9.js → webpack-e60c7ddfa84db519.js} +1 -1
- package/.next/trace +90 -90
- package/.next/types/app/api/utilities/install-archive/route.ts +347 -0
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/dist/lib/reflex/prompts/defaults.js +3 -0
- package/dist/lib/reflex/prompts/defaults.js.map +1 -1
- package/package.json +2 -1
- package/.next/server/chunks/462.js +0 -3
- package/.next/server/chunks/5906.js +0 -1
- package/.next/server/chunks/7239.js +0 -1
- package/.next/server/chunks/9975.js +0 -1
- package/.next/static/FjPl5lLyObDgORD6F9-MK/_buildManifest.js +0 -1
- package/.next/static/chunks/1722-1f7df607ccd79308.js +0 -1
- package/.next/static/chunks/4088-7c72e188b9bde99b.js +0 -1
- package/.next/static/chunks/4108.7b6bc850cb87e9bc.js +0 -1
- package/.next/static/chunks/5757-9ae2804a278bf867.js +0 -1
- package/.next/static/chunks/6136-9bf50790263804d1.js +0 -1
- package/.next/static/chunks/7260-36ed6b2076b8a79f.js +0 -1
- package/.next/static/chunks/app/api/agents/[agentId]/respond/route-7e2f82a91b10b7e2.js +0 -1
- package/.next/static/chunks/app/api/images/[rootId]/[file]/route-7e2f82a91b10b7e2.js +0 -1
- package/.next/static/chunks/app/api/oauth/callback/route-7e2f82a91b10b7e2.js +0 -1
- package/.next/static/chunks/app/api/oauth/start/route-7e2f82a91b10b7e2.js +0 -1
- package/.next/static/chunks/app/api/roots/[id]/attachments/route-7e2f82a91b10b7e2.js +0 -1
- package/.next/static/chunks/app/api/roots/[id]/chat/[topicId]/send/route-7e2f82a91b10b7e2.js +0 -1
- package/.next/static/chunks/app/api/roots/[id]/chat/[topicId]/stop/route-7e2f82a91b10b7e2.js +0 -1
- package/.next/static/chunks/app/api/roots/[id]/chat/[topicId]/stream/route-7e2f82a91b10b7e2.js +0 -1
- package/.next/static/chunks/app/api/roots/[id]/dashboard/route-7e2f82a91b10b7e2.js +0 -1
- package/.next/static/chunks/app/api/roots/[id]/suggestions/route-7e2f82a91b10b7e2.js +0 -1
- package/.next/static/chunks/app/api/utilities/[scope]/[id]/bundle.js/route-7e2f82a91b10b7e2.js +0 -1
- package/.next/static/chunks/app/api/utilities/[scope]/[id]/host/route-7e2f82a91b10b7e2.js +0 -1
- package/.next/static/chunks/app/api/utilities/[scope]/[id]/host-api.mjs/route-7e2f82a91b10b7e2.js +0 -1
- package/.next/static/chunks/app/api/utilities/[scope]/[id]/host-ui.mjs/route-7e2f82a91b10b7e2.js +0 -1
- package/.next/static/chunks/app/api/utilities/[scope]/[id]/iframe/route-7e2f82a91b10b7e2.js +0 -1
- package/.next/static/chunks/app/api/utilities/[scope]/[id]/style.css/route-7e2f82a91b10b7e2.js +0 -1
- package/.next/static/chunks/app/layout-0d2ea0e793b0a0da.js +0 -1
- package/.next/static/chunks/app/onboarding/page-9ebf81ad78d9173a.js +0 -1
- package/.next/static/chunks/app/page-b926895e820623de.js +0 -1
- package/.next/static/chunks/app/roots/[id]/chat/[topicId]/page-1868f90d718dc449.js +0 -1
- package/.next/static/chunks/app/roots/[id]/kb/[...slug]/page-b112a20948212db8.js +0 -1
- package/.next/static/chunks/app/roots/[id]/layout-7e2f82a91b10b7e2.js +0 -1
- package/.next/static/chunks/app/roots/[id]/memory/page-495bfa5d5ccc95fc.js +0 -1
- package/.next/static/chunks/app/roots/[id]/page-df2eddea266dab67.js +0 -1
- package/.next/static/chunks/app/roots/[id]/workflows/[wfId]/page-9dbebdc6cf006bf3.js +0 -1
- package/.next/static/chunks/app/roots/[id]/workflows/page-0f527d3f6b8ab4a0.js +0 -1
- package/.next/static/chunks/app/roots/new/page-c2ffb2099313f672.js +0 -1
- package/.next/static/chunks/app/settings/page-9ee28e7943ae7620.js +0 -1
- package/.next/static/chunks/app/share/[id]/page-1f5f909096557c29.js +0 -1
- package/.next/static/chunks/app/utilities/page-0944fa72a82e7a76.js +0 -1
- /package/.next/static/{FjPl5lLyObDgORD6F9-MK → 1y4wPze4yO8DprxGKwSXQ}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";exports.id=3795,exports.ids=[3795],exports.modules={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})}},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:()=>o});var d=c(64173),e=c(17240),f=c(87671),g=c(71813),h=c(73569),i=c(44052),j=c(92696),k=c(51086),l=c(8836),m=c(88724),n=c(57814);function o({rootId:a,focusFile:b}){let c=(0,g.c)("roots"),[,o]=(0,e.useTransition)(),p=(0,f.useRouter)();return(0,d.jsx)(l.E,{label:c("commandBar.label"),children:(0,d.jsx)(n.L,{rootId:a,placeholder:c("commandBar.placeholder"),submitLabel:c("commandBar.submit"),pendingLabel:c("commandBar.submitPending"),SubmitIcon:h.A,onSubmit:async({message:d,attachments:e})=>await new Promise(f=>{o(async()=>{let g=await (0,j.g)(a,d,e,b);if(!g.ok){i.oR.error(g.error??c("commandBar.startFailed")),f(!1);return}(0,m.$d)(m.Zi.topicsChanged(a)),d.trim()&&(0,k.h)(a,g.topicId,d).then(b=>{b.ok&&(0,m.$d)(m.Zi.topicsChanged(a))}),p.push(`/roots/${a}/chat/${g.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=``;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
|
+
_Photo: [${a.attribution.name}](${a.attribution.link})_`:"",f=`${e}`;return a.attachToKb&&(b=await m(a.rootId,{title:a.alt||"Found image",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=``;return a.attachToKb&&(b=await m(a.rootId,{title:a.alt||"Uploaded image",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,"40cb4644bf54ca43f67a50aae9bc00059722399550",null),(0,d.A)(j,"40b0f04935fd3239c9748740e170377bf3ba03c080",null),(0,d.A)(k,"40eb32af5e902a48dc90ace231fb06d6e109138ea1",null),(0,d.A)(l,"400965a1f9fc3db1981b899965b0a0edd5fe5418d6",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"}]])},51086:(a,b,c)=>{c.d(b,{h:()=>e});var d=c(3265);let e=(0,d.createServerReference)("7044d226c44bc09b7f8a89033c20eab29f5d5002f9",d.callServer,void 0,d.findSourceMapURL,"generateTopicTitleAction")},56374:(a,b,c)=>{c.d(b,{ShareButton:()=>p});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(71813),m=c(3265);let n=(0,m.createServerReference)("40e4d6691f4a6b81fe3319ae635d5d56fd16ed6b66",m.callServer,void 0,m.findSourceMapURL,"createShareAction");var o=c(46221);function p(a){let b=(0,l.c)("app"),[c,m]=(0,e.useState)(!1),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useTransition)(),[t,u]=(0,e.useState)(null);return c?t?(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:b("share.button.createdTitle")})]}),(0,d.jsx)("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",className:"block font-mono text-[11px] text-violet-700 hover:underline break-all",children:t.url}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>void navigator.clipboard.writeText(t.url).then(()=>k.oR.success(b("share.button.copied"))),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"}),b("share.button.copy")]}),(0,d.jsx)("button",{type:"button",onClick:()=>{u(null),m(!1),q("")},className:"text-muted-foreground hover:text-foreground",children:b("share.button.done")})]})]}):(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:b("share.button.newLink")}),(0,d.jsx)("button",{type:"button",onClick:()=>m(!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:b("share.button.passwordLabel")}),(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:p,onChange:a=>q(a.target.value),autoFocus:!0,placeholder:b("share.button.passwordPlaceholder"),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:()=>{s(async()=>{let c=await (0,o.N)(),d=await n({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}:{},...p.trim()?{password:p.trim()}:{}});if(!d.ok)return void k.oR.error(d.error);let e=c.status.publicUrl??window.location.origin,f=new URL(`/share/${d.share.id}`,e).toString();u({share:d.share,url:f}),navigator.clipboard.writeText(f).catch(()=>null),k.oR.success(c.status.running?b("share.button.created"):b("share.button.createdNoTunnel"))})},disabled:r,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:r?b("share.button.creating"):b("share.button.create")}),(0,d.jsx)("p",{className:"text-[10px] text-muted-foreground",children:b("share.button.footer")})]}):(0,d.jsxs)("button",{type:"button",onClick:()=>m(!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:b("share.button.title"),children:[(0,d.jsx)(f,{className:"h-3.5 w-3.5"}),!a.iconOnly&&b("share.button.label")]})}},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"}]])},82138:(a,b,c)=>{c.d(b,{InsertImageButton:()=>C});var d=c(64173),e=c(17240),f=c(87671),g=c(29130),h=c(71813),i=c(20583),j=c(66979),k=c(69552),l=c(65943);let m=(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 n=c(44052),o=c(47071),p=c(45477),q=c(80281),r=c(71155),s=c(16551),t=c(27456),u=c(12650),v=c(3265);let w=(0,v.createServerReference)("40cb4644bf54ca43f67a50aae9bc00059722399550",v.callServer,void 0,v.findSourceMapURL,"generateAction"),x=(0,v.createServerReference)("40b0f04935fd3239c9748740e170377bf3ba03c080",v.callServer,void 0,v.findSourceMapURL,"searchAction"),y=(0,v.createServerReference)("40eb32af5e902a48dc90ace231fb06d6e109138ea1",v.callServer,void 0,v.findSourceMapURL,"attachAction"),z=(0,v.createServerReference)("400965a1f9fc3db1981b899965b0a0edd5fe5418d6",v.callServer,void 0,v.findSourceMapURL,"uploadAction"),A=["1:1","16:9","9:16","4:3","3:4","21:9"];function B({rootId:a,open:b,onOpenChange:c,onInsert:f}){let v=(0,h.c)("app"),[B,C]=(0,e.useState)(""),[D,E]=(0,e.useState)("gemini"),[F,G]=(0,e.useState)("1:1"),[H,I]=(0,e.useState)(!0),[J,K]=(0,e.useState)(null),[L,M]=(0,e.useTransition)(),[N,O]=(0,e.useState)(""),[P,Q]=(0,e.useState)("unsplash"),[R,S]=(0,e.useState)([]),[T,U]=(0,e.useTransition)(),[V,W]=(0,e.useState)(null),[X,Y]=(0,e.useState)(!0),[Z,$]=(0,e.useState)(""),[_,aa]=(0,e.useState)(!0),[ab,ac]=(0,e.useTransition)();if(!b)return null;let ad=()=>{N.trim()&&(S([]),U(async()=>{let b=await x({rootId:a,query:N.trim(),provider:P,count:12});if(!b.ok)return void n.oR.error(b.error);S(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:v("images.titleHeader")}),(0,d.jsx)(i.$,{type:"button",size:"icon",variant:"ghost",className:"h-7 w-7",onClick:()=>c(!1),children:(0,d.jsx)(j.A,{className:"h-4 w-4"})})]}),(0,d.jsxs)(s.tU,{defaultValue:"generate",className:"flex-1 min-h-0 flex flex-col",children:[(0,d.jsxs)(s.j7,{className:"mx-4 mt-3 self-start",children:[(0,d.jsxs)(s.Xi,{value:"generate",children:[(0,d.jsx)(k.A,{className:"mr-1 h-3.5 w-3.5"})," ",v("images.tabGenerate")]}),(0,d.jsxs)(s.Xi,{value:"search",children:[(0,d.jsx)(l.A,{className:"mr-1 h-3.5 w-3.5"})," ",v("images.tabSearch")]}),(0,d.jsxs)(s.Xi,{value:"upload",children:[(0,d.jsx)(m,{className:"mr-1 h-3.5 w-3.5"})," ",v("images.tabUpload")]})]}),(0,d.jsxs)(t.F,{className:"flex-1 min-h-0",children:[(0,d.jsxs)(s.av,{value:"generate",className:"px-4 py-4 space-y-3",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(q.J,{htmlFor:"img-prompt",children:v("images.promptLabel")}),(0,d.jsx)(p.T,{id:"img-prompt",value:B,onChange:a=>C(a.target.value),placeholder:v("images.promptPlaceholder"),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)(q.J,{children:v("images.providerLabel")}),(0,d.jsxs)(r.l6,{value:D,onValueChange:a=>E(a),children:[(0,d.jsx)(r.bq,{children:(0,d.jsx)(r.yv,{})}),(0,d.jsxs)(r.gC,{children:[(0,d.jsx)(r.eb,{value:"gemini",children:"Gemini Nano Banana"}),(0,d.jsx)(r.eb,{value:"codex",children:"Codex $imagegen"})]})]})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(q.J,{children:v("images.aspectLabel")}),(0,d.jsxs)(r.l6,{value:F,onValueChange:G,children:[(0,d.jsx)(r.bq,{children:(0,d.jsx)(r.yv,{})}),(0,d.jsx)(r.gC,{children:A.map(a=>(0,d.jsx)(r.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:H,onChange:a=>I(a.target.checked)}),v("images.saveToKb")]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(i.$,{type:"button",size:"sm",onClick:()=>{B.trim()&&(K(null),M(async()=>{let b=await w({rootId:a,prompt:B.trim(),provider:D,aspectRatio:F,attachToKb:H});if(!b.ok)return void n.oR.error(b.error);K({url:b.url,markdown:b.markdown,...b.kbRelPath?{kbRelPath:b.kbRelPath}:{}})}))},disabled:L||!B.trim(),children:L?v("images.generating"):v("images.generate")}),L&&(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:v("images.takesAMinute")})]}),L?(0,d.jsx)(u.E,{className:"h-64 w-full"}):J?(0,d.jsxs)("div",{className:"space-y-2 border rounded p-3",children:[(0,d.jsx)("img",{src:J.url,alt:B,className:"max-h-80 mx-auto rounded"}),(0,d.jsxs)("div",{className:"flex gap-2 justify-end",children:[(0,d.jsx)(i.$,{type:"button",size:"sm",variant:"outline",onClick:()=>K(null),children:v("images.again")}),(0,d.jsx)(i.$,{type:"button",size:"sm",onClick:()=>{J&&(f?.(J),n.oR.success(J.kbRelPath?v("images.savedToKb",{path:J.kbRelPath}):v("images.ready")),c(!1))},children:v("images.insert")})]})]}):null]}),(0,d.jsxs)(s.av,{value:"search",className:"px-4 py-4 space-y-3",children:[(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(o.p,{value:N,onChange:a=>O(a.target.value),placeholder:v("images.searchPlaceholder"),onKeyDown:a=>{"Enter"===a.key&&ad()}}),(0,d.jsxs)(r.l6,{value:P,onValueChange:a=>Q(a),children:[(0,d.jsx)(r.bq,{className:"w-36",children:(0,d.jsx)(r.yv,{})}),(0,d.jsxs)(r.gC,{children:[(0,d.jsx)(r.eb,{value:"unsplash",children:"Unsplash"}),(0,d.jsx)(r.eb,{value:"pexels",children:"Pexels"}),(0,d.jsx)(r.eb,{value:"brave",children:v("images.braveWeb")})]})]}),(0,d.jsx)(i.$,{type:"button",size:"sm",onClick:ad,disabled:T||!N.trim(),children:v("images.find")})]}),(0,d.jsxs)("label",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,d.jsx)("input",{type:"checkbox",checked:X,onChange:a=>Y(a.target.checked)}),v("images.saveToKb")]}),T&&0===R.length?(0,d.jsx)("div",{className:"grid grid-cols-3 gap-2",children:Array.from({length:6}).map((a,b)=>(0,d.jsx)(u.E,{className:"h-32 w-full"},b))}):R.length>0?(0,d.jsx)("div",{className:"grid grid-cols-3 gap-2",children:R.map(b=>(0,d.jsxs)("button",{type:"button",disabled:null!==V,onClick:()=>{W(b.url),U(async()=>{let d=await y({rootId:a,sourceUrl:b.url,alt:N.trim()||"image",attribution:b.attribution,attachToKb:X});if(W(null),!d.ok)return void n.oR.error(d.error);f?.({url:d.url,markdown:d.markdown,...d.kbRelPath?{kbRelPath:d.kbRelPath}:{}}),n.oR.success(d.kbRelPath?v("images.savedToKb",{path:d.kbRelPath}):v("images.savedToProject")),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}),V===b.url&&(0,d.jsx)("div",{className:"absolute inset-0 bg-black/40 flex items-center justify-center text-xs text-white",children:v("images.saving")})]},b.url))}):(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:v("images.noKeys")})]}),(0,d.jsxs)(s.av,{value:"upload",className:"px-4 py-4 space-y-3",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(q.J,{htmlFor:"img-alt",children:v("images.altLabel")}),(0,d.jsx)(o.p,{id:"img-alt",value:Z,onChange:a=>$(a.target.value),placeholder:v("images.altPlaceholder")})]}),(0,d.jsxs)("label",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,d.jsx)("input",{type:"checkbox",checked:_,onChange:a=>aa(a.target.checked)}),v("images.saveToKb")]}),(0,d.jsx)(o.p,{type:"file",accept:"image/*",disabled:ab,onChange:b=>{let d=b.target.files?.[0];d&&ac(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 z({rootId:a,base64:b,mime:d.type,alt:Z||d.name.replace(/\.[^.]+$/,""),attachToKb:_});if(!e.ok)return void n.oR.error(e.error);f?.({url:e.url,markdown:e.markdown,...e.kbRelPath?{kbRelPath:e.kbRelPath}:{}}),n.oR.success(e.kbRelPath?v("images.savedToKb",{path:e.kbRelPath}):v("images.uploaded")),c(!1)})}}),ab&&(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:v("images.uploading")})]})]})]})]})]})}function C({rootId:a,redirectToKb:b=!0}){let[c,j]=(0,e.useState)(!1),k=(0,f.useRouter)(),l=(0,h.c)("app");return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(i.$,{type:"button",variant:"ghost",size:"sm",onClick:()=>j(!0),children:[(0,d.jsx)(g.A,{className:"mr-1 h-4 w-4"})," ",l("images.button")]}),(0,d.jsx)(B,{rootId:a,open:c,onOpenChange:j,onInsert:({kbRelPath:c})=>{if(b&&c){let b=c.split("/").map(encodeURIComponent).join("/");k.push(`/roots/${a}/kb/${b}`)}}})]})}},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"}]])},92696:(a,b,c)=>{c.d(b,{g:()=>e});var d=c(3265);let e=(0,d.createServerReference)("78c3f2500c42332a8c114501958483c62375d5516b",d.callServer,void 0,d.findSourceMapURL,"startTopicAction")}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=
|
|
1
|
+
"use strict";exports.id=4299,exports.ids=[4299],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,"40e4d6691f4a6b81fe3319ae635d5d56fd16ed6b66",null),(0,d.A)(h,"00046e33f185b858dac8b592fbf1cad972dc017e6f",null),(0,d.A)(i,"40e4902d2ce5dab2898a8c140f2636d8f18758f759",null)},30878:(a,b,c)=>{c.d(b,{BE:()=>o,Bg:()=>m,Ru:()=>q,cn:()=>p,er:()=>n});var d=c(73024),e=c(76760),f=c.n(e),g=c(77598),h=c.n(g),i=c(73652);let j=f().join((0,i._)(),"shares.json");async function k(){try{let a=await d.promises.readFile(j,"utf8"),b=JSON.parse(a);if(b&&Array.isArray(b.shares))return b}catch{}return{version:1,shares:[]}}async function l(a){await d.promises.mkdir(f().dirname(j),{recursive:!0}),await d.promises.writeFile(j,JSON.stringify(a,null,2)+"\n",{mode:384})}async function m(){return(await k()).shares}async function n(a){return(await k()).shares.find(b=>b.id===a)??null}function o(a,b){if(!a.passwordHash)return!0;if(!a.passwordSalt)return!1;let c=h().createHash("sha256").update(a.passwordSalt+":"+b).digest("hex");return h().timingSafeEqual(Buffer.from(c,"hex"),Buffer.from(a.passwordHash,"hex"))}async function p(a){let b=await k(),c={id:function(){let a="abcdefghjkmnpqrstuvwxyz23456789",b="";for(let c=0;c<12;c++)b+=a[h().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=h().randomBytes(16).toString("hex"),c=h().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 l(b),c}async function q(a){let b=await k(),c=b.shares.length;return b.shares=b.shares.filter(b=>b.id!==a),b.shares.length!==c&&(await l(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})}},46221:(a,b,c)=>{c.d(b,{N:()=>e});var d=c(3265);let e=(0,d.createServerReference)("00bf2ed558954da84ef1a017e0c8acd1eff544205f",d.callServer,void 0,d.findSourceMapURL,"getTunnelStatusAction")},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:()=>s,bt:()=>v,Zl:()=>w,Nt:()=>t,Fm:()=>u});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(73652);let l="__reflex_ngrok_tunnel__";function m(){return globalThis[l]}function n(a){globalThis[l]=a}async function o(a){let b;if(!a.authtoken)return{ok:!1,error:"ngrok authtoken is required"};let c=m();if(c&&null===c.child.exitCode)return{ok:!1,error:"Tunnel already running — stop it first."};let d=(0,k._)();await h.promises.mkdir(d,{recursive:!0});let e=j().join(d,"ngrok.yml");await h.promises.writeFile(e,`version: 3
|
|
2
2
|
agent:
|
|
3
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=m();d?.child===b&&n(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)}),n({child:b,startedAt:new Date().toISOString(),port:a.port,...a.domain?{domain:a.domain}:{}}),{ok:!0}}async function p(){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=m();return a&&(a.publicUrl=e,n(a)),e}}}catch{}await new Promise(a=>setTimeout(a,400))}return null}async function q(){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 r(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 s(){let a=function(){let a=m();return a?null!==a.child.exitCode?(n(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 q(),publicHost:process.env.REFLEX_NGROK_HOST??null}}async function t(){let a=await (0,f.M)();if(!a.ngrok.authtoken)return{ok:!1,error:"ngrok.authtoken is empty — fill it in the settings above."};let b=await o({port:a.ngrok.port,authtoken:a.ngrok.authtoken,...a.ngrok.domain?{domain:a.ngrok.domain}:{}});if(!b.ok)return b;let c=await p();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 u(){let a=await new Promise(a=>{let b=m();if(!b)return void a(!1);let{child:c}=b,d=!1,e=b=>{d||(d=!0,n(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 v(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 w(){return r((await (0,f.M)()).ngrok.apiKey)}(0,c(63781).D)([s,t,u,v,w]),(0,d.A)(s,"
|
|
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=m();d?.child===b&&n(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)}),n({child:b,startedAt:new Date().toISOString(),port:a.port,...a.domain?{domain:a.domain}:{}}),{ok:!0}}async function p(){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=m();return a&&(a.publicUrl=e,n(a)),e}}}catch{}await new Promise(a=>setTimeout(a,400))}return null}async function q(){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 r(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 s(){let a=function(){let a=m();return a?null!==a.child.exitCode?(n(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 q(),publicHost:process.env.REFLEX_NGROK_HOST??null}}async function t(){let a=await (0,f.M)();if(!a.ngrok.authtoken)return{ok:!1,error:"ngrok.authtoken is empty — fill it in the settings above."};let b=await o({port:a.ngrok.port,authtoken:a.ngrok.authtoken,...a.ngrok.domain?{domain:a.ngrok.domain}:{}});if(!b.ok)return b;let c=await p();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 u(){let a=await new Promise(a=>{let b=m();if(!b)return void a(!1);let{child:c}=b,d=!1,e=b=>{d||(d=!0,n(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 v(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 w(){return r((await (0,f.M)()).ngrok.apiKey)}(0,c(63781).D)([s,t,u,v,w]),(0,d.A)(s,"00bf2ed558954da84ef1a017e0c8acd1eff544205f",null),(0,d.A)(t,"00afd6d7d2a238b11fab47d61f567185685321547c",null),(0,d.A)(u,"00785341a57aefbc84e9355806da00e93102fd7b5e",null),(0,d.A)(v,"408bdaf35385d9cd4bd498281c53240d5876405459",null),(0,d.A)(w,"0050667c8b1d8c7d09c44a7c55605c43c84679b9f9",null)}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=4812,exports.ids=[4812,8514],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 b,{withUpdateSnapshot:d}=await c.e(4840).then(c.bind(c,94840));if("builtin"===a.source)b=async()=>{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};else if("github"===a.source){let{checkGithubUpdate:d,installFromGithubConfirmed:e}=await Promise.resolve().then(c.bind(c,45730)),f=await d(a.scope,a.id,a.rootId);if(f.upToDate||!f.preview)return{ok:!0,newVersion:a.currentVersion};let g=f.preview;b=async()=>(await e({preview:g,scope:a.scope,...a.rootId?{rootId:a.rootId}:{}}),g.manifest.version)}else throw Error(`Unknown update source: ${a.source}`);let e=await d(a.scope,a.id,a.rootId,b);return(0,i.revalidatePath)("/utilities"),a.rootId&&(0,i.revalidatePath)(`/roots/${a.rootId}`),{ok:!0,newVersion:e}}catch(c){var b,d;let a=c instanceof Error?c.message:String(c);return{ok:!1,error:`Update rolled back — previous version restored. 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 Improve the Reflex utility "${a.name}" (id: ${a.id}).`,"",`Current utility directory on disk: \`${b}\`.`,`Scope: ${a.source?.type??"agent"} -> manifest.id=${a.id}.`,"\n## What the user is asking",d.trim(),"\n## Current utility files",e||"(no readable files)",'\n## What is required of you\n1. Read the files above and understand the current behaviour.\n2. Make the changes the user requested.\n3. Emit the updated utility via the `<<reflex:utility>>` marker with the same `id` and an incremented `version`. Reflex will reinstall it on top of the existing one and rebuild the bundle immediately.\n4. Verify the new bundle builds without errors and the UI reflects the requested change.\n5. When done, emit `<<reflex:kb>>{"kind":"goal-completion",...}` and the phrase `GOAL ACHIEVED` on a separate line.\n\nDo not invent imports outside the whitelist (`react`, `react-dom/client`, `react/jsx-runtime`, `@host/api`, `@host/ui`). If the request requires something impossible — ask via `<<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,"402a032253e21a844bb40a38c8ddaff49b52eef7d9",null),(0,e.A)(y,"408b3bd5940fd46803ce19d03b441a304904724274",null),(0,e.A)(z,"4004d1b90d0e3de2483ff4a2be0ab8850567d73ce9",null),(0,e.A)(A,"000af2ebd5308f12adb66febd23f1d19dde2921c55",null),(0,e.A)(B,"4052537915f80e1c1af985ac6029a622f3e6c27830",null),(0,e.A)(C,"409fb62f5cd553ba59cccafb41e088442820542c07",null),(0,e.A)(E,"405c3b6c853f7981925c86cdd3e04ee94cf63ca566",null),(0,e.A)(F,"70ccb3732172dc609fdb778d4efdf794b1ec68a38e",null),(0,e.A)(G,"707bd28d74b677f3862c9019ba456a144889a82902",null),(0,e.A)(H,"7090d156493494c318ab114f3f1862cbff6aa6d3a7",null),(0,e.A)(I,"402ab1fc1283984d2af46fa1b3f3b15da5848bcce1",null),(0,e.A)(J,"40ebe0ed90332e0ccc1d05e5623532999b011eeb2a",null),(0,e.A)(K,"402eb6b3db70a606db8c59a0ede0685a647a1297b3",null),(0,e.A)(L,"40c933af75569c0da1a582967294428e02c8bf09c3",null),(0,e.A)(O,"4014d9eac3c68b5d8ca208ae2ecaa5319ce8931c31",null),(0,e.A)(P,"40fd330130abaa76822ee50e450c48798d93ec7ca3",null),(0,e.A)(Q,"401514b63cd7916054488dbbf79ed85c6abe99d14b",null),(0,e.A)(R,"701feaf4003db50265dfac327472d11c4afd47d9be",null),d()}catch(a){d(a)}})},12140:(a,b,c)=>{c.d(b,{Md:()=>p,u0:()=>m,y4:()=>n});var d=c(73024),e=c(76760),f=c.n(e),g=c(77598),h=c.n(g),i=c(73652);let j=f().join((0,i._)(),"audit");function k(a){return f().join(j,`${a}.jsonl`)}function l(a=new Date){return a.toISOString().slice(0,10)}async function m(a){let b={ts:a.ts??new Date().toISOString(),...a};await d.promises.mkdir(j,{recursive:!0});let c=k(l());await d.promises.appendFile(c,JSON.stringify(b)+"\n","utf8")}async function n(a={}){let b,c=await o(),e=a.date??c[0]??l(),f=a.limit??500,g=k(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 o(){let a;try{a=await d.promises.readdir(j)}catch{return[]}return a.filter(a=>/^\d{4}-\d{2}-\d{2}\.jsonl$/.test(a)).map(a=>a.replace(/\.jsonl$/,"")).sort().reverse()}async function p(a,b){let c=h().randomUUID().replace(/-/g,"").slice(0,16),d=Date.now();await m({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:q(a.args)});try{let e=await b(c);return await m({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:q(e)}),e}catch(e){let b=e instanceof Error?e.message:String(e);throw await m({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 q(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=>q(a,b+1));let c={},d=0;for(let[e,f]of Object.entries(a)){if(d++>=50){c["…"]="truncated";break}c[e]=q(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";
|
|
1
|
+
"use strict";exports.id=4812,exports.ids=[4812,8514],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 b,{withUpdateSnapshot:d}=await c.e(4840).then(c.bind(c,94840));if("builtin"===a.source)b=async()=>{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};else if("github"===a.source){let{checkGithubUpdate:d,installFromGithubConfirmed:e}=await Promise.resolve().then(c.bind(c,45730)),f=await d(a.scope,a.id,a.rootId);if(f.upToDate||!f.preview)return{ok:!0,newVersion:a.currentVersion};let g=f.preview;b=async()=>(await e({preview:g,scope:a.scope,...a.rootId?{rootId:a.rootId}:{}}),g.manifest.version)}else throw Error(`Unknown update source: ${a.source}`);let e=await d(a.scope,a.id,a.rootId,b);return(0,i.revalidatePath)("/utilities"),a.rootId&&(0,i.revalidatePath)(`/roots/${a.rootId}`),{ok:!0,newVersion:e}}catch(c){var b,d;let a=c instanceof Error?c.message:String(c);return{ok:!1,error:`Update rolled back — previous version restored. 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 Improve the Reflex utility "${a.name}" (id: ${a.id}).`,"",`Current utility directory on disk: \`${b}\`.`,`Scope: ${a.source?.type??"agent"} -> manifest.id=${a.id}.`,"\n## What the user is asking",d.trim(),"\n## Current utility files",e||"(no readable files)",'\n## What is required of you\n1. Read the files above and understand the current behaviour.\n2. Make the changes the user requested.\n3. Emit the updated utility via the `<<reflex:utility>>` marker with the same `id` and an incremented `version`. Reflex will reinstall it on top of the existing one and rebuild the bundle immediately.\n4. Verify the new bundle builds without errors and the UI reflects the requested change.\n5. When done, emit `<<reflex:kb>>{"kind":"goal-completion",...}` and the phrase `GOAL ACHIEVED` on a separate line.\n\nImports: `react`/`react-dom`, `@host/api`, `@host/ui`, plus any npm package you declare in `manifest.dependencies` (bundled from esm.sh at build). An undeclared bare import is a build error. If the request requires something impossible — ask via `<<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,"4026dbb01d859bb21babd5335c76fdb4d2d3cc13be",null),(0,e.A)(y,"402508bcbb8278733d9eb9b2eb3ecfa01564dedd3a",null),(0,e.A)(z,"4020cd0b9c7dbfe8bdd30c53aa1c998a9864dea6c9",null),(0,e.A)(A,"00bfd42b1d960268fe98c533ae16efbd2a1602bb1b",null),(0,e.A)(B,"40dbfa88cb050ef7eba3c82d8b7538fe6bf9057610",null),(0,e.A)(C,"402ad60cde03a15ac9e7aeea6dc02126ceda113259",null),(0,e.A)(E,"40f5da1b6cee7fa4ed62bf83067448e7404d749f21",null),(0,e.A)(F,"706bccdf9a59e1e24328380cb605693693af6673d4",null),(0,e.A)(G,"70afad63c022ac4b0f7c0f237c0f73d294b98cf41a",null),(0,e.A)(H,"70ae47a097b52f6bc7d7ec58360a53cdc8bda33c24",null),(0,e.A)(I,"40ef1b4d9a4002d8593e87d0d620a810efe969dcac",null),(0,e.A)(J,"4089d88f9dbbcc2bed0e9c90cb928532014cc1346f",null),(0,e.A)(K,"4070dcf7516ffb403e3c9f4d281e3a5cbf0a85081c",null),(0,e.A)(L,"404dbc531a9a1f27d4a3afaab883a6d30c78fef4a3",null),(0,e.A)(O,"40dbddc0d998d1901560dd5d46f23cc8242e7d5b27",null),(0,e.A)(P,"40df23283b6908afd400b353fb297955c8ebdf75db",null),(0,e.A)(Q,"40fc87171996911f25f488243a47b998f7e9cb85c1",null),(0,e.A)(R,"70822041ee5396274d18d3791ed35351b51d27017b",null),d()}catch(a){d(a)}})},12140:(a,b,c)=>{c.d(b,{Md:()=>p,u0:()=>m,y4:()=>n});var d=c(73024),e=c(76760),f=c.n(e),g=c(77598),h=c.n(g),i=c(73652);let j=f().join((0,i._)(),"audit");function k(a){return f().join(j,`${a}.jsonl`)}function l(a=new Date){return a.toISOString().slice(0,10)}async function m(a){let b={ts:a.ts??new Date().toISOString(),...a};await d.promises.mkdir(j,{recursive:!0});let c=k(l());await d.promises.appendFile(c,JSON.stringify(b)+"\n","utf8")}async function n(a={}){let b,c=await o(),e=a.date??c[0]??l(),f=a.limit??500,g=k(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 o(){let a;try{a=await d.promises.readdir(j)}catch{return[]}return a.filter(a=>/^\d{4}-\d{2}-\d{2}\.jsonl$/.test(a)).map(a=>a.replace(/\.jsonl$/,"")).sort().reverse()}async function p(a,b){let c=h().randomUUID().replace(/-/g,"").slice(0,16),d=Date.now();await m({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:q(a.args)});try{let e=await b(c);return await m({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:q(e)}),e}catch(e){let b=e instanceof Error?e.message:String(e);throw await m({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 q(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=>q(a,b+1));let c={},d=0;for(let[e,f]of Object.entries(a)){if(d++>=50){c["…"]="truncated";break}c[e]=q(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
2
|
import { reflex } from "@host/api";
|
|
3
3
|
import {
|
|
4
4
|
Button,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports.id=6648,exports.ids=[6648],exports.modules={4953:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=c(24688).unstable_rethrow;("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},6993:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g});var d=c(63003),e=c(9310),f=c(24576);async function g({children:a,params:b}){let{id:c}=await b;return await (0,f.Zn)(c)||(0,e.notFound)(),(0,d.jsx)("div",{className:"flex-1 flex flex-col min-h-0",children:a})}},7902:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{AY:()=>m,LH:()=>q,LK:()=>l,Ll:()=>r,XF:()=>s,Xz:()=>o,hb:()=>n,nf:()=>p});var e=c(73745);c(66493);var f=c(65326),g=c(53905),h=c(73928),i=c(55143),j=c(63781),k=a([i]);async function l(a){try{let b=await (0,g.Zn)(a);if(!b)return{ok:!1,error:"Root not found"};let d=await (0,h.listWorkflows)(b.path),{collectExtensions:e}=await Promise.resolve().then(c.bind(c,35961)),f=await e({rootId:a}),i=new Set(d.map(a=>a.id)),j=[...d,...f.workflows.filter(a=>!i.has(a.id))];return{ok:!0,workflows:j}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function m(a,b){try{let c=await (0,g.Zn)(a);if(!c)return{ok:!1,error:"Root not found"};let d=await (0,h.readWorkflow)(c.path,b);if(!d)return{ok:!1,error:"Not found"};return{ok:!0,workflow:d}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function n(a,b){try{let c=await (0,g.Zn)(a);if(!c)return{ok:!1,error:"Root not found"};let d=await (0,h.readWorkflow)(c.path,b.id),e={...b,createdAt:d?.createdAt??b.createdAt??new Date().toISOString(),updatedAt:new Date().toISOString()},j=(0,i.n)(e);if(j)return{ok:!1,error:j};return await (0,h.r$)(c.path,e),(0,f.revalidatePath)(`/roots/${a}/workflows`),(0,f.revalidatePath)(`/roots/${a}/workflows/${b.id}`),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function o(a,b,c){try{let d=await (0,g.Zn)(a);if(!d)return{ok:!1,error:"Root not found"};let e=await (0,h.readWorkflow)(d.path,b);if(!e)return{ok:!1,error:"Workflow lives in a utility manifest — uninstall or fork it to disable."};return await (0,h.r$)(d.path,{...e,enabled:c,updatedAt:new Date().toISOString()}),(0,f.revalidatePath)(`/roots/${a}/workflows`),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function p(a,b){try{let c=await (0,g.Zn)(a);if(!c)return{ok:!1,error:"Root not found"};return await (0,h.L6)(c.path,b),(0,f.revalidatePath)(`/roots/${a}/workflows`),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function q(a,b,c){return(0,i.runWorkflow)(a,b,c)}async function r(a,b){try{let c=await (0,g.Zn)(a);if(!c)return{ok:!1,error:"Root not found"};let d=await (0,h.v)(c.path,b);return{ok:!0,runs:d}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function s(a,b,c,d){try{let e=await (0,g.Zn)(a);if(!e)return{ok:!1,error:"Root not found"};let i=await (0,h.readWorkflow)(e.path,b);if(!i)return{ok:!1,error:"Not found"};let j=i.steps.findIndex(a=>a.id===c);if(j<0)return{ok:!1,error:"Step not found"};let k="up"===d?j-1:j+1;if(k<0||k>=i.steps.length)return{ok:!0};let l=[...i.steps],m=l[j],n=l[k];return l[j]=n,l[k]=m,i.steps=l,i.updatedAt=new Date().toISOString(),await (0,h.r$)(e.path,i),(0,f.revalidatePath)(`/roots/${a}/workflows/${b}`),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}i=(k.then?(await k)():k)[0],(0,j.D)([l,m,n,o,p,q,r,s]),(0,e.A)(l,"401aad99898a1701abfd92221443d6424500a6b6ff",null),(0,e.A)(m,"60a08d688dea57deb7a6d73a099ced76cac54489ec",null),(0,e.A)(n,"609204a4c200758e30ad0033a637ffafb3c275fa0e",null),(0,e.A)(o,"7092c553b3b3adb1104430279649f6d29d6d41e5e6",null),(0,e.A)(p,"60377258f57ceda4d069f2d7d8a0f362b25f7aca5e",null),(0,e.A)(q,"707fbdeef6f4d5fef6a89a0dd942717db05b6ca2dc",null),(0,e.A)(r,"6036906de6d190180f99685422b35d08680c7dd823",null),(0,e.A)(s,"783ea4fe2309763b177768742882bd2c0ff0c89a90",null),d()}catch(a){d(a)}})},9310:(a,b,c)=>{"use strict";var d=c(74830);c.o(d,"notFound")&&c.d(b,{notFound:function(){return d.notFound}}),c.o(d,"redirect")&&c.d(b,{redirect:function(){return d.redirect}})},17596:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(19963).A)("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]])},24688:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=c(88546),e=c(60703),f=c(61052),g=c(54144),h=c(44113),i=c(43909);("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},26290:(a,b,c)=>{"use strict";c.d(b,{cn:()=>f});var d=c(83243),e=c(86103);function f(...a){return(0,e.QP)((0,d.$)(a))}},30717:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"unauthorized",{enumerable:!0,get:function(){return d}}),c(75826).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},42343:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"notFound",{enumerable:!0,get:function(){return e}});let d=""+c(75826).HTTP_ERROR_FALLBACK_ERROR_CODE+";404";function e(){let a=Object.defineProperty(Error(d),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw a.digest=d,a}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},42382:(a,b,c)=>{"use strict";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})}},43490:(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"forbidden",{enumerable:!0,get:function(){return d}}),c(75826).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},47452:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(19963).A)("Workflow",[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]])},57322:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"400ddb824d30603de9917be19ae03162f48a2248bd":()=>d.rD,"4075d44f247542613eeee0bc7505c689034714102a":()=>d.AZ,"409079487f75e4cf3ab9696e1e8d8fc194f0dcd91e":()=>d.summarizeYoutubeAction,"40a209060b84cd95d16dc67fabf413752b4e0168dc":()=>d.Gh,"40eb0f61a08b9a540de060e836ca0fd50f44d17552":()=>d.O1});var d=c(18746)},60524:(a,b,c)=>{"use strict";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")},71495:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{getRedirectError:function(){return g},getRedirectStatusCodeFromError:function(){return l},getRedirectTypeFromError:function(){return k},getURLFromRedirectError:function(){return j},permanentRedirect:function(){return i},redirect:function(){return h}});let d=c(20498),e=c(52512),f=c(19121).actionAsyncStorage;function g(a,b,c){void 0===c&&(c=d.RedirectStatusCode.TemporaryRedirect);let f=Object.defineProperty(Error(e.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return f.digest=e.REDIRECT_ERROR_CODE+";"+b+";"+a+";"+c+";",f}function h(a,b){var c;throw null!=b||(b=(null==f||null==(c=f.getStore())?void 0:c.isAction)?e.RedirectType.push:e.RedirectType.replace),g(a,b,d.RedirectStatusCode.TemporaryRedirect)}function i(a,b){throw void 0===b&&(b=e.RedirectType.replace),g(a,b,d.RedirectStatusCode.PermanentRedirect)}function j(a){return(0,e.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function k(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function l(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},74830:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{ReadonlyURLSearchParams:function(){return k},RedirectType:function(){return e.RedirectType},forbidden:function(){return g.forbidden},notFound:function(){return f.notFound},permanentRedirect:function(){return d.permanentRedirect},redirect:function(){return d.redirect},unauthorized:function(){return h.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return i.unstable_rethrow}});let d=c(71495),e=c(52512),f=c(42343),g=c(43490),h=c(30717),i=c(4953);class j extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class k extends URLSearchParams{append(){throw new j}delete(){throw new j}set(){throw new j}sort(){throw new j}}function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}("function"==typeof b.default||"object"==typeof b.default&&null!==b.default)&&void 0===b.default.__esModule&&(Object.defineProperty(b.default,"__esModule",{value:!0}),Object.assign(b.default,b),a.exports=b.default)},80432:()=>{},84913:(a,b,c)=>{"use strict";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})}},87817:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{"00845f96527f3684e6def80bdc0f333ecb2b61ef09":()=>g.i,"40063ad620375e57329871a0f9124a04c117ad5cc3":()=>f.uX,"4015f6e0e4760a82616dc12e15576087d7b6702fe1":()=>f.DW,"401aad99898a1701abfd92221443d6424500a6b6ff":()=>i.LK,"403f7b0d85cf7c88c82a18d0e5ffcbc8402c96524e":()=>h.MU,"404d285de9f75afe539d9c23e180e4b21e3e7f6d72":()=>f.zm,"405ba248f3b8f498b3cf29d89a836c4582f7963f63":()=>e.nY,"405eec77015823504c4d87c03db040d53fa326e6e4":()=>f.u7,"408c0a7dd30a0bd18e85787c67a8bc6f8fc6163ba5":()=>e.Pd,"40e724d0266b2a3a906045e1cd0703077a4ac6ecbc":()=>h.$z,"6036906de6d190180f99685422b35d08680c7dd823":()=>i.Ll,"60377258f57ceda4d069f2d7d8a0f362b25f7aca5e":()=>i.nf,"609204a4c200758e30ad0033a637ffafb3c275fa0e":()=>i.hb,"60a08d688dea57deb7a6d73a099ced76cac54489ec":()=>i.AY,"60aca7b73665ef85604f648bbe1616034cd83463a3":()=>e.L4,"60df3de3deb95f983017fdc2bba70bf2726dc3d05a":()=>h.Tc,"60fecb3b35cfccc39f4a7fc774f2e9dacb58ff6e92":()=>e.OQ,"7044d226c44bc09b7f8a89033c20eab29f5d5002f9":()=>e.h$,"707fbdeef6f4d5fef6a89a0dd942717db05b6ca2dc":()=>i.LH,"7092c553b3b3adb1104430279649f6d29d6d41e5e6":()=>i.Xz,"783ea4fe2309763b177768742882bd2c0ff0c89a90":()=>i.XF,"78c3f2500c42332a8c114501958483c62375d5516b":()=>e.g3});var e=c(13415),f=c(3890),g=c(50995),h=c(15754),i=c(7902),j=a([e,f,h,i]);[e,f,h,i]=j.then?(await j)():j,d()}catch(a){d(a)}})},90160:()=>{}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=7300,exports.ids=[7300],exports.modules={47300:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{actionBundlePath:()=>
|
|
1
|
+
"use strict";exports.id=7300,exports.ids=[7300],exports.modules={47300:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{actionBundlePath:()=>A,buildUtility:()=>n,rebuildUtility:()=>y,uiBundlePath:()=>z});var e=c(71152),f=c(73024),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(36306),l=c(85933),m=a([k]);k=(m.then?(await m)():m)[0];let B="esm.sh",C="react,react-dom,react-dom/client",D=["@host/ui","@host/api"],E=[],F=["react","react/jsx-runtime","react/jsx-dev-runtime","react-dom","react-dom/client","react-markdown","remark-gfm","mermaid"];async function n(a){let{manifest:b,dir:c}=a,d=h().join(c,b.ui),g=h().join(c,"bundle.js"),i=b.dependencies??{},j=h().join(c,"dist",".esm-cache");await p(d,"ui");let k="./"+h().basename(b.ui).replace(/\.(tsx?|jsx?)$/,""),l=`import * as __user from ${JSON.stringify(k)};
|
|
2
2
|
import { createElement } from "react";
|
|
3
3
|
import { createRoot } from "react-dom/client";
|
|
4
4
|
const __root = typeof document !== "undefined"
|
|
@@ -10,9 +10,9 @@ const __Component = (__user && typeof __user === "object")
|
|
|
10
10
|
if (__root && typeof __Component === "function") {
|
|
11
11
|
createRoot(__root).render(createElement(__Component));
|
|
12
12
|
}
|
|
13
|
-
`,
|
|
14
|
-
${c}`)}}async function
|
|
15
|
-
`,{base:process.cwd(),onDependency:()=>{}})).build([...d]);await f.promises.writeFile(h().join(b,"style.css"),e,"utf8")}async function
|
|
13
|
+
`,m=await e.build({stdin:{contents:l,resolveDir:c,sourcefile:"_reflex-bootstrap.tsx",loader:"tsx"},outfile:g,bundle:!0,format:"esm",platform:"browser",target:"es2022",jsx:"automatic",minify:!1,write:!0,sourcemap:"inline",external:D,plugins:[v({deps:i,cacheDir:j,target:"browser"}),x([...D,...F])],logLevel:"silent"});o(m,"UI bundle");let n=await f.promises.stat(g);if(n.size>0x2800000)throw Error(`UI bundle too large: ${n.size} bytes (cap 41943040)`);await q(a);let r=[];if(b.serverActions.length>0){let a=h().join(c,"dist","actions");for(let d of(await f.promises.mkdir(a,{recursive:!0}),b.serverActions)){let b=h().join(c,d.entry);await p(b,`action ${d.name}`);let g=h().join(a,`${d.name}.js`),k=await e.build({entryPoints:[b],outfile:g,bundle:!0,format:"esm",platform:"node",target:"es2022",minify:!1,write:!0,sourcemap:"inline",external:E,plugins:[{name:"reflex-host-api-virtual",setup(a){a.onResolve({filter:/^@host\/api$/},a=>({path:a.path,namespace:"reflex-host-api"})),a.onLoad({filter:/.*/,namespace:"reflex-host-api"},()=>({contents:"const h = globalThis.__reflexHost;\nif (!h) throw new Error('@host/api not available — worker not bootstrapped?');\nexport const reflex = h;\nexport const llm = h.llm;\nexport const kb = h.kb;\nexport const fs = h.fs;\nexport const web = h.web;\nexport const audit = h.audit;\nexport const actions = h.actions;\nexport const mcp = h.mcp;\nexport const secrets = h.secrets;\nexport const agent = h.agent;\nexport const workflow = h.workflow;\nexport const cards = h.cards;\nexport default h;\n",loader:"js"}))}},v({deps:i,cacheDir:j,target:"node"}),x([...E,"@host/api"])],logLevel:"silent"});o(k,`action ${d.name}`);let l=await f.promises.stat(g);if(l.size>0x2800000)throw Error(`action ${d.name} bundle too large: ${l.size}`);r.push({name:d.name,size:l.size})}}return{uiBundleSize:n.size,actionBundles:r}}function o(a,b){if(a.errors&&a.errors.length>0){let c=a.errors.map(a=>`${a.location?.file}:${a.location?.line??"?"}: ${a.text}`).join("\n");throw Error(`esbuild failed for ${b}:
|
|
14
|
+
${c}`)}}async function p(a,b){try{await f.promises.access(a)}catch{throw Error(`${b} entry not found: ${a}`)}}async function q(a){let{dir:b}=a,c=await r(b),d=new Set;for(let a of c){let b=await f.promises.readFile(a,"utf8");for(let a of s(b))d.add(a)}for(let a of s(l.g))d.add(a);let e=(await (0,k.compile)(`@import "tailwindcss";
|
|
15
|
+
`,{base:process.cwd(),onDependency:()=>{}})).build([...d]);await f.promises.writeFile(h().join(b,"style.css"),e,"utf8")}async function r(a){let b=[],c=async a=>{for(let d of(await f.promises.readdir(a,{withFileTypes:!0}))){let e=h().join(a,d.name);if(d.isDirectory()){if("data"===d.name||"dist"===d.name||"node_modules"===d.name)continue;await c(e)}else/\.(tsx?|jsx?|html|css|md)$/.test(d.name)&&b.push(e)}};return await c(a),b}function s(a){return a.split(/[\s"'`{}();,<>=]+/).filter(a=>a.length>0&&/^[a-zA-Z@!-]/.test(a))}let G={mermaid:"dist/mermaid.esm.min.mjs"};function t(a){let b,c=a.split("/"),d=a.startsWith("@")?c.slice(0,2).join("/"):c[0],e=a.startsWith("@")?c.slice(2):c.slice(1),g=e.length>0?"./"+e.join("/"):".",i=h().join(process.cwd(),"node_modules",d);if("."===g&&d&&G[d]){let a=h().join(i,G[d]);if((0,f.existsSync)(a))return a}let j=h().join(i,"package.json");if(!(0,f.existsSync)(j))return null;try{b=JSON.parse((0,f.readFileSync)(j,"utf8"))}catch{return null}let k=function(a,b){if(null==a)return null;if("string"==typeof a)return"."===b?a:null;if("object"!=typeof a)return null;if(Object.keys(a).some(a=>a.startsWith("."))){let c=a[b];return void 0!==c?u(c):null}return"."===b?u(a):null}(b.exports,g);if(null!==k){let a=h().join(i,k);return(0,f.existsSync)(a)?a:null}if("."===g){let a=b.module??b.main??"index.js",c=h().join(i,a);return(0,f.existsSync)(c)?c:null}for(let a of["",".js",".mjs",".cjs"]){let b=h().join(i,g.slice(2)+a);if((0,f.existsSync)(b))return b}return null}function u(a){if(null==a)return null;if("string"==typeof a)return a;if("object"!=typeof a)return null;for(let b of["browser","import","module","default","require"])if(b in a){let c=u(a[b]);if(c)return c}return null}function v(a){let{deps:b,cacheDir:c,target:d}=a,e=new Set(F);return{name:"reflex-esm-cdn",setup(a){a.onResolve({filter:/.*/},a=>{if(/^https?:\/\//.test(a.path)){let b;try{b=new URL(a.path).host}catch{return null}return b!==B?{errors:[{text:`refusing non-esm.sh URL import: ${a.path}`}]}:{path:a.path,namespace:"esm-cdn"}}if("esm-cdn"===a.namespace){if(a.path.startsWith(".")||a.path.startsWith("/"))return{path:new URL(a.path,a.importer).href,namespace:"esm-cdn"};if(e.has(a.path)){let b=t(a.path);if(b)return{path:b}}return{path:`https://${B}/${a.path}?external=${C}${"node"===d?"&target=node":""}`,namespace:"esm-cdn"}}if(!a.path.startsWith(".")&&!a.path.startsWith("/")&&!h().isAbsolute(a.path)&&!a.path.startsWith("@host/")&&!a.path.startsWith("node:")){let c=(a=>{let c=a.split("/"),e=a.startsWith("@")?c.slice(0,2).join("/"):c[0],f=b[e];if(!f)return null;let g=a.slice(e.length);return`https://${B}/${e}@${f}${g}?external=${C}${"node"===d?"&target=node":""}`})(a.path);if(c)return{path:c,namespace:"esm-cdn"}}return null}),a.onLoad({filter:/.*/,namespace:"esm-cdn"},async a=>({contents:await w(a.path,c),loader:"js",resolveDir:c}))}}}async function w(a,b){let c,d=j().createHash("sha256").update(a).digest("hex").slice(0,32),e=h().join(b,`${d}.js`);try{return await f.promises.readFile(e,"utf8")}catch{}try{c=await fetch(a,{signal:AbortSignal.timeout(2e4)})}catch(b){throw Error(`couldn't fetch dependency from ${a}: ${b instanceof Error?b.message:String(b)}`)}if(!c.ok)throw Error(`couldn't fetch dependency from ${a}: HTTP ${c.status}`);let g=await c.text();return await f.promises.mkdir(b,{recursive:!0}),await f.promises.writeFile(e,g,"utf8"),g}function x(a){let b=new Set(a),c=new Set(F),d=h().join(process.cwd(),"node_modules");return{name:"reflex-import-whitelist",setup(a){a.onResolve({filter:/.*/},a=>{if(a.importer.startsWith(d+h().sep)||a.importer.includes(h().sep+"node_modules"+h().sep)||a.path.startsWith(".")||a.path.startsWith("/")||h().isAbsolute(a.path))return null;if(a.path.startsWith("node:"))return{errors:[{text:`import "${a.path}" is not allowed in utility code`}]};if(!b.has(a.path))return{errors:[{text:`import "${a.path}" is not in the allowed list: ${Array.from(b).join(", ")}`}]};if(a.path.startsWith("@host/"))return{path:a.path,external:!0};if(c.has(a.path)){let b=t(a.path);return b?{path:b}:{errors:[{text:`could not resolve "${a.path}" from Reflex node_modules`}]}}return null})}}}async function y(a){return n(a)}function z(a){return h().join(a,"bundle.js")}function A(a,b){return h().join(a,"dist","actions",`${b}.js`)}d()}catch(a){d(a)}})},85933:(a,b,c)=>{c.d(b,{g:()=>d});let d=String.raw`import { createElement, forwardRef, useState, useCallback } from "react";
|
|
16
16
|
|
|
17
17
|
function cls(...parts) {
|
|
18
18
|
return parts.filter(Boolean).join(" ");
|
|
@@ -125,4 +125,56 @@ export function ScrollArea({ className, children }) {
|
|
|
125
125
|
className: cls("overflow-y-auto", className),
|
|
126
126
|
}, children);
|
|
127
127
|
}
|
|
128
|
+
|
|
129
|
+
// --- Routing --------------------------------------------------------------
|
|
130
|
+
// In-memory router for multi-view utilities. The iframe has no address
|
|
131
|
+
// bar, so navigation is a state stack, not a URL. Use either the hook
|
|
132
|
+
// (manual control) or <RouterView> (renders the active view component).
|
|
133
|
+
|
|
134
|
+
export function useReflexRoute(initial) {
|
|
135
|
+
const start = typeof initial === "string"
|
|
136
|
+
? { route: initial, params: {} }
|
|
137
|
+
: (initial && initial.route ? { route: initial.route, params: initial.params || {} } : { route: "", params: {} });
|
|
138
|
+
const [stack, setStack] = useState([start]);
|
|
139
|
+
const current = stack[stack.length - 1];
|
|
140
|
+
const navigate = useCallback((route, params) => {
|
|
141
|
+
setStack((s) => [...s, { route, params: params || {} }]);
|
|
142
|
+
}, []);
|
|
143
|
+
const back = useCallback(() => {
|
|
144
|
+
setStack((s) => (s.length > 1 ? s.slice(0, -1) : s));
|
|
145
|
+
}, []);
|
|
146
|
+
const replace = useCallback((route, params) => {
|
|
147
|
+
setStack((s) => [...s.slice(0, -1), { route, params: params || {} }]);
|
|
148
|
+
}, []);
|
|
149
|
+
return {
|
|
150
|
+
route: current.route,
|
|
151
|
+
params: current.params,
|
|
152
|
+
canBack: stack.length > 1,
|
|
153
|
+
navigate,
|
|
154
|
+
back,
|
|
155
|
+
replace,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// <RouterView routes={{ board: BoardView, detail: DetailView }} initial="board" />
|
|
160
|
+
// Each view receives { params, navigate, back, replace, route, canBack }.
|
|
161
|
+
export function RouterView({ routes, initial }) {
|
|
162
|
+
const r = useReflexRoute(initial);
|
|
163
|
+
const Comp = routes ? routes[r.route] : null;
|
|
164
|
+
if (typeof Comp !== "function") {
|
|
165
|
+
return createElement(
|
|
166
|
+
"div",
|
|
167
|
+
{ className: "p-4 text-sm text-slate-500" },
|
|
168
|
+
"No view for route: " + String(r.route),
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
return createElement(Comp, {
|
|
172
|
+
params: r.params,
|
|
173
|
+
navigate: r.navigate,
|
|
174
|
+
back: r.back,
|
|
175
|
+
replace: r.replace,
|
|
176
|
+
route: r.route,
|
|
177
|
+
canBack: r.canBack,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
128
180
|
`}};
|
|
@@ -472,6 +472,9 @@ To create a utility, emit a marker:
|
|
|
472
472
|
- \`"@host/ui"\` — gives primitives: Button, Input, Textarea, Label, Card, CardContent, CardHeader, CardTitle, Badge, ScrollArea.
|
|
473
473
|
- No other packages / node_modules / node:* modules. esbuild rejects any other import.
|
|
474
474
|
3. **No fetch/XHR/WebSocket/localStorage** inside the utility. Only \`reflex.web.fetch({url})\` with an explicitly whitelisted domain in the manifest. To DISPLAY external images via \`<img src>\`, list their hosts in \`permissions.images.domains\` — the CSP blocks any host not on that list.
|
|
475
|
+
- **Third-party packages**: declare them in \`manifest.dependencies\` (e.g. \`{"dayjs":"1.11.10"}\`) — they're fetched from esm.sh and bundled AT BUILD TIME (nothing loads at runtime). Pin exact versions, pure-JS/ESM only. A bare import not listed (and not react/@host) is a build error.
|
|
476
|
+
- **Server actions**: any top-level \`actions/<name>.ts\` is auto-registered (no need to hand-list in \`serverActions\` unless you want a custom timeout). \`_\`-prefixed files are private helpers.
|
|
477
|
+
- **Multiple views**: import \`{ RouterView, useReflexRoute }\` from \`@host/ui\` for in-iframe navigation instead of hand-rolling view state.
|
|
475
478
|
4. **State** is persisted via \`reflex.fs.write({path, content})\` (in \`<utility>/data/\`) or \`reflex.kb.add({...})\`.
|
|
476
479
|
5. **Manifest** must list every required permission — the user sees this list at install time and can refuse.
|
|
477
480
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=9098,exports.ids=[9098],exports.modules={39098:(a,b,c)=>{c.d(b,{summarizeYoutubeAction:()=>n});var d=c(73745);c(66493);var e=c(70333);let f=globalThis.__reflexGeminiModelsCache??new Map;async function g(a){let b,c=await (0,e.CG)("gemini");if(!c)throw Error("Gemini API key not configured");let d=c.slice(0,16),g=f.get(d);if(!a?.refresh&&g&&Date.now()-g.fetchedAt<36e5)return g.models;let i=[];do{let a=new URL("https://generativelanguage.googleapis.com/v1beta/models");a.searchParams.set("key",c),a.searchParams.set("pageSize","100"),b&&a.searchParams.set("pageToken",b);let d=await fetch(a.toString(),{headers:{Accept:"application/json"}});if(!d.ok){let a=await d.text();throw Error(`models.list HTTP ${d.status}: ${a.slice(0,500)}`)}let e=await d.json();for(let a of e.models??[]){if(!a.name)continue;let b=a.supportedGenerationMethods??[];if(!b.includes("generateContent"))continue;let c=a.name.toLowerCase();!c.includes("embedding")&&(c.includes("aqa")||i.push({name:a.name,id:a.name.replace(/^models\//,""),...a.displayName?{displayName:a.displayName}:{},...a.description?{description:a.description}:{},...void 0!==a.inputTokenLimit?{inputTokenLimit:a.inputTokenLimit}:{},...void 0!==a.outputTokenLimit?{outputTokenLimit:a.outputTokenLimit}:{},supportedGenerationMethods:b}))}b=e.nextPageToken}while(b);return i.sort(h),f.set(d,{fetchedAt:Date.now(),models:i}),i}function h(a,b){let c=i(a.id),d=i(b.id);if(c!==d)return c-d;let e=j(a.id),f=j(b.id);return e!==f?f-e:a.id.localeCompare(b.id)}function i(a){return a.endsWith("flash-latest")?0:a.includes("flash")&&!a.includes("lite")?1:a.includes("flash-lite")?2:a.endsWith("pro-latest")||a.includes("pro")?3:4}function j(a){let b=/gemini-(\d+)\.(\d+)/.exec(a);return b?100*Number(b[1])+Number(b[2]):0}async function k(a="general"){let b=await (0,e.$L)("gemini");if("video"===a&&b?.videoModel)return b.videoModel;if(b?.model)return b.model;try{let a=await g();if(a.length>0)return a[0].id}catch{}return"gemini-flash-latest"}async function l(a){let b=`https://generativelanguage.googleapis.com/v1beta/models/${encodeURIComponent(a.model)}:generateContent?key=${encodeURIComponent(a.apiKey)}`,c=await fetch(b,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({contents:a.contents,...a.generationConfig?{generationConfig:a.generationConfig}:{}})}),d=await c.text();if(!c.ok)throw Error(`Gemini HTTP ${c.status}: ${d.slice(0,800)}`);let e=JSON.parse(d);if(e.promptFeedback?.blockReason)throw Error(`Gemini blocked: ${e.promptFeedback.blockReason}`);return{text:(e.candidates??[]).flatMap(a=>a.content?.parts??[]).map(a=>a.text??"").filter(Boolean).join("\n").trim(),raw:e}}globalThis.__reflexGeminiModelsCache=f;var m=c(36017);async function n(a){var b;let c=await (0,e.CG)("gemini");if(!c)return{ok:!1,needsKey:!0,error:"Gemini API key is not saved — enter it to summarize videos."};let d=(await (0,m.M)()).language??"russian",f=a.prompt?.trim()||(b=d,/russ/i.test(b)||RegExp("рус","i").test(b)?"Produce a structured summary of this YouTube video:\n\n1. One paragraph — what the video is about and who it's for.\n2. Main points as a bulleted list with `[mm:ss]` timestamps.\n3. Notable quotes (any memorable phrases) — with timestamps.\n4. If diagrams / slides / code are shown — briefly describe them.\n5. 1-3 sentence takeaway: the main point worth retaining.\n\nRespond in Russian, concisely. No filler.":"Produce a structured summary of this YouTube video:\n\n1. One paragraph — what the video is about and who it's for.\n2. Main points as a bulleted list with `[mm:ss]` timestamps.\n3. Notable quotes (if any) with timestamps.\n4. If diagrams / slides / code are shown — briefly describe them.\n5. 1-3 sentence takeaway.\n\nBe concise. No filler."),g=a.modelOverride?.trim()||await k("video");try{let{text:b}=await l({model:g,apiKey:c,contents:[{parts:[{file_data:{file_uri:a.url,mime_type:"video/*"}},{text:f}]}]});if(!b)return{ok:!1,error:"Gemini returned an empty response — the video may be unavailable or private."};return{ok:!0,text:b,model:g}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function o(a){try{if(!a.trim())return{ok:!1,error:"API key is empty"};return await (0,e.Pc)("gemini",a),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function p(a){return{ok:!0,present:await (0,e.hasApiKey)(a)}}async function q(a=!1){try{let b=await g({refresh:a});return{ok:!0,models:b.map(a=>({id:a.id,...a.displayName?{displayName:a.displayName}:{},...a.description?{description:a.description}:{},...void 0!==a.inputTokenLimit?{inputTokenLimit:a.inputTokenLimit}:{},...void 0!==a.outputTokenLimit?{outputTokenLimit:a.outputTokenLimit}:{}})),currentModel:await k("general"),currentVideoModel:await k("video")}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function r(a){try{return await (0,e.ND)("gemini",a),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}(0,c(63781).D)([n,o,p,q,r]),(0,d.A)(n,"
|
|
1
|
+
"use strict";exports.id=9098,exports.ids=[9098],exports.modules={39098:(a,b,c)=>{c.d(b,{summarizeYoutubeAction:()=>n});var d=c(73745);c(66493);var e=c(70333);let f=globalThis.__reflexGeminiModelsCache??new Map;async function g(a){let b,c=await (0,e.CG)("gemini");if(!c)throw Error("Gemini API key not configured");let d=c.slice(0,16),g=f.get(d);if(!a?.refresh&&g&&Date.now()-g.fetchedAt<36e5)return g.models;let i=[];do{let a=new URL("https://generativelanguage.googleapis.com/v1beta/models");a.searchParams.set("key",c),a.searchParams.set("pageSize","100"),b&&a.searchParams.set("pageToken",b);let d=await fetch(a.toString(),{headers:{Accept:"application/json"}});if(!d.ok){let a=await d.text();throw Error(`models.list HTTP ${d.status}: ${a.slice(0,500)}`)}let e=await d.json();for(let a of e.models??[]){if(!a.name)continue;let b=a.supportedGenerationMethods??[];if(!b.includes("generateContent"))continue;let c=a.name.toLowerCase();!c.includes("embedding")&&(c.includes("aqa")||i.push({name:a.name,id:a.name.replace(/^models\//,""),...a.displayName?{displayName:a.displayName}:{},...a.description?{description:a.description}:{},...void 0!==a.inputTokenLimit?{inputTokenLimit:a.inputTokenLimit}:{},...void 0!==a.outputTokenLimit?{outputTokenLimit:a.outputTokenLimit}:{},supportedGenerationMethods:b}))}b=e.nextPageToken}while(b);return i.sort(h),f.set(d,{fetchedAt:Date.now(),models:i}),i}function h(a,b){let c=i(a.id),d=i(b.id);if(c!==d)return c-d;let e=j(a.id),f=j(b.id);return e!==f?f-e:a.id.localeCompare(b.id)}function i(a){return a.endsWith("flash-latest")?0:a.includes("flash")&&!a.includes("lite")?1:a.includes("flash-lite")?2:a.endsWith("pro-latest")||a.includes("pro")?3:4}function j(a){let b=/gemini-(\d+)\.(\d+)/.exec(a);return b?100*Number(b[1])+Number(b[2]):0}async function k(a="general"){let b=await (0,e.$L)("gemini");if("video"===a&&b?.videoModel)return b.videoModel;if(b?.model)return b.model;try{let a=await g();if(a.length>0)return a[0].id}catch{}return"gemini-flash-latest"}async function l(a){let b=`https://generativelanguage.googleapis.com/v1beta/models/${encodeURIComponent(a.model)}:generateContent?key=${encodeURIComponent(a.apiKey)}`,c=await fetch(b,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({contents:a.contents,...a.generationConfig?{generationConfig:a.generationConfig}:{}})}),d=await c.text();if(!c.ok)throw Error(`Gemini HTTP ${c.status}: ${d.slice(0,800)}`);let e=JSON.parse(d);if(e.promptFeedback?.blockReason)throw Error(`Gemini blocked: ${e.promptFeedback.blockReason}`);return{text:(e.candidates??[]).flatMap(a=>a.content?.parts??[]).map(a=>a.text??"").filter(Boolean).join("\n").trim(),raw:e}}globalThis.__reflexGeminiModelsCache=f;var m=c(36017);async function n(a){var b;let c=await (0,e.CG)("gemini");if(!c)return{ok:!1,needsKey:!0,error:"Gemini API key is not saved — enter it to summarize videos."};let d=(await (0,m.M)()).language??"russian",f=a.prompt?.trim()||(b=d,/russ/i.test(b)||RegExp("рус","i").test(b)?"Produce a structured summary of this YouTube video:\n\n1. One paragraph — what the video is about and who it's for.\n2. Main points as a bulleted list with `[mm:ss]` timestamps.\n3. Notable quotes (any memorable phrases) — with timestamps.\n4. If diagrams / slides / code are shown — briefly describe them.\n5. 1-3 sentence takeaway: the main point worth retaining.\n\nRespond in Russian, concisely. No filler.":"Produce a structured summary of this YouTube video:\n\n1. One paragraph — what the video is about and who it's for.\n2. Main points as a bulleted list with `[mm:ss]` timestamps.\n3. Notable quotes (if any) with timestamps.\n4. If diagrams / slides / code are shown — briefly describe them.\n5. 1-3 sentence takeaway.\n\nBe concise. No filler."),g=a.modelOverride?.trim()||await k("video");try{let{text:b}=await l({model:g,apiKey:c,contents:[{parts:[{file_data:{file_uri:a.url,mime_type:"video/*"}},{text:f}]}]});if(!b)return{ok:!1,error:"Gemini returned an empty response — the video may be unavailable or private."};return{ok:!0,text:b,model:g}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function o(a){try{if(!a.trim())return{ok:!1,error:"API key is empty"};return await (0,e.Pc)("gemini",a),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function p(a){return{ok:!0,present:await (0,e.hasApiKey)(a)}}async function q(a=!1){try{let b=await g({refresh:a});return{ok:!0,models:b.map(a=>({id:a.id,...a.displayName?{displayName:a.displayName}:{},...a.description?{description:a.description}:{},...void 0!==a.inputTokenLimit?{inputTokenLimit:a.inputTokenLimit}:{},...void 0!==a.outputTokenLimit?{outputTokenLimit:a.outputTokenLimit}:{}})),currentModel:await k("general"),currentVideoModel:await k("video")}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function r(a){try{return await (0,e.ND)("gemini",a),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}(0,c(63781).D)([n,o,p,q,r]),(0,d.A)(n,"409079487f75e4cf3ab9696e1e8d8fc194f0dcd91e",null),(0,d.A)(o,"4075d44f247542613eeee0bc7505c689034714102a",null),(0,d.A)(p,"40eb0f61a08b9a540de060e836ca0fd50f44d17552",null),(0,d.A)(q,"40a209060b84cd95d16dc67fabf413752b4e0168dc",null),(0,d.A)(r,"400ddb824d30603de9917be19ae03162f48a2248bd",null)}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=969,exports.ids=[969],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,"60c417c893805a43872ba154b694e3894ae00ea047",null)},8836:(a,b,c)=>{c.d(b,{E:()=>g});var d=c(64173),e=c(71813),f=c(69552);function g({label:a,headerRight:b,children:c}){let g=(0,e.c)("roots"),h=a??g("commandBarFrame.label");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)(f.A,{className:"h-3.5 w-3.5"})}),(0,d.jsx)("span",{className:"text-[11px] uppercase tracking-[0.18em] text-muted-foreground",children:h}),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})}},57814:(a,b,c)=>{c.d(b,{L:()=>O});var d=c(64173),e=c(17240),f=c(71813),g=c(54249),h=c(75430),i=c(34719),j=c(56189),k=c(41856),l=c(33120),m=c(69552),n=c(97338),o=c(25299),p=c(63387),q=c(53834),r=c(97162),s=c(62261),t=c(77311),u=c(25436),v=c(24555),w=c(68669),x=c(79145),y=c(66979),z=c(87671),A=c(44052),B=c(20583),C=c(45477),D=c(91344),E=c(3265);let F=(0,E.createServerReference)("60c417c893805a43872ba154b694e3894ae00ea047",E.callServer,void 0,E.findSourceMapURL,"searchMentionsAction"),G=[{id:"plan",trigger:"plan",label:"/plan",description:"Show the plan first — Reflex lays out the steps and waits for approval.",kind:"agent-mode",usage:"/plan <task>",icon:"ListChecks"},{id:"goal",trigger:"goal",label:"/goal",description:"Set a goal — Reflex will work toward it on its own, without reminders.",kind:"agent-mode",usage:"/goal <what to achieve>",icon:"Target"},{id:"research",trigger:"research",label:"/research",description:"Deep research on a topic — web search + summary with sources.",kind:"agent-mode",usage:"/research <topic>",icon:"Telescope"},{id:"widget",trigger:"widget",label:"/widget",description:"Create a card on the space dashboard.",kind:"agent-mode",usage:"/widget <what to show>",icon:"LayoutGrid"},{id:"workflow",trigger:"workflow",label:"/workflow",description:"Build a recipe — linear step-based automation for the task.",kind:"agent-mode",usage:"/workflow <what to automate>",icon:"Workflow"},{id:"new-utility",trigger:"new-utility",label:"/new-utility",description:"Build a Reflex mini-app (utility) — TypeScript, runs inside Reflex.",kind:"agent-mode",usage:"/new-utility <name — what it does>",icon:"PackagePlus"},{id:"distill",trigger:"distill",label:"/distill",description:"Pull a URL into the KB — extract key facts, action items, and links to related notes.",kind:"agent-mode",usage:"/distill <url> [focus]",icon:"BookOpenCheck"},{id:"practice",trigger:"practice",label:"/practice",description:"Roleplay a tough conversation — Reflex plays the counterpart and coaches you between turns.",kind:"agent-mode",usage:"/practice <scenario>",icon:"MessagesSquare"},{id:"reflect",trigger:"reflect",label:"/reflect",description:"Daily check-in — three questions adapted to your recent entries, saved as a journal note.",kind:"agent-mode",usage:"/reflect",allowEmpty:!0,icon:"Sunrise"},{id:"remember",trigger:"remember",label:"/remember",description:"Save a note — straight into memory, no AI involved.",kind:"direct",usage:"/remember <what to remember>",icon:"BookmarkPlus"},{id:"mcp",trigger:"mcp",label:"/mcp",description:"Connect an external service (setup wizard opens in chat).",kind:"agent-mode",usage:"/mcp <what you need>",icon:"PackagePlus"},{id:"skill",trigger:"skill",label:"/skill",description:"Attach a role — a ready-made instruction set for this conversation.",kind:"agent-mode",usage:"/skill <role-id> [prompt]",icon:"Sparkles"},{id:"delete-topic",trigger:"delete-topic",label:"/delete-topic",description:"Delete this conversation (with confirmation).",kind:"direct",usage:"/delete-topic",requiresConfirm:!0,allowEmpty:!0,icon:"Trash2"},{id:"clear-project",trigger:"clear-project",label:"/clear-project",description:"DANGER: clear the space — all conversations, cards, memory. Double confirmation.",kind:"direct",usage:"/clear-project",requiresConfirm:!0,allowEmpty:!0,icon:"AlertOctagon"},{id:"util",trigger:"util",label:"/util",description:"Open a mini-app (by partial name or from the list).",kind:"direct",usage:"/util <partial name or id>",allowEmpty:!0,icon:"Boxes"},{id:"help",trigger:"help",label:"/help",description:"List available commands.",kind:"direct",usage:"/help",allowEmpty:!0,icon:"HelpCircle"}],H=(0,E.createServerReference)("40919f134d43c8b7c5655a4ab89323db9861390d9c",E.callServer,void 0,E.findSourceMapURL,"listCommandArgsAction");E.callServer,E.findSourceMapURL;let I=(0,E.createServerReference)("60b9cf424b7c070b15a1f3d52d8331fe64698b3db3",E.callServer,void 0,E.findSourceMapURL,"rememberAction"),J=(0,E.createServerReference)("600baff5b896710d998210fb8e6961d397a9d9b30d",E.callServer,void 0,E.findSourceMapURL,"deleteCurrentTopicCommand"),K=(0,E.createServerReference)("605636f6c818a0feed4bf69fa9401c3cb8611319da",E.callServer,void 0,E.findSourceMapURL,"openUtilityAction"),L=(0,E.createServerReference)("4012b10c5906f6eda4ff8d517c71ff2b9408dd0b70",E.callServer,void 0,E.findSourceMapURL,"clearProjectAction");var M=c(88724);let N={ListChecks:g.A,Target:h.A,Telescope:i.A,LayoutGrid:j.A,BookmarkPlus:k.A,PackagePlus:l.A,Sparkles:m.A,Trash2:n.A,AlertOctagon:o.A,HelpCircle:p.A,Workflow:q.A,Boxes:r.A};function O({rootId:a,topicId:b,placeholder:c,submitLabel:g,pendingLabel:h,SubmitIcon:i,disabled:j,onSubmit:k,active:l,onStop:m,clarifyLabel:n,stopLabel:o}){let p=(0,f.c)("roots"),q=n??p("chatInputForm.clarifyLabel"),r=o??p("chatInputForm.stopLabel"),v=(0,z.useRouter)(),[w,x]=(0,e.useState)(""),[y,E]=(0,e.useState)([]),[I,J]=(0,e.useState)(!1),[K,L]=(0,e.useState)(!1),[M,N]=(0,e.useState)(!1),[O,U]=(0,e.useState)(G),V=(0,e.useRef)(null),W=(0,e.useRef)(null),[X,Y]=(0,e.useState)(null),[Z,$]=(0,e.useState)([]),[_,aa]=(0,e.useState)(0),[ab,ac]=(0,e.useState)(!1),ad=(0,e.useRef)(0),[ae,af]=(0,e.useState)(null),[ag,ah]=(0,e.useState)(null),ai=(0,e.useRef)(0);(0,e.useCallback)(()=>{let a=V.current;a&&(a.style.height="auto",a.style.height=Math.min(a.scrollHeight,240)+"px")},[]);let aj=(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])){Y(null),$([]);return}let e=b.slice(d+1,c);Y({start:d,end:c}),aa(0),ac(!0);let f=++ad.current;(async()=>{let b=await F(a,e);ad.current===f&&(ac(!1),$(b.ok?b.items:[]))})()},[a]),ak=(0,e.useCallback)(()=>{Y(null),$([]),ad.current++},[]),al=(0,e.useCallback)((b,c)=>{if(!b.startsWith("/")){af(null),ah(null);return}let d=b.indexOf(" ");if(d<0){ah(null);let a=b.slice(1).toLowerCase(),c=O.filter(b=>b.trigger.startsWith(a)||b.label.toLowerCase().includes(a)||b.description.toLowerCase().includes(a));af(c.length?{items:c,index:0}:null);return}af(null);let e=b.slice(1,d),f=O.find(a=>a.trigger===e);if(!f)return void ah(null);let g=d+1,h=c>=g?c:b.length;if(b.slice(h).indexOf(" ")>=0)return void ah(null);let i=b.slice(g,h),j=++ai.current;ah(a=>({cmd:f,items:a?.cmd.id===f.id?a.items:[],index:0,start:g,end:h,loading:!0})),(async()=>{let b=await H({commandId:f.id,query:i,rootId:a});if(ai.current===j){if(!b.ok||!b.supported||0===b.items.length)return ah(null);ah({cmd:f,items:b.items,index:0,start:g,end:h,loading:!1})}})()},[a,O]),am=(0,e.useCallback)(()=>{af(null),ah(null)},[]),an=(0,e.useCallback)(a=>{let b=V.current;ah(c=>{if(!c)return null;let d=w.slice(0,c.start),e=w.slice(c.end),f=`${a.value} `;x(d+f+e);let g=d.length+f.length;return requestAnimationFrame(()=>{b&&(b.focus(),b.setSelectionRange(g,g))}),null})},[w]),ao=(0,e.useCallback)(a=>{let b=V.current,c=`/${a.trigger}${a.allowEmpty&&"direct"===a.kind?"":" "}`;x(c),af(null),requestAnimationFrame(()=>{b&&(b.focus(),b.setSelectionRange(c.length,c.length))})},[]),ap=(0,e.useCallback)(a=>{let b=V.current;if(!b||!X)return;let c=w.slice(0,X.start),d=w.slice(X.end),e=`@${a.relPath} `;x(c+e+d),ak();let f=c.length+e.length;requestAnimationFrame(()=>{b.focus(),b.setSelectionRange(f,f)})},[w,X,ak]),aq=(0,e.useCallback)(async b=>{if(0!==b.length){J(!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(()=>({}));A.oR.error(a.error??p("chatInputForm.uploadFailed",{status:d.status}));return}let e=await d.json();E(a=>[...a,...e.files])}catch(a){A.oR.error(a instanceof Error?a.message:String(a))}finally{J(!1)}}},[a]),ar=w.trim().length>0||y.length>0,as=l&&m?ar?"clarify":"stop":"send",at=(0,e.useCallback)(async()=>{if(K)return;if("stop"===as){if(!m)return;L(!0);try{await m()}finally{L(!1)}return}let c=w.trim();if(!c&&0===y.length||j&&"send"===as)return;let d=function(a,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=d[1],f=G.find(a=>a.trigger===e)??null??b.find(a=>a.trigger===e);return f?{def:f,payload:(d[2]??"").trim()}:null}(c);if(d&&"direct"===d.def.kind){L(!0);try{await P({cmd:d.def,payload:d.payload,rootId:a,topicId:b,router:v,t:p}),x("")}finally{L(!1)}return}L(!0);try{"clarify"===as&&m&&await m(),await k({message:c,attachments:y})&&(x(""),E([]))}finally{L(!1)}},[w,y,K,j,as,m,k,a,b,v,p]),au=!K&&!I&&("stop"===as||ar&&(!j||"clarify"===as));return(0,d.jsxs)("form",{onSubmit:a=>{a.preventDefault(),at()},onDragEnter:a=>{Array.from(a.dataTransfer.types).includes("Files")&&(a.preventDefault(),N(!0))},onDragOver:a=>{Array.from(a.dataTransfer.types).includes("Files")&&(a.preventDefault(),N(!0))},onDragLeave:a=>{a.currentTarget.contains(a.relatedTarget)||N(!1)},onDrop:a=>{a.preventDefault(),N(!1);let b=Array.from(a.dataTransfer.files);b.length>0&&aq(b)},className:(0,D.cn)("space-y-2 rounded-md transition-colors",M&&"ring-2 ring-ring/60 bg-accent/40"),children:[y.length>0&&(0,d.jsx)("div",{className:"flex flex-wrap gap-1.5",children:y.map((a,b)=>(0,d.jsx)(S,{attachment:a,onRemove:()=>E(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)(C.T,{ref:V,value:w,onChange:a=>{x(a.target.value),aj(a.target.value,a.target.selectionStart),al(a.target.value,a.target.selectionStart)},onKeyUp:a=>{let b=a.currentTarget;aj(b.value,b.selectionStart),al(b.value,b.selectionStart)},onClick:a=>{let b=a.currentTarget;aj(b.value,b.selectionStart),al(b.value,b.selectionStart)},onBlur:()=>{setTimeout(()=>{ak(),am()},150)},onKeyDown:a=>{if(ae){if("ArrowDown"===a.key){a.preventDefault(),af(a=>a?{...a,index:Math.min(a.items.length-1,a.index+1)}:null);return}if("ArrowUp"===a.key){a.preventDefault(),af(a=>a?{...a,index:Math.max(0,a.index-1)}:null);return}if("Tab"===a.key){a.preventDefault();let b=ae.items[ae.index];b&&ao(b);return}if("Escape"===a.key){a.preventDefault(),am();return}}if(ag&&ag.items.length>0){if("ArrowDown"===a.key){a.preventDefault(),ah(a=>a?{...a,index:Math.min(a.items.length-1,a.index+1)}:null);return}if("ArrowUp"===a.key){a.preventDefault(),ah(a=>a?{...a,index:Math.max(0,a.index-1)}:null);return}if("Tab"===a.key){a.preventDefault();let b=ag.items[ag.index];b&&an(b);return}if("Escape"===a.key){a.preventDefault(),ah(null);return}}if(X&&Z.length>0){if("ArrowDown"===a.key){a.preventDefault(),aa(a=>Math.min(Z.length-1,a+1));return}if("ArrowUp"===a.key){a.preventDefault(),aa(a=>Math.max(0,a-1));return}if("Enter"===a.key||"Tab"===a.key){a.preventDefault();let b=Z[_];b&&ap(b);return}if("Escape"===a.key){a.preventDefault(),ak();return}}"Enter"!==a.key||a.shiftKey||a.nativeEvent.isComposing||(a.preventDefault(),at())},onPaste:a=>{let b=Array.from(a.clipboardData.files);b.length>0&&(a.preventDefault(),aq(b))},placeholder:c,rows:1,disabled:j||K,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"}),X&&(0,d.jsx)(R,{items:Z,index:_,loading:ab,onPick:ap,onHover:a=>aa(a)}),ae&&!X&&(0,d.jsx)(Q,{items:ae.items,index:ae.index,onPick:ao,onHover:a=>af(b=>b?{...b,index:a}:null),topicAvailable:!!b}),ag&&!X&&!ae&&(0,d.jsx)(T,{cmd:ag.cmd,items:ag.items,index:ag.index,onPick:an,onHover:a=>ah(b=>b?{...b,index:a}:null)})]}),(0,d.jsx)("input",{ref:W,type:"file",multiple:!0,className:"hidden",onChange:a=>{let b=Array.from(a.target.files??[]);b.length>0&&aq(b),a.target.value=""}}),(0,d.jsx)(B.$,{type:"button",size:"icon",variant:"ghost",onClick:()=>W.current?.click(),disabled:I||K||j,title:p("chatInputForm.attachTitle"),className:"h-11 w-11 shrink-0",children:I?(0,d.jsx)(s.A,{className:"h-4 w-4 animate-spin"}):(0,d.jsx)(t.A,{className:"h-4 w-4"})}),(0,d.jsx)(B.$,{type:"submit",size:"lg",disabled:!au,variant:"stop"===as?"destructive":"default",className:"h-11 px-6 shadow-md shrink-0",children:K?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(s.A,{className:"mr-2 h-4 w-4 animate-spin"}),h]}):"stop"===as?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(u.A,{className:"mr-2 h-4 w-4",fill:"currentColor"}),r]}):"clarify"===as?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(i,{className:"mr-2 h-4 w-4"}),q]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(i,{className:"mr-2 h-4 w-4"}),g]})})]}),(0,d.jsx)("div",{className:"text-[10px] text-muted-foreground",children:p("chatInputForm.helperRow")})]})}async function P({cmd:a,payload:b,rootId:c,topicId:d,router:e,t:f}){if("help"===a.id){let a=G.map(a=>`• ${a.label} — ${a.description}`);A.oR.info(f("chatInputForm.availableCommands",{list:a.join("\n")}),{duration:12e3});return}if("remember"===a.id){if(!b)return void A.oR.error(f("chatInputForm.rememberEmpty"));let a=await I(c,b);return void(a.ok?(A.oR.success(a.message??f("chatInputForm.savedToKb")),(0,M.$d)(M.Zi.kbChanged(c))):A.oR.error(a.error))}if("delete-topic"===a.id){if(!d)return void A.oR.error(f("chatInputForm.topicOnlyCommand"));if(!confirm(f("chatInputForm.deleteTopicConfirm")))return;let a=await J(c,d);return void(a.ok?(A.oR.success(a.message??f("chatInputForm.deleted")),(0,M.$d)(M.Zi.topicsChanged(c)),a.redirectTo&&e.push(a.redirectTo)):A.oR.error(a.error))}if("util"===a.id){let a=await K(c,b);if(!a.ok)return void A.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 A.oR.message(f("chatInputForm.multipleMatches",{list:d}),{duration:12e3})}if("clear-project"===a.id){if(!confirm(f("chatInputForm.clearProjectConfirm")))return;let a=prompt(f("chatInputForm.clearProjectPrompt"));if(a?.trim().toLowerCase()!==f("chatInputForm.clearProjectPhrase"))return void A.oR.message(f("chatInputForm.confirmFailed"));let b=await L(c);return void(b.ok?(A.oR.success(b.message??f("chatInputForm.projectCleared")),(0,M.$d)(M.Zi.topicsChanged(c)),(0,M.$d)(M.Zi.kbChanged(c)),b.redirectTo&&e.push(b.redirectTo)):A.oR.error(b.error))}A.oR.error(f("chatInputForm.unknownCommand",{label:a.label}))}function Q({items:a,index:b,onPick:c,onHover:e,topicAvailable:g}){let h=(0,f.c)("roots");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:h("chatInputForm.commandsPaletteHeader")}),(0,d.jsx)("ul",{children:a.map((a,f)=>{let i=N[a.icon]??m.A,j="delete-topic"===a.id&&!g;return(0,d.jsx)("li",{children:(0,d.jsxs)("button",{type:"button",onMouseDown:b=>{b.preventDefault(),j||c(a)},onMouseEnter:()=>e(f),disabled:j,className:(0,D.cn)("w-full flex items-start gap-2 px-3 py-2 text-left",f===b?"bg-accent":"hover:bg-accent/60",j&&"opacity-40 cursor-not-allowed"),children:[(0,d.jsx)(i,{className:(0,D.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:h("chatInputForm.directAction")}),a.requiresConfirm&&(0,d.jsx)("span",{className:"text-[9px] uppercase tracking-wider text-destructive",children:h("chatInputForm.withConfirm")})]}),(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 R({items:a,index:b,loading:c,onPick:e,onHover:g}){let h=(0,f.c)("roots");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)(s.A,{className:"h-3 w-3 animate-spin"})," ",h("chatInputForm.mentionSearching")]}):0===a.length?(0,d.jsx)("div",{className:"px-3 py-2 text-xs text-muted-foreground italic",children:h("chatInputForm.mentionNothing")}):(0,d.jsx)("ul",{children:a.map((a,c)=>{let f="kb"===a.kind?v.A:w.A;return(0,d.jsx)("li",{children:(0,d.jsxs)("button",{type:"button",onMouseDown:b=>{b.preventDefault(),e(a)},onMouseEnter:()=>g(c),className:(0,D.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)(f,{className:(0,D.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,D.cn)("text-[10px] uppercase tracking-wider shrink-0","kb"===a.kind?"text-primary":"text-muted-foreground"),children:a.kind})]})},a.absPath)})})})}function S({attachment:a,onRemove:b}){var c;let e=a.mime.startsWith("image/")?x.A:w.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)(y.A,{className:"h-3 w-3"})})]})}function T({cmd:a,items:b,index:c,onPick:e,onHover:f}){let g=N[a.icon]??m.A;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.jsxs)("div",{className:"px-3 py-1.5 text-[10px] uppercase tracking-wider text-muted-foreground border-b flex items-center gap-2",children:[(0,d.jsx)(g,{className:"h-3 w-3"}),(0,d.jsxs)("span",{children:[a.label," \xb7 ",a.usage.replace(/^\/\S+\s*/,"")]})]}),(0,d.jsx)("ul",{children:b.map((a,b)=>(0,d.jsx)("li",{children:(0,d.jsxs)("button",{type:"button",onMouseDown:b=>{b.preventDefault(),e(a)},onMouseEnter:()=>f(b),className:(0,D.cn)("w-full flex items-start gap-2 px-3 py-2 text-left",b===c?"bg-accent":"hover:bg-accent/60"),children:[(0,d.jsx)(m.A,{className:"h-3.5 w-3.5 mt-0.5 shrink-0 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-medium text-sm",children:a.label}),(0,d.jsx)("span",{className:"font-mono text-[10px] text-muted-foreground",children:a.value})]}),a.description&&(0,d.jsx)("p",{className:"text-[11px] text-muted-foreground leading-snug mt-0.5 line-clamp-2",children:a.description})]})]})},a.value))})]})}},63337:(a,b,c)=>{c.d(b,{x:()=>h});var d=c(73745);c(66493);var e=c(49410),f=c(8118),g=c(53905);async function h(a){try{let b=(a.query??"").trim().toLowerCase();switch(a.commandId){case"skill":{let c=a.rootId?await (0,g.Zn)(a.rootId):null,d=(await (0,e.bG)(c?.path,a.rootId)).map(a=>({value:a.id,label:a.title,description:`${"project"===a.scope?"[project] ":"global"===a.scope?"[global] ":""}${a.description}`})).filter(a=>i(a,b));return{ok:!0,supported:!0,items:d}}case"util":{let c=(await (0,f.listUtilities)(a.rootId?{rootId:a.rootId}:{})).map(a=>({value:a.manifest.id,label:a.manifest.name,description:a.manifest.description}));return{ok:!0,supported:!0,items:c.filter(a=>i(a,b))}}default:return{ok:!0,supported:!1}}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}function i(a,b){return!b||a.value.toLowerCase().includes(b)||a.label.toLowerCase().includes(b)||(a.description?.toLowerCase().includes(b)??!1)}(0,c(63781).D)([h]),(0,d.A)(h,"40919f134d43c8b7c5655a4ab89323db9861390d9c",null)},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,Xt:()=>z,ZC:()=>A,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:"Empty — nothing to remember."};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:`Saved to ${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:"Topic deleted"}:{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:"Project cleared. Starting fresh."}}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.bG)();return{ok:!0,commands:q.Lo,skills:a}}async function z(a){let{collectExtensions:b}=await Promise.resolve().then(c.bind(c,35961)),d=(await b(a.rootId?{rootId:a.rootId}:{})).slashCommands.map(a=>({id:`${a.utility.utilityId}:${a.id}`,trigger:a.trigger,label:a.label,description:a.description,kind:a.kind,usage:a.usage,allowEmpty:a.allowEmpty,icon:a.icon})),e=new Set(q.Lo.map(a=>a.trigger)),f=[...q.Lo,...d.filter(a=>!e.has(a.trigger))];return{ok:!0,commands:f}}async function A(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:"No mini-apps installed yet."}:{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:`Nothing found for "${b}". Installed: ${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,A]),(0,e.A)(t,"60b9cf424b7c070b15a1f3d52d8331fe64698b3db3",null),(0,e.A)(u,"600baff5b896710d998210fb8e6961d397a9d9b30d",null),(0,e.A)(v,"4012b10c5906f6eda4ff8d517c71ff2b9408dd0b70",null),(0,e.A)(y,"0019c00166d0c9c6212cc76d46e5a422ae11979431",null),(0,e.A)(z,"40e232f18c49b7d68f19914aae4e6aca4e775a8c4a",null),(0,e.A)(A,"605636f6c818a0feed4bf69fa9401c3cb8611319da",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})}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=9809,exports.ids=[9809],exports.modules={24139:(a,b,c)=>{c.d(b,{Z:()=>h,_:()=>g});var d=c(73024),e=c(74342);function f(){return globalThis.__reflexPendingCache||(globalThis.__reflexPendingCache=new Map),globalThis.__reflexPendingCache}async function g(a,b){let c,g=(0,e.Rs)(a,b);try{c=await d.promises.stat(g)}catch{return[]}let h=f().get(g);if(h&&h.mtimeMs===c.mtimeMs&&h.size===c.size)return h.result;let i=function(a,b){let c=new Map;for(let d of a)switch(d.type){case"permission-request":c.set(`p:${d.requestId}`,{kind:"permission",topicId:b,requestId:d.requestId,ts:d.ts,summary:d.tool?`Permission: ${d.tool}`:d.action??"Permission request",...d.description?{details:d.description}:{}});break;case"permission-response":c.delete(`p:${d.requestId}`);break;case"question":c.set(`q:${d.questionId}`,{kind:"question",topicId:b,requestId:d.questionId,ts:d.ts,summary:d.prompt.slice(0,200),...d.choices&&d.choices.length?{details:d.choices.join(" / ")}:{}});break;case"answer":c.delete(`q:${d.questionId}`);break;case"mcp-add-request":c.set(`m:${d.requestId}`,{kind:"mcp-add",topicId:b,requestId:d.requestId,ts:d.ts,summary:`MCP add: ${d.label}`,...d.description?{details:d.description}:{}});break;case"mcp-add-response":c.delete(`m:${d.requestId}`)}return[...c.values()]}(await (0,e.wj)(a,b),b);return f().set(g,{mtimeMs:c.mtimeMs,size:c.size,result:i}),i}async function h(a,b){let c=[];return await Promise.all(b.map(async b=>{let d=await g(a,b);c.push(...d)})),c.sort((a,b)=>a.ts<b.ts?1:-1),c}},49809:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{k:()=>v,x:()=>t});var e=c(31776);c(428);var f=c(73024),g=c(76760),h=c.n(g),i=c(24576),j=c(11178),k=c(56843),l=c(16909),m=c(24139),n=c(1701),o=c(52129),p=c(7188),q=c(11244),r=c(97364),s=a([l,o]);async function t(a){try{let b=await (0,i.Zn)(a);if(!b)return{ok:!1,error:"Root not found"};let[c,d,e,f]=await Promise.all([(0,k.hk)(b.path),(0,j.CA)(b.path),(0,p.listWidgets)(b.path),(0,p.readLayout)(b.path)]),g=(0,p.reconcileLayout)(f,e.map(a=>a.id),q.SYSTEM_WIDGET_IDS);(g.order.join("|")!==f.order.join("|")||g.hidden.join("|")!==f.hidden.join("|")||JSON.stringify(g.sizes??{})!==JSON.stringify(f.sizes??{}))&&await (0,p.writeLayout)(b.path,g);let h=c.map(a=>a.meta.id),r=new Set("function"==typeof l.z.listRunningTopicsForRoot?l.z.listRunningTopicsForRoot(a):[]),[s,t,v]=await Promise.all([(0,m.Z)(b.path,h),(0,n.Mn)(),(0,o.Qv)(a).catch(()=>null)]),w=new Set(s.map(a=>a.requestId));for(let a of t)!w.has(a.requestId)&&h.includes(a.topicId)&&s.push({kind:"mcp-add",topicId:a.topicId,requestId:a.requestId,ts:a.createdAt,summary:`MCP add: ${a.directive.label}`,...a.directive.description?{details:a.directive.description}:{}});s.sort((a,b)=>a.ts<b.ts?1:-1);let x=new Map;for(let a of c)x.set(a.meta.id,a.meta);let y=[],z=[];for(let a of c){let b=a.meta;if(b.goal&&"active"===b.goalStatus){y.push({topicId:b.id,topicTitle:b.title,goal:b.goal,goalIterations:b.goalIterations??0,updatedAt:b.updatedAt,running:r.has(b.id)});continue}r.has(b.id)&&z.push({topicId:b.id,topicTitle:b.title,updatedAt:b.updatedAt})}y.sort((a,b)=>a.updatedAt<b.updatedAt?1:-1),z.sort((a,b)=>a.updatedAt<b.updatedAt?1:-1);let A=await u(d);return{ok:!0,snapshot:{rootId:a,rootPath:b.path,activeGoals:y,runningAgents:z,pendingApprovals:s,recentKb:A,suggestions:v,widgets:e,layout:g}}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function u(a){let b=Date.now()-2592e5,c=a.filter(a=>Date.parse(a.modifiedAt)>=b).sort((a,b)=>a.modifiedAt<b.modifiedAt?1:-1).slice(0,6);return Promise.all(c.map(async a=>{let b=await (0,j.xO)(a.abs);return{rel:a.rel,title:b.title??h().basename(a.rel),...b.kind?{kind:b.kind}:{},modifiedAt:a.modifiedAt,preview:""}}))}async function v(a,b){try{let c=await (0,i.Zn)(a);if(!c)return{ok:!1,error:"Root not found"};let d=h().join(c.path,".reflex",b),e=h().relative(h().join(c.path,".reflex"),d);if(e.startsWith("..")||h().isAbsolute(e))return{ok:!1,error:"Refused (path traversal)"};let g=await f.promises.readFile(d,"utf8");return{ok:!0,preview:function(a){let b=a,c=a.match(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/);return c&&(b=a.slice(c[0].length)),(b=b.replace(/^#+\s+/gm,"").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\r?\n+/g," ").trim()).length>200&&(b=b.slice(0,197).trimEnd()+"…"),b}(g)}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}[l,o]=s.then?(await s)():s,(0,r.D)([t,v]),(0,e.A)(t,"
|
|
1
|
+
"use strict";exports.id=9809,exports.ids=[9809],exports.modules={24139:(a,b,c)=>{c.d(b,{Z:()=>h,_:()=>g});var d=c(73024),e=c(74342);function f(){return globalThis.__reflexPendingCache||(globalThis.__reflexPendingCache=new Map),globalThis.__reflexPendingCache}async function g(a,b){let c,g=(0,e.Rs)(a,b);try{c=await d.promises.stat(g)}catch{return[]}let h=f().get(g);if(h&&h.mtimeMs===c.mtimeMs&&h.size===c.size)return h.result;let i=function(a,b){let c=new Map;for(let d of a)switch(d.type){case"permission-request":c.set(`p:${d.requestId}`,{kind:"permission",topicId:b,requestId:d.requestId,ts:d.ts,summary:d.tool?`Permission: ${d.tool}`:d.action??"Permission request",...d.description?{details:d.description}:{}});break;case"permission-response":c.delete(`p:${d.requestId}`);break;case"question":c.set(`q:${d.questionId}`,{kind:"question",topicId:b,requestId:d.questionId,ts:d.ts,summary:d.prompt.slice(0,200),...d.choices&&d.choices.length?{details:d.choices.join(" / ")}:{}});break;case"answer":c.delete(`q:${d.questionId}`);break;case"mcp-add-request":c.set(`m:${d.requestId}`,{kind:"mcp-add",topicId:b,requestId:d.requestId,ts:d.ts,summary:`MCP add: ${d.label}`,...d.description?{details:d.description}:{}});break;case"mcp-add-response":c.delete(`m:${d.requestId}`)}return[...c.values()]}(await (0,e.wj)(a,b),b);return f().set(g,{mtimeMs:c.mtimeMs,size:c.size,result:i}),i}async function h(a,b){let c=[];return await Promise.all(b.map(async b=>{let d=await g(a,b);c.push(...d)})),c.sort((a,b)=>a.ts<b.ts?1:-1),c}},49809:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{k:()=>v,x:()=>t});var e=c(31776);c(428);var f=c(73024),g=c(76760),h=c.n(g),i=c(24576),j=c(11178),k=c(56843),l=c(16909),m=c(24139),n=c(1701),o=c(52129),p=c(7188),q=c(11244),r=c(97364),s=a([l,o]);async function t(a){try{let b=await (0,i.Zn)(a);if(!b)return{ok:!1,error:"Root not found"};let[c,d,e,f]=await Promise.all([(0,k.hk)(b.path),(0,j.CA)(b.path),(0,p.listWidgets)(b.path),(0,p.readLayout)(b.path)]),g=(0,p.reconcileLayout)(f,e.map(a=>a.id),q.SYSTEM_WIDGET_IDS);(g.order.join("|")!==f.order.join("|")||g.hidden.join("|")!==f.hidden.join("|")||JSON.stringify(g.sizes??{})!==JSON.stringify(f.sizes??{}))&&await (0,p.writeLayout)(b.path,g);let h=c.map(a=>a.meta.id),r=new Set("function"==typeof l.z.listRunningTopicsForRoot?l.z.listRunningTopicsForRoot(a):[]),[s,t,v]=await Promise.all([(0,m.Z)(b.path,h),(0,n.Mn)(),(0,o.Qv)(a).catch(()=>null)]),w=new Set(s.map(a=>a.requestId));for(let a of t)!w.has(a.requestId)&&h.includes(a.topicId)&&s.push({kind:"mcp-add",topicId:a.topicId,requestId:a.requestId,ts:a.createdAt,summary:`MCP add: ${a.directive.label}`,...a.directive.description?{details:a.directive.description}:{}});s.sort((a,b)=>a.ts<b.ts?1:-1);let x=new Map;for(let a of c)x.set(a.meta.id,a.meta);let y=[],z=[];for(let a of c){let b=a.meta;if(b.goal&&"active"===b.goalStatus){y.push({topicId:b.id,topicTitle:b.title,goal:b.goal,goalIterations:b.goalIterations??0,updatedAt:b.updatedAt,running:r.has(b.id)});continue}r.has(b.id)&&z.push({topicId:b.id,topicTitle:b.title,updatedAt:b.updatedAt})}y.sort((a,b)=>a.updatedAt<b.updatedAt?1:-1),z.sort((a,b)=>a.updatedAt<b.updatedAt?1:-1);let A=await u(d);return{ok:!0,snapshot:{rootId:a,rootPath:b.path,activeGoals:y,runningAgents:z,pendingApprovals:s,recentKb:A,suggestions:v,widgets:e,layout:g}}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function u(a){let b=Date.now()-2592e5,c=a.filter(a=>Date.parse(a.modifiedAt)>=b).sort((a,b)=>a.modifiedAt<b.modifiedAt?1:-1).slice(0,6);return Promise.all(c.map(async a=>{let b=await (0,j.xO)(a.abs);return{rel:a.rel,title:b.title??h().basename(a.rel),...b.kind?{kind:b.kind}:{},modifiedAt:a.modifiedAt,preview:""}}))}async function v(a,b){try{let c=await (0,i.Zn)(a);if(!c)return{ok:!1,error:"Root not found"};let d=h().join(c.path,".reflex",b),e=h().relative(h().join(c.path,".reflex"),d);if(e.startsWith("..")||h().isAbsolute(e))return{ok:!1,error:"Refused (path traversal)"};let g=await f.promises.readFile(d,"utf8");return{ok:!0,preview:function(a){let b=a,c=a.match(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/);return c&&(b=a.slice(c[0].length)),(b=b.replace(/^#+\s+/gm,"").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\r?\n+/g," ").trim()).length>200&&(b=b.slice(0,197).trimEnd()+"…"),b}(g)}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}[l,o]=s.then?(await s)():s,(0,r.D)([t,v]),(0,e.A)(t,"40ca94eb44194fe89921403909d62be0e367879d6f",null),(0,e.A)(v,"60dfbabd13fc2571a3310ecfe3d06848339c06a0f5",null),d()}catch(a){d(a)}})},52129:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Qt:()=>t,Qv:()=>r});var e=c(73024),f=c(76760),g=c.n(f),h=c(29163),i=c(11178),j=c(56843),k=c(16909),l=c(24139),m=c(99048),n=c(17640),o=c(24576),p=a([k,m]);function q(a){let b=a.replace(/[^A-Za-z0-9_.-]/g,"_");return g().join((0,h._)(),"roots",b,"suggestions.json")}async function r(a){try{let b=await e.promises.readFile(q(a),"utf8"),c=JSON.parse(b);if(c.rootId!==a||!Array.isArray(c.items))return null;return c}catch{return null}}async function s(a){let b=q(a.rootId);await e.promises.mkdir(g().dirname(b),{recursive:!0}),await e.promises.writeFile(b,JSON.stringify(a,null,2)+"\n",{encoding:"utf8",mode:384});try{await e.promises.chmod(b,384)}catch{}}async function t(a){var b;let c=await (0,o.Zn)(a);if(!c)return{ok:!1,error:"Root not found"};let d=(await (0,n.M)()).assignments.quick,e=await u(a,c.path);if(e.empty){let b={rootId:a,generatedAt:new Date().toISOString(),model:"n/a",items:[{title:"Project is empty",why:"No topics, no KB files — nothing to suggest. Start with /chat or create your first entry.",action:{kind:"none",label:"OK"}}]};return await s(b),{ok:!0,cache:b}}let f=(b=e,['You analyse the state of a local Reflex knowledge-base project and propose 2–4 high-leverage actions for the user.\nOutput STRICT JSON: an object with one key `items`, value array of {title, why, action}.\naction.kind ∈ {"open-topic", "open-kb", "send-message", "none"}.\n - open-topic: target = topic id from the snapshot\n - open-kb: target = rel-path from the snapshot (.reflex/-relative)\n - send-message: target = the literal text Reflex should send. topicId = which topic to send into (use an existing id from the snapshot or omit for new chat).\n - none: informational only\nEach action.label is the button text (3-6 words, Russian or English to match the project\'s vibe).\nEach `title` is 4-9 words; each `why` is one sentence explaining the trigger.\nSkip trivialities. Don\'t propose chores that don\'t move the project forward.\nReply in Russian unless titles/paths are obviously English.\n\n## Snapshot',JSON.stringify(b,null,2),"\nReturn only the JSON object — no preamble, no markdown fences, no comments. The reply MUST start with `{` and end with `}`."].join("\n"));try{let b=await (0,m.T)(d,f,{timeoutMs:45e3}),c=function(a){let b=a.trim();b.startsWith("```")&&(b=b.replace(/^```[a-z]*\r?\n/i,"").replace(/```\s*$/i,""));let c=b.indexOf("{"),d=b.lastIndexOf("}");c>=0&&d>c&&(b=b.slice(c,d+1));let e=JSON.parse(b);if(!e||"object"!=typeof e||!Array.isArray(e.items))throw Error("Model returned non-JSON or missing items[]");let f=[];for(let a of e.items){if(!a||"object"!=typeof a)continue;let b="string"==typeof a.title?a.title:null,c="string"==typeof a.why?a.why:null,d=a.action&&"object"==typeof a.action?a.action:null;if(!b||!c||!d)continue;let e=d.kind;if("open-topic"!==e&&"open-kb"!==e&&"send-message"!==e&&"none"!==e)continue;let g="string"==typeof d.label?d.label:"Open";f.push({title:b,why:c,action:{kind:e,label:g,..."string"==typeof d.target?{target:d.target}:{},..."string"==typeof d.topicId?{topicId:d.topicId}:{}}})}return f}(b),e={rootId:a,generatedAt:new Date().toISOString(),model:`${d.harness}:${d.model}`,items:c.slice(0,5)};return await s(e),{ok:!0,cache:e}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function u(a,b){let[c,d]=await Promise.all([(0,j.hk)(b),(0,i.dj)(b)]),e=c.map(a=>a.meta.id),f=new Set("function"==typeof k.z.listRunningTopicsForRoot?k.z.listRunningTopicsForRoot(a):[]),g=await (0,l.Z)(b,e),h=Date.now()-432e6,m=c.filter(a=>Date.parse(a.meta.updatedAt)<h).filter(a=>a.meta.goal&&"active"===a.meta.goalStatus).map(a=>({id:a.meta.id,title:a.meta.title,updatedAt:a.meta.updatedAt}));return{empty:0===c.length&&0===d.length,topicCount:c.length,topicsWithGoal:c.filter(a=>a.meta.goal&&"active"===a.meta.goalStatus).map(a=>({id:a.meta.id,title:a.meta.title,goal:a.meta.goal,iterations:a.meta.goalIterations??0,updatedAt:a.meta.updatedAt,running:f.has(a.meta.id)})),runningTopics:c.filter(a=>f.has(a.meta.id)).map(a=>({id:a.meta.id,title:a.meta.title})),recentKb:d.slice().sort((a,b)=>a.modifiedAt<b.modifiedAt?1:-1).slice(0,8).map(a=>({rel:a.rel,title:a.meta.title??a.rel,modifiedAt:a.modifiedAt})),pendingCount:g.length,totalKbFiles:d.length,staleTopics:m}}[k,m]=p.then?(await p)():p,d()}catch(a){d(a)}})}};
|