reflex-agent 0.19.0 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +96 -94
  3. package/.next/app-path-routes-manifest.json +9 -9
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +3 -3
  6. package/.next/react-loadable-manifest.json +1 -1
  7. package/.next/server/app/_not-found/page.js +1 -1
  8. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  9. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/agents/[agentId]/page.js +1 -1
  11. package/.next/server/app/agents/[agentId]/page.js.nft.json +1 -1
  12. package/.next/server/app/agents/[agentId]/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/agents/[agentId]/respond/route.js +1 -1
  14. package/.next/server/app/api/agents/[agentId]/respond/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/images/[rootId]/[file]/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/oauth/start/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/roots/[id]/attachments/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/roots/[id]/chat/[topicId]/send/route.js +1 -1
  20. package/.next/server/app/api/roots/[id]/chat/[topicId]/send/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/roots/[id]/chat/[topicId]/stop/route.js +1 -1
  22. package/.next/server/app/api/roots/[id]/chat/[topicId]/stop/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/roots/[id]/chat/[topicId]/stream/route.js +2 -2
  24. package/.next/server/app/api/roots/[id]/chat/[topicId]/stream/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/roots/[id]/dashboard/route.js +1 -1
  26. package/.next/server/app/api/roots/[id]/dashboard/route.js.nft.json +1 -1
  27. package/.next/server/app/api/roots/[id]/dashboard/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/roots/[id]/suggestions/route.js +1 -1
  29. package/.next/server/app/api/roots/[id]/suggestions/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/utilities/[scope]/[id]/bundle.js/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/utilities/[scope]/[id]/host/route.js +1 -1
  32. package/.next/server/app/api/utilities/[scope]/[id]/host/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/utilities/[scope]/[id]/host-api.mjs/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/utilities/[scope]/[id]/host-ui.mjs/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/utilities/[scope]/[id]/iframe/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/utilities/[scope]/[id]/style.css/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/utilities/install-archive/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/audit/page.js +2 -2
  39. package/.next/server/app/audit/page.js.nft.json +1 -1
  40. package/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  41. package/.next/server/app/dispatcher/page.js +1 -1
  42. package/.next/server/app/dispatcher/page.js.nft.json +1 -1
  43. package/.next/server/app/dispatcher/page_client-reference-manifest.js +1 -1
  44. package/.next/server/app/onboarding/page.js +2 -2
  45. package/.next/server/app/onboarding/page.js.nft.json +1 -1
  46. package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  47. package/.next/server/app/page.js +2 -2
  48. package/.next/server/app/page.js.nft.json +1 -1
  49. package/.next/server/app/page_client-reference-manifest.js +1 -1
  50. package/.next/server/app/roots/[id]/chat/[topicId]/page.js +2 -2
  51. package/.next/server/app/roots/[id]/chat/[topicId]/page.js.nft.json +1 -1
  52. package/.next/server/app/roots/[id]/chat/[topicId]/page_client-reference-manifest.js +1 -1
  53. package/.next/server/app/roots/[id]/kb/[...slug]/page.js +2 -2
  54. package/.next/server/app/roots/[id]/kb/[...slug]/page.js.nft.json +1 -1
  55. package/.next/server/app/roots/[id]/kb/[...slug]/page_client-reference-manifest.js +1 -1
  56. package/.next/server/app/roots/[id]/memory/page.js +1 -1
  57. package/.next/server/app/roots/[id]/memory/page.js.nft.json +1 -1
  58. package/.next/server/app/roots/[id]/memory/page_client-reference-manifest.js +1 -1
  59. package/.next/server/app/roots/[id]/page.js +6 -6
  60. package/.next/server/app/roots/[id]/page.js.nft.json +1 -1
  61. package/.next/server/app/roots/[id]/page_client-reference-manifest.js +1 -1
  62. package/.next/server/app/roots/[id]/workflows/[wfId]/page.js +2 -2
  63. package/.next/server/app/roots/[id]/workflows/[wfId]/page.js.nft.json +1 -1
  64. package/.next/server/app/roots/[id]/workflows/[wfId]/page_client-reference-manifest.js +1 -1
  65. package/.next/server/app/roots/[id]/workflows/page.js +2 -2
  66. package/.next/server/app/roots/[id]/workflows/page.js.nft.json +1 -1
  67. package/.next/server/app/roots/[id]/workflows/page_client-reference-manifest.js +1 -1
  68. package/.next/server/app/roots/new/page.js +4 -4
  69. package/.next/server/app/roots/new/page.js.nft.json +1 -1
  70. package/.next/server/app/roots/new/page_client-reference-manifest.js +1 -1
  71. package/.next/server/app/settings/page.js +6 -6
  72. package/.next/server/app/settings/page.js.nft.json +1 -1
  73. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  74. package/.next/server/app/share/[id]/file/page.js +2 -2
  75. package/.next/server/app/share/[id]/file/page.js.nft.json +1 -1
  76. package/.next/server/app/share/[id]/file/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app/share/[id]/page.js +2 -2
  78. package/.next/server/app/share/[id]/page.js.nft.json +1 -1
  79. package/.next/server/app/share/[id]/page_client-reference-manifest.js +1 -1
  80. package/.next/server/app/utilities/[scope]/[id]/page.js +2 -2
  81. package/.next/server/app/utilities/[scope]/[id]/page.js.nft.json +1 -1
  82. package/.next/server/app/utilities/[scope]/[id]/page_client-reference-manifest.js +1 -1
  83. package/.next/server/app/utilities/page.js +2 -2
  84. package/.next/server/app/utilities/page.js.nft.json +1 -1
  85. package/.next/server/app/utilities/page_client-reference-manifest.js +1 -1
  86. package/.next/server/app-paths-manifest.json +9 -9
  87. package/.next/server/chunks/1116.js +1 -1
  88. package/.next/server/chunks/127.js +1 -0
  89. package/.next/server/chunks/1437.js +1 -0
  90. package/.next/server/chunks/1960.js +1 -1
  91. package/.next/server/chunks/2485.js +2 -2
  92. package/.next/server/chunks/285.js +5 -5
  93. package/.next/server/chunks/316.js +1 -0
  94. package/.next/server/chunks/3236.js +1 -0
  95. package/.next/server/chunks/3332.js +1 -1
  96. package/.next/server/chunks/3474.js +2 -2
  97. package/.next/server/chunks/3631.js +1 -1
  98. package/.next/server/chunks/383.js +80 -1
  99. package/.next/server/chunks/4031.js +2 -2
  100. package/.next/server/chunks/412.js +4 -0
  101. package/.next/server/chunks/4230.js +1 -1
  102. package/.next/server/chunks/4639.js +1 -1
  103. package/.next/server/chunks/4812.js +1 -1
  104. package/.next/server/chunks/6483.js +1 -1
  105. package/.next/server/chunks/8609.js +3 -3
  106. package/.next/server/chunks/8845.js +1 -0
  107. package/.next/server/chunks/9098.js +1 -1
  108. package/.next/server/chunks/9579.js +1 -1
  109. package/.next/server/chunks/9744.js +3 -0
  110. package/.next/server/middleware-build-manifest.js +1 -1
  111. package/.next/server/middleware-manifest.json +5 -5
  112. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  113. package/.next/server/pages/500.html +1 -1
  114. package/.next/server/server-reference-manifest.js +1 -1
  115. package/.next/server/server-reference-manifest.json +1 -1
  116. package/.next/static/chunks/1607-15c6d55d9e53ff93.js +1 -0
  117. package/.next/static/chunks/3087-89315a04ad02f248.js +1 -0
  118. package/.next/static/chunks/4108.94b29b464eb76def.js +1 -0
  119. package/.next/static/chunks/434-111636f3d1607ae6.js +1 -0
  120. package/.next/static/chunks/5906-b510bcfd22b3cb54.js +1 -0
  121. package/.next/static/chunks/8275-b0235bf4164f80c8.js +1 -0
  122. package/.next/static/chunks/app/layout-ff235b86ba1c2051.js +1 -0
  123. package/.next/static/chunks/app/onboarding/{page-b1b1e6a4467ed781.js → page-2d69151514462c2f.js} +1 -1
  124. package/.next/static/chunks/app/page-bf7e4b271092499e.js +1 -0
  125. package/.next/static/chunks/app/roots/[id]/chat/[topicId]/page-99b5fd894d818407.js +1 -0
  126. package/.next/static/chunks/app/roots/[id]/kb/[...slug]/page-1770f40a6ebbe963.js +1 -0
  127. package/.next/static/chunks/app/roots/[id]/memory/{page-1f6bc3a624b141a5.js → page-d9df1020e2518e08.js} +1 -1
  128. package/.next/static/chunks/app/roots/[id]/page-5dbe59ec1a056767.js +1 -0
  129. package/.next/static/chunks/app/roots/[id]/workflows/[wfId]/page-24f3dbbc8c66fe66.js +1 -0
  130. package/.next/static/chunks/app/roots/[id]/workflows/page-d8a1dfdf2ae79306.js +1 -0
  131. package/.next/static/chunks/app/roots/new/page-29d4085ff97398aa.js +1 -0
  132. package/.next/static/chunks/app/settings/page-375f180a307b7982.js +1 -0
  133. package/.next/static/chunks/app/share/[id]/page-5802433c7b5b4a5b.js +1 -0
  134. package/.next/static/chunks/app/utilities/[scope]/[id]/page-d2f2cf9a1d829587.js +1 -0
  135. package/.next/static/chunks/app/utilities/page-87a36f10ea33d4fc.js +1 -0
  136. package/.next/static/chunks/{webpack-88066a85eb2d605f.js → webpack-a39957c5072b4303.js} +1 -1
  137. package/.next/static/css/749ec7b5594bd012.css +1 -0
  138. package/.next/trace +116 -116
  139. package/LICENSE +21 -0
  140. package/README.md +105 -84
  141. package/package.json +1 -1
  142. package/.next/server/chunks/2764.js +0 -80
  143. package/.next/server/chunks/4294.js +0 -1
  144. package/.next/server/chunks/6970.js +0 -1
  145. package/.next/server/chunks/8032.js +0 -3
  146. package/.next/server/chunks/832.js +0 -1
  147. package/.next/server/chunks/8583.js +0 -4
  148. package/.next/static/chunks/3363-f417b308a8cd156d.js +0 -1
  149. package/.next/static/chunks/3695-3576767108de7f38.js +0 -1
  150. package/.next/static/chunks/4108.19abaa6d618295ed.js +0 -1
  151. package/.next/static/chunks/5933-4013a6dab4565b5e.js +0 -1
  152. package/.next/static/chunks/7552-def8a17828891c8c.js +0 -1
  153. package/.next/static/chunks/app/layout-baad68d32b917b8f.js +0 -1
  154. package/.next/static/chunks/app/page-556a2139313c3c71.js +0 -1
  155. package/.next/static/chunks/app/roots/[id]/chat/[topicId]/page-52223811258d07b2.js +0 -1
  156. package/.next/static/chunks/app/roots/[id]/kb/[...slug]/page-0df769f27549cd16.js +0 -1
  157. package/.next/static/chunks/app/roots/[id]/page-17493991b2d391b3.js +0 -1
  158. package/.next/static/chunks/app/roots/[id]/workflows/[wfId]/page-a21fe3541418a80a.js +0 -1
  159. package/.next/static/chunks/app/roots/[id]/workflows/page-0952e5fb53d53c3e.js +0 -1
  160. package/.next/static/chunks/app/roots/new/page-4f571184c1856103.js +0 -1
  161. package/.next/static/chunks/app/settings/page-8c0ad1c1856da988.js +0 -1
  162. package/.next/static/chunks/app/share/[id]/page-b27a0bc7b9c6cda9.js +0 -1
  163. package/.next/static/chunks/app/utilities/[scope]/[id]/page-0fe4c377098064d5.js +0 -1
  164. package/.next/static/chunks/app/utilities/page-445933dcd5a500ae.js +0 -1
  165. package/.next/static/css/eef5a7cce3f3a4b3.css +0 -1
  166. /package/.next/static/{EXoiX_YvMRCB6oNXqJnaz → pJmMEuKKdWVEE__TmxHJk}/_buildManifest.js +0 -0
  167. /package/.next/static/{EXoiX_YvMRCB6oNXqJnaz → pJmMEuKKdWVEE__TmxHJk}/_ssgManifest.js +0 -0
