reflex-agent 0.17.1 → 0.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +102 -102
- package/.next/app-path-routes-manifest.json +10 -10
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +3 -3
- 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 +1 -1
- 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 +1 -1
- 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_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_client-reference-manifest.js +1 -1
- package/.next/server/app/audit/page.js +2 -2
- package/.next/server/app/audit/page_client-reference-manifest.js +1 -1
- package/.next/server/app/dispatcher/page.js +1 -1
- package/.next/server/app/dispatcher/page_client-reference-manifest.js +1 -1
- package/.next/server/app/onboarding/page.js +2 -2
- 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 +6 -6
- 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 +4 -4
- 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 +10 -10
- package/.next/server/chunks/1358.js +1 -1
- package/.next/server/chunks/1525.js +1 -0
- package/.next/server/chunks/285.js +8 -8
- package/.next/server/chunks/3332.js +1 -1
- package/.next/server/chunks/404.js +3 -0
- package/.next/server/chunks/4578.js +0 -0
- package/.next/server/chunks/4812.js +1 -1
- package/.next/server/chunks/{6370.js → 6217.js} +1 -1
- package/.next/server/chunks/8511.js +0 -0
- package/.next/server/chunks/9098.js +1 -1
- package/.next/server/chunks/{4333.js → 9186.js} +2 -2
- package/.next/server/chunks/9703.js +1 -0
- package/.next/server/chunks/9809.js +1 -1
- package/.next/server/functions-config-manifest.json +4 -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/chunks/4035-c900a19ab709c489.js +1 -0
- package/.next/static/chunks/4108.2a1cd2be227d1db6.js +1 -0
- package/.next/static/chunks/{1140-64068d731caa9e74.js → 5572-cc7066942d006956.js} +1 -1
- package/.next/static/chunks/59-8d4a53ee7c914335.js +1 -0
- package/.next/static/chunks/7343-d414cbf00d7903b3.js +1 -0
- package/.next/static/chunks/8523-ce9e5fd4102e0550.js +1 -0
- package/.next/static/chunks/app/layout-61561440bde8894f.js +1 -0
- package/.next/static/chunks/app/onboarding/page-25b3a1c1da972648.js +1 -0
- package/.next/static/chunks/app/page-a73a8abd219d328f.js +1 -0
- package/.next/static/chunks/app/roots/[id]/chat/[topicId]/page-1c1825c48749b024.js +1 -0
- package/.next/static/chunks/app/roots/[id]/kb/[...slug]/page-aa97c0262e3f3a94.js +1 -0
- package/.next/static/chunks/app/roots/[id]/memory/{page-8a6c36c8f8b18027.js → page-c69f17be3048bdc2.js} +1 -1
- package/.next/static/chunks/app/roots/[id]/page-5385296d9e6fb5bd.js +1 -0
- package/.next/static/chunks/app/roots/[id]/workflows/[wfId]/page-3d141c8450f93771.js +1 -0
- package/.next/static/chunks/app/roots/[id]/workflows/page-39f9bcc115ebee4b.js +1 -0
- package/.next/static/chunks/app/roots/new/{page-c053590d2d0db45b.js → page-be08d7bdb6d3ec29.js} +1 -1
- package/.next/static/chunks/app/settings/page-1a56d55862b78015.js +1 -0
- package/.next/static/chunks/app/share/[id]/page-4713e54d2c21a7d8.js +1 -0
- package/.next/static/chunks/app/utilities/[scope]/[id]/page-749569080a03f192.js +1 -0
- package/.next/static/chunks/app/utilities/page-7ec6d0962a63b2cf.js +1 -0
- package/.next/static/chunks/{webpack-365da08c2f4d8fd4.js → webpack-648ac9036cb1b816.js} +1 -1
- package/.next/trace +90 -90
- package/package.json +1 -1
- package/.next/server/chunks/2420.js +0 -3
- package/.next/server/chunks/3943.js +0 -1
- package/.next/server/chunks/9840.js +0 -1
- package/.next/static/chunks/1449-6b7d830a92f3f938.js +0 -1
- package/.next/static/chunks/3281-8bd5b627634cdf42.js +0 -1
- package/.next/static/chunks/3680-c10f5bed1e72fdc2.js +0 -1
- package/.next/static/chunks/4108.19c3868f4af2c9f0.js +0 -1
- package/.next/static/chunks/9764-cdf07e52fe3e8237.js +0 -1
- package/.next/static/chunks/app/layout-a9e0a8f5993dd6d9.js +0 -1
- package/.next/static/chunks/app/onboarding/page-6fddd32281064f20.js +0 -1
- package/.next/static/chunks/app/page-04091ddd75f75dbe.js +0 -1
- package/.next/static/chunks/app/roots/[id]/chat/[topicId]/page-4ef3f3e86daba072.js +0 -1
- package/.next/static/chunks/app/roots/[id]/kb/[...slug]/page-e06fed2af2d53515.js +0 -1
- package/.next/static/chunks/app/roots/[id]/page-dc75fd44657768c3.js +0 -1
- package/.next/static/chunks/app/roots/[id]/workflows/[wfId]/page-4159003e68210618.js +0 -1
- package/.next/static/chunks/app/roots/[id]/workflows/page-45cf79c938c988e5.js +0 -1
- package/.next/static/chunks/app/settings/page-5514c8538063c316.js +0 -1
- package/.next/static/chunks/app/share/[id]/page-f88950f6a8ad9e41.js +0 -1
- package/.next/static/chunks/app/utilities/[scope]/[id]/page-b15dcef01e478b72.js +0 -1
- package/.next/static/chunks/app/utilities/page-bb3e4a011e6bad5c.js +0 -1
- /package/.next/static/{6dGMfpiSfKb8VjYCBSJk6 → wqvqGv9K0VMAHRhcQ6dS5}/_buildManifest.js +0 -0
- /package/.next/static/{6dGMfpiSfKb8VjYCBSJk6 → wqvqGv9K0VMAHRhcQ6dS5}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
exports.id=285,exports.ids=[285
|
|
1
|
+
exports.id=285,exports.ids=[285],exports.modules={580:(a,b,c)=>{"use strict";c.d(b,{S:()=>t,addMcpServer:()=>r,getMcpServer:()=>q,listMcpServers:()=>p,updateMcpServer:()=>s});var d=c(73024),e=c(76760),f=c.n(e),g=c(56149),h=c(97453),i=c(73652);let j=f().join((0,i._)(),"mcp"),k=f().join(j,"servers.json"),l=g.Ik({id:g.Yj().min(1).max(64).regex(/^[a-zA-Z][a-zA-Z0-9_-]*$/,"id must start with a letter; letters, digits, '_' and '-' allowed"),label:g.Yj().min(1).max(120),description:g.Yj().max(2e3).default(""),config:h.McpConfigSchema,addedAt:g.Yj(),lastVerifiedAt:g.Yj().optional()}),m=g.Ik({version:g.eu(1),servers:g.YO(l)});async function n(){try{let a=await d.promises.readFile(k,"utf8"),b=m.safeParse(JSON.parse(a));if(!b.success)return{version:1,servers:[]};return b.data}catch{return{version:1,servers:[]}}}async function o(a){await d.promises.mkdir(j,{recursive:!0}),await d.promises.writeFile(k,JSON.stringify(a,null,2)+"\n",{encoding:"utf8",mode:384});try{await d.promises.chmod(k,384)}catch{}}async function p(){return[...(await n()).servers].sort((a,b)=>a.id.localeCompare(b.id))}async function q(a){return(await n()).servers.find(b=>b.id===a)??null}async function r(a){let b=l.parse({id:a.id,label:a.label,description:a.description??"",config:a.config,addedAt:new Date().toISOString()}),c=await n();if(c.servers.some(a=>a.id===b.id))throw Error(`MCP server "${b.id}" already exists`);return c.servers.push(b),await o(c),b}async function s(a,b){let c=await n(),d=c.servers.findIndex(b=>b.id===a);if(d<0)throw Error(`MCP server "${a}" not found`);let e=l.parse({...c.servers[d],...b});return c.servers[d]=e,await o(c),e}async function t(a){let b=await n(),c=b.servers.filter(b=>b.id!==a);c.length!==b.servers.length&&(b.servers=c,await o(b))}},875:(a,b,c)=>{"use strict";c.d(b,{$4:()=>f,EA:()=>i,FB:()=>g,GX:()=>p,VM:()=>m,YE:()=>l,dA:()=>h,vl:()=>k,wr:()=>e,wt:()=>j,z7:()=>n,zM:()=>o});var d=c(96921);function e(a){let b=(0,d.dr)(a);return b&&("plan"===b.def.id||"goal"===b.def.id)?{kind:b.def.id,text:b.payload}:null}function f(a){return`## /plan — Plan-first mode
|
|
2
2
|
|
|
3
3
|
Reply in ${a}. **Before doing anything**, lay out a clear, numbered step-by-step plan. Each step should be concrete and verifiable.
|
|
4
4
|
|
|
@@ -70,9 +70,9 @@ Constraints:
|
|
|
70
70
|
- Don't speculate about feelings the user didn't state. Inferred mood is best-guess, not therapy.
|
|
71
71
|
- If the user explicitly asks for a weekly review during this flow, switch to the \`/skill weekly-reflect\` flow.`}let p=15},1405:(a,b,c)=>{"use strict";c.d(b,{SYSTEM_WIDGET_IDS:()=>e,VQ:()=>d,hU:()=>f});let d={hourly:36e5,daily:864e5,weekly:6048e5},e=["sys:active-goals","sys:pending","sys:recent-kb","sys:ai-suggestions"],f=["markdown","news-list","link-list","kpi","checklist","quote","kb-pinned","progress","image","stat-table","map","action-list","utility-card"]},1947:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{MJ:()=>p,ab:()=>q,xP:()=>s});var e=c(73024),f=c(76760),g=c.n(f),h=c(73652),i=c(36017),j=c(99353),k=c(81483),l=c(14981),m=a([j]);function n(a,b){return g().join(function(a){if("global"===a.scope)return g().join((0,h._)(),"memory");if(!a.rootPath)throw Error("project memory requires rootPath");return g().join(a.rootPath,".reflex","memory")}(a),`${b}.md`)}function o(a){let b=a.trim();return b?b.split("\n").length:0}async function p(a,b){try{let c=(await e.promises.readFile(n(a,b),"utf8")).replace(/\s+$/,"");return{file:b,content:c||null,lines:o(c)}}catch{return{file:b,content:null,lines:0}}}async function q(a){let b=await Promise.all(k.cs.map(b=>p(a,b))),c={};for(let a of b)c[a.file]=a;return c}async function r(a,b){await e.promises.mkdir(g().dirname(a),{recursive:!0}),await e.promises.writeFile(a,b.endsWith("\n")?b:`${b}
|
|
72
72
|
`,"utf8")}async function s(a,b,c,d={}){let f=k.h0[b],g=n(a,b),h=await p(a,b);if("replace"===c){let a=(d.content??"").trim();if(!a)return await e.promises.unlink(g).catch(()=>null),{ok:!0,file:b,lines:0,cap:f};let c=(0,l.t)(a,{skipDupCheck:!0});if(!c.ok)return{ok:!1,file:b,lines:h.lines,cap:f,error:`hygiene: ${c.error}`};let i=o(a);return i>f?{ok:!1,file:b,lines:i,cap:f,error:"cap-exceeded"}:(await r(g,a),{ok:!0,file:b,lines:i,cap:f})}if("remove"===c){if(!h.content)return{ok:!0,file:b,lines:0,cap:f};let a=(d.match??"").trim();if(!a)return{ok:!1,file:b,lines:h.lines,cap:f,error:"match-required"};let c=h.content.split("\n").filter(b=>!b.includes(a)).join("\n").trim();return c?(await r(g,c),{ok:!0,file:b,lines:o(c),cap:f}):(await e.promises.unlink(g).catch(()=>null),{ok:!0,file:b,lines:0,cap:f})}let i=(d.content??"").trim();if(!i)return{ok:!1,file:b,lines:h.lines,cap:f,error:"empty-content"};let j=(0,l.t)(i,{existing:h.content});if(!j.ok)return{ok:!1,file:b,lines:h.lines,cap:f,error:`hygiene: ${j.error}`};let m=i.split("\n").length;if(h.lines+m<=f){let a=h.content?`${h.content.trim()}
|
|
73
|
-
${i}`:i;return await r(g,a),{ok:!0,file:b,lines:o(a),cap:f}}let q=await t(b,h.content??"",i);return q?(await r(g,q),{ok:!0,file:b,lines:o(q),cap:f}):{ok:!1,file:b,lines:h.lines,cap:f,error:"compact-failed"}}async function t(a,b,c){let d=k.h0[a];try{let e=(await (0,i.loadSettings)()).assignments.quick,f=[`You compress a Reflex memory file. The file is ${a}.md — ${k.lh[a]}.`,`Hard rule: the OUTPUT MUST BE ≤${d} lines.`,"Merge the new entry into the existing content. Keep every distinct fact. Drop duplicates and obsolete entries. Tighten wording but DO NOT invent facts. One line per fact. Plain text, no markdown headers, no surrounding quotes, no commentary — just the new file contents.\n\n## Existing file",b.trim()||"(empty)","\n## New entry to merge in",c.trim()].join("\n"),g=await (0,j.quickComplete)(e,f,{timeoutMs:45e3}),h=(function(a){let b=/^```(?:\w+)?\n([\s\S]*?)\n```\s*$/.exec(a.trim());return b?b[1]:a})(g).trim();if(!h)return null;return h.split("\n").map(a=>a.trim()).filter(Boolean).slice(0,d).join("\n")}catch{return null}}j=(m.then?(await m)():m)[0],d()}catch(a){d(a)}})},3043:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{w:()=>j});var e=c(24576),f=c(13295),g=c(24058),h=c(24570),i=a([g,h]);[g,h]=i.then?(await i)():i;let p={manual:null,hourly:36e5,daily:864e5,weekly:6048e5};function j(){if(globalThis.__reflexWorkflowScheduler)return;let a={running:!1,lastFired:new Map,timer:setInterval(()=>{k(a)},6e4)};setTimeout(()=>void k(a),5e3).unref?.(),a.timer.unref?.(),globalThis.__reflexWorkflowScheduler=a}async function k(a){if(!a.running){a.running=!0;try{for(let b of(await (0,e.listRoots)().catch(()=>[])))try{await m(a,b)}catch(a){console.error(`[scheduler] root ${b.id} failed: ${a instanceof Error?a.message:String(a)}`)}await l(a);try{let{compactDispatcherIfIdle:a}=await c.e(6142).then(c.bind(c,26142));await a()}catch(a){console.error(`[scheduler] dispatcher compaction failed: ${a instanceof Error?a.message:String(a)}`)}}finally{a.running=!1}}}async function l(a){for(let b of h.p){let c=h.l[b.trigger];if(!c)continue;let d=`__system__::${b.id}`,e=a.lastFired.get(d)??null;if(!(null!==e&&Date.now()-e<c)){a.lastFired.set(d,Date.now());try{let a=await b.run();!a.ok&&a.detail&&console.warn(`[scheduler] ${b.id} returned non-ok: ${a.detail}`)}catch(a){console.error(`[scheduler] ${b.id} failed: ${a instanceof Error?a.message:String(a)}`)}}}}async function m(a,b){let c=await (0,f.listWorkflows)(b.path).catch(()=>[]),d=await o(b.id);for(let f of function(a,b){let c=new Set(a.map(a=>a.id));return[...a,...b.filter(a=>!c.has(a.id))]}(c,d)){var e,h;let c=p[f.trigger];if(!c||!1===f.enabled)continue;let d=(e=b.id,h=f.id,`${e}::${h}`),i=a.lastFired.get(d)??await n(b.path,f.id);if(!(null!==i&&Date.now()-i<c)){a.lastFired.set(d,Date.now());try{await (0,g.runWorkflow)(b.id,f.id)}catch(a){console.error(`[scheduler] ${b.id}/${f.id} failed: ${a instanceof Error?a.message:String(a)}`)}}}}async function n(a,b){let c=await (0,f.v)(a,b,1).catch(()=>[]);if(0===c.length)return null;let d=Date.parse(c[0].startedAt);return Number.isFinite(d)?d:null}async function o(a){try{let{collectExtensions:b}=await Promise.resolve().then(c.bind(c,14952));return(await b({rootId:a})).workflows??[]}catch{return[]}}d()}catch(a){d(a)}})},3724:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{runHeadlessAgent:()=>l});var e=c(93554),f=c(51021),g=c(20243),h=c(5492),i=c(36017),j=c(53905),k=a([e,f]);async function l(a){let b=await (0,j.getRoot)(a.rootId);if(!b)throw Error(`runHeadlessAgent: root not found: ${a.rootId}`);let c=await (0,i.loadSettings)(),d=c.assignments.chat,k=await (0,h.createTopic)({root:b.path,firstMessage:a.label??"[headless agent run]",harness:a.harness??d.harness,model:a.model??d.model,language:a.language??c.language}),l=!1;try{let c=await (0,f.startOrchestratorTurn)({rootId:a.rootId,topicId:k.meta.id,message:a.prompt,attachments:a.attachments??[],...a.harness?{harness:a.harness}:{},...a.model?{model:a.model}:{}});if("error"in c)throw Error(c.error);let d=Date.now()+(a.timeoutMs??3e5);for(await m(400);Date.now()<d&&e.z.isActive(k.meta.id);)await m(400);e.z.isActive(k.meta.id)&&(l=!0),await m(400);let h=await (0,g.readEvents)(b.path,k.meta.id),i=h.filter(a=>"assistant-delta"===a.type).map(a=>a.text).join("").trim();if(!i){let b=h.filter(a=>"error"===a.type).map(a=>a.message).filter(Boolean);if(b.length>0)throw Error(`Agent finished with errors: ${b.slice(0,3).join(" \xb7 ")}`);let c=h.filter(a=>"system"===a.type).map(a=>a.text).filter(Boolean);if(c.length>0)return{text:c.join("\n"),topicId:k.meta.id,timedOut:l};if(l)throw Error(`Agent did not respond within ${Math.round((a.timeoutMs??3e5)/1e3)}s (timeout)`);throw Error("Agent finished without producing any text — perhaps no chat engine is configured in Settings.")}return{text:i,topicId:k.meta.id,timedOut:l}}finally{try{await e.z.stopTopic(k.meta.id)}catch{}try{await (0,h.do)(b.path,k.meta.id)}catch{}}}function m(a){return new Promise(b=>setTimeout(b,a))}[e,f]=k.then?(await k)():k,d()}catch(a){d(a)}})},3890:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{DW:()=>u,u7:()=>r,uX:()=>v,zm:()=>s});var e=c(73745);c(66493);var f=c(76760),g=c.n(f),h=c(73024),i=c(53905),j=c(19319),k=c(5492),l=c(20243),m=c(8118),n=c(1947),o=c(81483),p=c(63781),q=a([n]);async function r(a){try{let b=await (0,i.getRoot)(a);if(!b)return{ok:!1,error:"Root not found"};let c=await (0,j.dj)(b.path);return{ok:!0,sections:function(a){let b=[],c=new Map;for(let e of a){let a=e.rel.split("/");if(1===a.length){var d;b.push({rel:(d=e).rel,label:d.meta.title??d.rel,isDir:!1,fileRel:d.rel});continue}let f=a[0],g=c.get(f)??[];g.push(e),c.set(f,g)}let e=[];for(let a of(b.sort(w),e.push(...b),[...c.keys()].sort())){let b=(c.get(a)??[]).map(a=>{let b=a.rel.split("/").slice(1).join("/");return{rel:a.rel,label:a.meta.title??g().basename(b),isDir:!1,fileRel:a.rel}}).sort((a,b)=>"INDEX.md"===g().basename(a.rel)?-1:"INDEX.md"===g().basename(b.rel)?1:a.label.localeCompare(b.label)),d=b.find(a=>"INDEX.md"===g().basename(a.rel)),f=d?.label??a;e.push({rel:`${a}/`,label:f,isDir:!0,children:b})}return e}(c)}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function s(a){try{let b=await (0,i.getRoot)(a);if(!b)return{ok:!1,error:"Root not found"};let c=(await (0,k.hk)(b.path)).filter(a=>!a.meta.helperFor&&!a.meta.taskId),d=await t(b.path,c);return{ok:!0,topics:d.map(a=>({id:a.meta.id,title:a.meta.title,updatedAt:a.meta.updatedAt}))}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function t(a,b){let c=await Promise.all(b.map(async b=>{if(b.preview.trim())return!0;try{return(await h.promises.stat((0,l.R)(a,b.meta.id))).size>0}catch{return!1}}));return b.filter((a,b)=>c[b])}async function u(a){try{let b=await (0,i.getRoot)(a);if(!b)return{ok:!1,error:"Root not found"};let c=await (0,m.listUtilities)({rootId:a,scope:"project"}),d=await (0,k.hk)(b.path),e=new Map;for(let a of d){let b=a.meta.helperFor;if(!b)continue;let c=e.get(b)??[];c.push(a),e.set(b,c)}let f=[];for(let a of c){let c=e.get(a.manifest.id)??[],d=await t(b.path,c);f.push({id:a.manifest.id,name:a.manifest.name,scope:a.scope,...a.rootId?{rootId:a.rootId}:{},...a.manifest.icon?{icon:a.manifest.icon}:{},threads:d.map(a=>({id:a.meta.id,title:a.meta.title,updatedAt:a.meta.updatedAt}))})}return f.sort((a,b)=>a.name.localeCompare(b.name)),{ok:!0,utilities:f}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function v(a){try{let b=await (0,i.getRoot)(a);if(!b)return{ok:!1,error:"Root not found"};let c=await (0,n.ab)({scope:"project",rootPath:b.path}),d=o.cs.map(a=>({file:a,description:o.lh[a],lines:c[a].lines,empty:!c[a].content}));return{ok:!0,files:d}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}function w(a,b){let c=g().basename(a.rel),d=g().basename(b.rel);return"INDEX.md"===c?-1:"INDEX.md"===d?1:a.label.localeCompare(b.label)}n=(q.then?(await q)():q)[0],(0,p.D)([r,s,u,v]),(0,e.A)(r,"40cef119c5313a938bc41b2be902ff6eed04cb333e",null),(0,e.A)(s,"40a46918919494fdc72de40d35407e5ef6085de6ce",null),(0,e.A)(u,"401d5aa44719bfd0d07dad0a42e0b2b3b96cc3c3f7",null),(0,e.A)(v,"40189964def749f07c8c3b740f5c74b51616fd93e7",null),d()}catch(a){d(a)}})},5053:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,53869,23)),Promise.resolve().then(c.t.bind(c,85684,23)),Promise.resolve().then(c.t.bind(c,89338,23)),Promise.resolve().then(c.t.bind(c,65597,23)),Promise.resolve().then(c.t.bind(c,41833,23)),Promise.resolve().then(c.t.bind(c,63921,23)),Promise.resolve().then(c.t.bind(c,25211,23)),Promise.resolve().then(c.t.bind(c,19908,23)),Promise.resolve().then(c.bind(c,49289))},5200:(a,b,c)=>{"use strict";c.d(b,{L:()=>e});var d=c(3265);let e=(0,d.createServerReference)("60aff47e9f8fa1af71863206f550d71bffe64a0faa",d.callServer,void 0,d.findSourceMapURL,"deleteTopicAction")},5492:(a,b,c)=>{"use strict";c.d(b,{PF:()=>r,_9:()=>t,createTopic:()=>u,dL:()=>v,do:()=>w,getTopic:()=>p,hk:()=>o,o0:()=>s});var d=c(73024),e=c(76760),f=c.n(e),g=c(77598),h=c.n(g),i=c(87841),j=c.n(i),k=c(54287);function l(a){return f().join((0,k.FF)(a),"topics")}function m(a,b){return f().join(l(a),`${n(b)}.md`)}function n(a){return a.replace(/[^A-Za-z0-9_-]/g,"")}async function o(a){let b,c=l(a);try{b=await d.promises.readdir(c,{withFileTypes:!0})}catch{return[]}let e=[];for(let a of b){if(!a.isFile()||!a.name.toLowerCase().endsWith(".md"))continue;let b=f().join(c,a.name);try{let a=await d.promises.readFile(b,"utf8"),c=j()(a),f=c.data;if(!f.id||!f.createdAt)continue;let g=c.content.replace(/^##\s+(user|assistant)\s*$/gim,"").trim().slice(0,160);e.push({meta:{id:f.id,title:f.title??"Untitled",createdAt:f.createdAt,updatedAt:f.updatedAt??f.createdAt,harness:f.harness,model:f.model,language:f.language,...f.goal?{goal:f.goal}:{},...f.goalStatus?{goalStatus:f.goalStatus}:{},..."number"==typeof f.goalIterations?{goalIterations:f.goalIterations}:{},...f.helperFor?{helperFor:f.helperFor}:{},...f.taskId?{taskId:f.taskId}:{}},preview:g,abs:b})}catch{}}return e.sort((a,b)=>Date.parse(b.meta.updatedAt)-Date.parse(a.meta.updatedAt)),e}async function p(a,b){let c,e=m(a,b);try{c=await d.promises.readFile(e,"utf8")}catch{return null}let f=j()(c),g=f.data;return g.id?{meta:{id:g.id,title:g.title??"Untitled",createdAt:g.createdAt??new Date().toISOString(),updatedAt:g.updatedAt??g.createdAt??new Date().toISOString(),harness:g.harness,model:g.model,language:g.language,...g.goal?{goal:g.goal}:{},...g.goalStatus?{goalStatus:g.goalStatus}:{},..."number"==typeof g.goalIterations?{goalIterations:g.goalIterations}:{},...g.helperFor?{helperFor:g.helperFor}:{},...g.taskId?{taskId:g.taskId}:{},...g.dispatchedFromDispatcher?{dispatchedFromDispatcher:!0}:{}},messages:function(a){let b=[],c=a.split(/\r?\n/),d=null;for(let a of c){let c=/^##\s+(user|assistant)\s*$/i.exec(a);if(c){d&&b.push({...d,body:d.body.trimEnd()}),d={role:c[1].toLowerCase(),body:""};continue}d&&(d.body+=a+"\n")}return d&&b.push({...d,body:d.body.trimEnd()}),b}(f.content),abs:e}:null}async function q(a,b,c){let e=m(a,b),f=await d.promises.readFile(e,"utf8"),g=j()(f),h={...g.data,...c,updatedAt:new Date().toISOString()};for(let a of Object.keys(h))void 0===h[a]&&delete h[a];await d.promises.writeFile(e,j().stringify(g.content,h),"utf8")}async function r(a,b,c){await q(a,b,{goal:c,goalStatus:"active",goalIterations:0})}async function s(a,b){let c=m(a,b),e=await d.promises.readFile(c,"utf8"),f=j()(e).data,g=("number"==typeof f.goalIterations?f.goalIterations:0)+1;return await q(a,b,{goalIterations:g}),g}async function t(a,b,c="abandoned"){await q(a,b,{goalStatus:c})}async function u(a){let b=function(){let a=new Date().toISOString().slice(0,10),b=h().randomBytes(4).toString("hex");return`${a}-${b}`}(),c=new Date().toISOString(),e={id:b,title:function(a){let b=a.trim().split(/\r?\n/)[0]??"Untitled";return b.length>80?b.slice(0,77)+"…":b}(a.firstMessage),createdAt:c,updatedAt:c,...a.harness?{harness:a.harness}:{},...a.model?{model:a.model}:{},...a.language?{language:a.language}:{},...a.helperFor?{helperFor:a.helperFor}:{},...a.taskId?{taskId:a.taskId}:{},...a.dispatchedFromDispatcher?{dispatchedFromDispatcher:!0}:{}};return await d.promises.mkdir(l(a.root),{recursive:!0}),await d.promises.writeFile(m(a.root,b),y(e,""),"utf8"),{meta:e,messages:[],abs:m(a.root,b)}}async function v(a,b,c){let e=await p(a,b);if(!e)throw Error(`Topic not found: ${b}`);e.meta.title=c,e.meta.updatedAt=new Date().toISOString();let f=e.messages.map(a=>`## ${a.role}
|
|
74
|
-
${a.body}`).join("\n\n")+"\n";await d.promises.writeFile(m(a,b),y(e.meta,f),"utf8")}async function w(a,b){let c=n(b);if(!c)throw Error(`Invalid topic id: ${b}`);let d=m(a,c),e=f().join(l(a),`${c}.events.jsonl`);return{removedMd:await x(d),removedEvents:await x(e)}}async function x(a){try{return await d.promises.unlink(a),!0}catch(a){if("object"==typeof a&&null!==a&&"code"in a&&"ENOENT"===a.code)return!1;throw a}}function y(a,b){return j().stringify(b,a)}},6240:(a,b,c)=>{Promise.resolve().then(c.bind(c,30849)),Promise.resolve().then(c.bind(c,95422)),Promise.resolve().then(c.bind(c,11935))},8118:(a,b,c)=>{"use strict";c.d(b,{Od:()=>m,gd:()=>s,getUtility:()=>r,jc:()=>u,listUtilities:()=>n});var d=c(73024),e=c(76760),f=c.n(e),g=c(53905),h=c(73652),i=c(54287),j=c(20050);let k=f().join((0,h._)(),"utilities");function l(a){return f().join((0,i.FF)(a),"utilities")}function m(a,b,c){if("global"===a)return f().join(k,b);if(!c)throw Error("project-scoped utility requires rootPath");return f().join(l(c),b)}async function n(a={}){let b=[];if(a.scope&&"global"!==a.scope||b.push(...await o("global",k)),!a.scope||"project"===a.scope)for(let c of a.rootId?await (0,g.getRoot)(a.rootId).then(a=>a?[a]:[]).catch(()=>[]):await (0,g.listRoots)().catch(()=>[])){let a=l(c.path);b.push(...(await o("project",a,c.id)).map(a=>({...a,rootId:c.id})))}return b}async function o(a,b,c){let e;try{e=await d.promises.readdir(b,{withFileTypes:!0})}catch{return[]}let g=[];for(let d of e){if(!d.isDirectory())continue;let e=f().join(b,d.name),h=await p(e);h&&g.push({scope:a,...c?{rootId:c}:{},dir:e,manifest:h,bundleAvailable:await q(f().join(e,"bundle.js"))})}return g}async function p(a){try{let b=await d.promises.readFile(f().join(a,"manifest.json"),"utf8"),c=j.pL.safeParse(JSON.parse(b));return c.success?c.data:null}catch{return null}}async function q(a){try{return await d.promises.access(a),!0}catch{return!1}}async function r(a,b,c){let d,e;if("global"===a)d=k;else{if(!c)return null;let a=await (0,g.getRoot)(c).catch(()=>null);if(!a)return null;d=l(a.path),e=a.id}let h=f().join(d,b),i=await p(h);return i?{scope:a,...e?{rootId:e}:{},dir:h,manifest:i,bundleAvailable:await q(f().join(h,"bundle.js"))}:null}async function s(a){let b;if(a.manifest.id!==a.manifest.id.toLowerCase())throw Error("manifest.id must be lowercase kebab-case");if("project"===a.scope){if(!a.rootId)throw Error("project-scoped install requires rootId");let c=await (0,g.getRoot)(a.rootId);if(!c)throw Error(`unknown rootId: ${a.rootId}`);b=c.path}let c=m(a.scope,a.manifest.id,b);for(let[e,g]of(await d.promises.mkdir(c,{recursive:!0}),await d.promises.mkdir(f().join(c,"data"),{recursive:!0}),Object.entries(a.files))){if("manifest.json"===e)continue;let c=function(a,b,c,d){let e=m(a,b,d),g=f().resolve(e,c),h=f().relative(e,g);if(h.startsWith("..")||f().isAbsolute(h))throw Error(`refused path outside utility dir: ${c}`);return g}(a.scope,a.manifest.id,e,b);await d.promises.mkdir(f().dirname(c),{recursive:!0}),await d.promises.writeFile(c,g,"utf8")}let e={...a.manifest,source:a.source,serverActions:function(a,b){let c=new Map(a.map(a=>[a.name,a]));for(let a of b){let b=/^actions\/([^/_][^/]*)\.ts$/.exec(a);if(!b)continue;let d=b[1];/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(d)&&(c.has(d)||c.set(d,{name:d,entry:a,timeoutMs:3e4}))}return[...c.values()]}(a.manifest.serverActions,Object.keys(a.files))};if(await d.promises.writeFile(f().join(c,"manifest.json"),JSON.stringify(e,null,2)+"\n","utf8"),"project"===a.scope&&a.rootId&&b&&e.card)try{await t(b,a.scope,e)}catch(a){console.error("[utility install] card seed failed:",a)}return{scope:a.scope,...a.rootId?{rootId:a.rootId}:{},dir:c,manifest:e,bundleAvailable:!1}}async function t(a,b,d){if(!d.card)return;let{buildRecord:e,readLayout:f,reconcileLayout:g,writeLayout:h,writeWidget:i,listWidgets:j}=await Promise.resolve().then(c.bind(c,69509)),{SYSTEM_WIDGET_IDS:k}=await Promise.resolve().then(c.bind(c,1405)),l=`utility:${d.id}`,m=e({id:l,title:d.card.title??d.name,...d.card.description?{description:d.card.description}:{},...d.card.action&&d.card.refresh?{refresh:d.card.refresh}:{},payload:{kind:"utility-card",data:{utilityId:d.id,utilityScope:b,inner:{kind:d.card.kind,data:d.card.data,...d.card.title?{title:d.card.title}:{},...d.card.description?{description:d.card.description}:{}}}}});await i(a,m);let n=await f(a);n.order.includes(l)||n.hidden.includes(l)||(n.hidden=[...n.hidden,l]);let o=g(n,(await j(a)).map(a=>a.id),k);await h(a,o)}async function u(a,b,c){let e;if("project"===a){if(!c)throw Error("project-scoped remove requires rootId");let a=await (0,g.getRoot)(c);if(!a)return;e=a.path}let f=m(a,b,e);await d.promises.rm(f,{recursive:!0,force:!0})}},13415:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{L4:()=>r,OQ:()=>s,Pd:()=>t,g3:()=>o,h$:()=>q,nY:()=>p});var e=c(73745);c(66493);var f=c(65326),g=c(53905),h=c(5492),i=c(36017),j=c(99353),k=c(51021),l=c(93554),m=c(63781),n=a([j,k,l]);async function o(a,b,c=[],d){try{let e=await (0,g.getRoot)(a);if(!e)return{ok:!1,error:"Root not found"};if(!b.trim()&&0===c.length)return{ok:!1,error:"Empty prompt"};let j=await (0,i.loadSettings)(),l=j.assignments.chat,m=b.trim()||c[0]?.name||"Untitled",n=await (0,h.createTopic)({root:e.path,firstMessage:m,harness:l.harness,model:l.model,language:j.language}),o=await (0,k.startOrchestratorTurn)({rootId:a,topicId:n.meta.id,message:b.trim(),attachments:c,...d?{focusFile:d}:{}});if("error"in o)return{ok:!1,error:o.error};return(0,f.revalidatePath)(`/roots/${a}`),{ok:!0,topicId:n.meta.id}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function p(a){try{let b=await (0,g.getRoot)(a);if(!b)return{ok:!1,error:"Root not found"};let c=(await (0,h.hk)(b.path)).filter(a=>!a.meta.helperFor);return{ok:!0,topics:c}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function q(a,b,c){try{let d,e=await (0,g.getRoot)(a);if(!e)return{ok:!1,error:"Root not found"};let k=await (0,i.loadSettings)(),l=k.assignments.quick,m=k.language,n=["Write a short, descriptive title for the following user question.",`Language: ${m}.`,"Constraints:\n - 3 to 7 words\n - no quotes, no trailing punctuation",` - no leading prefixes like "Title:" — just the title text`,"\nUser question:",c].join("\n"),o=(d=(d=(d=(d=(await (0,j.quickComplete)(l,n,{timeoutMs:25e3})).trim()).replace(/^```[a-z]*\s*([\s\S]*?)\s*```$/i,"$1")).replace(/^['"«»“”‘’`]+|['"«»“”‘’`]+$/g,"")).replace(/^\s*title\s*:\s*/i,""),(d=(d=d.split(/\r?\n/)[0]?.trim()??"").replace(/[.!?…]+$/u,"").trim()).length>80&&(d=d.slice(0,77).trimEnd()+"…"),d);if(!o)return{ok:!1,error:"Empty title from model"};return await (0,h.dL)(e.path,b,o),(0,f.revalidatePath)(`/roots/${a}`),(0,f.revalidatePath)(`/roots/${a}/chat/${b}`),{ok:!0,title:o}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function r(a,b){try{let c=await (0,g.getRoot)(a);if(!c)return{ok:!1,error:"Root not found"};return await l.z.stopTopic(b),await (0,h.do)(c.path,b),(0,f.revalidatePath)(`/roots/${a}`),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function s(a,b){try{let c=await (0,g.getRoot)(a);if(!c)return{ok:!1,error:"Root not found"};return await (0,h._9)(c.path,b,"abandoned"),(0,f.revalidatePath)(`/roots/${a}/chat/${b}`),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function t(a){try{let b=await (0,g.getRoot)(a.rootId);if(!b)return{ok:!1,error:"Root not found"};let c=a.question.trim();if(!c)return{ok:!1,error:"Empty question"};let d=await (0,i.loadSettings)(),e=d.assignments.chat,f=await (0,h.createTopic)({root:b.path,firstMessage:c,harness:e.harness,model:e.model,language:d.language,helperFor:a.utilityId}),j=(a.context??"").trim(),l=j?[`[${a.utilityName} context]`,j.length>4e3?j.slice(0,4e3)+"\n…[truncated]":j,"[/context]\n",c].join("\n"):c,m=await (0,k.startOrchestratorTurn)({rootId:a.rootId,topicId:f.meta.id,message:l,attachments:[]});if("error"in m)return{ok:!1,error:m.error};return{ok:!0,topicId:f.meta.id}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}[j,k,l]=n.then?(await n)():n,(0,m.D)([o,p,q,r,s,t]),(0,e.A)(o,"7896e0b0661b4325be6050a8ebd112337b7fa269ae",null),(0,e.A)(p,"4034014c41f93939d165a7b6a0666fdd73e00e2308",null),(0,e.A)(q,"70728da6f64f24bbae7f64a215875bc18ff1bf0c12",null),(0,e.A)(r,"60aff47e9f8fa1af71863206f550d71bffe64a0faa",null),(0,e.A)(s,"607b3c857c7e049b014f29f9b4807748e8a30c5fce",null),(0,e.A)(t,"40b79a9f3f5b309d706c167b8186bf6b15931ef026",null),d()}catch(a){d(a)}})},14981:(a,b,c)=>{"use strict";c.d(b,{t:()=>g});let d=[{name:"system-tag",re:/<\s*\/?\s*system\b[^>]*>/i},{name:"user-tag",re:/<\s*\/?\s*user\b[^>]*>/i},{name:"assistant-tag",re:/<\s*\/?\s*assistant\b[^>]*>/i},{name:"inst-marker",re:/\[\s*\/?\s*INST\s*\]/i},{name:"im-start",re:/<\|im_(?:start|end)\|>/},{name:"reflex-marker",re:/<<\s*reflex\s*:/i}],e=[{name:"sk-token",re:/\bsk-[A-Za-z0-9_-]{20,}\b/},{name:"github-token",re:/\b(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{30,}\b/},{name:"aws-key",re:/\bAKIA[0-9A-Z]{16}\b/},{name:"jwt",re:/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\b/},{name:"slack-token",re:/\bxox[abposr]-[A-Za-z0-9-]{10,}\b/},{name:"private-key",re:/-----BEGIN [A-Z ]*PRIVATE KEY-----/}],f=RegExp("[\\u00AD\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u206A-\\u206F\\uFEFF]|[\\u{E0000}-\\u{E007F}]","u");function g(a,b={}){let c=a??"";if(!c.trim())return{ok:!1,error:"empty content"};for(let{name:a,re:b}of d)if(b.test(c))return{ok:!1,error:`looks like a prompt-injection payload (${a}). Strip the wrapper and try again.`};for(let{name:a,re:b}of e)if(b.test(c))return{ok:!1,error:`looks like a credential (${a}). Memory is not a secret store — save the credential through Reflex secrets instead.`};if(f.test(c))return{ok:!1,error:"contains invisible / bidi unicode characters. Paste as plain text and try again."};if(!b.skipDupCheck&&b.existing){let a=new Set(b.existing.split("\n").map(a=>a.trim()).filter(Boolean)),d=c.split("\n").map(a=>a.trim()).filter(Boolean);if(d.length>0&&d.every(b=>a.has(b)))return{ok:!1,error:"every line is already present — nothing to add."}}return{ok:!0}}},15754:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$z:()=>l,MU:()=>m,Tc:()=>k});var e=c(73745);c(66493);var f=c(53905),g=c(20243),h=c(93554),i=c(63781),j=a([h]);async function k(a,b){try{let c=await (0,f.getRoot)(a);if(!c)return{ok:!1,error:"Root not found"};let d=await (0,g.readEvents)(c.path,b);return{ok:!0,events:d,active:h.z.isActive(b)}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function l(a){try{return{ok:!0,agents:h.z.list(a)}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function m(a){try{let b=h.z.get(a);if(!b)return{ok:!1,error:"Agent not found"};return{ok:!0,agent:b}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}h=(j.then?(await j)():j)[0],(0,i.D)([k,l,m]),(0,e.A)(k,"600734fbfcf263a57beab72117b0686e5d8cd03cbf",null),(0,e.A)(l,"40768bbcc710c08acdabab448ce69fafadd7510b4f",null),(0,e.A)(m,"400a768b336af0e259592a76fa4e197306cc226001",null),d()}catch(a){d(a)}})},18809:(a,b,c)=>{"use strict";c.d(b,{Aq:()=>i,pO:()=>h});let d=["Read","Glob","Grep","WebFetch","WebSearch"],e=[...d,"Write","Edit","MultiEdit"];function f(a,b,c){return[`## Specialist role: ${a}`,"",`Reply in ${b}. You are a focused specialist, not a general assistant. Do exactly the task in the brief — no more.`,"\n## Brief from the orchestrator",c.trim(),""].join("\n")}function g(a){return["\n## Rules",a,"\n- Don't ask clarifying questions to the user — you don't have a chat surface. If the brief is ambiguous, do your best with stated assumptions and note them in your output.\n- Don't emit `<<reflex:kb>>`, `<<reflex:utility>>`, `<<reflex:permission>>`, `<<reflex:question>>`, `<<reflex:dispatch>>` markers — those are for the orchestrator only. Just write your answer as plain text/markdown.\n- End with a tight summary the orchestrator can quote verbatim if the user asks for the result."].join("\n")}let h={researcher:{id:"researcher",label:"Researcher",description:"Deep KB reading / project search / web research. Read-only — never writes files. Use when you need to find or gather facts.",allowedTools:d,systemPrompt:({language:a,root:b,reflexScope:c,brief:d})=>[f("researcher",a,d),`Project root: \`${b}\``,`Knowledge base scope: \`${c}\``,g("- You are READ-ONLY: never Write/Edit/MultiEdit. Use Read/Glob/Grep to scan the KB and WebFetch/WebSearch for external lookups.\n- Cite sources by rel-path inside the KB (or URL for web).\n- If the brief asks for something that requires a write, explicitly say `cannot complete — write required` instead of doing it.")].join("\n")},coder:{id:"coder",label:"Coder",description:"Writes/edits source code, configs, schemas. Can create a utility. Use when file changes are required.",allowedTools:e,systemPrompt:({language:a,root:b,reflexScope:c,brief:d})=>[f("coder",a,d),`Project root: \`${b}\``,`Reflex scope (write here for KB files): \`${c}\``,g("- You may Write/Edit/MultiEdit files. Stay inside the project root.\n- Don't run shell or invoke other agents. If the brief implies installing a utility, write the utility files but do NOT emit `<<reflex:utility>>` — that's the orchestrator's job.\n- Report what you changed: list each touched file with a one-line summary.")].join("\n")},summarizer:{id:"summarizer",label:"Summarizer",description:"Compresses a large text / long transcript / file list into a short summary. No tools — only the text in the brief.",allowedTools:[],systemPrompt:({language:a,brief:b})=>[f("summarizer",a,b),g("- You have NO tools — work only from the text in the brief.\n- Compress aggressively: bullet points, ~10x reduction is the target unless the brief says otherwise.\n- Preserve names, numbers, dates, file paths verbatim. Drop filler.")].join("\n")},"kb-writer":{id:"kb-writer",label:"KB Writer",description:"Structured knowledge-base entry (kind/title/body/frontmatter). Use when the orchestrator decides to save something.",allowedTools:d,systemPrompt:({language:a,root:b,reflexScope:c,brief:d})=>[f("kb-writer",a,d),`KB root: \`${c}\``,`Project: \`${b}\``,g('- You DO NOT write the file yourself. Output a JSON object the orchestrator will pass to <<reflex:kb>>:\n ```json\n {"kind":"<entity-type>","title":"…","body":"…markdown…","meta":{…optional frontmatter fields…}}\n ```\n- Pick a sensible `kind` (fact / task / meeting / product / decision / source / …).\n- `body` is full markdown. Frontmatter `meta` should hold structured fields the user might filter/group on.')].join("\n")},"utility-builder":{id:"utility-builder",label:"Utility Builder",description:"Design a utility: manifest + ui.tsx + (optional) server actions. Use when the user explicitly asks to create a utility.",allowedTools:d,systemPrompt:({language:a,root:b,brief:c})=>[f("utility-builder",a,c),`Project: \`${b}\``,g("- Output the utility files inline in markdown code fences with file paths as headers:\n ### manifest.json\n ```json\n { … }\n ```\n ### ui.tsx\n ```tsx\n … React functional component, default-export …\n ```\n- Follow Reflex utility contract: imports only from `react`, `react-dom/client`, `react/jsx-runtime`, `@host/api`, `@host/ui`. Declare needed permissions and secrets in manifest.\n- Don't emit `<<reflex:utility>>` yourself — the orchestrator wraps your output and emits the marker.")].join("\n")}};function i(a){return a in h}},19319:(a,b,c)=>{"use strict";c.d(b,{IK:()=>l,dj:()=>k});var d=c(73024),e=c(76760),f=c.n(e),g=c(87841),h=c.n(g),i=c(54287);async function j(a){let b=(0,i.FF)(a);return m(b,b)}async function k(a){let b=await j(a);return await Promise.all(b.map(async a=>({...a,meta:await n(a.abs)})))}async function l(a,b){let c=(0,i.FF)(a),e=f().resolve(c,b),g=f().relative(c,e);if(g.startsWith("..")||f().isAbsolute(g))throw Error(`Refused to read outside ${i.fW}: ${b}`);return d.promises.readFile(e,"utf8")}async function m(a,b){let c;try{c=await d.promises.readdir(b,{withFileTypes:!0})}catch{return[]}let e=[],g=[];for(let d of c){let c=f().join(b,d.name);if(d.isDirectory()){if(b===a&&"topics"===d.name)continue;e.push(m(a,c));continue}d.isFile()&&d.name.toLowerCase().endsWith(".md")&&g.push({rel:f().relative(a,c).split(f().sep).join("/"),abs:c,size:0,modifiedAt:""})}let h=await Promise.all(g.map(async a=>{try{let b=await d.promises.stat(a.abs);return{...a,size:b.size,modifiedAt:b.mtime.toISOString()}}catch{return a}}));for(let a of(await Promise.all(e)))h.push(...a);return h.sort((a,b)=>a.rel.localeCompare(b.rel)),h}async function n(a){try{let b=await d.promises.readFile(a,"utf8"),c=h()(b).data;return{...void 0!==o(c.title)?{title:o(c.title)}:{},...void 0!==p(c.version)?{version:p(c.version)}:{},...void 0!==o(c.date)?{date:o(c.date)}:{},...void 0!==o(c.kind)?{kind:o(c.kind)}:{},data:c}}catch{return{data:{}}}}function o(a){return"string"==typeof a?a:a instanceof Date?a.toISOString().slice(0,10):void 0}function p(a){if("string"==typeof a||"number"==typeof a)return a}},20050:(a,b,c)=>{"use strict";c.d(b,{pL:()=>j});var d=c(56149);let e=d.Yj().min(1).max(80).regex(/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/,"id must be kebab-case (e.g. furniture-gen)"),f=d.Ik({llm:d.Ik({tasks:d.YO(d.k5(["chat","quick","rag","embed"])).default([])}).optional(),kb:d.Ik({read:d.zM().optional(),write:d.zM().optional(),kinds:d.YO(d.Yj()).optional()}).optional(),fs:d.Ik({sandbox:d.eu(!0)}).optional(),web:d.Ik({fetch:d.Ik({domains:d.YO(d.Yj()).default([])}).optional(),search:d.zM().optional()}).optional(),audit:d.Ik({write:d.eu(!0).optional()}).optional(),workers:d.Ik({enabled:d.eu(!0),maxConcurrent:d.ai().int().min(1).max(8).default(1).optional()}).optional(),agent:d.Ik({invoke:d.eu(!0)}).optional(),workflow:d.Ik({read:d.zM().optional(),run:d.zM().optional()}).optional(),images:d.Ik({generate:d.zM().optional(),search:d.zM().optional(),attach:d.zM().optional(),domains:d.YO(d.Yj().regex(/^(\*\.)?[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/i,"must be a bare hostname, optional leading '*.'")).max(20).optional()}).optional(),sessions:d.Ik({search:d.zM().optional()}).optional()}).default({}),g=d.Ik({key:d.Yj().min(1).max(64).regex(/^[A-Z][A-Z0-9_]*$/,"secret key must be UPPER_SNAKE_CASE (e.g. OPENAI_API_KEY)"),label:d.Yj().min(1).max(120),description:d.Yj().max(2e3).default(""),required:d.zM().default(!1)}),h=d.Ik({name:d.Yj().min(1).max(64).regex(/^[a-zA-Z_][a-zA-Z0-9_]*$/,"action name must be a JS identifier"),entry:d.Yj().min(1).regex(/^[A-Za-z0-9_\-./]+\.ts$/,"entry must be a relative .ts path"),timeoutMs:d.ai().int().min(1e3).max(6e5).default(3e4)}),i=d.Ik({type:d.k5(["agent","github","archive","mcp","builtin"]),origin:d.Yj().optional(),fetchedAt:d.Yj(),installedBy:d.Yj().optional()}),j=d.Ik({id:e,name:d.Yj().min(1).max(120),description:d.Yj().max(2e3).default(""),version:d.Yj().regex(/^\d+\.\d+\.\d+(?:[-+][\w.]+)?$/,"version must be semver"),author:d.Yj().max(120).optional(),homepage:d.Yj().url().optional(),icon:d.Yj().max(64e3).regex(/^(?:lucide:[A-Za-z0-9_-]+|data:image\/(?:png|svg\+xml|jpeg);base64,[A-Za-z0-9+/=]+)$/,"icon must be 'lucide:Name' or a base64 data URL").optional(),category:d.Yj().max(64).optional(),ui:d.Yj().min(1).max(120).default("ui.tsx"),serverActions:d.YO(h).default([]),secrets:d.YO(g).default([]),dependencies:d.g1(d.Yj().regex(/^(?:@[a-z0-9][\w.-]*\/)?[a-z0-9][\w.-]*$/i,"must be an npm package name"),d.Yj().min(1).max(64)).refine(a=>Object.keys(a).length<=30,"at most 30 dependencies").default({}),mcpServers:d.YO(d.Yj().min(1).max(64)).default([]),permissions:f,source:i.optional(),card:d.Ik({kind:d.k5(["markdown","news-list","link-list","kpi","checklist","quote","kb-pinned","progress","image","stat-table","map","action-list"]),title:d.Yj().min(1).max(120).optional(),description:d.Yj().max(280).optional(),data:d.g1(d.Yj(),d.L5()).default({}),action:d.Yj().regex(/^[a-zA-Z_][a-zA-Z0-9_]*$/,"action must be a serverActions name").optional(),refresh:d.k5(["manual","hourly","daily","weekly"]).optional()}).optional(),extensions:d.Ik({slashCommands:d.YO(d.Ik({id:d.Yj().min(1).max(64).regex(/^[a-z][a-z0-9-]*$/),trigger:d.Yj().min(1).max(40).regex(/^[a-z][a-z0-9-]*$/),label:d.Yj().min(1).max(60),description:d.Yj().max(280),icon:d.Yj().min(1).max(40),kind:d.k5(["agent-mode","direct"]),usage:d.Yj().max(200).default(""),allowEmpty:d.zM().default(!1),promptBlock:d.Yj().max(2e4).optional(),directAction:d.Yj().max(120).optional()})).default([]),skills:d.YO(d.Ik({id:d.Yj().min(1).max(64).regex(/^[a-z][a-z0-9-]*$/),title:d.Yj().min(1).max(120),description:d.Yj().max(280),instructions:d.Yj().min(1).max(5e4),workflowId:d.Yj().max(120).optional()})).default([]),workflows:d.YO(d.Ik({id:d.Yj().min(1).max(64).regex(/^[a-z][a-z0-9-]*$/),label:d.Yj().min(1).max(120),description:d.Yj().max(280).optional(),trigger:d.k5(["manual","hourly","daily","weekly"]),steps:d.YO(d.Ik({id:d.Yj().min(1).max(64),kind:d.Yj().min(1).max(40),label:d.Yj().min(1).max(120),params:d.g1(d.Yj(),d.L5()).default({})})).min(1).max(20)})).default([]),systemPromptAddendum:d.Yj().max(2e4).optional()}).default({slashCommands:[],skills:[],workflows:[]})}),k=d.g1(d.Yj(),d.Yj()).superRefine((a,b)=>{for(let c of(!("manifest.json"in a||a["manifest.json"]),Object.keys(a)))(c.startsWith("/")||c.includes(".."))&&b.addIssue({code:"custom",message:`Unsafe file path: ${c}`})});d.Ik({scope:d.k5(["global","project"]),rootId:d.Yj().optional(),manifest:j,files:k,source:i})},20243:(a,b,c)=>{"use strict";c.d(b,{R:()=>h,appendEvent:()=>i,nextSeq:()=>k,readEvents:()=>j});var d=c(73024),e=c(76760),f=c.n(e),g=c(54287);function h(a,b){return f().join((0,g.FF)(a),"topics",`${b}.events.jsonl`)}async function i(a,b,c){let e=h(a,b);await d.promises.mkdir(f().dirname(e),{recursive:!0}),await d.promises.appendFile(e,JSON.stringify(c)+"\n","utf8")}async function j(a,b){let c,e=h(a,b);try{c=await d.promises.readFile(e,"utf8")}catch(a){var f;if("object"==typeof(f=a)&&null!==f&&"code"in f&&"ENOENT"===f.code)return[];throw a}let g=[];for(let a of c.split(/\r?\n/))if(a.trim())try{g.push(JSON.parse(a))}catch{}return g}async function k(a,b){let c=await j(a,b);return 0===c.length?0:c[c.length-1].seq+1}},20583:(a,b,c)=>{"use strict";c.d(b,{$:()=>i});var d=c(64173);c(17240);var e=c(20483),f=c(91520),g=c(91344);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})}},20938:(a,b,c)=>{"use strict";c.d(b,{GC:()=>l,az:()=>m});var d=c(73024),e=c(76760),f=c.n(e),g=c(73652);let h=f().join((0,g._)(),"pending-mcp-adds.json");async function i(){try{let a=await d.promises.readFile(h,"utf8"),b=JSON.parse(a);if(1!==b.version||!Array.isArray(b.entries))return{version:1,entries:[]};return b}catch{return{version:1,entries:[]}}}async function j(a){await d.promises.mkdir(f().dirname(h),{recursive:!0}),await d.promises.writeFile(h,JSON.stringify(a,null,2)+"\n",{encoding:"utf8",mode:384});try{await d.promises.chmod(h,384)}catch{}}function k(a){let b=Date.now()-2592e6;return{version:1,entries:a.entries.filter(a=>{let c=Date.parse(a.createdAt);return Number.isFinite(c)&&c>b})}}async function l(a){let b=k(await i());b.entries=b.entries.filter(b=>b.requestId!==a.requestId),b.entries.push({...a,createdAt:new Date().toISOString()}),await j(b)}async function m(a){let b=k(await i()),c=b.entries.findIndex(b=>b.requestId===a);if(c<0)return null;let d=b.entries[c];return b.entries.splice(c,1),await j(b),d}},22421:(a,b,c)=>{"use strict";c.d(b,{Bd:()=>p,Ed:()=>o,eJ:()=>q,vT:()=>i,vd:()=>n});var d=c(73024),e=c(76760),f=c.n(e),g=c(77598),h=c.n(g);let i=["utility","research","widget","goal","skill"];function j(a){return f().join(a,".reflex","suggestions.json")}async function k(a){try{let b=await d.promises.readFile(j(a),"utf8"),c=JSON.parse(b);if(1===c.version&&Array.isArray(c.items))return c}catch{}return{version:1,items:[]}}async function l(a,b){let c=j(a);await d.promises.mkdir(f().dirname(c),{recursive:!0}),await d.promises.writeFile(c,JSON.stringify(b,null,2)+"\n","utf8")}async function m(a){return(await k(a)).items}async function n(a){return(await m(a)).filter(a=>"pending"===a.status)}async function o(a,b){let c=await k(a),d=b.title.trim().toLowerCase(),e=c.items.find(a=>a.kind===b.kind&&a.title.trim().toLowerCase()===d&&"pending"===a.status);if(e)return e;let f={id:h().randomBytes(6).toString("hex"),kind:b.kind,title:b.title.trim(),description:b.description.trim(),prompt:b.prompt.trim(),...b.sourceTopicId?{sourceTopicId:b.sourceTopicId}:{},createdAt:new Date().toISOString(),status:"pending"};return c.items.push(f),await l(a,c),f}async function p(a,b,c){let d=await k(a),e=d.items.findIndex(a=>a.id===b);return e<0?null:(d.items[e]={...d.items[e],status:"approved",topicId:c},await l(a,d),d.items[e])}async function q(a,b){let c=await k(a),d=c.items.findIndex(a=>a.id===b);return d<0?null:(c.items[d]={...c.items[d],status:"rejected"},await l(a,c),c.items[d])}},24570:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{l:()=>s,p:()=>r});var e=c(73024),f=c(76760),g=c.n(f),h=c(24576),i=c(17640),j=c(99048),k=c(18542),l=c(74853),m=c(13474),n=a([j,k]);[j,k]=n.then?(await n)():n;let r=[{id:"system:memory-rollup",label:"Memory rollup",trigger:"weekly",run:o},{id:"system:sessions-index",label:"Index sessions for search",trigger:"hourly",run:q}],s={hourly:36e5,daily:864e5,weekly:6048e5};async function o(){let a=await (0,h.listRoots)().catch(()=>[]),b=[];for(let c of a){let a=await p(c).catch(()=>[]);b.push(...a)}if(b.length<4)return{ok:!0,detail:`${b.length} journal entries across all roots — skipping rollup (need ≥4).`};b.sort((a,b)=>a.date<b.date?1:-1);let c=b.slice(0,60),d=["You're summarising the user's last 7 days from their journal entries across every Reflex Space.",`Output STRICT plain text. ≤25 lines. One fact per line, third-person about the user.`,`Cover: recurring themes, mood arc, unresolved threads, notable wins. Quote the user's own phrasing for one or two themes — sparingly. No greetings, no markdown headers, no preamble — straight into the bullets.`,"If the entries don't span 7 days yet, summarise what's there honestly.","","## Journal entries (newest first)",...c.map(a=>{var b,c;return`### ${a.date} \xb7 ${a.rootName} \xb7 ${a.title}
|
|
75
|
-
${b=a.body,c=400,b.length<=400?b:b.slice(0,c)+"…"}`})].join("\n");try{let b=await (0,i.loadSettings)(),e=(await (0,j.quickComplete)(b.assignments.quick,d,{timeoutMs:9e4})??"").trim();if(!e)return{ok:!1,detail:"empty completion"};let f=e.split("\n").map(a=>a.trim()).filter(Boolean).slice(0,25).join("\n");return await (0,k.xP)({scope:"global"},"RECENT","replace",{content:f}),{ok:!0,detail:`rolled up ${c.length} entries from ${a.length} Spaces`}}catch(a){return{ok:!1,detail:a instanceof Error?a.message:String(a)}}}async function p(a){let b,c=g().join((0,m.FF)(a.path),"journal");try{b=(await e.promises.readdir(c)).filter(a=>a.toLowerCase().endsWith(".md"))}catch{return[]}b.sort().reverse(),b=b.slice(0,14);let d=g().basename(a.path)||a.id,f=[];for(let a of b)try{let b=await e.promises.readFile(g().join(c,a),"utf8"),{title:h,date:i,body:j}=function(a){let b=/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/.exec(a);if(!b)return{body:a.trim()};let c=b[1],d=b[2].trim(),e=/^title:\s*(.+)$/m.exec(c)?.[1]?.replace(/^"|"$/g,""),f=/^date:\s*(.+)$/m.exec(c)?.[1]?.replace(/^"|"$/g,"");return{...e?{title:e.trim()}:{},...f?{date:f.trim()}:{},body:d}}(b);f.push({rootName:d,date:i??function(a){let b=/^(\d{4}-\d{2}-\d{2})/.exec(a);return b?b[1]:null}(a)??"",title:h??a,body:j})}catch{}return f}async function q(){try{let a=await (0,l.tH)();return{ok:!0,detail:`scanned ${a.scanned}, upserted ${a.upserted}, removed ${a.removed}`}}catch(a){return{ok:!1,detail:a instanceof Error?a.message:String(a)}}}d()}catch(a){d(a)}})},26380:(a,b,c)=>{"use strict";c.d(b,{createTask:()=>o,deleteTask:()=>s,getTask:()=>q,listTasks:()=>p,updateTask:()=>r});var d=c(73024),e=c(76760),f=c.n(e),g=c(77598),h=c.n(g),i=c(87841),j=c.n(i),k=c(54287),l=c(19319),m=c(51872);let n="task";async function o(a,b){let c=`t-${h().randomBytes(4).toString("hex")}`,e=b.title.normalize("NFKD").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,60)||c,g=new Date().toISOString().slice(0,10),i=`${g}-${e}.md`,j=f().join((0,k.FF)(a),n);await d.promises.mkdir(j,{recursive:!0});let l=await v(j,i),m={id:c,title:b.title.trim(),type:b.type??"feature",status:b.status??"backlog",priority:b.priority??"normal",labels:b.labels??[],assignee:b.assignee??null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),topicId:null,agentRequested:null,worktree:null,links:b.links??{},parent:b.parent??null,pre:b.pre??[],post:b.post??[],attachments:b.attachments??[],relPath:f().relative((0,k.FF)(a),l).split(f().sep).join("/"),body:(b.body??"").trim()};return await u(l,m),m}async function p(a){let b=await (0,l.dj)(a).catch(()=>[]),c=[];for(let d of b){if(d.meta.kind!==n)continue;let b=await t(d.abs,a).catch(()=>null);b&&c.push(b)}return c.sort((a,b)=>a.updatedAt<b.updatedAt?1:-1),c}async function q(a,b){return(await p(a)).find(a=>a.id===b)??null}async function r(a,b,c){let d=await q(a,b);if(!d)return null;let e=f().join((0,k.FF)(a),d.relPath),g={...d,...c,updatedAt:new Date().toISOString()};return await u(e,g),g}async function s(a,b){let c=await q(a,b);if(!c)return!1;let e=f().join((0,k.FF)(a),c.relPath);return await d.promises.rm(e,{force:!0}),!0}async function t(a,b){var c,e,g;let h=await d.promises.readFile(a,"utf8"),i=j()(h),l=i.data,n="string"==typeof l.id?l.id:null,o="string"==typeof l.title?l.title:null;if(!n||!o)return null;let p=f().relative((0,k.FF)(b),a).split(f().sep).join("/");return{id:n,title:o,type:x(l.type,m.ci,"feature"),status:x(l.status,m.Hi,"backlog"),priority:x(l.priority,m.PN,"normal"),labels:Array.isArray(l.labels)?l.labels.map(String):[],assignee:"string"==typeof l.assignee?l.assignee:null,createdAt:"string"==typeof l.createdAt?l.createdAt:new Date().toISOString(),updatedAt:"string"==typeof l.updatedAt?l.updatedAt:new Date().toISOString(),topicId:"string"==typeof l.topicId?l.topicId:null,agentRequested:"string"==typeof l.agentRequested?l.agentRequested:null,worktree:(c=l.worktree)&&"object"==typeof c&&"string"==typeof c.dir&&"string"==typeof c.branch&&"string"==typeof c.baseRef?{dir:c.dir,branch:c.branch,baseRef:c.baseRef}:null,links:(e=l.links)&&"object"==typeof e?{...Array.isArray(e.blocks)?{blocks:e.blocks.map(String)}:{},...Array.isArray(e.blockedBy)?{blockedBy:e.blockedBy.map(String)}:{},...Array.isArray(e.related)?{related:e.related.map(String)}:{}}:{},parent:"string"==typeof l.parent?l.parent:null,pre:y(l.pre),post:y(l.post),attachments:Array.isArray(g=l.attachments)?g.map(a=>{if(!a||"object"!=typeof a)return null;let b=a.kind;return"image"!==b&&"text"!==b&&"file"!==b||"string"!=typeof a.file?null:{kind:b,file:a.file,..."string"==typeof a.caption?{caption:a.caption}:{}}}).filter(a=>!!a):[],relPath:p,body:i.content.trim()}}async function u(a,b){let c={id:b.id,title:b.title,kind:n,type:b.type,status:b.status,priority:b.priority,labels:b.labels,assignee:b.assignee,createdAt:b.createdAt,updatedAt:b.updatedAt,topicId:b.topicId,agentRequested:b.agentRequested,worktree:b.worktree,links:b.links,parent:b.parent,pre:b.pre,post:b.post,attachments:b.attachments},e=b.body.trim(),g=j().stringify(e?e+"\n":"",c);await d.promises.mkdir(f().dirname(a),{recursive:!0}),await d.promises.writeFile(a,g,"utf8")}async function v(a,b){let c=f().extname(b),d=b.slice(0,b.length-c.length),e=f().join(a,b),g=2;for(;await w(e);)e=f().join(a,`${d}-${g}${c}`),g++;return e}async function w(a){try{return await d.promises.stat(a),!0}catch{return!1}}function x(a,b,c){return"string"==typeof a&&b.includes(a)?a:c}function y(a){return Array.isArray(a)?a.map(a=>a&&"object"==typeof a?"workflow"===a.kind&&"string"==typeof a.id?{kind:"workflow",id:a.id}:"chat"===a.kind&&"string"==typeof a.prompt?{kind:"chat",prompt:a.prompt}:null:null).filter(a=>!!a):[]}},27456:(a,b,c)=>{"use strict";c.d(b,{F:()=>g});var d=c(64173);c(17240);var e=c(6912),f=c(91344);function g({className:a,children:b,...c}){return(0,d.jsxs)(e.Root,{"data-slot":"scroll-area",className:(0,f.cn)("relative",a),...c,children:[(0,d.jsx)(e.Viewport,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",children:b}),(0,d.jsx)(h,{}),(0,d.jsx)(e.Corner,{})]})}function h({className:a,orientation:b="vertical",...c}){return(0,d.jsx)(e.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar",orientation:b,className:(0,f.cn)("flex touch-none p-px transition-colors select-none","vertical"===b&&"h-full w-2.5 border-l border-l-transparent","horizontal"===b&&"h-2.5 flex-col border-t border-t-transparent",a),...c,children:(0,d.jsx)(e.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}},28548:(a,b,c)=>{"use strict";c.d(b,{AI:()=>m,PM:()=>l,Qs:()=>o,Y7:()=>k,iP:()=>n});var d=c(73024),e=c(76760),f=c.n(e),g=c(73652),h=c(61495);let i=f().join((0,g._)(),"prompts");function j(a){return f().join(i,`${a}.md`)}function k(a){return j(a)}async function l(a){let b=j(a);try{return await d.promises.readFile(b,"utf8")}catch(a){var c;if(!("object"==typeof(c=a)&&null!==c&&"code"in c&&"ENOENT"===c.code))throw a}return await d.promises.mkdir(i,{recursive:!0}),await d.promises.writeFile(b,h.EE[a],"utf8"),h.EE[a]}async function m(a,b){await d.promises.mkdir(i,{recursive:!0}),await d.promises.writeFile(j(a),b,"utf8")}async function n(a){return await m(a,h.EE[a]),h.EE[a]}function o(a){if(!h._W.includes(a))throw Error(`Unknown template: ${a}`);return a}},30516:(a,b,c)=>{"use strict";c.d(b,{P:()=>m});var d=c(56149);let e=d.Ik({template:d.Yj().default("")}),f=d.Ik({url:d.Yj().url("url must be a valid URL"),method:d.k5(["GET","POST","PUT","PATCH","DELETE"]).default("GET"),headers:d.KC([d.g1(d.Yj(),d.Yj()),d.Yj(),d.Vx()]).optional(),body:d.KC([d.Yj(),d.g1(d.Yj(),d.L5()),d.Vx()]).optional()}),g=d.Ik({url:d.Yj().url("url must be a valid URL")}),h=d.Ik({prompt:d.Yj().min(1,"prompt is required")}),i=d.Ik({kind:d.Yj().min(1).default("note"),title:d.Yj().default(""),body:d.Yj().default("")}),j=d.Ik({utilityId:d.Yj().min(1,"utilityId is required"),utilityScope:d.k5(["global","project"]).default("global"),actionName:d.Yj().min(1,"actionName is required"),args:d.L5().optional()}),k=d.Ik({prompt:d.Yj().min(1,"prompt is required"),provider:d.k5(["gemini","codex"]).optional(),size:d.Yj().optional(),aspectRatio:d.Yj().optional()}),l={"text-template":e,"http-request":f,"web-fetch":g,"ask-agent":h,"kb-write":i,"utility-call":j,"image-generate":k,"image-search":d.Ik({query:d.Yj().min(1,"query is required"),provider:d.k5(["unsplash","pexels","brave"]).optional(),count:d.KC([d.Yj(),d.ai()]).optional()}),notify:d.Ik({body:d.Yj().default(""),text:d.Yj().optional(),title:d.Yj().optional(),link:d.Yj().optional()})};function m(a,b){let c=l[a];return c?c.parse(b):b}},30849:(a,b,c)=>{"use strict";c.d(b,{AppSidebar:()=>d});let d=(0,c(54491).registerClientReference)(function(){throw Error("Attempted to call AppSidebar() from the server but AppSidebar 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/app-sidebar.tsx","AppSidebar")},35616:(a,b,c)=>{Promise.resolve().then(c.bind(c,60633)),Promise.resolve().then(c.bind(c,99668)),Promise.resolve().then(c.bind(c,54225))},35961:(a,b,c)=>{"use strict";c.d(b,{collectExtensions:()=>e});var d=c(8118);async function e(a){let b=await (0,d.listUtilities)(a.rootId?{rootId:a.rootId}:{}).catch(()=>[]),c=[],e=[],f=[],g=[];for(let a of b){let b=a.manifest.extensions;if(!b)continue;let d={utilityId:a.manifest.id,scope:a.scope};for(let a of b.slashCommands??[])c.push({...a,utility:d});for(let a of b.skills??[])e.push({...a,utility:d});b.systemPromptAddendum&&b.systemPromptAddendum.trim()&&f.push({utility:d,content:b.systemPromptAddendum});let h=new Date().toISOString();for(let a of b.workflows??[])g.push({id:a.id,label:a.label,...a.description?{description:a.description}:{},trigger:a.trigger,steps:a.steps.map(a=>({id:a.id,kind:a.kind,label:a.label,params:a.params})),createdAt:h,updatedAt:h})}return{slashCommands:c,skills:e,promptBlocks:f,workflows:g}}},36017:(a,b,c)=>{"use strict";c.d(b,{loadSettings:()=>j,saveSettings:()=>k});var d=c(73024),e=c(76760),f=c.n(e),g=c(78555);let h=(0,c(73652)._)(),i=f().join(h,"settings.json");async function j(){try{let a=await d.promises.readFile(i,"utf8"),b=g.ht.safeParse(JSON.parse(a));if(!b.success)return g.a$;return b.data}catch(b){var a;if("object"==typeof(a=b)&&null!==a&&"code"in a&&"ENOENT"===a.code)return g.a$;throw b}}async function k(a){let b=g.ht.parse(a);await d.promises.mkdir(h,{recursive:!0}),await d.promises.writeFile(i,JSON.stringify(b,null,2)+"\n","utf8")}},36724:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{L:()=>j});var e=c(56942),f=c(3724),g=a([f]);f=(g.then?(await g)():g)[0];let j={"text-template":async a=>"string"==typeof a.template?a.template:"","http-request":async a=>{let b=h(a.url,"url"),c=i(a.method,"GET").toUpperCase(),d=function(a,b){if("string"!=typeof a||!a.trim())return b;try{return JSON.parse(a)}catch{return b}}(a.headers,{}),e=i(a.body,""),f={method:c,headers:d};"GET"!==c&&"HEAD"!==c&&e&&(f.body=e);let g=await fetch(b,f),j=await g.text(),k=g.headers.get("content-type")??"",l=j;if(k.includes("application/json"))try{l=JSON.parse(j)}catch{}if(!g.ok)throw Error(`HTTP ${g.status} ${g.statusText}: ${j.slice(0,200)}`);return l},"web-fetch":async a=>{let b=h(a.url,"url"),c=await fetch(b,{headers:{"User-Agent":"Reflex-Workflow/1.0"}});if(!c.ok)throw Error(`HTTP ${c.status} ${c.statusText}`);return await c.text()},"ask-agent":async(a,b)=>{let c=h(a.prompt,"prompt"),{text:d}=await (0,f.runHeadlessAgent)({rootId:b.rootId,prompt:c,label:`[workflow ${b.workflow.id}] ${b.workflow.label}`});return d},"kb-write":async(a,b)=>{let c=i(a.kind,"note"),d=i(a.title,`Workflow ${b.workflow.label}`),f=i(a.body,""),g=await (0,e.j)({rootPath:b.rootPath,directive:{kind:c,title:d,body:f}});return{kind:g.kind,title:g.title,relPath:g.relPath,absPath:g.absPath}},"image-generate":async(a,b)=>{let d=h(a.prompt,"prompt"),e="codex"===a.provider||"gemini"===a.provider?a.provider:void 0,{generateImage:f}=await Promise.resolve().then(c.bind(c,84579)),g=await f({rootId:b.rootId,prompt:d,...e?{provider:e}:{},..."string"==typeof a.size&&a.size?{size:a.size}:{},..."string"==typeof a.aspectRatio&&a.aspectRatio?{aspectRatio:a.aspectRatio}:{}});return{url:g.urlPath,sha:g.sha,size:g.size,mime:g.mime,provider:g.provider}},"image-search":async a=>{let b,d=h(a.query,"query"),e="pexels"===a.provider||"unsplash"===a.provider||"brave"===a.provider?a.provider:void 0;if("number"==typeof a.count)b=a.count;else if("string"==typeof a.count&&a.count.trim()){let c=parseInt(a.count,10);Number.isFinite(c)&&c>0&&(b=c)}let{searchImages:f}=await Promise.resolve().then(c.bind(c,84579));return{results:await f({query:d,...e?{provider:e}:{},...void 0!==b?{count:b}:{}})}},"utility-call":async(a,b)=>{let d=h(a.utilityId,"utilityId"),e=h(a.actionName,"actionName"),f="project"===a.utilityScope?"project":"global",g=a.args??{};if("string"==typeof g)try{g=g.trim()?JSON.parse(g):{}}catch(a){throw Error(`utility-call: args is not valid JSON: ${a instanceof Error?a.message:String(a)}`)}let{getUtility:i}=await Promise.resolve().then(c.bind(c,8118)),j=await i(f,d,"project"===f?b.rootId:void 0);if(!j)throw Error(`utility-call: ${f}/${d} not installed`);let k=j.manifest.serverActions.find(a=>a.name===e);if(!k)throw Error(`utility-call: ${d} has no serverAction "${e}"`);let{runServerAction:l}=await Promise.all([c.e(9861),c.e(4031)]).then(c.bind(c,49556));return l({utility:j,action:k,args:g,parentCorrelationId:`workflow:${b.workflow.id}`})},notify:async a=>{let b=i(a.body,i(a.text,"")).trim();if(!b)throw Error("notify: body is empty");let{notify:d}=await c.e(1638).then(c.bind(c,71638)),e=await d({body:b,..."string"==typeof a.title&&a.title?{title:a.title}:{},..."string"==typeof a.link&&a.link?{link:a.link}:{}});return{delivered:e.delivered,errors:e.errors}}};function h(a,b){if("string"!=typeof a||!a.trim())throw Error(`Param "${b}" is required (string)`);return a}function i(a,b){return"string"==typeof a?a:b}d()}catch(a){d(a)}})},44427:()=>{},46013:(a,b,c)=>{"use strict";c.d(b,{Separator:()=>g});var d=c(64173);c(17240);var e=c(42572),f=c(91344);function g({className:a,orientation:b="horizontal",decorative:c=!0,...g}){return(0,d.jsx)(e.b,{"data-slot":"separator",decorative:c,orientation:b,className:(0,f.cn)("shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",a),...g})}},49410:(a,b,c)=>{"use strict";c.d(b,{bG:()=>m,hI:()=>q,kA:()=>p});var d=c(73024),e=c(76760),f=c.n(e),g=c(87841),h=c.n(g),i=c(73652);let j=f().join((0,i._)(),"skills");function k(a){return f().join(a,".reflex","skills")}let l=[{id:"deep-research",title:"Deep research",description:"Multi-agent research with citation discipline — facts and synthesis land as cross-linked KB entries.",author:"builtin",scope:"builtin",instructions:`## Skill: deep-research
|
|
73
|
+
${i}`:i;return await r(g,a),{ok:!0,file:b,lines:o(a),cap:f}}let q=await t(b,h.content??"",i);return q?(await r(g,q),{ok:!0,file:b,lines:o(q),cap:f}):{ok:!1,file:b,lines:h.lines,cap:f,error:"compact-failed"}}async function t(a,b,c){let d=k.h0[a];try{let e=(await (0,i.loadSettings)()).assignments.quick,f=[`You compress a Reflex memory file. The file is ${a}.md — ${k.lh[a]}.`,`Hard rule: the OUTPUT MUST BE ≤${d} lines.`,"Merge the new entry into the existing content. Keep every distinct fact. Drop duplicates and obsolete entries. Tighten wording but DO NOT invent facts. One line per fact. Plain text, no markdown headers, no surrounding quotes, no commentary — just the new file contents.\n\n## Existing file",b.trim()||"(empty)","\n## New entry to merge in",c.trim()].join("\n"),g=await (0,j.quickComplete)(e,f,{timeoutMs:45e3}),h=(function(a){let b=/^```(?:\w+)?\n([\s\S]*?)\n```\s*$/.exec(a.trim());return b?b[1]:a})(g).trim();if(!h)return null;return h.split("\n").map(a=>a.trim()).filter(Boolean).slice(0,d).join("\n")}catch{return null}}j=(m.then?(await m)():m)[0],d()}catch(a){d(a)}})},3043:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{w:()=>j});var e=c(24576),f=c(13295),g=c(24058),h=c(24570),i=a([g,h]);[g,h]=i.then?(await i)():i;let p={manual:null,hourly:36e5,daily:864e5,weekly:6048e5};function j(){if(globalThis.__reflexWorkflowScheduler)return;let a={running:!1,lastFired:new Map,timer:setInterval(()=>{k(a)},6e4)};setTimeout(()=>void k(a),5e3).unref?.(),a.timer.unref?.(),globalThis.__reflexWorkflowScheduler=a}async function k(a){if(!a.running){a.running=!0;try{for(let b of(await (0,e.listRoots)().catch(()=>[])))try{await m(a,b)}catch(a){console.error(`[scheduler] root ${b.id} failed: ${a instanceof Error?a.message:String(a)}`)}await l(a);try{let{compactDispatcherIfIdle:a}=await c.e(6142).then(c.bind(c,26142));await a()}catch(a){console.error(`[scheduler] dispatcher compaction failed: ${a instanceof Error?a.message:String(a)}`)}}finally{a.running=!1}}}async function l(a){for(let b of h.p){let c=h.l[b.trigger];if(!c)continue;let d=`__system__::${b.id}`,e=a.lastFired.get(d)??null;if(!(null!==e&&Date.now()-e<c)){a.lastFired.set(d,Date.now());try{let a=await b.run();!a.ok&&a.detail&&console.warn(`[scheduler] ${b.id} returned non-ok: ${a.detail}`)}catch(a){console.error(`[scheduler] ${b.id} failed: ${a instanceof Error?a.message:String(a)}`)}}}}async function m(a,b){let c=await (0,f.listWorkflows)(b.path).catch(()=>[]),d=await o(b.id);for(let f of function(a,b){let c=new Set(a.map(a=>a.id));return[...a,...b.filter(a=>!c.has(a.id))]}(c,d)){var e,h;let c=p[f.trigger];if(!c||!1===f.enabled)continue;let d=(e=b.id,h=f.id,`${e}::${h}`),i=a.lastFired.get(d)??await n(b.path,f.id);if(!(null!==i&&Date.now()-i<c)){a.lastFired.set(d,Date.now());try{await (0,g.runWorkflow)(b.id,f.id)}catch(a){console.error(`[scheduler] ${b.id}/${f.id} failed: ${a instanceof Error?a.message:String(a)}`)}}}}async function n(a,b){let c=await (0,f.v)(a,b,1).catch(()=>[]);if(0===c.length)return null;let d=Date.parse(c[0].startedAt);return Number.isFinite(d)?d:null}async function o(a){try{let{collectExtensions:b}=await Promise.resolve().then(c.bind(c,14952));return(await b({rootId:a})).workflows??[]}catch{return[]}}d()}catch(a){d(a)}})},3724:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{runHeadlessAgent:()=>l});var e=c(93554),f=c(51021),g=c(20243),h=c(5492),i=c(36017),j=c(53905),k=a([e,f]);async function l(a){let b=await (0,j.getRoot)(a.rootId);if(!b)throw Error(`runHeadlessAgent: root not found: ${a.rootId}`);let c=await (0,i.loadSettings)(),d=c.assignments.chat,k=await (0,h.createTopic)({root:b.path,firstMessage:a.label??"[headless agent run]",harness:a.harness??d.harness,model:a.model??d.model,language:a.language??c.language}),l=!1;try{let c=await (0,f.startOrchestratorTurn)({rootId:a.rootId,topicId:k.meta.id,message:a.prompt,attachments:a.attachments??[],...a.harness?{harness:a.harness}:{},...a.model?{model:a.model}:{}});if("error"in c)throw Error(c.error);let d=Date.now()+(a.timeoutMs??3e5);for(await m(400);Date.now()<d&&e.z.isActive(k.meta.id);)await m(400);e.z.isActive(k.meta.id)&&(l=!0),await m(400);let h=await (0,g.readEvents)(b.path,k.meta.id),i=h.filter(a=>"assistant-delta"===a.type).map(a=>a.text).join("").trim();if(!i){let b=h.filter(a=>"error"===a.type).map(a=>a.message).filter(Boolean);if(b.length>0)throw Error(`Agent finished with errors: ${b.slice(0,3).join(" \xb7 ")}`);let c=h.filter(a=>"system"===a.type).map(a=>a.text).filter(Boolean);if(c.length>0)return{text:c.join("\n"),topicId:k.meta.id,timedOut:l};if(l)throw Error(`Agent did not respond within ${Math.round((a.timeoutMs??3e5)/1e3)}s (timeout)`);throw Error("Agent finished without producing any text — perhaps no chat engine is configured in Settings.")}return{text:i,topicId:k.meta.id,timedOut:l}}finally{try{await e.z.stopTopic(k.meta.id)}catch{}try{await (0,h.do)(b.path,k.meta.id)}catch{}}}function m(a){return new Promise(b=>setTimeout(b,a))}[e,f]=k.then?(await k)():k,d()}catch(a){d(a)}})},3890:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{DW:()=>u,u7:()=>r,uX:()=>v,zm:()=>s});var e=c(73745);c(66493);var f=c(76760),g=c.n(f),h=c(73024),i=c(53905),j=c(19319),k=c(5492),l=c(20243),m=c(8118),n=c(1947),o=c(81483),p=c(63781),q=a([n]);async function r(a){try{let b=await (0,i.getRoot)(a);if(!b)return{ok:!1,error:"Root not found"};let c=await (0,j.dj)(b.path);return{ok:!0,sections:function(a){let b=[],c=new Map;for(let e of a){let a=e.rel.split("/");if(1===a.length){var d;b.push({rel:(d=e).rel,label:d.meta.title??d.rel,isDir:!1,fileRel:d.rel});continue}let f=a[0],g=c.get(f)??[];g.push(e),c.set(f,g)}let e=[];for(let a of(b.sort(w),e.push(...b),[...c.keys()].sort())){let b=(c.get(a)??[]).map(a=>{let b=a.rel.split("/").slice(1).join("/");return{rel:a.rel,label:a.meta.title??g().basename(b),isDir:!1,fileRel:a.rel}}).sort((a,b)=>"INDEX.md"===g().basename(a.rel)?-1:"INDEX.md"===g().basename(b.rel)?1:a.label.localeCompare(b.label)),d=b.find(a=>"INDEX.md"===g().basename(a.rel)),f=d?.label??a;e.push({rel:`${a}/`,label:f,isDir:!0,children:b})}return e}(c)}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function s(a){try{let b=await (0,i.getRoot)(a);if(!b)return{ok:!1,error:"Root not found"};let c=(await (0,k.hk)(b.path)).filter(a=>!a.meta.helperFor&&!a.meta.taskId),d=await t(b.path,c);return{ok:!0,topics:d.map(a=>({id:a.meta.id,title:a.meta.title,updatedAt:a.meta.updatedAt}))}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function t(a,b){let c=await Promise.all(b.map(async b=>{if(b.preview.trim())return!0;try{return(await h.promises.stat((0,l.R)(a,b.meta.id))).size>0}catch{return!1}}));return b.filter((a,b)=>c[b])}async function u(a){try{let b=await (0,i.getRoot)(a);if(!b)return{ok:!1,error:"Root not found"};let c=await (0,m.listUtilities)({rootId:a,scope:"project"}),d=await (0,k.hk)(b.path),e=new Map;for(let a of d){let b=a.meta.helperFor;if(!b)continue;let c=e.get(b)??[];c.push(a),e.set(b,c)}let f=[];for(let a of c){let c=e.get(a.manifest.id)??[],d=await t(b.path,c);f.push({id:a.manifest.id,name:a.manifest.name,scope:a.scope,...a.rootId?{rootId:a.rootId}:{},...a.manifest.icon?{icon:a.manifest.icon}:{},threads:d.map(a=>({id:a.meta.id,title:a.meta.title,updatedAt:a.meta.updatedAt}))})}return f.sort((a,b)=>a.name.localeCompare(b.name)),{ok:!0,utilities:f}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function v(a){try{let b=await (0,i.getRoot)(a);if(!b)return{ok:!1,error:"Root not found"};let c=await (0,n.ab)({scope:"project",rootPath:b.path}),d=o.cs.map(a=>({file:a,description:o.lh[a],lines:c[a].lines,empty:!c[a].content}));return{ok:!0,files:d}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}function w(a,b){let c=g().basename(a.rel),d=g().basename(b.rel);return"INDEX.md"===c?-1:"INDEX.md"===d?1:a.label.localeCompare(b.label)}n=(q.then?(await q)():q)[0],(0,p.D)([r,s,u,v]),(0,e.A)(r,"40d0173311dfc513dc124a51f600030ab3d05c1d23",null),(0,e.A)(s,"40ecfcbdfa2479ad3ea225334a55fba56da16275e7",null),(0,e.A)(u,"40b91737fcb2edb010b22caf5f39d3b7d7fcf836a1",null),(0,e.A)(v,"40898c25eb61dcf2b3360001847bb2a4197e4b2759",null),d()}catch(a){d(a)}})},5053:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,53869,23)),Promise.resolve().then(c.t.bind(c,85684,23)),Promise.resolve().then(c.t.bind(c,89338,23)),Promise.resolve().then(c.t.bind(c,65597,23)),Promise.resolve().then(c.t.bind(c,41833,23)),Promise.resolve().then(c.t.bind(c,63921,23)),Promise.resolve().then(c.t.bind(c,25211,23)),Promise.resolve().then(c.t.bind(c,19908,23)),Promise.resolve().then(c.bind(c,49289))},5492:(a,b,c)=>{"use strict";c.d(b,{PF:()=>r,_9:()=>t,createTopic:()=>u,dL:()=>v,do:()=>w,getTopic:()=>p,hk:()=>o,o0:()=>s});var d=c(73024),e=c(76760),f=c.n(e),g=c(77598),h=c.n(g),i=c(87841),j=c.n(i),k=c(54287);function l(a){return f().join((0,k.FF)(a),"topics")}function m(a,b){return f().join(l(a),`${n(b)}.md`)}function n(a){return a.replace(/[^A-Za-z0-9_-]/g,"")}async function o(a){let b,c=l(a);try{b=await d.promises.readdir(c,{withFileTypes:!0})}catch{return[]}let e=[];for(let a of b){if(!a.isFile()||!a.name.toLowerCase().endsWith(".md"))continue;let b=f().join(c,a.name);try{let a=await d.promises.readFile(b,"utf8"),c=j()(a),f=c.data;if(!f.id||!f.createdAt)continue;let g=c.content.replace(/^##\s+(user|assistant)\s*$/gim,"").trim().slice(0,160);e.push({meta:{id:f.id,title:f.title??"Untitled",createdAt:f.createdAt,updatedAt:f.updatedAt??f.createdAt,harness:f.harness,model:f.model,language:f.language,...f.goal?{goal:f.goal}:{},...f.goalStatus?{goalStatus:f.goalStatus}:{},..."number"==typeof f.goalIterations?{goalIterations:f.goalIterations}:{},...f.helperFor?{helperFor:f.helperFor}:{},...f.taskId?{taskId:f.taskId}:{}},preview:g,abs:b})}catch{}}return e.sort((a,b)=>Date.parse(b.meta.updatedAt)-Date.parse(a.meta.updatedAt)),e}async function p(a,b){let c,e=m(a,b);try{c=await d.promises.readFile(e,"utf8")}catch{return null}let f=j()(c),g=f.data;return g.id?{meta:{id:g.id,title:g.title??"Untitled",createdAt:g.createdAt??new Date().toISOString(),updatedAt:g.updatedAt??g.createdAt??new Date().toISOString(),harness:g.harness,model:g.model,language:g.language,...g.goal?{goal:g.goal}:{},...g.goalStatus?{goalStatus:g.goalStatus}:{},..."number"==typeof g.goalIterations?{goalIterations:g.goalIterations}:{},...g.helperFor?{helperFor:g.helperFor}:{},...g.taskId?{taskId:g.taskId}:{},...g.dispatchedFromDispatcher?{dispatchedFromDispatcher:!0}:{}},messages:function(a){let b=[],c=a.split(/\r?\n/),d=null;for(let a of c){let c=/^##\s+(user|assistant)\s*$/i.exec(a);if(c){d&&b.push({...d,body:d.body.trimEnd()}),d={role:c[1].toLowerCase(),body:""};continue}d&&(d.body+=a+"\n")}return d&&b.push({...d,body:d.body.trimEnd()}),b}(f.content),abs:e}:null}async function q(a,b,c){let e=m(a,b),f=await d.promises.readFile(e,"utf8"),g=j()(f),h={...g.data,...c,updatedAt:new Date().toISOString()};for(let a of Object.keys(h))void 0===h[a]&&delete h[a];await d.promises.writeFile(e,j().stringify(g.content,h),"utf8")}async function r(a,b,c){await q(a,b,{goal:c,goalStatus:"active",goalIterations:0})}async function s(a,b){let c=m(a,b),e=await d.promises.readFile(c,"utf8"),f=j()(e).data,g=("number"==typeof f.goalIterations?f.goalIterations:0)+1;return await q(a,b,{goalIterations:g}),g}async function t(a,b,c="abandoned"){await q(a,b,{goalStatus:c})}async function u(a){let b=function(){let a=new Date().toISOString().slice(0,10),b=h().randomBytes(4).toString("hex");return`${a}-${b}`}(),c=new Date().toISOString(),e={id:b,title:function(a){let b=a.trim().split(/\r?\n/)[0]??"Untitled";return b.length>80?b.slice(0,77)+"…":b}(a.firstMessage),createdAt:c,updatedAt:c,...a.harness?{harness:a.harness}:{},...a.model?{model:a.model}:{},...a.language?{language:a.language}:{},...a.helperFor?{helperFor:a.helperFor}:{},...a.taskId?{taskId:a.taskId}:{},...a.dispatchedFromDispatcher?{dispatchedFromDispatcher:!0}:{}};return await d.promises.mkdir(l(a.root),{recursive:!0}),await d.promises.writeFile(m(a.root,b),y(e,""),"utf8"),{meta:e,messages:[],abs:m(a.root,b)}}async function v(a,b,c){let e=await p(a,b);if(!e)throw Error(`Topic not found: ${b}`);e.meta.title=c,e.meta.updatedAt=new Date().toISOString();let f=e.messages.map(a=>`## ${a.role}
|
|
74
|
+
${a.body}`).join("\n\n")+"\n";await d.promises.writeFile(m(a,b),y(e.meta,f),"utf8")}async function w(a,b){let c=n(b);if(!c)throw Error(`Invalid topic id: ${b}`);let d=m(a,c),e=f().join(l(a),`${c}.events.jsonl`);return{removedMd:await x(d),removedEvents:await x(e)}}async function x(a){try{return await d.promises.unlink(a),!0}catch(a){if("object"==typeof a&&null!==a&&"code"in a&&"ENOENT"===a.code)return!1;throw a}}function y(a,b){return j().stringify(b,a)}},6240:(a,b,c)=>{Promise.resolve().then(c.bind(c,30849)),Promise.resolve().then(c.bind(c,95422)),Promise.resolve().then(c.bind(c,11935))},8118:(a,b,c)=>{"use strict";c.d(b,{Od:()=>m,gd:()=>s,getUtility:()=>r,jc:()=>u,listUtilities:()=>n});var d=c(73024),e=c(76760),f=c.n(e),g=c(53905),h=c(73652),i=c(54287),j=c(20050);let k=f().join((0,h._)(),"utilities");function l(a){return f().join((0,i.FF)(a),"utilities")}function m(a,b,c){if("global"===a)return f().join(k,b);if(!c)throw Error("project-scoped utility requires rootPath");return f().join(l(c),b)}async function n(a={}){let b=[];if(a.scope&&"global"!==a.scope||b.push(...await o("global",k)),!a.scope||"project"===a.scope)for(let c of a.rootId?await (0,g.getRoot)(a.rootId).then(a=>a?[a]:[]).catch(()=>[]):await (0,g.listRoots)().catch(()=>[])){let a=l(c.path);b.push(...(await o("project",a,c.id)).map(a=>({...a,rootId:c.id})))}return b}async function o(a,b,c){let e;try{e=await d.promises.readdir(b,{withFileTypes:!0})}catch{return[]}let g=[];for(let d of e){if(!d.isDirectory())continue;let e=f().join(b,d.name),h=await p(e);h&&g.push({scope:a,...c?{rootId:c}:{},dir:e,manifest:h,bundleAvailable:await q(f().join(e,"bundle.js"))})}return g}async function p(a){try{let b=await d.promises.readFile(f().join(a,"manifest.json"),"utf8"),c=j.pL.safeParse(JSON.parse(b));return c.success?c.data:null}catch{return null}}async function q(a){try{return await d.promises.access(a),!0}catch{return!1}}async function r(a,b,c){let d,e;if("global"===a)d=k;else{if(!c)return null;let a=await (0,g.getRoot)(c).catch(()=>null);if(!a)return null;d=l(a.path),e=a.id}let h=f().join(d,b),i=await p(h);return i?{scope:a,...e?{rootId:e}:{},dir:h,manifest:i,bundleAvailable:await q(f().join(h,"bundle.js"))}:null}async function s(a){let b;if(a.manifest.id!==a.manifest.id.toLowerCase())throw Error("manifest.id must be lowercase kebab-case");if("project"===a.scope){if(!a.rootId)throw Error("project-scoped install requires rootId");let c=await (0,g.getRoot)(a.rootId);if(!c)throw Error(`unknown rootId: ${a.rootId}`);b=c.path}let c=m(a.scope,a.manifest.id,b);for(let[e,g]of(await d.promises.mkdir(c,{recursive:!0}),await d.promises.mkdir(f().join(c,"data"),{recursive:!0}),Object.entries(a.files))){if("manifest.json"===e)continue;let c=function(a,b,c,d){let e=m(a,b,d),g=f().resolve(e,c),h=f().relative(e,g);if(h.startsWith("..")||f().isAbsolute(h))throw Error(`refused path outside utility dir: ${c}`);return g}(a.scope,a.manifest.id,e,b);await d.promises.mkdir(f().dirname(c),{recursive:!0}),await d.promises.writeFile(c,g,"utf8")}let e={...a.manifest,source:a.source,serverActions:function(a,b){let c=new Map(a.map(a=>[a.name,a]));for(let a of b){let b=/^actions\/([^/_][^/]*)\.ts$/.exec(a);if(!b)continue;let d=b[1];/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(d)&&(c.has(d)||c.set(d,{name:d,entry:a,timeoutMs:3e4}))}return[...c.values()]}(a.manifest.serverActions,Object.keys(a.files))};if(await d.promises.writeFile(f().join(c,"manifest.json"),JSON.stringify(e,null,2)+"\n","utf8"),"project"===a.scope&&a.rootId&&b&&e.card)try{await t(b,a.scope,e)}catch(a){console.error("[utility install] card seed failed:",a)}return{scope:a.scope,...a.rootId?{rootId:a.rootId}:{},dir:c,manifest:e,bundleAvailable:!1}}async function t(a,b,d){if(!d.card)return;let{buildRecord:e,readLayout:f,reconcileLayout:g,writeLayout:h,writeWidget:i,listWidgets:j}=await Promise.resolve().then(c.bind(c,69509)),{SYSTEM_WIDGET_IDS:k}=await Promise.resolve().then(c.bind(c,1405)),l=`utility:${d.id}`,m=e({id:l,title:d.card.title??d.name,...d.card.description?{description:d.card.description}:{},...d.card.action&&d.card.refresh?{refresh:d.card.refresh}:{},payload:{kind:"utility-card",data:{utilityId:d.id,utilityScope:b,inner:{kind:d.card.kind,data:d.card.data,...d.card.title?{title:d.card.title}:{},...d.card.description?{description:d.card.description}:{}}}}});await i(a,m);let n=await f(a);n.order.includes(l)||n.hidden.includes(l)||(n.hidden=[...n.hidden,l]);let o=g(n,(await j(a)).map(a=>a.id),k);await h(a,o)}async function u(a,b,c){let e;if("project"===a){if(!c)throw Error("project-scoped remove requires rootId");let a=await (0,g.getRoot)(c);if(!a)return;e=a.path}let f=m(a,b,e);await d.promises.rm(f,{recursive:!0,force:!0})}},9491:(a,b,c)=>{"use strict";c.d(b,{AppSidebar:()=>N});var d=c(64173),e=c(17240),f=c(1056),g=c.n(f),h=c(87671),i=c(44052),j=c(71813),k=c(69552),l=c(61636),m=c(15666),n=c(58405),o=c(58507),p=c(98463),q=c(68669),r=c(62261),s=c(53186),t=c(51348),u=c(97338),v=c(86745),w=c(88724),x=c(27456),y=c(46013),z=c(20583),A=c(3265);let B=(0,A.createServerReference)("40d0173311dfc513dc124a51f600030ab3d05c1d23",A.callServer,void 0,A.findSourceMapURL,"loadKbSectionsAction"),C=(0,A.createServerReference)("40ecfcbdfa2479ad3ea225334a55fba56da16275e7",A.callServer,void 0,A.findSourceMapURL,"loadTopicsAction"),D=(0,A.createServerReference)("40898c25eb61dcf2b3360001847bb2a4197e4b2759",A.callServer,void 0,A.findSourceMapURL,"loadSidebarMemoryAction"),E=(0,A.createServerReference)("40b91737fcb2edb010b22caf5f39d3b7d7fcf836a1",A.callServer,void 0,A.findSourceMapURL,"loadSidebarUtilitiesAction"),F=(0,A.createServerReference)("0040ef250b316a7df1d400c5f6e7aa35218c5b98b9",A.callServer,void 0,A.findSourceMapURL,"listRootsAction"),G=(0,A.createServerReference)("403f7df439429657ddd038d5211bcde263490efa1a",A.callServer,void 0,A.findSourceMapURL,"listAgentsAction");var H=c(97162),I=c(29370),J=c(64527),K=c(65266),L=c(10082),M=c(89339);function N({initialRoots:a}){let b=(0,h.usePathname)(),c=(0,j.c)("app"),[f,i]=(0,e.useState)(a),n=(0,e.useCallback)(async()=>{let a=await F();a.ok&&i(a.entries)},[]);return((0,w.S9)(w.Zi.rootsChanged,n),b?.startsWith("/share/")||"/share"===b)?null:(0,d.jsxs)("aside",{className:"w-72 shrink-0 border-r bg-muted/30 flex flex-col",children:[(0,d.jsxs)("div",{className:"px-4 py-4 flex items-center gap-2 border-b",children:[(0,d.jsx)("span",{className:"reflex-gradient inline-flex h-7 w-7 items-center justify-center rounded-lg text-white shadow-sm",children:(0,d.jsx)(k.A,{className:"h-4 w-4"})}),(0,d.jsxs)("div",{className:"leading-tight",children:[(0,d.jsx)(g(),{href:"/",className:"text-sm font-semibold tracking-tight hover:underline",children:"Reflex"}),(0,d.jsx)("div",{className:"text-[10px] uppercase tracking-wider text-muted-foreground",children:"knowledge base"})]})]}),(0,d.jsx)(x.F,{className:"flex-1",children:(0,d.jsxs)("nav",{className:"px-2 pt-3 pb-6",children:[(0,d.jsx)("div",{className:"px-2 mb-1 text-[10px] uppercase tracking-wider text-muted-foreground",children:c("sidebar.spaces")}),0===f.length?(0,d.jsx)("div",{className:"px-2 py-3 text-xs text-muted-foreground",children:c("sidebar.empty")}):(0,d.jsx)("ul",{className:"space-y-0.5",children:f.map(a=>(0,d.jsx)(O,{root:a,active:b?.startsWith(`/roots/${a.id}`)??!1},a.id))}),(0,d.jsx)("div",{className:"mt-2 px-2",children:(0,d.jsx)(z.$,{asChild:!0,variant:"ghost",size:"sm",className:"h-7 w-full justify-start text-xs",children:(0,d.jsxs)(g(),{href:"/roots/new",children:[(0,d.jsx)(l.A,{className:"mr-1 h-3.5 w-3.5"})," ",c("sidebar.addSpace")]})})})]})}),(0,d.jsx)(y.Separator,{}),(0,d.jsxs)("div",{className:"px-2 py-2 space-y-0.5",children:[(0,d.jsx)(z.$,{asChild:!0,variant:"/utilities"===b||b?.startsWith("/utilities/")?"secondary":"ghost",size:"sm",className:"w-full justify-start",children:(0,d.jsxs)(g(),{href:"/utilities",children:[(0,d.jsx)(H.A,{className:"mr-2 h-4 w-4"})," ",c("sidebar.utilities")]})}),(0,d.jsx)(z.$,{asChild:!0,variant:"/audit"===b?"secondary":"ghost",size:"sm",className:"w-full justify-start",children:(0,d.jsxs)(g(),{href:"/audit",children:[(0,d.jsx)(I.A,{className:"mr-2 h-4 w-4"})," ",c("sidebar.audit")]})}),(0,d.jsx)(z.$,{asChild:!0,variant:"/settings"===b?"secondary":"ghost",size:"sm",className:"w-full justify-start",children:(0,d.jsxs)(g(),{href:"/settings",children:[(0,d.jsx)(m.A,{className:"mr-2 h-4 w-4"})," Settings"]})})]})]})}function O({root:a,active:b}){let c=(0,j.c)("app"),[f,i]=(0,e.useState)(b),[k,l]=(0,e.useState)(!1),[m,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(!1),[x,y]=(0,e.useState)(!1),[z,A]=(0,e.useState)(!1),[F,I]=(0,e.useState)(null),[L,M]=(0,e.useState)(null),[N,O]=(0,e.useState)(null),[Q,R]=(0,e.useState)(null),[U,V]=(0,e.useState)(null),[W,Y]=(0,e.useState)(!1),[Z,aa]=(0,e.useState)(!1),[ab,ac]=(0,e.useState)(!1),[ad,ae]=(0,e.useState)(!1),[af,ag]=(0,e.useState)(!1),ah=(0,h.usePathname)(),ai=(0,e.useCallback)(async()=>{Y(!0);let b=await B(a.id);Y(!1),b.ok?I(b.sections):I([])},[a.id]),aj=(0,e.useCallback)(async()=>{ac(!0);let b=await C(a.id);ac(!1),b.ok?O(b.topics):O([])},[a.id]),ak=(0,e.useCallback)(async()=>{ag(!0);let b=await G({rootId:a.id});ag(!1),b.ok?V(b.agents):V([])},[a.id]),al=(0,e.useCallback)(async()=>{aa(!0);let b=await D(a.id);aa(!1),b.ok?M(b.files):M([])},[a.id]),am=(0,e.useCallback)(async()=>{ae(!0);let b=await E(a.id);ae(!1),b.ok?R(b.utilities):R([])},[a.id]);(0,w.S9)(w.Zi.kbChanged(a.id),()=>{k?ai():I(null)}),(0,w.S9)(w.Zi.topicsChanged(a.id),()=>{u?aj():O(null),z?ak():V(null),x?am():R(null)});let an=async()=>{let a=!k;l(a),a&&null===F&&!W&&await ai()},ao=async()=>{let a=!m;t(a),a&&null===L&&!Z&&await al()},ap=async()=>{let a=!u;v(a),a&&null===N&&!ab&&await aj()},aq=async()=>{let a=!x;y(a),a&&null===Q&&!ad&&await am()},ar=async()=>{let a=!z;A(a),a&&null===U&&!af&&await ak()},as=function(a){let b=a.split("/").filter(Boolean);return b[b.length-1]??a}(a.path);return(0,d.jsxs)("li",{children:[(0,d.jsxs)("div",{className:"flex items-center group",children:[(0,d.jsx)("button",{type:"button",onClick:()=>i(a=>!a),className:"h-6 w-6 flex items-center justify-center text-muted-foreground hover:text-foreground shrink-0","aria-label":c(f?"sidebar.collapse":"sidebar.expand"),children:f?(0,d.jsx)(n.A,{className:"h-3.5 w-3.5"}):(0,d.jsx)(o.A,{className:"h-3.5 w-3.5"})}),(0,d.jsxs)(g(),{href:`/roots/${a.id}`,className:`flex-1 min-w-0 flex items-center gap-2 px-2 py-1 rounded-md text-sm hover:bg-accent ${b?"bg-accent":""}`,children:[(0,d.jsx)(p.A,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:as})]})]}),f&&(0,d.jsxs)("ul",{className:"ml-5 mt-0.5 space-y-0.5 border-l pl-1",children:[(0,d.jsxs)("li",{children:[(0,d.jsxs)("button",{type:"button",onClick:an,className:"w-full flex items-center gap-1 px-2 py-1 rounded-md text-xs text-muted-foreground hover:bg-accent hover:text-foreground",children:[k?(0,d.jsx)(n.A,{className:"h-3 w-3 shrink-0"}):(0,d.jsx)(o.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)(q.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:c("sidebar.kb")}),W&&(0,d.jsx)(r.A,{className:"ml-auto h-3 w-3 animate-spin shrink-0"})]}),k&&null!==F&&(0,d.jsx)(T,{rootId:a.id,sections:F,pathname:ah})]}),(0,d.jsxs)("li",{children:[(0,d.jsxs)("button",{type:"button",onClick:ao,className:"w-full flex items-center gap-1 px-2 py-1 rounded-md text-xs text-muted-foreground hover:bg-accent hover:text-foreground",children:[m?(0,d.jsx)(n.A,{className:"h-3 w-3 shrink-0"}):(0,d.jsx)(o.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)(J.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:c("sidebar.memory")}),Z&&(0,d.jsx)(r.A,{className:"ml-auto h-3 w-3 animate-spin shrink-0"})]}),m&&null!==L&&(0,d.jsx)($,{rootId:a.id,memory:L,pathname:ah})]}),(0,d.jsxs)("li",{children:[(0,d.jsxs)("button",{type:"button",onClick:ap,className:"w-full flex items-center gap-1 px-2 py-1 rounded-md text-xs text-muted-foreground hover:bg-accent hover:text-foreground",children:[u?(0,d.jsx)(n.A,{className:"h-3 w-3 shrink-0"}):(0,d.jsx)(o.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)(s.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:c("sidebar.topics")}),ab&&(0,d.jsx)(r.A,{className:"ml-auto h-3 w-3 animate-spin shrink-0"}),null!==N&&(0,d.jsx)("span",{className:"ml-auto text-[10px] text-muted-foreground",children:N.length})]}),u&&null!==N&&(0,d.jsx)(X,{rootId:a.id,topics:N,pathname:ah})]}),(0,d.jsxs)("li",{children:[(0,d.jsxs)("button",{type:"button",onClick:aq,className:"w-full flex items-center gap-1 px-2 py-1 rounded-md text-xs text-muted-foreground hover:bg-accent hover:text-foreground",children:[x?(0,d.jsx)(n.A,{className:"h-3 w-3 shrink-0"}):(0,d.jsx)(o.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)(H.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:c("sidebar.utilities")}),ad&&(0,d.jsx)(r.A,{className:"ml-auto h-3 w-3 animate-spin shrink-0"}),null!==Q&&!ad&&(0,d.jsx)("span",{className:"ml-auto text-[10px] text-muted-foreground",children:Q.length})]}),x&&null!==Q&&(0,d.jsx)(_,{rootId:a.id,utilities:Q,pathname:ah})]}),(0,d.jsxs)("li",{children:[(0,d.jsxs)("button",{type:"button",onClick:ar,className:"w-full flex items-center gap-1 px-2 py-1 rounded-md text-xs text-muted-foreground hover:bg-accent hover:text-foreground",children:[z?(0,d.jsx)(n.A,{className:"h-3 w-3 shrink-0"}):(0,d.jsx)(o.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)(K.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:c("sidebar.agents")}),af&&(0,d.jsx)(r.A,{className:"ml-auto h-3 w-3 animate-spin shrink-0"}),null!==U&&!af&&(0,d.jsxs)("span",{className:"ml-auto text-[10px] text-muted-foreground",children:[U.filter(a=>S(a.status)).length,"/",U.length]})]}),z&&null!==U&&(0,d.jsx)(P,{agents:U,pathname:ah})]})]})]})}function P({agents:a,pathname:b}){if(0===a.length)return(0,d.jsx)(Q,{});let c=new Map;for(let b of a){let a=b.parentId,d=c.get(a)??[];d.push(b),c.set(a,d)}let e=c.get(void 0)??[];return(0,d.jsx)("ul",{className:"ml-4 mt-0.5 space-y-0.5 border-l pl-1",children:e.map(a=>(0,d.jsx)(R,{agent:a,byParent:c,pathname:b,depth:0},a.id))})}function Q(){let a=(0,j.c)("app");return(0,d.jsx)("div",{className:"ml-4 px-3 py-1 text-[11px] italic text-muted-foreground",children:a("sidebar.noAgents")})}function R({agent:a,byParent:b,pathname:c,depth:e}){let f=b.get(a.id)??[],h=`/agents/${a.id}`,i=c===h;return(0,d.jsxs)("li",{children:[(0,d.jsxs)(g(),{href:h,className:`flex items-center gap-1 px-2 py-1 text-[12px] rounded hover:bg-accent ${i?"bg-accent":""}`,style:{paddingLeft:8*e+4},children:[S(a.status)?(0,d.jsx)(L.A,{className:"h-3 w-3 text-emerald-600 shrink-0 animate-pulse"}):(0,d.jsx)(K.A,{className:"h-3 w-3 text-muted-foreground shrink-0"}),(0,d.jsx)("span",{className:"truncate flex-1",children:a.label}),(0,d.jsx)("span",{className:"font-mono text-[10px] text-muted-foreground shrink-0",title:`${a.harness} \xb7 ${a.model}`,children:"claude-code"===a.harness?"claude":"ollama"===a.harness?"ollama":"codex"})]}),f.length>0&&(0,d.jsx)("ul",{className:"space-y-0.5",children:f.map(a=>(0,d.jsx)(R,{agent:a,byParent:b,pathname:c,depth:e+1},a.id))})]})}function S(a){return"starting"===a||"running"===a}function T({rootId:a,sections:b,pathname:c}){return 0===b.length?(0,d.jsx)(U,{}):(0,d.jsx)("ul",{className:"ml-4 mt-0.5 space-y-0.5 border-l pl-1",children:b.map(b=>b.isDir?(0,d.jsx)(V,{rootId:a,section:b,pathname:c},b.rel):(0,d.jsx)("li",{children:(0,d.jsx)(W,{rootId:a,section:b,pathname:c})},b.rel))})}function U(){let a=(0,j.c)("app");return(0,d.jsx)("div",{className:"px-3 py-1 text-[11px] italic text-muted-foreground",children:a("sidebar.kbEmpty")})}function V({rootId:a,section:b,pathname:c}){let[f,g]=(0,e.useState)(!1);return(0,d.jsxs)("li",{children:[(0,d.jsxs)("div",{className:"flex items-center",children:[(0,d.jsx)("button",{type:"button",onClick:()=>g(a=>!a),className:"h-5 w-5 flex items-center justify-center text-muted-foreground hover:text-foreground shrink-0",children:f?(0,d.jsx)(n.A,{className:"h-3 w-3"}):(0,d.jsx)(o.A,{className:"h-3 w-3"})}),(0,d.jsx)(t.A,{className:"h-3 w-3 text-muted-foreground shrink-0 mr-1"}),(0,d.jsx)("span",{className:"text-[12px] flex-1 truncate",children:b.label})]}),f&&b.children&&(0,d.jsx)("ul",{className:"ml-4 space-y-0.5 border-l pl-1",children:b.children.map(b=>(0,d.jsx)("li",{children:(0,d.jsx)(W,{rootId:a,section:b,pathname:c})},b.rel))})]})}function W({rootId:a,section:b,pathname:c}){if(!b.fileRel)return null;let e=b.fileRel.split("/").map(encodeURIComponent).join("/"),f=`/roots/${a}/kb/${e}`,h=c===f;return(0,d.jsxs)(g(),{href:f,className:`flex items-center gap-1 px-2 py-1 text-[12px] rounded hover:bg-accent ${h?"bg-accent":""}`,children:[(0,d.jsx)(q.A,{className:"h-3 w-3 text-muted-foreground shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:b.label})]})}function X({rootId:a,topics:b,pathname:c}){return 0===b.length?(0,d.jsx)(Y,{}):(0,d.jsx)("ul",{className:"ml-4 mt-0.5 space-y-0.5 border-l pl-1",children:b.map(b=>(0,d.jsx)(Z,{rootId:a,topic:b,pathname:c},b.id))})}function Y(){let a=(0,j.c)("app");return(0,d.jsx)("div",{className:"ml-4 px-3 py-1 text-[11px] italic text-muted-foreground",children:a("sidebar.noTopics")})}function Z({rootId:a,topic:b,pathname:c}){let f=(0,j.c)("app"),k=`/roots/${a}/chat/${b.id}`,l=c===k,[m,n]=(0,e.useTransition)(),o=(0,h.useRouter)();return(0,d.jsx)("li",{className:"group/topic",children:(0,d.jsxs)(g(),{href:k,className:`flex items-center gap-1 px-2 py-1 text-[12px] rounded hover:bg-accent ${l?"bg-accent":""}`,children:[(0,d.jsx)(s.A,{className:"h-3 w-3 text-muted-foreground shrink-0"}),(0,d.jsx)("span",{className:"truncate flex-1 min-w-0",children:b.title}),(0,d.jsx)("button",{type:"button",onClick:c=>{c.preventDefault(),c.stopPropagation(),confirm(f("sidebar.deleteTopicConfirm",{title:b.title}))&&n(async()=>{let c=await (0,v.L)(a,b.id);if(!c.ok)return void i.oR.error(c.error??f("sidebar.deleteFailed"));i.oR.success(f("sidebar.topicDeleted")),(0,w.$d)(w.Zi.topicsChanged(a)),l&&o.push(`/roots/${a}`)})},disabled:m,"aria-label":f("sidebar.deleteTopic"),title:f("sidebar.deleteTopic"),className:"opacity-0 group-hover/topic:opacity-100 transition-opacity p-0.5 rounded hover:bg-destructive/15 text-muted-foreground hover:text-destructive shrink-0",children:m?(0,d.jsx)(r.A,{className:"h-3 w-3 animate-spin"}):(0,d.jsx)(u.A,{className:"h-3 w-3"})})]})})}function $({rootId:a,memory:b,pathname:c}){let e=(0,j.c)("app"),f=b.filter(a=>!a.empty),h=`/roots/${a}/memory`,i=c===h;return 0===f.length?(0,d.jsx)("div",{className:"ml-4 px-3 py-1 text-[11px] italic text-muted-foreground",children:e("sidebar.memoryEmpty")}):(0,d.jsx)("ul",{className:"ml-4 mt-0.5 space-y-0.5 border-l pl-1",children:f.map(a=>(0,d.jsx)("li",{children:(0,d.jsxs)(g(),{href:h,title:a.description,className:`flex items-center gap-1 px-2 py-1 text-[12px] rounded hover:bg-accent ${i?"bg-accent":""}`,children:[(0,d.jsx)(J.A,{className:"h-3 w-3 text-muted-foreground shrink-0"}),(0,d.jsx)("span",{className:"truncate flex-1 min-w-0",children:a.file}),(0,d.jsx)("span",{className:"text-[10px] text-muted-foreground shrink-0",children:a.lines})]})},a.file))})}function _({rootId:a,utilities:b,pathname:c}){let e=(0,j.c)("app");return 0===b.length?(0,d.jsx)("div",{className:"ml-4 px-3 py-1 text-[11px] italic text-muted-foreground",children:e("sidebar.utilitiesEmpty")}):(0,d.jsx)("ul",{className:"ml-4 mt-0.5 space-y-0.5 border-l pl-1",children:b.map(b=>(0,d.jsx)(aa,{rootId:a,utility:b,pathname:c},`${b.scope}:${b.id}`))})}function aa({rootId:a,utility:b,pathname:c}){let[f,h]=(0,e.useState)(!1),i=`/utilities/${b.scope}/${encodeURIComponent(b.id)}${b.rootId?`?rootId=${encodeURIComponent(b.rootId)}`:""}`,j=b.threads.length>0;return(0,d.jsxs)("li",{children:[(0,d.jsxs)("div",{className:"flex items-center",children:[(0,d.jsx)("button",{type:"button",onClick:()=>h(a=>!a),disabled:!j,className:"h-5 w-5 flex items-center justify-center text-muted-foreground hover:text-foreground shrink-0 disabled:opacity-30",children:j?f?(0,d.jsx)(n.A,{className:"h-3 w-3"}):(0,d.jsx)(o.A,{className:"h-3 w-3"}):(0,d.jsx)("span",{className:"inline-block h-3 w-3"})}),(0,d.jsxs)(g(),{href:i,className:"flex-1 min-w-0 flex items-center gap-1 px-1 py-1 text-[12px] rounded hover:bg-accent",children:[(0,d.jsx)(M.A,{className:"h-3 w-3 text-muted-foreground shrink-0"}),(0,d.jsx)("span",{className:"truncate flex-1",children:b.name}),j&&(0,d.jsx)("span",{className:"text-[10px] text-muted-foreground shrink-0",children:b.threads.length})]})]}),f&&j&&(0,d.jsx)("ul",{className:"ml-4 space-y-0.5 border-l pl-1",children:b.threads.map(b=>{let e=`/roots/${a}/chat/${b.id}`,f=c===e;return(0,d.jsx)("li",{children:(0,d.jsxs)(g(),{href:e,className:`flex items-center gap-1 px-2 py-1 text-[12px] rounded hover:bg-accent ${f?"bg-accent":""}`,children:[(0,d.jsx)(s.A,{className:"h-3 w-3 text-muted-foreground shrink-0"}),(0,d.jsx)("span",{className:"truncate flex-1 min-w-0",children:b.title})]})},b.id)})})]})}},13415:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{L4:()=>r,OQ:()=>s,Pd:()=>t,g3:()=>o,h$:()=>q,nY:()=>p});var e=c(73745);c(66493);var f=c(65326),g=c(53905),h=c(5492),i=c(36017),j=c(99353),k=c(51021),l=c(93554),m=c(63781),n=a([j,k,l]);async function o(a,b,c=[],d){try{let e=await (0,g.getRoot)(a);if(!e)return{ok:!1,error:"Root not found"};if(!b.trim()&&0===c.length)return{ok:!1,error:"Empty prompt"};let j=await (0,i.loadSettings)(),l=j.assignments.chat,m=b.trim()||c[0]?.name||"Untitled",n=await (0,h.createTopic)({root:e.path,firstMessage:m,harness:l.harness,model:l.model,language:j.language}),o=await (0,k.startOrchestratorTurn)({rootId:a,topicId:n.meta.id,message:b.trim(),attachments:c,...d?{focusFile:d}:{}});if("error"in o)return{ok:!1,error:o.error};return(0,f.revalidatePath)(`/roots/${a}`),{ok:!0,topicId:n.meta.id}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function p(a){try{let b=await (0,g.getRoot)(a);if(!b)return{ok:!1,error:"Root not found"};let c=(await (0,h.hk)(b.path)).filter(a=>!a.meta.helperFor);return{ok:!0,topics:c}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function q(a,b,c){try{let d,e=await (0,g.getRoot)(a);if(!e)return{ok:!1,error:"Root not found"};let k=await (0,i.loadSettings)(),l=k.assignments.quick,m=k.language,n=["Write a short, descriptive title for the following user question.",`Language: ${m}.`,"Constraints:\n - 3 to 7 words\n - no quotes, no trailing punctuation",` - no leading prefixes like "Title:" — just the title text`,"\nUser question:",c].join("\n"),o=(d=(d=(d=(d=(await (0,j.quickComplete)(l,n,{timeoutMs:25e3})).trim()).replace(/^```[a-z]*\s*([\s\S]*?)\s*```$/i,"$1")).replace(/^['"«»“”‘’`]+|['"«»“”‘’`]+$/g,"")).replace(/^\s*title\s*:\s*/i,""),(d=(d=d.split(/\r?\n/)[0]?.trim()??"").replace(/[.!?…]+$/u,"").trim()).length>80&&(d=d.slice(0,77).trimEnd()+"…"),d);if(!o)return{ok:!1,error:"Empty title from model"};return await (0,h.dL)(e.path,b,o),(0,f.revalidatePath)(`/roots/${a}`),(0,f.revalidatePath)(`/roots/${a}/chat/${b}`),{ok:!0,title:o}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function r(a,b){try{let c=await (0,g.getRoot)(a);if(!c)return{ok:!1,error:"Root not found"};return await l.z.stopTopic(b),await (0,h.do)(c.path,b),(0,f.revalidatePath)(`/roots/${a}`),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function s(a,b){try{let c=await (0,g.getRoot)(a);if(!c)return{ok:!1,error:"Root not found"};return await (0,h._9)(c.path,b,"abandoned"),(0,f.revalidatePath)(`/roots/${a}/chat/${b}`),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function t(a){try{let b=await (0,g.getRoot)(a.rootId);if(!b)return{ok:!1,error:"Root not found"};let c=a.question.trim();if(!c)return{ok:!1,error:"Empty question"};let d=await (0,i.loadSettings)(),e=d.assignments.chat,f=await (0,h.createTopic)({root:b.path,firstMessage:c,harness:e.harness,model:e.model,language:d.language,helperFor:a.utilityId}),j=(a.context??"").trim(),l=j?[`[${a.utilityName} context]`,j.length>4e3?j.slice(0,4e3)+"\n…[truncated]":j,"[/context]\n",c].join("\n"):c,m=await (0,k.startOrchestratorTurn)({rootId:a.rootId,topicId:f.meta.id,message:l,attachments:[]});if("error"in m)return{ok:!1,error:m.error};return{ok:!0,topicId:f.meta.id}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}[j,k,l]=n.then?(await n)():n,(0,m.D)([o,p,q,r,s,t]),(0,e.A)(o,"7822c954dd8c0443302b5660c816de3259f25b6237",null),(0,e.A)(p,"401ce6f7116ef91f433d75ab72508fa1c81f5ff6a6",null),(0,e.A)(q,"70d4a05afd5ee7a4156902edab91f82885a9a0a185",null),(0,e.A)(r,"604e058f00e68939dacbee146a9404c8aa2b6f42f5",null),(0,e.A)(s,"60be1aa4846a72333cc64ccdcceee4aa48f0b07dfd",null),(0,e.A)(t,"4077453eca26f295a1a8fa4434d318523cc97082be",null),d()}catch(a){d(a)}})},14981:(a,b,c)=>{"use strict";c.d(b,{t:()=>g});let d=[{name:"system-tag",re:/<\s*\/?\s*system\b[^>]*>/i},{name:"user-tag",re:/<\s*\/?\s*user\b[^>]*>/i},{name:"assistant-tag",re:/<\s*\/?\s*assistant\b[^>]*>/i},{name:"inst-marker",re:/\[\s*\/?\s*INST\s*\]/i},{name:"im-start",re:/<\|im_(?:start|end)\|>/},{name:"reflex-marker",re:/<<\s*reflex\s*:/i}],e=[{name:"sk-token",re:/\bsk-[A-Za-z0-9_-]{20,}\b/},{name:"github-token",re:/\b(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9]{30,}\b/},{name:"aws-key",re:/\bAKIA[0-9A-Z]{16}\b/},{name:"jwt",re:/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\b/},{name:"slack-token",re:/\bxox[abposr]-[A-Za-z0-9-]{10,}\b/},{name:"private-key",re:/-----BEGIN [A-Z ]*PRIVATE KEY-----/}],f=RegExp("[\\u00AD\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u206A-\\u206F\\uFEFF]|[\\u{E0000}-\\u{E007F}]","u");function g(a,b={}){let c=a??"";if(!c.trim())return{ok:!1,error:"empty content"};for(let{name:a,re:b}of d)if(b.test(c))return{ok:!1,error:`looks like a prompt-injection payload (${a}). Strip the wrapper and try again.`};for(let{name:a,re:b}of e)if(b.test(c))return{ok:!1,error:`looks like a credential (${a}). Memory is not a secret store — save the credential through Reflex secrets instead.`};if(f.test(c))return{ok:!1,error:"contains invisible / bidi unicode characters. Paste as plain text and try again."};if(!b.skipDupCheck&&b.existing){let a=new Set(b.existing.split("\n").map(a=>a.trim()).filter(Boolean)),d=c.split("\n").map(a=>a.trim()).filter(Boolean);if(d.length>0&&d.every(b=>a.has(b)))return{ok:!1,error:"every line is already present — nothing to add."}}return{ok:!0}}},15754:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{$z:()=>l,MU:()=>m,Tc:()=>k});var e=c(73745);c(66493);var f=c(53905),g=c(20243),h=c(93554),i=c(63781),j=a([h]);async function k(a,b){try{let c=await (0,f.getRoot)(a);if(!c)return{ok:!1,error:"Root not found"};let d=await (0,g.readEvents)(c.path,b);return{ok:!0,events:d,active:h.z.isActive(b)}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function l(a){try{return{ok:!0,agents:h.z.list(a)}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function m(a){try{let b=h.z.get(a);if(!b)return{ok:!1,error:"Agent not found"};return{ok:!0,agent:b}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}h=(j.then?(await j)():j)[0],(0,i.D)([k,l,m]),(0,e.A)(k,"60ee466ad20b3daca025aa37742a21e0f5c102bfa4",null),(0,e.A)(l,"403f7df439429657ddd038d5211bcde263490efa1a",null),(0,e.A)(m,"401beeb658b78410f707011958583c0aa81eb1cf65",null),d()}catch(a){d(a)}})},18809:(a,b,c)=>{"use strict";c.d(b,{Aq:()=>i,pO:()=>h});let d=["Read","Glob","Grep","WebFetch","WebSearch"],e=[...d,"Write","Edit","MultiEdit"];function f(a,b,c){return[`## Specialist role: ${a}`,"",`Reply in ${b}. You are a focused specialist, not a general assistant. Do exactly the task in the brief — no more.`,"\n## Brief from the orchestrator",c.trim(),""].join("\n")}function g(a){return["\n## Rules",a,"\n- Don't ask clarifying questions to the user — you don't have a chat surface. If the brief is ambiguous, do your best with stated assumptions and note them in your output.\n- Don't emit `<<reflex:kb>>`, `<<reflex:utility>>`, `<<reflex:permission>>`, `<<reflex:question>>`, `<<reflex:dispatch>>` markers — those are for the orchestrator only. Just write your answer as plain text/markdown.\n- End with a tight summary the orchestrator can quote verbatim if the user asks for the result."].join("\n")}let h={researcher:{id:"researcher",label:"Researcher",description:"Deep KB reading / project search / web research. Read-only — never writes files. Use when you need to find or gather facts.",allowedTools:d,systemPrompt:({language:a,root:b,reflexScope:c,brief:d})=>[f("researcher",a,d),`Project root: \`${b}\``,`Knowledge base scope: \`${c}\``,g("- You are READ-ONLY: never Write/Edit/MultiEdit. Use Read/Glob/Grep to scan the KB and WebFetch/WebSearch for external lookups.\n- Cite sources by rel-path inside the KB (or URL for web).\n- If the brief asks for something that requires a write, explicitly say `cannot complete — write required` instead of doing it.")].join("\n")},coder:{id:"coder",label:"Coder",description:"Writes/edits source code, configs, schemas. Can create a utility. Use when file changes are required.",allowedTools:e,systemPrompt:({language:a,root:b,reflexScope:c,brief:d})=>[f("coder",a,d),`Project root: \`${b}\``,`Reflex scope (write here for KB files): \`${c}\``,g("- You may Write/Edit/MultiEdit files. Stay inside the project root.\n- Don't run shell or invoke other agents. If the brief implies installing a utility, write the utility files but do NOT emit `<<reflex:utility>>` — that's the orchestrator's job.\n- Report what you changed: list each touched file with a one-line summary.")].join("\n")},summarizer:{id:"summarizer",label:"Summarizer",description:"Compresses a large text / long transcript / file list into a short summary. No tools — only the text in the brief.",allowedTools:[],systemPrompt:({language:a,brief:b})=>[f("summarizer",a,b),g("- You have NO tools — work only from the text in the brief.\n- Compress aggressively: bullet points, ~10x reduction is the target unless the brief says otherwise.\n- Preserve names, numbers, dates, file paths verbatim. Drop filler.")].join("\n")},"kb-writer":{id:"kb-writer",label:"KB Writer",description:"Structured knowledge-base entry (kind/title/body/frontmatter). Use when the orchestrator decides to save something.",allowedTools:d,systemPrompt:({language:a,root:b,reflexScope:c,brief:d})=>[f("kb-writer",a,d),`KB root: \`${c}\``,`Project: \`${b}\``,g('- You DO NOT write the file yourself. Output a JSON object the orchestrator will pass to <<reflex:kb>>:\n ```json\n {"kind":"<entity-type>","title":"…","body":"…markdown…","meta":{…optional frontmatter fields…}}\n ```\n- Pick a sensible `kind` (fact / task / meeting / product / decision / source / …).\n- `body` is full markdown. Frontmatter `meta` should hold structured fields the user might filter/group on.')].join("\n")},"utility-builder":{id:"utility-builder",label:"Utility Builder",description:"Design a utility: manifest + ui.tsx + (optional) server actions. Use when the user explicitly asks to create a utility.",allowedTools:d,systemPrompt:({language:a,root:b,brief:c})=>[f("utility-builder",a,c),`Project: \`${b}\``,g("- Output the utility files inline in markdown code fences with file paths as headers:\n ### manifest.json\n ```json\n { … }\n ```\n ### ui.tsx\n ```tsx\n … React functional component, default-export …\n ```\n- Follow Reflex utility contract: imports only from `react`, `react-dom/client`, `react/jsx-runtime`, `@host/api`, `@host/ui`. Declare needed permissions and secrets in manifest.\n- Don't emit `<<reflex:utility>>` yourself — the orchestrator wraps your output and emits the marker.")].join("\n")}};function i(a){return a in h}},19319:(a,b,c)=>{"use strict";c.d(b,{IK:()=>l,dj:()=>k});var d=c(73024),e=c(76760),f=c.n(e),g=c(87841),h=c.n(g),i=c(54287);async function j(a){let b=(0,i.FF)(a);return m(b,b)}async function k(a){let b=await j(a);return await Promise.all(b.map(async a=>({...a,meta:await n(a.abs)})))}async function l(a,b){let c=(0,i.FF)(a),e=f().resolve(c,b),g=f().relative(c,e);if(g.startsWith("..")||f().isAbsolute(g))throw Error(`Refused to read outside ${i.fW}: ${b}`);return d.promises.readFile(e,"utf8")}async function m(a,b){let c;try{c=await d.promises.readdir(b,{withFileTypes:!0})}catch{return[]}let e=[],g=[];for(let d of c){let c=f().join(b,d.name);if(d.isDirectory()){if(b===a&&"topics"===d.name)continue;e.push(m(a,c));continue}d.isFile()&&d.name.toLowerCase().endsWith(".md")&&g.push({rel:f().relative(a,c).split(f().sep).join("/"),abs:c,size:0,modifiedAt:""})}let h=await Promise.all(g.map(async a=>{try{let b=await d.promises.stat(a.abs);return{...a,size:b.size,modifiedAt:b.mtime.toISOString()}}catch{return a}}));for(let a of(await Promise.all(e)))h.push(...a);return h.sort((a,b)=>a.rel.localeCompare(b.rel)),h}async function n(a){try{let b=await d.promises.readFile(a,"utf8"),c=h()(b).data;return{...void 0!==o(c.title)?{title:o(c.title)}:{},...void 0!==p(c.version)?{version:p(c.version)}:{},...void 0!==o(c.date)?{date:o(c.date)}:{},...void 0!==o(c.kind)?{kind:o(c.kind)}:{},data:c}}catch{return{data:{}}}}function o(a){return"string"==typeof a?a:a instanceof Date?a.toISOString().slice(0,10):void 0}function p(a){if("string"==typeof a||"number"==typeof a)return a}},20050:(a,b,c)=>{"use strict";c.d(b,{pL:()=>j});var d=c(56149);let e=d.Yj().min(1).max(80).regex(/^[a-z][a-z0-9]*(-[a-z0-9]+)*$/,"id must be kebab-case (e.g. furniture-gen)"),f=d.Ik({llm:d.Ik({tasks:d.YO(d.k5(["chat","quick","rag","embed"])).default([])}).optional(),kb:d.Ik({read:d.zM().optional(),write:d.zM().optional(),kinds:d.YO(d.Yj()).optional()}).optional(),fs:d.Ik({sandbox:d.eu(!0)}).optional(),web:d.Ik({fetch:d.Ik({domains:d.YO(d.Yj()).default([])}).optional(),search:d.zM().optional()}).optional(),audit:d.Ik({write:d.eu(!0).optional()}).optional(),workers:d.Ik({enabled:d.eu(!0),maxConcurrent:d.ai().int().min(1).max(8).default(1).optional()}).optional(),agent:d.Ik({invoke:d.eu(!0)}).optional(),workflow:d.Ik({read:d.zM().optional(),run:d.zM().optional()}).optional(),images:d.Ik({generate:d.zM().optional(),search:d.zM().optional(),attach:d.zM().optional(),domains:d.YO(d.Yj().regex(/^(\*\.)?[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/i,"must be a bare hostname, optional leading '*.'")).max(20).optional()}).optional(),sessions:d.Ik({search:d.zM().optional()}).optional()}).default({}),g=d.Ik({key:d.Yj().min(1).max(64).regex(/^[A-Z][A-Z0-9_]*$/,"secret key must be UPPER_SNAKE_CASE (e.g. OPENAI_API_KEY)"),label:d.Yj().min(1).max(120),description:d.Yj().max(2e3).default(""),required:d.zM().default(!1)}),h=d.Ik({name:d.Yj().min(1).max(64).regex(/^[a-zA-Z_][a-zA-Z0-9_]*$/,"action name must be a JS identifier"),entry:d.Yj().min(1).regex(/^[A-Za-z0-9_\-./]+\.ts$/,"entry must be a relative .ts path"),timeoutMs:d.ai().int().min(1e3).max(6e5).default(3e4)}),i=d.Ik({type:d.k5(["agent","github","archive","mcp","builtin"]),origin:d.Yj().optional(),fetchedAt:d.Yj(),installedBy:d.Yj().optional()}),j=d.Ik({id:e,name:d.Yj().min(1).max(120),description:d.Yj().max(2e3).default(""),version:d.Yj().regex(/^\d+\.\d+\.\d+(?:[-+][\w.]+)?$/,"version must be semver"),author:d.Yj().max(120).optional(),homepage:d.Yj().url().optional(),icon:d.Yj().max(64e3).regex(/^(?:lucide:[A-Za-z0-9_-]+|data:image\/(?:png|svg\+xml|jpeg);base64,[A-Za-z0-9+/=]+)$/,"icon must be 'lucide:Name' or a base64 data URL").optional(),category:d.Yj().max(64).optional(),ui:d.Yj().min(1).max(120).default("ui.tsx"),serverActions:d.YO(h).default([]),secrets:d.YO(g).default([]),dependencies:d.g1(d.Yj().regex(/^(?:@[a-z0-9][\w.-]*\/)?[a-z0-9][\w.-]*$/i,"must be an npm package name"),d.Yj().min(1).max(64)).refine(a=>Object.keys(a).length<=30,"at most 30 dependencies").default({}),mcpServers:d.YO(d.Yj().min(1).max(64)).default([]),permissions:f,source:i.optional(),card:d.Ik({kind:d.k5(["markdown","news-list","link-list","kpi","checklist","quote","kb-pinned","progress","image","stat-table","map","action-list"]),title:d.Yj().min(1).max(120).optional(),description:d.Yj().max(280).optional(),data:d.g1(d.Yj(),d.L5()).default({}),action:d.Yj().regex(/^[a-zA-Z_][a-zA-Z0-9_]*$/,"action must be a serverActions name").optional(),refresh:d.k5(["manual","hourly","daily","weekly"]).optional()}).optional(),extensions:d.Ik({slashCommands:d.YO(d.Ik({id:d.Yj().min(1).max(64).regex(/^[a-z][a-z0-9-]*$/),trigger:d.Yj().min(1).max(40).regex(/^[a-z][a-z0-9-]*$/),label:d.Yj().min(1).max(60),description:d.Yj().max(280),icon:d.Yj().min(1).max(40),kind:d.k5(["agent-mode","direct"]),usage:d.Yj().max(200).default(""),allowEmpty:d.zM().default(!1),promptBlock:d.Yj().max(2e4).optional(),directAction:d.Yj().max(120).optional()})).default([]),skills:d.YO(d.Ik({id:d.Yj().min(1).max(64).regex(/^[a-z][a-z0-9-]*$/),title:d.Yj().min(1).max(120),description:d.Yj().max(280),instructions:d.Yj().min(1).max(5e4),workflowId:d.Yj().max(120).optional()})).default([]),workflows:d.YO(d.Ik({id:d.Yj().min(1).max(64).regex(/^[a-z][a-z0-9-]*$/),label:d.Yj().min(1).max(120),description:d.Yj().max(280).optional(),trigger:d.k5(["manual","hourly","daily","weekly"]),steps:d.YO(d.Ik({id:d.Yj().min(1).max(64),kind:d.Yj().min(1).max(40),label:d.Yj().min(1).max(120),params:d.g1(d.Yj(),d.L5()).default({})})).min(1).max(20)})).default([]),systemPromptAddendum:d.Yj().max(2e4).optional()}).default({slashCommands:[],skills:[],workflows:[]})}),k=d.g1(d.Yj(),d.Yj()).superRefine((a,b)=>{for(let c of(!("manifest.json"in a||a["manifest.json"]),Object.keys(a)))(c.startsWith("/")||c.includes(".."))&&b.addIssue({code:"custom",message:`Unsafe file path: ${c}`})});d.Ik({scope:d.k5(["global","project"]),rootId:d.Yj().optional(),manifest:j,files:k,source:i})},20243:(a,b,c)=>{"use strict";c.d(b,{R:()=>h,appendEvent:()=>i,nextSeq:()=>k,readEvents:()=>j});var d=c(73024),e=c(76760),f=c.n(e),g=c(54287);function h(a,b){return f().join((0,g.FF)(a),"topics",`${b}.events.jsonl`)}async function i(a,b,c){let e=h(a,b);await d.promises.mkdir(f().dirname(e),{recursive:!0}),await d.promises.appendFile(e,JSON.stringify(c)+"\n","utf8")}async function j(a,b){let c,e=h(a,b);try{c=await d.promises.readFile(e,"utf8")}catch(a){var f;if("object"==typeof(f=a)&&null!==f&&"code"in f&&"ENOENT"===f.code)return[];throw a}let g=[];for(let a of c.split(/\r?\n/))if(a.trim())try{g.push(JSON.parse(a))}catch{}return g}async function k(a,b){let c=await j(a,b);return 0===c.length?0:c[c.length-1].seq+1}},20583:(a,b,c)=>{"use strict";c.d(b,{$:()=>i});var d=c(64173);c(17240);var e=c(20483),f=c(91520),g=c(91344);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})}},20938:(a,b,c)=>{"use strict";c.d(b,{GC:()=>l,az:()=>m});var d=c(73024),e=c(76760),f=c.n(e),g=c(73652);let h=f().join((0,g._)(),"pending-mcp-adds.json");async function i(){try{let a=await d.promises.readFile(h,"utf8"),b=JSON.parse(a);if(1!==b.version||!Array.isArray(b.entries))return{version:1,entries:[]};return b}catch{return{version:1,entries:[]}}}async function j(a){await d.promises.mkdir(f().dirname(h),{recursive:!0}),await d.promises.writeFile(h,JSON.stringify(a,null,2)+"\n",{encoding:"utf8",mode:384});try{await d.promises.chmod(h,384)}catch{}}function k(a){let b=Date.now()-2592e6;return{version:1,entries:a.entries.filter(a=>{let c=Date.parse(a.createdAt);return Number.isFinite(c)&&c>b})}}async function l(a){let b=k(await i());b.entries=b.entries.filter(b=>b.requestId!==a.requestId),b.entries.push({...a,createdAt:new Date().toISOString()}),await j(b)}async function m(a){let b=k(await i()),c=b.entries.findIndex(b=>b.requestId===a);if(c<0)return null;let d=b.entries[c];return b.entries.splice(c,1),await j(b),d}},22421:(a,b,c)=>{"use strict";c.d(b,{Bd:()=>p,Ed:()=>o,eJ:()=>q,vT:()=>i,vd:()=>n});var d=c(73024),e=c(76760),f=c.n(e),g=c(77598),h=c.n(g);let i=["utility","research","widget","goal","skill"];function j(a){return f().join(a,".reflex","suggestions.json")}async function k(a){try{let b=await d.promises.readFile(j(a),"utf8"),c=JSON.parse(b);if(1===c.version&&Array.isArray(c.items))return c}catch{}return{version:1,items:[]}}async function l(a,b){let c=j(a);await d.promises.mkdir(f().dirname(c),{recursive:!0}),await d.promises.writeFile(c,JSON.stringify(b,null,2)+"\n","utf8")}async function m(a){return(await k(a)).items}async function n(a){return(await m(a)).filter(a=>"pending"===a.status)}async function o(a,b){let c=await k(a),d=b.title.trim().toLowerCase(),e=c.items.find(a=>a.kind===b.kind&&a.title.trim().toLowerCase()===d&&"pending"===a.status);if(e)return e;let f={id:h().randomBytes(6).toString("hex"),kind:b.kind,title:b.title.trim(),description:b.description.trim(),prompt:b.prompt.trim(),...b.sourceTopicId?{sourceTopicId:b.sourceTopicId}:{},createdAt:new Date().toISOString(),status:"pending"};return c.items.push(f),await l(a,c),f}async function p(a,b,c){let d=await k(a),e=d.items.findIndex(a=>a.id===b);return e<0?null:(d.items[e]={...d.items[e],status:"approved",topicId:c},await l(a,d),d.items[e])}async function q(a,b){let c=await k(a),d=c.items.findIndex(a=>a.id===b);return d<0?null:(c.items[d]={...c.items[d],status:"rejected"},await l(a,c),c.items[d])}},24570:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{l:()=>s,p:()=>r});var e=c(73024),f=c(76760),g=c.n(f),h=c(24576),i=c(17640),j=c(99048),k=c(18542),l=c(74853),m=c(13474),n=a([j,k]);[j,k]=n.then?(await n)():n;let r=[{id:"system:memory-rollup",label:"Memory rollup",trigger:"weekly",run:o},{id:"system:sessions-index",label:"Index sessions for search",trigger:"hourly",run:q}],s={hourly:36e5,daily:864e5,weekly:6048e5};async function o(){let a=await (0,h.listRoots)().catch(()=>[]),b=[];for(let c of a){let a=await p(c).catch(()=>[]);b.push(...a)}if(b.length<4)return{ok:!0,detail:`${b.length} journal entries across all roots — skipping rollup (need ≥4).`};b.sort((a,b)=>a.date<b.date?1:-1);let c=b.slice(0,60),d=["You're summarising the user's last 7 days from their journal entries across every Reflex Space.",`Output STRICT plain text. ≤25 lines. One fact per line, third-person about the user.`,`Cover: recurring themes, mood arc, unresolved threads, notable wins. Quote the user's own phrasing for one or two themes — sparingly. No greetings, no markdown headers, no preamble — straight into the bullets.`,"If the entries don't span 7 days yet, summarise what's there honestly.","","## Journal entries (newest first)",...c.map(a=>{var b,c;return`### ${a.date} \xb7 ${a.rootName} \xb7 ${a.title}
|
|
75
|
+
${b=a.body,c=400,b.length<=400?b:b.slice(0,c)+"…"}`})].join("\n");try{let b=await (0,i.loadSettings)(),e=(await (0,j.quickComplete)(b.assignments.quick,d,{timeoutMs:9e4})??"").trim();if(!e)return{ok:!1,detail:"empty completion"};let f=e.split("\n").map(a=>a.trim()).filter(Boolean).slice(0,25).join("\n");return await (0,k.xP)({scope:"global"},"RECENT","replace",{content:f}),{ok:!0,detail:`rolled up ${c.length} entries from ${a.length} Spaces`}}catch(a){return{ok:!1,detail:a instanceof Error?a.message:String(a)}}}async function p(a){let b,c=g().join((0,m.FF)(a.path),"journal");try{b=(await e.promises.readdir(c)).filter(a=>a.toLowerCase().endsWith(".md"))}catch{return[]}b.sort().reverse(),b=b.slice(0,14);let d=g().basename(a.path)||a.id,f=[];for(let a of b)try{let b=await e.promises.readFile(g().join(c,a),"utf8"),{title:h,date:i,body:j}=function(a){let b=/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/.exec(a);if(!b)return{body:a.trim()};let c=b[1],d=b[2].trim(),e=/^title:\s*(.+)$/m.exec(c)?.[1]?.replace(/^"|"$/g,""),f=/^date:\s*(.+)$/m.exec(c)?.[1]?.replace(/^"|"$/g,"");return{...e?{title:e.trim()}:{},...f?{date:f.trim()}:{},body:d}}(b);f.push({rootName:d,date:i??function(a){let b=/^(\d{4}-\d{2}-\d{2})/.exec(a);return b?b[1]:null}(a)??"",title:h??a,body:j})}catch{}return f}async function q(){try{let a=await (0,l.tH)();return{ok:!0,detail:`scanned ${a.scanned}, upserted ${a.upserted}, removed ${a.removed}`}}catch(a){return{ok:!1,detail:a instanceof Error?a.message:String(a)}}}d()}catch(a){d(a)}})},26380:(a,b,c)=>{"use strict";c.d(b,{createTask:()=>o,deleteTask:()=>s,getTask:()=>q,listTasks:()=>p,updateTask:()=>r});var d=c(73024),e=c(76760),f=c.n(e),g=c(77598),h=c.n(g),i=c(87841),j=c.n(i),k=c(54287),l=c(19319),m=c(51872);let n="task";async function o(a,b){let c=`t-${h().randomBytes(4).toString("hex")}`,e=b.title.normalize("NFKD").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,60)||c,g=new Date().toISOString().slice(0,10),i=`${g}-${e}.md`,j=f().join((0,k.FF)(a),n);await d.promises.mkdir(j,{recursive:!0});let l=await v(j,i),m={id:c,title:b.title.trim(),type:b.type??"feature",status:b.status??"backlog",priority:b.priority??"normal",labels:b.labels??[],assignee:b.assignee??null,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),topicId:null,agentRequested:null,worktree:null,links:b.links??{},parent:b.parent??null,pre:b.pre??[],post:b.post??[],attachments:b.attachments??[],relPath:f().relative((0,k.FF)(a),l).split(f().sep).join("/"),body:(b.body??"").trim()};return await u(l,m),m}async function p(a){let b=await (0,l.dj)(a).catch(()=>[]),c=[];for(let d of b){if(d.meta.kind!==n)continue;let b=await t(d.abs,a).catch(()=>null);b&&c.push(b)}return c.sort((a,b)=>a.updatedAt<b.updatedAt?1:-1),c}async function q(a,b){return(await p(a)).find(a=>a.id===b)??null}async function r(a,b,c){let d=await q(a,b);if(!d)return null;let e=f().join((0,k.FF)(a),d.relPath),g={...d,...c,updatedAt:new Date().toISOString()};return await u(e,g),g}async function s(a,b){let c=await q(a,b);if(!c)return!1;let e=f().join((0,k.FF)(a),c.relPath);return await d.promises.rm(e,{force:!0}),!0}async function t(a,b){var c,e,g;let h=await d.promises.readFile(a,"utf8"),i=j()(h),l=i.data,n="string"==typeof l.id?l.id:null,o="string"==typeof l.title?l.title:null;if(!n||!o)return null;let p=f().relative((0,k.FF)(b),a).split(f().sep).join("/");return{id:n,title:o,type:x(l.type,m.ci,"feature"),status:x(l.status,m.Hi,"backlog"),priority:x(l.priority,m.PN,"normal"),labels:Array.isArray(l.labels)?l.labels.map(String):[],assignee:"string"==typeof l.assignee?l.assignee:null,createdAt:"string"==typeof l.createdAt?l.createdAt:new Date().toISOString(),updatedAt:"string"==typeof l.updatedAt?l.updatedAt:new Date().toISOString(),topicId:"string"==typeof l.topicId?l.topicId:null,agentRequested:"string"==typeof l.agentRequested?l.agentRequested:null,worktree:(c=l.worktree)&&"object"==typeof c&&"string"==typeof c.dir&&"string"==typeof c.branch&&"string"==typeof c.baseRef?{dir:c.dir,branch:c.branch,baseRef:c.baseRef}:null,links:(e=l.links)&&"object"==typeof e?{...Array.isArray(e.blocks)?{blocks:e.blocks.map(String)}:{},...Array.isArray(e.blockedBy)?{blockedBy:e.blockedBy.map(String)}:{},...Array.isArray(e.related)?{related:e.related.map(String)}:{}}:{},parent:"string"==typeof l.parent?l.parent:null,pre:y(l.pre),post:y(l.post),attachments:Array.isArray(g=l.attachments)?g.map(a=>{if(!a||"object"!=typeof a)return null;let b=a.kind;return"image"!==b&&"text"!==b&&"file"!==b||"string"!=typeof a.file?null:{kind:b,file:a.file,..."string"==typeof a.caption?{caption:a.caption}:{}}}).filter(a=>!!a):[],relPath:p,body:i.content.trim()}}async function u(a,b){let c={id:b.id,title:b.title,kind:n,type:b.type,status:b.status,priority:b.priority,labels:b.labels,assignee:b.assignee,createdAt:b.createdAt,updatedAt:b.updatedAt,topicId:b.topicId,agentRequested:b.agentRequested,worktree:b.worktree,links:b.links,parent:b.parent,pre:b.pre,post:b.post,attachments:b.attachments},e=b.body.trim(),g=j().stringify(e?e+"\n":"",c);await d.promises.mkdir(f().dirname(a),{recursive:!0}),await d.promises.writeFile(a,g,"utf8")}async function v(a,b){let c=f().extname(b),d=b.slice(0,b.length-c.length),e=f().join(a,b),g=2;for(;await w(e);)e=f().join(a,`${d}-${g}${c}`),g++;return e}async function w(a){try{return await d.promises.stat(a),!0}catch{return!1}}function x(a,b,c){return"string"==typeof a&&b.includes(a)?a:c}function y(a){return Array.isArray(a)?a.map(a=>a&&"object"==typeof a?"workflow"===a.kind&&"string"==typeof a.id?{kind:"workflow",id:a.id}:"chat"===a.kind&&"string"==typeof a.prompt?{kind:"chat",prompt:a.prompt}:null:null).filter(a=>!!a):[]}},27456:(a,b,c)=>{"use strict";c.d(b,{F:()=>g});var d=c(64173);c(17240);var e=c(6912),f=c(91344);function g({className:a,children:b,...c}){return(0,d.jsxs)(e.Root,{"data-slot":"scroll-area",className:(0,f.cn)("relative",a),...c,children:[(0,d.jsx)(e.Viewport,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",children:b}),(0,d.jsx)(h,{}),(0,d.jsx)(e.Corner,{})]})}function h({className:a,orientation:b="vertical",...c}){return(0,d.jsx)(e.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar",orientation:b,className:(0,f.cn)("flex touch-none p-px transition-colors select-none","vertical"===b&&"h-full w-2.5 border-l border-l-transparent","horizontal"===b&&"h-2.5 flex-col border-t border-t-transparent",a),...c,children:(0,d.jsx)(e.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}},28548:(a,b,c)=>{"use strict";c.d(b,{AI:()=>m,PM:()=>l,Qs:()=>o,Y7:()=>k,iP:()=>n});var d=c(73024),e=c(76760),f=c.n(e),g=c(73652),h=c(61495);let i=f().join((0,g._)(),"prompts");function j(a){return f().join(i,`${a}.md`)}function k(a){return j(a)}async function l(a){let b=j(a);try{return await d.promises.readFile(b,"utf8")}catch(a){var c;if(!("object"==typeof(c=a)&&null!==c&&"code"in c&&"ENOENT"===c.code))throw a}return await d.promises.mkdir(i,{recursive:!0}),await d.promises.writeFile(b,h.EE[a],"utf8"),h.EE[a]}async function m(a,b){await d.promises.mkdir(i,{recursive:!0}),await d.promises.writeFile(j(a),b,"utf8")}async function n(a){return await m(a,h.EE[a]),h.EE[a]}function o(a){if(!h._W.includes(a))throw Error(`Unknown template: ${a}`);return a}},30516:(a,b,c)=>{"use strict";c.d(b,{P:()=>m});var d=c(56149);let e=d.Ik({template:d.Yj().default("")}),f=d.Ik({url:d.Yj().url("url must be a valid URL"),method:d.k5(["GET","POST","PUT","PATCH","DELETE"]).default("GET"),headers:d.KC([d.g1(d.Yj(),d.Yj()),d.Yj(),d.Vx()]).optional(),body:d.KC([d.Yj(),d.g1(d.Yj(),d.L5()),d.Vx()]).optional()}),g=d.Ik({url:d.Yj().url("url must be a valid URL")}),h=d.Ik({prompt:d.Yj().min(1,"prompt is required")}),i=d.Ik({kind:d.Yj().min(1).default("note"),title:d.Yj().default(""),body:d.Yj().default("")}),j=d.Ik({utilityId:d.Yj().min(1,"utilityId is required"),utilityScope:d.k5(["global","project"]).default("global"),actionName:d.Yj().min(1,"actionName is required"),args:d.L5().optional()}),k=d.Ik({prompt:d.Yj().min(1,"prompt is required"),provider:d.k5(["gemini","codex"]).optional(),size:d.Yj().optional(),aspectRatio:d.Yj().optional()}),l={"text-template":e,"http-request":f,"web-fetch":g,"ask-agent":h,"kb-write":i,"utility-call":j,"image-generate":k,"image-search":d.Ik({query:d.Yj().min(1,"query is required"),provider:d.k5(["unsplash","pexels","brave"]).optional(),count:d.KC([d.Yj(),d.ai()]).optional()}),notify:d.Ik({body:d.Yj().default(""),text:d.Yj().optional(),title:d.Yj().optional(),link:d.Yj().optional()})};function m(a,b){let c=l[a];return c?c.parse(b):b}},30849:(a,b,c)=>{"use strict";c.d(b,{AppSidebar:()=>d});let d=(0,c(54491).registerClientReference)(function(){throw Error("Attempted to call AppSidebar() from the server but AppSidebar 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/app-sidebar.tsx","AppSidebar")},35616:(a,b,c)=>{Promise.resolve().then(c.bind(c,9491)),Promise.resolve().then(c.bind(c,99668)),Promise.resolve().then(c.bind(c,54225))},35961:(a,b,c)=>{"use strict";c.d(b,{collectExtensions:()=>e});var d=c(8118);async function e(a){let b=await (0,d.listUtilities)(a.rootId?{rootId:a.rootId}:{}).catch(()=>[]),c=[],e=[],f=[],g=[];for(let a of b){let b=a.manifest.extensions;if(!b)continue;let d={utilityId:a.manifest.id,scope:a.scope};for(let a of b.slashCommands??[])c.push({...a,utility:d});for(let a of b.skills??[])e.push({...a,utility:d});b.systemPromptAddendum&&b.systemPromptAddendum.trim()&&f.push({utility:d,content:b.systemPromptAddendum});let h=new Date().toISOString();for(let a of b.workflows??[])g.push({id:a.id,label:a.label,...a.description?{description:a.description}:{},trigger:a.trigger,steps:a.steps.map(a=>({id:a.id,kind:a.kind,label:a.label,params:a.params})),createdAt:h,updatedAt:h})}return{slashCommands:c,skills:e,promptBlocks:f,workflows:g}}},36017:(a,b,c)=>{"use strict";c.d(b,{loadSettings:()=>j,saveSettings:()=>k});var d=c(73024),e=c(76760),f=c.n(e),g=c(78555);let h=(0,c(73652)._)(),i=f().join(h,"settings.json");async function j(){try{let a=await d.promises.readFile(i,"utf8"),b=g.ht.safeParse(JSON.parse(a));if(!b.success)return g.a$;return b.data}catch(b){var a;if("object"==typeof(a=b)&&null!==a&&"code"in a&&"ENOENT"===a.code)return g.a$;throw b}}async function k(a){let b=g.ht.parse(a);await d.promises.mkdir(h,{recursive:!0}),await d.promises.writeFile(i,JSON.stringify(b,null,2)+"\n","utf8")}},36724:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{L:()=>j});var e=c(56942),f=c(3724),g=a([f]);f=(g.then?(await g)():g)[0];let j={"text-template":async a=>"string"==typeof a.template?a.template:"","http-request":async a=>{let b=h(a.url,"url"),c=i(a.method,"GET").toUpperCase(),d=function(a,b){if("string"!=typeof a||!a.trim())return b;try{return JSON.parse(a)}catch{return b}}(a.headers,{}),e=i(a.body,""),f={method:c,headers:d};"GET"!==c&&"HEAD"!==c&&e&&(f.body=e);let g=await fetch(b,f),j=await g.text(),k=g.headers.get("content-type")??"",l=j;if(k.includes("application/json"))try{l=JSON.parse(j)}catch{}if(!g.ok)throw Error(`HTTP ${g.status} ${g.statusText}: ${j.slice(0,200)}`);return l},"web-fetch":async a=>{let b=h(a.url,"url"),c=await fetch(b,{headers:{"User-Agent":"Reflex-Workflow/1.0"}});if(!c.ok)throw Error(`HTTP ${c.status} ${c.statusText}`);return await c.text()},"ask-agent":async(a,b)=>{let c=h(a.prompt,"prompt"),{text:d}=await (0,f.runHeadlessAgent)({rootId:b.rootId,prompt:c,label:`[workflow ${b.workflow.id}] ${b.workflow.label}`});return d},"kb-write":async(a,b)=>{let c=i(a.kind,"note"),d=i(a.title,`Workflow ${b.workflow.label}`),f=i(a.body,""),g=await (0,e.j)({rootPath:b.rootPath,directive:{kind:c,title:d,body:f}});return{kind:g.kind,title:g.title,relPath:g.relPath,absPath:g.absPath}},"image-generate":async(a,b)=>{let d=h(a.prompt,"prompt"),e="codex"===a.provider||"gemini"===a.provider?a.provider:void 0,{generateImage:f}=await Promise.resolve().then(c.bind(c,84579)),g=await f({rootId:b.rootId,prompt:d,...e?{provider:e}:{},..."string"==typeof a.size&&a.size?{size:a.size}:{},..."string"==typeof a.aspectRatio&&a.aspectRatio?{aspectRatio:a.aspectRatio}:{}});return{url:g.urlPath,sha:g.sha,size:g.size,mime:g.mime,provider:g.provider}},"image-search":async a=>{let b,d=h(a.query,"query"),e="pexels"===a.provider||"unsplash"===a.provider||"brave"===a.provider?a.provider:void 0;if("number"==typeof a.count)b=a.count;else if("string"==typeof a.count&&a.count.trim()){let c=parseInt(a.count,10);Number.isFinite(c)&&c>0&&(b=c)}let{searchImages:f}=await Promise.resolve().then(c.bind(c,84579));return{results:await f({query:d,...e?{provider:e}:{},...void 0!==b?{count:b}:{}})}},"utility-call":async(a,b)=>{let d=h(a.utilityId,"utilityId"),e=h(a.actionName,"actionName"),f="project"===a.utilityScope?"project":"global",g=a.args??{};if("string"==typeof g)try{g=g.trim()?JSON.parse(g):{}}catch(a){throw Error(`utility-call: args is not valid JSON: ${a instanceof Error?a.message:String(a)}`)}let{getUtility:i}=await Promise.resolve().then(c.bind(c,8118)),j=await i(f,d,"project"===f?b.rootId:void 0);if(!j)throw Error(`utility-call: ${f}/${d} not installed`);let k=j.manifest.serverActions.find(a=>a.name===e);if(!k)throw Error(`utility-call: ${d} has no serverAction "${e}"`);let{runServerAction:l}=await Promise.all([c.e(9861),c.e(4031)]).then(c.bind(c,49556));return l({utility:j,action:k,args:g,parentCorrelationId:`workflow:${b.workflow.id}`})},notify:async a=>{let b=i(a.body,i(a.text,"")).trim();if(!b)throw Error("notify: body is empty");let{notify:d}=await c.e(1638).then(c.bind(c,71638)),e=await d({body:b,..."string"==typeof a.title&&a.title?{title:a.title}:{},..."string"==typeof a.link&&a.link?{link:a.link}:{}});return{delivered:e.delivered,errors:e.errors}}};function h(a,b){if("string"!=typeof a||!a.trim())throw Error(`Param "${b}" is required (string)`);return a}function i(a,b){return"string"==typeof a?a:b}d()}catch(a){d(a)}})},44427:()=>{},46013:(a,b,c)=>{"use strict";c.d(b,{Separator:()=>g});var d=c(64173);c(17240);var e=c(42572),f=c(91344);function g({className:a,orientation:b="horizontal",decorative:c=!0,...g}){return(0,d.jsx)(e.b,{"data-slot":"separator",decorative:c,orientation:b,className:(0,f.cn)("shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",a),...g})}},49410:(a,b,c)=>{"use strict";c.d(b,{bG:()=>m,hI:()=>q,kA:()=>p});var d=c(73024),e=c(76760),f=c.n(e),g=c(87841),h=c.n(g),i=c(73652);let j=f().join((0,i._)(),"skills");function k(a){return f().join(a,".reflex","skills")}let l=[{id:"deep-research",title:"Deep research",description:"Multi-agent research with citation discipline — facts and synthesis land as cross-linked KB entries.",author:"builtin",scope:"builtin",instructions:`## Skill: deep-research
|
|
76
76
|
|
|
77
77
|
Run the investigation like a professional analyst. This skill is NOT a chat answer; it produces durable, cited KB artifacts.
|
|
78
78
|
|
|
@@ -208,7 +208,7 @@ Constraints:
|
|
|
208
208
|
${g}
|
|
209
209
|
---
|
|
210
210
|
${a.instructions.trim()}
|
|
211
|
-
`,i=f().join(b,`${c}.md`);return await d.promises.writeFile(i,h,"utf8"),i}},50995:(a,b,c)=>{"use strict";c.d(b,{i:()=>f});var d=c(73745);c(66493);var e=c(53905);async function f(){try{let a=await (0,e.listRoots)();return{ok:!0,entries:a}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}(0,c(63781).D)([f]),(0,d.A)(f,"
|
|
211
|
+
`,i=f().join(b,`${c}.md`);return await d.promises.writeFile(i,h,"utf8"),i}},50995:(a,b,c)=>{"use strict";c.d(b,{i:()=>f});var d=c(73745);c(66493);var e=c(53905);async function f(){try{let a=await (0,e.listRoots)();return{ok:!0,entries:a}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}(0,c(63781).D)([f]),(0,d.A)(f,"0040ef250b316a7df1d400c5f6e7aa35218c5b98b9",null)},51021:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{startOrchestratorTurn:()=>t});var e=c(76760),f=c.n(e),g=c(54287),h=c(78744),i=c(36017),j=c(53905),k=c(93554),l=c(20243),m=c(875),n=c(96921),o=c(5492),p=c(49410),q=c(96791),r=c(35961),s=a([k,q]);[k,q]=s.then?(await s)():s;let x="рус";async function t(a){var b;let c=await (0,j.getRoot)(a.rootId);if(!c)return{error:"Root not found",status:404};if(k.z.isActive(a.topicId))return{error:"Topic already has a running agent",status:409};let d=await (0,i.loadSettings)(),e=d.assignments.chat,l=a.harness??e.harness,s=a.model??e.model,t=d.language,z=(0,g.FF)(c.path),A=await (0,r.collectExtensions)({rootId:a.rootId}),B=A.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})),C=(0,m.wr)(a.message),D=(0,n.dr)(a.message,B),E=a.message;C?"goal"===C.kind&&C.text?(await (0,o.PF)(c.path,a.topicId,C.text),E=C.text):"plan"===C.kind&&(E=C.text||a.message):D&&"agent-mode"===D.def.kind&&(E=D.payload||a.message);let F=null;if(D?.def.id==="skill"){let[b,...d]=D.payload.split(/\s+/);if(b){let e=await (0,p.kA)(b,c.path,a.rootId);if(e){let b=e.instructions;if(e.workflowId){let c=await v(a.rootId,e.workflowId);null!==c&&(b=b.includes("{{workflowOutput}}")?b.replace(/\{\{workflowOutput\}\}/g,c):`${b}
|
|
212
212
|
|
|
213
213
|
## Workflow output (from \`${e.workflowId}\`)
|
|
214
214
|
${c}`)}F=b,E=d.join(" ").trim()||E}}}let G=await (0,o.getTopic)(c.path,a.topicId),H=G?.meta.goal&&"active"===G.meta.goalStatus?G.meta.goal:void 0,I=await (0,h.M)({root:c.path,scope:c.path,reflexScope:z,language:t}),J=await (0,q.f)({rootPath:c.path}),K=function(a){let b=[],c=new Set;for(let d of a.matchAll(/https?:\/\/[^\s)>'"]+/g)){let a=d[0];try{let d=new URL(a);if(!y.has(d.hostname.toLowerCase())||c.has(a))continue;c.add(a),b.push(a)}catch{}}return b}(E),L=[I,J,H?(0,m.FB)(H,t):"",C?.kind==="plan"?(0,m.$4)(t):"",D?.def.id==="research"?(0,m.dA)(D.payload,t):"",D?.def.id==="widget"?(0,m.wt)(D.payload,t):"",D?.def.id==="new-utility"?(0,m.EA)(D.payload,t):"",D?.def.id==="mcp"?(0,m.YE)(D.payload,t):"",D?.def.id==="workflow"?(0,m.vl)(D.payload,t):"",D?.def.id==="distill"?(0,m.VM)(D.payload,t):"",D?.def.id==="practice"?(0,m.z7)(D.payload,t):"",D?.def.id==="reflect"?(0,m.zM)(t):"",F??"",a.focusFile?function(a,b,c){let d=f().join(b,a);return/russ/i.test(c)||RegExp(x,"i").test(c)?`## Open document — primary context
|
|
@@ -261,11 +261,11 @@ ${d.text}
|
|
|
261
261
|
`,e=e.slice(d.coveredCount))}let g=[],h=null,i=()=>{h&&(g.push(`### ${h.role}
|
|
262
262
|
${h.text.trim()}`),h=null)};for(let a of e)"user-message"===a.type?(i(),h={role:"user",text:a.text},i()):"assistant-delta"===a.type?(h&&"assistant"===h.role||(i(),h={role:"assistant",text:""}),h.text+=a.text):("turn-end"===a.type||"agent-end"===a.type)&&i();return i(),f+g.join("\n\n")}d()}catch(a){d(a)}})},51872:(a,b,c)=>{"use strict";c.d(b,{Hi:()=>e,KT:()=>i,PN:()=>f,Yj:()=>g,ak:()=>j,ci:()=>d,kJ:()=>h});let d=["feature","bug","refactor","docs","chore","research","review","call","idea"],e=["backlog","ready","in-progress","review","done","blocked"],f=["low","normal","high"],g={feature:{isCode:!0},bug:{isCode:!0,defaultSkill:"deep-research"},refactor:{isCode:!0},docs:{isCode:!0},chore:{isCode:!0},research:{isCode:!1,defaultSkill:"deep-research"},review:{isCode:!0},call:{isCode:!1},idea:{isCode:!1}};function h(a){return d.includes(a)}function i(a){return e.includes(a)}function j(a){return f.includes(a)}},52219:(a,b,c)=>{"use strict";c.d(b,{H:()=>e});var d=c(59377);async function e(a){let b=(0,d.Tf)().startThread({model:a.args.model,workingDirectory:a.args.rootPath,sandboxMode:"read-only",additionalDirectories:[a.args.reflexScope],approvalPolicy:"never",skipGitRepoCheck:!0}),c=a.args.systemPrompt.trim().length>0?`${a.args.systemPrompt}
|
|
263
263
|
|
|
264
|
-
${a.args.prompt}`:a.args.prompt,e=await b.runStreamed(c),f=new Map;try{for await(let b of e.events)if("item.started"!==b.type){if("item.updated"===b.type||"item.completed"===b.type){let c=b.item;if("agent_message"===c.type){let b=f.get(c.id)??"",d=c.text.slice(b.length);d.length>0&&(f.set(c.id,c.text),await a.manager.emit({type:"assistant-delta",text:d,agentId:a.meta.id,ts:new Date().toISOString(),seq:0}));continue}if("command_execution"===c.type&&"item.completed"===b.type){await a.manager.emit({type:"tool-use",toolUseId:c.id,name:"Bash",input:{command:c.command},agentId:a.meta.id,ts:new Date().toISOString(),seq:0}),await a.manager.emit({type:"tool-result",toolUseId:c.id,content:c.aggregated_output??"",...0!==c.exit_code?{isError:!0}:{},agentId:a.meta.id,ts:new Date().toISOString(),seq:0});continue}if("file_change"===c.type&&"item.completed"===b.type){await a.manager.emit({type:"tool-use",toolUseId:c.id,name:"FileChange",input:{changes:c.changes},agentId:a.meta.id,ts:new Date().toISOString(),seq:0}),await a.manager.emit({type:"tool-result",toolUseId:c.id,content:`${c.status}: ${c.changes.map(a=>`${a.kind} ${a.path}`).join(", ")}`,..."failed"===c.status?{isError:!0}:{},agentId:a.meta.id,ts:new Date().toISOString(),seq:0});continue}if("mcp_tool_call"===c.type&&"item.completed"===b.type){await a.manager.emit({type:"tool-use",toolUseId:c.id,name:`mcp:${c.server}:${c.tool}`,input:c.arguments,agentId:a.meta.id,ts:new Date().toISOString(),seq:0});let b=c.error?c.error.message:JSON.stringify(c.result?.content??[]).slice(0,4e3);await a.manager.emit({type:"tool-result",toolUseId:c.id,content:b,...c.error?{isError:!0}:{},agentId:a.meta.id,ts:new Date().toISOString(),seq:0});continue}if("web_search"===c.type&&"item.completed"===b.type){await a.manager.emit({type:"tool-use",toolUseId:c.id,name:"WebSearch",input:{query:c.query},agentId:a.meta.id,ts:new Date().toISOString(),seq:0});continue}"error"===c.type&&"item.completed"===b.type&&await a.manager.emit({type:"error",message:c.message,agentId:a.meta.id,ts:new Date().toISOString(),seq:0});continue}if("turn.failed"===b.type)throw await a.manager.emit({type:"error",message:`codex turn failed: ${b.error.message}`,agentId:a.meta.id,ts:new Date().toISOString(),seq:0}),Error(b.error.message);if("error"===b.type)throw await a.manager.emit({type:"error",message:b.message,agentId:a.meta.id,ts:new Date().toISOString(),seq:0}),Error(b.message)}}finally{await (0,d.Nb)(b.id)}}},53905:(a,b,c)=>{"use strict";c.r(b),c.d(b,{HOME_ROOT_ID:()=>m,addRoot:()=>u,getRoot:()=>t,homeRootEntry:()=>n,isHomeRoot:()=>o,listRoots:()=>s,markInitialized:()=>w,removeRoot:()=>v,rootId:()=>p});var d=c(73024),e=c(76760),f=c.n(e),g=c(77598),h=c.n(g),i=c(73652);let j=(0,i._)(),k=f().join(j,"registry.json"),l={version:1,entries:[]},m="home";function n(){return{id:m,path:f().join((0,i._)(),"home"),addedAt:"1970-01-01T00:00:00.000Z"}}function o(a){return a===m}function p(a){return h().createHash("sha1").update(f().resolve(a)).digest("hex").slice(0,16)}async function q(){try{let a=await d.promises.readFile(k,"utf8"),b=JSON.parse(a);if("object"==typeof b&&null!==b&&"entries"in b&&Array.isArray(b.entries))return b;return l}catch(a){if("object"==typeof a&&null!==a&&"code"in a&&"ENOENT"===a.code)return l;throw a}}async function r(a){await d.promises.mkdir(j,{recursive:!0}),await d.promises.writeFile(k,JSON.stringify(a,null,2)+"\n","utf8")}async function s(){return[...(await q()).entries].sort((a,b)=>Date.parse(b.addedAt)-Date.parse(a.addedAt))}async function t(a){return a===m?n():(await q()).entries.find(b=>b.id===a)??null}async function u(a){let b=f().resolve(a),c=p(b),d=await q(),e=d.entries.find(a=>a.id===c);if(e)return e;let g={id:c,path:b,addedAt:new Date().toISOString()};return await r({...d,entries:[...d.entries,g]}),g}async function v(a){let b=await q();await r({...b,entries:b.entries.filter(b=>b.id!==a)})}async function w(a){let b=await q(),c=b.entries.findIndex(b=>b.id===a);if(c<0)return;let d=[...b.entries],e=d[c];d[c]={...e,lastInitAt:new Date().toISOString()},await r({...b,entries:d})}},54287:(a,b,c)=>{"use strict";c.d(b,{FF:()=>k,KZ:()=>g,Lj:()=>h,VU:()=>i,a:()=>j,eQ:()=>l,fW:()=>f,x9:()=>m});var d=c(76760),e=c.n(d);let f=".reflex",g=".reflexignore",h=new Set([".reflex",".git","node_modules",".DS_Store"]),i=18e5,j=1e3;function k(a){return e().join(a,f)}function l(a){return e().join(k(a),"config.json")}function m(a,b){return e().join(k(a),b)}},54578:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{sendTelegram:()=>o,y:()=>u});var e=c(73024),f=c(76760),g=c.n(f),h=c(29163),i=c(17640),j=c(31900),k=c(16909),l=c(74342),m=a([j,k]);[j,k]=m.then?(await m)():m;let F=g().join((0,h._)(),"notify","telegram-state.json");function n(a,b){return`https://api.telegram.org/bot${a}/${b}`}async function o(a,b){let c=[];b.title&&c.push(`*${t(b.title)}*`),c.push(t(b.body)),b.link&&c.push(b.link),await q(a.botToken,a.chatId,c.join("\n\n"))}async function p(a,b,c){try{let d=await fetch(n(a,b),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c),signal:AbortSignal.timeout(15e3)});return await d.json()}catch{return{ok:!1}}}async function q(a,b,c){let d=c.slice(0,4e3);(await p(a,"sendMessage",{chat_id:b,text:d,parse_mode:"Markdown",disable_web_page_preview:!0})).ok||await p(a,"sendMessage",{chat_id:b,text:d})}async function r(a,b,c){let d=await p(a,"sendMessage",{chat_id:b,text:c.slice(0,4e3),disable_web_page_preview:!0});return d.ok&&d.result?.message_id?d.result.message_id:null}async function s(a,b,c,d){await p(a,"editMessageText",{chat_id:b,message_id:c,text:d.slice(0,4e3),disable_web_page_preview:!0})}function t(a){return a.replace(/([*_`\[])/g,"\\$1")}function u(){if(globalThis.__reflexTelegramPoller)return;let a={running:!1,stop:!1};globalThis.__reflexTelegramPoller=a,v(a)}async function v(a){if(a.running)return;a.running=!0;let b=await C();for(;!a.stop;){let a=null;try{a=(await (0,i.loadSettings)()).notify?.telegram??null}catch{}if(!a||!a.enabled||!a.botToken){await E(15e3);continue}try{for(let c of(await w(a.botToken,b)))await x(a,c).catch(a=>{console.error("[telegram] handleUpdate:",a instanceof Error?a.message:a)}),b=c.update_id+1,await D(b)}catch(a){console.error("[telegram] getUpdates:",a instanceof Error?a.message:a),await E(5e3)}}a.running=!1}async function w(a,b){let c=`${n(a,"getUpdates")}?timeout=30&offset=${b}&allowed_updates=["message"]`,d=await fetch(c,{signal:AbortSignal.timeout(4e4)});if(!d.ok)throw Error(`getUpdates HTTP ${d.status}`);return(await d.json()).result??[]}async function x(a,b){let d=b.message?.chat?.id;if(void 0===d)return;let e=b.message?.photo??[],f=(b.message?.text??b.message?.caption??"").trim();if(!f&&0===e.length)return;!f&&e.length>0&&(f="What's in this image?");let g=a.chatId;if(!g){g=String(d);try{let{loadSettings:a,saveSettings:b}=await Promise.resolve().then(c.bind(c,17640)),d=await a();await b({...d,notify:{...d.notify,telegram:{...d.notify.telegram,chatId:g}}})}catch{}await q(a.botToken,g,"Connected ✅ — I'll answer here from now on.")}if(String(d)!==String(g))return;let{getDispatcherTopic:h}=await c.e(6142).then(c.bind(c,26142)),i=await h(),j=[];if(e.length>0){let b=e[e.length-1],c=await y(a.botToken,b.file_id,i.rootPath).catch(()=>null);c&&j.push(c)}await z(a.botToken,g,i.rootId,i.rootPath,i.topicId,f,j)}async function y(a,b,c){let d=await p(a,"getFile",{file_id:b}),f=d.result?.file_path;if(!d.ok||!f)return null;let h=await fetch(`https://api.telegram.org/file/bot${a}/${f}`,{signal:AbortSignal.timeout(3e4)});if(!h.ok)return null;let i=new Uint8Array(await h.arrayBuffer()),j=g().join(c,".reflex","attachments");await e.promises.mkdir(j,{recursive:!0});let k=`tg-${Date.now().toString(36)}-${g().basename(f)}`,l=g().join(j,k);return await e.promises.writeFile(l,i),{name:k,absPath:l,size:i.length,mime:f.endsWith(".png")?"image/png":"image/jpeg"}}async function z(a,b,c,d,e,f,g=[]){let h=(await (0,l.readEvents)(d,e)).length,i=await (0,j.startOrchestratorTurn)({rootId:c,topicId:e,message:f,attachments:g});if("error"in i)return void await q(a,b,`⚠️ ${i.error}`);let m=await r(a,b,"\uD83D\uDCAD…"),n=async()=>(await (0,l.readEvents)(d,e)).slice(h).filter(a=>"assistant-delta"===a.type).map(a=>a.text).join("").replace(/<{1,2}reflex:[a-z-]+>{1,2}[\s\S]*?<{1,2}\/reflex:[a-z-]+>{1,2}/g,"").replace(/<{1,2}reflex:[a-z-]+>{1,2}[\s\S]*$/g,"").replace(/\n{3,}/g,"\n\n").trim(),o=Date.now()+24e4,p="",t=0;for(await E(400);Date.now()<o;){let c=k.z.isActive(e),d=(await n()).slice(0,4e3);if(m&&d&&d!==p&&Date.now()-t>=1500&&(await s(a,b,m,d),p=d,t=Date.now()),!c)break;await E(600)}await E(400);let u=await n()||"(no reply)",v=u.slice(0,4e3);m?v!==p&&await s(a,b,m,v):await q(a,b,v);for(let c=4e3;c<u.length;c+=4e3)await q(a,b,u.slice(c,c+4e3))}async function A(){try{return JSON.parse(await e.promises.readFile(F,"utf8"))}catch{return{}}}async function B(a){await e.promises.mkdir(g().dirname(F),{recursive:!0}),await e.promises.writeFile(F,JSON.stringify(a,null,2),"utf8")}async function C(){return(await A()).offset??0}async function D(a){let b=await A();await B({...b,offset:a})}function E(a){return new Promise(b=>setTimeout(b,a))}d()}catch(a){d(a)}})},55143:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{n:()=>n,runWorkflow:()=>m});var e=c(77598),f=c.n(e),g=c(53905),h=c(73928),i=c(30516),j=c(59895),k=c(36724),l=a([k]);async function m(a,b,d){let e=await (0,g.getRoot)(a);if(!e)return{ok:!1,error:"Root not found"};let l=await (0,h.readWorkflow)(e.path,b);if(!l){let{collectExtensions:d}=await Promise.resolve().then(c.bind(c,35961));l=(await d({rootId:a})).workflows.find(a=>a.id===b)??null}if(!l)return{ok:!1,error:"Workflow not found"};let m={id:function(){let a=new Date().toISOString().replace(/[:.]/g,"-").slice(0,19),b=f().randomBytes(3).toString("hex");return`${a}-${b}`}(),workflowId:l.id,workflowLabel:l.label,status:"running",startedAt:new Date().toISOString(),steps:l.steps.map(a=>({stepId:a.id,status:"pending"})),...void 0!==d?{initialInput:d}:{}};await (0,h.bp)(e.path,m);let n={},o=d,p={rootId:a,rootPath:e.path,workflow:{id:l.id,label:l.label}};for(let a=0;a<l.steps.length;a++){let b=l.steps[a],c=m.steps[a];c.status="running",c.startedAt=new Date().toISOString(),await (0,h.bp)(e.path,m);try{let a=k.L[b.kind];if(!a)throw Error(`Unknown node kind: ${b.kind}`);let e=(0,j.V)(b.params,{prev:o,steps:n,input:d,workflow:{id:l.id,label:l.label}}),f=(0,i.P)(b.kind,e);c.renderedParams=f;let g=await a(f,p);c.output=g,c.status="completed",c.finishedAt=new Date().toISOString(),n[b.id]={output:g},o=g}catch(a){return c.status="failed",c.error=a instanceof Error?a.message:String(a),c.finishedAt=new Date().toISOString(),m.status="failed",m.finishedAt=new Date().toISOString(),await (0,h.bp)(e.path,m),(0,h.lq)(e.path,l.id),{ok:!0,run:m}}await (0,h.bp)(e.path,m)}return m.status="completed",m.finishedAt=new Date().toISOString(),await (0,h.bp)(e.path,m),(0,h.lq)(e.path,l.id),{ok:!0,run:m}}function n(a){if(!a.id||"string"!=typeof a.id)return"id is required";if(!a.label||"string"!=typeof a.label)return"label is required";if(!Array.isArray(a.steps)||0===a.steps.length)return"steps[] cannot be empty";let b=new Set;for(let c of a.steps){if(!c.id)return"every step must have an id";if(b.has(c.id))return`Duplicate step id: ${c.id}`;if(b.add(c.id),!k.L[c.kind])return`Unknown step kind: ${c.kind}`}return null}k=(l.then?(await l)():l)[0],d()}catch(a){d(a)}})},56942:(a,b,c)=>{"use strict";c.d(b,{j:()=>j});var d=c(73024),e=c(76760),f=c.n(e),g=c(87841),h=c.n(g),i=c(54287);async function j(a){var b;let{rootPath:c,directive:e,provenance:g}=a,j=k(e.kind)||"note",m=new Date().toISOString().slice(0,10),n=((b=e.date)&&/^\d{4}-\d{2}-\d{2}$/.test(b)?b:null)??m,o=k(e.slug&&e.slug.trim()?e.slug:e.title)||"entry",p=`${n}-${o}`,q=f().join((0,i.FF)(c),j);await d.promises.mkdir(q,{recursive:!0});let r=await l(q,p,".md"),s={title:e.title,kind:j,date:n,version:1,...e.meta&&"object"==typeof e.meta?e.meta:{}};g&&(s.createdBy=`${g.kind}:${g.id}${g.version?"@"+g.version:""}`);let t=(e.body??"").replace(/\r\n/g,"\n").trimEnd(),u=h().stringify(t?t+"\n":"",s);await d.promises.writeFile(r,u,"utf8");let v=f().relative((0,i.FF)(c),r).split(f().sep).join("/");return{kind:j,title:e.title,relPath:v,absPath:r}}function k(a){return a.normalize("NFKD").toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"").slice(0,60)}async function l(a,b,c){let d=f().join(a,b+c),e=1;for(;await m(d);){if(e>99){d=f().join(a,`${b}-${Date.now().toString(36)}${c}`);break}d=f().join(a,`${b}-${++e}${c}`)}return d}async function m(a){try{return await d.promises.access(a),!0}catch{return!1}}},59377:(a,b,c)=>{"use strict";c.d(b,{He:()=>o,Nb:()=>s,Tf:()=>l,dt:()=>n,listCodexModels:()=>q});var d=c(93628),e=c(73024),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(31421);let k=null;function l(){return k||(k=new d.U),k}let m=null;async function n(){return m||(m=(async()=>{let a=process.env.CODEX_HOME||i().join(g().homedir(),".codex"),b=i().join(a,"skills",".system","imagegen"),c=i().join(b,"SKILL.md");try{await e.promises.access(c);return}catch{}let d=i().join(process.cwd(),"lib","server","codex","skills","imagegen","SKILL.md");try{await e.promises.mkdir(b,{recursive:!0}),await e.promises.copyFile(d,c)}catch(a){console.warn("Failed to install Reflex imagegen skill into $CODEX_HOME:",a instanceof Error?a.message:a)}})())}function o(){let a=process.env.CODEX_HOME||i().join(g().homedir(),".codex");return i().join(a,"generated_images")}let p=null;async function q(a={}){if(!a.force&&p&&Date.now()-p.at<6e4)return p.models;let b=await r();return p={at:Date.now(),models:b},b}async function r(){return new Promise((a,b)=>{let c=(0,j.spawn)("codex",["app-server"],{stdio:["pipe","pipe","pipe"]}),d="",e=!1,f=()=>{try{c.kill("SIGTERM")}catch{}},g=setTimeout(()=>{e||(e=!0,f(),b(Error("codex app-server model/list timed out")))},1e4);c.on("error",a=>{e||(e=!0,clearTimeout(g),b(a))}),c.stdout.on("data",b=>{let c=(d+=b.toString("utf8")).indexOf("\n");for(;c>=0;){let b=d.slice(0,c).trim();if(d=d.slice(c+1),b.length>0)try{let c=JSON.parse(b);if(2===c.id&&c.result&&Array.isArray(c.result.data)){let b=[];for(let a of c.result.data)"string"==typeof a?.id&&b.push({id:a.id,displayName:"string"==typeof a.displayName?a.displayName:a.id,description:"string"==typeof a.description?a.description:"",hidden:!0===a.hidden,isDefault:!0===a.isDefault});if(!e){e=!0,clearTimeout(g),f(),a(b);return}}}catch{}c=d.indexOf("\n")}}),c.stderr.on("data",()=>{}),c.stdin.write(JSON.stringify({jsonrpc:"2.0",id:1,method:"initialize",params:{clientInfo:{name:"reflex",title:"Reflex",version:"0.0.0"},capabilities:{}}})+"\n"),c.stdin.write(JSON.stringify({jsonrpc:"2.0",method:"initialized",params:{}})+"\n"),c.stdin.write(JSON.stringify({jsonrpc:"2.0",id:2,method:"model/list",params:{}})+"\n"),c.stdin.end()})}async function s(a){if(!a)return;let b=process.env.CODEX_HOME||i().join(g().homedir(),".codex"),c=i().join(b,"sessions"),d=new Date;for(let b of[-1,0,1]){let f,g=new Date(d);g.setDate(g.getDate()+b);let h=i().join(c,String(g.getFullYear()),String(g.getMonth()+1).padStart(2,"0"),String(g.getDate()).padStart(2,"0"));try{f=await e.promises.readdir(h)}catch{continue}for(let b of f)b.includes(a)&&await e.promises.unlink(i().join(h,b)).catch(()=>{})}}},59788:(a,b,c)=>{"use strict";c.d(b,{R:()=>f});var d=c(84579),e=c(53905);async function f(a){let b=function(a){let b=a.trim();if(b.startsWith("{")&&b.endsWith("}"))try{let a=JSON.parse(b),c={prompt:"string"==typeof a.prompt&&a.prompt.trim().length>0?a.prompt:b};return("gemini"===a.provider||"codex"===a.provider)&&(c.provider=a.provider),"string"==typeof a.size&&(c.size=a.size),"string"==typeof a.aspectRatio&&(c.aspectRatio=a.aspectRatio),"string"==typeof a.alt&&(c.alt=a.alt),c}catch{}return{prompt:b}}(a.args.prompt),c=(0,e.rootId)(a.args.rootPath);try{var f;let e=await (0,d.generateImage)({rootId:c,prompt:b.prompt,...b.provider?{provider:b.provider}:{},...b.size?{size:b.size}:{},...b.aspectRatio?{aspectRatio:b.aspectRatio}:{},...b.alt?{alt:b.alt}:{}}),g=b.alt||b.prompt,h=`![${g.replace(/[\[\]\n]/g," ").slice(0,200)}](${e.urlPath})
|
|
264
|
+
${a.args.prompt}`:a.args.prompt,e=await b.runStreamed(c),f=new Map;try{for await(let b of e.events)if("item.started"!==b.type){if("item.updated"===b.type||"item.completed"===b.type){let c=b.item;if("agent_message"===c.type){let b=f.get(c.id)??"",d=c.text.slice(b.length);d.length>0&&(f.set(c.id,c.text),await a.manager.emit({type:"assistant-delta",text:d,agentId:a.meta.id,ts:new Date().toISOString(),seq:0}));continue}if("command_execution"===c.type&&"item.completed"===b.type){await a.manager.emit({type:"tool-use",toolUseId:c.id,name:"Bash",input:{command:c.command},agentId:a.meta.id,ts:new Date().toISOString(),seq:0}),await a.manager.emit({type:"tool-result",toolUseId:c.id,content:c.aggregated_output??"",...0!==c.exit_code?{isError:!0}:{},agentId:a.meta.id,ts:new Date().toISOString(),seq:0});continue}if("file_change"===c.type&&"item.completed"===b.type){await a.manager.emit({type:"tool-use",toolUseId:c.id,name:"FileChange",input:{changes:c.changes},agentId:a.meta.id,ts:new Date().toISOString(),seq:0}),await a.manager.emit({type:"tool-result",toolUseId:c.id,content:`${c.status}: ${c.changes.map(a=>`${a.kind} ${a.path}`).join(", ")}`,..."failed"===c.status?{isError:!0}:{},agentId:a.meta.id,ts:new Date().toISOString(),seq:0});continue}if("mcp_tool_call"===c.type&&"item.completed"===b.type){await a.manager.emit({type:"tool-use",toolUseId:c.id,name:`mcp:${c.server}:${c.tool}`,input:c.arguments,agentId:a.meta.id,ts:new Date().toISOString(),seq:0});let b=c.error?c.error.message:JSON.stringify(c.result?.content??[]).slice(0,4e3);await a.manager.emit({type:"tool-result",toolUseId:c.id,content:b,...c.error?{isError:!0}:{},agentId:a.meta.id,ts:new Date().toISOString(),seq:0});continue}if("web_search"===c.type&&"item.completed"===b.type){await a.manager.emit({type:"tool-use",toolUseId:c.id,name:"WebSearch",input:{query:c.query},agentId:a.meta.id,ts:new Date().toISOString(),seq:0});continue}"error"===c.type&&"item.completed"===b.type&&await a.manager.emit({type:"error",message:c.message,agentId:a.meta.id,ts:new Date().toISOString(),seq:0});continue}if("turn.failed"===b.type)throw await a.manager.emit({type:"error",message:`codex turn failed: ${b.error.message}`,agentId:a.meta.id,ts:new Date().toISOString(),seq:0}),Error(b.error.message);if("error"===b.type)throw await a.manager.emit({type:"error",message:b.message,agentId:a.meta.id,ts:new Date().toISOString(),seq:0}),Error(b.message)}}finally{await (0,d.Nb)(b.id)}}},53905:(a,b,c)=>{"use strict";c.r(b),c.d(b,{HOME_ROOT_ID:()=>m,addRoot:()=>u,getRoot:()=>t,homeRootEntry:()=>n,isHomeRoot:()=>o,listRoots:()=>s,markInitialized:()=>w,removeRoot:()=>v,rootId:()=>p});var d=c(73024),e=c(76760),f=c.n(e),g=c(77598),h=c.n(g),i=c(73652);let j=(0,i._)(),k=f().join(j,"registry.json"),l={version:1,entries:[]},m="home";function n(){return{id:m,path:f().join((0,i._)(),"home"),addedAt:"1970-01-01T00:00:00.000Z"}}function o(a){return a===m}function p(a){return h().createHash("sha1").update(f().resolve(a)).digest("hex").slice(0,16)}async function q(){try{let a=await d.promises.readFile(k,"utf8"),b=JSON.parse(a);if("object"==typeof b&&null!==b&&"entries"in b&&Array.isArray(b.entries))return b;return l}catch(a){if("object"==typeof a&&null!==a&&"code"in a&&"ENOENT"===a.code)return l;throw a}}async function r(a){await d.promises.mkdir(j,{recursive:!0}),await d.promises.writeFile(k,JSON.stringify(a,null,2)+"\n","utf8")}async function s(){return[...(await q()).entries].sort((a,b)=>Date.parse(b.addedAt)-Date.parse(a.addedAt))}async function t(a){return a===m?n():(await q()).entries.find(b=>b.id===a)??null}async function u(a){let b=f().resolve(a),c=p(b),d=await q(),e=d.entries.find(a=>a.id===c);if(e)return e;let g={id:c,path:b,addedAt:new Date().toISOString()};return await r({...d,entries:[...d.entries,g]}),g}async function v(a){let b=await q();await r({...b,entries:b.entries.filter(b=>b.id!==a)})}async function w(a){let b=await q(),c=b.entries.findIndex(b=>b.id===a);if(c<0)return;let d=[...b.entries],e=d[c];d[c]={...e,lastInitAt:new Date().toISOString()},await r({...b,entries:d})}},54287:(a,b,c)=>{"use strict";c.d(b,{FF:()=>k,KZ:()=>g,Lj:()=>h,VU:()=>i,a:()=>j,eQ:()=>l,fW:()=>f,x9:()=>m});var d=c(76760),e=c.n(d);let f=".reflex",g=".reflexignore",h=new Set([".reflex",".git","node_modules",".DS_Store"]),i=18e5,j=1e3;function k(a){return e().join(a,f)}function l(a){return e().join(k(a),"config.json")}function m(a,b){return e().join(k(a),b)}},55143:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{n:()=>n,runWorkflow:()=>m});var e=c(77598),f=c.n(e),g=c(53905),h=c(73928),i=c(30516),j=c(59895),k=c(36724),l=a([k]);async function m(a,b,d){let e=await (0,g.getRoot)(a);if(!e)return{ok:!1,error:"Root not found"};let l=await (0,h.readWorkflow)(e.path,b);if(!l){let{collectExtensions:d}=await Promise.resolve().then(c.bind(c,35961));l=(await d({rootId:a})).workflows.find(a=>a.id===b)??null}if(!l)return{ok:!1,error:"Workflow not found"};let m={id:function(){let a=new Date().toISOString().replace(/[:.]/g,"-").slice(0,19),b=f().randomBytes(3).toString("hex");return`${a}-${b}`}(),workflowId:l.id,workflowLabel:l.label,status:"running",startedAt:new Date().toISOString(),steps:l.steps.map(a=>({stepId:a.id,status:"pending"})),...void 0!==d?{initialInput:d}:{}};await (0,h.bp)(e.path,m);let n={},o=d,p={rootId:a,rootPath:e.path,workflow:{id:l.id,label:l.label}};for(let a=0;a<l.steps.length;a++){let b=l.steps[a],c=m.steps[a];c.status="running",c.startedAt=new Date().toISOString(),await (0,h.bp)(e.path,m);try{let a=k.L[b.kind];if(!a)throw Error(`Unknown node kind: ${b.kind}`);let e=(0,j.V)(b.params,{prev:o,steps:n,input:d,workflow:{id:l.id,label:l.label}}),f=(0,i.P)(b.kind,e);c.renderedParams=f;let g=await a(f,p);c.output=g,c.status="completed",c.finishedAt=new Date().toISOString(),n[b.id]={output:g},o=g}catch(a){return c.status="failed",c.error=a instanceof Error?a.message:String(a),c.finishedAt=new Date().toISOString(),m.status="failed",m.finishedAt=new Date().toISOString(),await (0,h.bp)(e.path,m),(0,h.lq)(e.path,l.id),{ok:!0,run:m}}await (0,h.bp)(e.path,m)}return m.status="completed",m.finishedAt=new Date().toISOString(),await (0,h.bp)(e.path,m),(0,h.lq)(e.path,l.id),{ok:!0,run:m}}function n(a){if(!a.id||"string"!=typeof a.id)return"id is required";if(!a.label||"string"!=typeof a.label)return"label is required";if(!Array.isArray(a.steps)||0===a.steps.length)return"steps[] cannot be empty";let b=new Set;for(let c of a.steps){if(!c.id)return"every step must have an id";if(b.has(c.id))return`Duplicate step id: ${c.id}`;if(b.add(c.id),!k.L[c.kind])return`Unknown step kind: ${c.kind}`}return null}k=(l.then?(await l)():l)[0],d()}catch(a){d(a)}})},56942:(a,b,c)=>{"use strict";c.d(b,{j:()=>j});var d=c(73024),e=c(76760),f=c.n(e),g=c(87841),h=c.n(g),i=c(54287);async function j(a){var b;let{rootPath:c,directive:e,provenance:g}=a,j=k(e.kind)||"note",m=new Date().toISOString().slice(0,10),n=((b=e.date)&&/^\d{4}-\d{2}-\d{2}$/.test(b)?b:null)??m,o=k(e.slug&&e.slug.trim()?e.slug:e.title)||"entry",p=`${n}-${o}`,q=f().join((0,i.FF)(c),j);await d.promises.mkdir(q,{recursive:!0});let r=await l(q,p,".md"),s={title:e.title,kind:j,date:n,version:1,...e.meta&&"object"==typeof e.meta?e.meta:{}};g&&(s.createdBy=`${g.kind}:${g.id}${g.version?"@"+g.version:""}`);let t=(e.body??"").replace(/\r\n/g,"\n").trimEnd(),u=h().stringify(t?t+"\n":"",s);await d.promises.writeFile(r,u,"utf8");let v=f().relative((0,i.FF)(c),r).split(f().sep).join("/");return{kind:j,title:e.title,relPath:v,absPath:r}}function k(a){return a.normalize("NFKD").toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"").slice(0,60)}async function l(a,b,c){let d=f().join(a,b+c),e=1;for(;await m(d);){if(e>99){d=f().join(a,`${b}-${Date.now().toString(36)}${c}`);break}d=f().join(a,`${b}-${++e}${c}`)}return d}async function m(a){try{return await d.promises.access(a),!0}catch{return!1}}},59377:(a,b,c)=>{"use strict";c.d(b,{He:()=>o,Nb:()=>s,Tf:()=>l,dt:()=>n,listCodexModels:()=>q});var d=c(93628),e=c(73024),f=c(48161),g=c.n(f),h=c(76760),i=c.n(h),j=c(31421);let k=null;function l(){return k||(k=new d.U),k}let m=null;async function n(){return m||(m=(async()=>{let a=process.env.CODEX_HOME||i().join(g().homedir(),".codex"),b=i().join(a,"skills",".system","imagegen"),c=i().join(b,"SKILL.md");try{await e.promises.access(c);return}catch{}let d=i().join(process.cwd(),"lib","server","codex","skills","imagegen","SKILL.md");try{await e.promises.mkdir(b,{recursive:!0}),await e.promises.copyFile(d,c)}catch(a){console.warn("Failed to install Reflex imagegen skill into $CODEX_HOME:",a instanceof Error?a.message:a)}})())}function o(){let a=process.env.CODEX_HOME||i().join(g().homedir(),".codex");return i().join(a,"generated_images")}let p=null;async function q(a={}){if(!a.force&&p&&Date.now()-p.at<6e4)return p.models;let b=await r();return p={at:Date.now(),models:b},b}async function r(){return new Promise((a,b)=>{let c=(0,j.spawn)("codex",["app-server"],{stdio:["pipe","pipe","pipe"]}),d="",e=!1,f=()=>{try{c.kill("SIGTERM")}catch{}},g=setTimeout(()=>{e||(e=!0,f(),b(Error("codex app-server model/list timed out")))},1e4);c.on("error",a=>{e||(e=!0,clearTimeout(g),b(a))}),c.stdout.on("data",b=>{let c=(d+=b.toString("utf8")).indexOf("\n");for(;c>=0;){let b=d.slice(0,c).trim();if(d=d.slice(c+1),b.length>0)try{let c=JSON.parse(b);if(2===c.id&&c.result&&Array.isArray(c.result.data)){let b=[];for(let a of c.result.data)"string"==typeof a?.id&&b.push({id:a.id,displayName:"string"==typeof a.displayName?a.displayName:a.id,description:"string"==typeof a.description?a.description:"",hidden:!0===a.hidden,isDefault:!0===a.isDefault});if(!e){e=!0,clearTimeout(g),f(),a(b);return}}}catch{}c=d.indexOf("\n")}}),c.stderr.on("data",()=>{}),c.stdin.write(JSON.stringify({jsonrpc:"2.0",id:1,method:"initialize",params:{clientInfo:{name:"reflex",title:"Reflex",version:"0.0.0"},capabilities:{}}})+"\n"),c.stdin.write(JSON.stringify({jsonrpc:"2.0",method:"initialized",params:{}})+"\n"),c.stdin.write(JSON.stringify({jsonrpc:"2.0",id:2,method:"model/list",params:{}})+"\n"),c.stdin.end()})}async function s(a){if(!a)return;let b=process.env.CODEX_HOME||i().join(g().homedir(),".codex"),c=i().join(b,"sessions"),d=new Date;for(let b of[-1,0,1]){let f,g=new Date(d);g.setDate(g.getDate()+b);let h=i().join(c,String(g.getFullYear()),String(g.getMonth()+1).padStart(2,"0"),String(g.getDate()).padStart(2,"0"));try{f=await e.promises.readdir(h)}catch{continue}for(let b of f)b.includes(a)&&await e.promises.unlink(i().join(h,b)).catch(()=>{})}}},59788:(a,b,c)=>{"use strict";c.d(b,{R:()=>f});var d=c(84579),e=c(53905);async function f(a){let b=function(a){let b=a.trim();if(b.startsWith("{")&&b.endsWith("}"))try{let a=JSON.parse(b),c={prompt:"string"==typeof a.prompt&&a.prompt.trim().length>0?a.prompt:b};return("gemini"===a.provider||"codex"===a.provider)&&(c.provider=a.provider),"string"==typeof a.size&&(c.size=a.size),"string"==typeof a.aspectRatio&&(c.aspectRatio=a.aspectRatio),"string"==typeof a.alt&&(c.alt=a.alt),c}catch{}return{prompt:b}}(a.args.prompt),c=(0,e.rootId)(a.args.rootPath);try{var f;let e=await (0,d.generateImage)({rootId:c,prompt:b.prompt,...b.provider?{provider:b.provider}:{},...b.size?{size:b.size}:{},...b.aspectRatio?{aspectRatio:b.aspectRatio}:{},...b.alt?{alt:b.alt}:{}}),g=b.alt||b.prompt,h=`![${g.replace(/[\[\]\n]/g," ").slice(0,200)}](${e.urlPath})
|
|
265
265
|
|
|
266
266
|
_generated: ${e.provider} \xb7 ${(f=e.size)<1024?`${f} B`:f<1048576?`${(f/1024).toFixed(1)} KB`:`${(f/1048576).toFixed(2)} MB`}_
|
|
267
267
|
`;await a.manager.emit({type:"assistant-delta",text:h,agentId:a.meta.id,ts:new Date().toISOString(),seq:0})}catch(c){let b=c instanceof Error?c.message:String(c);throw await a.manager.emit({type:"assistant-delta",text:`Failed to generate image: ${b}
|
|
268
|
-
`,agentId:a.meta.id,ts:new Date().toISOString(),seq:0}),c}}},59895:(a,b,c)=>{"use strict";c.d(b,{V:()=>e});let d=/\{\{\s*([^{}\s][^{}]*?)\s*\}\}/g;function e(a,b){return function a(b,c){if("string"==typeof b)return b.replace(d,(a,b)=>(function(a){if(null==a)return"";if("string"==typeof a)return a;if("number"==typeof a||"boolean"==typeof a)return String(a);try{return JSON.stringify(a)}catch{return String(a)}})(function(a,b){if("prev"===a)return b.prev;if(a.startsWith("workflow.")){let c=a.slice(9);return b.workflow[c]}if(a.startsWith("input."))return f(b.input,a.slice(6));if(a.startsWith("input"))return b.input;if(a.startsWith("steps.")){let[c,...d]=a.slice(6).split(".");if(!c)return;let e=b.steps[c];if(!e)return;if(0===d.length||1===d.length&&"output"===d[0])return e.output;if("output"===d[0])return f(e.output,d.slice(1).join("."))}}(b.trim(),c)));if(Array.isArray(b))return b.map(b=>a(b,c));if(b&&"object"==typeof b){let d={};for(let[e,f]of Object.entries(b))d[e]=a(f,c);return d}return b}(a,b)}function f(a,b){if(!b)return a;let c=b.split("."),d=a;for(let a of c){if(null==d||"object"!=typeof d)return;d=d[a]}return d}},60633:(a,b,c)=>{"use strict";c.d(b,{AppSidebar:()=>N});var d=c(64173),e=c(17240),f=c(1056),g=c.n(f),h=c(87671),i=c(44052),j=c(71813),k=c(69552),l=c(61636),m=c(15666),n=c(58405),o=c(58507),p=c(98463),q=c(68669),r=c(62261),s=c(53186),t=c(51348),u=c(97338),v=c(5200),w=c(88724),x=c(27456),y=c(46013),z=c(20583),A=c(3265);let B=(0,A.createServerReference)("40cef119c5313a938bc41b2be902ff6eed04cb333e",A.callServer,void 0,A.findSourceMapURL,"loadKbSectionsAction"),C=(0,A.createServerReference)("40a46918919494fdc72de40d35407e5ef6085de6ce",A.callServer,void 0,A.findSourceMapURL,"loadTopicsAction"),D=(0,A.createServerReference)("40189964def749f07c8c3b740f5c74b51616fd93e7",A.callServer,void 0,A.findSourceMapURL,"loadSidebarMemoryAction"),E=(0,A.createServerReference)("401d5aa44719bfd0d07dad0a42e0b2b3b96cc3c3f7",A.callServer,void 0,A.findSourceMapURL,"loadSidebarUtilitiesAction"),F=(0,A.createServerReference)("00d670f90aee8bee4f39627591d9319564f27971cb",A.callServer,void 0,A.findSourceMapURL,"listRootsAction"),G=(0,A.createServerReference)("40768bbcc710c08acdabab448ce69fafadd7510b4f",A.callServer,void 0,A.findSourceMapURL,"listAgentsAction");var H=c(97162),I=c(29370),J=c(64527),K=c(65266),L=c(10082),M=c(89339);function N({initialRoots:a}){let b=(0,h.usePathname)(),c=(0,j.c)("app"),[f,i]=(0,e.useState)(a),n=(0,e.useCallback)(async()=>{let a=await F();a.ok&&i(a.entries)},[]);return((0,w.S9)(w.Zi.rootsChanged,n),b?.startsWith("/share/")||"/share"===b)?null:(0,d.jsxs)("aside",{className:"w-72 shrink-0 border-r bg-muted/30 flex flex-col",children:[(0,d.jsxs)("div",{className:"px-4 py-4 flex items-center gap-2 border-b",children:[(0,d.jsx)("span",{className:"reflex-gradient inline-flex h-7 w-7 items-center justify-center rounded-lg text-white shadow-sm",children:(0,d.jsx)(k.A,{className:"h-4 w-4"})}),(0,d.jsxs)("div",{className:"leading-tight",children:[(0,d.jsx)(g(),{href:"/",className:"text-sm font-semibold tracking-tight hover:underline",children:"Reflex"}),(0,d.jsx)("div",{className:"text-[10px] uppercase tracking-wider text-muted-foreground",children:"knowledge base"})]})]}),(0,d.jsx)(x.F,{className:"flex-1",children:(0,d.jsxs)("nav",{className:"px-2 pt-3 pb-6",children:[(0,d.jsx)("div",{className:"px-2 mb-1 text-[10px] uppercase tracking-wider text-muted-foreground",children:c("sidebar.spaces")}),0===f.length?(0,d.jsx)("div",{className:"px-2 py-3 text-xs text-muted-foreground",children:c("sidebar.empty")}):(0,d.jsx)("ul",{className:"space-y-0.5",children:f.map(a=>(0,d.jsx)(O,{root:a,active:b?.startsWith(`/roots/${a.id}`)??!1},a.id))}),(0,d.jsx)("div",{className:"mt-2 px-2",children:(0,d.jsx)(z.$,{asChild:!0,variant:"ghost",size:"sm",className:"h-7 w-full justify-start text-xs",children:(0,d.jsxs)(g(),{href:"/roots/new",children:[(0,d.jsx)(l.A,{className:"mr-1 h-3.5 w-3.5"})," ",c("sidebar.addSpace")]})})})]})}),(0,d.jsx)(y.Separator,{}),(0,d.jsxs)("div",{className:"px-2 py-2 space-y-0.5",children:[(0,d.jsx)(z.$,{asChild:!0,variant:"/utilities"===b||b?.startsWith("/utilities/")?"secondary":"ghost",size:"sm",className:"w-full justify-start",children:(0,d.jsxs)(g(),{href:"/utilities",children:[(0,d.jsx)(H.A,{className:"mr-2 h-4 w-4"})," ",c("sidebar.utilities")]})}),(0,d.jsx)(z.$,{asChild:!0,variant:"/audit"===b?"secondary":"ghost",size:"sm",className:"w-full justify-start",children:(0,d.jsxs)(g(),{href:"/audit",children:[(0,d.jsx)(I.A,{className:"mr-2 h-4 w-4"})," ",c("sidebar.audit")]})}),(0,d.jsx)(z.$,{asChild:!0,variant:"/settings"===b?"secondary":"ghost",size:"sm",className:"w-full justify-start",children:(0,d.jsxs)(g(),{href:"/settings",children:[(0,d.jsx)(m.A,{className:"mr-2 h-4 w-4"})," Settings"]})})]})]})}function O({root:a,active:b}){let c=(0,j.c)("app"),[f,i]=(0,e.useState)(b),[k,l]=(0,e.useState)(!1),[m,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(!1),[x,y]=(0,e.useState)(!1),[z,A]=(0,e.useState)(!1),[F,I]=(0,e.useState)(null),[L,M]=(0,e.useState)(null),[N,O]=(0,e.useState)(null),[Q,R]=(0,e.useState)(null),[U,V]=(0,e.useState)(null),[W,Y]=(0,e.useState)(!1),[Z,aa]=(0,e.useState)(!1),[ab,ac]=(0,e.useState)(!1),[ad,ae]=(0,e.useState)(!1),[af,ag]=(0,e.useState)(!1),ah=(0,h.usePathname)(),ai=(0,e.useCallback)(async()=>{Y(!0);let b=await B(a.id);Y(!1),b.ok?I(b.sections):I([])},[a.id]),aj=(0,e.useCallback)(async()=>{ac(!0);let b=await C(a.id);ac(!1),b.ok?O(b.topics):O([])},[a.id]),ak=(0,e.useCallback)(async()=>{ag(!0);let b=await G({rootId:a.id});ag(!1),b.ok?V(b.agents):V([])},[a.id]),al=(0,e.useCallback)(async()=>{aa(!0);let b=await D(a.id);aa(!1),b.ok?M(b.files):M([])},[a.id]),am=(0,e.useCallback)(async()=>{ae(!0);let b=await E(a.id);ae(!1),b.ok?R(b.utilities):R([])},[a.id]);(0,w.S9)(w.Zi.kbChanged(a.id),()=>{k?ai():I(null)}),(0,w.S9)(w.Zi.topicsChanged(a.id),()=>{u?aj():O(null),z?ak():V(null),x?am():R(null)});let an=async()=>{let a=!k;l(a),a&&null===F&&!W&&await ai()},ao=async()=>{let a=!m;t(a),a&&null===L&&!Z&&await al()},ap=async()=>{let a=!u;v(a),a&&null===N&&!ab&&await aj()},aq=async()=>{let a=!x;y(a),a&&null===Q&&!ad&&await am()},ar=async()=>{let a=!z;A(a),a&&null===U&&!af&&await ak()},as=function(a){let b=a.split("/").filter(Boolean);return b[b.length-1]??a}(a.path);return(0,d.jsxs)("li",{children:[(0,d.jsxs)("div",{className:"flex items-center group",children:[(0,d.jsx)("button",{type:"button",onClick:()=>i(a=>!a),className:"h-6 w-6 flex items-center justify-center text-muted-foreground hover:text-foreground shrink-0","aria-label":c(f?"sidebar.collapse":"sidebar.expand"),children:f?(0,d.jsx)(n.A,{className:"h-3.5 w-3.5"}):(0,d.jsx)(o.A,{className:"h-3.5 w-3.5"})}),(0,d.jsxs)(g(),{href:`/roots/${a.id}`,className:`flex-1 min-w-0 flex items-center gap-2 px-2 py-1 rounded-md text-sm hover:bg-accent ${b?"bg-accent":""}`,children:[(0,d.jsx)(p.A,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:as})]})]}),f&&(0,d.jsxs)("ul",{className:"ml-5 mt-0.5 space-y-0.5 border-l pl-1",children:[(0,d.jsxs)("li",{children:[(0,d.jsxs)("button",{type:"button",onClick:an,className:"w-full flex items-center gap-1 px-2 py-1 rounded-md text-xs text-muted-foreground hover:bg-accent hover:text-foreground",children:[k?(0,d.jsx)(n.A,{className:"h-3 w-3 shrink-0"}):(0,d.jsx)(o.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)(q.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:c("sidebar.kb")}),W&&(0,d.jsx)(r.A,{className:"ml-auto h-3 w-3 animate-spin shrink-0"})]}),k&&null!==F&&(0,d.jsx)(T,{rootId:a.id,sections:F,pathname:ah})]}),(0,d.jsxs)("li",{children:[(0,d.jsxs)("button",{type:"button",onClick:ao,className:"w-full flex items-center gap-1 px-2 py-1 rounded-md text-xs text-muted-foreground hover:bg-accent hover:text-foreground",children:[m?(0,d.jsx)(n.A,{className:"h-3 w-3 shrink-0"}):(0,d.jsx)(o.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)(J.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:c("sidebar.memory")}),Z&&(0,d.jsx)(r.A,{className:"ml-auto h-3 w-3 animate-spin shrink-0"})]}),m&&null!==L&&(0,d.jsx)($,{rootId:a.id,memory:L,pathname:ah})]}),(0,d.jsxs)("li",{children:[(0,d.jsxs)("button",{type:"button",onClick:ap,className:"w-full flex items-center gap-1 px-2 py-1 rounded-md text-xs text-muted-foreground hover:bg-accent hover:text-foreground",children:[u?(0,d.jsx)(n.A,{className:"h-3 w-3 shrink-0"}):(0,d.jsx)(o.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)(s.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:c("sidebar.topics")}),ab&&(0,d.jsx)(r.A,{className:"ml-auto h-3 w-3 animate-spin shrink-0"}),null!==N&&(0,d.jsx)("span",{className:"ml-auto text-[10px] text-muted-foreground",children:N.length})]}),u&&null!==N&&(0,d.jsx)(X,{rootId:a.id,topics:N,pathname:ah})]}),(0,d.jsxs)("li",{children:[(0,d.jsxs)("button",{type:"button",onClick:aq,className:"w-full flex items-center gap-1 px-2 py-1 rounded-md text-xs text-muted-foreground hover:bg-accent hover:text-foreground",children:[x?(0,d.jsx)(n.A,{className:"h-3 w-3 shrink-0"}):(0,d.jsx)(o.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)(H.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:c("sidebar.utilities")}),ad&&(0,d.jsx)(r.A,{className:"ml-auto h-3 w-3 animate-spin shrink-0"}),null!==Q&&!ad&&(0,d.jsx)("span",{className:"ml-auto text-[10px] text-muted-foreground",children:Q.length})]}),x&&null!==Q&&(0,d.jsx)(_,{rootId:a.id,utilities:Q,pathname:ah})]}),(0,d.jsxs)("li",{children:[(0,d.jsxs)("button",{type:"button",onClick:ar,className:"w-full flex items-center gap-1 px-2 py-1 rounded-md text-xs text-muted-foreground hover:bg-accent hover:text-foreground",children:[z?(0,d.jsx)(n.A,{className:"h-3 w-3 shrink-0"}):(0,d.jsx)(o.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)(K.A,{className:"h-3 w-3 shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:c("sidebar.agents")}),af&&(0,d.jsx)(r.A,{className:"ml-auto h-3 w-3 animate-spin shrink-0"}),null!==U&&!af&&(0,d.jsxs)("span",{className:"ml-auto text-[10px] text-muted-foreground",children:[U.filter(a=>S(a.status)).length,"/",U.length]})]}),z&&null!==U&&(0,d.jsx)(P,{agents:U,pathname:ah})]})]})]})}function P({agents:a,pathname:b}){if(0===a.length)return(0,d.jsx)(Q,{});let c=new Map;for(let b of a){let a=b.parentId,d=c.get(a)??[];d.push(b),c.set(a,d)}let e=c.get(void 0)??[];return(0,d.jsx)("ul",{className:"ml-4 mt-0.5 space-y-0.5 border-l pl-1",children:e.map(a=>(0,d.jsx)(R,{agent:a,byParent:c,pathname:b,depth:0},a.id))})}function Q(){let a=(0,j.c)("app");return(0,d.jsx)("div",{className:"ml-4 px-3 py-1 text-[11px] italic text-muted-foreground",children:a("sidebar.noAgents")})}function R({agent:a,byParent:b,pathname:c,depth:e}){let f=b.get(a.id)??[],h=`/agents/${a.id}`,i=c===h;return(0,d.jsxs)("li",{children:[(0,d.jsxs)(g(),{href:h,className:`flex items-center gap-1 px-2 py-1 text-[12px] rounded hover:bg-accent ${i?"bg-accent":""}`,style:{paddingLeft:8*e+4},children:[S(a.status)?(0,d.jsx)(L.A,{className:"h-3 w-3 text-emerald-600 shrink-0 animate-pulse"}):(0,d.jsx)(K.A,{className:"h-3 w-3 text-muted-foreground shrink-0"}),(0,d.jsx)("span",{className:"truncate flex-1",children:a.label}),(0,d.jsx)("span",{className:"font-mono text-[10px] text-muted-foreground shrink-0",title:`${a.harness} \xb7 ${a.model}`,children:"claude-code"===a.harness?"claude":"ollama"===a.harness?"ollama":"codex"})]}),f.length>0&&(0,d.jsx)("ul",{className:"space-y-0.5",children:f.map(a=>(0,d.jsx)(R,{agent:a,byParent:b,pathname:c,depth:e+1},a.id))})]})}function S(a){return"starting"===a||"running"===a}function T({rootId:a,sections:b,pathname:c}){return 0===b.length?(0,d.jsx)(U,{}):(0,d.jsx)("ul",{className:"ml-4 mt-0.5 space-y-0.5 border-l pl-1",children:b.map(b=>b.isDir?(0,d.jsx)(V,{rootId:a,section:b,pathname:c},b.rel):(0,d.jsx)("li",{children:(0,d.jsx)(W,{rootId:a,section:b,pathname:c})},b.rel))})}function U(){let a=(0,j.c)("app");return(0,d.jsx)("div",{className:"px-3 py-1 text-[11px] italic text-muted-foreground",children:a("sidebar.kbEmpty")})}function V({rootId:a,section:b,pathname:c}){let[f,g]=(0,e.useState)(!1);return(0,d.jsxs)("li",{children:[(0,d.jsxs)("div",{className:"flex items-center",children:[(0,d.jsx)("button",{type:"button",onClick:()=>g(a=>!a),className:"h-5 w-5 flex items-center justify-center text-muted-foreground hover:text-foreground shrink-0",children:f?(0,d.jsx)(n.A,{className:"h-3 w-3"}):(0,d.jsx)(o.A,{className:"h-3 w-3"})}),(0,d.jsx)(t.A,{className:"h-3 w-3 text-muted-foreground shrink-0 mr-1"}),(0,d.jsx)("span",{className:"text-[12px] flex-1 truncate",children:b.label})]}),f&&b.children&&(0,d.jsx)("ul",{className:"ml-4 space-y-0.5 border-l pl-1",children:b.children.map(b=>(0,d.jsx)("li",{children:(0,d.jsx)(W,{rootId:a,section:b,pathname:c})},b.rel))})]})}function W({rootId:a,section:b,pathname:c}){if(!b.fileRel)return null;let e=b.fileRel.split("/").map(encodeURIComponent).join("/"),f=`/roots/${a}/kb/${e}`,h=c===f;return(0,d.jsxs)(g(),{href:f,className:`flex items-center gap-1 px-2 py-1 text-[12px] rounded hover:bg-accent ${h?"bg-accent":""}`,children:[(0,d.jsx)(q.A,{className:"h-3 w-3 text-muted-foreground shrink-0"}),(0,d.jsx)("span",{className:"truncate",children:b.label})]})}function X({rootId:a,topics:b,pathname:c}){return 0===b.length?(0,d.jsx)(Y,{}):(0,d.jsx)("ul",{className:"ml-4 mt-0.5 space-y-0.5 border-l pl-1",children:b.map(b=>(0,d.jsx)(Z,{rootId:a,topic:b,pathname:c},b.id))})}function Y(){let a=(0,j.c)("app");return(0,d.jsx)("div",{className:"ml-4 px-3 py-1 text-[11px] italic text-muted-foreground",children:a("sidebar.noTopics")})}function Z({rootId:a,topic:b,pathname:c}){let f=(0,j.c)("app"),k=`/roots/${a}/chat/${b.id}`,l=c===k,[m,n]=(0,e.useTransition)(),o=(0,h.useRouter)();return(0,d.jsx)("li",{className:"group/topic",children:(0,d.jsxs)(g(),{href:k,className:`flex items-center gap-1 px-2 py-1 text-[12px] rounded hover:bg-accent ${l?"bg-accent":""}`,children:[(0,d.jsx)(s.A,{className:"h-3 w-3 text-muted-foreground shrink-0"}),(0,d.jsx)("span",{className:"truncate flex-1 min-w-0",children:b.title}),(0,d.jsx)("button",{type:"button",onClick:c=>{c.preventDefault(),c.stopPropagation(),confirm(f("sidebar.deleteTopicConfirm",{title:b.title}))&&n(async()=>{let c=await (0,v.L)(a,b.id);if(!c.ok)return void i.oR.error(c.error??f("sidebar.deleteFailed"));i.oR.success(f("sidebar.topicDeleted")),(0,w.$d)(w.Zi.topicsChanged(a)),l&&o.push(`/roots/${a}`)})},disabled:m,"aria-label":f("sidebar.deleteTopic"),title:f("sidebar.deleteTopic"),className:"opacity-0 group-hover/topic:opacity-100 transition-opacity p-0.5 rounded hover:bg-destructive/15 text-muted-foreground hover:text-destructive shrink-0",children:m?(0,d.jsx)(r.A,{className:"h-3 w-3 animate-spin"}):(0,d.jsx)(u.A,{className:"h-3 w-3"})})]})})}function $({rootId:a,memory:b,pathname:c}){let e=(0,j.c)("app"),f=b.filter(a=>!a.empty),h=`/roots/${a}/memory`,i=c===h;return 0===f.length?(0,d.jsx)("div",{className:"ml-4 px-3 py-1 text-[11px] italic text-muted-foreground",children:e("sidebar.memoryEmpty")}):(0,d.jsx)("ul",{className:"ml-4 mt-0.5 space-y-0.5 border-l pl-1",children:f.map(a=>(0,d.jsx)("li",{children:(0,d.jsxs)(g(),{href:h,title:a.description,className:`flex items-center gap-1 px-2 py-1 text-[12px] rounded hover:bg-accent ${i?"bg-accent":""}`,children:[(0,d.jsx)(J.A,{className:"h-3 w-3 text-muted-foreground shrink-0"}),(0,d.jsx)("span",{className:"truncate flex-1 min-w-0",children:a.file}),(0,d.jsx)("span",{className:"text-[10px] text-muted-foreground shrink-0",children:a.lines})]})},a.file))})}function _({rootId:a,utilities:b,pathname:c}){let e=(0,j.c)("app");return 0===b.length?(0,d.jsx)("div",{className:"ml-4 px-3 py-1 text-[11px] italic text-muted-foreground",children:e("sidebar.utilitiesEmpty")}):(0,d.jsx)("ul",{className:"ml-4 mt-0.5 space-y-0.5 border-l pl-1",children:b.map(b=>(0,d.jsx)(aa,{rootId:a,utility:b,pathname:c},`${b.scope}:${b.id}`))})}function aa({rootId:a,utility:b,pathname:c}){let[f,h]=(0,e.useState)(!1),i=`/utilities/${b.scope}/${encodeURIComponent(b.id)}${b.rootId?`?rootId=${encodeURIComponent(b.rootId)}`:""}`,j=b.threads.length>0;return(0,d.jsxs)("li",{children:[(0,d.jsxs)("div",{className:"flex items-center",children:[(0,d.jsx)("button",{type:"button",onClick:()=>h(a=>!a),disabled:!j,className:"h-5 w-5 flex items-center justify-center text-muted-foreground hover:text-foreground shrink-0 disabled:opacity-30",children:j?f?(0,d.jsx)(n.A,{className:"h-3 w-3"}):(0,d.jsx)(o.A,{className:"h-3 w-3"}):(0,d.jsx)("span",{className:"inline-block h-3 w-3"})}),(0,d.jsxs)(g(),{href:i,className:"flex-1 min-w-0 flex items-center gap-1 px-1 py-1 text-[12px] rounded hover:bg-accent",children:[(0,d.jsx)(M.A,{className:"h-3 w-3 text-muted-foreground shrink-0"}),(0,d.jsx)("span",{className:"truncate flex-1",children:b.name}),j&&(0,d.jsx)("span",{className:"text-[10px] text-muted-foreground shrink-0",children:b.threads.length})]})]}),f&&j&&(0,d.jsx)("ul",{className:"ml-4 space-y-0.5 border-l pl-1",children:b.threads.map(b=>{let e=`/roots/${a}/chat/${b.id}`,f=c===e;return(0,d.jsx)("li",{children:(0,d.jsxs)(g(),{href:e,className:`flex items-center gap-1 px-2 py-1 text-[12px] rounded hover:bg-accent ${f?"bg-accent":""}`,children:[(0,d.jsx)(s.A,{className:"h-3 w-3 text-muted-foreground shrink-0"}),(0,d.jsx)("span",{className:"truncate flex-1 min-w-0",children:b.title})]})},b.id)})})]})}},61495:(a,b,c)=>{"use strict";c.d(b,{Bb:()=>e,EE:()=>g,Rg:()=>f,_W:()=>d});let d=["analyze","chat"],e={analyze:"Analyze (KB build)",chat:"Chat (KB Q&A)"},f={analyze:["language","root","scope","relScope","reflexScope","files","fileCount","overflow"],chat:["language","root","scope","reflexScope"]},g={analyze:`You are populating a local knowledge base (KB) for the directory:
|
|
268
|
+
`,agentId:a.meta.id,ts:new Date().toISOString(),seq:0}),c}}},59895:(a,b,c)=>{"use strict";c.d(b,{V:()=>e});let d=/\{\{\s*([^{}\s][^{}]*?)\s*\}\}/g;function e(a,b){return function a(b,c){if("string"==typeof b)return b.replace(d,(a,b)=>(function(a){if(null==a)return"";if("string"==typeof a)return a;if("number"==typeof a||"boolean"==typeof a)return String(a);try{return JSON.stringify(a)}catch{return String(a)}})(function(a,b){if("prev"===a)return b.prev;if(a.startsWith("workflow.")){let c=a.slice(9);return b.workflow[c]}if(a.startsWith("input."))return f(b.input,a.slice(6));if(a.startsWith("input"))return b.input;if(a.startsWith("steps.")){let[c,...d]=a.slice(6).split(".");if(!c)return;let e=b.steps[c];if(!e)return;if(0===d.length||1===d.length&&"output"===d[0])return e.output;if("output"===d[0])return f(e.output,d.slice(1).join("."))}}(b.trim(),c)));if(Array.isArray(b))return b.map(b=>a(b,c));if(b&&"object"==typeof b){let d={};for(let[e,f]of Object.entries(b))d[e]=a(f,c);return d}return b}(a,b)}function f(a,b){if(!b)return a;let c=b.split("."),d=a;for(let a of c){if(null==d||"object"!=typeof d)return;d=d[a]}return d}},61495:(a,b,c)=>{"use strict";c.d(b,{Bb:()=>e,EE:()=>g,Rg:()=>f,_W:()=>d});let d=["analyze","chat"],e={analyze:"Analyze (KB build)",chat:"Chat (KB Q&A)"},f={analyze:["language","root","scope","relScope","reflexScope","files","fileCount","overflow"],chat:["language","root","scope","reflexScope"]},g={analyze:`You are populating a local knowledge base (KB) for the directory:
|
|
269
269
|
{{scope}}
|
|
270
270
|
|
|
271
271
|
Project root: {{root}}
|
|
@@ -827,7 +827,7 @@ Rules:
|
|
|
827
827
|
- \`type\` defaults to \`feature\`. Match the obvious case: regression → \`bug\`, investigate-before-decide → \`research\`, write-some-words-down → \`idea\`.
|
|
828
828
|
- Choose \`status: "backlog"\` for newly-captured ideas (default). Use \`ready\` only if the user explicitly said "do this next".
|
|
829
829
|
- Cite what the user said in \`body\` so it makes sense out of context.
|
|
830
|
-
- Don't open more than 5 tasks in a single turn; you're noting, not firehosing.`,'## Building an app / tool / integration — utility first\n\nWhen the user asks to build, make, or release an app, tool, bot, integration, dashboard, form, or service, FIRST decide what KIND of thing it is — before asking about language, framework, or hosting:\n\n- **Reflex utility** (the default for anything that extends Reflex or lives in this ecosystem) — a mini-app that runs INSIDE Reflex: a React/TypeScript `ui.tsx` in an iframe, talking to the world only through the Host API (`reflex.*`) with manifest permissions. There is NO separate backend to host and NO deploy step — installing the utility IS the deploy. Utilities are ALWAYS TypeScript, so never ask "which language?".\n- **Standalone project** — a normal codebase the user will run/host themselves (a server, a CLI, a website). Only here do language/framework/deploy questions make sense.\n\nRouting signals that mean **utility**: the project name starts with `rflx-`/`reflex-`, it lives under a `reflex-*` parent, the user says "utility"/"mini-app"/"плагин"/"виджет", or the thing is meant to surface inside Reflex (a panel, a card, a GitHub/Calendar/etc. integration the user will open in the Mini-apps screen).\n\nIf those signals are present, proceed as a utility — gather the missing essentials (what it does, which data/permissions, any secrets) and emit `<<reflex:utility>>`. Do NOT ask about stack or deployment. If it\'s genuinely unclear which kind it is, ask THAT question first via `<<reflex:question>>` ("Reflex utility that runs inside Reflex, or a standalone app you\'ll host yourself?") — don\'t jump to language selection.','## Reaching the user outside the app\n\nIf a long-running or scheduled task finishes, or something needs the user\'s attention and they likely don\'t have Reflex open, you can push a short message to their configured channels (Telegram, etc.):\n\n```\n<<reflex:notify>>{"title":"Digest ready","body":"3 new items in your morning digest","link":"optional url"}<</reflex:notify>>\n```\n\n- `body` is required; `title` and `link` are optional.\n- Use sparingly — for completions, alerts, and things worth interrupting for. Not for every reply (the user already sees those in chat).\n- No-op if the user hasn\'t set up a channel, so it\'s safe to emit when warranted.'].join("\n\n")}},79459:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{default:()=>o,dynamic:()=>p,metadata:()=>q});var e=c(63003),f=c(29373),g=c(87557),h=c(50359);c(44427);var i=c(95422),j=c(30849),k=c(24576),l=c(3043),m=c(54578),n=a([l,m]);[l,m]=n.then?(await n)():n;let p="force-dynamic";(0,l.w)(),(0,m.y)();let q={title:"Reflex",description:"Local-first knowledge base built by an agent."};async function o({children:a}){let b=await (0,k.listRoots)(),c=await (0,g.A)(),d=await (0,h.A)();return(0,e.jsx)("html",{lang:c,suppressHydrationWarning:!0,children:(0,e.jsx)("body",{children:(0,e.jsxs)(f.A,{locale:c,messages:d,children:[(0,e.jsxs)("div",{className:"h-screen flex",children:[(0,e.jsx)(j.AppSidebar,{initialRoots:b}),(0,e.jsx)("main",{className:"flex-1 min-w-0 flex flex-col",children:a})]}),(0,e.jsx)(i.Toaster,{richColors:!0,closeButton:!0})]})})})}d()}catch(a){d(a)}})},81483:(a,b,c)=>{"use strict";c.d(b,{Tf:()=>j,UV:()=>h,a9:()=>g,cs:()=>d,h0:()=>e,lh:()=>f,qL:()=>i});let d=["PERSONA","VALUES","INTERESTS","GOALS","RELATIONSHIPS","ROUTINES","AVOID","RECENT"],e={PERSONA:20,VALUES:15,INTERESTS:20,GOALS:20,RELATIONSHIPS:20,ROUTINES:15,AVOID:15,RECENT:30},f={PERSONA:"Name, location, role, workplace, family, mother tongue",VALUES:"Operating principles, how the user prefers to be addressed",INTERESTS:"Active topics, hobbies, learning targets",GOALS:"Life and work goals (not per-task /goal)",RELATIONSHIPS:"Key people: name, role, last shared context",ROUTINES:"Daily and weekly rhythms (wake, work, exercise)",AVOID:'Explicit "don\'t suggest" — topics, words, people',RECENT:"Rolling summary of the last ~7 days (auto-generated)"},g={PERSONA:1,VALUES:1,INTERESTS:2,GOALS:2,RELATIONSHIPS:2,ROUTINES:2,AVOID:2,RECENT:3};function h(a){return d.includes(a)}function i(a){return"global"===a||"project"===a}function j(a){return"append"===a||"replace"===a||"remove"===a}},84579:(a,b,c)=>{"use strict";c.d(b,{attachRemote:()=>k,generateImage:()=>h,searchImages:()=>i});var d=c(91388),e=c(70333);async function f(a){let b=await (0,e.CG)("gemini");if(!b)throw Error("Gemini API key is not configured. Open Settings → Gemini.");let c=[{text:a.prompt}];for(let b of a.referenceImageUrls??[]){let a=await g(b);a&&c.push({inlineData:a})}let f={contents:[{role:"user",parts:c}]};a.aspectRatio&&(f.generationConfig={imageConfig:{aspectRatio:a.aspectRatio}});let h=await fetch(`https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image-preview:generateContent?key=${encodeURIComponent(b)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)});if(!h.ok){let a=await h.text().catch(()=>"");throw Error(`Gemini image API ${h.status}: ${a.slice(0,400)}`)}let i=await h.json(),j=function(a){for(let b of a.candidates??[])for(let a of b.content?.parts??[]){let b=a.inlineData;if(b?.data&&b.mimeType?.startsWith("image/"))return{data:b.data,mime:b.mimeType}}return null}(i);if(!j){let a=i?.candidates?.[0]?.finishReason??"no image returned",b=i?.candidates?.[0]?.content?.parts?.map(a=>a.text).filter(Boolean).join(" ")?.slice(0,300);throw Error(`Gemini returned a non-image response (${a})${b?": "+b:""}`)}let k=Buffer.from(j.data,"base64");return(0,d.YN)(a.rootId,k,j.mime)}async function g(a){try{let b=await fetch(a,{redirect:"follow"});if(!b.ok)return null;let c=b.headers.get("content-type")?.split(";")[0]?.trim()??"";if(!c.startsWith("image/"))return null;let d=await b.arrayBuffer();return{data:Buffer.from(d).toString("base64"),mimeType:c}}catch{return null}}async function h(a){let b,d=a.provider??"gemini";if("gemini"===d)b=await f({rootId:a.rootId,prompt:a.prompt,...a.aspectRatio?{aspectRatio:a.aspectRatio}:{},...a.referenceImageUrls?{referenceImageUrls:a.referenceImageUrls}:{}});else if("codex"===d){let d=await c.e(1961).then(c.bind(c,61961));b=await d.generateWithCodex({rootId:a.rootId,prompt:a.prompt,...a.size?{size:a.size}:{}})}else throw Error(`unknown image provider: ${d}`);return{urlPath:b.urlPath,sha:b.sha,mime:b.mime,size:b.size,provider:d}}async function i(a){let b=Math.max(1,Math.min(24,a.count??12)),d=a.provider??await j();if("unsplash"===d)return(await c.e(7508).then(c.bind(c,57508))).searchUnsplash({query:a.query,count:b});if("pexels"===d)return(await c.e(5087).then(c.bind(c,95087))).searchPexels({query:a.query,count:b});if("brave"===d)return(await c.e(8262).then(c.bind(c,48262))).searchBrave({query:a.query,count:b});throw Error(`unknown image search provider: ${d}`)}async function j(){let{hasApiKey:a}=await Promise.resolve().then(c.bind(c,70333)),{resolveBraveKey:b}=await c.e(8262).then(c.bind(c,48262));return await b()?"brave":await a("unsplash")?"unsplash":await a("pexels")?"pexels":"brave"}async function k(a){return(0,d.fH)(a.rootId,a.sourceUrl)}},88724:(a,b,c)=>{"use strict";c.d(b,{$d:()=>e,S9:()=>f,Zi:()=>d}),c(17240);let d={rootsChanged:"reflex:roots-changed",topicsChanged:a=>`reflex:topics-changed:${a}`,kbChanged:a=>`reflex:kb-changed:${a}`};function e(a,b){}function f(a,b){}},91344:(a,b,c)=>{"use strict";c.d(b,{cn:()=>f});var d=c(53221),e=c(25813);function f(...a){return(0,e.QP)((0,d.$)(a))}},91388:(a,b,c)=>{"use strict";c.d(b,{YN:()=>p,fH:()=>q,tf:()=>m});var d=c(73024),e=c(76760),f=c.n(e),g=c(77598),h=c.n(g),i=c(53905);let j=f().join(".reflex","assets","images"),k={"image/png":"png","image/jpeg":"jpg","image/jpg":"jpg","image/webp":"webp","image/gif":"gif","image/svg+xml":"svg","image/avif":"avif"},l={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",webp:"image/webp",gif:"image/gif",svg:"image/svg+xml",avif:"image/avif"};function m(a){return l[a.toLowerCase()]??"application/octet-stream"}async function n(a){let b=await (0,i.getRoot)(a);if(!b)throw Error(`unknown root: ${a}`);return b.path}async function o(a){let b=f().join(await n(a),j);return await d.promises.mkdir(b,{recursive:!0}),b}async function p(a,b,c){let e=Buffer.isBuffer(b)?b:Buffer.from(b),g=h().createHash("sha256").update(e).digest("hex"),i=k[c.toLowerCase()]??"bin",l=await o(a),m=f().join(l,`${g}.${i}`);try{await d.promises.access(m)}catch{await d.promises.writeFile(m,e)}return{sha:g,ext:i,mime:c,absPath:m,relPath:f().posix.join(j.split(f().sep).join("/"),`${g}.${i}`),urlPath:`/api/images/${encodeURIComponent(a)}/${g}.${i}`,size:e.byteLength}}async function q(a,b){let c=await fetch(b,{redirect:"follow",signal:AbortSignal.timeout(3e4)});if(!c.ok)throw Error(`fetch ${b} -> ${c.status} ${c.statusText}`);let d=c.headers.get("content-type")?.split(";")[0]?.trim()??"";if(!d.startsWith("image/"))throw Error(`not an image: content-type=${d||"(none)"}`);let e=Number(c.headers.get("content-length")??"0");if(e>0x1400000)throw Error(`image too large: ${e} bytes (cap 20971520)`);let f=await c.arrayBuffer();if(f.byteLength>0x1400000)throw Error(`image too large after download: ${f.byteLength} bytes (cap 20971520)`);return p(a,Buffer.from(f),d)}},92185:(a,b,c)=>{"use strict";c.d(b,{Ay:()=>i});var d=c(73024),e=c(76760),f=c.n(e),g=c(47e3),h=c(17640);let i=(0,g.A)(async()=>{let a=function(a){if(!a)return"en";let b=a.toLowerCase();return"ru"===b||"russian"===b||b.startsWith("ru-")?"ru":"en"}((await (0,h.loadSettings)()).language),b=await j(a);return{locale:a,messages:b}});async function j(a){let b=f().resolve(process.cwd(),"messages",a),c=[];try{c=(await d.promises.readdir(b)).filter(a=>a.endsWith(".json"))}catch{return{}}let e={};for(let a of c){let c=a.replace(/\.json$/,"");try{let g=await d.promises.readFile(f().join(b,a),"utf8");e[c]=JSON.parse(g)}catch{}}return e}},93437:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,47319,23)),Promise.resolve().then(c.t.bind(c,97654,23)),Promise.resolve().then(c.t.bind(c,10432,23)),Promise.resolve().then(c.t.bind(c,73671,23)),Promise.resolve().then(c.t.bind(c,78767,23)),Promise.resolve().then(c.t.bind(c,75751,23)),Promise.resolve().then(c.t.bind(c,48609,23)),Promise.resolve().then(c.t.bind(c,59118,23)),Promise.resolve().then(c.t.bind(c,84583,23))},93554:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{z:()=>N});var e=c(78474),f=c(77598),g=c(53905),h=c(20243),i=c(71222),j=c(52219),k=c(98360),l=c(59788),m=c(64421),n=c(1947),o=c(81483),p=c(22421),q=c(49410),r=c(26380),s=c(51872),t=c(84579),u=c(69509),v=c(73928),w=c(55143),x=c(56942),y=c(63848),z=c(20938),A=c(20050),B=c(8118),C=c(36017),D=c(5492),E=c(875),F=c(18809),G=a([i,n,w]);[i,n,w]=G.then?(await G)():G;class L{async ensureAgent(a){let b=this.byTopicRole.get(a.topicId)?.get(a.role);if(b){let a=this.agents.get(b);if(a)return{...a.meta}}return this.createAgent(a)}async createAgent(a){let b=J(),c={id:b,topicId:a.topicId,rootId:a.rootId,role:a.role,task:a.task,harness:a.harness,model:a.model,label:a.label,status:"idle",startedAt:H(),...a.parentId?{parentId:a.parentId}:{}};this.agents.set(b,{meta:c,rootPath:a.rootPath,reflexScope:a.reflexScope});let d=this.byTopicRole.get(a.topicId);return d||(d=new Map,this.byTopicRole.set(a.topicId,d)),d.set(a.role,b),await this.emit({type:"agent-start",meta:c,agentId:b,ts:c.startedAt,seq:0}),c}async invoke(a){let b=this.agents.get(a.agentId);if(!b)throw Error(`Agent not found: ${a.agentId}`);if("running"===b.meta.status)throw Error(`Agent ${a.agentId} is already running`);b.meta.status="running",this.lastInvoke.set(a.agentId,{systemPrompt:a.systemPrompt,rootPath:b.rootPath}),b.lastUserMessage=a.userMessage??a.prompt,this.turnText.set(a.agentId,"");let c=J();a.userMessage&&await this.emit({type:"user-message",text:a.userMessage,agentId:a.agentId,ts:H(),seq:0}),await this.emit({type:"turn-start",turnId:c,agentId:a.agentId,ts:H(),seq:0});let d=null;try{d=await (0,y.Qr)(b.rootPath)}catch{}try{let e={meta:{id:b.meta.id},args:{rootPath:b.rootPath,reflexScope:b.reflexScope,systemPrompt:a.systemPrompt,prompt:a.prompt,model:b.meta.model,allowedTools:a.allowedTools??[]},manager:this};if("claude-code"===b.meta.harness)await (0,i.Z)(e);else if("codex"===b.meta.harness)await (0,j.H)(e);else if("ollama"===b.meta.harness)await (0,k.E)(e);else if("image-gen"===b.meta.harness)await (0,l.R)({meta:e.meta,args:{rootPath:e.args.rootPath,prompt:e.args.prompt},manager:e.manager});else throw Error(`Unsupported harness: ${String(b.meta.harness)}`);await this.applyImageGenDirectives(a.agentId);let f=await this.evaluateGoalContinuation(a.agentId);b.meta.status="idle",await this.emit({type:"turn-end",turnId:c,status:"completed",agentId:a.agentId,ts:H(),seq:0});let{writtenViaKb:g,dispatches:h,youtubeSummaries:m}=await this.detectInteractionDirectives(a.agentId);d&&await this.reindexAfterTurn(a.agentId,d,g),h.length>0&&"orchestrator"===b.meta.role?this.dispatchSubAgents(a.agentId,h).catch(b=>{this.emit({type:"error",message:"sub-agent dispatch failed: "+(b instanceof Error?b.message:String(b)),agentId:a.agentId,ts:H(),seq:0})}):m.length>0&&"orchestrator"===b.meta.role?this.runYoutubeSummaries(a.agentId,m).catch(b=>{this.emit({type:"error",message:"youtube-summary failed: "+(b instanceof Error?b.message:String(b)),agentId:a.agentId,ts:H(),seq:0})}):f&&setTimeout(()=>{this.continueTurn(a.agentId,`[Reflex /goal] Continue execution. Active goal: ${f.goal}. Iteration ${f.iteration}/${E.GX}. If the task is done AND verified, finish with the marker \`GOAL ACHIEVED\` and a kb-entry kind:"goal-completion".`)},50)}catch(e){let d=e instanceof Error?e.message:String(e);b.meta.status="idle",b.meta.error=d,await this.emit({type:"error",message:d,agentId:a.agentId,ts:H(),seq:0}),await this.emit({type:"turn-end",turnId:c,status:"failed",error:d,agentId:a.agentId,ts:H(),seq:0})}finally{this.turnText.delete(a.agentId)}}async respondPermission(a,b){let c,d=this.agents.get(a);if(!d)throw Error("Agent not found");let e="running"===d.meta.status;try{let a=(await (0,h.readEvents)(d.rootPath,d.meta.topicId)).find(a=>"permission-request"===a.type&&a.requestId===b.requestId);c=a?.action}catch{}await this.emit({type:"permission-response",requestId:b.requestId,decision:b.decision,...b.scope?{scope:b.scope}:{},agentId:a,ts:H(),seq:0});let f="";if("tool-policy"===c&&"allow"===b.decision&&b.tool)try{let a=await (0,C.loadSettings)(),c=d.meta.task,e=a.assignments[c];e&&!e.allowedTools.includes(b.tool)&&(e.allowedTools=[...e.allowedTools,b.tool],await (0,C.saveSettings)(a),f=` Tool ${b.tool} added to settings.assignments.${c}.allowedTools.`)}catch(b){await this.emit({type:"error",message:"Failed to save allowed tool: "+(b instanceof Error?b.message:String(b)),agentId:a,ts:H(),seq:0})}let g=`[Reflex] Permission for ${b.tool??"action"} (${b.requestId}): ${b.decision}${b.scope?` (${b.scope})`:""}.${f} Continue.`,i="tool-policy"===c&&"allow"===b.decision&&!!b.tool&&!!f;if(e&&i&&d.killer){try{d.killer()}catch{}delete d.killer,d.meta.status="idle";let b=d.lastUserMessage??`${g} Retry the previous attempt with the now-allowed tool.`;await this.continueTurn(a,b);return}e||await this.continueTurn(a,g)}async respondQuestion(a,b){let c=this.agents.get(a);if(!c)throw Error("Agent not found");let d="running"===c.meta.status;await this.emit({type:"answer",questionId:b.questionId,answer:b.answer,agentId:a,ts:H(),seq:0});let e=`[Reflex] Answer for question ${b.questionId}: ${b.answer}. Continue.`;d||await this.continueTurn(a,e)}async respondMcpAdd(a,b){let d,e=this.agents.get(a),f=!!(e&&"running"===e.meta.status),g=null,i=e?.meta.topicId??null,j=e?.rootPath??null,k=this.pendingMcpAdds.get(b.requestId);if(k&&k.agentId===a)g=k.directive,this.pendingMcpAdds.delete(b.requestId);else{let a=await (0,z.az)(b.requestId);a&&(g=a.directive,i=i??a.topicId,j=j??a.rootPath)}if(!g)throw Error(`Unknown mcp-add request: ${b.requestId}`);let l=async a=>{if(e)return void await this.emit(a);if(i&&j){let b=await (0,h.nextSeq)(j,i);await (0,h.appendEvent)(j,i,{...a,seq:b})}};if("reject"===b.decision){await l({type:"mcp-add-response",requestId:b.requestId,decision:"reject",agentId:a,ts:H(),seq:0}),d=`[Reflex] User rejected adding MCP server "${g.server}". Don't re-propose the same server — either pick a different approach or ask the user what they prefer.`,e&&!f&&await this.continueTurn(a,d);return}try{let e=await I(g.config,g.secrets??[],b.secretValues??{}),{McpConfigSchema:f}=await Promise.resolve().then(c.bind(c,97453)),h=f.parse(e),{addMcpServer:i,updateMcpServer:j,getMcpServer:k}=await Promise.resolve().then(c.bind(c,580));await k(g.server)?await j(g.server,{label:g.label,...void 0!==g.description?{description:g.description}:{},config:h}):await i({id:g.server,label:g.label,...void 0!==g.description?{description:g.description}:{},config:h}),await l({type:"mcp-add-response",requestId:b.requestId,decision:"approve",server:g.server,agentId:a,ts:H(),seq:0}),d=`[Reflex] MCP server "${g.server}" registered. You can now call its tools via \`mcp__${g.server}__<tool>\` (chat) or \`reflex.mcp.call({server:"${g.server}",tool,args})\` (from a utility that declared it in manifest.mcpServers). Continue.`}catch(e){let c=e instanceof Error?e.message:String(e);await l({type:"error",message:"mcp-add failed: "+c,agentId:a,ts:H(),seq:0}),await l({type:"mcp-add-response",requestId:b.requestId,decision:"reject",agentId:a,ts:H(),seq:0}),d=`[Reflex] Failed to register MCP server "${g.server}": ${c}. Don't retry the exact same config; either fix the issue or ask the user.`}e&&!f&&await this.continueTurn(a,d)}async continueTurn(a,b){let c=this.agents.get(a);if(!c)return;let d=this.lastInvoke.get(a);if(!d)return void await this.emit({type:"error",message:"Cannot continue turn: no cached system prompt. Send another message manually.",agentId:a,ts:H(),seq:0});let e=[];try{let a=await (0,C.loadSettings)();e=a.assignments[c.meta.task]?.allowedTools??[]}catch{}let f=await K(d.rootPath,c.meta.topicId),g=`Prior conversation:
|
|
830
|
+
- Don't open more than 5 tasks in a single turn; you're noting, not firehosing.`,'## Building an app / tool / integration — utility first\n\nWhen the user asks to build, make, or release an app, tool, bot, integration, dashboard, form, or service, FIRST decide what KIND of thing it is — before asking about language, framework, or hosting:\n\n- **Reflex utility** (the default for anything that extends Reflex or lives in this ecosystem) — a mini-app that runs INSIDE Reflex: a React/TypeScript `ui.tsx` in an iframe, talking to the world only through the Host API (`reflex.*`) with manifest permissions. There is NO separate backend to host and NO deploy step — installing the utility IS the deploy. Utilities are ALWAYS TypeScript, so never ask "which language?".\n- **Standalone project** — a normal codebase the user will run/host themselves (a server, a CLI, a website). Only here do language/framework/deploy questions make sense.\n\nRouting signals that mean **utility**: the project name starts with `rflx-`/`reflex-`, it lives under a `reflex-*` parent, the user says "utility"/"mini-app"/"плагин"/"виджет", or the thing is meant to surface inside Reflex (a panel, a card, a GitHub/Calendar/etc. integration the user will open in the Mini-apps screen).\n\nIf those signals are present, proceed as a utility — gather the missing essentials (what it does, which data/permissions, any secrets) and emit `<<reflex:utility>>`. Do NOT ask about stack or deployment. If it\'s genuinely unclear which kind it is, ask THAT question first via `<<reflex:question>>` ("Reflex utility that runs inside Reflex, or a standalone app you\'ll host yourself?") — don\'t jump to language selection.','## Reaching the user outside the app\n\nIf a long-running or scheduled task finishes, or something needs the user\'s attention and they likely don\'t have Reflex open, you can push a short message to their configured channels (Telegram, etc.):\n\n```\n<<reflex:notify>>{"title":"Digest ready","body":"3 new items in your morning digest","link":"optional url"}<</reflex:notify>>\n```\n\n- `body` is required; `title` and `link` are optional.\n- Use sparingly — for completions, alerts, and things worth interrupting for. Not for every reply (the user already sees those in chat).\n- No-op if the user hasn\'t set up a channel, so it\'s safe to emit when warranted.'].join("\n\n")}},79459:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{default:()=>o,dynamic:()=>p,metadata:()=>q});var e=c(63003),f=c(29373),g=c(87557),h=c(50359);c(44427);var i=c(95422),j=c(30849),k=c(24576),l=c(3043),m=c(54578),n=a([l,m]);[l,m]=n.then?(await n)():n;let p="force-dynamic";(0,l.w)(),(0,m.y)();let q={title:"Reflex",description:"Local-first knowledge base built by an agent."};async function o({children:a}){let b=await (0,k.listRoots)(),c=await (0,g.A)(),d=await (0,h.A)();return(0,e.jsx)("html",{lang:c,suppressHydrationWarning:!0,children:(0,e.jsx)("body",{children:(0,e.jsxs)(f.A,{locale:c,messages:d,children:[(0,e.jsxs)("div",{className:"h-screen flex",children:[(0,e.jsx)(j.AppSidebar,{initialRoots:b}),(0,e.jsx)("main",{className:"flex-1 min-w-0 flex flex-col",children:a})]}),(0,e.jsx)(i.Toaster,{richColors:!0,closeButton:!0})]})})})}d()}catch(a){d(a)}})},81483:(a,b,c)=>{"use strict";c.d(b,{Tf:()=>j,UV:()=>h,a9:()=>g,cs:()=>d,h0:()=>e,lh:()=>f,qL:()=>i});let d=["PERSONA","VALUES","INTERESTS","GOALS","RELATIONSHIPS","ROUTINES","AVOID","RECENT"],e={PERSONA:20,VALUES:15,INTERESTS:20,GOALS:20,RELATIONSHIPS:20,ROUTINES:15,AVOID:15,RECENT:30},f={PERSONA:"Name, location, role, workplace, family, mother tongue",VALUES:"Operating principles, how the user prefers to be addressed",INTERESTS:"Active topics, hobbies, learning targets",GOALS:"Life and work goals (not per-task /goal)",RELATIONSHIPS:"Key people: name, role, last shared context",ROUTINES:"Daily and weekly rhythms (wake, work, exercise)",AVOID:'Explicit "don\'t suggest" — topics, words, people',RECENT:"Rolling summary of the last ~7 days (auto-generated)"},g={PERSONA:1,VALUES:1,INTERESTS:2,GOALS:2,RELATIONSHIPS:2,ROUTINES:2,AVOID:2,RECENT:3};function h(a){return d.includes(a)}function i(a){return"global"===a||"project"===a}function j(a){return"append"===a||"replace"===a||"remove"===a}},84579:(a,b,c)=>{"use strict";c.d(b,{attachRemote:()=>k,generateImage:()=>h,searchImages:()=>i});var d=c(91388),e=c(70333);async function f(a){let b=await (0,e.CG)("gemini");if(!b)throw Error("Gemini API key is not configured. Open Settings → Gemini.");let c=[{text:a.prompt}];for(let b of a.referenceImageUrls??[]){let a=await g(b);a&&c.push({inlineData:a})}let f={contents:[{role:"user",parts:c}]};a.aspectRatio&&(f.generationConfig={imageConfig:{aspectRatio:a.aspectRatio}});let h=await fetch(`https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image-preview:generateContent?key=${encodeURIComponent(b)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)});if(!h.ok){let a=await h.text().catch(()=>"");throw Error(`Gemini image API ${h.status}: ${a.slice(0,400)}`)}let i=await h.json(),j=function(a){for(let b of a.candidates??[])for(let a of b.content?.parts??[]){let b=a.inlineData;if(b?.data&&b.mimeType?.startsWith("image/"))return{data:b.data,mime:b.mimeType}}return null}(i);if(!j){let a=i?.candidates?.[0]?.finishReason??"no image returned",b=i?.candidates?.[0]?.content?.parts?.map(a=>a.text).filter(Boolean).join(" ")?.slice(0,300);throw Error(`Gemini returned a non-image response (${a})${b?": "+b:""}`)}let k=Buffer.from(j.data,"base64");return(0,d.YN)(a.rootId,k,j.mime)}async function g(a){try{let b=await fetch(a,{redirect:"follow"});if(!b.ok)return null;let c=b.headers.get("content-type")?.split(";")[0]?.trim()??"";if(!c.startsWith("image/"))return null;let d=await b.arrayBuffer();return{data:Buffer.from(d).toString("base64"),mimeType:c}}catch{return null}}async function h(a){let b,d=a.provider??"gemini";if("gemini"===d)b=await f({rootId:a.rootId,prompt:a.prompt,...a.aspectRatio?{aspectRatio:a.aspectRatio}:{},...a.referenceImageUrls?{referenceImageUrls:a.referenceImageUrls}:{}});else if("codex"===d){let d=await c.e(1961).then(c.bind(c,61961));b=await d.generateWithCodex({rootId:a.rootId,prompt:a.prompt,...a.size?{size:a.size}:{}})}else throw Error(`unknown image provider: ${d}`);return{urlPath:b.urlPath,sha:b.sha,mime:b.mime,size:b.size,provider:d}}async function i(a){let b=Math.max(1,Math.min(24,a.count??12)),d=a.provider??await j();if("unsplash"===d)return(await c.e(7508).then(c.bind(c,57508))).searchUnsplash({query:a.query,count:b});if("pexels"===d)return(await c.e(5087).then(c.bind(c,95087))).searchPexels({query:a.query,count:b});if("brave"===d)return(await c.e(8262).then(c.bind(c,48262))).searchBrave({query:a.query,count:b});throw Error(`unknown image search provider: ${d}`)}async function j(){let{hasApiKey:a}=await Promise.resolve().then(c.bind(c,70333)),{resolveBraveKey:b}=await c.e(8262).then(c.bind(c,48262));return await b()?"brave":await a("unsplash")?"unsplash":await a("pexels")?"pexels":"brave"}async function k(a){return(0,d.fH)(a.rootId,a.sourceUrl)}},86745:(a,b,c)=>{"use strict";c.d(b,{L:()=>e});var d=c(3265);let e=(0,d.createServerReference)("604e058f00e68939dacbee146a9404c8aa2b6f42f5",d.callServer,void 0,d.findSourceMapURL,"deleteTopicAction")},88724:(a,b,c)=>{"use strict";c.d(b,{$d:()=>e,S9:()=>f,Zi:()=>d}),c(17240);let d={rootsChanged:"reflex:roots-changed",topicsChanged:a=>`reflex:topics-changed:${a}`,kbChanged:a=>`reflex:kb-changed:${a}`};function e(a,b){}function f(a,b){}},91344:(a,b,c)=>{"use strict";c.d(b,{cn:()=>f});var d=c(53221),e=c(25813);function f(...a){return(0,e.QP)((0,d.$)(a))}},91388:(a,b,c)=>{"use strict";c.d(b,{YN:()=>p,fH:()=>q,tf:()=>m});var d=c(73024),e=c(76760),f=c.n(e),g=c(77598),h=c.n(g),i=c(53905);let j=f().join(".reflex","assets","images"),k={"image/png":"png","image/jpeg":"jpg","image/jpg":"jpg","image/webp":"webp","image/gif":"gif","image/svg+xml":"svg","image/avif":"avif"},l={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",webp:"image/webp",gif:"image/gif",svg:"image/svg+xml",avif:"image/avif"};function m(a){return l[a.toLowerCase()]??"application/octet-stream"}async function n(a){let b=await (0,i.getRoot)(a);if(!b)throw Error(`unknown root: ${a}`);return b.path}async function o(a){let b=f().join(await n(a),j);return await d.promises.mkdir(b,{recursive:!0}),b}async function p(a,b,c){let e=Buffer.isBuffer(b)?b:Buffer.from(b),g=h().createHash("sha256").update(e).digest("hex"),i=k[c.toLowerCase()]??"bin",l=await o(a),m=f().join(l,`${g}.${i}`);try{await d.promises.access(m)}catch{await d.promises.writeFile(m,e)}return{sha:g,ext:i,mime:c,absPath:m,relPath:f().posix.join(j.split(f().sep).join("/"),`${g}.${i}`),urlPath:`/api/images/${encodeURIComponent(a)}/${g}.${i}`,size:e.byteLength}}async function q(a,b){let c=await fetch(b,{redirect:"follow",signal:AbortSignal.timeout(3e4)});if(!c.ok)throw Error(`fetch ${b} -> ${c.status} ${c.statusText}`);let d=c.headers.get("content-type")?.split(";")[0]?.trim()??"";if(!d.startsWith("image/"))throw Error(`not an image: content-type=${d||"(none)"}`);let e=Number(c.headers.get("content-length")??"0");if(e>0x1400000)throw Error(`image too large: ${e} bytes (cap 20971520)`);let f=await c.arrayBuffer();if(f.byteLength>0x1400000)throw Error(`image too large after download: ${f.byteLength} bytes (cap 20971520)`);return p(a,Buffer.from(f),d)}},92185:(a,b,c)=>{"use strict";c.d(b,{Ay:()=>i});var d=c(73024),e=c(76760),f=c.n(e),g=c(47e3),h=c(17640);let i=(0,g.A)(async()=>{let a=function(a){if(!a)return"en";let b=a.toLowerCase();return"ru"===b||"russian"===b||b.startsWith("ru-")?"ru":"en"}((await (0,h.loadSettings)()).language),b=await j(a);return{locale:a,messages:b}});async function j(a){let b=f().resolve(process.cwd(),"messages",a),c=[];try{c=(await d.promises.readdir(b)).filter(a=>a.endsWith(".json"))}catch{return{}}let e={};for(let a of c){let c=a.replace(/\.json$/,"");try{let g=await d.promises.readFile(f().join(b,a),"utf8");e[c]=JSON.parse(g)}catch{}}return e}},93437:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,47319,23)),Promise.resolve().then(c.t.bind(c,97654,23)),Promise.resolve().then(c.t.bind(c,10432,23)),Promise.resolve().then(c.t.bind(c,73671,23)),Promise.resolve().then(c.t.bind(c,78767,23)),Promise.resolve().then(c.t.bind(c,75751,23)),Promise.resolve().then(c.t.bind(c,48609,23)),Promise.resolve().then(c.t.bind(c,59118,23)),Promise.resolve().then(c.t.bind(c,84583,23))},93554:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{z:()=>N});var e=c(78474),f=c(77598),g=c(53905),h=c(20243),i=c(71222),j=c(52219),k=c(98360),l=c(59788),m=c(64421),n=c(1947),o=c(81483),p=c(22421),q=c(49410),r=c(26380),s=c(51872),t=c(84579),u=c(69509),v=c(73928),w=c(55143),x=c(56942),y=c(63848),z=c(20938),A=c(20050),B=c(8118),C=c(36017),D=c(5492),E=c(875),F=c(18809),G=a([i,n,w]);[i,n,w]=G.then?(await G)():G;class L{async ensureAgent(a){let b=this.byTopicRole.get(a.topicId)?.get(a.role);if(b){let a=this.agents.get(b);if(a)return{...a.meta}}return this.createAgent(a)}async createAgent(a){let b=J(),c={id:b,topicId:a.topicId,rootId:a.rootId,role:a.role,task:a.task,harness:a.harness,model:a.model,label:a.label,status:"idle",startedAt:H(),...a.parentId?{parentId:a.parentId}:{}};this.agents.set(b,{meta:c,rootPath:a.rootPath,reflexScope:a.reflexScope});let d=this.byTopicRole.get(a.topicId);return d||(d=new Map,this.byTopicRole.set(a.topicId,d)),d.set(a.role,b),await this.emit({type:"agent-start",meta:c,agentId:b,ts:c.startedAt,seq:0}),c}async invoke(a){let b=this.agents.get(a.agentId);if(!b)throw Error(`Agent not found: ${a.agentId}`);if("running"===b.meta.status)throw Error(`Agent ${a.agentId} is already running`);b.meta.status="running",this.lastInvoke.set(a.agentId,{systemPrompt:a.systemPrompt,rootPath:b.rootPath}),b.lastUserMessage=a.userMessage??a.prompt,this.turnText.set(a.agentId,"");let c=J();a.userMessage&&await this.emit({type:"user-message",text:a.userMessage,agentId:a.agentId,ts:H(),seq:0}),await this.emit({type:"turn-start",turnId:c,agentId:a.agentId,ts:H(),seq:0});let d=null;try{d=await (0,y.Qr)(b.rootPath)}catch{}try{let e={meta:{id:b.meta.id},args:{rootPath:b.rootPath,reflexScope:b.reflexScope,systemPrompt:a.systemPrompt,prompt:a.prompt,model:b.meta.model,allowedTools:a.allowedTools??[]},manager:this};if("claude-code"===b.meta.harness)await (0,i.Z)(e);else if("codex"===b.meta.harness)await (0,j.H)(e);else if("ollama"===b.meta.harness)await (0,k.E)(e);else if("image-gen"===b.meta.harness)await (0,l.R)({meta:e.meta,args:{rootPath:e.args.rootPath,prompt:e.args.prompt},manager:e.manager});else throw Error(`Unsupported harness: ${String(b.meta.harness)}`);await this.applyImageGenDirectives(a.agentId);let f=await this.evaluateGoalContinuation(a.agentId);b.meta.status="idle",await this.emit({type:"turn-end",turnId:c,status:"completed",agentId:a.agentId,ts:H(),seq:0});let{writtenViaKb:g,dispatches:h,youtubeSummaries:m}=await this.detectInteractionDirectives(a.agentId);d&&await this.reindexAfterTurn(a.agentId,d,g),h.length>0&&"orchestrator"===b.meta.role?this.dispatchSubAgents(a.agentId,h).catch(b=>{this.emit({type:"error",message:"sub-agent dispatch failed: "+(b instanceof Error?b.message:String(b)),agentId:a.agentId,ts:H(),seq:0})}):m.length>0&&"orchestrator"===b.meta.role?this.runYoutubeSummaries(a.agentId,m).catch(b=>{this.emit({type:"error",message:"youtube-summary failed: "+(b instanceof Error?b.message:String(b)),agentId:a.agentId,ts:H(),seq:0})}):f&&setTimeout(()=>{this.continueTurn(a.agentId,`[Reflex /goal] Continue execution. Active goal: ${f.goal}. Iteration ${f.iteration}/${E.GX}. If the task is done AND verified, finish with the marker \`GOAL ACHIEVED\` and a kb-entry kind:"goal-completion".`)},50)}catch(e){let d=e instanceof Error?e.message:String(e);b.meta.status="idle",b.meta.error=d,await this.emit({type:"error",message:d,agentId:a.agentId,ts:H(),seq:0}),await this.emit({type:"turn-end",turnId:c,status:"failed",error:d,agentId:a.agentId,ts:H(),seq:0})}finally{this.turnText.delete(a.agentId)}}async respondPermission(a,b){let c,d=this.agents.get(a);if(!d)throw Error("Agent not found");let e="running"===d.meta.status;try{let a=(await (0,h.readEvents)(d.rootPath,d.meta.topicId)).find(a=>"permission-request"===a.type&&a.requestId===b.requestId);c=a?.action}catch{}await this.emit({type:"permission-response",requestId:b.requestId,decision:b.decision,...b.scope?{scope:b.scope}:{},agentId:a,ts:H(),seq:0});let f="";if("tool-policy"===c&&"allow"===b.decision&&b.tool)try{let a=await (0,C.loadSettings)(),c=d.meta.task,e=a.assignments[c];e&&!e.allowedTools.includes(b.tool)&&(e.allowedTools=[...e.allowedTools,b.tool],await (0,C.saveSettings)(a),f=` Tool ${b.tool} added to settings.assignments.${c}.allowedTools.`)}catch(b){await this.emit({type:"error",message:"Failed to save allowed tool: "+(b instanceof Error?b.message:String(b)),agentId:a,ts:H(),seq:0})}let g=`[Reflex] Permission for ${b.tool??"action"} (${b.requestId}): ${b.decision}${b.scope?` (${b.scope})`:""}.${f} Continue.`,i="tool-policy"===c&&"allow"===b.decision&&!!b.tool&&!!f;if(e&&i&&d.killer){try{d.killer()}catch{}delete d.killer,d.meta.status="idle";let b=d.lastUserMessage??`${g} Retry the previous attempt with the now-allowed tool.`;await this.continueTurn(a,b);return}e||await this.continueTurn(a,g)}async respondQuestion(a,b){let c=this.agents.get(a);if(!c)throw Error("Agent not found");let d="running"===c.meta.status;await this.emit({type:"answer",questionId:b.questionId,answer:b.answer,agentId:a,ts:H(),seq:0});let e=`[Reflex] Answer for question ${b.questionId}: ${b.answer}. Continue.`;d||await this.continueTurn(a,e)}async respondMcpAdd(a,b){let d,e=this.agents.get(a),f=!!(e&&"running"===e.meta.status),g=null,i=e?.meta.topicId??null,j=e?.rootPath??null,k=this.pendingMcpAdds.get(b.requestId);if(k&&k.agentId===a)g=k.directive,this.pendingMcpAdds.delete(b.requestId);else{let a=await (0,z.az)(b.requestId);a&&(g=a.directive,i=i??a.topicId,j=j??a.rootPath)}if(!g)throw Error(`Unknown mcp-add request: ${b.requestId}`);let l=async a=>{if(e)return void await this.emit(a);if(i&&j){let b=await (0,h.nextSeq)(j,i);await (0,h.appendEvent)(j,i,{...a,seq:b})}};if("reject"===b.decision){await l({type:"mcp-add-response",requestId:b.requestId,decision:"reject",agentId:a,ts:H(),seq:0}),d=`[Reflex] User rejected adding MCP server "${g.server}". Don't re-propose the same server — either pick a different approach or ask the user what they prefer.`,e&&!f&&await this.continueTurn(a,d);return}try{let e=await I(g.config,g.secrets??[],b.secretValues??{}),{McpConfigSchema:f}=await Promise.resolve().then(c.bind(c,97453)),h=f.parse(e),{addMcpServer:i,updateMcpServer:j,getMcpServer:k}=await Promise.resolve().then(c.bind(c,580));await k(g.server)?await j(g.server,{label:g.label,...void 0!==g.description?{description:g.description}:{},config:h}):await i({id:g.server,label:g.label,...void 0!==g.description?{description:g.description}:{},config:h}),await l({type:"mcp-add-response",requestId:b.requestId,decision:"approve",server:g.server,agentId:a,ts:H(),seq:0}),d=`[Reflex] MCP server "${g.server}" registered. You can now call its tools via \`mcp__${g.server}__<tool>\` (chat) or \`reflex.mcp.call({server:"${g.server}",tool,args})\` (from a utility that declared it in manifest.mcpServers). Continue.`}catch(e){let c=e instanceof Error?e.message:String(e);await l({type:"error",message:"mcp-add failed: "+c,agentId:a,ts:H(),seq:0}),await l({type:"mcp-add-response",requestId:b.requestId,decision:"reject",agentId:a,ts:H(),seq:0}),d=`[Reflex] Failed to register MCP server "${g.server}": ${c}. Don't retry the exact same config; either fix the issue or ask the user.`}e&&!f&&await this.continueTurn(a,d)}async continueTurn(a,b){let c=this.agents.get(a);if(!c)return;let d=this.lastInvoke.get(a);if(!d)return void await this.emit({type:"error",message:"Cannot continue turn: no cached system prompt. Send another message manually.",agentId:a,ts:H(),seq:0});let e=[];try{let a=await (0,C.loadSettings)();e=a.assignments[c.meta.task]?.allowedTools??[]}catch{}let f=await K(d.rootPath,c.meta.topicId),g=`Prior conversation:
|
|
831
831
|
|
|
832
832
|
${f}
|
|
833
833
|
|