@crewx/sdk 0.9.0-rc.140 → 0.9.0-rc.141

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 (37) hide show
  1. package/dist/app/app.d.ts +49 -1
  2. package/dist/app/content-media-types.d.ts +2 -0
  3. package/dist/app/context.d.ts +2 -0
  4. package/dist/app/frame.d.ts +56 -0
  5. package/dist/app/index.d.ts +4 -2
  6. package/dist/app/index.js +10 -9
  7. package/dist/app/protocol.d.ts +9 -0
  8. package/dist/app/runtime.d.ts +4 -2
  9. package/dist/app/tool-mode.d.ts +3 -0
  10. package/dist/esm/app/index.js +10 -9
  11. package/dist/esm/index.js +321 -288
  12. package/dist/esm/plugins/index.js +54 -54
  13. package/dist/esm/publish/index.js +2 -2
  14. package/dist/esm/repository/index.js +73 -73
  15. package/dist/esm/skills/index.js +2 -2
  16. package/dist/index.browser.js +3 -3
  17. package/dist/index.d.ts +5 -4
  18. package/dist/index.js +322 -289
  19. package/dist/mcp-app/content-channel.d.ts +3 -6
  20. package/dist/mcp-app/content-declarations.d.ts +4 -2
  21. package/dist/mcp-app/skill-backend.d.ts +3 -4
  22. package/dist/migrations/0036_ui_definition_archive.sql +8 -0
  23. package/dist/migrations/meta/0036_snapshot.json +3591 -0
  24. package/dist/migrations/meta/_journal.json +7 -0
  25. package/dist/plugins/index.js +53 -53
  26. package/dist/publish/index.js +2 -2
  27. package/dist/repository/index.js +70 -70
  28. package/dist/schema/index.d.ts +1 -0
  29. package/dist/schema/ui-definition-archive.d.ts +63 -0
  30. package/dist/skills/index.js +2 -2
  31. package/dist/ui-instance/index.d.ts +3 -3
  32. package/dist/ui-instance/lineage.d.ts +2 -0
  33. package/dist/ui-instance/store.d.ts +14 -0
  34. package/dist/ui-plugin/app-manifest.d.ts +7 -2
  35. package/dist/ui-plugin/index.d.ts +2 -2
  36. package/dist/ui-plugin/types.d.ts +10 -1
  37. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- 'use strict';var crypto=require('crypto'),net=require('net'),fs$1=require('fs'),promises=require('fs/promises'),path=require('path'),jsYaml=require('js-yaml');var No=Object.defineProperty;var w=(e,n)=>()=>(e&&(n=e(e=0)),n);var bo=(e,n)=>{for(var t in n)No(e,t,{get:n[t],enumerable:true});};var m=w(()=>{});var b,pn=w(()=>{m();b=class extends Error{constructor(t,i=t,r){super(i);this.code=t;this.currentRevision=r;}code;currentRevision;name="UiRuntimeError"};});function kn(e){return Po.test(e)||Mo.test(e)}function ee(){throw new b("INPUT_INVALID","JSON value is not projection-safe")}function Ro(e){let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}function Cn(e,n,t,i,r,o){if(n>i&&ee(),e===null||typeof e=="string"||typeof e=="boolean")return typeof e=="string"&&(So.test(e)||Oo.test(e)&&!wo(r,o)||Lo.test(e))&&ee(),e;if(typeof e=="number")return Number.isFinite(e)||ee(),e;(typeof e!="object"||e===void 0||typeof e=="function"||typeof e=="bigint")&&ee();let s=e;t.has(s)&&ee(),t.add(s);try{if(Array.isArray(e))return e.map(d=>Cn(d,n+1,t,i,r,o));Ro(s)||ee();let a={};for(let[d,c]of Object.entries(e))kn(d)&&ee(),a[d]=Cn(c,n+1,t,i,[...r,d],o);return a}finally{t.delete(s);}}function ye(e,n=0,t=[]){(!Number.isInteger(n)||n<0||n>Co)&&ee(),(!Array.isArray(t)||t.some(r=>typeof r!="string"))&&ee();let i=Cn(e,0,new Set,Uo+n,[],t);return (i===null||Array.isArray(i)||typeof i!="object")&&ee(),i}function Ue(e,n){if(!e||!n)return false;let t=e.split("."),i=n.split(".");return t.length>=i.length&&i.every((r,o)=>t[o]===r)}function wo(e,n){if(e.length===0)return false;let t=e.join(".");return n.some(i=>Ue(t,i))}function Ce(e){try{let n=JSON.stringify(e);return n===void 0&&ee(),n}catch{ee();}}function wn(e){return Array.isArray(e)?e.map(wn):e!==null&&typeof e=="object"?Object.fromEntries(Object.keys(e).sort().map(n=>[n,wn(e[n])])):e}function W(e){return Ce(wn(e))}function xn(e){return Buffer.byteLength(e,"utf8")}var Po,Mo,So,Lo,Oo,Uo,Co,Ae=w(()=>{m();pn();Po=/(?:proof|token|secret|password|cookie|authorization|private[_-]?key|stack|exception|plugin[_-]?text)/i,Mo=/(?:url|uri|endpoint|path|file(?:name|path)?|cwd|shell|directory|dir|folder)$/i,So=/<\/?[A-Za-z][^>]*>/,Lo=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,Oo=/^(?:https?|file|ftp|ws|wss):\/\//i;Uo=8,Co=4;});function we(e){return ko.has(e)||xo.test(e)||jo.test(e)}var Vt,ko,xo,jo,ln,Je,ce,jn,Vn,vn,Fn,Bn,Ne=w(()=>{m();Vt=["__proto__","prototype","constructor","proof","token","secret","password","cookie","authorization","private_key","private-key","stack","exception","plugin_text","url","uri","endpoint","path","filename","filepath","cwd","shell","directory","dir","folder"],ko=new Set(Vt),xo=/(?:proof|token|secret|password|cookie|authorization|private[_-]?key|stack|exception|plugin[_-]?text)/i,jo=/(?:url|uri|endpoint|path|file(?:name|path)?|cwd|shell|directory|dir|folder)$/i;ln=/^[A-Za-z0-9_]+$/,Je=/^[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*$/,ce=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,jn=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/,Vn=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,vn=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$/,Fn=["blue","violet","emerald","amber","rose","sky","slate","indigo"],Bn=["inline","panel"];});function Hn(e){return typeof e=="string"&&vt.includes(e)}var vt,Ft=w(()=>{m();Ne();vt=["text/plain","application/json"];});function un(e){if(!zn(e))return false;let n=Object.keys(e);return !(n.some(t=>t!=="in"&&t!=="out")||n.length===0||Object.hasOwn(e,"in")&&!Vo(e.in)||Object.hasOwn(e,"out")&&!vo(e.out))}function Vo(e){return zn(e)?Object.keys(e).every(t=>t==="mediaType"||t==="required")&&Object.hasOwn(e,"mediaType")&&Hn(e.mediaType)&&(!Object.hasOwn(e,"required")||typeof e.required=="boolean"):false}function vo(e){return zn(e)?Object.keys(e).every(t=>t==="mediaType"||t==="range")&&Object.hasOwn(e,"mediaType")&&Hn(e.mediaType)&&(!Object.hasOwn(e,"range")||typeof e.range=="boolean"):false}function zn(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}var Gn=w(()=>{m();Ft();new TextDecoder("utf-8",{fatal:true,ignoreBOM:true});});function oe(e){let t=e.renderer!==void 0||e.surfaces!==void 0||e.stateProjection!==void 0||e.dataPaths!==void 0||e.usage!==void 0||e.detailPanel!==void 0||e.displayModes!==void 0||e.summaryProjection!==void 0||e.legacy!==void 0||Object.values(e.actions).some(r=>r.resultProjection!==void 0)?{id:e.id,version:e.version,...e.renderer===void 0?{}:{renderer:e.renderer},...e.surfaces===void 0?{}:{surfaces:e.surfaces},...e.stateProjection===void 0?{}:{stateProjection:e.stateProjection},...e.dataPaths===void 0?{}:{dataPaths:e.dataPaths},...e.summaryProjection===void 0?{}:{summaryProjection:e.summaryProjection},...e.legacy===void 0?{}:{legacy:e.legacy},...e.usage===void 0?{}:{usage:e.usage},...e.detailPanel===void 0?{}:{detailPanel:e.detailPanel},...e.displayModes===void 0?{}:{displayModes:e.displayModes},...e.sourceHash===void 0?{}:{sourceHash:e.sourceHash},actions:e.actions}:e.sourceHash===void 0?{id:e.id,version:e.version,actions:e.actions}:{id:e.id,version:e.version,sourceHash:e.sourceHash,actions:e.actions},i=ye(t);return crypto.createHash("sha256").update(W(i)).digest("hex")}function Ie(e){if(!/^\d+$/.test(String(e.version))||e.version<1||e.id.length<1||e.id.length>128)throw new b("DEFINITION_UNSUPPORTED","UI definition is invalid");if(e.sourceHash!==void 0&&(typeof e.sourceHash!="string"||!Bo.test(e.sourceHash)))throw new b("DEFINITION_UNSUPPORTED","UI definition source hash is invalid");if(!/^[0-9a-f]{64}$/.test(e.hash)||oe(e)!==e.hash)throw new b("DEFINITION_UNSUPPORTED","UI definition hash is invalid");for(let[n,t]of Object.entries(e.actions)){if(!n||!Array.isArray(t.capabilities)||t.capabilities.some(i=>!zo(i)))throw new b("DEFINITION_UNSUPPORTED","UI action declaration is invalid");if(t.confirmation!==void 0&&t.confirmation!=="none"&&t.confirmation!=="native")throw new b("DEFINITION_UNSUPPORTED","UI action confirmation is invalid");if(t.inputKeys&&(!Array.isArray(t.inputKeys)||t.inputKeys.some(i=>typeof i!="string"||!i)))throw new b("DEFINITION_UNSUPPORTED","UI action input declaration is invalid");if(t.dataInputs!==void 0&&(!Array.isArray(t.dataInputs)||new Set(t.dataInputs).size!==t.dataInputs.length||t.dataInputs.some(i=>typeof i!="string"||!i||t.inputKeys!==void 0&&!t.inputKeys.includes(i))))throw new b("DEFINITION_UNSUPPORTED","UI action data input declaration is invalid");if(t.resultProjection&&$n(t.resultProjection),t.content!==void 0&&!un(t.content))throw new b("DEFINITION_UNSUPPORTED","UI action content declaration is invalid");if(t.env!==void 0&&(!Array.isArray(t.env)||t.env.length===0||new Set(t.env).size!==t.env.length||t.env.some(i=>i!=="CREWX_APP_INSTANCE_ID"&&i!=="CREWX_THREAD_ID")))throw new b("DEFINITION_UNSUPPORTED","UI action environment declaration is invalid")}if(e.renderer!==void 0&&(!e.renderer||e.renderer.length>128))throw new b("DEFINITION_UNSUPPORTED","UI definition renderer is invalid");if(e.surfaces&&(!Array.isArray(e.surfaces)||e.surfaces.some(n=>!n||n.length>64)))throw new b("DEFINITION_UNSUPPORTED","UI definition surfaces are invalid");if(e.usage!==void 0&&e.usage!=="card"&&e.usage!=="window")throw new b("DEFINITION_UNSUPPORTED","UI definition usage is invalid");if(e.detailPanel!==void 0&&typeof e.detailPanel!="boolean")throw new b("DEFINITION_UNSUPPORTED","UI definition detailPanel is invalid");if(e.displayModes&&(!Array.isArray(e.displayModes)||e.displayModes.length===0||new Set(e.displayModes).size!==e.displayModes.length||e.displayModes.some(n=>n!=="inline"&&n!=="floating"&&n!=="focused")))throw new b("DEFINITION_UNSUPPORTED","UI definition displayModes are invalid");if(e.usage==="card"&&e.displayModes!==void 0)throw new b("DEFINITION_UNSUPPORTED","Card definitions cannot declare displayModes");if(e.usage==="window"&&e.detailPanel!==void 0)throw new b("DEFINITION_UNSUPPORTED","Window definitions cannot declare detailPanel");if(e.stateProjection&&$n(e.stateProjection),e.summaryProjection){$n(e.summaryProjection);let n=new Set(e.stateProjection?.allow??[]);if(e.summaryProjection.allow.some(t=>!n.has(t)))throw new b("DEFINITION_UNSUPPORTED","UI summary projection exceeds state projection")}if(e.legacy!==void 0){if(!e.legacy||typeof e.legacy!="object"||Array.isArray(e.legacy)||Object.keys(e.legacy).some(r=>!["readTool","actionTool","hostTools","agentAccess"].includes(r)))throw new b("DEFINITION_UNSUPPORTED","UI legacy metadata is invalid");let n=new Set;for(let[r,o]of [["readTool",e.legacy.readTool],["actionTool",e.legacy.actionTool]])if(o!==void 0){if(Ho(o,r==="readTool"),n.has(o.name))throw new b("DEFINITION_UNSUPPORTED","UI legacy tool names collide");n.add(o.name);}let t=e.legacy.hostTools;if(t!==void 0){if(!t||typeof t!="object"||Array.isArray(t))throw new b("DEFINITION_UNSUPPORTED","UI legacy host tools are invalid");let r={"doc.open":"crewx_app_html_viewer_open","pty.connect":"crewx_app_terminal_connect"};for(let[o,s]of Object.entries(t)){if(!Object.hasOwn(r,o)||r[o]!==s||typeof s!="string"||!/^[A-Za-z][A-Za-z0-9._-]{0,127}$/.test(s)||n.has(s))throw new b("DEFINITION_UNSUPPORTED","UI legacy host tools are invalid");n.add(s);}}let i=e.legacy.agentAccess;if(i!==void 0&&(!i||typeof i!="object"||Array.isArray(i)||Object.entries(i).some(([r,o])=>!r||!Object.hasOwn(e.actions,r)||o!=="allowed"&&o!=="denied")))throw new b("DEFINITION_UNSUPPORTED","UI legacy agent access is invalid");if(e.legacy.actionTool!==void 0&&(!i||Object.keys(i).length===0))throw new b("DEFINITION_UNSUPPORTED","UI legacy action tool requires its complete agent access map")}if(e.dataPaths!==void 0){let n=new Set(["__proto__","prototype","constructor"]);if(!Array.isArray(e.dataPaths)||e.dataPaths.length>16||new Set(e.dataPaths).size!==e.dataPaths.length||e.dataPaths.some(t=>typeof t!="string"||!/^[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*$/.test(t)||t.split(".").some(i=>n.has(i))||!(e.stateProjection?.allow??[]).some(i=>Ue(t,i))))throw new b("DEFINITION_UNSUPPORTED","UI definition dataPaths are invalid")}}function Ho(e,n){if(!e||typeof e!="object"||Array.isArray(e))throw new b("DEFINITION_UNSUPPORTED","UI legacy tool metadata is invalid");let t=e,i=["name","description","inputSchema","textFallback","visibility"],r=Object.hasOwn(t,"fixedResult");if(Object.keys(t).some(o=>!i.includes(o)&&!(n&&o==="fixedResult"))||i.some(o=>!Object.hasOwn(t,o))||typeof t.name!="string"||!/^[A-Za-z][A-Za-z0-9._-]{0,127}$/.test(t.name)||typeof t.description!="string"||t.description.trim().length===0||t.description.length>8192||typeof t.textFallback!="string"||t.textFallback.trim().length===0||t.textFallback.length>16384||!t.inputSchema||typeof t.inputSchema!="object"||Array.isArray(t.inputSchema)||!Array.isArray(t.visibility)||t.visibility.length===0||t.visibility.some(o=>o!=="model"&&o!=="app")||new Set(t.visibility).size!==t.visibility.length)throw new b("DEFINITION_UNSUPPORTED","UI legacy tool metadata is invalid");try{let o=ye(t.inputSchema);if(o.type!==void 0&&o.type!=="object")throw new Error("schema type");if(r){if(!n)throw new Error("fixed result location");let s=t.fixedResult;if(!s||typeof s!="object"||Array.isArray(s))throw new Error("fixed result");let a=s;if(Object.keys(a).sort().join(",")!=="argsPolicy,structuredContent"||a.argsPolicy!=="empty-only"&&a.argsPolicy!=="ignore"||!a.structuredContent||typeof a.structuredContent!="object"||Array.isArray(a.structuredContent))throw new Error("fixed result");let d=ye(a.structuredContent);if(xn(Ce(d))>4*1024)throw new Error("fixed result size")}}catch{throw new b("DEFINITION_UNSUPPORTED","UI legacy tool metadata is not projection-safe")}}function $n(e){if(!Array.isArray(e.allow)||e.allow.some(n=>!/^[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*$/.test(n)))throw new b("DEFINITION_UNSUPPORTED","UI projection policy is invalid")}function zo(e){return e.length>0&&e.length<=128&&e!=="*"&&e!=="all"&&!/[/*]/.test(e)}var Bo,be=w(()=>{m();Ae();pn();Gn();Bo=/^[0-9a-f]{64}$/;});var Bt=w(()=>{m();Ae();});var We,Ht=w(()=>{m();We="window";});function zt(e){if(!Array.isArray(e)||e.length===0)return false;let n=new Set;for(let t of e){if(!Go.some(i=>i===t)||n.has(t))return false;n.add(t);}return true}var Go,Gt=w(()=>{m();Go=["CREWX_APP_INSTANCE_ID","CREWX_THREAD_ID"];});function x(e){throw new Jn(e)}function tr(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;try{let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}catch{return false}}function ir(e,n){let t=Object.getOwnPropertyDescriptor(e,n);return (!t||!("value"in t))&&x("CSP_ORIGIN_INVALID"),t.value}function fn(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))return [];let t=ir(e,n);Array.isArray(t)||x("CSP_ORIGIN_INVALID"),Reflect.ownKeys(t).some(o=>typeof o!="string"||o!=="length"&&!/^(?:0|[1-9][0-9]*)$/.test(o))&&x("CSP_ORIGIN_INVALID");let r=[];for(let o=0;o<t.length;o+=1)(!Object.prototype.hasOwnProperty.call(t,o)||typeof t[o]!="string")&&x("CSP_ORIGIN_INVALID"),r.push(t[o]);return Object.keys(t).length!==t.length&&x("CSP_ORIGIN_INVALID"),r}function or(e){let n;try{n=JSON.stringify(e);}catch{x("CSP_ORIGIN_INVALID");}return n===void 0&&x("CSP_ORIGIN_INVALID"),new TextEncoder().encode(n).byteLength}function Wt(e,n){/\s|\\/u.test(e)&&x("CSP_ORIGIN_INVALID");let t=qo.exec(e);t||x("CSP_ORIGIN_INVALID");let i=t[1].toLowerCase(),r=t[2];(r.includes("@")||r.includes("%")||r.includes("*"))&&x("CSP_ORIGIN_INVALID"),(r.startsWith("[")?Zo:Qo).test(r)||x("CSP_ORIGIN_INVALID"),i==="wss"&&n!=="connectDomains"&&x("CSP_ORIGIN_INVALID");let s;try{s=new URL(e);}catch{x("CSP_ORIGIN_INVALID");}(s.protocol!==`${i}:`||s.username!==""||s.password!==""||s.search!==""||s.hash!=="")&&x("CSP_ORIGIN_INVALID");let a=s.hostname.toLowerCase();if((!a||a.includes("%"))&&x("CSP_ORIGIN_INVALID"),!a.startsWith("[")){let c=a.endsWith(".")?a.slice(0,-1):a;(c.length===0||c.length>253)&&x("CSP_ORIGIN_INVALID"),c.split(".").some(f=>f.length>63||!er.test(f))&&x("CSP_ORIGIN_INVALID");}let d=s.origin;return (d==="null"||!d.startsWith(`${i}://`))&&x("CSP_ORIGIN_INVALID"),{origin:d,hostname:a}}function rr(e){let n=e.split(".").map(Number);return ((n[0]*256+n[1])*256+n[2])*256+n[3]}function Xt(e,n,t){let i=4294967295<<32-t>>>0;return (e&i)===(n&i)}function qt(e){let n=rr(e);return Xt(n,3221225472,24)?n!==3221225481&&n!==3221225482:nr.some(([t,i])=>Xt(n,t,i))}function sr(e){let n=e.indexOf("::"),t=(n<0?e:e.slice(0,n)).split(":").filter(Boolean),i=n<0?[]:e.slice(n+2).split(":").filter(Boolean);return (n<0?t:[...t,...Array(8-t.length-i.length).fill("0"),...i]).reduce((o,s)=>o<<16n|BigInt(Number.parseInt(s,16)),0n)}function ar(e){let n=sr(e),t=Number(n>>112n),i=Number(n>>96n&0xffffn);if(n>>32n===0xffffn){let r=Number(n&0xffffffffn);return qt([r>>>24&255,r>>>16&255,r>>>8&255,r&255].join("."))}return t<8192||t>16383||t===8193&&i<=511||t===8193&&i===3512||t===8194||t===16383&&i<=4095}function cr(e,n){let t=e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e,i=net.isIP(t);if(i===4)return qt(t);if(i===6)return ar(t);let r=e.toLowerCase().replace(/\.$/,"");return !r||!r.includes(".")||n.has(r)?true:Yo.some(o=>r===o||r.endsWith(`.${o}`))}function Kt(e){return Object.freeze([...new Set(e.map(n=>n.origin))].sort())}function Yt(e){return JSON.stringify({baseUriDomains:[],connectDomains:e.connectDomains,declared:e.declared,frameDomains:e.frameDomains,resourceDomains:[]})}function Zt(e,n={}){if(e===void 0){let A=Yt({declared:false,connectDomains:[],frameDomains:[]});return Object.freeze({declared:false,connectDomains:Object.freeze([]),frameDomains:Object.freeze([]),resourceDomains:Object.freeze([]),baseUriDomains:Object.freeze([]),cspHash:crypto.createHash("sha256").update(A,"utf8").digest("hex")})}tr(e)||x("CSP_ORIGIN_INVALID");let t=Reflect.ownKeys(e);t.some(A=>typeof A!="string")&&x("CSP_ORIGIN_INVALID"),t.some(A=>!Ko.has(A))&&x("CSP_AXIS_UNKNOWN");let i=fn(e,"connectDomains"),r=fn(e,"frameDomains"),o=fn(e,"resourceDomains"),s=fn(e,"baseUriDomains");(o.length>0||s.length>0)&&x("CSP_AXIS_UNSUPPORTED"),(or(e)>Jo||i.length>Jt||r.length>Jt||i.length+r.length>Wo||[...i,...r].some(A=>new TextEncoder().encode(A).byteLength>Xo))&&x("CSP_LIMIT_EXCEEDED");let d=i.map(A=>Wt(A,"connectDomains")),c=r.map(A=>Wt(A,"frameDomains")),p=new Set((n.runtimeHostnames??[]).map(A=>A.toLowerCase().replace(/\.$/,"")));[...d,...c].some(A=>cr(A.hostname,p))&&x("CSP_ORIGIN_FORBIDDEN");let f={declared:true,connectDomains:Kt(d),frameDomains:Kt(c)},g=Yt(f);return Object.freeze({...f,resourceDomains:Object.freeze([]),baseUriDomains:Object.freeze([]),cspHash:crypto.createHash("sha256").update(g,"utf8").digest("hex")})}var Jo,Jt,Wo,Xo,Ko,Yo,qo,Zo,Qo,er,nr,Jn,Qt=w(()=>{m();Jo=4096,Jt=16,Wo=32,Xo=512,Ko=new Set(["connectDomains","frameDomains","resourceDomains","baseUriDomains"]),Yo=["localhost","local","internal","home.arpa","test","example","invalid","onion","lan","corp","home","intranet","private","localdomain"],qo=/^(https|wss):\/\/([^/?#]+)$/i,Zo=/^\[[^\]]+\](?::[0-9]+)?$/,Qo=/^[^:\[\]]+(?::[0-9]+)?$/,er=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,nr=[[0,8],[1681915904,10],[167772160,8],[2130706432,8],[2851995648,16],[2886729728,12],[3221225984,24],[3227017984,24],[3232235520,16],[3323068416,15],[3325256704,24],[3405803776,24],[3758096384,4],[4026531840,4]],Jn=class extends Error{constructor(t){super(t);this.code=t;}code;name="UiPluginCspNormalizationError"};});function Ke(e,n){return n===void 0||n===""?e:e===""?n:n.startsWith("[")?`${e}${n}`:`${e}.${n}`}function l(e,n=e,t,i){throw new Y(e,n,t,i)}function V(e,n){try{return n()}catch(t){throw t instanceof Y?t.withPathPrefix(e):t}}function v(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;try{let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}catch{return false}}function P(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function kr(e,n){let t={};for(let[i,r]of Object.entries(e))i!==n&&(t[i]=r);return t}function z(e,n,t=[]){let i=new Set([...n,...t]),r=Object.keys(e).find(s=>!i.has(s));r!==void 0&&l("MANIFEST_INVALID","MANIFEST_INVALID",r,"unknown-key");let o=n.find(s=>!P(e,s));o!==void 0&&l("MANIFEST_INVALID","MANIFEST_INVALID",o,"missing-key");}function gn(e,n=false,t=false,i=false){return ur.test(e)||!i&&yr.test(e)||fr.test(e)||t&&ei.test(e)||Ar.test(e)&&!(n&&/^\s*data:/i.test(e)&&!ei.test(e))}function In(e,n=new Set,t=0,i=false,r=false,o=""){if(typeof e=="string"){gn(e,i,r)&&l("UNSAFE_VALUE","UNSAFE_VALUE",o,"unsafe-value");return}if(!(e===null||typeof e!="object")){(t>8||n.has(e))&&l("MANIFEST_INVALID","MANIFEST_INVALID",o),n.add(e);try{if(Array.isArray(e)){e.forEach((s,a)=>In(s,n,t+1,!1,!1,Ke(o,`[${a}]`)));return}v(e)||l("MANIFEST_INVALID","MANIFEST_INVALID",o);for(let[s,a]of Object.entries(e))In(a,n,t+1,i&&t===0&&(s==="name"||s==="description"),r,Ke(o,s));}finally{n.delete(e);}}}function de(e,n){let t=e[n];return typeof t!="string"&&l("MANIFEST_INVALID"),t}function re(e,n,t){let i=e[n];return (!Number.isSafeInteger(i)||i<t)&&l("MANIFEST_INVALID"),i}function Wn(e){return lr.test(e)||l("MANIFEST_INVALID"),e}function ke(e){return pr.test(e)||l("TOKEN_INVALID"),e}function xr(e){return di.test(e)||l("MANIFEST_INVALID"),e}function jr(e){v(e)||l("MANIFEST_INVALID");let n={};for(let[t,i]of Object.entries(e)){let r=xr(t);v(i)||l("MANIFEST_INVALID");let o=i.type;if(o==="text"){z(i,["type","maxLength"]),n[r]={type:o,maxLength:re(i,"maxLength",1)};continue}if(o==="text-list"){z(i,["type","max","itemMaxLength"]),n[r]={type:o,max:re(i,"max",0),itemMaxLength:re(i,"itemMaxLength",1)};continue}if(o==="step-list"){z(i,["type","min","max","labelMaxLength","detailMaxLength"]);let s=re(i,"min",0),a=re(i,"max",1);s>a&&l("MANIFEST_INVALID"),n[r]={type:o,min:s,max:a,labelMaxLength:re(i,"labelMaxLength",1),detailMaxLength:re(i,"detailMaxLength",1)};continue}typeof o=="string"&&l("SCHEMA_TYPE_UNSUPPORTED"),l("MANIFEST_INVALID");}return n}function Vr(e,n,t){let i=e[n];(!i||i.type!==t)&&l("MANIFEST_INVALID");}function yn(e,n,t){let i=de(e,"field");return di.test(i)||l("MANIFEST_INVALID"),Vr(n,i,t),i}function vr(e,n){v(e)||l("MANIFEST_INVALID");let t=e.primitive;switch(typeof t!="string"&&l("MANIFEST_INVALID"),wr.includes(t)||l("PRIMITIVE_UNKNOWN"),t){case "card-shell":return z(e,["primitive"]),{primitive:t};case "meta-banner":return z(e,["primitive","badgeToken","noticeToken"]),{primitive:t,badgeToken:ke(de(e,"badgeToken")),noticeToken:ke(de(e,"noticeToken"))};case "heading":return z(e,["primitive","field"]),{primitive:t,field:yn(e,n,"text")};case "labeled-text":return z(e,["primitive","titleToken","field","variant"]),e.variant!=="callout"&&l("MANIFEST_INVALID"),{primitive:t,titleToken:ke(de(e,"titleToken")),field:yn(e,n,"text"),variant:"callout"};case "step-flow":return z(e,["primitive","titleToken","field"]),{primitive:t,titleToken:ke(de(e,"titleToken")),field:yn(e,n,"step-list")};case "text-list":{z(e,["primitive","titleToken","field"],["emptyToken","hideWhenEmpty"]);let i={primitive:t,titleToken:ke(de(e,"titleToken")),field:yn(e,n,"text-list")};return P(e,"emptyToken")&&(i.emptyToken=ke(de(e,"emptyToken"))),P(e,"hideWhenEmpty")&&(typeof e.hideWhenEmpty!="boolean"&&l("MANIFEST_INVALID"),i.hideWhenEmpty=e.hideWhenEmpty),i}}return l("MANIFEST_INVALID")}function Fr(e,n){return Array.isArray(e)||l("MANIFEST_INVALID"),e.map(t=>vr(t,n))}function G(e="v2 manifest exceeds a contract limit",n,t){return l("LIMIT_EXCEEDED",e,n,t)}function ne(e="initial state is not projection-safe"){return l("INITIAL_STATE_INVALID",e)}function ni(e,n){return (typeof e!="string"||e.length===0||e.length>4096||e.trim().length===0||Rr.test(e)||Ur.test(e))&&l("MANIFEST_INVALID",`${n} is invalid`),(gn(e,true,true)||Ir.test(e)||gr.test(e)||mr.test(e))&&l("UNSAFE_VALUE",`${n} contains an unsafe value`),e}function Xn(e,n){return (typeof e!="string"||!ce.test(e))&&l("MANIFEST_INVALID",`${n} is invalid`),e}function Br(e){return (typeof e!="string"||!jn.test(e)||e==="*"||e==="all")&&l("MANIFEST_INVALID","action capability is invalid"),e}function pi(e){return (typeof e!="string"||!Or.test(e))&&l("MANIFEST_INVALID","resource hash is invalid"),e}function Kn(e,n=new Set,t=0,i=""){if(typeof e=="string"){e.length>4096&&G("v2 manifest string is too long",i,"string-too-long");return}if(!(e===null||typeof e=="boolean")){if(typeof e=="number"){Number.isFinite(e)||l("MANIFEST_INVALID","v2 manifest contains a non-finite number",i,"non-finite-number");return}(e===void 0||typeof e=="function"||typeof e=="bigint")&&l("MANIFEST_INVALID","v2 manifest contains a non-JSON value",i,"non-json-value"),typeof e!="object"&&l("MANIFEST_INVALID","MANIFEST_INVALID",i),t>8&&G("v2 manifest nesting is too deep",i,"too-deep"),n.has(e)&&l("MANIFEST_INVALID","v2 manifest contains a cycle",i,"cycle"),n.add(e);try{if(Array.isArray(e)){e.length>128&&G("v2 manifest array is too long",i,"array-too-long"),e.forEach((r,o)=>Kn(r,n,t+1,Ke(i,`[${o}]`)));return}v(e)||l("MANIFEST_INVALID","v2 manifest contains a non-plain object",i,"non-plain-object");for(let[r,o]of Object.entries(e))Kn(o,n,t+1,Ke(i,r));}finally{n.delete(e);}}}function li(e){return (typeof e!="string"||e.length>4096||!Je.test(e))&&(typeof e=="string"&&e.length>4096&&G("projection path is too long"),l("MANIFEST_INVALID","projection paths must be canonical exact paths")),e.split(".").some(t=>we(t))&&l("MANIFEST_INVALID","projection paths cannot address reserved state keys"),e}function Yn(e){v(e)||l("MANIFEST_INVALID","projection policy must be an object"),z(e,["allow"]),Array.isArray(e.allow)||l("MANIFEST_INVALID","projection allow must be an array"),e.allow.length>128&&G("projection allowlist is too long");let n=[],t=new Set;for(let i of e.allow){let r=li(i);t.has(r)&&l("MANIFEST_INVALID","projection allowlist contains a duplicate path"),t.add(r),n.push(r);}return {allow:n}}function Hr(e,n){if(e===void 0)return;Array.isArray(e)||l("MANIFEST_INVALID","dataPaths must be an array"),e.length>Cr&&G("dataPaths exceed the v2 limit");let t=[],i=new Set;for(let r of e){let o=li(r);i.has(o)&&l("MANIFEST_INVALID","dataPaths contain a duplicate path"),n.some(s=>Ue(o,s))||l("MANIFEST_INVALID","dataPaths must be projection-allowed"),i.add(o),t.push(o);}return t}function xe(e,n,t=Number.MAX_SAFE_INTEGER){return (!Number.isSafeInteger(e)||e<0||e>t)&&l("MANIFEST_INVALID",`${n} is invalid`),e}function ti(e,n){return (typeof e!="number"||!Number.isFinite(e))&&l("MANIFEST_INVALID",`${n} is invalid`),e}function qn(e,n=0,t=new Set){if(typeof e=="string")return (e.length>4096||gn(e))&&l("UNSAFE_VALUE","schema enum contains an unsafe string"),e;if(e===null||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)||l("MANIFEST_INVALID","schema enum contains a non-finite number"),e;(n>8||typeof e!="object"||e===void 0)&&G("schema enum is too deep"),t.has(e)&&l("MANIFEST_INVALID","schema enum contains a cycle"),t.add(e);try{if(Array.isArray(e))return e.length>128&&G("schema enum array is too long"),e.map(r=>qn(r,n+1,t));v(e)||l("MANIFEST_INVALID","schema enum contains a non-plain object");let i={};for(let[r,o]of Object.entries(e))we(r)&&l("MANIFEST_INVALID","schema enum contains a reserved key"),i[r]=qn(o,n+1,t);return i}finally{t.delete(e);}}function zr(e,n){if(e===void 0)return;Array.isArray(e)||l("MANIFEST_INVALID","schema required must be an array"),e.length>64&&G("schema required list is too long");let t=[],i=new Set;for(let r of e)(typeof r!="string"||!Je.test(r))&&l("MANIFEST_INVALID","schema required contains an invalid key"),r.length>4096&&G("schema required key is too long"),i.has(r)&&l("MANIFEST_INVALID","schema required contains a duplicate key"),n&&!Object.prototype.hasOwnProperty.call(n,r)&&l("MANIFEST_INVALID","schema required references an undeclared property"),i.add(r),t.push(r);return t}function Gr(e,n){let t=n?Je:ln;return e.length>4096&&G("schema property name is too long"),(!t.test(e)||e.split(".").some(i=>we(i)))&&l("MANIFEST_INVALID","schema property name is invalid"),e}function Zn(e,n=0,t=false){v(e)||l("MANIFEST_INVALID","action inputSchema must be an object"),n>8&&G("action inputSchema is too deep");let i=e.type;i!=="object"&&i!=="string"&&i!=="number"&&i!=="integer"&&i!=="boolean"&&i!=="array"&&i!=="null"&&(typeof i=="string"&&l("SCHEMA_TYPE_UNSUPPORTED","action inputSchema type is unsupported"),l("MANIFEST_INVALID","action inputSchema type is required"));let r=["type","enum"];i==="string"&&r.push("minLength","maxLength"),i==="array"&&r.push("minItems","maxItems","items"),i==="object"&&r.push("minProperties","maxProperties","properties","required","additionalProperties"),(i==="number"||i==="integer")&&r.push("minimum","maximum"),z(e,["type"],r.filter(a=>a!=="type"));let o={type:i};if(P(e,"enum")&&(Array.isArray(e.enum)||l("MANIFEST_INVALID","schema enum must be an array"),e.enum.length>128&&G("schema enum is too long"),o.enum=e.enum.map(a=>qn(a))),i==="string"&&(P(e,"minLength")&&(o.minLength=xe(e.minLength,"schema minLength",4096)),P(e,"maxLength")&&(o.maxLength=xe(e.maxLength,"schema maxLength",4096)),o.minLength!==void 0&&o.maxLength!==void 0&&o.minLength>o.maxLength&&l("MANIFEST_INVALID","schema string length bounds are inverted")),(i==="number"||i==="integer")&&(P(e,"minimum")&&(o.minimum=ti(e.minimum,"schema minimum")),P(e,"maximum")&&(o.maximum=ti(e.maximum,"schema maximum")),o.minimum!==void 0&&o.maximum!==void 0&&o.minimum>o.maximum&&l("MANIFEST_INVALID","schema numeric bounds are inverted")),i==="array"&&(P(e,"minItems")&&(o.minItems=xe(e.minItems,"schema minItems",128)),P(e,"maxItems")&&(o.maxItems=xe(e.maxItems,"schema maxItems",128)),o.minItems!==void 0&&o.maxItems!==void 0&&o.minItems>o.maxItems&&l("MANIFEST_INVALID","schema array length bounds are inverted"),P(e,"items")&&(o.items=Zn(e.items,n+1,false))),i==="object"){let a;if(P(e,"properties")){v(e.properties)||l("MANIFEST_INVALID","schema properties must be an object");let c=Object.entries(e.properties);c.length>64&&G("schema properties are too many"),a={};for(let[p,f]of c){let g=Gr(p,t);a[g]=Zn(f,n+1,false);}o.properties=a;}P(e,"minProperties")&&(o.minProperties=xe(e.minProperties,"schema minProperties",64)),P(e,"maxProperties")&&(o.maxProperties=xe(e.maxProperties,"schema maxProperties",64)),o.minProperties!==void 0&&o.maxProperties!==void 0&&o.minProperties>o.maxProperties&&l("MANIFEST_INVALID","schema object property bounds are inverted");let d=zr(e.required,a);d!==void 0&&(o.required=d),P(e,"additionalProperties")&&(e.additionalProperties!==false&&l("MANIFEST_INVALID","schema additionalProperties must be false"),o.additionalProperties=false);}let s=JSON.stringify(o);return (s===void 0||Buffer.byteLength(s,"utf8")>65536)&&G("action inputSchema subtree is too large"),o}function $r(e){let n=Zn(e,0,true);return (n.type!=="object"||!n.properties)&&l("MANIFEST_INVALID","action inputSchema must declare object properties"),n}function Jr(e){if(v(e)||l("MANIFEST_INVALID","action backend must be an object"),e.type==="core"){z(e,br);let n=e.handler;return (typeof n!="string"||!Vn.test(n))&&l("MANIFEST_INVALID","core backend handler is invalid"),{type:"core",handler:n}}if(e.type==="skill"){z(e,Pr,Mr),(!Array.isArray(e.command)||e.command.length===0||e.command.length>16)&&l("MANIFEST_INVALID","skill backend command is invalid");let n=[];for(let i of e.command)(typeof i!="string"||i.length===0||i.length>256||!vn.test(i))&&l("MANIFEST_INVALID","skill backend command token is invalid"),n.push(i);let t=P(e,"env")?Xr(e.env):void 0;return {type:"skill",command:n,...t===void 0?{}:{env:t}}}l("MANIFEST_INVALID","action backend type is unsupported");}function Wr(e){v(e)||l("MANIFEST_INVALID","action must be an object"),z(e,Er,Dr),P(e,"_meta")&&V("_meta",()=>ui(e._meta));let n=V("actionId",()=>Xn(e.actionId,"actionId"));kn(n)&&l("MANIFEST_INVALID",`actionId "${n}" is not projection-safe`,"actionId");let t=V("capability",()=>Br(e.capability)),i=e.mutation;typeof i!="boolean"&&l("MANIFEST_INVALID","action mutation must be boolean","mutation");let r=V("inputSchema",()=>$r(e.inputSchema)),o;if(P(e,"dataInputs")){Array.isArray(e.dataInputs)||l("MANIFEST_INVALID","action dataInputs must be an array","dataInputs");let p=r.properties,f=new Set,g=[];for(let A of e.dataInputs)(typeof A!="string"||!P(p,A)||f.has(A))&&l("MANIFEST_INVALID","action dataInputs must be unique declared properties","dataInputs"),f.add(A),g.push(A);o=g;}let s=V("resultProjection",()=>Yn(e.resultProjection)),a=V("backend",()=>Jr(e.backend)),d;P(e,"content")&&((a.type!=="skill"||!un(e.content))&&l("MANIFEST_INVALID","action content declaration is invalid","content"),d=Kr(e.content));let c;if(P(e,"confirmation")){let p=e.confirmation;p!=="none"&&p!=="native"&&l("MANIFEST_INVALID","action confirmation is invalid","confirmation"),c=p;}return {actionId:n,capability:t,mutation:i,inputSchema:r,resultProjection:s,backend:a,...d===void 0?{}:{content:d},...o===void 0?{}:{dataInputs:o},...c===void 0?{}:{confirmation:c}}}function Xr(e){return zt(e)||l("MANIFEST_INVALID","skill backend env is invalid"),Object.freeze([...e])}function Kr(e){return Object.freeze({...e.in===void 0?{}:{in:Object.freeze({...e.in})},...e.out===void 0?{}:{out:Object.freeze({...e.out})}})}function Yr(e){return v(e)||l("INITIAL_STATE_INVALID","initialState must be an object"),z(e,Sr,Lr),e.path!=="ui/state.json"&&l("MANIFEST_INVALID","initialState path is not fixed"),P(e,"hash")?{path:"ui/state.json",hash:pi(e.hash)}:{path:"ui/state.json"}}function qr(e){let n=["wasm","terminal","htmlDocuments"];return (!v(e)||Object.keys(e).length===0||Object.keys(e).some(t=>!n.includes(t)||e[t]!==true))&&l("MANIFEST_INVALID","runtime must contain only known capability flags set to true"),{...e.wasm===true?{wasm:true}:{},...e.terminal===true?{terminal:true}:{},...e.htmlDocuments===true?{htmlDocuments:true}:{}}}function Zr(e,n){let t;try{t=Zt(e);}catch(i){let r=i!==null&&typeof i=="object"&&"code"in i&&typeof i.code=="string"?i.code:"CSP_ORIGIN_INVALID";return l("MANIFEST_INVALID",r,void 0,r.toLowerCase().replace(/_/g,"-"))}if(t.frameDomains.length>0&&l("MANIFEST_INVALID","external origins in csp are not enabled in this rollout",void 0,"csp-not-enabled"),t.connectDomains.length!==0)return n?.terminal===true&&l("MANIFEST_INVALID","runtime.terminal cannot be combined with csp.connectDomains","connectDomains","terminal-with-connect-domains"),Object.freeze({connectDomains:t.connectDomains})}function Qr(e,n){In(v(e)&&P(e,"csp")?kr(e,"csp"):e,new Set,0,true,true),Kn(e),v(e)||l("MANIFEST_INVALID"),z(e,_r,Tr),P(e,"_meta")&&V("_meta",()=>ui(e._meta)),e.manifestVersion!==2&&l("MANIFEST_INVALID");let t;P(e,"runtime")&&(t=V("runtime",()=>qr(e.runtime)));let i;P(e,"csp")&&(i=V("csp",()=>Zr(e.csp,t)));let r=V("pluginId",()=>Xn(e.pluginId,"pluginId")),o=V("definitionId",()=>Xn(e.definitionId,"definitionId")),s=V("version",()=>re(e,"version",1)),a=V("name",()=>ni(e.name,"name")),d=V("description",()=>ni(e.description,"description")),c;P(e,"icon")&&((typeof e.icon!="string"||!/^[a-z][a-z0-9-]{0,63}$/.test(e.icon))&&l("MANIFEST_INVALID","icon is invalid","icon"),c=e.icon);let p;P(e,"tone")&&((typeof e.tone!="string"||!Fn.includes(e.tone))&&l("MANIFEST_INVALID","tone is invalid","tone"),p=e.tone),e.entry!=="ui/index.html"&&l("MANIFEST_INVALID","entry path is not fixed","entry","fixed-value");let f;P(e,"entryHash")&&(f=V("entryHash",()=>pi(e.entryHash)));let g;P(e,"initialState")&&(g=V("initialState",()=>Yr(e.initialState)));let A;P(e,"usage")&&(e.usage!=="card"&&e.usage!=="window"&&l("MANIFEST_INVALID","usage is invalid","usage"),A=e.usage);let T;P(e,"detailPanel")&&(typeof e.detailPanel!="boolean"&&l("MANIFEST_INVALID","detailPanel is invalid","detailPanel"),T=e.detailPanel);let L;if(P(e,"displayModes")){((A??We)!==We||!Array.isArray(e.displayModes)||e.displayModes.length===0)&&l("MANIFEST_INVALID","displayModes are only valid for window Apps","displayModes");let u=new Set(["inline","floating","focused"]);(new Set(e.displayModes).size!==e.displayModes.length||e.displayModes.some(_=>typeof _!="string"||!u.has(_)))&&l("MANIFEST_INVALID","displayModes are invalid","displayModes"),L=e.displayModes;}(A??We)===We&&T!==void 0&&l("MANIFEST_INVALID","detailPanel is card-only","detailPanel");let N=n.mode??"local";N!=="local"&&N!=="installed"&&N!=="published"&&l("MANIFEST_INVALID","manifest mode is invalid"),N!=="local"&&f===void 0&&l("MANIFEST_INVALID","installed manifests require entryHash","entryHash","required-when-installed"),N!=="local"&&g!==void 0&&g.hash===void 0&&l("MANIFEST_INVALID","installed manifests require initialState.hash","initialState.hash","required-when-installed"),(!Array.isArray(e.surfaces)||e.surfaces.length===0)&&l("MANIFEST_INVALID","surfaces are invalid","surfaces"),e.surfaces.length>2&&G("surfaces exceed the v2 limit","surfaces","too-many-items");let F=[],R=new Set;for(let u of e.surfaces)(typeof u!="string"||!Bn.includes(u))&&l("MANIFEST_INVALID","surface is unsupported","surfaces"),R.has(u)&&l("MANIFEST_INVALID","surfaces contain a duplicate","surfaces","duplicate-item"),R.add(u),F.push(u);v(e.size)||l("MANIFEST_INVALID","size must be an object","size"),V("size",()=>z(e.size,["height"]));let B=V("size",()=>re(e.size,"height",1));B>720&&G("size.height exceeds the v2 limit","size.height","too-large");let H=V("stateProjection",()=>Yn(e.stateProjection)),I=e.summaryProjection===void 0?void 0:V("summaryProjection",()=>Yn(e.summaryProjection));I!==void 0&&I.allow.some(u=>!H.allow.includes(u))&&l("MANIFEST_INVALID","summaryProjection must be a subset of stateProjection.allow","summaryProjection");let y=V("dataPaths",()=>Hr(e.dataPaths,H.allow));Array.isArray(e.actions)||l("MANIFEST_INVALID","actions must be an array","actions"),e.actions.length>32&&G("actions exceed the v2 limit","actions","too-many-items");let M=[],C=new Set;for(let[u,_]of e.actions.entries()){let D=`actions[${u}]`,U=V(D,()=>Wr(_));if(C.has(U.actionId)&&l("MANIFEST_INVALID","actions contain a duplicate actionId",`${D}.actionId`,"duplicate-item"),U.backend.type==="core"&&U.backend.handler==="state.set"){U.mutation||l("MANIFEST_INVALID","state.set actions must be mutations",`${D}.mutation`);for(let E of Object.keys(U.inputSchema.properties))H.allow.includes(E)||l("MANIFEST_INVALID","state.set input paths must be projection-allowed",`${D}.inputSchema.properties`);}C.add(U.actionId),M.push(U);}return {manifestVersion:2,pluginId:r,definitionId:o,version:s,name:a,description:d,...c===void 0?{}:{icon:c},...p===void 0?{}:{tone:p},entry:"ui/index.html",...f===void 0?{}:{entryHash:f},...t===void 0?{}:{runtime:t},...i===void 0?{}:{csp:i},...g===void 0?{}:{initialState:g},...A===void 0?{}:{usage:A},...T===void 0?{}:{detailPanel:T},...L===void 0?{}:{displayModes:L},surfaces:F,size:{height:B},stateProjection:H,...I===void 0?{}:{summaryProjection:I},...y===void 0?{}:{dataPaths:y},actions:M}}function ui(e){v(e)||l("MANIFEST_INVALID","_meta must be an object");let n=JSON.stringify(e);(n===void 0||Buffer.byteLength(n,"utf8")>Nr)&&G("_meta exceeds the 4 KiB limit",void 0,"meta-too-large");}function es(e){let n={},t={};for(let o of e.actions){n[o.actionId]={capabilities:[o.capability],inputKeys:Object.keys(o.inputSchema.properties??{}),...o.dataInputs===void 0?{}:{dataInputs:o.dataInputs},resultProjection:o.resultProjection,...o.confirmation===void 0?{}:{confirmation:o.confirmation},...o.content===void 0?{}:{content:o.content},...o.backend.type!=="skill"||o.backend.env===void 0?{}:{env:o.backend.env}};let s=o.backend.type==="skill"||o.backend.type==="core"&&o.backend.handler==="state.set";t[o.actionId]={actionId:o.actionId,mutation:o.mutation,backend:o.backend,launchPolicy:s?"allowed":"denied",...s?{}:{denialCode:"EXEC_DENIED"}};}let i={id:e.definitionId,version:e.version,renderer:"sandbox-html",...e.usage===void 0?{}:{usage:e.usage},...e.detailPanel===void 0?{}:{detailPanel:e.detailPanel},...e.displayModes===void 0?{}:{displayModes:e.displayModes},surfaces:e.surfaces,stateProjection:e.stateProjection,...e.summaryProjection===void 0?{}:{summaryProjection:e.summaryProjection},...e.dataPaths===void 0?{}:{dataPaths:e.dataPaths},actions:n},r={entry:{path:"ui/index.html",...e.entryHash===void 0?{}:{hash:e.entryHash}},...e.initialState===void 0?{}:{initialState:e.initialState}};return {manifest:e,definition:i,handlers:t,resources:r}}function Qn(e,n,t,i,r,o){if(typeof e=="string"){let s=r.length>0&&o.some(a=>Ue(r.join("."),a));return (e.length>4096||gn(e,false,false,s))&&ne("state contains an unsafe string"),e}if(e===null||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)||ne("state contains a non-finite number"),e;(e===void 0||typeof e!="object"||typeof e=="function"||typeof e=="bigint")&&ne("state contains a non-JSON value"),t>8&&ne("state is too deep"),n.has(e)&&ne("state contains a cycle"),n.add(e);try{let s;if(Array.isArray(e))e.length>128&&ne("state array is too long"),s=e.map(d=>Qn(d,n,t+1,65536,r,o));else {v(e)||ne("state contains a non-plain object");let d={};for(let[c,p]of Object.entries(e))(c.length>4096||!ln.test(c)||we(c))&&(c.length>4096&&ne("state key is too long"),ne("state contains a reserved or invalid key")),d[c]=Qn(p,n,t+1,65536,[...r,c],o);s=d;}let a=JSON.stringify(s);return (a===void 0||Buffer.byteLength(a,"utf8")>i)&&ne("state subtree is too large"),s}finally{n.delete(e);}}function nt(e,n=[]){v(e)||ne("initial state must be a JSON object");let t=Qn(e,new Set,0,65536,[],n);return (t===null||Array.isArray(t)||typeof t!="object")&&ne(),t}function ns(e,n={}){In(e),v(e)||l("MANIFEST_INVALID"),z(e,hr),e.manifestVersion!==1&&l("MANIFEST_INVALID");let t=Wn(de(e,"pluginId")),i=Wn(de(e,"definitionId")),r=re(e,"version",1),o=re(e,"primitiveSet",1),s=n.supportedPrimitiveSet??dr;(!Number.isSafeInteger(s)||s<1)&&l("MANIFEST_INVALID"),o>s&&l("PRIMITIVE_SET_UNSUPPORTED"),v(e.activation)||l("MANIFEST_INVALID"),z(e.activation,["kind","language"]),e.activation.kind!=="fenced-code"&&l("MANIFEST_INVALID");let a=Wn(de(e.activation,"language")),d=jr(e.schema),c=Fr(e.layout,d);return {manifestVersion:1,pluginId:t,definitionId:i,version:r,primitiveSet:o,activation:{kind:"fenced-code",language:a},schema:d,layout:c}}function ts(e,n={}){return v(e)||l("MANIFEST_INVALID"),Object.hasOwn(e,"lineage")&&l("MANIFEST_INVALID","lineage is only allowed in product bundle indexes"),e.manifestVersion===2?Qr(e,n):ns(e,n)}function Ye(e,n={}){try{return ts(e,n)}catch(t){if(t instanceof Y)throw t;return l("MANIFEST_INVALID")}}function qe(e,n={}){let t=Ye(e,n);return t.manifestVersion===2?es(t):t}var dr,pr,lr,di,ur,fr,yr,Ar,ei,Ir,gr,mr,hr,_r,Tr,Er,Dr,Nr,br,Pr,Mr,Sr,Lr,Or,Rr,Ur,Cr,wr,Y,tt=w(()=>{m();Ht();Ae();Gn();Gt();Qt();Ne();dr=1,pr=/^[a-z][a-zA-Z0-9]*(\.[a-zA-Z0-9]+)+$/,lr=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,di=/^[A-Za-z][A-Za-z0-9_-]{0,63}$/,ur=/<\/?[A-Za-z][^>]*>/,fr=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,yr=/^(?:https?|file|ftp|ws|wss):\/\//i,Ar=/^\s*(?:javascript|data):/i,ei=/data:[^,\s]*,/i,Ir=/(?:https?|file|ftp|ws|wss):\/\//i,gr=/javascript:/i,mr=/(?:^[\s]*|[\s"'(=])(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)(?=[^\s"'<>])[^\s"'<>]*/,hr=["manifestVersion","pluginId","definitionId","version","primitiveSet","activation","schema","layout"],_r=["manifestVersion","pluginId","definitionId","version","name","description","entry","surfaces","size","stateProjection","actions"],Tr=["_meta","icon","tone","entryHash","runtime","csp","initialState","usage","detailPanel","displayModes","summaryProjection","dataPaths","focusedAiDataPaths"],Er=["actionId","capability","mutation","inputSchema","resultProjection","backend"],Dr=["confirmation","dataInputs","content","_meta"],Nr=4*1024,br=["type","handler"],Pr=["type","command"],Mr=["env"],Sr=["path"],Lr=["hash"],Or=/^[0-9a-f]{64}$/,Rr=/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/,Ur=/[\r\n]/,Cr=16,wr=["card-shell","meta-banner","heading","labeled-text","step-flow","text-list"],Y=class e extends Error{constructor(t,i=t,r,o){super(i);this.code=t;this.path=r;this.rule=o;}code;path;rule;name="UiPluginValidationError";withPathPrefix(t){return new e(this.code,this.message,Ke(t,this.path),this.rule)}};});function Ii(e){return typeof e=="string"&&e.length<=os&&is.test(e)}function S(e,n,t,i,r){throw new pe(e,{path:n,rule:t,...i===void 0?{}:{message:i},...r===void 0?{}:{file:r}})}function te(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;try{let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}catch{return false}}function X(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function me(e){let n=`_meta["${Ee}"]`;return e===void 0||e===""?n:e.startsWith("[")?`${n}${e}`:`${n}.${e}`}function cs(e){return e.toLowerCase().replace(/_/g,"-")}function ds(e){if(e===void 0||e==="")return "";let n=/^([^.[]+)(.*)$/.exec(e);if(!n)return me(e);let[,t,i]=n;switch(t){case "pluginId":return `name${i}`;case "name":return `display_name${i}`;case "description":return `description${i}`;case "_meta":return `_meta${i}`;case "version":return me("definitionVersion");case "definitionId":return me("definitionId");default:return me(`${t}${i}`)}}function gi(e,n,t){return {path:t(e.path),rule:e.rule??cs(e.code),...e.message!==e.code?{message:e.message}:{},file:n}}function mi(e){return JSON.parse(JSON.stringify(e))}function rt(e,n,t=0,i=new Set){if(typeof e=="string"){e.length>4096&&S("LIMIT_EXCEEDED",n,"string-too-long"),(rs.test(e)||ss.test(e)||as.test(e))&&S("UNSAFE_VALUE",n,"unsafe-value");return}if(!(e===null||typeof e=="boolean")){if(typeof e=="number"){Number.isFinite(e)||S("MANIFEST_INVALID",n,"non-finite-number");return}typeof e!="object"&&S("MANIFEST_INVALID",n,"non-json-value"),t>8&&S("LIMIT_EXCEEDED",n,"too-deep"),i.has(e)&&S("MANIFEST_INVALID",n,"cycle"),i.add(e);try{if(Array.isArray(e)){e.length>128&&S("LIMIT_EXCEEDED",n,"array-too-long"),e.forEach((r,o)=>rt(r,`${n}[${o}]`,t+1,i));return}te(e)||S("MANIFEST_INVALID",n,"non-plain-object");for(let[r,o]of Object.entries(e))rt(o,n===""?r:`${n}.${r}`,t+1,i);}finally{i.delete(e);}}}function se(e,n){return (typeof e!="string"||e.length===0)&&S("MANIFEST_INVALID",n,"string"),e}function Ve(e,n){return te(e)||S("MANIFEST_INVALID",n,"object"),e}function ps(e,n){Array.isArray(e)||S("MANIFEST_INVALID",n,"array"),e.forEach((t,i)=>se(t,`${n}[${i}]`));}function ls(e,n){typeof e!="boolean"&&S("MANIFEST_INVALID",n,"boolean");}function Ze(e,n,t,i){for(let r of Object.keys(e))!t.includes(r)&&!i.includes(r)&&S("MANIFEST_INVALID",`${n}.${r}`,"unknown-key");for(let r of t)X(e,r)||S("MANIFEST_INVALID",`${n}.${r}`,"missing-key");}function us(e,n){switch(rt(n,e),e){case "long_description":case "homepage":case "documentation":case "support":case "icon":case "license":se(n,e);return;case "author":{let t=Ve(n,e);Ze(t,e,["name"],["email","url"]);for(let i of Object.keys(t))se(t[i],`${e}.${i}`);return}case "repository":{let t=Ve(n,e);Ze(t,e,[],["type","url"]);for(let i of Object.keys(t))se(t[i],`${e}.${i}`);return}case "icons":{Array.isArray(n)||S("MANIFEST_INVALID",e,"array"),n.forEach((t,i)=>{let r=`${e}[${i}]`,o=Ve(t,r);Ze(o,r,["src","size"],["theme"]),se(o.src,`${r}.src`),se(o.size,`${r}.size`),X(o,"theme")&&se(o.theme,`${r}.theme`);});return}case "screenshots":case "keywords":case "privacy_policies":ps(n,e);return;case "tools":{Array.isArray(n)||S("MANIFEST_INVALID",e,"array"),n.forEach((t,i)=>{let r=`${e}[${i}]`,o=Ve(t,r);Ze(o,r,["name"],["description"]),se(o.name,`${r}.name`),X(o,"description")&&se(o.description,`${r}.description`);});return}case "prompts":{Array.isArray(n)||S("MANIFEST_INVALID",e,"array"),n.forEach((t,i)=>{let r=`${e}[${i}]`,o=Ve(t,r);Ze(o,r,["name","text"],["description","arguments"]),se(o.name,`${r}.name`),se(o.text,`${r}.text`);});return}case "tools_generated":case "prompts_generated":ls(n,e);return;case "localization":case "compatibility":case "user_config":Ve(n,e);return;default:S("MANIFEST_INVALID",e,"unknown-key");}}function mn(e){return typeof e=="string"&&ce.test(e)?e:void 0}function hi(e){return Number.isSafeInteger(e)&&e>=1?e:void 0}function fs(e){let n=mn(e.name);if(n===void 0)return;let t=e._meta,i=te(t)?t[Ee]:void 0,r=te(i)?i:{},o=X(r,"definitionId")?mn(r.definitionId):n,s=X(r,"definitionVersion")?hi(r.definitionVersion):1;return {pluginId:n,...o===void 0?{}:{definitionId:o},...s===void 0?{}:{definitionVersion:s}}}function ys(e){let n=mn(e.pluginId);if(n===void 0)return;let t=mn(e.definitionId),i=hi(e.version);return {pluginId:n,...t===void 0?{}:{definitionId:t},...i===void 0?{}:{definitionVersion:i}}}function dt(e){try{let n=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(e));if(!te(n))return !1;let t=n._meta;return te(t)&&X(t,Ee)}catch{return false}}function As(e,n){if(e===Me)return n.builtinOnly===true;let t=n._meta,i=te(t)?t[Ee]:void 0;return te(i)&&i.builtinOnly===true}function Is(e){X(e,"server")&&S("MANIFEST_INVALID","server","server-unsupported","phase 1 runs CrewX-owned Apps only");for(let s of Object.keys(e))at.includes(s)||S("MANIFEST_INVALID",s,"unknown-key");for(let s of ct)X(e,s)||S("MANIFEST_INVALID",s,"missing-key");e.manifest_version!==it&&S("MANIFEST_INVALID","manifest_version","unsupported-version",`manifest_version must be "${it}"`),Ii(e.version)||S("MANIFEST_INVALID","version","semver","version must be a semver.org version such as 0.1.0");let n=e._meta;te(n)||S("MANIFEST_INVALID","_meta","object"),X(n,Ee)||S("MANIFEST_INVALID",me(),"missing-key");let t=n[Ee];te(t)||S("MANIFEST_INVALID",me(),"object");for(let s of Object.keys(t))ot.includes(s)||Ai.includes(s)||S("MANIFEST_INVALID",me(s),"unknown-key");for(let s of ot)X(t,s)||S("MANIFEST_INVALID",me(s),"missing-key");if(X(t,"definitionVersion")){let s=t.definitionVersion;(!Number.isSafeInteger(s)||s<1)&&S("MANIFEST_INVALID",me("definitionVersion"),"positive-integer");}let i={};for(let s of yi)X(e,s)&&(us(s,e[s]),i[s]=mi(e[s]));let r={};for(let[s,a]of Object.entries(n))s!==Ee&&(r[s]=a);let o={manifestVersion:2,pluginId:e.name,definitionId:X(t,"definitionId")?t.definitionId:e.name,version:X(t,"definitionVersion")?t.definitionVersion:1,name:e.display_name,description:e.description};for(let[s,a]of Object.entries(t))s==="definitionId"||s==="definitionVersion"||(o[s]=a);return Object.keys(r).length>0&&(o._meta=r),{v2Input:o,...Object.keys(r).length>0?{vendorMeta:r}:{},passthrough:i}}function gs(e,n){te(e)||S("MANIFEST_INVALID","","not-object","manifest.json must be a JSON object",q);let t;try{t=Is(e);}catch(o){throw o instanceof pe?new pe(o.code,{...o.reason,file:q}):o}let i;try{let o=Ye(t.v2Input,{mode:n.mode??"local"});o.manifestVersion!==2&&S("MANIFEST_INVALID","","v2-required"),i=o;}catch(o){throw o instanceof Y?new pe(o.code,gi(o,q,ds)):o}let r=e.tools;if(Array.isArray(r)){let o=new Set(i.actions.map(s=>s.actionId));r.forEach((s,a)=>{let d=s.name;if(!o.has(d))throw new pe("MANIFEST_INVALID",{path:`tools[${a}].name`,rule:"tool-not-action",message:"every tools[].name must be an action id",file:q})});}return {file:q,manifest:i,v2Input:t.v2Input,releaseVersion:e.version,...Object.keys(t.passthrough).length>0?{mcpb:t.passthrough}:{}}}function ms(e,n){try{let t=Ye(e,{mode:n.mode??"local"});if(t.manifestVersion!==2)throw new pe("MANIFEST_INVALID",{path:"manifestVersion",rule:"v2-required",message:"a workspace App requires manifestVersion 2",file:Me});return {file:Me,manifest:t,v2Input:e}}catch(t){throw t instanceof Y?new pe(t.code,gi(t,Me,i=>i??"")):t}}function st(e){return oe(qe(e).definition)}function fi(e){let{entryHash:n,initialState:t,...i}=e,r={...i};return t!==void 0&&(r.initialState={path:t.path}),mi(r)}function hs(e,n){let t=fi(e),i=fi(n);return [...new Set([...Object.keys(t),...Object.keys(i)])].sort().filter(o=>W(t[o]??null)!==W(i[o]??null))}function _s(e,n){return e.entryHash!==void 0&&n.entryHash!==void 0&&e.entryHash!==n.entryHash||e.initialState?.hash!==void 0&&n.initialState?.hash!==void 0&&e.initialState.hash!==n.initialState.hash}function Ts(e,n){let t=hs(e,n),i=_s(e,n),r="";try{let o=st(e),s=st(n);i=i||o!==s,r=` (definition hash ${o.slice(0,12)} vs ${s.slice(0,12)})`;}catch{i=true;}t.length===0&&!i||S("MANIFEST_DUAL_MISMATCH","","dual-manifest-mismatch",`${q} and ${Me} normalize to different definitions${r}`+(t.length>0?`; differing fields: ${t.join(", ")}`:""));}function Es(e,n){let t=n.maxBytes??262144,i=[],r=new TextDecoder("utf-8",{fatal:true});for(let o of Z){let s=e[o];if(s===void 0)continue;if(s.byteLength>t)return {parsed:i,failure:{code:"LIMIT_EXCEEDED",reason:{path:"",rule:"file-too-large",file:o},files:[o]}};let a;try{a=JSON.parse(r.decode(s));}catch{return {parsed:i,failure:{code:"MANIFEST_INVALID",reason:{path:"",rule:"invalid-json",file:o},files:[o]}}}if(!te(a))return {parsed:i,failure:{code:"MANIFEST_INVALID",reason:{path:"",rule:"not-object",message:`${o} must be a JSON object`,file:o},files:[o]}};i.push({file:o,raw:a});}return {parsed:i}}function pt(e,n={}){let{parsed:t,failure:i}=Es(e,n),r=Z.filter(p=>e[p]!==void 0);if(i!==void 0)return {ok:false,rejection:i,parseFailure:true,builtinOnly:false};if(t.length===0)return {ok:false,rejection:{code:"MANIFEST_INVALID",reason:{path:"",rule:"no-manifest-file",message:"neither manifest.json nor ui-plugin.json is present"},files:[]},parseFailure:true,builtinOnly:false};let o=t[0],s=o.file===q?fs(o.raw):ys(o.raw),a=t.some(p=>As(p.file,p.raw)),d=[];try{for(let p of t)d.push(p.file===q?gs(p.raw,n):ms(p.raw,n));d.length===2&&Ts(d[0].manifest,d[1].manifest);}catch(p){if(p instanceof pe)return {ok:false,rejection:{code:p.code,reason:p.reason,files:p.code==="MANIFEST_DUAL_MISMATCH"?[...Z]:p.reason.file===void 0?r:[p.reason.file]},parseFailure:false,...s===void 0?{}:{identity:s},builtinOnly:a};throw p}let c=d[0];return {ok:true,...c,identity:s??{pluginId:c.manifest.pluginId},files:r}}var q,Me,Z,it,Ee,at,ct,yi,ot,Ai,is,os,rs,ss,as,pe,lt=w(()=>{m();be();Ae();Ne();tt();q="manifest.json",Me="ui-plugin.json",Z=[q,Me],it="0.3",Ee="dev.crewx",at=Object.freeze(["manifest_version","name","display_name","version","description","long_description","author","repository","homepage","documentation","support","icon","icons","screenshots","localization","server","tools","tools_generated","prompts","prompts_generated","keywords","license","privacy_policies","compatibility","user_config","_meta"]),ct=Object.freeze(["manifest_version","name","display_name","version","description","_meta"]),yi=Object.freeze(at.filter(e=>e!=="server"&&!ct.includes(e))),ot=Object.freeze(["entry","surfaces","size","stateProjection","actions"]),Ai=Object.freeze(["definitionId","definitionVersion","icon","tone","entryHash","runtime","initialState","usage","detailPanel","displayModes","summaryProjection","dataPaths","focusedAiDataPaths","csp"]),is=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,os=256,rs=/<\/?[A-Za-z][^>]*>/,ss=/^\s*javascript:/i,as=/data:[^,\s]*,/i;pe=class extends Error{constructor(t,i){super(`${t}: ${i.path||"<file>"} (${i.rule})`);this.code=t;this.reason=i;}code;reason};});var _i=w(()=>{m();Bt();lt();tt();Ne();});function _n(e,n=e){throw new De(e,n)}var De,Tn=w(()=>{m();De=class extends Error{constructor(t,i=t){super(i);this.code=t;}code;name="McpAppContractError"};});var Ti=w(()=>{m();});var Ei=w(()=>{m();be();Ae();Tn();Ti();});function Di(e,n){return Ds.add(e),n!==void 0&&Ns.set(e,n),e}var Ds,Ns,En=w(()=>{m();Ds=new WeakSet,Ns=new WeakMap;});function nn(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ut(e,n,t=[]){let i=new Set([...n,...t]),r=Object.keys(e);return n.every(o=>Object.hasOwn(e,o))&&r.every(o=>i.has(o))}function Pi(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;for(let n of Object.values(e))Pi(n);return Object.freeze(e)}function $(e){throw new le("LINEAGE_INVALID",e)}function Rs(e){throw new le("LINEAGE_STALE",e)}function Mi(e){if(!nn(e)||!ut(e,Ms,Ss)||!nn(e.actions))return $("Lineage definition shape is invalid");for(let n of Object.values(e.actions))if(!nn(n)||!ut(n,Ls,Os))return $("Lineage action definition shape is invalid");return e}function Us(e){if(!nn(e)||!ut(e,bs,Ps))return $("Lineage entry shape is invalid");if(!Number.isSafeInteger(e.version)||e.version<1||typeof e.hash!="string"||!Ni.test(e.hash))return $("Lineage entry identity is invalid");if(e.sourceHash!==void 0&&(typeof e.sourceHash!="string"||!Ni.test(e.sourceHash)))return $("Lineage source hash is invalid");if(e.compat!==void 0&&e.compat!=="break")return $("Lineage compatibility marker is invalid");let n=Mi(e.definition);if(n.version!==e.version)return $("Lineage version does not match its definition");if(e.sourceHash!==void 0&&n.sourceHash!==e.sourceHash)return $("Lineage source hash does not match its definition");let t;try{t=oe(n),Ie({...n,hash:e.hash});}catch{return $("Lineage definition is invalid")}return t!==e.hash?$("Lineage definition hash does not match"):Pi({version:e.version,hash:e.hash,definition:n,...e.sourceHash===void 0?{}:{sourceHash:e.sourceHash},...e.compat===void 0?{}:{compat:e.compat}})}function bi(e){return e.stateProjection?.allow??[]}function Cs(e,n){let t=[],i=new Set(bi(n));bi(e).some(a=>!i.has(a))&&t.push("S1_STATE_PROJECTION");let r=new Set(n.dataPaths??[]);(e.dataPaths??[]).some(a=>!r.has(a))&&t.push("S2_DATA_PATHS");for(let[a,d]of Object.entries(e.actions)){let c=n.actions[a];if(c&&(d.confirmation??"native")==="native"&&(c.confirmation??"native")!=="native"){t.push("S3_ACTION_CONFIRMATION");break}}Object.keys(e.legacy?.agentAccess??{}).some(a=>!Object.hasOwn(n.actions,a))&&t.push("S4_LEGACY_AGENT_ACTIONS");let s=e.summaryProjection?.allow;if(s!==void 0){let a=new Set(n.summaryProjection?.allow??[]);s.some(d=>!a.has(d))&&t.push("S5_SUMMARY_PROJECTION");}return t}function ws(e,n){return W(e)===W(n)}function ft(e,n){if(!Array.isArray(e)||e.length===0)return $("Definition lineage is missing");if(!nn(n)||typeof n.hash!="string")return $("Current definition is invalid");let t,i;try{let{hash:a,...d}=n;i=Mi(d),t={...i,hash:a},Ie(t);}catch{return $("Current definition is invalid")}let r=e.map(Us),o=r[0].definition.id;if(r.some(a=>a.definition.id!==o))return $("Lineage definition ids do not match");if(r.some((a,d)=>d>0&&a.version<=r[d-1].version))return $("Lineage generations are not in increasing version order");if(r.some((a,d)=>r.findIndex(c=>c.hash===a.hash)!==d))return $("Lineage contains a duplicate hash");let s=r[r.length-1];if(s.version!==t.version||s.hash!==t.hash||s.definition.id!==t.id||!ws(s.definition,i))return Rs("The last lineage generation does not match the current package");if(t.legacy!==void 0){let a=new Set(Object.keys(t.actions)),d=new Set;for(let p of r)if(p.sourceHash===void 0)for(let f of Object.keys(p.definition.actions))a.has(f)&&d.add(f);let c=Object.keys(t.legacy.agentAccess??{});if(c.length!==d.size||c.some(p=>!d.has(p))){let p="S4_LEGACY_AGENT_ACCESS_COMPLETE";throw new le("LINEAGE_INVALID",`Lineage compatibility failed: ${p}`,[p])}}for(let a=0;a<r.length-1;a+=1){if(r.slice(a,-1).some(p=>p.compat==="break"))continue;let c=Cs(r[a].definition,t);if(c.length>0)throw new le("LINEAGE_INVALID",`Lineage compatibility failed: ${c.join(", ")}`,c)}return Object.freeze({entries:Object.freeze(r),current:t})}var le,Ni,bs,Ps,Ms,Ss,Ls,Os,yt=w(()=>{m();be();Ae();le=class extends Error{constructor(t,i=t,r=[]){super(i);this.code=t;this.violations=r;}code;violations;name="UiDefinitionLineageError"},Ni=/^[0-9a-f]{64}$/,bs=["version","hash","definition"],Ps=["sourceHash","compat"],Ms=["id","version","actions"],Ss=["sourceHash","usage","detailPanel","displayModes","renderer","surfaces","stateProjection","dataPaths","summaryProjection","legacy"],Ls=["capabilities"],Os=["inputKeys","dataInputs","confirmation","resultProjection","content","env"];});var Si,Li,Oi=w(()=>{m();Si=["crewx_app_terminal_connect","crewx_app_html_viewer_open"],Li=["crewx_listWorkspaces","crewx_queryAgent","crewx_executeAgent","crewx_getTaskResult","crewx_listTasks","crewx_listAgents","callBrowser","openTab","listTabs","closeTab"];});var Ri=w(()=>{m();be();En();});function At(e,n=0){try{let t=ye(e,n);return t.type!==void 0&&t.type!=="object"&&_n("TOOL_INVALID","MCP App inputSchema must describe an object"),t}catch(t){if(t instanceof De)throw t;_n("TOOL_INVALID","MCP App inputSchema must be projection-safe JSON");}}function Ui(e){if(e.length===0)return At({type:"object",properties:{},additionalProperties:false});let n=e.map(i=>i.actionId),t=new Map;for(let i of e)t.set(i.actionId,At(i.inputSchema));return At(js(n,t),xs)}function js(e,n){let t=e.map(i=>({type:"object",properties:{actionId:{type:"string",const:i},input:n.get(i)??{type:"object"}},required:["actionId","input"],additionalProperties:false}));return Object.freeze({type:"object",oneOf:Object.freeze(t),properties:Object.freeze({actionId:Object.freeze({type:"string",enum:Object.freeze([...e])}),input:Object.freeze({type:"object"})}),required:Object.freeze(["actionId","input"]),additionalProperties:false})}var tn,xs,It=w(()=>{m();Ei();be();Ae();En();Tn();yt();Oi();Ri();tn=8*1024*1024,new Set(Si),new Set(Li),xs=4;});function Ci(){return Object.freeze({[gt]:{candidates:new Map,assetCatalogs:new Map}})}function Vs(e){if(e===null||typeof e!="object"||!(gt in e))throw new TypeError("scanCache must be created by createWorkspaceAppScanCache");return e[gt]}function wi(e,n){let t=Vs(e),i=t.rootIdentity;return i!==void 0&&(i.dev!==n.dev||i.ino!==n.ino||i.realPath!==n.realPath)&&(t.candidates.clear(),t.assetCatalogs.clear(),t.lastCandidateScanUnchanged=void 0,t.lastCandidateKeys=void 0,t.scanStartedAtNs=void 0,t.lastAssetCatalogsUnchanged=void 0,t.lastSnapshot=void 0,t.lastSnapshotBuildInputs=void 0),t.rootIdentity=n,t}var gt,ki=w(()=>{m();gt=Symbol("crewx.workspace-app-scan-cache.state");});function Q(e){let n=typeof e=="object"&&e!==null&&"code"in e?String(e.code):"";return n==="ENOENT"?new h("NOT_FOUND"):n==="ELOOP"?new h("PATH_ESCAPED"):n==="EFBIG"||n==="EOVERFLOW"?new h("LIMIT_EXCEEDED"):n==="EACCES"||n==="EPERM"||n==="ENOTDIR"?new h("READ_DENIED"):new h("READ_DENIED")}function Hs(e){if(typeof e!="string"||e.length===0||!path.isAbsolute(e))throw new h("READ_DENIED")}function mt(e){if(typeof e!="string"||path.isAbsolute(e)||/[\\\u0000]/.test(e))throw new h("PATH_ESCAPED");if(e==="")return [];let n=e.split("/");if(n.some(t=>t.length===0||t==="."||t===".."))throw new h("PATH_ESCAPED");return n}function Pn(e,n){let t=path.relative(e,n);return t===""||t!==".."&&!t.startsWith(`..${path.sep}`)&&!path.isAbsolute(t)}function Be(e){return {dev:e.dev,ino:e.ino,size:e.size,mtimeNs:e.mtimeNs,ctimeNs:e.ctimeNs}}function Et(e,n){return e.dev===n.dev&&e.ino===n.ino}function Dt(e,n){return Et(e,n)&&e.size===n.size&&e.mtimeNs===n.mtimeNs&&e.ctimeNs===n.ctimeNs}async function Dn(e){Hs(e);let n,t;try{n=await promises.realpath(e),t=await promises.stat(n,{bigint:!0});}catch(i){throw Q(i)}if(!t.isDirectory())throw new h("READ_DENIED");return {realRoot:n,identity:Be(t)}}async function Vi(e,n,t){if(t.length<2||t[0]!=="apps"&&t[0]!=="skills")return;let i,r;try{if(i=path.resolve(e,t[0],t[1]),r=await promises.realpath(i),!(await promises.stat(r,{bigint:!0})).isDirectory())throw new h("READ_DENIED")}catch(o){throw o instanceof h?o:Q(o)}if(!Pn(n,r))throw new h("PATH_ESCAPED");return r}async function Nn(e,n,t,i){let r,o,s;try{r=await promises.lstat(e,{bigint:!0}),o=await promises.realpath(e),s=await promises.stat(o,{bigint:!0});}catch(a){throw Q(a)}if(!Pn(n,o)||t!==void 0&&!Pn(t,o))throw new h("PATH_ESCAPED");if(!r.isFile()||!s.isFile())throw new h("READ_DENIED");if(!Et(i,r)||!Et(i,s)||i.dev!==s.dev)throw new h("PATH_ESCAPED")}async function Fe(e,n){let t,i;try{t=await promises.realpath(e),i=await promises.stat(t,{bigint:!0});}catch{throw new h("PATH_ESCAPED")}if(t!==n.realRoot||!Dt(n.identity,Be(i)))throw new h("PATH_ESCAPED")}function zs(e){return e.isSymbolicLink()?{name:e.name,kind:"symlink"}:e.isDirectory()?{name:e.name,kind:"directory"}:e.isFile()?{name:e.name,kind:"file"}:{name:e.name,kind:"other"}}var h,Tt,Bs,ji,He,Mn,vi,Fi,bt=w(()=>{m();h=class extends Error{constructor(t){super(t);this.code=t;}code;name="AppDiscoveryFsError"},Tt=fs$1.constants.O_NOFOLLOW,Bs=fs$1.constants.O_NONBLOCK,ji=fs$1.constants.O_RDONLY|(Tt??0)|(Bs??0);He=class{async getRootIdentity(n){let t=await Dn(n);return await Fe(n,t),{dev:t.identity.dev,ino:t.identity.ino,realPath:t.realRoot}}async listDirectory(n,t){let i=mt(t),r=await Dn(n),o=path.resolve(n,...i),s,a;try{s=await promises.realpath(o),a=await promises.stat(s,{bigint:!0});}catch(d){let c=Q(d);if(c.code==="NOT_FOUND")return [];throw c}if(!Pn(r.realRoot,s)||!a.isDirectory())throw new h("PATH_ESCAPED");try{let d=await promises.readdir(s,{withFileTypes:!0,encoding:"utf8"});return await Fe(n,r),d.map(zs)}catch(d){let c=Q(d);if(c.code==="NOT_FOUND")return [];throw c}}async readdir(n,t){return this.listDirectory(n,t)}async readDirectory(n,t){return this.listDirectory(n,t)}async readVerifiedFile(n,t,i){if(!Number.isSafeInteger(i)||i<0)throw new h("READ_DENIED");if(Tt===void 0)throw new h("UNSUPPORTED");let r=mt(t),o=await Dn(n),s=path.resolve(n,...r),a=path.relative(n,s);if(a===".."||a.startsWith(`..${path.sep}`)||path.isAbsolute(a))throw new h("PATH_ESCAPED");let d;try{d=await promises.open(s,ji);}catch(c){throw Q(c)}try{let c;try{let T=await d.stat({bigint:!0});c=Be(T);}catch(T){throw Q(T)}if(c.size>BigInt(i))throw new h("LIMIT_EXCEEDED");if(c.size>BigInt(Number.MAX_SAFE_INTEGER))throw new h("LIMIT_EXCEEDED");await Fe(n,o);let p=await Vi(n,o.realRoot,r);await Nn(s,o.realRoot,p,c);let f=new Uint8Array(new ArrayBuffer(Number(c.size))),g=0;for(;g<f.byteLength;){let T;try{T=(await d.read(f,g,f.byteLength-g,g)).bytesRead;}catch(L){throw Q(L)}if(T<=0)throw new h("IDENTITY_CHANGED");g+=T;}let A;try{let T=await d.stat({bigint:!0});A=Be(T);}catch(T){throw Q(T)}if(!Dt(c,A))throw new h("IDENTITY_CHANGED");return await Nn(s,o.realRoot,p,A),await Fe(n,o),new Uint8Array(f)}finally{await d.close().catch(()=>{});}}async fingerprintVerifiedFile(n,t,i){if(!Number.isSafeInteger(i)||i<0)throw new h("READ_DENIED");if(Tt===void 0)throw new h("UNSUPPORTED");let r=mt(t),o=await Dn(n),s=path.resolve(n,...r),a=path.relative(n,s);if(a===".."||a.startsWith(`..${path.sep}`)||path.isAbsolute(a))throw new h("PATH_ESCAPED");let d;try{d=await promises.open(s,ji);}catch(c){throw Q(c)}try{let c;try{let g=await d.stat({bigint:!0});c=Be(g);}catch(g){throw Q(g)}if(c.size>BigInt(i)||c.size>BigInt(Number.MAX_SAFE_INTEGER))throw new h("LIMIT_EXCEEDED");await Fe(n,o);let p=await Vi(n,o.realRoot,r);await Nn(s,o.realRoot,p,c);let f;try{let g=await d.stat({bigint:!0});f=Be(g);}catch(g){throw Q(g)}if(!Dt(c,f))throw new h("IDENTITY_CHANGED");return await Nn(s,o.realRoot,p,f),await Fe(n,o),{...f,candidateRealPath:p??o.realRoot}}catch(c){throw c instanceof h?c:Q(c)}finally{await d.close().catch(()=>{});}}async readFileVerified(n,t,i){return this.readVerifiedFile(n,t,i)}},Mn=new He,vi=Mn,Fi=He;});function an(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;try{let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}catch{return false}}function Hi(e){return typeof e=="string"&&ce.test(e)?e:void 0}function Ys(e){return e.length>0&&e!=="."&&e!==".."&&!/[\\/\u0000]/.test(e)}function Le(e,n){let t=new TextEncoder().encode(e),i=new TextEncoder().encode(n),r=Math.min(t.byteLength,i.byteLength);for(let o=0;o<r;o+=1){let s=t[o]-i[o];if(s!==0)return s}return t.byteLength-i.byteLength}function qs(e){if(typeof e=="string")return {name:e,kind:"directory"};if(e===null||typeof e!="object")return null;let n=e;if(typeof n.name!="string")return null;if(n.kind==="file"||n.kind==="directory"||n.kind==="symlink"||n.kind==="other")return {name:n.name,kind:n.kind};if(n.type==="file"||n.type==="directory"||n.type==="symlink"||n.type==="other")return {name:n.name,kind:n.type};let t=n.isDirectory;if(typeof t=="function"&&t.call(e))return {name:n.name,kind:"directory"};let i=n.isSymbolicLink;if(typeof i=="function"&&i.call(e))return {name:n.name,kind:"symlink"};let r=n.isFile;return typeof r=="function"&&r.call(e)?{name:n.name,kind:"file"}:{name:n.name,kind:"other"}}function Zs(e){if(e instanceof Uint8Array)return new Uint8Array(e);if(e instanceof ArrayBuffer)return new Uint8Array(e.slice(0));if(Array.isArray(e)&&e.every(n=>Number.isInteger(n)&&n>=0&&n<=255))return Uint8Array.from(e);throw new TypeError("filesystem port returned an invalid byte array")}function Qs(e){return Xs.decode(e)}function ea(e){return JSON.parse(Qs(e))}function zi(e){switch(e){case "ENOENT":return "NOT_FOUND";case "ELOOP":case "EXDEV":return "PATH_ESCAPED";case "EFBIG":case "EOVERFLOW":return "LIMIT_EXCEEDED";case "EACCES":case "EPERM":case "ENOTDIR":return "READ_DENIED";default:return e}}function na(e){if(e instanceof h)return zi(e.code);if(e!==null&&typeof e=="object"&&"code"in e){let n=e.code;if(typeof n=="string")return zi(n)}}function he(e,n){let t=n();return Number.isFinite(t)&&Number.isFinite(e)&&t-e<=5e3}function ta(e){if(typeof e.readVerifiedFile=="function")return e.readVerifiedFile;if(typeof e.readFileVerified=="function")return e.readFileVerified}function ia(e){if(typeof e.listDirectory=="function")return e.listDirectory;if(typeof e.readDirectory=="function")return e.readDirectory;if(typeof e.readdir=="function")return e.readdir}async function Gi(e,n,t,i){let r=ta(e);if(!r)throw new h("READ_DENIED");return Zs(await r.call(e,n,t,i))}async function St(e,n,t){let i=ia(e);if(!i)throw new h("READ_DENIED");let r=await i.call(e,n,t);if(!Array.isArray(r))throw new h("READ_DENIED");return r.map(qs).filter(o=>o!==null)}function oa(e,n,t,i){return Object.freeze({code:e,...{},source:n,relativePath:t})}function ra(e){if(!an(e))throw new TypeError("productBundle.reservedIds must be an object with appIds and definitionIds arrays");try{let n=Reflect.ownKeys(e);if(n.length!==2||!n.includes("appIds")||!n.includes("definitionIds"))throw new TypeError("productBundle.reservedIds must contain exactly appIds and definitionIds");let t=(i,r)=>{if(!Array.isArray(i))throw new TypeError("productBundle.reservedIds."+r+" must be an array");let o=[];for(let s=0;s<i.length;s+=1){let a=i[s];if(typeof a!="string"||a.length===0)throw new TypeError("productBundle.reservedIds."+r+" must contain non-empty strings");o.push(a);}return Object.freeze([...new Set(o)].sort(Le))};return Object.freeze({appIds:t(e.appIds,"appIds"),definitionIds:t(e.definitionIds,"definitionIds")})}catch(n){throw n instanceof TypeError?n:new TypeError("productBundle.reservedIds must be a valid reservation object")}}function sa(e,n){return e.appIds.length===n.appIds.length&&e.appIds.every((t,i)=>t===n.appIds[i])&&e.definitionIds.length===n.definitionIds.length&&e.definitionIds.every((t,i)=>t===n.definitionIds[i])}function cn(e){return Object.freeze({appIds:Object.freeze([...new Set(e.map(n=>n.appId))].sort(Le)),definitionIds:Object.freeze([...new Set(e.map(n=>n.definition.id))].sort(Le))})}function Sn(e,n){let t=Object.keys(e).sort(Le),i=[...n].sort(Le);return t.length===i.length&&t.every((r,o)=>r===i[o])}function $i(e){if(typeof e!="string"||e.length===0||e.startsWith("/")||/[\\\u0000]/.test(e))return;let n=e.split("/");if(!n.some(t=>t.length===0||t==="."||t===".."))return n}function aa(e){let n;try{n=ea(e);}catch{return}if(!an(n)||!Sn(n,["version","packages"])||n.version!==1||!Array.isArray(n.packages)||n.packages.length>Lt)return;let t=new Set,i=new Set,r=0,o=[];for(let s of n.packages){if(!an(s))return;let a=["packageDir","appId","definition","files"],d=Object.hasOwn(s,"lineage"),c=Object.hasOwn(s,"launcher"),p=[...d?["lineage"]:[],...c?["launcher"]:[]];if(!Sn(s,[...a,...p])||c&&s.launcher!==false)return;let f=$i(s.packageDir),g=Hi(s.appId);if(!f||f.length!==2||f[0]!=="apps"||!Ys(f[1])||!g||t.has(s.packageDir)||!an(s.definition)||!Sn(s.definition,["id","version","hash"]))return;let A=Hi(s.definition.id),T=s.definition.version,L=s.definition.hash;if(!A||!Number.isSafeInteger(T)||T<1||typeof L!="string"||!Mt.test(L)||!Array.isArray(s.files)||s.files.length<2||s.files.length>Ot)return;let N=new Set,F=[];for(let R of s.files){if(!an(R)||!Sn(R,["path","sha256"]))return;let B=$i(R.path);if(!B||typeof R.sha256!="string"||!Mt.test(R.sha256))return;let H=B.join("/"),I=`${s.packageDir}/${H}`;if(N.has(H)||i.has(I))return;N.add(H),i.add(I),F.push(Object.freeze({path:H,sha256:R.sha256}));}if(!Z.some(R=>N.has(R))||!N.has("ui/index.html")||(r+=F.length,r>$s))return;t.add(s.packageDir),o.push(Object.freeze({packageDir:s.packageDir,...c?{launcher:false}:{},appId:g,definition:Object.freeze({id:A,version:T,hash:L}),lineage:Array.isArray(s.lineage)?s.lineage:[],files:Object.freeze(F.sort((R,B)=>Le(R.path,B.path)))}));}return Object.freeze({version:1,packages:Object.freeze(o)})}function Se(e){let n=na(e);return n==="PATH_ESCAPED"||n==="IDENTITY_CHANGED"||n==="TOCTOU"?"PATH_ESCAPED":n==="LIMIT_EXCEEDED"?"LIMIT_EXCEEDED":"BUNDLE_INTEGRITY"}async function ca(e,n,t,i,r){let o=[],s=async(a,d)=>{if(!he(i,r))throw new h("LIMIT_EXCEEDED");if(d>2)throw new h("LIMIT_EXCEEDED");let c=await St(e,n,a);for(let p of c){if(typeof p.name!="string"||p.name.length===0||p.name==="."||p.name===".."||/[\\/\u0000]/.test(p.name))throw new h("PATH_ESCAPED");let f=`${a}/${p.name}`;if(p.kind==="file"){if(o.push(f.slice(t.length+1)),o.length>Ot)throw new h("LIMIT_EXCEEDED")}else if(p.kind==="directory")await s(f,d+1);else throw p.kind==="symlink"?new h("PATH_ESCAPED"):new h("READ_DENIED")}};return await s(t,0),o.sort(Le)}function da(e){return Z.includes(e)?262144:e==="ui/index.html"?tn:e==="ui/state.json"?65536:e.startsWith("ui/assets/")?Ws:Js}async function Ji(e,n,t,i){if(e===void 0)return {packages:[],diagnostics:[],incomplete:false,reservedIds:Ks};let r=ra(e.reservedIds),o=[],s=(u,_,D)=>oa(u,"bundled",_),a=(u=[],_=false,D)=>({...D===void 0?{}:{indexHash:D},packages:u,diagnostics:o,incomplete:_,reservedIds:r});if(typeof e.root!="string"||e.root.length===0||typeof e.expectedIndexHash!="string"||!Mt.test(e.expectedIndexHash))return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a();let d;try{d=await Gi(n,e.root,"bundle-index.json",Gs);}catch(u){return o.push(s(Se(u),"bundle-index.json")),a()}let c=crypto.createHash("sha256").update(d).digest("hex");if(c!==e.expectedIndexHash)return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a();let p=aa(d);if(p===void 0)return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a();if(!sa(cn(p.packages),r))return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a([],false,c);if(!he(t,i))return o.push(s("LIMIT_EXCEEDED","bundle-index.json")),a(p.packages.map(u=>({indexEntry:u,failureCode:"LIMIT_EXCEEDED"})),true,c);let f;try{f=await St(n,e.root,"");}catch(u){return o.push(s(Se(u),"bundle-index.json")),a(p.packages.map(_=>({indexEntry:_,failureCode:Se(u)})),false,c)}if(!he(t,i))return o.push(s("LIMIT_EXCEEDED","bundle-index.json")),a(p.packages.map(u=>({indexEntry:u,failureCode:"LIMIT_EXCEEDED"})),true,c);let g=f.find(u=>u.name==="bundle-index.json"&&u.kind==="file"),A=f.find(u=>u.name==="apps"&&u.kind==="directory"),T=u=>p.packages.map(_=>({indexEntry:_,failureCode:u}));if(!g)return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a(T("BUNDLE_INTEGRITY"),false,c);let L=f.filter(u=>u.name!=="bundle-index.json"&&u.name!=="apps");if(L.length>0){let u=L.some(_=>_.kind==="symlink")?"PATH_ESCAPED":"BUNDLE_INTEGRITY";return o.push(s(u,"bundle-index.json")),a(T("BUNDLE_INTEGRITY"),false,c)}if(f.some(u=>u.name==="apps"&&u.kind!=="directory"))return o.push(s("PATH_ESCAPED","apps")),a(T("PATH_ESCAPED"),false,c);let N=[];if(A)try{N=await St(n,e.root,"apps");}catch(u){return o.push(s(Se(u),"apps")),a(T(Se(u)),false,c)}if(!he(t,i)||N.length>Lt)return o.push(s("LIMIT_EXCEEDED","apps")),a(T("LIMIT_EXCEEDED"),true,c);let F=new Map(p.packages.map(u=>[u.packageDir.slice(5),u])),R=N.filter(u=>!F.has(u.name));for(let u of R)o.push(s(u.kind==="symlink"?"PATH_ESCAPED":"BUNDLE_INTEGRITY",`apps/${u.name}`));if(R.length>0){let u=R.some(_=>_.kind==="symlink")?"PATH_ESCAPED":"BUNDLE_INTEGRITY";return a(T(u),false,c)}let B=new Set,H=new Map,I=new Map;for(let u of p.packages){let _=H.get(u.appId)??[];_.push(u),H.set(u.appId,_);let D=`${u.definition.id}\0${String(u.definition.version)}`,U=I.get(D)??[];U.push(u),I.set(D,U);}for(let u of [...H.values(),...I.values()])if(u.length>1)for(let _ of u)B.add(_);let y=[],M=d.byteLength,C=false;for(let u of p.packages){if(!he(t,i)){C=true,y.push({indexEntry:u,failureCode:"LIMIT_EXCEEDED"});continue}let _;try{let E=u.lineage[u.lineage.length-1];if(!E)throw new le("LINEAGE_INVALID","Definition lineage is missing");if(E.definition.id!==u.definition.id||E.version!==u.definition.version||E.hash!==u.definition.hash)throw new le("LINEAGE_STALE","Last lineage generation does not match bundle identity");_=ft(u.lineage,{...E.definition,hash:E.hash}).entries;}catch(E){let K=E instanceof le?E.code:"LINEAGE_INVALID";o.push(s(K,u.packageDir)),y.push({indexEntry:u,failureCode:K});continue}let D=N.find(E=>E.name===u.packageDir.slice(5));if(!A||!D){y.push({indexEntry:u,failureCode:"BUNDLE_INTEGRITY"});continue}if(D.kind!=="directory"){y.push({indexEntry:u,failureCode:D.kind==="symlink"?"PATH_ESCAPED":"BUNDLE_INTEGRITY"});continue}let U;try{let E=await ca(n,e.root,u.packageDir,t,i);if(!he(t,i)){C=!0,y.push({indexEntry:u,failureCode:"LIMIT_EXCEEDED"});continue}let K=u.files.map(ue=>ue.path);if(E.length!==K.length||E.some((ue,fe)=>ue!==K[fe])){y.push({indexEntry:u,failureCode:"BUNDLE_INTEGRITY"});continue}U=new Map;let j;for(let ue of u.files){if(!he(t,i)){j="LIMIT_EXCEEDED",C=!0;break}if(M>=Pt){j="LIMIT_EXCEEDED";break}let fe;try{fe=await Gi(n,e.root,`${u.packageDir}/${ue.path}`,da(ue.path));}catch(Do){j=Se(Do);break}if(!he(t,i)){j="LIMIT_EXCEEDED",C=!0;break}if(M+fe.byteLength>Pt){M=Pt,j="LIMIT_EXCEEDED";break}if(M+=fe.byteLength,crypto.createHash("sha256").update(fe).digest("hex")!==ue.sha256){j="BUNDLE_INTEGRITY";break}U.set(ue.path,fe);}if(j!==void 0){y.push({indexEntry:u,failureCode:j});continue}}catch(E){he(t,i)||(C=true),y.push({indexEntry:u,failureCode:Se(E)});continue}y.push({indexEntry:u,lineage:_,files:U,...B.has(u)?{failureCode:"DUPLICATE_ID"}:{}});}return a(y,C,c)}var Gs,Lt,Ot,$s,Js,Ws,Pt,Mt,Xs,Ks,Rt=w(()=>{m();yt();Ne();lt();It();bt();Gs=256*1024,Lt=64,Ot=128,$s=Lt*Ot,Js=2*1024*1024,Ws=8*1024*1024,Pt=32*1024*1024,Mt=/^[0-9a-f]{64}$/,Xs=new TextDecoder("utf-8",{fatal:true}),Ks=Object.freeze({appIds:Object.freeze([]),definitionIds:Object.freeze([])});});var Io={};bo(Io,{AppDiscoveryFsError:()=>h,LOCAL_APP_TOOL_PREFIX:()=>ua,MCP_APP_WORKSPACE_TOOL_PREFIX:()=>fa,NodeAppDiscoveryFs:()=>He,NodeAppDiscoveryFsAdapter:()=>Fi,WORKSPACE_APP_TOOL_PREFIX:()=>ze,createWorkspaceAppScanCache:()=>Ci,defaultAppDiscoveryFs:()=>Mn,defaultNodeAppDiscoveryFs:()=>vi,deriveWorkspaceAppToolName:()=>ya,deriveWorkspaceAppToolNames:()=>kt,discoverWorkspaceAppCandidates:()=>Ba,discoverWorkspaceApps:()=>xt,isWorkspacePackage:()=>la,productAppBundleReservations:()=>cn,scanWorkspaceApps:()=>Ha});function la(e,n){let t=n.split("/");return t.length===2&&t[0]===e&&/^[A-Za-z][A-Za-z0-9._-]{0,127}$/.test(t[1])}function kt(e){if(typeof e!="string"||!ce.test(e))throw new TypeError("pluginId must be a safe UI plugin identifier");let n=`${ze}${e}`.length+7<=128?e:`hash_${crypto.createHash("sha256").update(e,"utf8").digest("hex")}`;return {read:`${ze}${n}_read`,action:`${ze}${n}_action`}}function ya(e,n="read"){let t=kt(e);return n==="read"?t.read:t.action}function Xi(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;try{let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}catch{return false}}function Ia(e,n){return n.length===0||n==="."||n===".."||/[\\/\u0000]/.test(n)?e==="skills"?"skills":"apps":`${e==="skills"?"skills":"apps"}/${n}`}function ga(e){return e.length>0&&e!=="."&&e!==".."&&!/[\\/\u0000]/.test(e)}function dn(e,n){let t=new TextEncoder().encode(e),i=new TextEncoder().encode(n),r=Math.min(t.byteLength,i.byteLength);for(let o=0;o<r;o+=1){let s=t[o]-i[o];if(s!==0)return s}return t.byteLength-i.byteLength}function ro(e){if(typeof e=="string")return {name:e,kind:"directory"};if(e===null||typeof e!="object")return null;let n=e;if(typeof n.name!="string")return null;if(n.kind==="file"||n.kind==="directory"||n.kind==="symlink"||n.kind==="other")return {name:n.name,kind:n.kind};if(n.type==="file"||n.type==="directory"||n.type==="symlink"||n.type==="other")return {name:n.name,kind:n.type};let t=n.isDirectory;if(typeof t=="function"&&t.call(e))return {name:n.name,kind:"directory"};let i=n.isSymbolicLink;if(typeof i=="function"&&i.call(e))return {name:n.name,kind:"symlink"};let r=n.isFile;return typeof r=="function"&&r.call(e)?{name:n.name,kind:"file"}:{name:n.name,kind:"other"}}function ma(e){if(e instanceof Uint8Array)return new Uint8Array(e);if(e instanceof ArrayBuffer)return new Uint8Array(e.slice(0));if(Array.isArray(e)&&e.every(n=>Number.isInteger(n)&&n>=0&&n<=255))return Uint8Array.from(e);throw new TypeError("filesystem port returned an invalid byte array")}function so(e){return Aa.decode(e)}function ha(e){return JSON.parse(so(e))}function _a(e){if(e===void 0)return;let n=e.definitionId!==void 0&&e.definitionVersion!==void 0?`${e.definitionId}\0${String(e.definitionVersion)}`:void 0;return {pluginId:e.pluginId,...n===void 0?{}:{definitionKey:n}}}function On(e,n,t,i,r){let o={code:e,...i===void 0?{}:{pluginId:i},source:n,relativePath:t,...r?.reason===void 0?{}:{reason:Object.freeze({...r.reason})},...r?.files===void 0?{}:{files:Object.freeze([...r.files])}};return Object.freeze(o)}function Ki(e){switch(e){case "ENOENT":return "NOT_FOUND";case "ELOOP":case "EXDEV":return "PATH_ESCAPED";case "EFBIG":case "EOVERFLOW":return "LIMIT_EXCEEDED";case "EACCES":case "EPERM":case "ENOTDIR":return "READ_DENIED";default:return e}}function ie(e){if(e instanceof h)return Ki(e.code);if(e!==null&&typeof e=="object"&&"code"in e){let n=e.code;if(typeof n=="string")return Ki(n)}}function Ge(e,n){return e==="PATH_ESCAPED"||e==="IDENTITY_CHANGED"||e==="TOCTOU"?"PATH_ESCAPED":e==="LIMIT_EXCEEDED"?"LIMIT_EXCEEDED":n==="manifest"&&e==="NOT_FOUND"?"MANIFEST_MISSING":n==="entry"?"ENTRY_INVALID":n==="initial"?"INITIAL_STATE_INVALID":"MANIFEST_INVALID"}function Yi(e){return {reason:e.reason,...e.code==="MANIFEST_DUAL_MISMATCH"?{files:e.files}:{}}}function qi(e){return e==="MANIFEST_DUAL_MISMATCH"?e:ao(e)}function Ta(e){return ao(e.code)}function ao(e){switch(e){case "MANIFEST_INVALID":case "PRIMITIVE_UNKNOWN":case "PRIMITIVE_SET_UNSUPPORTED":case "SCHEMA_TYPE_UNSUPPORTED":case "TOKEN_INVALID":case "UNSAFE_VALUE":return "MANIFEST_INVALID";case "LIMIT_EXCEEDED":return "LIMIT_EXCEEDED";case "INITIAL_STATE_INVALID":return "INITIAL_STATE_INVALID";default:return co("UiPluginValidationError",e)}}function co(e,n){throw new Error(`Unmapped ${e} code: ${String(n)}`)}function Ea(e){switch(e){case "APP_ID_INVALID":case "TOOL_ID_INVALID":case "RESOURCE_URI_INVALID":case "TOOL_INVALID":case "SERIALIZATION_INVALID":return "MANIFEST_INVALID";case "APP_ID_CONFLICT":case "TOOL_ID_CONFLICT":return "DUPLICATE_ID";case "RESOURCE_NOT_FOUND":case "HTML_INVALID":return "ENTRY_INVALID";case "STATE_INVALID":case "STATE_PROJECTION_INVALID":case "BUTTON_INVALID":return "INITIAL_STATE_INVALID";default:return co("McpAppContractError",e)}}function _e(e,n){let t=n();return Number.isFinite(t)&&Number.isFinite(e)&&t-e<=5e3}function Da(e){return {pluginId:e.appId,definitionKey:`${e.definition.id}\0${String(e.definition.version)}`}}function Na(e,n){let t=n.get("package.json");if(t!==void 0)try{let r=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(t));if(Xi(r)){let o=r.bin,s=typeof o=="string"?o:Xi(o)?Object.values(o).find(a=>typeof a=="string"):void 0;for(let a of [s,r.main]){if(typeof a!="string")continue;let d=ba(a);if(d&&n.has(d))return d}}}catch{}return [`${e.slice(e.lastIndexOf("/")+1)}.js`,"index.js","main.js"].find(r=>n.has(r))}function ba(e){if(e.startsWith("/")||e.includes("\\")||e.includes("\0"))return;let n=e.split("/").filter(t=>t!==".");if(!(n.length===0||n.some(t=>t.length===0||t==="..")))return n.join("/")}function Pa(){return globalThis.performance?.now()??Date.now()}function Oe(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;for(let n of Object.values(e))Oe(n);return Object.freeze(e)}function Zi(e){return Object.freeze(Array.from(e))}async function Ct(e,n,t,i){if(n.pinnedFiles!==void 0){let a=n.pinnedFiles.get(t);if(a===void 0)throw new h("NOT_FOUND");if(a.byteLength>i)throw new h("LIMIT_EXCEEDED");return new Uint8Array(a)}let r=`${n.relativePath}/${t}`,o=n.scanContext,s=e.fingerprintVerifiedFile;if(o===void 0||!o.cacheable||typeof s!="function")return to(e,n.root,r,i);try{let a=o.priorFingerprints.get(r)??await s.call(e,o.workspaceRoot,r,i);o.candidateRealPath=a.candidateRealPath;let d=await to(e,n.root,r,i),c=await s.call(e,o.workspaceRoot,r,i);return o.candidateRealPath=c.candidateRealPath,uo(a,c)&&c.size===BigInt(d.byteLength)&&!fo(c,o.scanStartedAtNs)?o.files.set(r,{relativePath:r,byteLimit:i,fingerprint:c}):o.cacheable=!1,d}catch(a){throw Z.includes(t)&&ie(a)==="NOT_FOUND"&&o.directoryListings.some(c=>c.relativePath===n.relativePath&&!lo(c.key,t))||(o.cacheable=false),a}}function po(e,n){return JSON.stringify([e.realPath,n.source,n.relativePath])}async function Ma(e,n,t,i,r,o,s,a){let d=e.fingerprintVerifiedFile,c=po(t,i),p=r.candidates.get(c),f=i.relativePath,g;try{g=await no(e,n,f);}catch(I){if(ie(I)!=="NOT_FOUND")throw I}let A=g===void 0?void 0:{relativePath:f,key:g};if(A!==void 0&&(i.source==="apps"||i.source==="skills")&&!Z.some(I=>lo(A.key,I)))return _e(s,a)?p!==void 0&&p.candidate===void 0&&p.candidateRealPath===void 0&&p.files.length===0&&p.directoryListings.length===1&&p.directoryListings[0]?.relativePath===A.relativePath&&p.directoryListings[0]?.key===A.key&&(i.source==="apps"?p.diagnostic?.code==="MANIFEST_MISSING":p.diagnostic===void 0)&&typeof d=="function"?{memo:p}:typeof d!="function"?{}:{context:{state:r,cacheKey:c,workspaceRoot:n,scanStartedAtNs:o,directoryListings:Object.freeze([A]),priorFingerprints:new Map,files:new Map,cacheable:true}}:{timeLimitReached:true};let T=await Promise.all(Qi.map(async I=>{if(I==="")return A;let y=`${i.relativePath}${I}`;try{let M=await no(e,n,y);return M===void 0?void 0:{relativePath:y,key:M}}catch(M){if(ie(M)==="NOT_FOUND")return;throw M}}));if(!_e(s,a))return {timeLimitReached:true};let L=typeof d=="function"&&T.every(I=>I!==void 0),N=T.filter(I=>I!==void 0),F=new Map,R=p!==void 0&&L,B;if(p!==void 0&&typeof d=="function"){let I=await Promise.all(p.files.map(async y=>{if(!_e(s,a))return {kind:"time",file:y};try{let M=await d.call(e,n,y.relativePath,y.byteLimit);return {kind:"fingerprint",file:y,current:M}}catch(M){return ie(M)==="NOT_FOUND"?{kind:"missing",file:y}:{kind:"error",file:y,error:M}}}));if(I.some(y=>y.kind==="time"))return {timeLimitReached:true};for(let y of I){if(y.kind==="error")throw y.error;if(y.kind==="missing"){R=false;continue}if(y.kind!=="fingerprint")continue;let{file:M,current:C}=y;F.set(M.relativePath,C),B??=C.candidateRealPath,(C.candidateRealPath!==p.candidateRealPath||!uo(C,M.fingerprint)||fo(C,o))&&(R=false);}}let H=p!==void 0&&p.directoryListings.length===N.length&&p.directoryListings.every((I,y)=>I.relativePath===N[y]?.relativePath&&I.key===N[y]?.key);return p!==void 0&&L&&H&&R&&B===p.candidateRealPath?{memo:p}:!L||N.length!==Qi.length?{}:{context:{state:r,cacheKey:c,workspaceRoot:n,scanStartedAtNs:o,directoryListings:Object.freeze(N),priorFingerprints:F,files:new Map,...B===void 0?{}:{candidateRealPath:B},cacheable:true}}}function lo(e,n){try{let t=JSON.parse(e);return Array.isArray(t)&&t.some(i=>Array.isArray(i)&&i[0]===n)}catch{return true}}async function no(e,n,t){let i=yo(e);if(typeof i!="function")return;let r=await i.call(e,n,t);if(!Array.isArray(r)||r.some(s=>typeof s=="string"))return;let o=r.map(ro);if(!o.some(s=>s===null))return JSON.stringify(o.slice().sort((s,a)=>dn(s.name,a.name)||dn(s.kind,a.kind)).map(s=>[s.name,s.kind]))}function uo(e,n){return e.dev===n.dev&&e.ino===n.ino&&e.size===n.size&&e.mtimeNs===n.mtimeNs&&e.ctimeNs===n.ctimeNs}function fo(e,n){let t=e.mtimeNs-n;return t>=-eo&&t<=eo}function Ut(e){let n=e.scanContext,t=e.source==="skills"&&e.candidate===void 0&&e.diagnostic===void 0&&n?.files.size===0,i=e.source==="apps"&&e.candidate===void 0&&e.diagnostic?.code==="MANIFEST_MISSING"&&n?.files.size===0,r=t||i;if(n===void 0||!n.cacheable||n.candidateRealPath===void 0&&!r||n.files.size===0&&!r)return;let o=Object.freeze({...!r&&n.candidateRealPath!==void 0?{candidateRealPath:n.candidateRealPath}:{},directoryListings:n.directoryListings,files:Object.freeze([...n.files.values()]),...e.candidate===void 0?{}:{candidate:e.candidate},...e.diagnostic===void 0?{}:{diagnostic:e.diagnostic},...e.identity===void 0?{}:{identity:e.identity},...e.provenance===void 0?{}:{provenance:e.provenance}});n.state.candidates.set(n.cacheKey,o);}function Sa(e,n,t){let i=crypto.createHash("sha256"),r=new TextEncoder().encode(W(e)),o=s=>{let a=new Uint8Array(8);new DataView(a.buffer).setBigUint64(0,BigInt(s)),i.update(a);};return o(r.byteLength),i.update(r),o(n.byteLength),i.update(n),o(t.byteLength),i.update(t),i.digest("hex")}function La(e,n){let t={...e.definition,sourceHash:n},i;try{i=oe(t);}catch(o){throw o instanceof b&&o.code==="INPUT_INVALID"?new Y("MANIFEST_INVALID","normalized definition is invalid"):o}let r={...t,hash:i};try{Ie(r);}catch{throw new Y("MANIFEST_INVALID","normalized definition is invalid")}return r}function Oa(e){return e.actions.some(n=>n.backend.type==="core"&&n.backend.handler!=="state.set")}function Ra(e){if(typeof e.readVerifiedFile=="function")return e.readVerifiedFile;if(typeof e.readFileVerified=="function")return e.readFileVerified}function yo(e){if(typeof e.listDirectory=="function")return e.listDirectory;if(typeof e.readDirectory=="function")return e.readDirectory;if(typeof e.readdir=="function")return e.readdir}async function to(e,n,t,i){let r=Ra(e);if(!r)throw new h("READ_DENIED");return ma(await r.call(e,n,t,i))}async function Ua(e,n,t){let i=yo(e);if(!i)throw new h("READ_DENIED");let r=await i.call(e,n,t);if(!Array.isArray(r))throw new h("READ_DENIED");return r.map(ro).filter(o=>o!==null)}function Ca(e){let n=[];for(let t of [e.reserved,e.builtin])t&&n.push(t);return e.builtins&&"listMcpApps"in e.builtins?n.push(io(e.builtins)):e.builtins&&n.push(e.builtins),e.builtinCatalog&&n.push(io(e.builtinCatalog)),n.push({...e.reservedAppIds===void 0?{}:{appIds:e.reservedAppIds},...e.reservedDefinitionIds===void 0?{}:{definitionIds:e.reservedDefinitionIds},...e.reservedToolNames===void 0?{}:{toolNames:e.reservedToolNames}}),n}function io(e){let n=[],t=[],i=[];for(let r of e.listMcpApps())typeof r.appId=="string"&&n.push(r.appId),r.definition&&typeof r.definition.id=="string"&&t.push(r.definition.id);for(let r of e.listMcpAppTools())typeof r.name=="string"&&i.push(r.name);return {appIds:n,definitionIds:t,toolNames:i}}function Te(e,n){e.diagnostic||(e.diagnostic=On(n,e.source,e.relativePath,e.identity?.pluginId));}function wa(e){let n=new Map;for(let i of e){let r=i.identity?.pluginId;if(r===void 0)continue;let o=n.get(r)??[];o.push(i),n.set(r,o);}for(let i of n.values()){if(i.length<2)continue;let r=i.filter(s=>s.provenance!==void 0);if(r.length>0){for(let s of i)s.provenance===void 0&&Te(s,"RESERVED_ID");if(r.length>1)for(let s of r)Te(s,"DUPLICATE_ID");continue}let o=i.filter(s=>s.source==="apps");if(o.length>1){for(let s of o)Te(s,"DUPLICATE_ID");for(let s of i.filter(a=>a.source==="skills"))Te(s,"DUPLICATE_ID");}else for(let s of i.filter(a=>a.source==="skills"))Te(s,"DUPLICATE_ID");}let t=new Map;for(let i of e){if(i.diagnostic?.code==="RESERVED_ID")continue;let r=i.identity?.definitionKey;if(r===void 0)continue;let o=t.get(r)??[];o.push(i),t.set(r,o);}for(let i of t.values())if(i.length>1)for(let r of i)Te(r,"DUPLICATE_ID");}function ka(e,n,t){let i=new Set,r=new Set,o=new Set,s=new Set(t.appIds),a=new Set(t.definitionIds);for(let d of Ca(n)){for(let c of d.appIds??[])typeof c=="string"&&i.add(c);for(let c of d.definitionIds??[])typeof c=="string"&&r.add(c);for(let c of d.toolNames??[])typeof c=="string"&&o.add(c);}for(let d of e){let c=d.candidate;if(!c)continue;if(i.has(c.pluginId)||r.has(c.definitionId)){Te(d,"RESERVED_ID");continue}if(d.provenance===void 0&&(s.has(c.pluginId)||a.has(c.definitionId))){Te(d,"RESERVED_ID");continue}[c.toolNames.read,c.toolNames.action].filter(f=>f!==void 0).some(f=>o.has(f))&&Te(d,"DUPLICATE_ID");}}function xa(e){return [...e].sort((n,t)=>{let i=Wi.indexOf(n.source)-Wi.indexOf(t.source);return i!==0?i:dn(n.relativePath,t.relativePath)})}function O(e,n,t){e.diagnostic=On(n,e.source,e.relativePath,e.identity?.pluginId,t);}async function oo(e,n,t){let i=pt(t,{mode:"local"});if(!i.ok&&i.parseFailure){O(n,qi(i.rejection.code),Yi(i.rejection));return}let r=_a(i.identity);if(n.bundleIdentity===void 0)n.identity=r;else if(r?.pluginId!==n.bundleIdentity.appId||r.definitionKey!==`${n.bundleIdentity.definitionId}\0${String(n.bundleIdentity.version)}`){O(n,"BUNDLE_INTEGRITY");return}if(!i.ok&&i.builtinOnly){O(n,"RESERVED_ID");return}if(!i.ok){O(n,qi(i.rejection.code),Yi(i.rejection));return}let o=i.manifest,s={pluginId:o.pluginId,definitionKey:`${o.definitionId}\0${String(o.version)}`};if(n.bundleIdentity===void 0&&(n.identity=s),o.actions.length>0)try{Ui(o.actions.map(E=>({actionId:E.actionId,inputSchema:E.inputSchema})));}catch(E){if(E instanceof De){O(n,Ea(E.code));return}throw E}let a;try{a=await Ct(e,n,"ui/index.html",tn);}catch(E){O(n,Ge(ie(E),"entry"));return}if(a.byteLength>tn){O(n,"LIMIT_EXCEEDED");return}let d;try{d=so(a);}catch{O(n,"ENTRY_INVALID");return}if(a.byteLength===0||d.length===0){O(n,"ENTRY_INVALID");return}let c=crypto.createHash("sha256").update(a).digest("hex");if(o.entryHash!==void 0&&o.entryHash!==c){O(n,"ENTRY_INVALID");return}let p={},f,g;if(o.initialState!==void 0){try{f=await Ct(e,n,"ui/state.json",65536);}catch(E){O(n,Ge(ie(E),"initial"));return}if(f.byteLength>65536){O(n,"LIMIT_EXCEEDED");return}try{let E=ha(f),K=o.dataPaths??[],j=nt(E,K);p=ye(j,0,K),Ce(p);}catch{O(n,"INITIAL_STATE_INVALID");return}if(g=crypto.createHash("sha256").update(f).digest("hex"),o.initialState.hash!==void 0&&o.initialState.hash!==g){O(n,"INITIAL_STATE_INVALID");return}}let A={...o,entryHash:c,...o.initialState===void 0?{}:{initialState:{path:"ui/state.json",hash:g}}},T=qe(A),L=Sa(A,a,f??new Uint8Array),N;try{N=La(T,L);}catch(E){if(E instanceof Y){O(n,Ta(E));return}throw E}let F;if(n.bundleLineage!==void 0){let E=n.bundleLineage[n.bundleLineage.length-1];if(!E){O(n,"LINEAGE_INVALID");return}let{legacy:K,...j}=E.definition,{hash:ue,...fe}=N;if(W(j)!==W(fe)){O(n,"LINEAGE_STALE");return}if(K!==void 0&&(N={...N,legacy:K}),K!==void 0)try{N={...N,hash:oe(N)},Ie(N);}catch{O(n,"LINEAGE_INVALID");return}F=n.bundleLineage;}if(n.bundleIdentity!==void 0&&n.bundleIdentity.appId!==o.pluginId){O(n,"BUNDLE_INTEGRITY");return}if(n.bundleIdentity!==void 0&&(n.bundleIdentity.definitionId!==N.id||n.bundleIdentity.version!==N.version||n.bundleIdentity.definitionHash!==N.hash)){O(n,"LINEAGE_STALE");return}let R=kt(o.pluginId),B=o.actions.length===0?{read:R.read}:R,H=Oe(T),I=Oe(A),y=Oe(N),M=Oe({...T.handlers}),C=Zi(a),u=f===void 0?void 0:Zi(f),_=Object.freeze({...n.provenance===void 0?{}:{provenance:n.provenance},entry:Object.freeze({path:"ui/index.html",hash:c,bytes:C}),...u===void 0?{}:{initialState:Object.freeze({path:"ui/state.json",hash:g,bytes:u})}}),D={appId:o.pluginId,pluginId:o.pluginId,definitionId:o.definitionId,version:o.version,...i.releaseVersion===void 0?{}:{releaseVersion:i.releaseVersion},manifestFile:i.file,...i.mcpb===void 0?{}:{mcpb:Oe(i.mcpb)},relativePath:n.relativePath,manifest:I,normalized:H,name:o.name,description:o.description,...o.icon===void 0?{}:{icon:o.icon},...o.tone===void 0?{}:{tone:o.tone},definition:y,handlers:M,resources:_,html:d,entryBytes:C,entryHash:c,initialState:Oe(p),...u===void 0?{}:{initialStateBytes:u},...g===void 0?{}:{initialStateHash:g},sourceHash:L,toolNames:Object.freeze(B)},U=n.provenance===void 0?{...D,source:n.source}:{...D,provenance:n.provenance,lineage:F??[]};n.candidate=Object.freeze(U),Oa(o)&&O(n,"EXEC_DENIED");}async function Ao(e,n){let t={};for(let i of Z)try{t[i]=await Ct(e,n,i,262144);}catch(r){if(ie(r)==="NOT_FOUND")continue;return {files:t,failure:Ge(ie(r),"manifest")}}return {files:t}}function wt(e){return Z.some(n=>e[n]!==void 0)}async function ja(e,n){let{files:t,failure:i}=await Ao(e,n);if(i!==void 0){O(n,i);return}let r=t[q];return r!==void 0&&!dt(r)&&delete t[q],wt(t)?t:void 0}function Va(e,n,t,i=pa,r=false){let o=xa(e);wa(o);let s=Object.freeze(o.filter(p=>p.candidate!==void 0&&p.diagnostic===void 0).map(p=>p.candidate)),a=Object.freeze(o.filter(p=>p.diagnostic!==void 0).map(p=>p.diagnostic)),d=r?Object.freeze({...t===void 0?{}:{indexHash:t},candidates:Object.freeze(o.filter(p=>p.source==="bundled"&&p.diagnostic===void 0&&t!==void 0&&p.candidate?.provenance?.indexHash===t).map(p=>p.candidate)),diagnostics:Object.freeze(a.filter(p=>p.source==="bundled").map(p=>Object.freeze({...p}))),reservedAppIds:Object.freeze([...i.appIds]),reservedDefinitionIds:Object.freeze([...i.definitionIds])}):void 0,c={apps:s,diagnostics:a,complete:n===void 0,...n===void 0?{}:{incompleteReason:n},...t===void 0?{}:{productBundleIndexHash:t},...d===void 0?{}:{productBundleSnapshotMetadata:d}};return Object.defineProperty(c,"candidates",{configurable:false,enumerable:false,get:()=>s}),Object.freeze(c)}function va(e){if(e===null||typeof e!="object"&&typeof e!="function")return false;let n=e;return typeof n.readVerifiedFile=="function"||typeof n.readFileVerified=="function"||typeof n.listDirectory=="function"||typeof n.readDirectory=="function"||typeof n.readdir=="function"}function Fa(e,n){if(va(e))return {fs:e,options:n??{}};let t=e??n??{};return {fs:t.filesystem??t.fileSystem??t.fs??Mn,options:t}}async function xt(e,n,t){if(typeof e!="string"||e.length===0)throw new TypeError("workspaceRoot must be explicit");let{fs:i,options:r}=Fa(n,t),o=r.clock??Pa,s=o(),a=await Ji(r.productBundle,i,s,o),d=o(),c=BigInt(Date.now())*1000000n,p=[],f=0,g,A=false,T,L;if(r.scanCache!==void 0&&typeof i.getRootIdentity=="function"&&typeof i.fingerprintVerifiedFile=="function")try{L=await i.getRootIdentity(e),T=wi(r.scanCache,L),T.scanStartedAtNs=c;}catch(I){if(ie(I)!=="NOT_FOUND")throw I}let N=T!==void 0&&r.productBundle===void 0&&a.packages.length===0&&a.diagnostics.length===0,F=new Set,R=true;p.push(...a.diagnostics.map(I=>({source:I.source,root:r.productBundle?.root??e,name:"",relativePath:I.relativePath,diagnostic:I})));let B=a.reservedIds;a.incomplete&&(g="time_limit");for(let I of a.packages){if(!_e(d,o)){A=true,g="time_limit";break}let y=I.indexEntry,M=y.packageDir,C=I.files===void 0?void 0:Na(M,I.files),u=a.indexHash===void 0?void 0:Di(Object.freeze({kind:"bundled",launcher:y.launcher!==false,indexHash:a.indexHash,packageDir:M,appId:y.appId,definitionId:y.definition.id,version:y.definition.version,definitionHash:y.definition.hash,files:y.files}),C),_={source:"bundled",root:r.productBundle?.root??e,name:M.slice(5),relativePath:M,...u===void 0?{}:{provenance:u},...I.files===void 0?{}:{pinnedFiles:I.files},...I.lineage===void 0?{}:{bundleLineage:I.lineage},bundleIdentity:{appId:y.appId,definitionId:y.definition.id,version:y.definition.version,definitionHash:y.definition.hash},identity:Da(y)};if(p.push(_),f+=1,I.failureCode!==void 0){O(_,I.failureCode);continue}let D={};for(let U of Z){let E=I.files?.get(U);E!==void 0&&(D[U]=E);}if(!wt(D)){O(_,"BUNDLE_INTEGRITY");continue}if(await oo(i,_,D),!_e(d,o)){A=true,g="time_limit";break}}let H=[{source:"apps",directory:"apps"},{source:"skills",directory:"skills"}];e:for(let I of H){let{source:y,directory:M}=I,C;try{C=await Ua(i,e,M);}catch(_){if(ie(_)==="NOT_FOUND")continue;N=false,R=false,p.push({source:y,root:e,name:"",relativePath:y,diagnostic:On(Ge(ie(_),"manifest"),y,y)});continue}let u=C.filter(_=>_.kind==="directory"||_.kind==="symlink").filter(_=>ga(_.name)).map(_=>({source:y,root:e,name:_.name,relativePath:Ia(y,_.name)})).sort((_,D)=>dn(_.relativePath,D.relativePath));for(let _ of u){let D={..._};if(p.push(D),L!==void 0?F.add(po(L,D)):N=false,!_e(d,o)){A=true,g="time_limit";break e}let U;if(T!==void 0&&L!==void 0){try{let j=await Ma(i,e,L,D,T,c,d,o);if(j.timeLimitReached){A=!0,g="time_limit";break e}D.scanContext=j.context,U=j.memo;}catch(j){N=false,O(D,Ge(ie(j),"manifest"));continue}U===void 0&&(N=false);}if(U!==void 0){if(D.candidate=U.candidate,D.diagnostic=U.diagnostic,D.identity=U.identity,y==="skills"&&U.candidate===void 0&&U.diagnostic===void 0)continue;if(f>=64){O(D,"LIMIT_EXCEEDED");continue}if(_.relativePath.split("/").length-1>2){O(D,"LIMIT_EXCEEDED");continue}if(f+=1,!_e(d,o)){A=true,g="time_limit";break e}continue}let E;if(y==="skills"&&(E=await ja(i,D),E===void 0)){D.diagnostic===void 0&&Ut(D);continue}if(f>=64){O(D,"LIMIT_EXCEEDED");continue}if(_.relativePath.split("/").length-1>2){O(D,"LIMIT_EXCEEDED");continue}if(!_e(d,o)){A=true,g="time_limit";break e}if(f+=1,E===void 0){let j=await Ao(i,D);if(j.failure!==void 0||!wt(j.files)){O(D,j.failure??Ge("NOT_FOUND","manifest")),Ut(D);continue}E=j.files;}if(await oo(i,D,E),Ut(D),!_e(d,o)){A=true,g="time_limit";break e}}}if(T!==void 0&&L!==void 0){let I=[...F].sort(dn),y=T.lastCandidateKeys,M=y!==void 0&&y.length===I.length&&y.every((u,_)=>u===I[_]);if(N=N&&M,R&&!A&&g===void 0)for(let u of T.candidates.keys())try{JSON.parse(u)[0]===L.realPath&&!F.has(u)&&T.candidates.delete(u);}catch{T.candidates.delete(u);}let C=[...T.candidates.keys()].filter(u=>{try{return JSON.parse(u)[0]===L.realPath}catch{return false}});N=N&&C.length===F.size&&C.every(u=>F.has(u))&&!A&&g===void 0,T.lastCandidateScanUnchanged=N,R&&!A&&g===void 0&&(T.lastCandidateKeys=Object.freeze(I));}return A&&p.push({source:"apps",root:e,name:"",relativePath:"apps",diagnostic:On("DISCOVERY_TIME_LIMIT","apps","apps")}),ka(p,r,B),Va(p,g,a.indexHash,B,r.productBundle!==void 0)}var pa,ze,ua,fa,Wi,Aa,Qi,eo,Ba,Ha,go=w(()=>{m();be();pn();Ae();_i();Ne();It();Tn();ki();bt();En();Rt();Rt();pa=cn([]);ze="crewx_local_app_",ua=ze,fa=ze;Wi=["bundled","apps","skills"],Aa=new TextDecoder("utf-8",{fatal:true});Qi=["","/ui"],eo=2000000000n;Ba=xt,Ha=xt;});m();var mo="SKILL.md",Wa=/^---\s*\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/;function ho(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}function Xa(e){return e.isDirectory()||e.isSymbolicLink()}function Eo(e){try{return fs$1.existsSync(e)&&fs$1.statSync(e).isDirectory()}catch{return false}}var Ka=["index.js","main.js"];function jp(e,n){let t=path.join(e,"package.json");if(fs$1.existsSync(t))try{let r=JSON.parse(fs$1.readFileSync(t,"utf8"));if(r.bin){let o=typeof r.bin=="string"?r.bin:Object.values(r.bin).find(s=>typeof s=="string");if(o){let s=path.resolve(e,o);if(fs$1.existsSync(s))return s}}if(typeof r.main=="string"){let o=path.resolve(e,r.main);if(fs$1.existsSync(o))return o}}catch{}let i=path.resolve(e,`${n}.js`);if(fs$1.existsSync(i))return i;for(let r of Ka){let o=path.resolve(e,r);if(fs$1.existsSync(o))return o}}function Ya(e){let n;try{n=fs$1.readFileSync(e,"utf8");}catch{return {frontmatter:{},readable:false,valid:false,hasFrontmatter:false}}let t=n.match(Wa);if(!t)return {frontmatter:{},readable:true,valid:true,hasFrontmatter:false};try{let i=jsYaml.load(t[1]??"");if(!ho(i))return {frontmatter:{},readable:!0,valid:!1,hasFrontmatter:!0};let r=ho(i.metadata)?i.metadata:void 0;return {frontmatter:{...typeof i.name=="string"?{name:i.name}:{},...typeof(r?.version??i.version)=="string"?{version:r?.version??i.version}:{},...typeof i.description=="string"?{description:i.description}:{}},readable:!0,valid:!0,hasFrontmatter:!0}}catch{return {frontmatter:{},readable:true,valid:false,hasFrontmatter:true}}}function qa(e){return [path.join(e,mo),path.join(e,"skill",mo)]}function Rn(e,n){if(!Eo(e))return null;for(let t of qa(e)){if(!fs$1.existsSync(t))continue;let r=Ya(t).frontmatter;return {name:r.name??n,...r.version===void 0?{}:{version:r.version},...r.description===void 0?{}:{description:r.description},skillMdPath:t,dir:e}}return null}function jt(e){try{return fs$1.readdirSync(e,{withFileTypes:!0}).filter(Xa)}catch{return []}}function Za(e){return e.length===0||/[\\\u0000]/.test(e)?false:e.split("/").every(n=>n.length>0&&n!=="."&&n!=="..")}function _o(e,n,t){!e||n.has(e.name)||(n.add(e.name),t.push(e));}function Un(e){let n=[],t=new Set;for(let i of e)if(Eo(i))for(let r of jt(i)){if(r.name.startsWith("@")){let o=path.join(i,r.name);for(let s of jt(o))_o(Rn(path.join(o,s.name),s.name),t,n);continue}_o(Rn(path.join(i,r.name),r.name),t,n);}return n.sort((i,r)=>i.name.localeCompare(r.name))}function Qa(e,n){if(!Za(e))throw new Error(`Skill not found: ${e}`);for(let i of n){let r=Rn(path.join(i,e),e);if(r)return r;for(let o of jt(i)){if(!o.name.startsWith("@"))continue;let s=Rn(path.join(i,o.name,e),e);if(s)return s}}let t=Un(n).find(i=>i.name===e);if(t)return t;throw new Error(`Skill not found: ${e}`)}async function Vp(e){if(!e||e.root===null)return {skills:[],diagnostics:[]};let{discoverWorkspaceApps:n}=await Promise.resolve().then(()=>(go(),Io)),t=await n(e.root,{productBundle:e}),i=[],r=new Set;for(let o of t.apps){let s=o.provenance?.kind==="bundled"?o.provenance.packageDir:void 0;if(!s)continue;let a=path.join(e.root,...s.split("/"));for(let d of Un([path.dirname(a)]))path.resolve(d.dir)!==path.resolve(a)||r.has(d.name)||(r.add(d.name),i.push(d));for(let d of [path.join(a,"skill"),path.join(a,"skills")])for(let c of Un([d]))r.has(c.name)||(r.add(c.name),i.push(c));}return {skills:i.sort((o,s)=>o.name.localeCompare(s.name)),diagnostics:t.diagnostics.filter(o=>o.source==="bundled")}}var vp=Un,Fp=Qa;
2
- exports.discover=Un;exports.discoverBundledProductSkills=Vp;exports.discoverSkills=vp;exports.findEntrypoint=jp;exports.readSkillFrontmatter=Ya;exports.resolve=Qa;exports.resolveSkill=Fp;
1
+ 'use strict';var crypto=require('crypto'),net=require('net'),fs$1=require('fs'),promises=require('fs/promises'),path=require('path'),jsYaml=require('js-yaml');var Uo=Object.defineProperty;var R=(e,n)=>()=>(e&&(n=e(e=0)),n);var Co=(e,n)=>{for(var t in n)Uo(e,t,{get:n[t],enumerable:true});};var I=R(()=>{});var b,fn=R(()=>{I();b=class extends Error{constructor(t,i=t,r){super(i);this.code=t;this.currentRevision=r;}code;currentRevision;name="UiRuntimeError"};});function Bn(e){return ko.test(e)||wo.test(e)}function ie(){throw new b("INPUT_INVALID","JSON value is not projection-safe")}function vo(e){let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}function vn(e,n,t,i,r,o){if(n>i&&ie(),e===null||typeof e=="string"||typeof e=="boolean")return typeof e=="string"&&(xo.test(e)||Vo.test(e)&&!Ho(r,o)||jo.test(e))&&ie(),e;if(typeof e=="number")return Number.isFinite(e)||ie(),e;(typeof e!="object"||e===void 0||typeof e=="function"||typeof e=="bigint")&&ie();let s=e;t.has(s)&&ie(),t.add(s);try{if(Array.isArray(e))return e.map(d=>vn(d,n+1,t,i,r,o));vo(s)||ie();let a={};for(let[d,c]of Object.entries(e))Bn(d)&&ie(),a[d]=vn(c,n+1,t,i,[...r,d],o);return a}finally{t.delete(s);}}function ge(e,n=0,t=[]){(!Number.isInteger(n)||n<0||n>Bo)&&ie(),(!Array.isArray(t)||t.some(r=>typeof r!="string"))&&ie();let i=vn(e,0,new Set,Fo+n,[],t);return (i===null||Array.isArray(i)||typeof i!="object")&&ie(),i}function xe(e,n){if(!e||!n)return false;let t=e.split("."),i=n.split(".");return t.length>=i.length&&i.every((r,o)=>t[o]===r)}function Ho(e,n){if(e.length===0)return false;let t=e.join(".");return n.some(i=>xe(t,i))}function je(e){try{let n=JSON.stringify(e);return n===void 0&&ie(),n}catch{ie();}}function Fn(e){return Array.isArray(e)?e.map(Fn):e!==null&&typeof e=="object"?Object.fromEntries(Object.keys(e).sort().map(n=>[n,Fn(e[n])])):e}function Z(e){return je(Fn(e))}function Hn(e){return Buffer.byteLength(e,"utf8")}var ko,wo,xo,jo,Vo,Fo,Bo,me=R(()=>{I();fn();ko=/(?:proof|token|secret|password|cookie|authorization|private[_-]?key|stack|exception|plugin[_-]?text)/i,wo=/(?:url|uri|endpoint|path|file(?:name|path)?|cwd|shell|directory|dir|folder)$/i,xo=/<\/?[A-Za-z][^>]*>/,jo=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,Vo=/^(?:https?|file|ftp|ws|wss):\/\//i;Fo=8,Bo=4;});var yn,zn=R(()=>{I();yn=["text/plain","application/json"];});var $t=R(()=>{I();zn();});function Ve(e){return Go.has(e)||$o.test(e)||Jo.test(e)}var Jt,Go,$o,Jo,An,Ke,pe,Gn,$n,Jn,Wn,Xn,Me=R(()=>{I();Jt=["__proto__","prototype","constructor","proof","token","secret","password","cookie","authorization","private_key","private-key","stack","exception","plugin_text","url","uri","endpoint","path","filename","filepath","cwd","shell","directory","dir","folder"],Go=new Set(Jt),$o=/(?:proof|token|secret|password|cookie|authorization|private[_-]?key|stack|exception|plugin[_-]?text)/i,Jo=/(?:url|uri|endpoint|path|file(?:name|path)?|cwd|shell|directory|dir|folder)$/i;An=/^[A-Za-z0-9_]+$/,Ke=/^[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*$/,pe=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,Gn=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/,$n=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,Jn=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$/,Wn=["blue","violet","emerald","amber","rose","sky","slate","indigo"],Xn=["inline","panel"];});function Kn(e){return typeof e=="string"&&yn.includes(e)}var Wt=R(()=>{I();zn();Me();});function In(e){if(!Yn(e))return false;let n=Object.keys(e);return !(n.some(t=>t!=="in"&&t!=="out")||n.length===0||Object.hasOwn(e,"in")&&!Wo(e.in)||Object.hasOwn(e,"out")&&!Xo(e.out))}function Wo(e){return Yn(e)?Object.keys(e).every(t=>t==="mediaType"||t==="required")&&Object.hasOwn(e,"mediaType")&&Kn(e.mediaType)&&(!Object.hasOwn(e,"required")||typeof e.required=="boolean"):false}function Xo(e){return Yn(e)?Object.keys(e).every(t=>t==="mediaType"||t==="range")&&Object.hasOwn(e,"mediaType")&&Kn(e.mediaType)&&(!Object.hasOwn(e,"range")||typeof e.range=="boolean"):false}function Yn(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}var qn=R(()=>{I();$t();Wt();new TextDecoder("utf-8",{fatal:true,ignoreBOM:true});});function re(e){let t=e.renderer!==void 0||e.surfaces!==void 0||e.stateProjection!==void 0||e.dataPaths!==void 0||e.usage!==void 0||e.detailPanel!==void 0||e.displayModes!==void 0||e.summaryProjection!==void 0||e.legacy!==void 0||Object.values(e.actions).some(r=>r.resultProjection!==void 0)?{id:e.id,version:e.version,...e.renderer===void 0?{}:{renderer:e.renderer},...e.surfaces===void 0?{}:{surfaces:e.surfaces},...e.stateProjection===void 0?{}:{stateProjection:e.stateProjection},...e.dataPaths===void 0?{}:{dataPaths:e.dataPaths},...e.summaryProjection===void 0?{}:{summaryProjection:e.summaryProjection},...e.legacy===void 0?{}:{legacy:e.legacy},...e.usage===void 0?{}:{usage:e.usage},...e.detailPanel===void 0?{}:{detailPanel:e.detailPanel},...e.displayModes===void 0?{}:{displayModes:e.displayModes},...e.sourceHash===void 0?{}:{sourceHash:e.sourceHash},actions:e.actions}:e.sourceHash===void 0?{id:e.id,version:e.version,actions:e.actions}:{id:e.id,version:e.version,sourceHash:e.sourceHash,actions:e.actions},i=ge(t);return crypto.createHash("sha256").update(Z(i)).digest("hex")}function he(e){if(!/^\d+$/.test(String(e.version))||e.version<1||e.id.length<1||e.id.length>128)throw new b("DEFINITION_UNSUPPORTED","UI definition is invalid");if(e.sourceHash!==void 0&&(typeof e.sourceHash!="string"||!Yo.test(e.sourceHash)))throw new b("DEFINITION_UNSUPPORTED","UI definition source hash is invalid");if(!/^[0-9a-f]{64}$/.test(e.hash)||re(e)!==e.hash)throw new b("DEFINITION_UNSUPPORTED","UI definition hash is invalid");for(let[n,t]of Object.entries(e.actions)){if(!n||!Array.isArray(t.capabilities)||t.capabilities.some(i=>!Zo(i)))throw new b("DEFINITION_UNSUPPORTED","UI action declaration is invalid");if(t.confirmation!==void 0&&t.confirmation!=="none"&&t.confirmation!=="native")throw new b("DEFINITION_UNSUPPORTED","UI action confirmation is invalid");if(t.inputKeys&&(!Array.isArray(t.inputKeys)||t.inputKeys.some(i=>typeof i!="string"||!i)))throw new b("DEFINITION_UNSUPPORTED","UI action input declaration is invalid");if(t.dataInputs!==void 0&&(!Array.isArray(t.dataInputs)||new Set(t.dataInputs).size!==t.dataInputs.length||t.dataInputs.some(i=>typeof i!="string"||!i||t.inputKeys!==void 0&&!t.inputKeys.includes(i))))throw new b("DEFINITION_UNSUPPORTED","UI action data input declaration is invalid");if(t.resultProjection&&Zn(t.resultProjection),t.content!==void 0&&!In(t.content))throw new b("DEFINITION_UNSUPPORTED","UI action content declaration is invalid");if(t.env!==void 0&&(!Array.isArray(t.env)||t.env.length===0||new Set(t.env).size!==t.env.length||t.env.some(i=>i!=="CREWX_APP_INSTANCE_ID"&&i!=="CREWX_THREAD_ID")))throw new b("DEFINITION_UNSUPPORTED","UI action environment declaration is invalid")}if(e.renderer!==void 0&&(!e.renderer||e.renderer.length>128))throw new b("DEFINITION_UNSUPPORTED","UI definition renderer is invalid");if(e.surfaces&&(!Array.isArray(e.surfaces)||e.surfaces.some(n=>!n||n.length>64)))throw new b("DEFINITION_UNSUPPORTED","UI definition surfaces are invalid");if(e.usage!==void 0&&e.usage!=="card"&&e.usage!=="window")throw new b("DEFINITION_UNSUPPORTED","UI definition usage is invalid");if(e.detailPanel!==void 0&&typeof e.detailPanel!="boolean")throw new b("DEFINITION_UNSUPPORTED","UI definition detailPanel is invalid");if(e.displayModes&&(!Array.isArray(e.displayModes)||e.displayModes.length===0||new Set(e.displayModes).size!==e.displayModes.length||e.displayModes.some(n=>n!=="inline"&&n!=="floating"&&n!=="focused")))throw new b("DEFINITION_UNSUPPORTED","UI definition displayModes are invalid");if(e.usage==="card"&&e.displayModes!==void 0)throw new b("DEFINITION_UNSUPPORTED","Card definitions cannot declare displayModes");if(e.usage==="window"&&e.detailPanel!==void 0)throw new b("DEFINITION_UNSUPPORTED","Window definitions cannot declare detailPanel");if(e.stateProjection&&Zn(e.stateProjection),e.summaryProjection){Zn(e.summaryProjection);let n=new Set(e.stateProjection?.allow??[]);if(e.summaryProjection.allow.some(t=>!n.has(t)))throw new b("DEFINITION_UNSUPPORTED","UI summary projection exceeds state projection")}if(e.legacy!==void 0){if(!e.legacy||typeof e.legacy!="object"||Array.isArray(e.legacy)||Object.keys(e.legacy).some(r=>!["readTool","actionTool","hostTools","agentAccess"].includes(r)))throw new b("DEFINITION_UNSUPPORTED","UI legacy metadata is invalid");let n=new Set;for(let[r,o]of [["readTool",e.legacy.readTool],["actionTool",e.legacy.actionTool]])if(o!==void 0){if(qo(o,r==="readTool"),n.has(o.name))throw new b("DEFINITION_UNSUPPORTED","UI legacy tool names collide");n.add(o.name);}let t=e.legacy.hostTools;if(t!==void 0){if(!t||typeof t!="object"||Array.isArray(t))throw new b("DEFINITION_UNSUPPORTED","UI legacy host tools are invalid");let r={"doc.open":"crewx_app_html_viewer_open","pty.connect":"crewx_app_terminal_connect"};for(let[o,s]of Object.entries(t)){if(!Object.hasOwn(r,o)||r[o]!==s||typeof s!="string"||!/^[A-Za-z][A-Za-z0-9._-]{0,127}$/.test(s)||n.has(s))throw new b("DEFINITION_UNSUPPORTED","UI legacy host tools are invalid");n.add(s);}}let i=e.legacy.agentAccess;if(i!==void 0&&(!i||typeof i!="object"||Array.isArray(i)||Object.entries(i).some(([r,o])=>!r||!Object.hasOwn(e.actions,r)||o!=="allowed"&&o!=="denied")))throw new b("DEFINITION_UNSUPPORTED","UI legacy agent access is invalid");if(e.legacy.actionTool!==void 0&&(!i||Object.keys(i).length===0))throw new b("DEFINITION_UNSUPPORTED","UI legacy action tool requires its complete agent access map")}if(e.dataPaths!==void 0){let n=new Set(["__proto__","prototype","constructor"]);if(!Array.isArray(e.dataPaths)||e.dataPaths.length>16||new Set(e.dataPaths).size!==e.dataPaths.length||e.dataPaths.some(t=>typeof t!="string"||!/^[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*$/.test(t)||t.split(".").some(i=>n.has(i))||!(e.stateProjection?.allow??[]).some(i=>xe(t,i))))throw new b("DEFINITION_UNSUPPORTED","UI definition dataPaths are invalid")}}function qo(e,n){if(!e||typeof e!="object"||Array.isArray(e))throw new b("DEFINITION_UNSUPPORTED","UI legacy tool metadata is invalid");let t=e,i=["name","description","inputSchema","textFallback","visibility"],r=Object.hasOwn(t,"fixedResult");if(Object.keys(t).some(o=>!i.includes(o)&&!(n&&o==="fixedResult"))||i.some(o=>!Object.hasOwn(t,o))||typeof t.name!="string"||!/^[A-Za-z][A-Za-z0-9._-]{0,127}$/.test(t.name)||typeof t.description!="string"||t.description.trim().length===0||t.description.length>8192||typeof t.textFallback!="string"||t.textFallback.trim().length===0||t.textFallback.length>16384||!t.inputSchema||typeof t.inputSchema!="object"||Array.isArray(t.inputSchema)||!Array.isArray(t.visibility)||t.visibility.length===0||t.visibility.some(o=>o!=="model"&&o!=="app")||new Set(t.visibility).size!==t.visibility.length)throw new b("DEFINITION_UNSUPPORTED","UI legacy tool metadata is invalid");try{let o=ge(t.inputSchema);if(o.type!==void 0&&o.type!=="object")throw new Error("schema type");if(r){if(!n)throw new Error("fixed result location");let s=t.fixedResult;if(!s||typeof s!="object"||Array.isArray(s))throw new Error("fixed result");let a=s;if(Object.keys(a).sort().join(",")!=="argsPolicy,structuredContent"||a.argsPolicy!=="empty-only"&&a.argsPolicy!=="ignore"||!a.structuredContent||typeof a.structuredContent!="object"||Array.isArray(a.structuredContent))throw new Error("fixed result");let d=ge(a.structuredContent);if(Hn(je(d))>4*1024)throw new Error("fixed result size")}}catch{throw new b("DEFINITION_UNSUPPORTED","UI legacy tool metadata is not projection-safe")}}function Zn(e){if(!Array.isArray(e.allow)||e.allow.some(n=>!/^[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*$/.test(n)))throw new b("DEFINITION_UNSUPPORTED","UI projection policy is invalid")}function Zo(e){return e.length>0&&e.length<=128&&e!=="*"&&e!=="all"&&!/[/*]/.test(e)}var Yo,Se=R(()=>{I();me();fn();qn();Yo=/^[0-9a-f]{64}$/;});var Xt=R(()=>{I();me();});var W,ve,Qn=R(()=>{I();W="dist/tools.json",ve="dist/main.mjs";});var Ye,Kt=R(()=>{I();Ye="window";});function Yt(e){if(!Array.isArray(e)||e.length===0)return false;let n=new Set;for(let t of e){if(!Qo.some(i=>i===t)||n.has(t))return false;n.add(t);}return true}var Qo,qt=R(()=>{I();Qo=["CREWX_APP_INSTANCE_ID","CREWX_THREAD_ID"];});function w(e){throw new et(e)}function lr(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;try{let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}catch{return false}}function ur(e,n){let t=Object.getOwnPropertyDescriptor(e,n);return (!t||!("value"in t))&&w("CSP_ORIGIN_INVALID"),t.value}function gn(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))return [];let t=ur(e,n);Array.isArray(t)||w("CSP_ORIGIN_INVALID"),Reflect.ownKeys(t).some(o=>typeof o!="string"||o!=="length"&&!/^(?:0|[1-9][0-9]*)$/.test(o))&&w("CSP_ORIGIN_INVALID");let r=[];for(let o=0;o<t.length;o+=1)(!Object.prototype.hasOwnProperty.call(t,o)||typeof t[o]!="string")&&w("CSP_ORIGIN_INVALID"),r.push(t[o]);return Object.keys(t).length!==t.length&&w("CSP_ORIGIN_INVALID"),r}function fr(e){let n;try{n=JSON.stringify(e);}catch{w("CSP_ORIGIN_INVALID");}return n===void 0&&w("CSP_ORIGIN_INVALID"),new TextEncoder().encode(n).byteLength}function ei(e,n){/\s|\\/u.test(e)&&w("CSP_ORIGIN_INVALID");let t=sr.exec(e);t||w("CSP_ORIGIN_INVALID");let i=t[1].toLowerCase(),r=t[2];(r.includes("@")||r.includes("%")||r.includes("*"))&&w("CSP_ORIGIN_INVALID"),(r.startsWith("[")?ar:cr).test(r)||w("CSP_ORIGIN_INVALID"),i==="wss"&&n!=="connectDomains"&&w("CSP_ORIGIN_INVALID");let s;try{s=new URL(e);}catch{w("CSP_ORIGIN_INVALID");}(s.protocol!==`${i}:`||s.username!==""||s.password!==""||s.search!==""||s.hash!=="")&&w("CSP_ORIGIN_INVALID");let a=s.hostname.toLowerCase();if((!a||a.includes("%"))&&w("CSP_ORIGIN_INVALID"),!a.startsWith("[")){let c=a.endsWith(".")?a.slice(0,-1):a;(c.length===0||c.length>253)&&w("CSP_ORIGIN_INVALID"),c.split(".").some(y=>y.length>63||!dr.test(y))&&w("CSP_ORIGIN_INVALID");}let d=s.origin;return (d==="null"||!d.startsWith(`${i}://`))&&w("CSP_ORIGIN_INVALID"),{origin:d,hostname:a}}function yr(e){let n=e.split(".").map(Number);return ((n[0]*256+n[1])*256+n[2])*256+n[3]}function ni(e,n,t){let i=4294967295<<32-t>>>0;return (e&i)===(n&i)}function oi(e){let n=yr(e);return ni(n,3221225472,24)?n!==3221225481&&n!==3221225482:pr.some(([t,i])=>ni(n,t,i))}function Ar(e){let n=e.indexOf("::"),t=(n<0?e:e.slice(0,n)).split(":").filter(Boolean),i=n<0?[]:e.slice(n+2).split(":").filter(Boolean);return (n<0?t:[...t,...Array(8-t.length-i.length).fill("0"),...i]).reduce((o,s)=>o<<16n|BigInt(Number.parseInt(s,16)),0n)}function Ir(e){let n=Ar(e),t=Number(n>>112n),i=Number(n>>96n&0xffffn);if(n>>32n===0xffffn){let r=Number(n&0xffffffffn);return oi([r>>>24&255,r>>>16&255,r>>>8&255,r&255].join("."))}return t<8192||t>16383||t===8193&&i<=511||t===8193&&i===3512||t===8194||t===16383&&i<=4095}function gr(e,n){let t=e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e,i=net.isIP(t);if(i===4)return oi(t);if(i===6)return Ir(t);let r=e.toLowerCase().replace(/\.$/,"");return !r||!r.includes(".")||n.has(r)?true:rr.some(o=>r===o||r.endsWith(`.${o}`))}function ti(e){return Object.freeze([...new Set(e.map(n=>n.origin))].sort())}function ii(e){return JSON.stringify({baseUriDomains:[],connectDomains:e.connectDomains,declared:e.declared,frameDomains:e.frameDomains,resourceDomains:[]})}function ri(e,n={}){if(e===void 0){let f=ii({declared:false,connectDomains:[],frameDomains:[]});return Object.freeze({declared:false,connectDomains:Object.freeze([]),frameDomains:Object.freeze([]),resourceDomains:Object.freeze([]),baseUriDomains:Object.freeze([]),cspHash:crypto.createHash("sha256").update(f,"utf8").digest("hex")})}lr(e)||w("CSP_ORIGIN_INVALID");let t=Reflect.ownKeys(e);t.some(f=>typeof f!="string")&&w("CSP_ORIGIN_INVALID"),t.some(f=>!or.has(f))&&w("CSP_AXIS_UNKNOWN");let i=gn(e,"connectDomains"),r=gn(e,"frameDomains"),o=gn(e,"resourceDomains"),s=gn(e,"baseUriDomains");(o.length>0||s.length>0)&&w("CSP_AXIS_UNSUPPORTED"),(fr(e)>nr||i.length>Qt||r.length>Qt||i.length+r.length>tr||[...i,...r].some(f=>new TextEncoder().encode(f).byteLength>ir))&&w("CSP_LIMIT_EXCEEDED");let d=i.map(f=>ei(f,"connectDomains")),c=r.map(f=>ei(f,"frameDomains")),u=new Set((n.runtimeHostnames??[]).map(f=>f.toLowerCase().replace(/\.$/,"")));[...d,...c].some(f=>gr(f.hostname,u))&&w("CSP_ORIGIN_FORBIDDEN");let y={declared:true,connectDomains:ti(d),frameDomains:ti(c)},g=ii(y);return Object.freeze({...y,resourceDomains:Object.freeze([]),baseUriDomains:Object.freeze([]),cspHash:crypto.createHash("sha256").update(g,"utf8").digest("hex")})}var nr,Qt,tr,ir,or,rr,sr,ar,cr,dr,pr,et,si=R(()=>{I();nr=4096,Qt=16,tr=32,ir=512,or=new Set(["connectDomains","frameDomains","resourceDomains","baseUriDomains"]),rr=["localhost","local","internal","home.arpa","test","example","invalid","onion","lan","corp","home","intranet","private","localdomain"],sr=/^(https|wss):\/\/([^/?#]+)$/i,ar=/^\[[^\]]+\](?::[0-9]+)?$/,cr=/^[^:\[\]]+(?::[0-9]+)?$/,dr=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,pr=[[0,8],[1681915904,10],[167772160,8],[2130706432,8],[2851995648,16],[2886729728,12],[3221225984,24],[3227017984,24],[3232235520,16],[3323068416,15],[3325256704,24],[3405803776,24],[3758096384,4],[4026531840,4]],et=class extends Error{constructor(t){super(t);this.code=t;}code;name="UiPluginCspNormalizationError"};});function Ze(e,n){return n===void 0||n===""?e:e===""?n:n.startsWith("[")?`${e}${n}`:`${e}.${n}`}function l(e,n=e,t,i){throw new ee(e,n,t,i)}function j(e,n){try{return n()}catch(t){throw t instanceof ee?t.withPathPrefix(e):t}}function V(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;try{let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}catch{return false}}function M(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function $r(e,n){let t={};for(let[i,r]of Object.entries(e))i!==n&&(t[i]=r);return t}function z(e,n,t=[]){let i=new Set([...n,...t]),r=Object.keys(e).find(s=>!i.has(s));r!==void 0&&l("MANIFEST_INVALID","MANIFEST_INVALID",r,"unknown-key");let o=n.find(s=>!M(e,s));o!==void 0&&l("MANIFEST_INVALID","MANIFEST_INVALID",o,"missing-key");}function Tn(e,n=false,t=false,i=false){return Tr.test(e)||!i&&Dr.test(e)||Er.test(e)||t&&ai.test(e)||Nr.test(e)&&!(n&&/^\s*data:/i.test(e)&&!ai.test(e))}function _n(e,n=new Set,t=0,i=false,r=false,o=""){if(typeof e=="string"){Tn(e,i,r)&&l("UNSAFE_VALUE","UNSAFE_VALUE",o,"unsafe-value");return}if(!(e===null||typeof e!="object")){(t>8||n.has(e))&&l("MANIFEST_INVALID","MANIFEST_INVALID",o),n.add(e);try{if(Array.isArray(e)){e.forEach((s,a)=>_n(s,n,t+1,!1,!1,Ze(o,`[${a}]`)));return}V(e)||l("MANIFEST_INVALID","MANIFEST_INVALID",o);for(let[s,a]of Object.entries(e))_n(a,n,t+1,i&&t===0&&(s==="name"||s==="description"),r,Ze(o,s));}finally{n.delete(e);}}}function le(e,n){let t=e[n];return typeof t!="string"&&l("MANIFEST_INVALID"),t}function se(e,n,t){let i=e[n];return (!Number.isSafeInteger(i)||i<t)&&l("MANIFEST_INVALID"),i}function nt(e){return _r.test(e)||l("MANIFEST_INVALID"),e}function Fe(e){return hr.test(e)||l("TOKEN_INVALID"),e}function Jr(e){return Ii.test(e)||l("MANIFEST_INVALID"),e}function Wr(e){V(e)||l("MANIFEST_INVALID");let n={};for(let[t,i]of Object.entries(e)){let r=Jr(t);V(i)||l("MANIFEST_INVALID");let o=i.type;if(o==="text"){z(i,["type","maxLength"]),n[r]={type:o,maxLength:se(i,"maxLength",1)};continue}if(o==="text-list"){z(i,["type","max","itemMaxLength"]),n[r]={type:o,max:se(i,"max",0),itemMaxLength:se(i,"itemMaxLength",1)};continue}if(o==="step-list"){z(i,["type","min","max","labelMaxLength","detailMaxLength"]);let s=se(i,"min",0),a=se(i,"max",1);s>a&&l("MANIFEST_INVALID"),n[r]={type:o,min:s,max:a,labelMaxLength:se(i,"labelMaxLength",1),detailMaxLength:se(i,"detailMaxLength",1)};continue}typeof o=="string"&&l("SCHEMA_TYPE_UNSUPPORTED"),l("MANIFEST_INVALID");}return n}function Xr(e,n,t){let i=e[n];(!i||i.type!==t)&&l("MANIFEST_INVALID");}function mn(e,n,t){let i=le(e,"field");return Ii.test(i)||l("MANIFEST_INVALID"),Xr(n,i,t),i}function Kr(e,n){V(e)||l("MANIFEST_INVALID");let t=e.primitive;switch(typeof t!="string"&&l("MANIFEST_INVALID"),Gr.includes(t)||l("PRIMITIVE_UNKNOWN"),t){case "card-shell":return z(e,["primitive"]),{primitive:t};case "meta-banner":return z(e,["primitive","badgeToken","noticeToken"]),{primitive:t,badgeToken:Fe(le(e,"badgeToken")),noticeToken:Fe(le(e,"noticeToken"))};case "heading":return z(e,["primitive","field"]),{primitive:t,field:mn(e,n,"text")};case "labeled-text":return z(e,["primitive","titleToken","field","variant"]),e.variant!=="callout"&&l("MANIFEST_INVALID"),{primitive:t,titleToken:Fe(le(e,"titleToken")),field:mn(e,n,"text"),variant:"callout"};case "step-flow":return z(e,["primitive","titleToken","field"]),{primitive:t,titleToken:Fe(le(e,"titleToken")),field:mn(e,n,"step-list")};case "text-list":{z(e,["primitive","titleToken","field"],["emptyToken","hideWhenEmpty"]);let i={primitive:t,titleToken:Fe(le(e,"titleToken")),field:mn(e,n,"text-list")};return M(e,"emptyToken")&&(i.emptyToken=Fe(le(e,"emptyToken"))),M(e,"hideWhenEmpty")&&(typeof e.hideWhenEmpty!="boolean"&&l("MANIFEST_INVALID"),i.hideWhenEmpty=e.hideWhenEmpty),i}}return l("MANIFEST_INVALID")}function Yr(e,n){return Array.isArray(e)||l("MANIFEST_INVALID"),e.map(t=>Kr(t,n))}function G(e="v2 manifest exceeds a contract limit",n,t){return l("LIMIT_EXCEEDED",e,n,t)}function oe(e="initial state is not projection-safe"){return l("INITIAL_STATE_INVALID",e)}function ci(e,n){return (typeof e!="string"||e.length===0||e.length>4096||e.trim().length===0||Br.test(e)||Hr.test(e))&&l("MANIFEST_INVALID",`${n} is invalid`),(Tn(e,true,true)||Pr.test(e)||br.test(e)||Mr.test(e))&&l("UNSAFE_VALUE",`${n} contains an unsafe value`),e}function tt(e,n){return (typeof e!="string"||!pe.test(e))&&l("MANIFEST_INVALID",`${n} is invalid`),e}function qr(e){return (typeof e!="string"||!Gn.test(e)||e==="*"||e==="all")&&l("MANIFEST_INVALID","action capability is invalid"),e}function gi(e){return (typeof e!="string"||!Fr.test(e))&&l("MANIFEST_INVALID","resource hash is invalid"),e}function it(e,n=new Set,t=0,i=""){if(typeof e=="string"){e.length>4096&&G("v2 manifest string is too long",i,"string-too-long");return}if(!(e===null||typeof e=="boolean")){if(typeof e=="number"){Number.isFinite(e)||l("MANIFEST_INVALID","v2 manifest contains a non-finite number",i,"non-finite-number");return}(e===void 0||typeof e=="function"||typeof e=="bigint")&&l("MANIFEST_INVALID","v2 manifest contains a non-JSON value",i,"non-json-value"),typeof e!="object"&&l("MANIFEST_INVALID","MANIFEST_INVALID",i),t>8&&G("v2 manifest nesting is too deep",i,"too-deep"),n.has(e)&&l("MANIFEST_INVALID","v2 manifest contains a cycle",i,"cycle"),n.add(e);try{if(Array.isArray(e)){e.length>128&&G("v2 manifest array is too long",i,"array-too-long"),e.forEach((r,o)=>it(r,n,t+1,Ze(i,`[${o}]`)));return}V(e)||l("MANIFEST_INVALID","v2 manifest contains a non-plain object",i,"non-plain-object");for(let[r,o]of Object.entries(e))it(o,n,t+1,Ze(i,r));}finally{n.delete(e);}}}function mi(e){return (typeof e!="string"||e.length>4096||!Ke.test(e))&&(typeof e=="string"&&e.length>4096&&G("projection path is too long"),l("MANIFEST_INVALID","projection paths must be canonical exact paths")),e.split(".").some(t=>Ve(t))&&l("MANIFEST_INVALID","projection paths cannot address reserved state keys"),e}function ot(e){V(e)||l("MANIFEST_INVALID","projection policy must be an object"),z(e,["allow"]),Array.isArray(e.allow)||l("MANIFEST_INVALID","projection allow must be an array"),e.allow.length>128&&G("projection allowlist is too long");let n=[],t=new Set;for(let i of e.allow){let r=mi(i);t.has(r)&&l("MANIFEST_INVALID","projection allowlist contains a duplicate path"),t.add(r),n.push(r);}return {allow:n}}function Zr(e,n){if(e===void 0)return;Array.isArray(e)||l("MANIFEST_INVALID","dataPaths must be an array"),e.length>zr&&G("dataPaths exceed the v2 limit");let t=[],i=new Set;for(let r of e){let o=mi(r);i.has(o)&&l("MANIFEST_INVALID","dataPaths contain a duplicate path"),n.some(s=>xe(o,s))||l("MANIFEST_INVALID","dataPaths must be projection-allowed"),i.add(o),t.push(o);}return t}function Be(e,n,t=Number.MAX_SAFE_INTEGER){return (!Number.isSafeInteger(e)||e<0||e>t)&&l("MANIFEST_INVALID",`${n} is invalid`),e}function di(e,n){return (typeof e!="number"||!Number.isFinite(e))&&l("MANIFEST_INVALID",`${n} is invalid`),e}function rt(e,n=0,t=new Set){if(typeof e=="string")return (e.length>4096||Tn(e))&&l("UNSAFE_VALUE","schema enum contains an unsafe string"),e;if(e===null||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)||l("MANIFEST_INVALID","schema enum contains a non-finite number"),e;(n>8||typeof e!="object"||e===void 0)&&G("schema enum is too deep"),t.has(e)&&l("MANIFEST_INVALID","schema enum contains a cycle"),t.add(e);try{if(Array.isArray(e))return e.length>128&&G("schema enum array is too long"),e.map(r=>rt(r,n+1,t));V(e)||l("MANIFEST_INVALID","schema enum contains a non-plain object");let i={};for(let[r,o]of Object.entries(e))Ve(r)&&l("MANIFEST_INVALID","schema enum contains a reserved key"),i[r]=rt(o,n+1,t);return i}finally{t.delete(e);}}function Qr(e,n){if(e===void 0)return;Array.isArray(e)||l("MANIFEST_INVALID","schema required must be an array"),e.length>64&&G("schema required list is too long");let t=[],i=new Set;for(let r of e)(typeof r!="string"||!Ke.test(r))&&l("MANIFEST_INVALID","schema required contains an invalid key"),r.length>4096&&G("schema required key is too long"),i.has(r)&&l("MANIFEST_INVALID","schema required contains a duplicate key"),n&&!Object.prototype.hasOwnProperty.call(n,r)&&l("MANIFEST_INVALID","schema required references an undeclared property"),i.add(r),t.push(r);return t}function es(e,n){let t=n?Ke:An;return e.length>4096&&G("schema property name is too long"),(!t.test(e)||e.split(".").some(i=>Ve(i)))&&l("MANIFEST_INVALID","schema property name is invalid"),e}function st(e,n=0,t=false){V(e)||l("MANIFEST_INVALID","action inputSchema must be an object"),n>8&&G("action inputSchema is too deep");let i=e.type;i!=="object"&&i!=="string"&&i!=="number"&&i!=="integer"&&i!=="boolean"&&i!=="array"&&i!=="null"&&(typeof i=="string"&&l("SCHEMA_TYPE_UNSUPPORTED","action inputSchema type is unsupported"),l("MANIFEST_INVALID","action inputSchema type is required"));let r=["type","enum"];i==="string"&&r.push("minLength","maxLength"),i==="array"&&r.push("minItems","maxItems","items"),i==="object"&&r.push("minProperties","maxProperties","properties","required","additionalProperties"),(i==="number"||i==="integer")&&r.push("minimum","maximum"),z(e,["type"],r.filter(a=>a!=="type"));let o={type:i};if(M(e,"enum")&&(Array.isArray(e.enum)||l("MANIFEST_INVALID","schema enum must be an array"),e.enum.length>128&&G("schema enum is too long"),o.enum=e.enum.map(a=>rt(a))),i==="string"&&(M(e,"minLength")&&(o.minLength=Be(e.minLength,"schema minLength",4096)),M(e,"maxLength")&&(o.maxLength=Be(e.maxLength,"schema maxLength",4096)),o.minLength!==void 0&&o.maxLength!==void 0&&o.minLength>o.maxLength&&l("MANIFEST_INVALID","schema string length bounds are inverted")),(i==="number"||i==="integer")&&(M(e,"minimum")&&(o.minimum=di(e.minimum,"schema minimum")),M(e,"maximum")&&(o.maximum=di(e.maximum,"schema maximum")),o.minimum!==void 0&&o.maximum!==void 0&&o.minimum>o.maximum&&l("MANIFEST_INVALID","schema numeric bounds are inverted")),i==="array"&&(M(e,"minItems")&&(o.minItems=Be(e.minItems,"schema minItems",128)),M(e,"maxItems")&&(o.maxItems=Be(e.maxItems,"schema maxItems",128)),o.minItems!==void 0&&o.maxItems!==void 0&&o.minItems>o.maxItems&&l("MANIFEST_INVALID","schema array length bounds are inverted"),M(e,"items")&&(o.items=st(e.items,n+1,false))),i==="object"){let a;if(M(e,"properties")){V(e.properties)||l("MANIFEST_INVALID","schema properties must be an object");let c=Object.entries(e.properties);c.length>64&&G("schema properties are too many"),a={};for(let[u,y]of c){let g=es(u,t);a[g]=st(y,n+1,false);}o.properties=a;}M(e,"minProperties")&&(o.minProperties=Be(e.minProperties,"schema minProperties",64)),M(e,"maxProperties")&&(o.maxProperties=Be(e.maxProperties,"schema maxProperties",64)),o.minProperties!==void 0&&o.maxProperties!==void 0&&o.minProperties>o.maxProperties&&l("MANIFEST_INVALID","schema object property bounds are inverted");let d=Qr(e.required,a);d!==void 0&&(o.required=d),M(e,"additionalProperties")&&(e.additionalProperties!==false&&l("MANIFEST_INVALID","schema additionalProperties must be false"),o.additionalProperties=false);}let s=JSON.stringify(o);return (s===void 0||Buffer.byteLength(s,"utf8")>65536)&&G("action inputSchema subtree is too large"),o}function ns(e){let n=st(e,0,true);return (n.type!=="object"||!n.properties)&&l("MANIFEST_INVALID","action inputSchema must declare object properties"),n}function ts(e){if(V(e)||l("MANIFEST_INVALID","action backend must be an object"),e.type==="core"){z(e,kr);let n=e.handler;return (typeof n!="string"||!$n.test(n))&&l("MANIFEST_INVALID","core backend handler is invalid"),{type:"core",handler:n}}if(e.type==="skill"&&M(e,"entry"))return z(e,jr),e.entry!==ve&&l("MANIFEST_INVALID",`skill backend entry must be ${ve}`),{type:"skill",entry:ve};if(e.type==="skill"){z(e,wr,xr),(!Array.isArray(e.command)||e.command.length===0||e.command.length>16)&&l("MANIFEST_INVALID","skill backend command is invalid");let n=[];for(let i of e.command)(typeof i!="string"||i.length===0||i.length>256||!Jn.test(i))&&l("MANIFEST_INVALID","skill backend command token is invalid"),n.push(i);let t=M(e,"env")?os(e.env):void 0;return {type:"skill",command:n,...t===void 0?{}:{env:t}}}l("MANIFEST_INVALID","action backend type is unsupported");}function is(e){V(e)||l("MANIFEST_INVALID","action must be an object"),z(e,Rr,Ur),M(e,"_meta")&&j("_meta",()=>hi(e._meta));let n=j("actionId",()=>tt(e.actionId,"actionId"));Bn(n)&&l("MANIFEST_INVALID",`actionId "${n}" is not projection-safe`,"actionId");let t=j("capability",()=>qr(e.capability)),i=e.mutation;typeof i!="boolean"&&l("MANIFEST_INVALID","action mutation must be boolean","mutation");let r=j("inputSchema",()=>ns(e.inputSchema)),o;if(M(e,"dataInputs")){Array.isArray(e.dataInputs)||l("MANIFEST_INVALID","action dataInputs must be an array","dataInputs");let u=r.properties,y=new Set,g=[];for(let f of e.dataInputs)(typeof f!="string"||!M(u,f)||y.has(f))&&l("MANIFEST_INVALID","action dataInputs must be unique declared properties","dataInputs"),y.add(f),g.push(f);o=g;}let s=j("resultProjection",()=>ot(e.resultProjection)),a=j("backend",()=>ts(e.backend)),d;M(e,"content")&&((a.type!=="skill"||!In(e.content))&&l("MANIFEST_INVALID","action content declaration is invalid","content"),d=rs(e.content));let c;if(M(e,"confirmation")){let u=e.confirmation;u!=="none"&&u!=="native"&&l("MANIFEST_INVALID","action confirmation is invalid","confirmation"),c=u;}return {actionId:n,capability:t,mutation:i,inputSchema:r,resultProjection:s,backend:a,...d===void 0?{}:{content:d},...o===void 0?{}:{dataInputs:o},...c===void 0?{}:{confirmation:c}}}function os(e){return Yt(e)||l("MANIFEST_INVALID","skill backend env is invalid"),Object.freeze([...e])}function rs(e){return Object.freeze({...e.in===void 0?{}:{in:Object.freeze({...e.in})},...e.out===void 0?{}:{out:Object.freeze({...e.out})}})}function ss(e){return V(e)||l("INITIAL_STATE_INVALID","initialState must be an object"),z(e,Vr,vr),e.path!=="ui/state.json"&&l("MANIFEST_INVALID","initialState path is not fixed"),M(e,"hash")?{path:"ui/state.json",hash:gi(e.hash)}:{path:"ui/state.json"}}function as(e){let n=["wasm","terminal","htmlDocuments"];return (!V(e)||Object.keys(e).length===0||Object.keys(e).some(t=>!n.includes(t)||e[t]!==true))&&l("MANIFEST_INVALID","runtime must contain only known capability flags set to true"),{...e.wasm===true?{wasm:true}:{},...e.terminal===true?{terminal:true}:{},...e.htmlDocuments===true?{htmlDocuments:true}:{}}}function cs(e,n){let t;try{t=ri(e);}catch(i){let r=i!==null&&typeof i=="object"&&"code"in i&&typeof i.code=="string"?i.code:"CSP_ORIGIN_INVALID";return l("MANIFEST_INVALID",r,void 0,r.toLowerCase().replace(/_/g,"-"))}if(t.frameDomains.length>0&&l("MANIFEST_INVALID","external origins in csp are not enabled in this rollout",void 0,"csp-not-enabled"),t.connectDomains.length!==0)return n?.terminal===true&&l("MANIFEST_INVALID","runtime.terminal cannot be combined with csp.connectDomains","connectDomains","terminal-with-connect-domains"),Object.freeze({connectDomains:t.connectDomains})}function ds(e,n){_n(V(e)&&M(e,"csp")?$r(e,"csp"):e,new Set,0,true,true),it(e),V(e)||l("MANIFEST_INVALID"),z(e,Lr,Or),M(e,"_meta")&&j("_meta",()=>hi(e._meta)),e.manifestVersion!==2&&l("MANIFEST_INVALID");let t;M(e,"runtime")&&(t=j("runtime",()=>as(e.runtime)));let i;M(e,"csp")&&(i=j("csp",()=>cs(e.csp,t)));let r=j("pluginId",()=>tt(e.pluginId,"pluginId")),o=j("definitionId",()=>tt(e.definitionId,"definitionId")),s=j("version",()=>se(e,"version",1)),a=j("name",()=>ci(e.name,"name")),d=j("description",()=>ci(e.description,"description")),c;M(e,"icon")&&((typeof e.icon!="string"||!/^[a-z][a-z0-9-]{0,63}$/.test(e.icon))&&l("MANIFEST_INVALID","icon is invalid","icon"),c=e.icon);let u;M(e,"tone")&&((typeof e.tone!="string"||!Wn.includes(e.tone))&&l("MANIFEST_INVALID","tone is invalid","tone"),u=e.tone),e.entry!=="ui/index.html"&&l("MANIFEST_INVALID","entry path is not fixed","entry","fixed-value");let y;M(e,"entryHash")&&(y=j("entryHash",()=>gi(e.entryHash)));let g;M(e,"initialState")&&(g=j("initialState",()=>ss(e.initialState)));let f;M(e,"usage")&&(e.usage!=="card"&&e.usage!=="window"&&l("MANIFEST_INVALID","usage is invalid","usage"),f=e.usage);let _;M(e,"detailPanel")&&(typeof e.detailPanel!="boolean"&&l("MANIFEST_INVALID","detailPanel is invalid","detailPanel"),_=e.detailPanel);let O;if(M(e,"displayModes")){((f??Ye)!==Ye||!Array.isArray(e.displayModes)||e.displayModes.length===0)&&l("MANIFEST_INVALID","displayModes are only valid for window Apps","displayModes");let p=new Set(["inline","floating","focused"]);(new Set(e.displayModes).size!==e.displayModes.length||e.displayModes.some(A=>typeof A!="string"||!p.has(A)))&&l("MANIFEST_INVALID","displayModes are invalid","displayModes"),O=e.displayModes;}(f??Ye)===Ye&&_!==void 0&&l("MANIFEST_INVALID","detailPanel is card-only","detailPanel");let P=n.mode??"local";P!=="local"&&P!=="installed"&&P!=="published"&&l("MANIFEST_INVALID","manifest mode is invalid"),P!=="local"&&y===void 0&&l("MANIFEST_INVALID","installed manifests require entryHash","entryHash","required-when-installed"),P!=="local"&&g!==void 0&&g.hash===void 0&&l("MANIFEST_INVALID","installed manifests require initialState.hash","initialState.hash","required-when-installed"),(!Array.isArray(e.surfaces)||e.surfaces.length===0)&&l("MANIFEST_INVALID","surfaces are invalid","surfaces"),e.surfaces.length>2&&G("surfaces exceed the v2 limit","surfaces","too-many-items");let v=[],k=new Set;for(let p of e.surfaces)(typeof p!="string"||!Xn.includes(p))&&l("MANIFEST_INVALID","surface is unsupported","surfaces"),k.has(p)&&l("MANIFEST_INVALID","surfaces contain a duplicate","surfaces","duplicate-item"),k.add(p),v.push(p);V(e.size)||l("MANIFEST_INVALID","size must be an object","size"),j("size",()=>z(e.size,["height"]));let F=j("size",()=>se(e.size,"height",1));F>720&&G("size.height exceeds the v2 limit","size.height","too-large");let B=j("stateProjection",()=>ot(e.stateProjection)),D=e.summaryProjection===void 0?void 0:j("summaryProjection",()=>ot(e.summaryProjection));D!==void 0&&D.allow.some(p=>!B.allow.includes(p))&&l("MANIFEST_INVALID","summaryProjection must be a subset of stateProjection.allow","summaryProjection");let E=j("dataPaths",()=>Zr(e.dataPaths,B.allow));Array.isArray(e.actions)||l("MANIFEST_INVALID","actions must be an array","actions"),e.actions.length>32&&G("actions exceed the v2 limit","actions","too-many-items");let H=[],N=new Set;for(let[p,A]of e.actions.entries()){let m=`actions[${p}]`,U=j(m,()=>is(A));if(N.has(U.actionId)&&l("MANIFEST_INVALID","actions contain a duplicate actionId",`${m}.actionId`,"duplicate-item"),U.backend.type==="core"&&U.backend.handler==="state.set"){U.mutation||l("MANIFEST_INVALID","state.set actions must be mutations",`${m}.mutation`);for(let T of Object.keys(U.inputSchema.properties))B.allow.includes(T)||l("MANIFEST_INVALID","state.set input paths must be projection-allowed",`${m}.inputSchema.properties`);}N.add(U.actionId),H.push(U);}return {manifestVersion:2,pluginId:r,definitionId:o,version:s,name:a,description:d,...c===void 0?{}:{icon:c},...u===void 0?{}:{tone:u},entry:"ui/index.html",...y===void 0?{}:{entryHash:y},...t===void 0?{}:{runtime:t},...i===void 0?{}:{csp:i},...g===void 0?{}:{initialState:g},...f===void 0?{}:{usage:f},..._===void 0?{}:{detailPanel:_},...O===void 0?{}:{displayModes:O},surfaces:v,size:{height:F},stateProjection:B,...D===void 0?{}:{summaryProjection:D},...E===void 0?{}:{dataPaths:E},actions:H}}function hi(e){V(e)||l("MANIFEST_INVALID","_meta must be an object");let n=JSON.stringify(e);(n===void 0||Buffer.byteLength(n,"utf8")>Cr)&&G("_meta exceeds the 4 KiB limit",void 0,"meta-too-large");}function ps(e){let n={},t={};for(let o of e.actions){n[o.actionId]={capabilities:[o.capability],inputKeys:Object.keys(o.inputSchema.properties??{}),...o.dataInputs===void 0?{}:{dataInputs:o.dataInputs},resultProjection:o.resultProjection,...o.confirmation===void 0?{}:{confirmation:o.confirmation},...o.content===void 0?{}:{content:o.content},...o.backend.type!=="skill"||o.backend.env===void 0?{}:{env:o.backend.env}};let s=o.backend.type==="skill"||o.backend.type==="core"&&o.backend.handler==="state.set";t[o.actionId]={actionId:o.actionId,mutation:o.mutation,backend:o.backend,launchPolicy:s?"allowed":"denied",...s?{}:{denialCode:"EXEC_DENIED"}};}let i={id:e.definitionId,version:e.version,renderer:"sandbox-html",...e.usage===void 0?{}:{usage:e.usage},...e.detailPanel===void 0?{}:{detailPanel:e.detailPanel},...e.displayModes===void 0?{}:{displayModes:e.displayModes},surfaces:e.surfaces,stateProjection:e.stateProjection,...e.summaryProjection===void 0?{}:{summaryProjection:e.summaryProjection},...e.dataPaths===void 0?{}:{dataPaths:e.dataPaths},actions:n},r={entry:{path:"ui/index.html",...e.entryHash===void 0?{}:{hash:e.entryHash}},...e.initialState===void 0?{}:{initialState:e.initialState}};return {manifest:e,definition:i,handlers:t,resources:r}}function at(e,n,t,i,r,o){if(typeof e=="string"){let s=r.length>0&&o.some(a=>xe(r.join("."),a));return (e.length>4096||Tn(e,false,false,s))&&oe("state contains an unsafe string"),e}if(e===null||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)||oe("state contains a non-finite number"),e;(e===void 0||typeof e!="object"||typeof e=="function"||typeof e=="bigint")&&oe("state contains a non-JSON value"),t>8&&oe("state is too deep"),n.has(e)&&oe("state contains a cycle"),n.add(e);try{let s;if(Array.isArray(e))e.length>128&&oe("state array is too long"),s=e.map(d=>at(d,n,t+1,65536,r,o));else {V(e)||oe("state contains a non-plain object");let d={};for(let[c,u]of Object.entries(e))(c.length>4096||!An.test(c)||Ve(c))&&(c.length>4096&&oe("state key is too long"),oe("state contains a reserved or invalid key")),d[c]=at(u,n,t+1,65536,[...r,c],o);s=d;}let a=JSON.stringify(s);return (a===void 0||Buffer.byteLength(a,"utf8")>i)&&oe("state subtree is too large"),s}finally{n.delete(e);}}function dt(e,n=[]){V(e)||oe("initial state must be a JSON object");let t=at(e,new Set,0,65536,[],n);return (t===null||Array.isArray(t)||typeof t!="object")&&oe(),t}function ls(e,n={}){_n(e),V(e)||l("MANIFEST_INVALID"),z(e,Sr),e.manifestVersion!==1&&l("MANIFEST_INVALID");let t=nt(le(e,"pluginId")),i=nt(le(e,"definitionId")),r=se(e,"version",1),o=se(e,"primitiveSet",1),s=n.supportedPrimitiveSet??mr;(!Number.isSafeInteger(s)||s<1)&&l("MANIFEST_INVALID"),o>s&&l("PRIMITIVE_SET_UNSUPPORTED"),V(e.activation)||l("MANIFEST_INVALID"),z(e.activation,["kind","language"]),e.activation.kind!=="fenced-code"&&l("MANIFEST_INVALID");let a=nt(le(e.activation,"language")),d=Wr(e.schema),c=Yr(e.layout,d);return {manifestVersion:1,pluginId:t,definitionId:i,version:r,primitiveSet:o,activation:{kind:"fenced-code",language:a},schema:d,layout:c}}function us(e,n={}){return V(e)||l("MANIFEST_INVALID"),Object.hasOwn(e,"lineage")&&l("MANIFEST_INVALID","lineage is only allowed in product bundle indexes"),e.manifestVersion===2?ds(e,n):ls(e,n)}function Qe(e,n={}){try{return us(e,n)}catch(t){if(t instanceof ee)throw t;return l("MANIFEST_INVALID")}}function en(e,n={}){let t=Qe(e,n);return t.manifestVersion===2?ps(t):t}var mr,hr,_r,Ii,Tr,Er,Dr,Nr,ai,Pr,br,Mr,Sr,Lr,Or,Rr,Ur,Cr,kr,wr,xr,jr,Vr,vr,Fr,Br,Hr,zr,Gr,ee,pt=R(()=>{I();Kt();me();qn();qt();Qn();si();Me();mr=1,hr=/^[a-z][a-zA-Z0-9]*(\.[a-zA-Z0-9]+)+$/,_r=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,Ii=/^[A-Za-z][A-Za-z0-9_-]{0,63}$/,Tr=/<\/?[A-Za-z][^>]*>/,Er=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,Dr=/^(?:https?|file|ftp|ws|wss):\/\//i,Nr=/^\s*(?:javascript|data):/i,ai=/data:[^,\s]*,/i,Pr=/(?:https?|file|ftp|ws|wss):\/\//i,br=/javascript:/i,Mr=/(?:^[\s]*|[\s"'(=])(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)(?=[^\s"'<>])[^\s"'<>]*/,Sr=["manifestVersion","pluginId","definitionId","version","primitiveSet","activation","schema","layout"],Lr=["manifestVersion","pluginId","definitionId","version","name","description","entry","surfaces","size","stateProjection","actions"],Or=["_meta","icon","tone","entryHash","runtime","csp","initialState","usage","detailPanel","displayModes","summaryProjection","dataPaths","focusedAiDataPaths"],Rr=["actionId","capability","mutation","inputSchema","resultProjection","backend"],Ur=["confirmation","dataInputs","content","_meta"],Cr=4*1024,kr=["type","handler"],wr=["type","command"],xr=["env"],jr=["type","entry"],Vr=["path"],vr=["hash"],Fr=/^[0-9a-f]{64}$/,Br=/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/,Hr=/[\r\n]/,zr=16,Gr=["card-shell","meta-banner","heading","labeled-text","step-flow","text-list"],ee=class e extends Error{constructor(t,i=t,r,o){super(i);this.code=t;this.path=r;this.rule=o;}code;path;rule;name="UiPluginValidationError";withPathPrefix(t){return new e(this.code,this.message,Ze(t,this.path),this.rule)}};});function Pi(e){return typeof e=="string"&&e.length<=ys&&fs.test(e)}function S(e,n,t,i,r){throw new fe(e,{path:n,rule:t,...i===void 0?{}:{message:i},...r===void 0?{}:{file:r}})}function X(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;try{let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}catch{return false}}function $(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function ce(e){let n=`_meta["${Ne}"]`;return e===void 0||e===""?n:e.startsWith("[")?`${n}${e}`:`${n}.${e}`}function ms(e){return e.toLowerCase().replace(/_/g,"-")}function hs(e){if(e===void 0||e==="")return "";let n=/^([^.[]+)(.*)$/.exec(e);if(!n)return ce(e);let[,t,i]=n;switch(t){case "pluginId":return `name${i}`;case "name":return `display_name${i}`;case "description":return `description${i}`;case "_meta":return `_meta${i}`;case "version":return ce("definitionVersion");case "definitionId":return ce("definitionId");default:return ce(`${t}${i}`)}}function bi(e,n,t){return {path:t(e.path),rule:e.rule??ms(e.code),...e.message!==e.code?{message:e.message}:{},file:n}}function Mi(e){return JSON.parse(JSON.stringify(e))}function ft(e,n,t=0,i=new Set){if(typeof e=="string"){e.length>4096&&S("LIMIT_EXCEEDED",n,"string-too-long"),(As.test(e)||Is.test(e)||gs.test(e))&&S("UNSAFE_VALUE",n,"unsafe-value");return}if(!(e===null||typeof e=="boolean")){if(typeof e=="number"){Number.isFinite(e)||S("MANIFEST_INVALID",n,"non-finite-number");return}typeof e!="object"&&S("MANIFEST_INVALID",n,"non-json-value"),t>8&&S("LIMIT_EXCEEDED",n,"too-deep"),i.has(e)&&S("MANIFEST_INVALID",n,"cycle"),i.add(e);try{if(Array.isArray(e)){e.length>128&&S("LIMIT_EXCEEDED",n,"array-too-long"),e.forEach((r,o)=>ft(r,`${n}[${o}]`,t+1,i));return}X(e)||S("MANIFEST_INVALID",n,"non-plain-object");for(let[r,o]of Object.entries(e))ft(o,n===""?r:`${n}.${r}`,t+1,i);}finally{i.delete(e);}}}function ae(e,n){return (typeof e!="string"||e.length===0)&&S("MANIFEST_INVALID",n,"string"),e}function ze(e,n){return X(e)||S("MANIFEST_INVALID",n,"object"),e}function _s(e,n){Array.isArray(e)||S("MANIFEST_INVALID",n,"array"),e.forEach((t,i)=>ae(t,`${n}[${i}]`));}function Ts(e,n){typeof e!="boolean"&&S("MANIFEST_INVALID",n,"boolean");}function nn(e,n,t,i){for(let r of Object.keys(e))!t.includes(r)&&!i.includes(r)&&S("MANIFEST_INVALID",`${n}.${r}`,"unknown-key");for(let r of t)$(e,r)||S("MANIFEST_INVALID",`${n}.${r}`,"missing-key");}function Es(e,n){switch(ft(n,e),e){case "long_description":case "homepage":case "documentation":case "support":case "icon":case "license":ae(n,e);return;case "author":{let t=ze(n,e);nn(t,e,["name"],["email","url"]);for(let i of Object.keys(t))ae(t[i],`${e}.${i}`);return}case "repository":{let t=ze(n,e);nn(t,e,[],["type","url"]);for(let i of Object.keys(t))ae(t[i],`${e}.${i}`);return}case "icons":{Array.isArray(n)||S("MANIFEST_INVALID",e,"array"),n.forEach((t,i)=>{let r=`${e}[${i}]`,o=ze(t,r);nn(o,r,["src","size"],["theme"]),ae(o.src,`${r}.src`),ae(o.size,`${r}.size`),$(o,"theme")&&ae(o.theme,`${r}.theme`);});return}case "screenshots":case "keywords":case "privacy_policies":_s(n,e);return;case "tools":{Array.isArray(n)||S("MANIFEST_INVALID",e,"array"),n.forEach((t,i)=>{let r=`${e}[${i}]`,o=ze(t,r);nn(o,r,["name"],["description"]),ae(o.name,`${r}.name`),$(o,"description")&&ae(o.description,`${r}.description`);});return}case "prompts":{Array.isArray(n)||S("MANIFEST_INVALID",e,"array"),n.forEach((t,i)=>{let r=`${e}[${i}]`,o=ze(t,r);nn(o,r,["name","text"],["description","arguments"]),ae(o.name,`${r}.name`),ae(o.text,`${r}.text`);});return}case "tools_generated":case "prompts_generated":Ts(n,e);return;case "localization":case "compatibility":case "user_config":ze(n,e);return;default:S("MANIFEST_INVALID",e,"unknown-key");}}function En(e){return typeof e=="string"&&pe.test(e)?e:void 0}function Si(e){return Number.isSafeInteger(e)&&e>=1?e:void 0}function Ds(e){let n=En(e.name);if(n===void 0)return;let t=e._meta,i=X(t)?t[Ne]:void 0,r=X(i)?i:{},o=$(r,"definitionId")?En(r.definitionId):n,s=$(r,"definitionVersion")?Si(r.definitionVersion):1;return {pluginId:n,...o===void 0?{}:{definitionId:o},...s===void 0?{}:{definitionVersion:s}}}function Ns(e){let n=En(e.pluginId);if(n===void 0)return;let t=En(e.definitionId),i=Si(e.version);return {pluginId:n,...t===void 0?{}:{definitionId:t},...i===void 0?{}:{definitionVersion:i}}}function gt(e){try{let n=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(e));if(!X(n))return !1;let t=n._meta;return X(t)&&$(t,Ne)}catch{return false}}function Ps(e,n){if(e===Oe)return n.builtinOnly===true;let t=n._meta,i=X(t)?t[Ne]:void 0;return X(i)&&i.builtinOnly===true}function bs(e,n){$(e,"server")&&S("MANIFEST_INVALID","server","server-unsupported","phase 1 runs CrewX-owned Apps only");for(let a of Object.keys(e))At.includes(a)||S("MANIFEST_INVALID",a,"unknown-key");for(let a of It)$(e,a)||S("MANIFEST_INVALID",a,"missing-key");e.manifest_version!==lt&&S("MANIFEST_INVALID","manifest_version","unsupported-version",`manifest_version must be "${lt}"`),Pi(e.version)||S("MANIFEST_INVALID","version","semver","version must be a semver.org version such as 0.1.0");let t=e._meta;X(t)||S("MANIFEST_INVALID","_meta","object"),$(t,Ne)||S("MANIFEST_INVALID",ce(),"missing-key");let i=t[Ne];X(i)||S("MANIFEST_INVALID",ce(),"object");for(let a of Object.keys(i))ut.includes(a)||Ni.includes(a)||S("MANIFEST_INVALID",ce(a),"unknown-key");for(let a of ut)a==="actions"&&n!==void 0||$(i,a)||S("MANIFEST_INVALID",ce(a),"missing-key");if(n!==void 0&&$(i,"actions")&&S("MANIFEST_INVALID",ce("actions"),"two-truths",`actions are declared in both ${J} and ${W}; a server.ts App keeps them in the tools file only`),Ms(i.actions),$(i,"definitionVersion")){let a=i.definitionVersion;(!Number.isSafeInteger(a)||a<1)&&S("MANIFEST_INVALID",ce("definitionVersion"),"positive-integer");}let r={};for(let a of Di)$(e,a)&&(Es(a,e[a]),r[a]=Mi(e[a]));let o={};for(let[a,d]of Object.entries(t))a!==Ne&&(o[a]=d);let s={manifestVersion:2,pluginId:e.name,definitionId:$(i,"definitionId")?i.definitionId:e.name,version:$(i,"definitionVersion")?i.definitionVersion:1,name:e.display_name,description:e.description};for(let[a,d]of Object.entries(i))a==="definitionId"||a==="definitionVersion"||(s[a]=d);return n!==void 0&&(s.actions=n.map(a=>({...a,backend:{type:"skill",entry:ve}}))),Object.keys(o).length>0&&(s._meta=o),{v2Input:s,...Object.keys(o).length>0?{vendorMeta:o}:{},passthrough:r}}function Ms(e){Array.isArray(e)&&e.forEach((n,t)=>{let i=X(n)?n.backend:void 0;X(i)&&$(i,"entry")&&S("MANIFEST_INVALID",ce(`actions[${t}].backend.entry`),"entry-not-authorable",`an action in ${J} cannot name an entry; a server.ts App declares its actions in ${W}`);});}function Ss(e,n,t){X(e)||S("MANIFEST_INVALID","","not-object","manifest.json must be a JSON object",J);let i;try{i=bs(e,t);}catch(s){throw s instanceof fe?new fe(s.code,{...s.reason,file:J}):s}let r;try{let s=Qe(i.v2Input,{mode:n.mode??"local"});s.manifestVersion!==2&&S("MANIFEST_INVALID","","v2-required"),r=s;}catch(s){throw s instanceof ee?new fe(s.code,bi(s,J,hs)):s}let o=e.tools;if(Array.isArray(o)){let s=new Set(r.actions.map(a=>a.actionId));o.forEach((a,d)=>{let c=a.name;if(!s.has(c))throw new fe("MANIFEST_INVALID",{path:`tools[${d}].name`,rule:"tool-not-action",message:"every tools[].name must be an action id",file:J})});}return {file:J,manifest:r,v2Input:i.v2Input,releaseVersion:e.version,...Object.keys(i.passthrough).length>0?{mcpb:i.passthrough}:{}}}function Ls(e,n){try{let t=Qe(e,{mode:n.mode??"local"});if(t.manifestVersion!==2)throw new fe("MANIFEST_INVALID",{path:"manifestVersion",rule:"v2-required",message:"a workspace App requires manifestVersion 2",file:Oe});return {file:Oe,manifest:t,v2Input:e}}catch(t){throw t instanceof ee?new fe(t.code,bi(t,Oe,i=>i??"")):t}}function yt(e){return re(en(e).definition)}function Ti(e){let{entryHash:n,initialState:t,...i}=e,r={...i};return t!==void 0&&(r.initialState={path:t.path}),Mi(r)}function Os(e,n){let t=Ti(e),i=Ti(n);return [...new Set([...Object.keys(t),...Object.keys(i)])].sort().filter(o=>Z(t[o]??null)!==Z(i[o]??null))}function Rs(e,n){return e.entryHash!==void 0&&n.entryHash!==void 0&&e.entryHash!==n.entryHash||e.initialState?.hash!==void 0&&n.initialState?.hash!==void 0&&e.initialState.hash!==n.initialState.hash}function Us(e,n){let t=Os(e,n),i=Rs(e,n),r="";try{let o=yt(e),s=yt(n);i=i||o!==s,r=` (definition hash ${o.slice(0,12)} vs ${s.slice(0,12)})`;}catch{i=true;}t.length===0&&!i||S("MANIFEST_DUAL_MISMATCH","","dual-manifest-mismatch",`${J} and ${Oe} normalize to different definitions${r}`+(t.length>0?`; differing fields: ${t.join(", ")}`:""));}function ue(e,n,t="MANIFEST_INVALID",i){return {code:t,reason:{path:e,rule:n,...i===void 0?{}:{message:i},file:W},files:[]}}function Ei(e){return {...ue("","tools-needs-manifest-json","MANIFEST_INVALID",`${W} is read with ${J} only`),files:e}}function Cs(e,n){if(e.byteLength>n)return {failure:ue("","file-too-large","LIMIT_EXCEEDED")};let t;try{t=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(e));}catch{return {failure:ue("","invalid-json")}}if(!X(t))return {failure:ue("","not-object","MANIFEST_INVALID",`${W} must be a JSON object`)};for(let r of Object.keys(t))if(r!=="schemaVersion"&&r!=="actions")return {failure:ue(r,"unknown-key")};for(let r of ["schemaVersion","actions"])if(!$(t,r))return {failure:ue(r,"missing-key")};if(t.schemaVersion!==1)return {failure:ue("schemaVersion","unsupported-version","MANIFEST_INVALID",`schemaVersion must be ${1}`)};let i=t.actions;if(!Array.isArray(i))return {failure:ue("actions","array")};for(let[r,o]of i.entries()){if(!X(o))return {failure:ue(`actions[${r}]`,"object")};if($(o,"backend"))return {failure:ue(`actions[${r}].backend`,"tools-backend","MANIFEST_INVALID",`an action in ${W} cannot carry a backend`)}}return {actions:i}}function ks(e,n){let t=n.maxBytes??262144,i=[],r=new TextDecoder("utf-8",{fatal:true});for(let o of ne){let s=e[o];if(s===void 0)continue;if(s.byteLength>t)return {parsed:i,failure:{code:"LIMIT_EXCEEDED",reason:{path:"",rule:"file-too-large",file:o},files:[o]}};let a;try{a=JSON.parse(r.decode(s));}catch{return {parsed:i,failure:{code:"MANIFEST_INVALID",reason:{path:"",rule:"invalid-json",file:o},files:[o]}}}if(!X(a))return {parsed:i,failure:{code:"MANIFEST_INVALID",reason:{path:"",rule:"not-object",message:`${o} must be a JSON object`,file:o},files:[o]}};i.push({file:o,raw:a});}return {parsed:i}}function mt(e,n={}){let{parsed:t,failure:i}=ks(e,n),r=ne.filter(f=>e[f]!==void 0);if(i!==void 0)return {ok:false,rejection:i,parseFailure:true,builtinOnly:false};let o=e[W],s=o===void 0?void 0:Cs(o,n.maxBytes??262144);if(t.length===0)return {ok:false,rejection:s===void 0?{code:"MANIFEST_INVALID",reason:{path:"",rule:"no-manifest-file",message:"neither manifest.json nor ui-plugin.json is present"},files:[]}:Ei(r),parseFailure:true,builtinOnly:false};let a=t[0],d=a.file===J?Ds(a.raw):Ns(a.raw),c=t.some(f=>Ps(f.file,f.raw)),u;if(s!==void 0){let f=t.some(_=>_.file===J)?s.failure:Ei(r);if(f!==void 0)return {ok:false,rejection:f,parseFailure:false,...d===void 0?{}:{identity:d},builtinOnly:c};u=s.actions;}let y=[];try{for(let f of t)y.push(f.file===J?Ss(f.raw,n,u):Ls(f.raw,n));y.length===2&&Us(y[0].manifest,y[1].manifest);}catch(f){if(f instanceof fe)return {ok:false,rejection:{code:f.code,reason:f.reason,files:f.code==="MANIFEST_DUAL_MISMATCH"?[...ne]:f.reason.file===void 0||f.reason.file===W?r:[f.reason.file]},parseFailure:false,...d===void 0?{}:{identity:d},builtinOnly:c};throw f}let g=y[0];return {ok:true,...g,identity:d??{pluginId:g.manifest.pluginId},files:r}}var J,Oe,ne,lt,Ne,At,It,Di,ut,Ni,fs,ys,As,Is,gs,fe,ht=R(()=>{I();Se();me();Qn();Me();pt();J="manifest.json",Oe="ui-plugin.json",ne=[J,Oe],lt="0.3",Ne="dev.crewx",At=Object.freeze(["manifest_version","name","display_name","version","description","long_description","author","repository","homepage","documentation","support","icon","icons","screenshots","localization","server","tools","tools_generated","prompts","prompts_generated","keywords","license","privacy_policies","compatibility","user_config","_meta"]),It=Object.freeze(["manifest_version","name","display_name","version","description","_meta"]),Di=Object.freeze(At.filter(e=>e!=="server"&&!It.includes(e))),ut=Object.freeze(["entry","surfaces","size","stateProjection","actions"]),Ni=Object.freeze(["definitionId","definitionVersion","icon","tone","entryHash","runtime","initialState","usage","detailPanel","displayModes","summaryProjection","dataPaths","focusedAiDataPaths","csp"]),fs=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,ys=256,As=/<\/?[A-Za-z][^>]*>/,Is=/^\s*javascript:/i,gs=/data:[^,\s]*,/i;fe=class extends Error{constructor(t,i){super(`${t}: ${i.path||"<file>"} (${i.rule})`);this.code=t;this.reason=i;}code;reason};});var Li=R(()=>{I();Xt();ht();pt();Me();});function Nn(e,n=e){throw new be(e,n)}var be,Pn=R(()=>{I();be=class extends Error{constructor(t,i=t){super(i);this.code=t;}code;name="McpAppContractError"};});var Oi=R(()=>{I();});var Ri=R(()=>{I();Se();me();Pn();Oi();});function Ui(e,n){return ws.add(e),n!==void 0&&xs.set(e,n),e}var ws,xs,bn=R(()=>{I();ws=new WeakSet,xs=new WeakMap;});function rn(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function _t(e,n,t=[]){let i=new Set([...n,...t]),r=Object.keys(e);return n.every(o=>Object.hasOwn(e,o))&&r.every(o=>i.has(o))}function wi(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;for(let n of Object.values(e))wi(n);return Object.freeze(e)}function K(e){throw new ye("LINEAGE_INVALID",e)}function zs(e){throw new ye("LINEAGE_STALE",e)}function xi(e){if(!rn(e)||!_t(e,vs,Fs)||!rn(e.actions))return K("Lineage definition shape is invalid");for(let n of Object.values(e.actions))if(!rn(n)||!_t(n,Bs,Hs))return K("Lineage action definition shape is invalid");return e}function Gs(e){if(!rn(e)||!_t(e,js,Vs))return K("Lineage entry shape is invalid");if(!Number.isSafeInteger(e.version)||e.version<1||typeof e.hash!="string"||!Ci.test(e.hash))return K("Lineage entry identity is invalid");if(e.sourceHash!==void 0&&(typeof e.sourceHash!="string"||!Ci.test(e.sourceHash)))return K("Lineage source hash is invalid");if(e.compat!==void 0&&e.compat!=="break")return K("Lineage compatibility marker is invalid");let n=xi(e.definition);if(n.version!==e.version)return K("Lineage version does not match its definition");if(e.sourceHash!==void 0&&n.sourceHash!==e.sourceHash)return K("Lineage source hash does not match its definition");let t;try{t=re(n),he({...n,hash:e.hash});}catch{return K("Lineage definition is invalid")}return t!==e.hash?K("Lineage definition hash does not match"):wi({version:e.version,hash:e.hash,definition:n,...e.sourceHash===void 0?{}:{sourceHash:e.sourceHash},...e.compat===void 0?{}:{compat:e.compat}})}function ki(e){return e.stateProjection?.allow??[]}function $s(e,n){let t=[],i=new Set(ki(n));ki(e).some(a=>!i.has(a))&&t.push("S1_STATE_PROJECTION");let r=new Set(n.dataPaths??[]);(e.dataPaths??[]).some(a=>!r.has(a))&&t.push("S2_DATA_PATHS");for(let[a,d]of Object.entries(e.actions)){let c=n.actions[a];if(c&&(d.confirmation??"native")==="native"&&(c.confirmation??"native")!=="native"){t.push("S3_ACTION_CONFIRMATION");break}}Object.keys(e.legacy?.agentAccess??{}).some(a=>!Object.hasOwn(n.actions,a))&&t.push("S4_LEGACY_AGENT_ACTIONS");let s=e.summaryProjection?.allow;if(s!==void 0){let a=new Set(n.summaryProjection?.allow??[]);s.some(d=>!a.has(d))&&t.push("S5_SUMMARY_PROJECTION");}return t}function Js(e,n){return Z(e)===Z(n)}function Tt(e,n){if(!Array.isArray(e)||e.length===0)return K("Definition lineage is missing");if(!rn(n)||typeof n.hash!="string")return K("Current definition is invalid");let t,i;try{let{hash:a,...d}=n;i=xi(d),t={...i,hash:a},he(t);}catch{return K("Current definition is invalid")}let r=e.map(Gs),o=r[0].definition.id;if(r.some(a=>a.definition.id!==o))return K("Lineage definition ids do not match");if(r.some((a,d)=>d>0&&a.version<=r[d-1].version))return K("Lineage generations are not in increasing version order");if(r.some((a,d)=>r.findIndex(c=>c.hash===a.hash)!==d))return K("Lineage contains a duplicate hash");let s=r[r.length-1];if(s.version!==t.version||s.hash!==t.hash||s.definition.id!==t.id||!Js(s.definition,i))return zs("The last lineage generation does not match the current package");if(t.legacy!==void 0){let a=new Set(Object.keys(t.actions)),d=new Set;for(let u of r)if(u.sourceHash===void 0)for(let y of Object.keys(u.definition.actions))a.has(y)&&d.add(y);let c=Object.keys(t.legacy.agentAccess??{});if(c.length!==d.size||c.some(u=>!d.has(u))){let u="S4_LEGACY_AGENT_ACCESS_COMPLETE";throw new ye("LINEAGE_INVALID",`Lineage compatibility failed: ${u}`,[u])}}for(let a=0;a<r.length-1;a+=1){if(r.slice(a,-1).some(u=>u.compat==="break"))continue;let c=$s(r[a].definition,t);if(c.length>0)throw new ye("LINEAGE_INVALID",`Lineage compatibility failed: ${c.join(", ")}`,c)}return Object.freeze({entries:Object.freeze(r),current:t})}var ye,Ci,js,Vs,vs,Fs,Bs,Hs,Et=R(()=>{I();Se();me();ye=class extends Error{constructor(t,i=t,r=[]){super(i);this.code=t;this.violations=r;}code;violations;name="UiDefinitionLineageError"},Ci=/^[0-9a-f]{64}$/,js=["version","hash","definition"],Vs=["sourceHash","compat"],vs=["id","version","actions"],Fs=["sourceHash","usage","detailPanel","displayModes","renderer","surfaces","stateProjection","dataPaths","summaryProjection","legacy"],Bs=["capabilities"],Hs=["inputKeys","dataInputs","confirmation","resultProjection","content","env"];});var ji,Vi,vi=R(()=>{I();ji=["crewx_app_terminal_connect","crewx_app_html_viewer_open"],Vi=["crewx_listWorkspaces","crewx_queryAgent","crewx_executeAgent","crewx_getTaskResult","crewx_listTasks","crewx_listAgents","callBrowser","openTab","listTabs","closeTab"];});var Fi=R(()=>{I();Se();bn();});function Dt(e,n=0){try{let t=ge(e,n);return t.type!==void 0&&t.type!=="object"&&Nn("TOOL_INVALID","MCP App inputSchema must describe an object"),t}catch(t){if(t instanceof be)throw t;Nn("TOOL_INVALID","MCP App inputSchema must be projection-safe JSON");}}function Bi(e){if(e.length===0)return Dt({type:"object",properties:{},additionalProperties:false});let n=e.map(i=>i.actionId),t=new Map;for(let i of e)t.set(i.actionId,Dt(i.inputSchema));return Dt(Ks(n,t),Xs)}function Ks(e,n){let t=e.map(i=>({type:"object",properties:{actionId:{type:"string",const:i},input:n.get(i)??{type:"object"}},required:["actionId","input"],additionalProperties:false}));return Object.freeze({type:"object",oneOf:Object.freeze(t),properties:Object.freeze({actionId:Object.freeze({type:"string",enum:Object.freeze([...e])}),input:Object.freeze({type:"object"})}),required:Object.freeze(["actionId","input"]),additionalProperties:false})}var sn,Xs,Nt=R(()=>{I();Ri();Se();me();bn();Pn();Et();vi();Fi();sn=8*1024*1024,new Set(ji),new Set(Vi),Xs=4;});function Hi(){return Object.freeze({[Pt]:{candidates:new Map,assetCatalogs:new Map}})}function Ys(e){if(e===null||typeof e!="object"||!(Pt in e))throw new TypeError("scanCache must be created by createWorkspaceAppScanCache");return e[Pt]}function zi(e,n){let t=Ys(e),i=t.rootIdentity;return i!==void 0&&(i.dev!==n.dev||i.ino!==n.ino||i.realPath!==n.realPath)&&(t.candidates.clear(),t.assetCatalogs.clear(),t.lastCandidateScanUnchanged=void 0,t.lastCandidateKeys=void 0,t.scanStartedAtNs=void 0,t.lastAssetCatalogsUnchanged=void 0,t.lastSnapshot=void 0,t.lastSnapshotBuildInputs=void 0),t.rootIdentity=n,t}var Pt,Gi=R(()=>{I();Pt=Symbol("crewx.workspace-app-scan-cache.state");});function te(e){let n=typeof e=="object"&&e!==null&&"code"in e?String(e.code):"";return n==="ENOENT"?new h("NOT_FOUND"):n==="ELOOP"?new h("PATH_ESCAPED"):n==="EFBIG"||n==="EOVERFLOW"?new h("LIMIT_EXCEEDED"):n==="EACCES"||n==="EPERM"||n==="ENOTDIR"?new h("READ_DENIED"):new h("READ_DENIED")}function ea(e){if(typeof e!="string"||e.length===0||!path.isAbsolute(e))throw new h("READ_DENIED")}function bt(e){if(typeof e!="string"||path.isAbsolute(e)||/[\\\u0000]/.test(e))throw new h("PATH_ESCAPED");if(e==="")return [];let n=e.split("/");if(n.some(t=>t.length===0||t==="."||t===".."))throw new h("PATH_ESCAPED");return n}function On(e,n){let t=path.relative(e,n);return t===""||t!==".."&&!t.startsWith(`..${path.sep}`)&&!path.isAbsolute(t)}function $e(e){return {dev:e.dev,ino:e.ino,size:e.size,mtimeNs:e.mtimeNs,ctimeNs:e.ctimeNs}}function Ot(e,n){return e.dev===n.dev&&e.ino===n.ino}function Rt(e,n){return Ot(e,n)&&e.size===n.size&&e.mtimeNs===n.mtimeNs&&e.ctimeNs===n.ctimeNs}async function Mn(e){ea(e);let n,t;try{n=await promises.realpath(e),t=await promises.stat(n,{bigint:!0});}catch(i){throw te(i)}if(!t.isDirectory())throw new h("READ_DENIED");return {realRoot:n,identity:$e(t)}}async function Wi(e,n,t){if(t.length<2||t[0]!=="apps"&&t[0]!=="skills")return;let i,r;try{if(i=path.resolve(e,t[0],t[1]),r=await promises.realpath(i),!(await promises.stat(r,{bigint:!0})).isDirectory())throw new h("READ_DENIED")}catch(o){throw o instanceof h?o:te(o)}if(!On(n,r))throw new h("PATH_ESCAPED");return r}async function Sn(e,n,t,i){let r,o,s;try{r=await promises.lstat(e,{bigint:!0}),o=await promises.realpath(e),s=await promises.stat(o,{bigint:!0});}catch(a){throw te(a)}if(!On(n,o)||t!==void 0&&!On(t,o))throw new h("PATH_ESCAPED");if(!r.isFile()||!s.isFile())throw new h("READ_DENIED");if(!Ot(i,r)||!Ot(i,s)||i.dev!==s.dev)throw new h("PATH_ESCAPED")}async function Ge(e,n){let t,i;try{t=await promises.realpath(e),i=await promises.stat(t,{bigint:!0});}catch{throw new h("PATH_ESCAPED")}if(t!==n.realRoot||!Rt(n.identity,$e(i)))throw new h("PATH_ESCAPED")}function na(e){return e.isSymbolicLink()?{name:e.name,kind:"symlink"}:e.isDirectory()?{name:e.name,kind:"directory"}:e.isFile()?{name:e.name,kind:"file"}:{name:e.name,kind:"other"}}var h,Lt,Qs,Ji,Je,Rn,Xi,Ki,Ct=R(()=>{I();h=class extends Error{constructor(t){super(t);this.code=t;}code;name="AppDiscoveryFsError"},Lt=fs$1.constants.O_NOFOLLOW,Qs=fs$1.constants.O_NONBLOCK,Ji=fs$1.constants.O_RDONLY|(Lt??0)|(Qs??0);Je=class{async getRootIdentity(n){let t=await Mn(n);return await Ge(n,t),{dev:t.identity.dev,ino:t.identity.ino,realPath:t.realRoot}}async listDirectory(n,t){let i=bt(t),r=await Mn(n),o=path.resolve(n,...i),s,a;try{s=await promises.realpath(o),a=await promises.stat(s,{bigint:!0});}catch(d){let c=te(d);if(c.code==="NOT_FOUND")return [];throw c}if(!On(r.realRoot,s)||!a.isDirectory())throw new h("PATH_ESCAPED");try{let d=await promises.readdir(s,{withFileTypes:!0,encoding:"utf8"});return await Ge(n,r),d.map(na)}catch(d){let c=te(d);if(c.code==="NOT_FOUND")return [];throw c}}async readdir(n,t){return this.listDirectory(n,t)}async readDirectory(n,t){return this.listDirectory(n,t)}async readVerifiedFile(n,t,i){if(!Number.isSafeInteger(i)||i<0)throw new h("READ_DENIED");if(Lt===void 0)throw new h("UNSUPPORTED");let r=bt(t),o=await Mn(n),s=path.resolve(n,...r),a=path.relative(n,s);if(a===".."||a.startsWith(`..${path.sep}`)||path.isAbsolute(a))throw new h("PATH_ESCAPED");let d;try{d=await promises.open(s,Ji);}catch(c){throw te(c)}try{let c;try{let _=await d.stat({bigint:!0});c=$e(_);}catch(_){throw te(_)}if(c.size>BigInt(i))throw new h("LIMIT_EXCEEDED");if(c.size>BigInt(Number.MAX_SAFE_INTEGER))throw new h("LIMIT_EXCEEDED");await Ge(n,o);let u=await Wi(n,o.realRoot,r);await Sn(s,o.realRoot,u,c);let y=new Uint8Array(new ArrayBuffer(Number(c.size))),g=0;for(;g<y.byteLength;){let _;try{_=(await d.read(y,g,y.byteLength-g,g)).bytesRead;}catch(O){throw te(O)}if(_<=0)throw new h("IDENTITY_CHANGED");g+=_;}let f;try{let _=await d.stat({bigint:!0});f=$e(_);}catch(_){throw te(_)}if(!Rt(c,f))throw new h("IDENTITY_CHANGED");return await Sn(s,o.realRoot,u,f),await Ge(n,o),new Uint8Array(y)}finally{await d.close().catch(()=>{});}}async fingerprintVerifiedFile(n,t,i){if(!Number.isSafeInteger(i)||i<0)throw new h("READ_DENIED");if(Lt===void 0)throw new h("UNSUPPORTED");let r=bt(t),o=await Mn(n),s=path.resolve(n,...r),a=path.relative(n,s);if(a===".."||a.startsWith(`..${path.sep}`)||path.isAbsolute(a))throw new h("PATH_ESCAPED");let d;try{d=await promises.open(s,Ji);}catch(c){throw te(c)}try{let c;try{let g=await d.stat({bigint:!0});c=$e(g);}catch(g){throw te(g)}if(c.size>BigInt(i)||c.size>BigInt(Number.MAX_SAFE_INTEGER))throw new h("LIMIT_EXCEEDED");await Ge(n,o);let u=await Wi(n,o.realRoot,r);await Sn(s,o.realRoot,u,c);let y;try{let g=await d.stat({bigint:!0});y=$e(g);}catch(g){throw te(g)}if(!Rt(c,y))throw new h("IDENTITY_CHANGED");return await Sn(s,o.realRoot,u,y),await Ge(n,o),{...y,candidateRealPath:u??o.realRoot}}catch(c){throw c instanceof h?c:te(c)}finally{await d.close().catch(()=>{});}}async readFileVerified(n,t,i){return this.readVerifiedFile(n,t,i)}},Rn=new Je,Xi=Rn,Ki=Je;});function pn(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;try{let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}catch{return false}}function qi(e){return typeof e=="string"&&pe.test(e)?e:void 0}function ca(e){return e.length>0&&e!=="."&&e!==".."&&!/[\\/\u0000]/.test(e)}function Ue(e,n){let t=new TextEncoder().encode(e),i=new TextEncoder().encode(n),r=Math.min(t.byteLength,i.byteLength);for(let o=0;o<r;o+=1){let s=t[o]-i[o];if(s!==0)return s}return t.byteLength-i.byteLength}function da(e){if(typeof e=="string")return {name:e,kind:"directory"};if(e===null||typeof e!="object")return null;let n=e;if(typeof n.name!="string")return null;if(n.kind==="file"||n.kind==="directory"||n.kind==="symlink"||n.kind==="other")return {name:n.name,kind:n.kind};if(n.type==="file"||n.type==="directory"||n.type==="symlink"||n.type==="other")return {name:n.name,kind:n.type};let t=n.isDirectory;if(typeof t=="function"&&t.call(e))return {name:n.name,kind:"directory"};let i=n.isSymbolicLink;if(typeof i=="function"&&i.call(e))return {name:n.name,kind:"symlink"};let r=n.isFile;return typeof r=="function"&&r.call(e)?{name:n.name,kind:"file"}:{name:n.name,kind:"other"}}function pa(e){if(e instanceof Uint8Array)return new Uint8Array(e);if(e instanceof ArrayBuffer)return new Uint8Array(e.slice(0));if(Array.isArray(e)&&e.every(n=>Number.isInteger(n)&&n>=0&&n<=255))return Uint8Array.from(e);throw new TypeError("filesystem port returned an invalid byte array")}function la(e){return sa.decode(e)}function ua(e){return JSON.parse(la(e))}function Zi(e){switch(e){case "ENOENT":return "NOT_FOUND";case "ELOOP":case "EXDEV":return "PATH_ESCAPED";case "EFBIG":case "EOVERFLOW":return "LIMIT_EXCEEDED";case "EACCES":case "EPERM":case "ENOTDIR":return "READ_DENIED";default:return e}}function fa(e){if(e instanceof h)return Zi(e.code);if(e!==null&&typeof e=="object"&&"code"in e){let n=e.code;if(typeof n=="string")return Zi(n)}}function Te(e,n){let t=n();return Number.isFinite(t)&&Number.isFinite(e)&&t-e<=5e3}function ya(e){if(typeof e.readVerifiedFile=="function")return e.readVerifiedFile;if(typeof e.readFileVerified=="function")return e.readFileVerified}function Aa(e){if(typeof e.listDirectory=="function")return e.listDirectory;if(typeof e.readDirectory=="function")return e.readDirectory;if(typeof e.readdir=="function")return e.readdir}async function Qi(e,n,t,i){let r=ya(e);if(!r)throw new h("READ_DENIED");return pa(await r.call(e,n,t,i))}async function xt(e,n,t){let i=Aa(e);if(!i)throw new h("READ_DENIED");let r=await i.call(e,n,t);if(!Array.isArray(r))throw new h("READ_DENIED");return r.map(da).filter(o=>o!==null)}function Ia(e,n,t,i){return Object.freeze({code:e,...{},source:n,relativePath:t})}function ga(e){if(!pn(e))throw new TypeError("productBundle.reservedIds must be an object with appIds and definitionIds arrays");try{let n=Reflect.ownKeys(e);if(n.length!==2||!n.includes("appIds")||!n.includes("definitionIds"))throw new TypeError("productBundle.reservedIds must contain exactly appIds and definitionIds");let t=(i,r)=>{if(!Array.isArray(i))throw new TypeError("productBundle.reservedIds."+r+" must be an array");let o=[];for(let s=0;s<i.length;s+=1){let a=i[s];if(typeof a!="string"||a.length===0)throw new TypeError("productBundle.reservedIds."+r+" must contain non-empty strings");o.push(a);}return Object.freeze([...new Set(o)].sort(Ue))};return Object.freeze({appIds:t(e.appIds,"appIds"),definitionIds:t(e.definitionIds,"definitionIds")})}catch(n){throw n instanceof TypeError?n:new TypeError("productBundle.reservedIds must be a valid reservation object")}}function ma(e,n){return e.appIds.length===n.appIds.length&&e.appIds.every((t,i)=>t===n.appIds[i])&&e.definitionIds.length===n.definitionIds.length&&e.definitionIds.every((t,i)=>t===n.definitionIds[i])}function ln(e){return Object.freeze({appIds:Object.freeze([...new Set(e.map(n=>n.appId))].sort(Ue)),definitionIds:Object.freeze([...new Set(e.map(n=>n.definition.id))].sort(Ue))})}function Un(e,n){let t=Object.keys(e).sort(Ue),i=[...n].sort(Ue);return t.length===i.length&&t.every((r,o)=>r===i[o])}function eo(e){if(typeof e!="string"||e.length===0||e.startsWith("/")||/[\\\u0000]/.test(e))return;let n=e.split("/");if(!n.some(t=>t.length===0||t==="."||t===".."))return n}function ha(e){let n;try{n=ua(e);}catch{return}if(!pn(n)||!Un(n,["version","packages"])||n.version!==1||!Array.isArray(n.packages)||n.packages.length>jt)return;let t=new Set,i=new Set,r=0,o=[];for(let s of n.packages){if(!pn(s))return;let a=["packageDir","appId","definition","files"],d=Object.hasOwn(s,"lineage"),c=Object.hasOwn(s,"launcher"),u=[...d?["lineage"]:[],...c?["launcher"]:[]];if(!Un(s,[...a,...u])||c&&s.launcher!==false)return;let y=eo(s.packageDir),g=qi(s.appId);if(!y||y.length!==2||y[0]!=="apps"||!ca(y[1])||!g||t.has(s.packageDir)||!pn(s.definition)||!Un(s.definition,["id","version","hash"]))return;let f=qi(s.definition.id),_=s.definition.version,O=s.definition.hash;if(!f||!Number.isSafeInteger(_)||_<1||typeof O!="string"||!wt.test(O)||!Array.isArray(s.files)||s.files.length<2||s.files.length>Vt)return;let P=new Set,v=[];for(let k of s.files){if(!pn(k)||!Un(k,["path","sha256"]))return;let F=eo(k.path);if(!F||typeof k.sha256!="string"||!wt.test(k.sha256))return;let B=F.join("/"),D=`${s.packageDir}/${B}`;if(P.has(B)||i.has(D))return;P.add(B),i.add(D),v.push(Object.freeze({path:B,sha256:k.sha256}));}if(!ne.some(k=>P.has(k))||!P.has("ui/index.html")||(r+=v.length,r>ia))return;t.add(s.packageDir),o.push(Object.freeze({packageDir:s.packageDir,...c?{launcher:false}:{},appId:g,definition:Object.freeze({id:f,version:_,hash:O}),lineage:Array.isArray(s.lineage)?s.lineage:[],files:Object.freeze(v.sort((k,F)=>Ue(k.path,F.path)))}));}return Object.freeze({version:1,packages:Object.freeze(o)})}function Re(e){let n=fa(e);return n==="PATH_ESCAPED"||n==="IDENTITY_CHANGED"||n==="TOCTOU"?"PATH_ESCAPED":n==="LIMIT_EXCEEDED"?"LIMIT_EXCEEDED":"BUNDLE_INTEGRITY"}async function _a(e,n,t,i,r){let o=[],s=async(a,d)=>{if(!Te(i,r))throw new h("LIMIT_EXCEEDED");if(d>2)throw new h("LIMIT_EXCEEDED");let c=await xt(e,n,a);for(let u of c){if(typeof u.name!="string"||u.name.length===0||u.name==="."||u.name===".."||/[\\/\u0000]/.test(u.name))throw new h("PATH_ESCAPED");let y=`${a}/${u.name}`;if(u.kind==="file"){if(o.push(y.slice(t.length+1)),o.length>Vt)throw new h("LIMIT_EXCEEDED")}else if(u.kind==="directory")await s(y,d+1);else throw u.kind==="symlink"?new h("PATH_ESCAPED"):new h("READ_DENIED")}};return await s(t,0),o.sort(Ue)}function Ta(e){return ne.includes(e)?262144:e==="ui/index.html"?sn:e==="ui/state.json"?65536:e.startsWith("ui/assets/")?ra:oa}async function no(e,n,t,i){if(e===void 0)return {packages:[],diagnostics:[],incomplete:false,reservedIds:aa};let r=ga(e.reservedIds),o=[],s=(p,A,m)=>Ia(p,"bundled",A),a=(p=[],A=false,m)=>({...m===void 0?{}:{indexHash:m},packages:p,diagnostics:o,incomplete:A,reservedIds:r});if(typeof e.root!="string"||e.root.length===0||typeof e.expectedIndexHash!="string"||!wt.test(e.expectedIndexHash))return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a();let d;try{d=await Qi(n,e.root,"bundle-index.json",ta);}catch(p){return o.push(s(Re(p),"bundle-index.json")),a()}let c=crypto.createHash("sha256").update(d).digest("hex");if(c!==e.expectedIndexHash)return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a();let u=ha(d);if(u===void 0)return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a();if(!ma(ln(u.packages),r))return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a([],false,c);if(!Te(t,i))return o.push(s("LIMIT_EXCEEDED","bundle-index.json")),a(u.packages.map(p=>({indexEntry:p,failureCode:"LIMIT_EXCEEDED"})),true,c);let y;try{y=await xt(n,e.root,"");}catch(p){return o.push(s(Re(p),"bundle-index.json")),a(u.packages.map(A=>({indexEntry:A,failureCode:Re(p)})),false,c)}if(!Te(t,i))return o.push(s("LIMIT_EXCEEDED","bundle-index.json")),a(u.packages.map(p=>({indexEntry:p,failureCode:"LIMIT_EXCEEDED"})),true,c);let g=y.find(p=>p.name==="bundle-index.json"&&p.kind==="file"),f=y.find(p=>p.name==="apps"&&p.kind==="directory"),_=p=>u.packages.map(A=>({indexEntry:A,failureCode:p}));if(!g)return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a(_("BUNDLE_INTEGRITY"),false,c);let O=y.filter(p=>p.name!=="bundle-index.json"&&p.name!=="apps");if(O.length>0){let p=O.some(A=>A.kind==="symlink")?"PATH_ESCAPED":"BUNDLE_INTEGRITY";return o.push(s(p,"bundle-index.json")),a(_("BUNDLE_INTEGRITY"),false,c)}if(y.some(p=>p.name==="apps"&&p.kind!=="directory"))return o.push(s("PATH_ESCAPED","apps")),a(_("PATH_ESCAPED"),false,c);let P=[];if(f)try{P=await xt(n,e.root,"apps");}catch(p){return o.push(s(Re(p),"apps")),a(_(Re(p)),false,c)}if(!Te(t,i)||P.length>jt)return o.push(s("LIMIT_EXCEEDED","apps")),a(_("LIMIT_EXCEEDED"),true,c);let v=new Map(u.packages.map(p=>[p.packageDir.slice(5),p])),k=P.filter(p=>!v.has(p.name));for(let p of k)o.push(s(p.kind==="symlink"?"PATH_ESCAPED":"BUNDLE_INTEGRITY",`apps/${p.name}`));if(k.length>0){let p=k.some(A=>A.kind==="symlink")?"PATH_ESCAPED":"BUNDLE_INTEGRITY";return a(_(p),false,c)}let F=new Set,B=new Map,D=new Map;for(let p of u.packages){let A=B.get(p.appId)??[];A.push(p),B.set(p.appId,A);let m=`${p.definition.id}\0${String(p.definition.version)}`,U=D.get(m)??[];U.push(p),D.set(m,U);}for(let p of [...B.values(),...D.values()])if(p.length>1)for(let A of p)F.add(A);let E=[],H=d.byteLength,N=false;for(let p of u.packages){if(!Te(t,i)){N=true,E.push({indexEntry:p,failureCode:"LIMIT_EXCEEDED"});continue}let A;try{let T=p.lineage[p.lineage.length-1];if(!T)throw new ye("LINEAGE_INVALID","Definition lineage is missing");if(T.definition.id!==p.definition.id||T.version!==p.definition.version||T.hash!==p.definition.hash)throw new ye("LINEAGE_STALE","Last lineage generation does not match bundle identity");A=Tt(p.lineage,{...T.definition,hash:T.hash}).entries;}catch(T){let Q=T instanceof ye?T.code:"LINEAGE_INVALID";o.push(s(Q,p.packageDir)),E.push({indexEntry:p,failureCode:Q});continue}let m=P.find(T=>T.name===p.packageDir.slice(5));if(!f||!m){E.push({indexEntry:p,failureCode:"BUNDLE_INTEGRITY"});continue}if(m.kind!=="directory"){E.push({indexEntry:p,failureCode:m.kind==="symlink"?"PATH_ESCAPED":"BUNDLE_INTEGRITY"});continue}let U;try{let T=await _a(n,e.root,p.packageDir,t,i);if(!Te(t,i)){N=!0,E.push({indexEntry:p,failureCode:"LIMIT_EXCEEDED"});continue}let Q=p.files.map(Ae=>Ae.path);if(T.length!==Q.length||T.some((Ae,Ie)=>Ae!==Q[Ie])){E.push({indexEntry:p,failureCode:"BUNDLE_INTEGRITY"});continue}U=new Map;let x;for(let Ae of p.files){if(!Te(t,i)){x="LIMIT_EXCEEDED",N=!0;break}if(H>=kt){x="LIMIT_EXCEEDED";break}let Ie;try{Ie=await Qi(n,e.root,`${p.packageDir}/${Ae.path}`,Ta(Ae.path));}catch(Ro){x=Re(Ro);break}if(!Te(t,i)){x="LIMIT_EXCEEDED",N=!0;break}if(H+Ie.byteLength>kt){H=kt,x="LIMIT_EXCEEDED";break}if(H+=Ie.byteLength,crypto.createHash("sha256").update(Ie).digest("hex")!==Ae.sha256){x="BUNDLE_INTEGRITY";break}U.set(Ae.path,Ie);}if(x!==void 0){E.push({indexEntry:p,failureCode:x});continue}}catch(T){Te(t,i)||(N=true),E.push({indexEntry:p,failureCode:Re(T)});continue}E.push({indexEntry:p,lineage:A,files:U,...F.has(p)?{failureCode:"DUPLICATE_ID"}:{}});}return a(E,N,c)}var ta,jt,Vt,ia,oa,ra,kt,wt,sa,aa,vt=R(()=>{I();Et();Me();ht();Nt();Ct();ta=256*1024,jt=64,Vt=128,ia=jt*Vt,oa=2*1024*1024,ra=8*1024*1024,kt=32*1024*1024,wt=/^[0-9a-f]{64}$/,sa=new TextDecoder("utf-8",{fatal:true}),aa=Object.freeze({appIds:Object.freeze([]),definitionIds:Object.freeze([])});});var No={};Co(No,{AppDiscoveryFsError:()=>h,LOCAL_APP_TOOL_PREFIX:()=>Na,MCP_APP_WORKSPACE_TOOL_PREFIX:()=>Pa,NodeAppDiscoveryFs:()=>Je,NodeAppDiscoveryFsAdapter:()=>Ki,WORKSPACE_APP_TOOL_PREFIX:()=>We,createWorkspaceAppScanCache:()=>Hi,defaultAppDiscoveryFs:()=>Rn,defaultNodeAppDiscoveryFs:()=>Xi,deriveWorkspaceAppToolName:()=>ba,deriveWorkspaceAppToolNames:()=>Ht,discoverWorkspaceAppCandidates:()=>nc,discoverWorkspaceApps:()=>zt,isWorkspacePackage:()=>Da,productAppBundleReservations:()=>ln,scanWorkspaceApps:()=>tc});function Da(e,n){let t=n.split("/");return t.length===2&&t[0]===e&&/^[A-Za-z][A-Za-z0-9._-]{0,127}$/.test(t[1])}function Ht(e){if(typeof e!="string"||!pe.test(e))throw new TypeError("pluginId must be a safe UI plugin identifier");let n=`${We}${e}`.length+7<=128?e:`hash_${crypto.createHash("sha256").update(e,"utf8").digest("hex")}`;return {read:`${We}${n}_read`,action:`${We}${n}_action`}}function ba(e,n="read"){let t=Ht(e);return n==="read"?t.read:t.action}function io(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;try{let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}catch{return false}}function Sa(e,n){return n.length===0||n==="."||n===".."||/[\\/\u0000]/.test(n)?e==="skills"?"skills":"apps":`${e==="skills"?"skills":"apps"}/${n}`}function La(e){return e.length>0&&e!=="."&&e!==".."&&!/[\\/\u0000]/.test(e)}function un(e,n){let t=new TextEncoder().encode(e),i=new TextEncoder().encode(n),r=Math.min(t.byteLength,i.byteLength);for(let o=0;o<r;o+=1){let s=t[o]-i[o];if(s!==0)return s}return t.byteLength-i.byteLength}function Ao(e){if(typeof e=="string")return {name:e,kind:"directory"};if(e===null||typeof e!="object")return null;let n=e;if(typeof n.name!="string")return null;if(n.kind==="file"||n.kind==="directory"||n.kind==="symlink"||n.kind==="other")return {name:n.name,kind:n.kind};if(n.type==="file"||n.type==="directory"||n.type==="symlink"||n.type==="other")return {name:n.name,kind:n.type};let t=n.isDirectory;if(typeof t=="function"&&t.call(e))return {name:n.name,kind:"directory"};let i=n.isSymbolicLink;if(typeof i=="function"&&i.call(e))return {name:n.name,kind:"symlink"};let r=n.isFile;return typeof r=="function"&&r.call(e)?{name:n.name,kind:"file"}:{name:n.name,kind:"other"}}function Oa(e){if(e instanceof Uint8Array)return new Uint8Array(e);if(e instanceof ArrayBuffer)return new Uint8Array(e.slice(0));if(Array.isArray(e)&&e.every(n=>Number.isInteger(n)&&n>=0&&n<=255))return Uint8Array.from(e);throw new TypeError("filesystem port returned an invalid byte array")}function Io(e){return Ma.decode(e)}function Ra(e){return JSON.parse(Io(e))}function Ua(e){if(e===void 0)return;let n=e.definitionId!==void 0&&e.definitionVersion!==void 0?`${e.definitionId}\0${String(e.definitionVersion)}`:void 0;return {pluginId:e.pluginId,...n===void 0?{}:{definitionKey:n}}}function kn(e,n,t,i,r){let o={code:e,...i===void 0?{}:{pluginId:i},source:n,relativePath:t,...r?.reason===void 0?{}:{reason:Object.freeze({...r.reason})},...r?.files===void 0?{}:{files:Object.freeze([...r.files])}};return Object.freeze(o)}function oo(e){switch(e){case "ENOENT":return "NOT_FOUND";case "ELOOP":case "EXDEV":return "PATH_ESCAPED";case "EFBIG":case "EOVERFLOW":return "LIMIT_EXCEEDED";case "EACCES":case "EPERM":case "ENOTDIR":return "READ_DENIED";default:return e}}function q(e){if(e instanceof h)return oo(e.code);if(e!==null&&typeof e=="object"&&"code"in e){let n=e.code;if(typeof n=="string")return oo(n)}}function ke(e,n){return e==="PATH_ESCAPED"||e==="IDENTITY_CHANGED"||e==="TOCTOU"?"PATH_ESCAPED":e==="LIMIT_EXCEEDED"?"LIMIT_EXCEEDED":n==="manifest"&&e==="NOT_FOUND"?"MANIFEST_MISSING":n==="entry"?"ENTRY_INVALID":n==="initial"?"INITIAL_STATE_INVALID":"MANIFEST_INVALID"}function ro(e){return {reason:e.reason,...e.code==="MANIFEST_DUAL_MISMATCH"?{files:e.files}:{}}}function so(e){return e==="MANIFEST_DUAL_MISMATCH"?e:go(e)}function Ca(e){return go(e.code)}function go(e){switch(e){case "MANIFEST_INVALID":case "PRIMITIVE_UNKNOWN":case "PRIMITIVE_SET_UNSUPPORTED":case "SCHEMA_TYPE_UNSUPPORTED":case "TOKEN_INVALID":case "UNSAFE_VALUE":return "MANIFEST_INVALID";case "LIMIT_EXCEEDED":return "LIMIT_EXCEEDED";case "INITIAL_STATE_INVALID":return "INITIAL_STATE_INVALID";default:return mo("UiPluginValidationError",e)}}function mo(e,n){throw new Error(`Unmapped ${e} code: ${String(n)}`)}function ka(e){switch(e){case "APP_ID_INVALID":case "TOOL_ID_INVALID":case "RESOURCE_URI_INVALID":case "TOOL_INVALID":case "SERIALIZATION_INVALID":return "MANIFEST_INVALID";case "APP_ID_CONFLICT":case "TOOL_ID_CONFLICT":return "DUPLICATE_ID";case "RESOURCE_NOT_FOUND":case "HTML_INVALID":return "ENTRY_INVALID";case "STATE_INVALID":case "STATE_PROJECTION_INVALID":case "BUTTON_INVALID":return "INITIAL_STATE_INVALID";default:return mo("McpAppContractError",e)}}function Ee(e,n){let t=n();return Number.isFinite(t)&&Number.isFinite(e)&&t-e<=5e3}function wa(e){return {pluginId:e.appId,definitionKey:`${e.definition.id}\0${String(e.definition.version)}`}}function xa(e,n){let t=n.get("package.json");if(t!==void 0)try{let r=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(t));if(io(r)){let o=r.bin,s=typeof o=="string"?o:io(o)?Object.values(o).find(a=>typeof a=="string"):void 0;for(let a of [s,r.main]){if(typeof a!="string")continue;let d=ja(a);if(d&&n.has(d))return d}}}catch{}return [`${e.slice(e.lastIndexOf("/")+1)}.js`,"index.js","main.js"].find(r=>n.has(r))}function ja(e){if(e.startsWith("/")||e.includes("\\")||e.includes("\0"))return;let n=e.split("/").filter(t=>t!==".");if(!(n.length===0||n.some(t=>t.length===0||t==="..")))return n.join("/")}function Va(){return globalThis.performance?.now()??Date.now()}function Ce(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;for(let n of Object.values(e))Ce(n);return Object.freeze(e)}function ao(e){return Object.freeze(Array.from(e))}async function wn(e,n,t,i){if(n.pinnedFiles!==void 0){let a=n.pinnedFiles.get(t);if(a===void 0)throw new h("NOT_FOUND");if(a.byteLength>i)throw new h("LIMIT_EXCEEDED");return new Uint8Array(a)}let r=`${n.relativePath}/${t}`,o=n.scanContext,s=e.fingerprintVerifiedFile;if(o===void 0||!o.cacheable||typeof s!="function")return uo(e,n.root,r,i);try{let a=o.priorFingerprints.get(r)??await s.call(e,o.workspaceRoot,r,i);o.candidateRealPath=a.candidateRealPath;let d=await uo(e,n.root,r,i),c=await s.call(e,o.workspaceRoot,r,i);return o.candidateRealPath=c.candidateRealPath,_o(a,c)&&c.size===BigInt(d.byteLength)&&!To(c,o.scanStartedAtNs)?o.files.set(r,{relativePath:r,byteLimit:i,fingerprint:c}):o.cacheable=!1,d}catch(a){let d=ne.includes(t)&&q(a)==="NOT_FOUND"&&o.directoryListings.some(u=>u.relativePath===n.relativePath&&!xn(u.key,t)),c=t===W&&q(a)==="NOT_FOUND"&&va(o.directoryListings,n.relativePath);throw !d&&!c&&(o.cacheable=false),a}}function va(e,n){let t=e.find(r=>r.relativePath===n);if(t===void 0)return false;if(!xn(t.key,"dist"))return true;let i=e.find(r=>r.relativePath===`${n}/dist`);return i!==void 0&&!xn(i.key,"tools.json")}function ho(e,n){return JSON.stringify([e.realPath,n.source,n.relativePath])}async function Ba(e,n,t,i,r,o,s,a){let d=e.fingerprintVerifiedFile,c=ho(t,i),u=r.candidates.get(c),y=i.relativePath,g;try{g=await lo(e,n,y);}catch(N){if(q(N)!=="NOT_FOUND")throw N}let f=g===void 0?void 0:{relativePath:y,key:g};if(f!==void 0&&(i.source==="apps"||i.source==="skills")&&!ne.some(N=>xn(f.key,N)))return Ee(s,a)?u!==void 0&&u.candidate===void 0&&u.candidateRealPath===void 0&&u.files.length===0&&u.directoryListings.length===1&&u.directoryListings[0]?.relativePath===f.relativePath&&u.directoryListings[0]?.key===f.key&&(i.source==="apps"?u.diagnostic?.code==="MANIFEST_MISSING":u.diagnostic===void 0)&&typeof d=="function"?{memo:u}:typeof d!="function"?{}:{context:{state:r,cacheKey:c,workspaceRoot:n,scanStartedAtNs:o,directoryListings:Object.freeze([f]),priorFingerprints:new Map,files:new Map,cacheable:true}}:{timeLimitReached:true};let _=async N=>{if(N==="")return f;let p=`${i.relativePath}${N}`;try{let A=await lo(e,n,p);return A===void 0?void 0:{relativePath:p,key:A}}catch(A){if(q(A)==="NOT_FOUND")return;throw A}},O=await Promise.all(co.map(_)),P=await Promise.all(Fa.map(_));if(!Ee(s,a))return {timeLimitReached:true};let v=typeof d=="function"&&O.every(N=>N!==void 0),k=O.filter(N=>N!==void 0),F=[...k,...P.filter(N=>N!==void 0)],B=new Map,D=u!==void 0&&v,E;if(u!==void 0&&typeof d=="function"){let N=await Promise.all(u.files.map(async p=>{if(!Ee(s,a))return {kind:"time",file:p};try{let A=await d.call(e,n,p.relativePath,p.byteLimit);return {kind:"fingerprint",file:p,current:A}}catch(A){return q(A)==="NOT_FOUND"?{kind:"missing",file:p}:{kind:"error",file:p,error:A}}}));if(N.some(p=>p.kind==="time"))return {timeLimitReached:true};for(let p of N){if(p.kind==="error")throw p.error;if(p.kind==="missing"){D=false;continue}if(p.kind!=="fingerprint")continue;let{file:A,current:m}=p;B.set(A.relativePath,m),E??=m.candidateRealPath,(m.candidateRealPath!==u.candidateRealPath||!_o(m,A.fingerprint)||To(m,o))&&(D=false);}}let H=u!==void 0&&u.directoryListings.length===F.length&&u.directoryListings.every((N,p)=>N.relativePath===F[p]?.relativePath&&N.key===F[p]?.key);return u!==void 0&&v&&H&&D&&E===u.candidateRealPath?{memo:u}:!v||k.length!==co.length?{}:{context:{state:r,cacheKey:c,workspaceRoot:n,scanStartedAtNs:o,directoryListings:Object.freeze(F),priorFingerprints:B,files:new Map,...E===void 0?{}:{candidateRealPath:E},cacheable:true}}}function xn(e,n){try{let t=JSON.parse(e);return Array.isArray(t)&&t.some(i=>Array.isArray(i)&&i[0]===n)}catch{return true}}async function lo(e,n,t){let i=Eo(e);if(typeof i!="function")return;let r=await i.call(e,n,t);if(!Array.isArray(r)||r.some(s=>typeof s=="string"))return;let o=r.map(Ao);if(!o.some(s=>s===null))return JSON.stringify(o.slice().sort((s,a)=>un(s.name,a.name)||un(s.kind,a.kind)).map(s=>[s.name,s.kind]))}function _o(e,n){return e.dev===n.dev&&e.ino===n.ino&&e.size===n.size&&e.mtimeNs===n.mtimeNs&&e.ctimeNs===n.ctimeNs}function To(e,n){let t=e.mtimeNs-n;return t>=-po&&t<=po}function Ft(e){let n=e.scanContext,t=e.source==="skills"&&e.candidate===void 0&&e.diagnostic===void 0&&n?.files.size===0,i=e.source==="apps"&&e.candidate===void 0&&e.diagnostic?.code==="MANIFEST_MISSING"&&n?.files.size===0,r=t||i;if(n===void 0||!n.cacheable||n.candidateRealPath===void 0&&!r||n.files.size===0&&!r)return;let o=Object.freeze({...!r&&n.candidateRealPath!==void 0?{candidateRealPath:n.candidateRealPath}:{},directoryListings:n.directoryListings,files:Object.freeze([...n.files.values()]),...e.candidate===void 0?{}:{candidate:e.candidate},...e.diagnostic===void 0?{}:{diagnostic:e.diagnostic},...e.identity===void 0?{}:{identity:e.identity},...e.provenance===void 0?{}:{provenance:e.provenance}});n.state.candidates.set(n.cacheKey,o);}function Ha(e,n,t){let i=crypto.createHash("sha256"),r=new TextEncoder().encode(Z(e)),o=s=>{let a=new Uint8Array(8);new DataView(a.buffer).setBigUint64(0,BigInt(s)),i.update(a);};return o(r.byteLength),i.update(r),o(n.byteLength),i.update(n),o(t.byteLength),i.update(t),i.digest("hex")}function za(e,n){let t={...e.definition,sourceHash:n},i;try{i=re(t);}catch(o){throw o instanceof b&&o.code==="INPUT_INVALID"?new ee("MANIFEST_INVALID","normalized definition is invalid"):o}let r={...t,hash:i};try{he(r);}catch{throw new ee("MANIFEST_INVALID","normalized definition is invalid")}return r}function Ga(e){return e.actions.some(n=>n.backend.type==="core"&&n.backend.handler!=="state.set")}function $a(e){if(typeof e.readVerifiedFile=="function")return e.readVerifiedFile;if(typeof e.readFileVerified=="function")return e.readFileVerified}function Eo(e){if(typeof e.listDirectory=="function")return e.listDirectory;if(typeof e.readDirectory=="function")return e.readDirectory;if(typeof e.readdir=="function")return e.readdir}async function uo(e,n,t,i){let r=$a(e);if(!r)throw new h("READ_DENIED");return Oa(await r.call(e,n,t,i))}async function Ja(e,n,t){let i=Eo(e);if(!i)throw new h("READ_DENIED");let r=await i.call(e,n,t);if(!Array.isArray(r))throw new h("READ_DENIED");return r.map(Ao).filter(o=>o!==null)}function Wa(e){let n=[];for(let t of [e.reserved,e.builtin])t&&n.push(t);return e.builtins&&"listMcpApps"in e.builtins?n.push(fo(e.builtins)):e.builtins&&n.push(e.builtins),e.builtinCatalog&&n.push(fo(e.builtinCatalog)),n.push({...e.reservedAppIds===void 0?{}:{appIds:e.reservedAppIds},...e.reservedDefinitionIds===void 0?{}:{definitionIds:e.reservedDefinitionIds},...e.reservedToolNames===void 0?{}:{toolNames:e.reservedToolNames}}),n}function fo(e){let n=[],t=[],i=[];for(let r of e.listMcpApps())typeof r.appId=="string"&&n.push(r.appId),r.definition&&typeof r.definition.id=="string"&&t.push(r.definition.id);for(let r of e.listMcpAppTools())typeof r.name=="string"&&i.push(r.name);return {appIds:n,definitionIds:t,toolNames:i}}function De(e,n){e.diagnostic||(e.diagnostic=kn(n,e.source,e.relativePath,e.identity?.pluginId));}function Xa(e){let n=new Map;for(let i of e){let r=i.identity?.pluginId;if(r===void 0)continue;let o=n.get(r)??[];o.push(i),n.set(r,o);}for(let i of n.values()){if(i.length<2)continue;let r=i.filter(s=>s.provenance!==void 0);if(r.length>0){for(let s of i)s.provenance===void 0&&De(s,"RESERVED_ID");if(r.length>1)for(let s of r)De(s,"DUPLICATE_ID");continue}let o=i.filter(s=>s.source==="apps");if(o.length>1){for(let s of o)De(s,"DUPLICATE_ID");for(let s of i.filter(a=>a.source==="skills"))De(s,"DUPLICATE_ID");}else for(let s of i.filter(a=>a.source==="skills"))De(s,"DUPLICATE_ID");}let t=new Map;for(let i of e){if(i.diagnostic?.code==="RESERVED_ID")continue;let r=i.identity?.definitionKey;if(r===void 0)continue;let o=t.get(r)??[];o.push(i),t.set(r,o);}for(let i of t.values())if(i.length>1)for(let r of i)De(r,"DUPLICATE_ID");}function Ka(e,n,t){let i=new Set,r=new Set,o=new Set,s=new Set(t.appIds),a=new Set(t.definitionIds);for(let d of Wa(n)){for(let c of d.appIds??[])typeof c=="string"&&i.add(c);for(let c of d.definitionIds??[])typeof c=="string"&&r.add(c);for(let c of d.toolNames??[])typeof c=="string"&&o.add(c);}for(let d of e){let c=d.candidate;if(!c)continue;if(i.has(c.pluginId)||r.has(c.definitionId)){De(d,"RESERVED_ID");continue}if(d.provenance===void 0&&(s.has(c.pluginId)||a.has(c.definitionId))){De(d,"RESERVED_ID");continue}[c.toolNames.read,c.toolNames.action].filter(y=>y!==void 0).some(y=>o.has(y))&&De(d,"DUPLICATE_ID");}}function Ya(e){return [...e].sort((n,t)=>{let i=to.indexOf(n.source)-to.indexOf(t.source);return i!==0?i:un(n.relativePath,t.relativePath)})}function L(e,n,t){e.diagnostic=kn(n,e.source,e.relativePath,e.identity?.pluginId,t);}async function yo(e,n,t){let i=mt(t,{mode:"local"});if(!i.ok&&i.parseFailure){L(n,so(i.rejection.code),ro(i.rejection));return}let r=Ua(i.identity);if(n.bundleIdentity===void 0)n.identity=r;else if(r?.pluginId!==n.bundleIdentity.appId||r.definitionKey!==`${n.bundleIdentity.definitionId}\0${String(n.bundleIdentity.version)}`){L(n,"BUNDLE_INTEGRITY");return}if(!i.ok&&i.builtinOnly){L(n,"RESERVED_ID");return}if(!i.ok){L(n,so(i.rejection.code),ro(i.rejection));return}let o=i.manifest,s={pluginId:o.pluginId,definitionKey:`${o.definitionId}\0${String(o.version)}`};if(n.bundleIdentity===void 0&&(n.identity=s),o.actions.length>0)try{Bi(o.actions.map(T=>({actionId:T.actionId,inputSchema:T.inputSchema})));}catch(T){if(T instanceof be){L(n,ka(T.code));return}throw T}let a;try{a=await wn(e,n,"ui/index.html",sn);}catch(T){L(n,ke(q(T),"entry"));return}if(a.byteLength>sn){L(n,"LIMIT_EXCEEDED");return}let d;try{d=Io(a);}catch{L(n,"ENTRY_INVALID");return}if(a.byteLength===0||d.length===0){L(n,"ENTRY_INVALID");return}let c=crypto.createHash("sha256").update(a).digest("hex");if(o.entryHash!==void 0&&o.entryHash!==c){L(n,"ENTRY_INVALID");return}let u={},y,g;if(o.initialState!==void 0){try{y=await wn(e,n,"ui/state.json",65536);}catch(T){L(n,ke(q(T),"initial"));return}if(y.byteLength>65536){L(n,"LIMIT_EXCEEDED");return}try{let T=Ra(y),Q=o.dataPaths??[],x=dt(T,Q);u=ge(x,0,Q),je(u);}catch{L(n,"INITIAL_STATE_INVALID");return}if(g=crypto.createHash("sha256").update(y).digest("hex"),o.initialState.hash!==void 0&&o.initialState.hash!==g){L(n,"INITIAL_STATE_INVALID");return}}let f={...o,entryHash:c,...o.initialState===void 0?{}:{initialState:{path:"ui/state.json",hash:g}}},_=en(f),O=Ha(f,a,y??new Uint8Array),P;try{P=za(_,O);}catch(T){if(T instanceof ee){L(n,Ca(T));return}throw T}let v;if(n.bundleLineage!==void 0){let T=n.bundleLineage[n.bundleLineage.length-1];if(!T){L(n,"LINEAGE_INVALID");return}let{legacy:Q,...x}=T.definition,{hash:Ae,...Ie}=P;if(Z(x)!==Z(Ie)){L(n,"LINEAGE_STALE");return}if(Q!==void 0&&(P={...P,legacy:Q}),Q!==void 0)try{P={...P,hash:re(P)},he(P);}catch{L(n,"LINEAGE_INVALID");return}v=n.bundleLineage;}if(n.bundleIdentity!==void 0&&n.bundleIdentity.appId!==o.pluginId){L(n,"BUNDLE_INTEGRITY");return}if(n.bundleIdentity!==void 0&&(n.bundleIdentity.definitionId!==P.id||n.bundleIdentity.version!==P.version||n.bundleIdentity.definitionHash!==P.hash)){L(n,"LINEAGE_STALE");return}let k=Ht(o.pluginId),F=o.actions.length===0?{read:k.read}:k,B=Ce(_),D=Ce(f),E=Ce(P),H=Ce({..._.handlers}),N=ao(a),p=y===void 0?void 0:ao(y),A=Object.freeze({...n.provenance===void 0?{}:{provenance:n.provenance},entry:Object.freeze({path:"ui/index.html",hash:c,bytes:N}),...p===void 0?{}:{initialState:Object.freeze({path:"ui/state.json",hash:g,bytes:p})}}),m={appId:o.pluginId,pluginId:o.pluginId,definitionId:o.definitionId,version:o.version,...i.releaseVersion===void 0?{}:{releaseVersion:i.releaseVersion},manifestFile:i.file,...i.mcpb===void 0?{}:{mcpb:Ce(i.mcpb)},relativePath:n.relativePath,manifest:D,normalized:B,name:o.name,description:o.description,...o.icon===void 0?{}:{icon:o.icon},...o.tone===void 0?{}:{tone:o.tone},definition:E,handlers:H,resources:A,html:d,entryBytes:N,entryHash:c,initialState:Ce(u),...p===void 0?{}:{initialStateBytes:p},...g===void 0?{}:{initialStateHash:g},sourceHash:O,toolNames:Object.freeze(F)},U=n.provenance===void 0?{...m,source:n.source}:{...m,provenance:n.provenance,lineage:v??[]};n.candidate=Object.freeze(U),Ga(o)&&L(n,"EXEC_DENIED");}async function Do(e,n){let t={};for(let i of ne)try{t[i]=await wn(e,n,i,262144);}catch(r){if(q(r)==="NOT_FOUND")continue;return {files:t,failure:ke(q(r),"manifest")}}if(t[J]!==void 0)try{t[W]=await wn(e,n,W,262144);}catch(i){if(q(i)!=="NOT_FOUND")return {files:t,failure:ke(q(i),"manifest")}}return {files:t}}function Bt(e){return ne.some(n=>e[n]!==void 0)}async function qa(e,n){let{files:t,failure:i}=await Do(e,n);if(i!==void 0){L(n,i);return}let r=t[J];return r!==void 0&&!gt(r)&&(delete t[J],delete t[W]),Bt(t)?t:void 0}function Za(e,n,t,i=Ea,r=false){let o=Ya(e);Xa(o);let s=Object.freeze(o.filter(u=>u.candidate!==void 0&&u.diagnostic===void 0).map(u=>u.candidate)),a=Object.freeze(o.filter(u=>u.diagnostic!==void 0).map(u=>u.diagnostic)),d=r?Object.freeze({...t===void 0?{}:{indexHash:t},candidates:Object.freeze(o.filter(u=>u.source==="bundled"&&u.diagnostic===void 0&&t!==void 0&&u.candidate?.provenance?.indexHash===t).map(u=>u.candidate)),diagnostics:Object.freeze(a.filter(u=>u.source==="bundled").map(u=>Object.freeze({...u}))),reservedAppIds:Object.freeze([...i.appIds]),reservedDefinitionIds:Object.freeze([...i.definitionIds])}):void 0,c={apps:s,diagnostics:a,complete:n===void 0,...n===void 0?{}:{incompleteReason:n},...t===void 0?{}:{productBundleIndexHash:t},...d===void 0?{}:{productBundleSnapshotMetadata:d}};return Object.defineProperty(c,"candidates",{configurable:false,enumerable:false,get:()=>s}),Object.freeze(c)}function Qa(e){if(e===null||typeof e!="object"&&typeof e!="function")return false;let n=e;return typeof n.readVerifiedFile=="function"||typeof n.readFileVerified=="function"||typeof n.listDirectory=="function"||typeof n.readDirectory=="function"||typeof n.readdir=="function"}function ec(e,n){if(Qa(e))return {fs:e,options:n??{}};let t=e??n??{};return {fs:t.filesystem??t.fileSystem??t.fs??Rn,options:t}}async function zt(e,n,t){if(typeof e!="string"||e.length===0)throw new TypeError("workspaceRoot must be explicit");let{fs:i,options:r}=ec(n,t),o=r.clock??Va,s=o(),a=await no(r.productBundle,i,s,o),d=o(),c=BigInt(Date.now())*1000000n,u=[],y=0,g,f=false,_,O;if(r.scanCache!==void 0&&typeof i.getRootIdentity=="function"&&typeof i.fingerprintVerifiedFile=="function")try{O=await i.getRootIdentity(e),_=zi(r.scanCache,O),_.scanStartedAtNs=c;}catch(D){if(q(D)!=="NOT_FOUND")throw D}let P=_!==void 0&&r.productBundle===void 0&&a.packages.length===0&&a.diagnostics.length===0,v=new Set,k=true;u.push(...a.diagnostics.map(D=>({source:D.source,root:r.productBundle?.root??e,name:"",relativePath:D.relativePath,diagnostic:D})));let F=a.reservedIds;a.incomplete&&(g="time_limit");for(let D of a.packages){if(!Ee(d,o)){f=true,g="time_limit";break}let E=D.indexEntry,H=E.packageDir,N=D.files===void 0?void 0:xa(H,D.files),p=a.indexHash===void 0?void 0:Ui(Object.freeze({kind:"bundled",launcher:E.launcher!==false,indexHash:a.indexHash,packageDir:H,appId:E.appId,definitionId:E.definition.id,version:E.definition.version,definitionHash:E.definition.hash,files:E.files}),N),A={source:"bundled",root:r.productBundle?.root??e,name:H.slice(5),relativePath:H,...p===void 0?{}:{provenance:p},...D.files===void 0?{}:{pinnedFiles:D.files},...D.lineage===void 0?{}:{bundleLineage:D.lineage},bundleIdentity:{appId:E.appId,definitionId:E.definition.id,version:E.definition.version,definitionHash:E.definition.hash},identity:wa(E)};if(u.push(A),y+=1,D.failureCode!==void 0){L(A,D.failureCode);continue}if(D.files?.has(W)===true){L(A,"EXEC_DENIED",{reason:{path:"",rule:"bundled-tool-mode-unsupported",file:W}});continue}let m={};for(let U of ne){let T=D.files?.get(U);T!==void 0&&(m[U]=T);}if(!Bt(m)){L(A,"BUNDLE_INTEGRITY");continue}if(await yo(i,A,m),!Ee(d,o)){f=true,g="time_limit";break}}let B=[{source:"apps",directory:"apps"},{source:"skills",directory:"skills"}];e:for(let D of B){let{source:E,directory:H}=D,N;try{N=await Ja(i,e,H);}catch(A){if(q(A)==="NOT_FOUND")continue;P=false,k=false,u.push({source:E,root:e,name:"",relativePath:E,diagnostic:kn(ke(q(A),"manifest"),E,E)});continue}let p=N.filter(A=>A.kind==="directory"||A.kind==="symlink").filter(A=>La(A.name)).map(A=>({source:E,root:e,name:A.name,relativePath:Sa(E,A.name)})).sort((A,m)=>un(A.relativePath,m.relativePath));for(let A of p){let m={...A};if(u.push(m),O!==void 0?v.add(ho(O,m)):P=false,!Ee(d,o)){f=true,g="time_limit";break e}let U;if(_!==void 0&&O!==void 0){try{let x=await Ba(i,e,O,m,_,c,d,o);if(x.timeLimitReached){f=!0,g="time_limit";break e}m.scanContext=x.context,U=x.memo;}catch(x){P=false,L(m,ke(q(x),"manifest"));continue}U===void 0&&(P=false);}if(U!==void 0){if(m.candidate=U.candidate,m.diagnostic=U.diagnostic,m.identity=U.identity,E==="skills"&&U.candidate===void 0&&U.diagnostic===void 0)continue;if(y>=64){L(m,"LIMIT_EXCEEDED");continue}if(A.relativePath.split("/").length-1>2){L(m,"LIMIT_EXCEEDED");continue}if(y+=1,!Ee(d,o)){f=true,g="time_limit";break e}continue}let T;if(E==="skills"&&(T=await qa(i,m),T===void 0)){m.diagnostic===void 0&&Ft(m);continue}if(y>=64){L(m,"LIMIT_EXCEEDED");continue}if(A.relativePath.split("/").length-1>2){L(m,"LIMIT_EXCEEDED");continue}if(!Ee(d,o)){f=true,g="time_limit";break e}if(y+=1,T===void 0){let x=await Do(i,m);if(x.failure!==void 0||!Bt(x.files)){L(m,x.failure??ke("NOT_FOUND","manifest")),Ft(m);continue}T=x.files;}if(await yo(i,m,T),Ft(m),!Ee(d,o)){f=true,g="time_limit";break e}}}if(_!==void 0&&O!==void 0){let D=[...v].sort(un),E=_.lastCandidateKeys,H=E!==void 0&&E.length===D.length&&E.every((p,A)=>p===D[A]);if(P=P&&H,k&&!f&&g===void 0)for(let p of _.candidates.keys())try{JSON.parse(p)[0]===O.realPath&&!v.has(p)&&_.candidates.delete(p);}catch{_.candidates.delete(p);}let N=[..._.candidates.keys()].filter(p=>{try{return JSON.parse(p)[0]===O.realPath}catch{return false}});P=P&&N.length===v.size&&N.every(p=>v.has(p))&&!f&&g===void 0,_.lastCandidateScanUnchanged=P,k&&!f&&g===void 0&&(_.lastCandidateKeys=Object.freeze(D));}return f&&u.push({source:"apps",root:e,name:"",relativePath:"apps",diagnostic:kn("DISCOVERY_TIME_LIMIT","apps","apps")}),Ka(u,r,F),Za(u,g,a.indexHash,F,r.productBundle!==void 0)}var Ea,We,Na,Pa,to,Ma,co,Fa,po,nc,tc,Po=R(()=>{I();Se();fn();me();Li();Me();Nt();Pn();Gi();Ct();bn();vt();vt();Ea=ln([]);We="crewx_local_app_",Na=We,Pa=We;to=["bundled","apps","skills"],Ma=new TextDecoder("utf-8",{fatal:true});co=["","/ui"],Fa=["/dist"],po=2000000000n;nc=zt,tc=zt;});I();var bo="SKILL.md",ac=/^---\s*\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/;function Mo(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}function cc(e){return e.isDirectory()||e.isSymbolicLink()}function Oo(e){try{return fs$1.existsSync(e)&&fs$1.statSync(e).isDirectory()}catch{return false}}var dc=["index.js","main.js"];function pl(e,n){let t=path.join(e,"package.json");if(fs$1.existsSync(t))try{let r=JSON.parse(fs$1.readFileSync(t,"utf8"));if(r.bin){let o=typeof r.bin=="string"?r.bin:Object.values(r.bin).find(s=>typeof s=="string");if(o){let s=path.resolve(e,o);if(fs$1.existsSync(s))return s}}if(typeof r.main=="string"){let o=path.resolve(e,r.main);if(fs$1.existsSync(o))return o}}catch{}let i=path.resolve(e,`${n}.js`);if(fs$1.existsSync(i))return i;for(let r of dc){let o=path.resolve(e,r);if(fs$1.existsSync(o))return o}}function pc(e){let n;try{n=fs$1.readFileSync(e,"utf8");}catch{return {frontmatter:{},readable:false,valid:false,hasFrontmatter:false}}let t=n.match(ac);if(!t)return {frontmatter:{},readable:true,valid:true,hasFrontmatter:false};try{let i=jsYaml.load(t[1]??"");if(!Mo(i))return {frontmatter:{},readable:!0,valid:!1,hasFrontmatter:!0};let r=Mo(i.metadata)?i.metadata:void 0;return {frontmatter:{...typeof i.name=="string"?{name:i.name}:{},...typeof(r?.version??i.version)=="string"?{version:r?.version??i.version}:{},...typeof i.description=="string"?{description:i.description}:{}},readable:!0,valid:!0,hasFrontmatter:!0}}catch{return {frontmatter:{},readable:true,valid:false,hasFrontmatter:true}}}function lc(e){return [path.join(e,bo),path.join(e,"skill",bo)]}function jn(e,n){if(!Oo(e))return null;for(let t of lc(e)){if(!fs$1.existsSync(t))continue;let r=pc(t).frontmatter;return {name:r.name??n,...r.version===void 0?{}:{version:r.version},...r.description===void 0?{}:{description:r.description},skillMdPath:t,dir:e}}return null}function Gt(e){try{return fs$1.readdirSync(e,{withFileTypes:!0}).filter(cc)}catch{return []}}function uc(e){return e.length===0||/[\\\u0000]/.test(e)?false:e.split("/").every(n=>n.length>0&&n!=="."&&n!=="..")}function So(e,n,t){!e||n.has(e.name)||(n.add(e.name),t.push(e));}function Vn(e){let n=[],t=new Set;for(let i of e)if(Oo(i))for(let r of Gt(i)){if(r.name.startsWith("@")){let o=path.join(i,r.name);for(let s of Gt(o))So(jn(path.join(o,s.name),s.name),t,n);continue}So(jn(path.join(i,r.name),r.name),t,n);}return n.sort((i,r)=>i.name.localeCompare(r.name))}function fc(e,n){if(!uc(e))throw new Error(`Skill not found: ${e}`);for(let i of n){let r=jn(path.join(i,e),e);if(r)return r;for(let o of Gt(i)){if(!o.name.startsWith("@"))continue;let s=jn(path.join(i,o.name,e),e);if(s)return s}}let t=Vn(n).find(i=>i.name===e);if(t)return t;throw new Error(`Skill not found: ${e}`)}async function ll(e){if(!e||e.root===null)return {skills:[],diagnostics:[]};let{discoverWorkspaceApps:n}=await Promise.resolve().then(()=>(Po(),No)),t=await n(e.root,{productBundle:e}),i=[],r=new Set;for(let o of t.apps){let s=o.provenance?.kind==="bundled"?o.provenance.packageDir:void 0;if(!s)continue;let a=path.join(e.root,...s.split("/"));for(let d of Vn([path.dirname(a)]))path.resolve(d.dir)!==path.resolve(a)||r.has(d.name)||(r.add(d.name),i.push(d));for(let d of [path.join(a,"skill"),path.join(a,"skills")])for(let c of Vn([d]))r.has(c.name)||(r.add(c.name),i.push(c));}return {skills:i.sort((o,s)=>o.name.localeCompare(s.name)),diagnostics:t.diagnostics.filter(o=>o.source==="bundled")}}var ul=Vn,fl=fc;
2
+ exports.discover=Vn;exports.discoverBundledProductSkills=ll;exports.discoverSkills=ul;exports.findEntrypoint=pl;exports.readSkillFrontmatter=pc;exports.resolve=fc;exports.resolveSkill=fl;