@@ -1,9 +1,9 @@
1
- "use strict";exports.id=2485,exports.ids=[2485,7523],exports.modules={25475:(a,b,c)=>{c.d(b,{Md:()=>p,u0:()=>m,y4:()=>n});var d=c(73024),e=c(76760),f=c.n(e),g=c(77598),h=c.n(g),i=c(29163);let j=f().join((0,i._)(),"audit");function k(a){return f().join(j,`${a}.jsonl`)}function l(a=new Date){return a.toISOString().slice(0,10)}async function m(a){let b={ts:a.ts??new Date().toISOString(),...a};await d.promises.mkdir(j,{recursive:!0});let c=k(l());await d.promises.appendFile(c,JSON.stringify(b)+"\n","utf8")}async function n(a={}){let b,c=await o(),e=a.date??c[0]??l(),f=a.limit??500,g=k(e);try{b=await d.promises.readFile(g,"utf8")}catch{return{date:e,entries:[],availableDates:c}}let h=[],i=b.split(/\r?\n/);for(let b=i.length-1;b>=0&&h.length<f;b--){let c,d=i[b];if(d){try{c=JSON.parse(d)}catch{continue}(function(a,b){if(!b)return!0;if(b.utilityId&&a.utilityId!==b.utilityId||b.method&&a.method!==b.method||b.phase&&a.phase!==b.phase)return!1;if(b.status){let c=!a.error;if("ok"===b.status&&!c||"error"===b.status&&c)return!1}return!0})(c,a.filter)&&h.push(c)}}return{date:e,entries:h,availableDates:c}}async function o(){let a;try{a=await d.promises.readdir(j)}catch{return[]}return a.filter(a=>/^\d{4}-\d{2}-\d{2}\.jsonl$/.test(a)).map(a=>a.replace(/\.jsonl$/,"")).sort().reverse()}async function p(a,b){let c=h().randomUUID().replace(/-/g,"").slice(0,16),d=Date.now();await m({ts:new Date().toISOString(),utilityId:a.utilityId,scope:a.scope,channel:a.channel,method:a.method,phase:"start",correlationId:c,...a.parentCorrelationId?{parentCorrelationId:a.parentCorrelationId}:{},args:q(a.args)});try{let e=await b(c);return await m({ts:new Date().toISOString(),utilityId:a.utilityId,scope:a.scope,channel:a.channel,method:a.method,phase:"end",correlationId:c,durationMs:Date.now()-d,result:q(e)}),e}catch(e){let b=e instanceof Error?e.message:String(e);throw await m({ts:new Date().toISOString(),utilityId:a.utilityId,scope:a.scope,channel:a.channel,method:a.method,phase:"end",correlationId:c,durationMs:Date.now()-d,error:b}),e}}function q(a,b=0){if(null==a)return a;if("string"==typeof a)return a.length>2e3?a.slice(0,2e3)+"…[truncated]":a;if("object"!=typeof a)return a;if(b>3)return"[…]";if(Array.isArray(a))return a.slice(0,50).map(a=>q(a,b+1));let c={},d=0;for(let[e,f]of Object.entries(a)){if(d++>=50){c["…"]="truncated";break}c[e]=q(f,b+1)}return c}},47523:(a,b,c)=>{c.d(b,{capabilityRegistry:()=>e});class d{register(a){if(this.caps.has(a.id))throw Error(`capability already registered: ${a.id}`);this.caps.set(a.id,a)}has(a){return this.caps.has(a)}get(a){return this.caps.get(a)}async invoke(a,b,c){let d=this.caps.get(a);if(!d)throw Error(`unknown capability: ${a}`);if("sync"!==d.kind)throw Error(`capability ${a} is interactive — use open()/resolve()`);let e=d.input?d.input.parse(b):b;return await d.run(e,c)}async open(a,b,c){let d=this.caps.get(a);if(!d)throw Error(`unknown capability: ${a}`);if("interactive"!==d.kind)throw Error(`capability ${a} is sync — use invoke()`);let e=d.input?d.input.parse(b):b;return d.open(e,c)}async resolve(a,b,c,d){let e=this.caps.get(a);if(!e)throw Error(`unknown capability: ${a}`);if("interactive"!==e.kind)throw Error(`capability ${a} is sync — has no resolve()`);await e.resolve(b,c,d)}idempotencyKey(a,b,c){let d=this.caps.get(a);if(d?.kind==="interactive"&&d.idempotencyKey){let a=d.input?d.input.parse(b):b;return d.idempotencyKey(a,c)}return`${a}:${JSON.stringify(b)}`}describe(){return[...this.caps.values()].map(a=>({id:a.id,kind:a.kind,audit:a.audit??("sync"===a.kind?"event":"always"),...a.doc?{doc:a.doc}:{}})).sort((a,b)=>a.id.localeCompare(b.id))}constructor(){this.caps=new Map}}function e(){return globalThis.__reflexCapabilityRegistry??=new d}},62485:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{p:()=>w});var e=c(73024),f=c(76760),g=c.n(f),h=c(14126),i=c(30192),j=c.n(i),k=c(25475),l=c(61105),m=c(47523),n=c(14386),o=c(76165),p=c(99048),q=c(49353),r=c(11178),s=c(74853),t=c(24576),u=c(17640),v=a([p]);p=(v.then?(await v)():v)[0];let ay=h.Ik({task:h.k5(["chat","quick","rag","embed"]).default("quick"),prompt:h.Yj().min(1),model:h.Yj().optional()}),az=h.Ik({kind:h.Yj().min(1).max(64),title:h.Yj().min(1).max(200),body:h.Yj().default(""),meta:h.g1(h.Yj(),h.L5()).optional(),slug:h.Yj().optional(),date:h.Yj().optional(),rootId:h.Yj().optional()}),aA=h.Ik({kind:h.Yj().optional(),query:h.Yj().optional(),rootId:h.Yj().optional()}),aB=h.Ik({relPath:h.Yj().min(1),rootId:h.Yj().optional()}),aC=h.Ik({path:h.Yj().min(1),content:h.Yj().optional()}),aD=h.Ik({url:h.Yj().url(),method:h.k5(["GET","POST","PUT","DELETE","PATCH"]).default("GET"),headers:h.g1(h.Yj(),h.Yj()).optional(),body:h.KC([h.Yj(),h.g1(h.Yj(),h.L5())]).optional()}),aE=h.Ik({query:h.Yj().min(1).max(512)}),aF=h.Ik({type:h.Yj().min(1).max(64),payload:h.L5().optional()}),aG=h.Ik({server:h.Yj().min(1).optional(),tool:h.Yj().min(1),args:h.g1(h.Yj(),h.L5()).default({})}),aH=h.Ik({server:h.Yj().min(1).optional()}),aI=h.Ik({key:h.Yj().min(1)}),aJ=h.Ik({name:h.Yj().min(1),args:h.L5().optional()}),aK=h.Ik({prompt:h.Yj().min(1).max(4e4),rootId:h.Yj().optional(),harness:h.Yj().optional(),model:h.Yj().optional(),language:h.Yj().optional(),label:h.Yj().optional(),timeoutMs:h.ai().int().min(1e3).max(9e5).optional()}),aL=h.Ik({rootId:h.Yj().optional()}),aM=h.Ik({workflowId:h.Yj().min(1),rootId:h.Yj().optional()}),aN=h.Ik({workflowId:h.Yj().min(1),rootId:h.Yj().optional(),input:h.L5().optional()}),aO=h.Ik({prompt:h.Yj().min(1).max(8e3),provider:h.k5(["gemini","codex"]).optional(),size:h.Yj().max(40).optional(),aspectRatio:h.Yj().max(40).optional(),referenceImageUrls:h.YO(h.Yj().url()).max(6).optional(),alt:h.Yj().max(280).optional(),rootId:h.Yj().optional()}),aP=h.Ik({query:h.Yj().min(1).max(200),provider:h.k5(["unsplash","pexels","brave"]).optional(),count:h.ai().int().min(1).max(24).optional()}),aQ=h.Ik({sourceUrl:h.Yj().url(),rootId:h.Yj().optional()}),aR=h.Ik({source:h.Yj().min(1).max(2e4)}),aS=h.Ik({kind:h.k5(["workflow","chat"]),id:h.Yj().optional(),prompt:h.Yj().optional()}).strict(),aT=h.Ik({kind:h.k5(["image","text","file"]),file:h.Yj().min(1).max(500),caption:h.Yj().max(500).optional()}).strict(),aU=h.Ik({title:h.Yj().min(1).max(280),body:h.Yj().max(5e4).default(""),type:h.k5(["feature","bug","refactor","docs","chore","research","review","call","idea"]).default("feature"),status:h.k5(["backlog","ready","in-progress","review","done","blocked"]).default("backlog"),priority:h.k5(["low","normal","high"]).default("normal"),labels:h.YO(h.Yj()).default([]),assignee:h.Yj().nullable().default(null),parent:h.Yj().nullable().default(null),links:h.Ik({blocks:h.YO(h.Yj()).optional(),blockedBy:h.YO(h.Yj()).optional(),related:h.YO(h.Yj()).optional()}).default({}),pre:h.YO(aS).default([]),post:h.YO(aS).default([]),attachments:h.YO(aT).default([])}),aV=h.Ik({id:h.Yj().min(1),patch:h.Ik({title:h.Yj().min(1).max(280).optional(),body:h.Yj().max(5e4).optional(),type:h.k5(["feature","bug","refactor","docs","chore","research","review","call","idea"]).optional(),status:h.k5(["backlog","ready","in-progress","review","done","blocked"]).optional(),priority:h.k5(["low","normal","high"]).optional(),labels:h.YO(h.Yj()).optional(),assignee:h.Yj().nullable().optional(),parent:h.Yj().nullable().optional(),links:h.Ik({blocks:h.YO(h.Yj()).optional(),blockedBy:h.YO(h.Yj()).optional(),related:h.YO(h.Yj()).optional()}).optional(),pre:h.YO(aS).optional(),post:h.YO(aS).optional(),attachments:h.YO(aT).optional()}).default({})}),aW=h.Ik({id:h.Yj().min(1)}),aX=h.Ik({id:h.Yj().min(1),harness:h.Yj().optional(),model:h.Yj().optional()}),aY=h.Ik({id:h.Yj().min(1),outcome:h.k5(["done","review","blocked"])}),aZ=h.Ik({branch:h.Yj().min(1),intoRef:h.Yj().optional()}),a$=h.Ik({slug:h.Yj().min(1),branch:h.Yj().min(1),force:h.zM().default(!1),deleteBranch:h.zM().default(!0)}),a_=h.Ik({slug:h.Yj().min(1),branch:h.Yj().min(1),baseRef:h.Yj().optional()}),a0=h.Ik({query:h.Yj().min(1).max(512),rootId:h.Yj().optional(),source:h.k5(["journal","topic"]).optional(),since:h.Yj().optional(),until:h.Yj().optional(),limit:h.ai().int().min(1).max(50).default(10)}),a1=h.Ik({query:h.Yj().min(1).max(200),alt:h.Yj().max(280).default(""),context:h.Yj().max(2e3).default(""),candidates:h.YO(h.Ik({url:h.Yj().url(),thumb:h.Yj().url(),attribution:h.Ik({name:h.Yj().default(""),link:h.Yj().default("")})})).min(1).max(12),rootId:h.Yj().optional()}),a2=h.Ik({widgetId:h.Yj().optional(),snapshot:h.Ik({kind:h.k5(["markdown","news-list","link-list","kpi","checklist","quote","kb-pinned","progress","image","stat-table","map","action-list"]),title:h.Yj().optional(),description:h.Yj().optional(),data:h.g1(h.Yj(),h.L5()).default({})}),rootId:h.Yj().optional()}),a3=h.Ik({provider:h.Yj().min(1).max(80),kind:h.Yj().min(1).max(64),rootId:h.Yj().optional(),query:h.Yj().optional()}),a4=h.Ik({provider:h.Yj().min(1).max(80),kind:h.Yj().min(1).max(64),relPath:h.Yj().min(1),rootId:h.Yj().optional()}),a5=h.Ik({kind:h.Yj().optional(),verb:h.Yj().optional()}),a6=h.Ik({provider:h.Yj().min(1).max(80),verb:h.Yj().min(1).max(64),input:h.L5().optional(),rootId:h.Yj().optional()}),a7={"llm.complete":(a,b)=>D(a,ay.parse(b)),"kb.add":(a,b)=>E(a,az.parse(b)),"kb.list":(a,b)=>F(a,aA.parse(b)),"kb.read":(a,b)=>G(a,aB.parse(b)),"fs.read":(a,b)=>R(a,aC.parse(b)),"fs.write":(a,b)=>S(a,aC.parse(b)),"fs.list":(a,b)=>T(a,aC.parse(b)),"web.fetch":(a,b)=>U(a,aD.parse(b)),"web.search":(a,b)=>V(a,aE.parse(b)),"audit.log":(a,b,c)=>W(a,aF.parse(b),c),"actions.invoke":(a,b,c)=>X(a,aJ.parse(b),c),"mcp.call":(a,b)=>A(a,aG.parse(b)),"mcp.listServers":a=>B(a),"mcp.listTools":(a,b)=>C(a,aH.parse(b)),"secrets.get":(a,b)=>x(a,aI.parse(b)),"secrets.list":a=>y(a),"agent.invoke":(a,b)=>Y(a,aK.parse(b)),"workflow.list":(a,b)=>Z(a,aL.parse(b)),"workflow.read":(a,b)=>$(a,aM.parse(b)),"workflow.run":(a,b)=>_(a,aN.parse(b)),"cards.update":(a,b)=>aa(a,a2.parse(b)),"images.generate":(a,b)=>ab(a,aO.parse(b)),"images.search":(a,b)=>ac(a,aP.parse(b)),"images.attach":(a,b)=>ad(a,aQ.parse(b)),"images.pickBest":(a,b)=>ae(a,a1.parse(b)),"mermaid.validate":(a,b)=>ah(a,aR.parse(b)),"tasks.create":(a,b)=>ai(a,aU.parse(b)),"tasks.update":(a,b)=>aj(a,aV.parse(b)),"tasks.delete":(a,b)=>ak(a,aW.parse(b)),"tasks.get":(a,b)=>al(a,aW.parse(b)),"tasks.list":a=>am(a),"tasks.dispatch":(a,b)=>an(a,aX.parse(b)),"tasks.observe":(a,b)=>ao(a,aW.parse(b)),"tasks.complete":(a,b)=>ap(a,aY.parse(b)),"git.isRepo":a=>aq(a),"git.hasRemote":a=>ar(a),"git.hasGhCli":()=>as(),"git.worktree.create":(a,b)=>at(a,a_.parse(b)),"git.worktree.merge":(a,b)=>au(a,aZ.parse(b)),"git.worktree.remove":(a,b)=>av(a,a$.parse(b)),"git.worktree.list":a=>aw(a),"sessions.search":(a,b)=>ax(a,a0.parse(b)),"kb.scopedList":(a,b)=>M(a,a3.parse(b)),"kb.scopedRead":(a,b)=>N(a,a4.parse(b)),"capabilities.listProviders":(a,b)=>O(a,a5.parse(b)),"capabilities.invoke":(a,b,c)=>P(a,a6.parse(b),c)},a8=!1,a9={"tasks.get":"tasks.read","tasks.list":"tasks.read","tasks.observe":"tasks.read","tasks.create":"tasks.write","tasks.update":"tasks.write","tasks.delete":"tasks.write","tasks.complete":"tasks.write","tasks.dispatch":"tasks.dispatch","git.worktree.create":"worktree","git.worktree.merge":"worktree","git.worktree.remove":"worktree","git.worktree.list":"worktree"};async function w(a,b,c){!function(){if(a8)return;a8=!0;let a=(0,m.capabilityRegistry)();for(let[b,c]of Object.entries(a7))a.has(b)||a.register({kind:"sync",id:b,run:(a,b)=>c(b.host,a,b.correlationId??"")})}();let d={utilityId:a.utility.manifest.id,scope:a.utility.scope,channel:a.channel,method:b,args:c,...a.parentCorrelationId?{parentCorrelationId:a.parentCorrelationId}:{}};return(0,k.Md)(d,async d=>{var e;if(!(0,m.capabilityRegistry)().has(b))throw Error(`Unknown host method: ${b}`);let f=a9[b];if(f&&!function(a,b){let c=a.permissions;switch(b){case"tasks.read":return!!c.tasks?.read;case"tasks.write":return!!c.tasks?.write;case"tasks.dispatch":return!!c.tasks?.dispatch;case"worktree":return!!c.worktree}}(a.utility.manifest,f)&&(e=a.utility.manifest,"task-board"!==e.id||e.permissions.tasks||e.permissions.worktree))throw Error(`utility "${a.utility.manifest.id}" lacks permission "${f}" required for ${b}`);return(0,m.capabilityRegistry)().invoke(b,c,{caller:"utility",host:a,correlationId:d})})}async function x(a,b){if(!(a.utility.manifest.secrets??[]).find(a=>a.key===b.key))throw Error(`secret "${b.key}" is not declared in manifest.secrets`);let{getSecret:d}=await c.e(9293).then(c.bind(c,59293)),e=await d(a.utility.scope,a.utility.manifest.id,b.key,a.utility.rootId);if(null==e)throw Error(`secret "${b.key}" is not set — fill it in the utility's panel`);return{value:e}}async function y(a){let b=a.utility.manifest.secrets??[],{listSecretKeys:d}=await c.e(9293).then(c.bind(c,59293)),e=new Set(await d(a.utility.scope,a.utility.manifest.id,a.utility.rootId));return{secrets:b.map(a=>({key:a.key,set:e.has(a.key),required:a.required,label:a.label,description:a.description}))}}async function z(a,b){let d=a.utility.manifest.mcpServers??[],f=b;if(!f)if(1===d.length)f=d[0];else if(a.utility.manifest.source?.type==="mcp"){let b=g().join(a.utility.dir,"mcp.json"),d=await e.promises.readFile(b,"utf8").catch(()=>null);if(!d)throw Error(`mcp config missing at ${b}`);let{McpConfigSchema:f}=await Promise.resolve().then(c.bind(c,88124));return{config:f.parse(JSON.parse(d)),serverId:"(bundled)"}}else throw Error(0===d.length?"manifest.mcpServers is empty — declare which server you want to use":"multiple mcpServers declared — pass `server` explicitly");if(!d.includes(f))throw Error(`mcp server "${f}" is not in manifest.mcpServers — declare it to gain access`);let{getMcpServer:h}=await Promise.resolve().then(c.bind(c,5243)),i=await h(f);if(!i)throw Error(`mcp server "${f}" is not registered — add it in Settings → MCP`);return{config:i.config,serverId:f}}async function A(a,b){let{config:d,serverId:e}=await z(a,b.server),{callTool:f}=await Promise.resolve().then(c.bind(c,88124)),g=await f(d,b.tool,b.args);return{server:e,...void 0!==g.isError?{isError:g.isError}:{},content:g.content}}async function B(a){let b=a.utility.manifest.mcpServers??[],{listMcpServers:d}=await Promise.resolve().then(c.bind(c,5243)),e=await d(),f=new Map(e.map(a=>[a.id,a]));return{servers:b.map(a=>{let b=f.get(a);return{id:a,label:b?.label??a,description:b?.description??"",registered:!!b}})}}async function C(a,b){let{config:d,serverId:e}=await z(a,b.server),{connectAndListTools:f}=await Promise.resolve().then(c.bind(c,88124)),g=await f(d);return{server:e,tools:g.tools}}async function D(a,b){af(a.utility.manifest,!!a.utility.manifest.permissions.llm?.tasks?.includes(b.task),`llm.${b.task} not granted in manifest`);let c={...(await (0,u.loadSettings)()).assignments[b.task],...b.model?{model:b.model}:{}};return{text:await (0,p.quickComplete)(c,b.prompt,{timeoutMs:6e4})}}async function E(a,b){if(af(a.utility.manifest,!!a.utility.manifest.permissions.kb?.write,"kb.write not granted"),a.utility.manifest.permissions.kb?.kinds&&!a.utility.manifest.permissions.kb.kinds.includes(b.kind))throw Error(`kb kind "${b.kind}" not in manifest allowlist`);let c=await (0,o._y)(b.kind);if(c&&c!==a.utility.manifest.id)throw Error(`kb.add: kind "${b.kind}" is owned by utility "${c}"`);let d=await ag(a,b.rootId),e=await (0,q.j)({rootPath:d.path,directive:{kind:b.kind,title:b.title,...b.body?{body:b.body}:{},...b.meta?{meta:b.meta}:{},...b.slug?{slug:b.slug}:{},...b.date?{date:b.date}:{}},provenance:{kind:"utility",id:a.utility.manifest.id,version:a.utility.manifest.version}});return{relPath:e.relPath,absPath:e.absPath}}async function F(a,b){af(a.utility.manifest,!!a.utility.manifest.permissions.kb?.read,"kb.read not granted");let c=await ag(a,b.rootId),d=await (0,r.dj)(c.path),e=await K(a.utility.manifest.id,c.id),f=b.query?.toLowerCase();return d.filter(a=>(!b.kind||a.rel.split("/")[0]===b.kind||a.meta.kind===b.kind)&&(!e.enabled||!!e.allowed(a.meta.data.createdBy,a.meta.kind??a.rel.split("/")[0]))&&(!f||!!`${a.rel} ${a.meta.title??""}`.toLowerCase().includes(f))&&!0).map(a=>({relPath:a.rel,title:a.meta.title,kind:a.meta.kind,modifiedAt:a.modifiedAt}))}async function G(a,b){af(a.utility.manifest,!!a.utility.manifest.permissions.kb?.read,"kb.read not granted");let c=await ag(a,b.rootId),d=await (0,r.IK)(c.path,b.relPath),e=await K(a.utility.manifest.id,c.id);if(e.enabled){let a=j()(d).data,c="string"==typeof a.kind?a.kind:b.relPath.split("/")[0];if(!e.allowed(a.createdBy,c))throw Error(`kb.read denied: requireScopedReads is on and "${b.relPath}" is neither self-owned nor granted`)}return{content:d}}function H(a,b){return"string"==typeof a&&(a===`utility:${b}`||a.startsWith(`utility:${b}@`))}function I(a,b,c,d){return Error(`grant_required: utility "${a}" needs a ${b} grant for ${c}/${d}`)}function J(a){af(a.utility.manifest,!!a.utility.manifest.permissions.shares?.consume,"shares.consume not granted")}async function K(a,b){let c=await (0,u.loadSettings)();if(!c.sharing?.requireScopedReads)return{enabled:!1,allowed:()=>!0};let d=new Set((await (0,n.s8)()).filter(c=>c.consumer===a&&"data"===c.plane&&(0,n.pj)(c)&&(0,n.f8)(c,b)).map(a=>`${a.provider}:${a.selector}`));return{enabled:!0,allowed:(b,c)=>{if(H(b,a))return!0;if("string"==typeof b&&b.startsWith("utility:")&&c){let a=b.slice(8).split("@")[0];if(d.has(`${a}:${c}`))return!0}return!1}}}async function L(a){let b=(await (0,l.dH)(a?{rootId:a}:{})).map(a=>({id:a.manifest.id,scope:a.scope,...a.rootId?{rootId:a.rootId}:{},version:a.manifest.version,provides:a.manifest.provides}));await (0,o.C2)(b)}async function M(a,b){J(a);let c=await ag(a,b.rootId);if(!await (0,n.QD)({consumer:a.utility.manifest.id,provider:b.provider,plane:"data",selector:b.kind,scope:c.id}))throw I(a.utility.manifest.id,"data",b.provider,b.kind);let d=await (0,r.dj)(c.path),e=b.query?.toLowerCase();return d.filter(a=>(a.rel.split("/")[0]===b.kind||a.meta.kind===b.kind)&&!!H(a.meta.data.createdBy,b.provider)&&(!e||!!`${a.rel} ${a.meta.title??""}`.toLowerCase().includes(e))&&!0).map(a=>({relPath:a.rel,title:a.meta.title,kind:a.meta.kind,modifiedAt:a.modifiedAt}))}async function N(a,b){J(a);let c=await ag(a,b.rootId);if(!await (0,n.QD)({consumer:a.utility.manifest.id,provider:b.provider,plane:"data",selector:b.kind,scope:c.id}))throw I(a.utility.manifest.id,"data",b.provider,b.kind);if(b.relPath.split("/")[0]!==b.kind)throw Error(`kb.scopedRead: relPath is not under the granted kind "${b.kind}"`);let d=await (0,r.IK)(c.path,b.relPath),e=j()(d).data;if(!H(e.createdBy,b.provider))throw Error(`kb.scopedRead: "${b.relPath}" is not owned by provider "${b.provider}"`);return{content:d}}async function O(a,b){J(a),await L(a.utility.rootId);let c=b.kind||b.verb?{...b.kind?{kind:b.kind}:{},...b.verb?{verb:b.verb}:{}}:void 0;return(await (0,o.R0)(c)).map(a=>({provider:a.provider,version:a.version,scope:a.scope,data:a.data.map(a=>({kind:a.kind,...a.doc?{doc:a.doc}:{}})),capabilities:a.capabilities.map(a=>({verb:a.verb,...a.doc?{doc:a.doc}:{},sideEffects:a.sideEffects,input:a.input,output:a.output}))}))}async function P(a,b,d){if(J(a),!(a.utility.manifest.consumes?.capabilities??[]).some(a=>a.verb===b.verb&&(!a.provider||a.provider===b.provider)))throw Error(`capabilities.invoke: "${b.verb}" from "${b.provider}" is not declared in manifest.consumes.capabilities`);let e=await ag(a,b.rootId);if(!await (0,n.QD)({consumer:a.utility.manifest.id,provider:b.provider,plane:"capability",selector:b.verb,scope:e.id}))throw I(a.utility.manifest.id,"capability",b.provider,b.verb);await L(e.id);let f=await (0,o.BS)(b.provider,b.verb,e.id);if(!f)throw Error(`capabilities.invoke: provider "${b.provider}" does not export verb "${b.verb}"`);let g=await (0,l.$X)(b.provider,e.id);if(!g)throw Error(`capabilities.invoke: provider "${b.provider}" is not installed`);let h=g.manifest.serverActions.find(a=>a.name===f.capability.action);if(!h)throw Error(`capabilities.invoke: provider action "${f.capability.action}" not found in "${b.provider}"`);let{runServerAction:i}=await Promise.all([c.e(7300),c.e(1960)]).then(c.bind(c,29579));return i({utility:g,action:h,args:b.input,parentCorrelationId:d})}function Q(a,b){if(b.startsWith("/")||b.includes(".."))throw Error(`unsafe fs path: ${b}`);let c=g().join(a.utility.dir,"data"),d=g().resolve(c,b),e=g().relative(c,d);if(e.startsWith("..")||g().isAbsolute(e))throw Error(`fs path escapes data dir: ${b}`);return d}async function R(a,b){af(a.utility.manifest,!!a.utility.manifest.permissions.fs?.sandbox,"fs not granted");let c=Q(a,b.path);return{content:await e.promises.readFile(c,"utf8")}}async function S(a,b){if(af(a.utility.manifest,!!a.utility.manifest.permissions.fs?.sandbox,"fs not granted"),"string"!=typeof b.content)throw Error("fs.write requires content (string)");let c=Q(a,b.path);return await e.promises.mkdir(g().dirname(c),{recursive:!0}),await e.promises.writeFile(c,b.content,"utf8"),{ok:!0,bytes:Buffer.byteLength(b.content,"utf8")}}async function T(a,b){af(a.utility.manifest,!!a.utility.manifest.permissions.fs?.sandbox,"fs not granted");let c=Q(a,b.path||".");try{return{entries:(await e.promises.readdir(c,{withFileTypes:!0})).map(a=>({name:a.name,isDir:a.isDirectory()}))}}catch{return{entries:[]}}}async function U(a,b){let c,d=a.utility.manifest.permissions.web?.fetch?.domains??[];try{c=new URL(b.url).hostname}catch{throw Error(`invalid url: ${b.url}`)}if(!d.some(a=>c===a||c.endsWith(`.${a}`)))throw Error(`web.fetch denied: domain "${c}" not in whitelist (${d.join(", ")})`);let e={method:b.method,...b.headers?{headers:b.headers}:{},signal:AbortSignal.timeout(2e4)};void 0!==b.body&&"GET"!==b.method&&(e.body="string"==typeof b.body?b.body:JSON.stringify(b.body));let f=await fetch(b.url,e),g=await f.text(),h={};return f.headers.forEach((a,b)=>{h[b]=a}),{status:f.status,headers:h,body:g}}async function V(a,b){af(a.utility.manifest,!!a.utility.manifest.permissions.web?.search,"web.search not granted");let c=await (0,u.loadSettings)(),d={...c.assignments.quick,allowedTools:Array.from(new Set([...c.assignments.quick.allowedTools??[],"WebSearch"]))},e=`Use the WebSearch tool to find recent results for the query below.
1
+ "use strict";exports.id=2485,exports.ids=[2485,7523],exports.modules={25475:(a,b,c)=>{c.d(b,{Md:()=>p,u0:()=>m,y4:()=>n});var d=c(73024),e=c(76760),f=c.n(e),g=c(77598),h=c.n(g),i=c(29163);let j=f().join((0,i._)(),"audit");function k(a){return f().join(j,`${a}.jsonl`)}function l(a=new Date){return a.toISOString().slice(0,10)}async function m(a){let b={ts:a.ts??new Date().toISOString(),...a};await d.promises.mkdir(j,{recursive:!0});let c=k(l());await d.promises.appendFile(c,JSON.stringify(b)+"\n","utf8")}async function n(a={}){let b,c=await o(),e=a.date??c[0]??l(),f=a.limit??500,g=k(e);try{b=await d.promises.readFile(g,"utf8")}catch{return{date:e,entries:[],availableDates:c}}let h=[],i=b.split(/\r?\n/);for(let b=i.length-1;b>=0&&h.length<f;b--){let c,d=i[b];if(d){try{c=JSON.parse(d)}catch{continue}(function(a,b){if(!b)return!0;if(b.utilityId&&a.utilityId!==b.utilityId||b.method&&a.method!==b.method||b.phase&&a.phase!==b.phase)return!1;if(b.status){let c=!a.error;if("ok"===b.status&&!c||"error"===b.status&&c)return!1}return!0})(c,a.filter)&&h.push(c)}}return{date:e,entries:h,availableDates:c}}async function o(){let a;try{a=await d.promises.readdir(j)}catch{return[]}return a.filter(a=>/^\d{4}-\d{2}-\d{2}\.jsonl$/.test(a)).map(a=>a.replace(/\.jsonl$/,"")).sort().reverse()}async function p(a,b){let c=h().randomUUID().replace(/-/g,"").slice(0,16),d=Date.now();await m({ts:new Date().toISOString(),utilityId:a.utilityId,scope:a.scope,channel:a.channel,method:a.method,phase:"start",correlationId:c,...a.parentCorrelationId?{parentCorrelationId:a.parentCorrelationId}:{},args:q(a.args)});try{let e=await b(c);return await m({ts:new Date().toISOString(),utilityId:a.utilityId,scope:a.scope,channel:a.channel,method:a.method,phase:"end",correlationId:c,durationMs:Date.now()-d,result:q(e)}),e}catch(e){let b=e instanceof Error?e.message:String(e);throw await m({ts:new Date().toISOString(),utilityId:a.utilityId,scope:a.scope,channel:a.channel,method:a.method,phase:"end",correlationId:c,durationMs:Date.now()-d,error:b}),e}}function q(a,b=0){if(null==a)return a;if("string"==typeof a)return a.length>2e3?a.slice(0,2e3)+"…[truncated]":a;if("object"!=typeof a)return a;if(b>3)return"[…]";if(Array.isArray(a))return a.slice(0,50).map(a=>q(a,b+1));let c={},d=0;for(let[e,f]of Object.entries(a)){if(d++>=50){c["…"]="truncated";break}c[e]=q(f,b+1)}return c}},47523:(a,b,c)=>{c.d(b,{capabilityRegistry:()=>e});class d{register(a){if(this.caps.has(a.id))throw Error(`capability already registered: ${a.id}`);this.caps.set(a.id,a)}has(a){return this.caps.has(a)}get(a){return this.caps.get(a)}async invoke(a,b,c){let d=this.caps.get(a);if(!d)throw Error(`unknown capability: ${a}`);if("sync"!==d.kind)throw Error(`capability ${a} is interactive — use open()/resolve()`);let e=d.input?d.input.parse(b):b;return await d.run(e,c)}async open(a,b,c){let d=this.caps.get(a);if(!d)throw Error(`unknown capability: ${a}`);if("interactive"!==d.kind)throw Error(`capability ${a} is sync — use invoke()`);let e=d.input?d.input.parse(b):b;return d.open(e,c)}async resolve(a,b,c,d){let e=this.caps.get(a);if(!e)throw Error(`unknown capability: ${a}`);if("interactive"!==e.kind)throw Error(`capability ${a} is sync — has no resolve()`);await e.resolve(b,c,d)}idempotencyKey(a,b,c){let d=this.caps.get(a);if(d?.kind==="interactive"&&d.idempotencyKey){let a=d.input?d.input.parse(b):b;return d.idempotencyKey(a,c)}return`${a}:${JSON.stringify(b)}`}describe(){return[...this.caps.values()].map(a=>({id:a.id,kind:a.kind,audit:a.audit??("sync"===a.kind?"event":"always"),...a.doc?{doc:a.doc}:{}})).sort((a,b)=>a.id.localeCompare(b.id))}constructor(){this.caps=new Map}}function e(){return globalThis.__reflexCapabilityRegistry??=new d}},62485:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{EI:()=>a9,pk:()=>w});var e=c(73024),f=c(76760),g=c.n(f),h=c(14126),i=c(30192),j=c.n(i),k=c(25475),l=c(61105),m=c(47523),n=c(14386),o=c(76165),p=c(99048),q=c(49353),r=c(11178),s=c(74853),t=c(24576),u=c(17640),v=a([p]);p=(v.then?(await v)():v)[0];let ax=h.Ik({task:h.k5(["chat","quick","rag","embed"]).default("quick"),prompt:h.Yj().min(1),model:h.Yj().optional()}),ay=h.Ik({kind:h.Yj().min(1).max(64),title:h.Yj().min(1).max(200),body:h.Yj().default(""),meta:h.g1(h.Yj(),h.L5()).optional(),slug:h.Yj().optional(),date:h.Yj().optional(),rootId:h.Yj().optional()}),az=h.Ik({kind:h.Yj().optional(),query:h.Yj().optional(),rootId:h.Yj().optional()}),aA=h.Ik({relPath:h.Yj().min(1),rootId:h.Yj().optional()}),aB=h.Ik({path:h.Yj().min(1),content:h.Yj().optional()}),aC=h.Ik({url:h.Yj().url(),method:h.k5(["GET","POST","PUT","DELETE","PATCH"]).default("GET"),headers:h.g1(h.Yj(),h.Yj()).optional(),body:h.KC([h.Yj(),h.g1(h.Yj(),h.L5())]).optional()}),aD=h.Ik({query:h.Yj().min(1).max(512)}),aE=h.Ik({type:h.Yj().min(1).max(64),payload:h.L5().optional()}),aF=h.Ik({server:h.Yj().min(1).optional(),tool:h.Yj().min(1),args:h.g1(h.Yj(),h.L5()).default({})}),aG=h.Ik({server:h.Yj().min(1).optional()}),aH=h.Ik({key:h.Yj().min(1)}),aI=h.Ik({name:h.Yj().min(1),args:h.L5().optional()}),aJ=h.Ik({prompt:h.Yj().min(1).max(4e4),rootId:h.Yj().optional(),harness:h.Yj().optional(),model:h.Yj().optional(),language:h.Yj().optional(),label:h.Yj().optional(),timeoutMs:h.ai().int().min(1e3).max(9e5).optional()}),aK=h.Ik({rootId:h.Yj().optional()}),aL=h.Ik({workflowId:h.Yj().min(1),rootId:h.Yj().optional()}),aM=h.Ik({workflowId:h.Yj().min(1),rootId:h.Yj().optional(),input:h.L5().optional()}),aN=h.Ik({prompt:h.Yj().min(1).max(8e3),provider:h.k5(["gemini","codex"]).optional(),size:h.Yj().max(40).optional(),aspectRatio:h.Yj().max(40).optional(),referenceImageUrls:h.YO(h.Yj().url()).max(6).optional(),alt:h.Yj().max(280).optional(),rootId:h.Yj().optional()}),aO=h.Ik({query:h.Yj().min(1).max(200),provider:h.k5(["unsplash","pexels","brave"]).optional(),count:h.ai().int().min(1).max(24).optional()}),aP=h.Ik({sourceUrl:h.Yj().url(),rootId:h.Yj().optional()}),aQ=h.Ik({source:h.Yj().min(1).max(2e4)}),aR=h.Ik({kind:h.k5(["workflow","chat"]),id:h.Yj().optional(),prompt:h.Yj().optional()}).strict(),aS=h.Ik({kind:h.k5(["image","text","file"]),file:h.Yj().min(1).max(500),caption:h.Yj().max(500).optional()}).strict(),aT=h.Ik({title:h.Yj().min(1).max(280),body:h.Yj().max(5e4).default(""),type:h.k5(["feature","bug","refactor","docs","chore","research","review","call","idea"]).default("feature"),status:h.k5(["backlog","ready","in-progress","review","done","blocked"]).default("backlog"),priority:h.k5(["low","normal","high"]).default("normal"),labels:h.YO(h.Yj()).default([]),assignee:h.Yj().nullable().default(null),parent:h.Yj().nullable().default(null),links:h.Ik({blocks:h.YO(h.Yj()).optional(),blockedBy:h.YO(h.Yj()).optional(),related:h.YO(h.Yj()).optional()}).default({}),pre:h.YO(aR).default([]),post:h.YO(aR).default([]),attachments:h.YO(aS).default([])}),aU=h.Ik({id:h.Yj().min(1),patch:h.Ik({title:h.Yj().min(1).max(280).optional(),body:h.Yj().max(5e4).optional(),type:h.k5(["feature","bug","refactor","docs","chore","research","review","call","idea"]).optional(),status:h.k5(["backlog","ready","in-progress","review","done","blocked"]).optional(),priority:h.k5(["low","normal","high"]).optional(),labels:h.YO(h.Yj()).optional(),assignee:h.Yj().nullable().optional(),parent:h.Yj().nullable().optional(),links:h.Ik({blocks:h.YO(h.Yj()).optional(),blockedBy:h.YO(h.Yj()).optional(),related:h.YO(h.Yj()).optional()}).optional(),pre:h.YO(aR).optional(),post:h.YO(aR).optional(),attachments:h.YO(aS).optional()}).default({})}),aV=h.Ik({id:h.Yj().min(1)}),aW=h.Ik({id:h.Yj().min(1),harness:h.Yj().optional(),model:h.Yj().optional()}),aX=h.Ik({id:h.Yj().min(1),outcome:h.k5(["done","review","blocked"])}),aY=h.Ik({branch:h.Yj().min(1),intoRef:h.Yj().optional()}),aZ=h.Ik({slug:h.Yj().min(1),branch:h.Yj().min(1),force:h.zM().default(!1),deleteBranch:h.zM().default(!0)}),a$=h.Ik({slug:h.Yj().min(1),branch:h.Yj().min(1),baseRef:h.Yj().optional()}),a_=h.Ik({query:h.Yj().min(1).max(512),rootId:h.Yj().optional(),source:h.k5(["journal","topic"]).optional(),since:h.Yj().optional(),until:h.Yj().optional(),limit:h.ai().int().min(1).max(50).default(10)}),a0=h.Ik({query:h.Yj().min(1).max(200),alt:h.Yj().max(280).default(""),context:h.Yj().max(2e3).default(""),candidates:h.YO(h.Ik({url:h.Yj().url(),thumb:h.Yj().url(),attribution:h.Ik({name:h.Yj().default(""),link:h.Yj().default("")})})).min(1).max(12),rootId:h.Yj().optional()}),a1=h.Ik({widgetId:h.Yj().optional(),snapshot:h.Ik({kind:h.k5(["markdown","news-list","link-list","kpi","checklist","quote","kb-pinned","progress","image","stat-table","map","action-list"]),title:h.Yj().optional(),description:h.Yj().optional(),data:h.g1(h.Yj(),h.L5()).default({})}),rootId:h.Yj().optional()}),a2=h.Ik({provider:h.Yj().min(1).max(80),kind:h.Yj().min(1).max(64),rootId:h.Yj().optional(),query:h.Yj().optional()}),a3=h.Ik({provider:h.Yj().min(1).max(80),kind:h.Yj().min(1).max(64),relPath:h.Yj().min(1),rootId:h.Yj().optional()}),a4=h.Ik({kind:h.Yj().optional(),verb:h.Yj().optional()}),a5=h.Ik({provider:h.Yj().min(1).max(80),verb:h.Yj().min(1).max(64),input:h.L5().optional(),rootId:h.Yj().optional()}),a6={"llm.complete":(a,b)=>D(a,ax.parse(b)),"kb.add":(a,b)=>E(a,ay.parse(b)),"kb.list":(a,b)=>F(a,az.parse(b)),"kb.read":(a,b)=>G(a,aA.parse(b)),"fs.read":(a,b)=>Q(a,aB.parse(b)),"fs.write":(a,b)=>R(a,aB.parse(b)),"fs.list":(a,b)=>S(a,aB.parse(b)),"web.fetch":(a,b)=>T(a,aC.parse(b)),"web.search":(a,b)=>U(a,aD.parse(b)),"audit.log":(a,b,c)=>V(a,aE.parse(b),c),"actions.invoke":(a,b,c)=>W(a,aI.parse(b),c),"mcp.call":(a,b)=>A(a,aF.parse(b)),"mcp.listServers":a=>B(a),"mcp.listTools":(a,b)=>C(a,aG.parse(b)),"secrets.get":(a,b)=>x(a,aH.parse(b)),"secrets.list":a=>y(a),"agent.invoke":(a,b)=>X(a,aJ.parse(b)),"workflow.list":(a,b)=>Y(a,aK.parse(b)),"workflow.read":(a,b)=>Z(a,aL.parse(b)),"workflow.run":(a,b)=>$(a,aM.parse(b)),"cards.update":(a,b)=>_(a,a1.parse(b)),"images.generate":(a,b)=>aa(a,aN.parse(b)),"images.search":(a,b)=>ab(a,aO.parse(b)),"images.attach":(a,b)=>ac(a,aP.parse(b)),"images.pickBest":(a,b)=>ad(a,a0.parse(b)),"mermaid.validate":(a,b)=>ag(a,aQ.parse(b)),"tasks.create":(a,b)=>ah(a,aT.parse(b)),"tasks.update":(a,b)=>ai(a,aU.parse(b)),"tasks.delete":(a,b)=>aj(a,aV.parse(b)),"tasks.get":(a,b)=>ak(a,aV.parse(b)),"tasks.list":a=>al(a),"tasks.dispatch":(a,b)=>am(a,aW.parse(b)),"tasks.observe":(a,b)=>an(a,aV.parse(b)),"tasks.complete":(a,b)=>ao(a,aX.parse(b)),"git.isRepo":a=>ap(a),"git.hasRemote":a=>aq(a),"git.hasGhCli":()=>ar(),"git.worktree.create":(a,b)=>as(a,a$.parse(b)),"git.worktree.merge":(a,b)=>at(a,aY.parse(b)),"git.worktree.remove":(a,b)=>au(a,aZ.parse(b)),"git.worktree.list":a=>av(a),"sessions.search":(a,b)=>aw(a,a_.parse(b)),"kb.scopedList":(a,b)=>L(a,a2.parse(b)),"kb.scopedRead":(a,b)=>M(a,a3.parse(b)),"capabilities.listProviders":(a,b)=>N(a,a4.parse(b)),"capabilities.invoke":(a,b,c)=>O(a,a5.parse(b),c)},a7=!1,a8={"tasks.get":"tasks.read","tasks.list":"tasks.read","tasks.observe":"tasks.read","tasks.create":"tasks.write","tasks.update":"tasks.write","tasks.delete":"tasks.write","tasks.complete":"tasks.write","tasks.dispatch":"tasks.dispatch","git.worktree.create":"worktree","git.worktree.merge":"worktree","git.worktree.remove":"worktree","git.worktree.list":"worktree"};async function w(a,b,c){!function(){if(a7)return;a7=!0;let a=(0,m.capabilityRegistry)();for(let[b,c]of Object.entries(a6))a.has(b)||a.register({kind:"sync",id:b,run:(a,b)=>c(b.host,a,b.correlationId??"")})}();let d={utilityId:a.utility.manifest.id,scope:a.utility.scope,channel:a.channel,method:b,args:c,...a.parentCorrelationId?{parentCorrelationId:a.parentCorrelationId}:{}};return(0,k.Md)(d,async d=>{var e;if(!(0,m.capabilityRegistry)().has(b))throw Error(`Unknown host method: ${b}`);let f=a8[b];if(f&&!function(a,b){let c=a.permissions;switch(b){case"tasks.read":return!!c.tasks?.read;case"tasks.write":return!!c.tasks?.write;case"tasks.dispatch":return!!c.tasks?.dispatch;case"worktree":return!!c.worktree}}(a.utility.manifest,f)&&(e=a.utility.manifest,"task-board"!==e.id||e.permissions.tasks||e.permissions.worktree))throw Error(`utility "${a.utility.manifest.id}" lacks permission "${f}" required for ${b}`);return(0,m.capabilityRegistry)().invoke(b,c,{caller:"utility",host:a,correlationId:d})})}async function x(a,b){if(!(a.utility.manifest.secrets??[]).find(a=>a.key===b.key))throw Error(`secret "${b.key}" is not declared in manifest.secrets`);let{getSecret:d}=await c.e(9293).then(c.bind(c,59293)),e=await d(a.utility.scope,a.utility.manifest.id,b.key,a.utility.rootId);if(null==e)throw Error(`secret "${b.key}" is not set — fill it in the utility's panel`);return{value:e}}async function y(a){let b=a.utility.manifest.secrets??[],{listSecretKeys:d}=await c.e(9293).then(c.bind(c,59293)),e=new Set(await d(a.utility.scope,a.utility.manifest.id,a.utility.rootId));return{secrets:b.map(a=>({key:a.key,set:e.has(a.key),required:a.required,label:a.label,description:a.description}))}}async function z(a,b){let d=a.utility.manifest.mcpServers??[],f=b;if(!f)if(1===d.length)f=d[0];else if(a.utility.manifest.source?.type==="mcp"){let b=g().join(a.utility.dir,"mcp.json"),d=await e.promises.readFile(b,"utf8").catch(()=>null);if(!d)throw Error(`mcp config missing at ${b}`);let{McpConfigSchema:f}=await Promise.resolve().then(c.bind(c,88124));return{config:f.parse(JSON.parse(d)),serverId:"(bundled)"}}else throw Error(0===d.length?"manifest.mcpServers is empty — declare which server you want to use":"multiple mcpServers declared — pass `server` explicitly");if(!d.includes(f))throw Error(`mcp server "${f}" is not in manifest.mcpServers — declare it to gain access`);let{getMcpServer:h}=await Promise.resolve().then(c.bind(c,5243)),i=await h(f);if(!i)throw Error(`mcp server "${f}" is not registered — add it in Settings → MCP`);return{config:i.config,serverId:f}}async function A(a,b){let{config:d,serverId:e}=await z(a,b.server),{callTool:f}=await Promise.resolve().then(c.bind(c,88124)),g=await f(d,b.tool,b.args);return{server:e,...void 0!==g.isError?{isError:g.isError}:{},content:g.content}}async function B(a){let b=a.utility.manifest.mcpServers??[],{listMcpServers:d}=await Promise.resolve().then(c.bind(c,5243)),e=await d(),f=new Map(e.map(a=>[a.id,a]));return{servers:b.map(a=>{let b=f.get(a);return{id:a,label:b?.label??a,description:b?.description??"",registered:!!b}})}}async function C(a,b){let{config:d,serverId:e}=await z(a,b.server),{connectAndListTools:f}=await Promise.resolve().then(c.bind(c,88124)),g=await f(d);return{server:e,tools:g.tools}}async function D(a,b){ae(a.utility.manifest,!!a.utility.manifest.permissions.llm?.tasks?.includes(b.task),`llm.${b.task} not granted in manifest`);let c={...(await (0,u.loadSettings)()).assignments[b.task],...b.model?{model:b.model}:{}};return{text:await (0,p.quickComplete)(c,b.prompt,{timeoutMs:6e4})}}async function E(a,b){if(ae(a.utility.manifest,!!a.utility.manifest.permissions.kb?.write,"kb.write not granted"),a.utility.manifest.permissions.kb?.kinds&&!a.utility.manifest.permissions.kb.kinds.includes(b.kind))throw Error(`kb kind "${b.kind}" not in manifest allowlist`);let c=await (0,o._y)(b.kind);if(c&&c!==a.utility.manifest.id)throw Error(`kb.add: kind "${b.kind}" is owned by utility "${c}"`);let d=await af(a,b.rootId),e=await (0,q.j)({rootPath:d.path,directive:{kind:b.kind,title:b.title,...b.body?{body:b.body}:{},...b.meta?{meta:b.meta}:{},...b.slug?{slug:b.slug}:{},...b.date?{date:b.date}:{}},provenance:{kind:"utility",id:a.utility.manifest.id,version:a.utility.manifest.version}});return{relPath:e.relPath,absPath:e.absPath}}async function F(a,b){ae(a.utility.manifest,!!a.utility.manifest.permissions.kb?.read,"kb.read not granted");let c=await af(a,b.rootId),d=await (0,r.dj)(c.path),e=await J(a.utility.manifest.id,c.id),f=b.query?.toLowerCase();return d.filter(a=>(!b.kind||a.rel.split("/")[0]===b.kind||a.meta.kind===b.kind)&&(!e.enabled||!!e.allowed(a.meta.data.createdBy,a.meta.kind??a.rel.split("/")[0]))&&(!f||!!`${a.rel} ${a.meta.title??""}`.toLowerCase().includes(f))&&!0).map(a=>({relPath:a.rel,title:a.meta.title,kind:a.meta.kind,modifiedAt:a.modifiedAt}))}async function G(a,b){ae(a.utility.manifest,!!a.utility.manifest.permissions.kb?.read,"kb.read not granted");let c=await af(a,b.rootId),d=await (0,r.IK)(c.path,b.relPath),e=await J(a.utility.manifest.id,c.id);if(e.enabled){let a=j()(d).data,c="string"==typeof a.kind?a.kind:b.relPath.split("/")[0];if(!e.allowed(a.createdBy,c))throw Error(`kb.read denied: requireScopedReads is on and "${b.relPath}" is neither self-owned nor granted`)}return{content:d}}function H(a,b){return"string"==typeof a&&(a===`utility:${b}`||a.startsWith(`utility:${b}@`))}class a9 extends Error{constructor(a,b,c,d,e){super(`grant_required: utility "${a}" needs a ${b} grant for ${c}/${d}`),this.name="GrantRequiredError",this.grantRequest={consumer:a,plane:b,provider:c,selector:d,scope:e}}}function I(a){ae(a.utility.manifest,!!a.utility.manifest.permissions.shares?.consume,"shares.consume not granted")}async function J(a,b){let c=await (0,u.loadSettings)();if(!c.sharing?.requireScopedReads)return{enabled:!1,allowed:()=>!0};let d=new Set((await (0,n.s8)()).filter(c=>c.consumer===a&&"data"===c.plane&&(0,n.pj)(c)&&(0,n.f8)(c,b)).map(a=>`${a.provider}:${a.selector}`));return{enabled:!0,allowed:(b,c)=>{if(H(b,a))return!0;if("string"==typeof b&&b.startsWith("utility:")&&c){let a=b.slice(8).split("@")[0];if(d.has(`${a}:${c}`))return!0}return!1}}}async function K(a){let b=(await (0,l.dH)(a?{rootId:a}:{})).map(a=>({id:a.manifest.id,scope:a.scope,...a.rootId?{rootId:a.rootId}:{},version:a.manifest.version,provides:a.manifest.provides}));await (0,o.C2)(b)}async function L(a,b){I(a);let c=await af(a,b.rootId);if(!await (0,n.QD)({consumer:a.utility.manifest.id,provider:b.provider,plane:"data",selector:b.kind,scope:c.id})){var d,e,f,g;throw d=a.utility.manifest.id,e=b.provider,f=b.kind,g=c.id,new a9(d,"data",e,f,g)}let h=await (0,r.dj)(c.path),i=b.query?.toLowerCase();return h.filter(a=>(a.rel.split("/")[0]===b.kind||a.meta.kind===b.kind)&&!!H(a.meta.data.createdBy,b.provider)&&(!i||!!`${a.rel} ${a.meta.title??""}`.toLowerCase().includes(i))&&!0).map(a=>({relPath:a.rel,title:a.meta.title,kind:a.meta.kind,modifiedAt:a.modifiedAt}))}async function M(a,b){I(a);let c=await af(a,b.rootId);if(!await (0,n.QD)({consumer:a.utility.manifest.id,provider:b.provider,plane:"data",selector:b.kind,scope:c.id})){var d,e,f,g;throw d=a.utility.manifest.id,e=b.provider,f=b.kind,g=c.id,new a9(d,"data",e,f,g)}if(b.relPath.split("/")[0]!==b.kind)throw Error(`kb.scopedRead: relPath is not under the granted kind "${b.kind}"`);let h=await (0,r.IK)(c.path,b.relPath),i=j()(h).data;if(!H(i.createdBy,b.provider))throw Error(`kb.scopedRead: "${b.relPath}" is not owned by provider "${b.provider}"`);return{content:h}}async function N(a,b){I(a),await K(a.utility.rootId);let c=b.kind||b.verb?{...b.kind?{kind:b.kind}:{},...b.verb?{verb:b.verb}:{}}:void 0;return(await (0,o.R0)(c)).map(a=>({provider:a.provider,version:a.version,scope:a.scope,data:a.data.map(a=>({kind:a.kind,...a.doc?{doc:a.doc}:{}})),capabilities:a.capabilities.map(a=>({verb:a.verb,...a.doc?{doc:a.doc}:{},sideEffects:a.sideEffects,input:a.input,output:a.output}))}))}async function O(a,b,d){if(I(a),!(a.utility.manifest.consumes?.capabilities??[]).some(a=>a.verb===b.verb&&(!a.provider||a.provider===b.provider)))throw Error(`capabilities.invoke: "${b.verb}" from "${b.provider}" is not declared in manifest.consumes.capabilities`);let e=await af(a,b.rootId);if(!await (0,n.QD)({consumer:a.utility.manifest.id,provider:b.provider,plane:"capability",selector:b.verb,scope:e.id})){var f,g,h,i;throw f=a.utility.manifest.id,g=b.provider,h=b.verb,i=e.id,new a9(f,"capability",g,h,i)}await K(e.id);let j=await (0,o.BS)(b.provider,b.verb,e.id);if(!j)throw Error(`capabilities.invoke: provider "${b.provider}" does not export verb "${b.verb}"`);let k=await (0,l.$X)(b.provider,e.id);if(!k)throw Error(`capabilities.invoke: provider "${b.provider}" is not installed`);let m=k.manifest.serverActions.find(a=>a.name===j.capability.action);if(!m)throw Error(`capabilities.invoke: provider action "${j.capability.action}" not found in "${b.provider}"`);let{runServerAction:p}=await Promise.all([c.e(7300),c.e(1960)]).then(c.bind(c,29579));return p({utility:k,action:m,args:b.input,parentCorrelationId:d})}function P(a,b){if(b.startsWith("/")||b.includes(".."))throw Error(`unsafe fs path: ${b}`);let c=g().join(a.utility.dir,"data"),d=g().resolve(c,b),e=g().relative(c,d);if(e.startsWith("..")||g().isAbsolute(e))throw Error(`fs path escapes data dir: ${b}`);return d}async function Q(a,b){ae(a.utility.manifest,!!a.utility.manifest.permissions.fs?.sandbox,"fs not granted");let c=P(a,b.path);return{content:await e.promises.readFile(c,"utf8")}}async function R(a,b){if(ae(a.utility.manifest,!!a.utility.manifest.permissions.fs?.sandbox,"fs not granted"),"string"!=typeof b.content)throw Error("fs.write requires content (string)");let c=P(a,b.path);return await e.promises.mkdir(g().dirname(c),{recursive:!0}),await e.promises.writeFile(c,b.content,"utf8"),{ok:!0,bytes:Buffer.byteLength(b.content,"utf8")}}async function S(a,b){ae(a.utility.manifest,!!a.utility.manifest.permissions.fs?.sandbox,"fs not granted");let c=P(a,b.path||".");try{return{entries:(await e.promises.readdir(c,{withFileTypes:!0})).map(a=>({name:a.name,isDir:a.isDirectory()}))}}catch{return{entries:[]}}}async function T(a,b){let c,d=a.utility.manifest.permissions.web?.fetch?.domains??[];try{c=new URL(b.url).hostname}catch{throw Error(`invalid url: ${b.url}`)}if(!d.some(a=>c===a||c.endsWith(`.${a}`)))throw Error(`web.fetch denied: domain "${c}" not in whitelist (${d.join(", ")})`);let e={method:b.method,...b.headers?{headers:b.headers}:{},signal:AbortSignal.timeout(2e4)};void 0!==b.body&&"GET"!==b.method&&(e.body="string"==typeof b.body?b.body:JSON.stringify(b.body));let f=await fetch(b.url,e),g=await f.text(),h={};return f.headers.forEach((a,b)=>{h[b]=a}),{status:f.status,headers:h,body:g}}async function U(a,b){ae(a.utility.manifest,!!a.utility.manifest.permissions.web?.search,"web.search not granted");let c=await (0,u.loadSettings)(),d={...c.assignments.quick,allowedTools:Array.from(new Set([...c.assignments.quick.allowedTools??[],"WebSearch"]))},e=`Use the WebSearch tool to find recent results for the query below.
2
2
  Return ONLY a JSON object on a single line with shape:
3
3
  {"results":[{"title":"…","url":"…","snippet":"…"}]}
4
4
  No prose, no markdown fences. Max 8 results.
5
5
 
6
- Query: ${b.query}`,f=await (0,p.quickComplete)(d,e,{timeoutMs:6e4}),g=/\{[\s\S]*\}/.exec(f);if(!g)return{results:[]};try{return{results:(JSON.parse(g[0]).results??[]).filter(a=>"string"==typeof a.url&&"string"==typeof a.title).map(a=>({title:a.title,url:a.url,...a.snippet?{snippet:a.snippet}:{}}))}}catch{return{results:[]}}}async function W(a,b,c){return af(a.utility.manifest,!!a.utility.manifest.permissions.audit?.write,"audit.write not granted"),await (0,k.u0)({ts:new Date().toISOString(),utilityId:a.utility.manifest.id,scope:a.utility.scope,channel:a.channel,method:`app:${b.type}`,phase:"end",correlationId:c,args:b.payload}),{ok:!0}}async function X(a,b,d){if("worker"===a.channel)throw Error("actions.invoke can only be called from the UI iframe, not from inside a worker");af(a.utility.manifest,!!a.utility.manifest.permissions.workers?.enabled,"workers.enabled not granted");let e=a.utility.manifest.serverActions.find(a=>a.name===b.name);if(!e)throw Error(`unknown server action: ${b.name}`);let{runServerAction:f}=await Promise.all([c.e(7300),c.e(1960)]).then(c.bind(c,29579));return f({utility:a.utility,action:e,args:b.args,parentCorrelationId:d})}async function Y(a,b){af(a.utility.manifest,!!a.utility.manifest.permissions.agent?.invoke,"agent.invoke not granted");let d=await ag(a,b.rootId),{runHeadlessAgent:e}=await Promise.resolve().then(c.bind(c,64163));return await e({rootId:d.id,prompt:b.prompt,label:b.label??`[utility ${a.utility.manifest.id}] agent.invoke`,...b.harness?{harness:b.harness}:{},...b.model?{model:b.model}:{},...b.language?{language:b.language}:{},...void 0!==b.timeoutMs?{timeoutMs:b.timeoutMs}:{}})}async function Z(a,b){af(a.utility.manifest,!!a.utility.manifest.permissions.workflow?.read,"workflow.read not granted");let d=await ag(a,b.rootId),{listWorkflows:e}=await Promise.resolve().then(c.bind(c,13295));return(await e(d.path)).map(a=>({id:a.id,label:a.label,...a.description?{description:a.description}:{},trigger:a.trigger,stepCount:a.steps.length,updatedAt:a.updatedAt}))}async function $(a,b){af(a.utility.manifest,!!a.utility.manifest.permissions.workflow?.read,"workflow.read not granted");let d=await ag(a,b.rootId),{readWorkflow:e}=await Promise.resolve().then(c.bind(c,13295)),f=await e(d.path,b.workflowId);if(!f)throw Error(`workflow "${b.workflowId}" not found`);return f}async function _(a,b){af(a.utility.manifest,!!a.utility.manifest.permissions.workflow?.run,"workflow.run not granted");let d=await ag(a,b.rootId),{runWorkflow:e}=await Promise.resolve().then(c.bind(c,24058)),f=await e(d.id,b.workflowId,b.input);if(!f.ok)throw Error(f.error);return f.run}async function aa(a,b){let d=await ag(a,b.rootId),e=b.widgetId??`utility:${a.utility.manifest.id}`,{readWidget:f,writeWidget:g}=await Promise.resolve().then(c.bind(c,7188)),h=await f(d.path,e),i={kind:b.snapshot.kind,data:b.snapshot.data,...b.snapshot.title?{title:b.snapshot.title}:{},...b.snapshot.description?{description:b.snapshot.description}:{}};if(h&&"utility-card"===h.kind){let a=h.data,b={...h,data:{...a,inner:i},updatedAt:new Date().toISOString()};await g(d.path,b)}else throw Error(`cards.update: no utility-card widget for ${a.utility.manifest.id}`);return{ok:!0,widgetId:e}}async function ab(a,b){af(a.utility.manifest,!!a.utility.manifest.permissions.images?.generate,"images.generate not granted");let d=await ag(a,b.rootId),{generateImage:e}=await Promise.resolve().then(c.bind(c,59835)),f=await e({rootId:d.id,prompt:b.prompt,...b.provider?{provider:b.provider}:{},...b.size?{size:b.size}:{},...b.aspectRatio?{aspectRatio:b.aspectRatio}:{},...b.referenceImageUrls?{referenceImageUrls:b.referenceImageUrls}:{},...b.alt?{alt:b.alt}:{}});return{url:f.urlPath,sha:f.sha,size:f.size,mime:f.mime,provider:f.provider}}async function ac(a,b){af(a.utility.manifest,!!a.utility.manifest.permissions.images?.search,"images.search not granted");let{searchImages:d}=await Promise.resolve().then(c.bind(c,59835));return{results:await d({query:b.query,...b.provider?{provider:b.provider}:{},...b.count?{count:b.count}:{}})}}async function ad(a,b){if(af(a.utility.manifest,!!a.utility.manifest.permissions.images?.attach,"images.attach not granted"),a.utility.manifest.permissions.images?.search)try{new URL(b.sourceUrl)}catch{throw Error(`invalid sourceUrl: ${b.sourceUrl}`)}else{let c,d=a.utility.manifest.permissions.web?.fetch?.domains??[];try{c=new URL(b.sourceUrl).hostname}catch{throw Error(`invalid sourceUrl: ${b.sourceUrl}`)}if(!d.some(a=>c===a||c.endsWith(`.${a}`)))throw Error(`images.attach denied: domain "${c}" not in web.fetch whitelist (${d.join(", ")||"(empty)"}). Grant images.search to allow arbitrary search-result URLs.`)}let d=await ag(a,b.rootId),{attachRemote:e}=await Promise.resolve().then(c.bind(c,59835)),f=await e({rootId:d.id,sourceUrl:b.sourceUrl});return{url:f.urlPath,sha:f.sha,size:f.size,mime:f.mime}}async function ae(a,b){af(a.utility.manifest,!!a.utility.manifest.permissions.images?.search,"images.pickBest requires images.search permission");let d=await ag(a,b.rootId),{pickBestImage:e}=await c.e(3117).then(c.bind(c,73117)),f=await e({rootId:d.id,query:b.query,alt:b.alt,context:b.context,candidates:b.candidates});return{pickIndex:f.pickIndex,reason:f.reason,via:f.via}}function af(a,b,c){if(!b)throw Error(`permission denied: ${c}`)}async function ag(a,b){let c=b??a.utility.rootId;if(!c)throw Error("no rootId available: project-scoped operation requires a project root");let d=await (0,t.getRoot)(c);if(!d)throw Error(`unknown rootId: ${c}`);return{id:d.id,path:d.path}}let ba=null;async function ah(a,b){let d=b.source.trim();if(!d)return{ok:!1,error:"empty diagram"};let e=function(a){let b=a.split("\n").map(a=>a.trim()).filter(Boolean),c=b[0]??"";if(!["graph","flowchart","sequenceDiagram","classDiagram","stateDiagram","stateDiagram-v2","erDiagram","journey","gantt","pie","gitGraph","mindmap","timeline","quadrantChart","requirementDiagram","C4Context","sankey-beta","xychart-beta","block-beta"].some(a=>c===a||c.startsWith(`${a} `)))return`unrecognised diagram type at line 1: "${c.slice(0,80)}"`;for(let a=1;a<b.length;a++){let c=b[a],d=/\b[A-Za-z0-9_]+\[([^\]]+)\]/.exec(c);if(!d)continue;let e=d[1];if(!(e.startsWith('"')&&e.endsWith('"'))){if(/^[\\/(>{]/.test(e))return`line ${a+1}: node label starts with a shape-modifier character ("${e.slice(0,30)}") — wrap the label in double quotes`;if(/[()\\/{}|]/.test(e))return`line ${a+1}: node label contains special characters ("${e.slice(0,30)}") — wrap the label in double quotes`}}return null}(d);if(e)return{ok:!1,error:e};try{if(!ba){let a=await c.e(6038).then(c.bind(c,26038)),b=a.default?.parse??a.parse;if("function"!=typeof b)return{ok:!0};ba=b.bind(a.default??a)}return await ba(d),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function ai(a,b){let{path:d}=await ag(a),{createTask:e}=await Promise.resolve().then(c.bind(c,2787));return{id:(await e(d,b)).id}}async function aj(a,b){let{path:d}=await ag(a),{updateTask:e}=await Promise.resolve().then(c.bind(c,2787));return{ok:!!await e(d,b.id,b.patch)}}async function ak(a,b){let{path:d}=await ag(a),{deleteTask:e}=await Promise.resolve().then(c.bind(c,2787));return{ok:await e(d,b.id)}}async function al(a,b){let{path:d}=await ag(a),{getTask:e}=await Promise.resolve().then(c.bind(c,2787));return e(d,b.id)}async function am(a){let{path:b}=await ag(a),{listTasks:d}=await Promise.resolve().then(c.bind(c,2787));return{tasks:await d(b)}}async function an(a,b){let{id:d}=await ag(a),{dispatchTask:e}=await c.e(7742).then(c.bind(c,47742));return e({rootId:d,taskId:b.id,...b.harness?{harness:b.harness}:{},...b.model?{model:b.model}:{}})}async function ao(a,b){let{id:d}=await ag(a),{observeTask:e}=await c.e(3834).then(c.bind(c,63834));return e({rootId:d,taskId:b.id})}async function ap(a,b){let{path:d}=await ag(a),{updateTask:e}=await Promise.resolve().then(c.bind(c,2787));return{ok:!!await e(d,b.id,{status:b.outcome})}}async function aq(a){let{path:b}=await ag(a),{isGitRepo:d}=await c.e(1769).then(c.bind(c,11769));return{ok:await d(b)}}async function ar(a){let{path:b}=await ag(a),{hasRemote:d}=await c.e(1769).then(c.bind(c,11769));return{ok:await d(b)}}async function as(){let{hasGhCli:a}=await c.e(1769).then(c.bind(c,11769));return{ok:await a()}}async function at(a,b){let{path:d}=await ag(a),{createWorktree:e}=await c.e(1769).then(c.bind(c,11769));return e({rootPath:d,slug:b.slug,branch:b.branch,...b.baseRef?{baseRef:b.baseRef}:{}})}async function au(a,b){let{path:d}=await ag(a),{mergeWorktree:e}=await c.e(1769).then(c.bind(c,11769));return e({rootPath:d,branch:b.branch,...b.intoRef?{intoRef:b.intoRef}:{}})}async function av(a,b){let{path:d}=await ag(a),{removeWorktree:e}=await c.e(1769).then(c.bind(c,11769));return e({rootPath:d,slug:b.slug,branch:b.branch,force:b.force,deleteBranch:b.deleteBranch})}async function aw(a){let{path:b}=await ag(a),{listWorktrees:d}=await c.e(1769).then(c.bind(c,11769));return{worktrees:await d(b)}}async function ax(a,b){if(!a.utility.manifest.permissions.sessions?.search)throw Error(`utility "${a.utility.manifest.id}" lacks permissions.sessions.search`);let c={limit:b.limit};return void 0!==b.rootId&&(c.rootId=b.rootId),void 0!==b.source&&(c.source=b.source),void 0!==b.since&&(c.since=b.since),void 0!==b.until&&(c.until=b.until),{hits:await (0,s.iG)(b.query,c)}}d()}catch(a){d(a)}})},74853:(a,b,c)=>{c.d(b,{iG:()=>m});var d=c(76760),e=c.n(d),f=c(73024),g=c(29163);let h=null,i=!1,j=!1;async function k(){if(j)return null;try{return await Promise.resolve().then(c.t.bind(c,79868,23))}catch{return j=!0,null}}async function l(){if(h&&i)return{raw:h};let a=await k();if(!a)return null;let b=(0,g._)();await f.promises.mkdir(b,{recursive:!0});let c=e().join(b,"sessions.db"),d=new a.DatabaseSync(c);return d.exec("PRAGMA journal_mode = WAL"),d.exec("PRAGMA synchronous = NORMAL"),d.exec("PRAGMA temp_store = MEMORY"),function(a){a.exec(`
6
+ Query: ${b.query}`,f=await (0,p.quickComplete)(d,e,{timeoutMs:6e4}),g=/\{[\s\S]*\}/.exec(f);if(!g)return{results:[]};try{return{results:(JSON.parse(g[0]).results??[]).filter(a=>"string"==typeof a.url&&"string"==typeof a.title).map(a=>({title:a.title,url:a.url,...a.snippet?{snippet:a.snippet}:{}}))}}catch{return{results:[]}}}async function V(a,b,c){return ae(a.utility.manifest,!!a.utility.manifest.permissions.audit?.write,"audit.write not granted"),await (0,k.u0)({ts:new Date().toISOString(),utilityId:a.utility.manifest.id,scope:a.utility.scope,channel:a.channel,method:`app:${b.type}`,phase:"end",correlationId:c,args:b.payload}),{ok:!0}}async function W(a,b,d){if("worker"===a.channel)throw Error("actions.invoke can only be called from the UI iframe, not from inside a worker");ae(a.utility.manifest,!!a.utility.manifest.permissions.workers?.enabled,"workers.enabled not granted");let e=a.utility.manifest.serverActions.find(a=>a.name===b.name);if(!e)throw Error(`unknown server action: ${b.name}`);let{runServerAction:f}=await Promise.all([c.e(7300),c.e(1960)]).then(c.bind(c,29579));return f({utility:a.utility,action:e,args:b.args,parentCorrelationId:d})}async function X(a,b){ae(a.utility.manifest,!!a.utility.manifest.permissions.agent?.invoke,"agent.invoke not granted");let d=await af(a,b.rootId),{runHeadlessAgent:e}=await Promise.resolve().then(c.bind(c,64163));return await e({rootId:d.id,prompt:b.prompt,label:b.label??`[utility ${a.utility.manifest.id}] agent.invoke`,...b.harness?{harness:b.harness}:{},...b.model?{model:b.model}:{},...b.language?{language:b.language}:{},...void 0!==b.timeoutMs?{timeoutMs:b.timeoutMs}:{}})}async function Y(a,b){ae(a.utility.manifest,!!a.utility.manifest.permissions.workflow?.read,"workflow.read not granted");let d=await af(a,b.rootId),{listWorkflows:e}=await Promise.resolve().then(c.bind(c,13295));return(await e(d.path)).map(a=>({id:a.id,label:a.label,...a.description?{description:a.description}:{},trigger:a.trigger,stepCount:a.steps.length,updatedAt:a.updatedAt}))}async function Z(a,b){ae(a.utility.manifest,!!a.utility.manifest.permissions.workflow?.read,"workflow.read not granted");let d=await af(a,b.rootId),{readWorkflow:e}=await Promise.resolve().then(c.bind(c,13295)),f=await e(d.path,b.workflowId);if(!f)throw Error(`workflow "${b.workflowId}" not found`);return f}async function $(a,b){ae(a.utility.manifest,!!a.utility.manifest.permissions.workflow?.run,"workflow.run not granted");let d=await af(a,b.rootId),{runWorkflow:e}=await Promise.resolve().then(c.bind(c,24058)),f=await e(d.id,b.workflowId,b.input);if(!f.ok)throw Error(f.error);return f.run}async function _(a,b){let d=await af(a,b.rootId),e=b.widgetId??`utility:${a.utility.manifest.id}`,{readWidget:f,writeWidget:g}=await Promise.resolve().then(c.bind(c,7188)),h=await f(d.path,e),i={kind:b.snapshot.kind,data:b.snapshot.data,...b.snapshot.title?{title:b.snapshot.title}:{},...b.snapshot.description?{description:b.snapshot.description}:{}};if(h&&"utility-card"===h.kind){let a=h.data,b={...h,data:{...a,inner:i},updatedAt:new Date().toISOString()};await g(d.path,b)}else throw Error(`cards.update: no utility-card widget for ${a.utility.manifest.id}`);return{ok:!0,widgetId:e}}async function aa(a,b){ae(a.utility.manifest,!!a.utility.manifest.permissions.images?.generate,"images.generate not granted");let d=await af(a,b.rootId),{generateImage:e}=await Promise.resolve().then(c.bind(c,59835)),f=await e({rootId:d.id,prompt:b.prompt,...b.provider?{provider:b.provider}:{},...b.size?{size:b.size}:{},...b.aspectRatio?{aspectRatio:b.aspectRatio}:{},...b.referenceImageUrls?{referenceImageUrls:b.referenceImageUrls}:{},...b.alt?{alt:b.alt}:{}});return{url:f.urlPath,sha:f.sha,size:f.size,mime:f.mime,provider:f.provider}}async function ab(a,b){ae(a.utility.manifest,!!a.utility.manifest.permissions.images?.search,"images.search not granted");let{searchImages:d}=await Promise.resolve().then(c.bind(c,59835));return{results:await d({query:b.query,...b.provider?{provider:b.provider}:{},...b.count?{count:b.count}:{}})}}async function ac(a,b){if(ae(a.utility.manifest,!!a.utility.manifest.permissions.images?.attach,"images.attach not granted"),a.utility.manifest.permissions.images?.search)try{new URL(b.sourceUrl)}catch{throw Error(`invalid sourceUrl: ${b.sourceUrl}`)}else{let c,d=a.utility.manifest.permissions.web?.fetch?.domains??[];try{c=new URL(b.sourceUrl).hostname}catch{throw Error(`invalid sourceUrl: ${b.sourceUrl}`)}if(!d.some(a=>c===a||c.endsWith(`.${a}`)))throw Error(`images.attach denied: domain "${c}" not in web.fetch whitelist (${d.join(", ")||"(empty)"}). Grant images.search to allow arbitrary search-result URLs.`)}let d=await af(a,b.rootId),{attachRemote:e}=await Promise.resolve().then(c.bind(c,59835)),f=await e({rootId:d.id,sourceUrl:b.sourceUrl});return{url:f.urlPath,sha:f.sha,size:f.size,mime:f.mime}}async function ad(a,b){ae(a.utility.manifest,!!a.utility.manifest.permissions.images?.search,"images.pickBest requires images.search permission");let d=await af(a,b.rootId),{pickBestImage:e}=await c.e(3117).then(c.bind(c,73117)),f=await e({rootId:d.id,query:b.query,alt:b.alt,context:b.context,candidates:b.candidates});return{pickIndex:f.pickIndex,reason:f.reason,via:f.via}}function ae(a,b,c){if(!b)throw Error(`permission denied: ${c}`)}async function af(a,b){let c=b??a.utility.rootId;if(!c)throw Error("no rootId available: project-scoped operation requires a project root");let d=await (0,t.getRoot)(c);if(!d)throw Error(`unknown rootId: ${c}`);return{id:d.id,path:d.path}}let ba=null;async function ag(a,b){let d=b.source.trim();if(!d)return{ok:!1,error:"empty diagram"};let e=function(a){let b=a.split("\n").map(a=>a.trim()).filter(Boolean),c=b[0]??"";if(!["graph","flowchart","sequenceDiagram","classDiagram","stateDiagram","stateDiagram-v2","erDiagram","journey","gantt","pie","gitGraph","mindmap","timeline","quadrantChart","requirementDiagram","C4Context","sankey-beta","xychart-beta","block-beta"].some(a=>c===a||c.startsWith(`${a} `)))return`unrecognised diagram type at line 1: "${c.slice(0,80)}"`;for(let a=1;a<b.length;a++){let c=b[a],d=/\b[A-Za-z0-9_]+\[([^\]]+)\]/.exec(c);if(!d)continue;let e=d[1];if(!(e.startsWith('"')&&e.endsWith('"'))){if(/^[\\/(>{]/.test(e))return`line ${a+1}: node label starts with a shape-modifier character ("${e.slice(0,30)}") — wrap the label in double quotes`;if(/[()\\/{}|]/.test(e))return`line ${a+1}: node label contains special characters ("${e.slice(0,30)}") — wrap the label in double quotes`}}return null}(d);if(e)return{ok:!1,error:e};try{if(!ba){let a=await c.e(6038).then(c.bind(c,26038)),b=a.default?.parse??a.parse;if("function"!=typeof b)return{ok:!0};ba=b.bind(a.default??a)}return await ba(d),{ok:!0}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function ah(a,b){let{path:d}=await af(a),{createTask:e}=await Promise.resolve().then(c.bind(c,2787));return{id:(await e(d,b)).id}}async function ai(a,b){let{path:d}=await af(a),{updateTask:e}=await Promise.resolve().then(c.bind(c,2787));return{ok:!!await e(d,b.id,b.patch)}}async function aj(a,b){let{path:d}=await af(a),{deleteTask:e}=await Promise.resolve().then(c.bind(c,2787));return{ok:await e(d,b.id)}}async function ak(a,b){let{path:d}=await af(a),{getTask:e}=await Promise.resolve().then(c.bind(c,2787));return e(d,b.id)}async function al(a){let{path:b}=await af(a),{listTasks:d}=await Promise.resolve().then(c.bind(c,2787));return{tasks:await d(b)}}async function am(a,b){let{id:d}=await af(a),{dispatchTask:e}=await c.e(7742).then(c.bind(c,47742));return e({rootId:d,taskId:b.id,...b.harness?{harness:b.harness}:{},...b.model?{model:b.model}:{}})}async function an(a,b){let{id:d}=await af(a),{observeTask:e}=await c.e(3834).then(c.bind(c,63834));return e({rootId:d,taskId:b.id})}async function ao(a,b){let{path:d}=await af(a),{updateTask:e}=await Promise.resolve().then(c.bind(c,2787));return{ok:!!await e(d,b.id,{status:b.outcome})}}async function ap(a){let{path:b}=await af(a),{isGitRepo:d}=await c.e(1769).then(c.bind(c,11769));return{ok:await d(b)}}async function aq(a){let{path:b}=await af(a),{hasRemote:d}=await c.e(1769).then(c.bind(c,11769));return{ok:await d(b)}}async function ar(){let{hasGhCli:a}=await c.e(1769).then(c.bind(c,11769));return{ok:await a()}}async function as(a,b){let{path:d}=await af(a),{createWorktree:e}=await c.e(1769).then(c.bind(c,11769));return e({rootPath:d,slug:b.slug,branch:b.branch,...b.baseRef?{baseRef:b.baseRef}:{}})}async function at(a,b){let{path:d}=await af(a),{mergeWorktree:e}=await c.e(1769).then(c.bind(c,11769));return e({rootPath:d,branch:b.branch,...b.intoRef?{intoRef:b.intoRef}:{}})}async function au(a,b){let{path:d}=await af(a),{removeWorktree:e}=await c.e(1769).then(c.bind(c,11769));return e({rootPath:d,slug:b.slug,branch:b.branch,force:b.force,deleteBranch:b.deleteBranch})}async function av(a){let{path:b}=await af(a),{listWorktrees:d}=await c.e(1769).then(c.bind(c,11769));return{worktrees:await d(b)}}async function aw(a,b){if(!a.utility.manifest.permissions.sessions?.search)throw Error(`utility "${a.utility.manifest.id}" lacks permissions.sessions.search`);let c={limit:b.limit};return void 0!==b.rootId&&(c.rootId=b.rootId),void 0!==b.source&&(c.source=b.source),void 0!==b.since&&(c.since=b.since),void 0!==b.until&&(c.until=b.until),{hits:await (0,s.iG)(b.query,c)}}d()}catch(a){d(a)}})},74853:(a,b,c)=>{c.d(b,{iG:()=>m});var d=c(76760),e=c.n(d),f=c(73024),g=c(29163);let h=null,i=!1,j=!1;async function k(){if(j)return null;try{return await Promise.resolve().then(c.t.bind(c,79868,23))}catch{return j=!0,null}}async function l(){if(h&&i)return{raw:h};let a=await k();if(!a)return null;let b=(0,g._)();await f.promises.mkdir(b,{recursive:!0});let c=e().join(b,"sessions.db"),d=new a.DatabaseSync(c);return d.exec("PRAGMA journal_mode = WAL"),d.exec("PRAGMA synchronous = NORMAL"),d.exec("PRAGMA temp_store = MEMORY"),function(a){a.exec(`
7
7
  CREATE TABLE IF NOT EXISTS meta (
8
8
  key TEXT PRIMARY KEY,
9
9
  value TEXT NOT NULL