@crewx/sdk 0.9.0-rc.152 → 0.9.0-rc.153
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/frame.d.ts +0 -1
- package/dist/app/index.js +10 -10
- package/dist/app/protocol.d.ts +2 -2
- package/dist/esm/app/index.js +10 -10
- package/dist/esm/index.js +191 -191
- package/dist/esm/publish/index.js +1 -1
- package/dist/esm/skills/index.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +177 -177
- package/dist/mcp-app/model-context.d.ts +1 -1
- package/dist/publish/index.js +1 -1
- package/dist/skills/index.js +1 -1
- package/dist/ui-instance/runtime.d.ts +1 -0
- package/dist/ui-plugin/limits.d.ts +2 -2
- package/package.json +1 -1
package/dist/skills/index.js
CHANGED
|
@@ -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 dr=Object.defineProperty;var w=(e,n)=>()=>(e&&(n=e(e=0)),n);var pr=(e,n)=>{for(var t in n)dr(e,t,{get:n[t],enumerable:true});};var g=w(()=>{});var R,Tn=w(()=>{g();R=class extends Error{constructor(t,i=t,r){super(i);this.code=t;this.currentRevision=r;}code;currentRevision;name="UiRuntimeError"};});function Qn(e){return lr.test(e)||ur.test(e)}function ae(){throw new R("INPUT_INVALID","JSON value is not projection-safe")}function Ir(e){let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}function qn(e,n,t,i,r,o){if(n>i&&ae(),e===null||typeof e=="string"||typeof e=="boolean")return typeof e=="string"&&(fr.test(e)||Ar.test(e)&&!hr(r,o)||yr.test(e))&&ae(),e;if(typeof e=="number")return Number.isFinite(e)||ae(),e;(typeof e!="object"||e===void 0||typeof e=="function"||typeof e=="bigint")&&ae();let s=e;t.has(s)&&ae(),t.add(s);try{if(Array.isArray(e))return e.map(d=>qn(d,n+1,t,i,r,o));Ir(s)||ae();let a={};for(let[d,c]of Object.entries(e))Qn(d)&&ae(),a[d]=qn(c,n+1,t,i,[...r,d],o);return a}finally{t.delete(s);}}function ce(e,n=0,t=[]){(!Number.isInteger(n)||n<0||n>mr)&&ae(),(!Array.isArray(t)||t.some(r=>typeof r!="string"))&&ae();let i=qn(e,0,new Set,gr+n,[],t);return (i===null||Array.isArray(i)||typeof i!="object")&&ae(),i}function Fe(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 hr(e,n){if(e.length===0)return false;let t=e.join(".");return n.some(i=>Fe(t,i))}function Be(e){try{let n=JSON.stringify(e);return n===void 0&&ae(),n}catch{ae();}}function Zn(e){return Array.isArray(e)?e.map(Zn):e!==null&&typeof e=="object"?Object.fromEntries(Object.keys(e).sort().map(n=>[n,Zn(e[n])])):e}function q(e){return Be(Zn(e))}function et(e){return Buffer.byteLength(e,"utf8")}var lr,ur,fr,yr,Ar,gr,mr,De=w(()=>{g();Tn();lr=/(?:proof|token|secret|password|cookie|authorization|private[_-]?key|stack|exception|plugin[_-]?text)/i,ur=/(?:url|uri|endpoint|path|file(?:name|path)?|cwd|shell|directory|dir|folder)$/i,fr=/<\/?[A-Za-z][^>]*>/,yr=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,Ar=/^(?:https?|file|ftp|ws|wss):\/\//i;gr=8,mr=4;});var En,nt=w(()=>{g();En=["text/plain","application/json"];});var si=w(()=>{g();nt();});function He(e){return Tr.has(e)||Er.test(e)||Dr.test(e)}var ai,Tr,Er,Dr,Dn,nn,Ie,tt,it,ot,rt,st,Re=w(()=>{g();ai=["__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"],Tr=new Set(ai),Er=/(?:proof|token|secret|password|cookie|authorization|private[_-]?key|stack|exception|plugin[_-]?text)/i,Dr=/(?:url|uri|endpoint|path|file(?:name|path)?|cwd|shell|directory|dir|folder)$/i;Dn=/^[A-Za-z0-9_]+$/,nn=/^[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*$/,Ie=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,tt=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/,it=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,ot=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$/,rt=["blue","violet","emerald","amber","rose","sky","slate","indigo"],st=["inline","panel"];});function at(e){return typeof e=="string"&&En.includes(e)}var ci=w(()=>{g();nt();Re();});function Nn(e){if(!ct(e))return false;let n=Object.keys(e);return !(n.some(t=>t!=="in"&&t!=="out")||n.length===0||Object.hasOwn(e,"in")&&!Nr(e.in)||Object.hasOwn(e,"out")&&!br(e.out))}function Nr(e){return ct(e)?Object.keys(e).every(t=>t==="mediaType"||t==="required")&&Object.hasOwn(e,"mediaType")&&at(e.mediaType)&&(!Object.hasOwn(e,"required")||typeof e.required=="boolean"):false}function br(e){return ct(e)?Object.keys(e).every(t=>t==="mediaType"||t==="range")&&Object.hasOwn(e,"mediaType")&&at(e.mediaType)&&(!Object.hasOwn(e,"range")||typeof e.range=="boolean"):false}function ct(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}var dt=w(()=>{g();si();ci();new TextDecoder("utf-8",{fatal:true,ignoreBOM:true});});function ie(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=ce(t);return crypto.createHash("sha256").update(q(i)).digest("hex")}function lt(e){return `${e.id}\0${e.version}`}function de(e){if(!/^\d+$/.test(String(e.version))||e.version<1||e.id.length<1||e.id.length>128)throw new R("DEFINITION_UNSUPPORTED","UI definition is invalid");if(e.sourceHash!==void 0&&(typeof e.sourceHash!="string"||!Mr.test(e.sourceHash)))throw new R("DEFINITION_UNSUPPORTED","UI definition source hash is invalid");if(!/^[0-9a-f]{64}$/.test(e.hash)||ie(e)!==e.hash)throw new R("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=>!Lr(i)))throw new R("DEFINITION_UNSUPPORTED","UI action declaration is invalid");if(t.confirmation!==void 0&&t.confirmation!=="none"&&t.confirmation!=="native")throw new R("DEFINITION_UNSUPPORTED","UI action confirmation is invalid");if(t.inputKeys&&(!Array.isArray(t.inputKeys)||t.inputKeys.some(i=>typeof i!="string"||!i)))throw new R("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 R("DEFINITION_UNSUPPORTED","UI action data input declaration is invalid");if(t.resultProjection&&pt(t.resultProjection),t.content!==void 0&&!Nn(t.content))throw new R("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 R("DEFINITION_UNSUPPORTED","UI action environment declaration is invalid")}if(e.renderer!==void 0&&(!e.renderer||e.renderer.length>128))throw new R("DEFINITION_UNSUPPORTED","UI definition renderer is invalid");if(e.surfaces&&(!Array.isArray(e.surfaces)||e.surfaces.some(n=>!n||n.length>64)))throw new R("DEFINITION_UNSUPPORTED","UI definition surfaces are invalid");if(e.usage!==void 0&&e.usage!=="card"&&e.usage!=="window")throw new R("DEFINITION_UNSUPPORTED","UI definition usage is invalid");if(e.detailPanel!==void 0&&typeof e.detailPanel!="boolean")throw new R("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 R("DEFINITION_UNSUPPORTED","UI definition displayModes are invalid");if(e.usage==="card"&&e.displayModes!==void 0)throw new R("DEFINITION_UNSUPPORTED","Card definitions cannot declare displayModes");if(e.usage==="window"&&e.detailPanel!==void 0)throw new R("DEFINITION_UNSUPPORTED","Window definitions cannot declare detailPanel");if(e.stateProjection&&pt(e.stateProjection),e.summaryProjection){pt(e.summaryProjection);let n=new Set(e.stateProjection?.allow??[]);if(e.summaryProjection.allow.some(t=>!n.has(t)))throw new R("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 R("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(Sr(o,r==="readTool"),n.has(o.name))throw new R("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 R("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 R("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 R("DEFINITION_UNSUPPORTED","UI legacy agent access is invalid");if(e.legacy.actionTool!==void 0&&(!i||Object.keys(i).length===0))throw new R("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=>Fe(t,i))))throw new R("DEFINITION_UNSUPPORTED","UI definition dataPaths are invalid")}}function Sr(e,n){if(!e||typeof e!="object"||Array.isArray(e))throw new R("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 R("DEFINITION_UNSUPPORTED","UI legacy tool metadata is invalid");try{let o=ce(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=ce(a.structuredContent);if(et(Be(d))>4*1024)throw new Error("fixed result size")}}catch{throw new R("DEFINITION_UNSUPPORTED","UI legacy tool metadata is not projection-safe")}}function pt(e){if(!Array.isArray(e.allow)||e.allow.some(n=>!/^[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*$/.test(n)))throw new R("DEFINITION_UNSUPPORTED","UI projection policy is invalid")}function Lr(e){return e.length>0&&e.length<=128&&e!=="*"&&e!=="all"&&!/[/*]/.test(e)}var Mr,Ue=w(()=>{g();De();Tn();dt();Mr=/^[0-9a-f]{64}$/;});var di=w(()=>{g();De();});var Y,ze,ut=w(()=>{g();Y="dist/tools.json",ze="dist/main.mjs";});var tn,pi=w(()=>{g();tn="window";});function li(e){if(!Array.isArray(e)||e.length===0)return false;let n=new Set;for(let t of e){if(!Or.some(i=>i===t)||n.has(t))return false;n.add(t);}return true}var Or,ui=w(()=>{g();Or=["CREWX_APP_INSTANCE_ID","CREWX_THREAD_ID"];});function v(e){throw new ft(e)}function Hr(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 zr(e,n){let t=Object.getOwnPropertyDescriptor(e,n);return (!t||!("value"in t))&&v("CSP_ORIGIN_INVALID"),t.value}function bn(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))return [];let t=zr(e,n);Array.isArray(t)||v("CSP_ORIGIN_INVALID"),Reflect.ownKeys(t).some(o=>typeof o!="string"||o!=="length"&&!/^(?:0|[1-9][0-9]*)$/.test(o))&&v("CSP_ORIGIN_INVALID");let r=[];for(let o=0;o<t.length;o+=1)(!Object.prototype.hasOwnProperty.call(t,o)||typeof t[o]!="string")&&v("CSP_ORIGIN_INVALID"),r.push(t[o]);return Object.keys(t).length!==t.length&&v("CSP_ORIGIN_INVALID"),r}function Gr(e){let n;try{n=JSON.stringify(e);}catch{v("CSP_ORIGIN_INVALID");}return n===void 0&&v("CSP_ORIGIN_INVALID"),new TextEncoder().encode(n).byteLength}function Ai(e,n){/\s|\\/u.test(e)&&v("CSP_ORIGIN_INVALID");let t=jr.exec(e);t||v("CSP_ORIGIN_INVALID");let i=t[1].toLowerCase(),r=t[2];(r.includes("@")||r.includes("%")||r.includes("*"))&&v("CSP_ORIGIN_INVALID"),(r.startsWith("[")?vr:Vr).test(r)||v("CSP_ORIGIN_INVALID"),i==="wss"&&n!=="connectDomains"&&v("CSP_ORIGIN_INVALID");let s;try{s=new URL(e);}catch{v("CSP_ORIGIN_INVALID");}(s.protocol!==`${i}:`||s.username!==""||s.password!==""||s.search!==""||s.hash!=="")&&v("CSP_ORIGIN_INVALID");let a=s.hostname.toLowerCase();if((!a||a.includes("%"))&&v("CSP_ORIGIN_INVALID"),!a.startsWith("[")){let c=a.endsWith(".")?a.slice(0,-1):a;(c.length===0||c.length>253)&&v("CSP_ORIGIN_INVALID"),c.split(".").some(l=>l.length>63||!Fr.test(l))&&v("CSP_ORIGIN_INVALID");}let d=s.origin;return (d==="null"||!d.startsWith(`${i}://`))&&v("CSP_ORIGIN_INVALID"),{origin:d,hostname:a}}function $r(e){let n=e.split(".").map(Number);return ((n[0]*256+n[1])*256+n[2])*256+n[3]}function Ii(e,n,t){let i=4294967295<<32-t>>>0;return (e&i)===(n&i)}function hi(e){let n=$r(e);return Ii(n,3221225472,24)?n!==3221225481&&n!==3221225482:Br.some(([t,i])=>Ii(n,t,i))}function Jr(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 Wr(e){let n=Jr(e),t=Number(n>>112n),i=Number(n>>96n&0xffffn);if(n>>32n===0xffffn){let r=Number(n&0xffffffffn);return hi([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 Xr(e,n){let t=e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e,i=net.isIP(t);if(i===4)return hi(t);if(i===6)return Wr(t);let r=e.toLowerCase().replace(/\.$/,"");return !r||!r.includes(".")||n.has(r)?true:xr.some(o=>r===o||r.endsWith(`.${o}`))}function gi(e){return Object.freeze([...new Set(e.map(n=>n.origin))].sort())}function mi(e){return JSON.stringify({baseUriDomains:[],connectDomains:e.connectDomains,declared:e.declared,frameDomains:e.frameDomains,resourceDomains:[]})}function _i(e,n={}){if(e===void 0){let A=mi({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")})}Hr(e)||v("CSP_ORIGIN_INVALID");let t=Reflect.ownKeys(e);t.some(A=>typeof A!="string")&&v("CSP_ORIGIN_INVALID"),t.some(A=>!wr.has(A))&&v("CSP_AXIS_UNKNOWN");let i=bn(e,"connectDomains"),r=bn(e,"frameDomains"),o=bn(e,"resourceDomains"),s=bn(e,"baseUriDomains");(o.length>0||s.length>0)&&v("CSP_AXIS_UNSUPPORTED"),(Gr(e)>Ur||i.length>yi||r.length>yi||i.length+r.length>Cr||[...i,...r].some(A=>new TextEncoder().encode(A).byteLength>kr))&&v("CSP_LIMIT_EXCEEDED");let d=i.map(A=>Ai(A,"connectDomains")),c=r.map(A=>Ai(A,"frameDomains")),p=new Set((n.runtimeHostnames??[]).map(A=>A.toLowerCase().replace(/\.$/,"")));[...d,...c].some(A=>Xr(A.hostname,p))&&v("CSP_ORIGIN_FORBIDDEN");let l={declared:true,connectDomains:gi(d),frameDomains:gi(c)},u=mi(l);return Object.freeze({...l,resourceDomains:Object.freeze([]),baseUriDomains:Object.freeze([]),cspHash:crypto.createHash("sha256").update(u,"utf8").digest("hex")})}var Ur,yi,Cr,kr,wr,xr,jr,vr,Vr,Fr,Br,ft,Ti=w(()=>{g();Ur=4096,yi=16,Cr=32,kr=512,wr=new Set(["connectDomains","frameDomains","resourceDomains","baseUriDomains"]),xr=["localhost","local","internal","home.arpa","test","example","invalid","onion","lan","corp","home","intranet","private","localdomain"],jr=/^(https|wss):\/\/([^/?#]+)$/i,vr=/^\[[^\]]+\](?::[0-9]+)?$/,Vr=/^[^:\[\]]+(?::[0-9]+)?$/,Fr=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,Br=[[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]],ft=class extends Error{constructor(t){super(t);this.code=t;}code;name="UiPluginCspNormalizationError"};});function rn(e,n){return n===void 0||n===""?e:e===""?n:n.startsWith("[")?`${e}${n}`:`${e}.${n}`}function y(e,n=e,t,i){throw new oe(e,n,t,i)}function F(e,n){try{return n()}catch(t){throw t instanceof oe?t.withPathPrefix(e):t}}function B(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 U(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function Es(e,n){let t={};for(let[i,r]of Object.entries(e))i!==n&&(t[i]=r);return t}function $(e,n,t=[]){let i=new Set([...n,...t]),r=Object.keys(e).find(s=>!i.has(s));r!==void 0&&y("MANIFEST_INVALID","MANIFEST_INVALID",r,"unknown-key");let o=n.find(s=>!U(e,s));o!==void 0&&y("MANIFEST_INVALID","MANIFEST_INVALID",o,"missing-key");}function Ln(e,n=false,t=false,i=false){return Zr.test(e)||!i&&es.test(e)||Qr.test(e)||t&&Ei.test(e)||ns.test(e)&&!(n&&/^\s*data:/i.test(e)&&!Ei.test(e))}function Sn(e,n=new Set,t=0,i=false,r=false,o=""){if(typeof e=="string"){Ln(e,i,r)&&y("UNSAFE_VALUE","UNSAFE_VALUE",o,"unsafe-value");return}if(!(e===null||typeof e!="object")){(t>8||n.has(e))&&y("MANIFEST_INVALID","MANIFEST_INVALID",o),n.add(e);try{if(Array.isArray(e)){e.forEach((s,a)=>Sn(s,n,t+1,!1,!1,rn(o,`[${a}]`)));return}B(e)||y("MANIFEST_INVALID","MANIFEST_INVALID",o);for(let[s,a]of Object.entries(e))Sn(a,n,t+1,i&&t===0&&(s==="name"||s==="description"),r,rn(o,s));}finally{n.delete(e);}}}function ge(e,n){let t=e[n];return typeof t!="string"&&y("MANIFEST_INVALID"),t}function le(e,n,t){let i=e[n];return (!Number.isSafeInteger(i)||i<t)&&y("MANIFEST_INVALID"),i}function yt(e){return qr.test(e)||y("MANIFEST_INVALID"),e}function Ge(e){return Yr.test(e)||y("TOKEN_INVALID"),e}function Ds(e){return Ri.test(e)||y("MANIFEST_INVALID"),e}function Ns(e){B(e)||y("MANIFEST_INVALID");let n={};for(let[t,i]of Object.entries(e)){let r=Ds(t);B(i)||y("MANIFEST_INVALID");let o=i.type;if(o==="text"){$(i,["type","maxLength"]),n[r]={type:o,maxLength:le(i,"maxLength",1)};continue}if(o==="text-list"){$(i,["type","max","itemMaxLength"]),n[r]={type:o,max:le(i,"max",0),itemMaxLength:le(i,"itemMaxLength",1)};continue}if(o==="step-list"){$(i,["type","min","max","labelMaxLength","detailMaxLength"]);let s=le(i,"min",0),a=le(i,"max",1);s>a&&y("MANIFEST_INVALID"),n[r]={type:o,min:s,max:a,labelMaxLength:le(i,"labelMaxLength",1),detailMaxLength:le(i,"detailMaxLength",1)};continue}typeof o=="string"&&y("SCHEMA_TYPE_UNSUPPORTED"),y("MANIFEST_INVALID");}return n}function bs(e,n,t){let i=e[n];(!i||i.type!==t)&&y("MANIFEST_INVALID");}function Pn(e,n,t){let i=ge(e,"field");return Ri.test(i)||y("MANIFEST_INVALID"),bs(n,i,t),i}function Ps(e,n){B(e)||y("MANIFEST_INVALID");let t=e.primitive;switch(typeof t!="string"&&y("MANIFEST_INVALID"),Ts.includes(t)||y("PRIMITIVE_UNKNOWN"),t){case "card-shell":return $(e,["primitive"]),{primitive:t};case "meta-banner":return $(e,["primitive","badgeToken","noticeToken"]),{primitive:t,badgeToken:Ge(ge(e,"badgeToken")),noticeToken:Ge(ge(e,"noticeToken"))};case "heading":return $(e,["primitive","field"]),{primitive:t,field:Pn(e,n,"text")};case "labeled-text":return $(e,["primitive","titleToken","field","variant"]),e.variant!=="callout"&&y("MANIFEST_INVALID"),{primitive:t,titleToken:Ge(ge(e,"titleToken")),field:Pn(e,n,"text"),variant:"callout"};case "step-flow":return $(e,["primitive","titleToken","field"]),{primitive:t,titleToken:Ge(ge(e,"titleToken")),field:Pn(e,n,"step-list")};case "text-list":{$(e,["primitive","titleToken","field"],["emptyToken","hideWhenEmpty"]);let i={primitive:t,titleToken:Ge(ge(e,"titleToken")),field:Pn(e,n,"text-list")};return U(e,"emptyToken")&&(i.emptyToken=Ge(ge(e,"emptyToken"))),U(e,"hideWhenEmpty")&&(typeof e.hideWhenEmpty!="boolean"&&y("MANIFEST_INVALID"),i.hideWhenEmpty=e.hideWhenEmpty),i}}return y("MANIFEST_INVALID")}function Ms(e,n){return Array.isArray(e)||y("MANIFEST_INVALID"),e.map(t=>Ps(t,n))}function J(e="v2 manifest exceeds a contract limit",n,t){return y("LIMIT_EXCEEDED",e,n,t)}function pe(e="initial state is not projection-safe"){return y("INITIAL_STATE_INVALID",e)}function Di(e,n){return (typeof e!="string"||e.length===0||e.length>4096||e.trim().length===0||ms.test(e)||hs.test(e))&&y("MANIFEST_INVALID",`${n} is invalid`),(Ln(e,true,true)||ts.test(e)||is.test(e)||os.test(e))&&y("UNSAFE_VALUE",`${n} contains an unsafe value`),e}function At(e,n){return (typeof e!="string"||!Ie.test(e))&&y("MANIFEST_INVALID",`${n} is invalid`),e}function Ss(e){return (typeof e!="string"||!tt.test(e)||e==="*"||e==="all")&&y("MANIFEST_INVALID","action capability is invalid"),e}function Ui(e){return (typeof e!="string"||!gs.test(e))&&y("MANIFEST_INVALID","resource hash is invalid"),e}function It(e,n=new Set,t=0,i=""){if(typeof e=="string"){e.length>4096&&J("v2 manifest string is too long",i,"string-too-long");return}if(!(e===null||typeof e=="boolean")){if(typeof e=="number"){Number.isFinite(e)||y("MANIFEST_INVALID","v2 manifest contains a non-finite number",i,"non-finite-number");return}(e===void 0||typeof e=="function"||typeof e=="bigint")&&y("MANIFEST_INVALID","v2 manifest contains a non-JSON value",i,"non-json-value"),typeof e!="object"&&y("MANIFEST_INVALID","MANIFEST_INVALID",i),t>8&&J("v2 manifest nesting is too deep",i,"too-deep"),n.has(e)&&y("MANIFEST_INVALID","v2 manifest contains a cycle",i,"cycle"),n.add(e);try{if(Array.isArray(e)){e.length>128&&J("v2 manifest array is too long",i,"array-too-long"),e.forEach((r,o)=>It(r,n,t+1,rn(i,`[${o}]`)));return}B(e)||y("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,rn(i,r));}finally{n.delete(e);}}}function Ci(e){return (typeof e!="string"||e.length>4096||!nn.test(e))&&(typeof e=="string"&&e.length>4096&&J("projection path is too long"),y("MANIFEST_INVALID","projection paths must be canonical exact paths")),e.split(".").some(t=>He(t))&&y("MANIFEST_INVALID","projection paths cannot address reserved state keys"),e}function gt(e){B(e)||y("MANIFEST_INVALID","projection policy must be an object"),$(e,["allow"]),Array.isArray(e.allow)||y("MANIFEST_INVALID","projection allow must be an array"),e.allow.length>128&&J("projection allowlist is too long");let n=[],t=new Set;for(let i of e.allow){let r=Ci(i);t.has(r)&&y("MANIFEST_INVALID","projection allowlist contains a duplicate path"),t.add(r),n.push(r);}return {allow:n}}function Ls(e,n){if(e===void 0)return;Array.isArray(e)||y("MANIFEST_INVALID","dataPaths must be an array"),e.length>_s&&J("dataPaths exceed the v2 limit");let t=[],i=new Set;for(let r of e){let o=Ci(r);i.has(o)&&y("MANIFEST_INVALID","dataPaths contain a duplicate path"),n.some(s=>Fe(o,s))||y("MANIFEST_INVALID","dataPaths must be projection-allowed"),i.add(o),t.push(o);}return t}function $e(e,n,t=Number.MAX_SAFE_INTEGER){return (!Number.isSafeInteger(e)||e<0||e>t)&&y("MANIFEST_INVALID",`${n} is invalid`),e}function Ni(e,n){return (typeof e!="number"||!Number.isFinite(e))&&y("MANIFEST_INVALID",`${n} is invalid`),e}function mt(e,n=0,t=new Set){if(typeof e=="string")return (e.length>4096||Ln(e))&&y("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)||y("MANIFEST_INVALID","schema enum contains a non-finite number"),e;(n>8||typeof e!="object"||e===void 0)&&J("schema enum is too deep"),t.has(e)&&y("MANIFEST_INVALID","schema enum contains a cycle"),t.add(e);try{if(Array.isArray(e))return e.length>128&&J("schema enum array is too long"),e.map(r=>mt(r,n+1,t));B(e)||y("MANIFEST_INVALID","schema enum contains a non-plain object");let i={};for(let[r,o]of Object.entries(e))He(r)&&y("MANIFEST_INVALID","schema enum contains a reserved key"),i[r]=mt(o,n+1,t);return i}finally{t.delete(e);}}function Os(e,n){if(e===void 0)return;Array.isArray(e)||y("MANIFEST_INVALID","schema required must be an array"),e.length>64&&J("schema required list is too long");let t=[],i=new Set;for(let r of e)(typeof r!="string"||!nn.test(r))&&y("MANIFEST_INVALID","schema required contains an invalid key"),r.length>4096&&J("schema required key is too long"),i.has(r)&&y("MANIFEST_INVALID","schema required contains a duplicate key"),n&&!Object.prototype.hasOwnProperty.call(n,r)&&y("MANIFEST_INVALID","schema required references an undeclared property"),i.add(r),t.push(r);return t}function Rs(e,n){let t=n?nn:Dn;return e.length>4096&&J("schema property name is too long"),(!t.test(e)||e.split(".").some(i=>He(i)))&&y("MANIFEST_INVALID","schema property name is invalid"),e}function ht(e,n=0,t=false){B(e)||y("MANIFEST_INVALID","action inputSchema must be an object"),n>8&&J("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"&&y("SCHEMA_TYPE_UNSUPPORTED","action inputSchema type is unsupported"),y("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"),$(e,["type"],r.filter(a=>a!=="type"));let o={type:i};if(U(e,"enum")&&(Array.isArray(e.enum)||y("MANIFEST_INVALID","schema enum must be an array"),e.enum.length>128&&J("schema enum is too long"),o.enum=e.enum.map(a=>mt(a))),i==="string"&&(U(e,"minLength")&&(o.minLength=$e(e.minLength,"schema minLength",4096)),U(e,"maxLength")&&(o.maxLength=$e(e.maxLength,"schema maxLength",4096)),o.minLength!==void 0&&o.maxLength!==void 0&&o.minLength>o.maxLength&&y("MANIFEST_INVALID","schema string length bounds are inverted")),(i==="number"||i==="integer")&&(U(e,"minimum")&&(o.minimum=Ni(e.minimum,"schema minimum")),U(e,"maximum")&&(o.maximum=Ni(e.maximum,"schema maximum")),o.minimum!==void 0&&o.maximum!==void 0&&o.minimum>o.maximum&&y("MANIFEST_INVALID","schema numeric bounds are inverted")),i==="array"&&(U(e,"minItems")&&(o.minItems=$e(e.minItems,"schema minItems",128)),U(e,"maxItems")&&(o.maxItems=$e(e.maxItems,"schema maxItems",128)),o.minItems!==void 0&&o.maxItems!==void 0&&o.minItems>o.maxItems&&y("MANIFEST_INVALID","schema array length bounds are inverted"),U(e,"items")&&(o.items=ht(e.items,n+1,false))),i==="object"){let a;if(U(e,"properties")){B(e.properties)||y("MANIFEST_INVALID","schema properties must be an object");let c=Object.entries(e.properties);c.length>64&&J("schema properties are too many"),a={};for(let[p,l]of c){let u=Rs(p,t);a[u]=ht(l,n+1,false);}o.properties=a;}U(e,"minProperties")&&(o.minProperties=$e(e.minProperties,"schema minProperties",64)),U(e,"maxProperties")&&(o.maxProperties=$e(e.maxProperties,"schema maxProperties",64)),o.minProperties!==void 0&&o.maxProperties!==void 0&&o.minProperties>o.maxProperties&&y("MANIFEST_INVALID","schema object property bounds are inverted");let d=Os(e.required,a);d!==void 0&&(o.required=d),U(e,"additionalProperties")&&(e.additionalProperties!==false&&y("MANIFEST_INVALID","schema additionalProperties must be false"),o.additionalProperties=false);}let s=JSON.stringify(o);return (s===void 0||Buffer.byteLength(s,"utf8")>65536)&&J("action inputSchema subtree is too large"),o}function Us(e){let n=ht(e,0,true);return (n.type!=="object"||!n.properties)&&y("MANIFEST_INVALID","action inputSchema must declare object properties"),n}function Cs(e){if(B(e)||y("MANIFEST_INVALID","action backend must be an object"),e.type==="core"){$(e,ls);let n=e.handler;return (typeof n!="string"||!it.test(n))&&y("MANIFEST_INVALID","core backend handler is invalid"),{type:"core",handler:n}}if(e.type==="skill"&&U(e,"entry"))return $(e,ys),e.entry!==ze&&y("MANIFEST_INVALID",`skill backend entry must be ${ze}`),{type:"skill",entry:ze};if(e.type==="skill"){$(e,us,fs),(!Array.isArray(e.command)||e.command.length===0||e.command.length>16)&&y("MANIFEST_INVALID","skill backend command is invalid");let n=[];for(let i of e.command)(typeof i!="string"||i.length===0||i.length>256||!ot.test(i))&&y("MANIFEST_INVALID","skill backend command token is invalid"),n.push(i);let t=U(e,"env")?ws(e.env):void 0;return {type:"skill",command:n,...t===void 0?{}:{env:t}}}y("MANIFEST_INVALID","action backend type is unsupported");}function ks(e){B(e)||y("MANIFEST_INVALID","action must be an object"),$(e,cs,ds),U(e,"_meta")&&F("_meta",()=>ki(e._meta));let n=F("actionId",()=>At(e.actionId,"actionId"));Qn(n)&&y("MANIFEST_INVALID",`actionId "${n}" is not projection-safe`,"actionId");let t=F("capability",()=>Ss(e.capability)),i=e.mutation;typeof i!="boolean"&&y("MANIFEST_INVALID","action mutation must be boolean","mutation");let r=F("inputSchema",()=>Us(e.inputSchema)),o;if(U(e,"dataInputs")){Array.isArray(e.dataInputs)||y("MANIFEST_INVALID","action dataInputs must be an array","dataInputs");let p=r.properties,l=new Set,u=[];for(let A of e.dataInputs)(typeof A!="string"||!U(p,A)||l.has(A))&&y("MANIFEST_INVALID","action dataInputs must be unique declared properties","dataInputs"),l.add(A),u.push(A);o=u;}let s=F("resultProjection",()=>gt(e.resultProjection)),a=F("backend",()=>Cs(e.backend)),d;U(e,"content")&&((a.type!=="skill"||!Nn(e.content))&&y("MANIFEST_INVALID","action content declaration is invalid","content"),d=xs(e.content));let c;if(U(e,"confirmation")){let p=e.confirmation;p!=="none"&&p!=="native"&&y("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 ws(e){return li(e)||y("MANIFEST_INVALID","skill backend env is invalid"),Object.freeze([...e])}function xs(e){return Object.freeze({...e.in===void 0?{}:{in:Object.freeze({...e.in})},...e.out===void 0?{}:{out:Object.freeze({...e.out})}})}function js(e){return B(e)||y("INITIAL_STATE_INVALID","initialState must be an object"),$(e,As,Is),e.path!=="ui/state.json"&&y("MANIFEST_INVALID","initialState path is not fixed"),U(e,"hash")?{path:"ui/state.json",hash:Ui(e.hash)}:{path:"ui/state.json"}}function vs(e){let n=["wasm","terminal","htmlDocuments"];return (!B(e)||Object.keys(e).length===0||Object.keys(e).some(t=>!n.includes(t)||e[t]!==true))&&y("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 Vs(e,n){let t;try{t=_i(e);}catch(i){let r=i!==null&&typeof i=="object"&&"code"in i&&typeof i.code=="string"?i.code:"CSP_ORIGIN_INVALID";return y("MANIFEST_INVALID",r,void 0,r.toLowerCase().replace(/_/g,"-"))}if(t.frameDomains.length>0&&y("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&&y("MANIFEST_INVALID","runtime.terminal cannot be combined with csp.connectDomains","connectDomains","terminal-with-connect-domains"),Object.freeze({connectDomains:t.connectDomains})}function Fs(e,n){Sn(B(e)&&U(e,"csp")?Es(e,"csp"):e,new Set,0,true,true),It(e),B(e)||y("MANIFEST_INVALID"),$(e,ss,as),U(e,"_meta")&&F("_meta",()=>ki(e._meta)),e.manifestVersion!==2&&y("MANIFEST_INVALID");let t;U(e,"runtime")&&(t=F("runtime",()=>vs(e.runtime)));let i;U(e,"csp")&&(i=F("csp",()=>Vs(e.csp,t)));let r=F("pluginId",()=>At(e.pluginId,"pluginId")),o=F("definitionId",()=>At(e.definitionId,"definitionId")),s=F("version",()=>le(e,"version",1)),a=F("name",()=>Di(e.name,"name")),d=F("description",()=>Di(e.description,"description")),c;U(e,"icon")&&((typeof e.icon!="string"||!/^[a-z][a-z0-9-]{0,63}$/.test(e.icon))&&y("MANIFEST_INVALID","icon is invalid","icon"),c=e.icon);let p;U(e,"tone")&&((typeof e.tone!="string"||!rt.includes(e.tone))&&y("MANIFEST_INVALID","tone is invalid","tone"),p=e.tone),e.entry!=="ui/index.html"&&y("MANIFEST_INVALID","entry path is not fixed","entry","fixed-value");let l;U(e,"entryHash")&&(l=F("entryHash",()=>Ui(e.entryHash)));let u;U(e,"initialState")&&(u=F("initialState",()=>js(e.initialState)));let A;U(e,"usage")&&(e.usage!=="card"&&e.usage!=="window"&&y("MANIFEST_INVALID","usage is invalid","usage"),A=e.usage);let I;U(e,"detailPanel")&&(typeof e.detailPanel!="boolean"&&y("MANIFEST_INVALID","detailPanel is invalid","detailPanel"),I=e.detailPanel);let h;if(U(e,"displayModes")){((A??tn)!==tn||!Array.isArray(e.displayModes)||e.displayModes.length===0)&&y("MANIFEST_INVALID","displayModes are only valid for window Apps","displayModes");let f=new Set(["inline","floating","focused"]);(new Set(e.displayModes).size!==e.displayModes.length||e.displayModes.some(m=>typeof m!="string"||!f.has(m)))&&y("MANIFEST_INVALID","displayModes are invalid","displayModes"),h=e.displayModes;}(A??tn)===tn&&I!==void 0&&y("MANIFEST_INVALID","detailPanel is card-only","detailPanel");let b=n.mode??"local";b!=="local"&&b!=="installed"&&b!=="published"&&y("MANIFEST_INVALID","manifest mode is invalid"),b!=="local"&&l===void 0&&y("MANIFEST_INVALID","installed manifests require entryHash","entryHash","required-when-installed"),b!=="local"&&u!==void 0&&u.hash===void 0&&y("MANIFEST_INVALID","installed manifests require initialState.hash","initialState.hash","required-when-installed"),(!Array.isArray(e.surfaces)||e.surfaces.length===0)&&y("MANIFEST_INVALID","surfaces are invalid","surfaces"),e.surfaces.length>2&&J("surfaces exceed the v2 limit","surfaces","too-many-items");let V=[],x=new Set;for(let f of e.surfaces)(typeof f!="string"||!st.includes(f))&&y("MANIFEST_INVALID","surface is unsupported","surfaces"),x.has(f)&&y("MANIFEST_INVALID","surfaces contain a duplicate","surfaces","duplicate-item"),x.add(f),V.push(f);B(e.size)||y("MANIFEST_INVALID","size must be an object","size"),F("size",()=>$(e.size,["height"]));let M=F("size",()=>le(e.size,"height",1));M>720&&J("size.height exceeds the v2 limit","size.height","too-large");let O=F("stateProjection",()=>gt(e.stateProjection)),H=e.summaryProjection===void 0?void 0:F("summaryProjection",()=>gt(e.summaryProjection));H!==void 0&&H.allow.some(f=>!O.allow.includes(f))&&y("MANIFEST_INVALID","summaryProjection must be a subset of stateProjection.allow","summaryProjection");let N=F("dataPaths",()=>Ls(e.dataPaths,O.allow));Array.isArray(e.actions)||y("MANIFEST_INVALID","actions must be an array","actions"),e.actions.length>32&&J("actions exceed the v2 limit","actions","too-many-items");let L=[],S=new Set;for(let[f,m]of e.actions.entries()){let T=`actions[${f}]`,P=F(T,()=>ks(m));if(S.has(P.actionId)&&y("MANIFEST_INVALID","actions contain a duplicate actionId",`${T}.actionId`,"duplicate-item"),P.backend.type==="core"&&P.backend.handler==="state.set"){P.mutation||y("MANIFEST_INVALID","state.set actions must be mutations",`${T}.mutation`);for(let D of Object.keys(P.inputSchema.properties))O.allow.includes(D)||y("MANIFEST_INVALID","state.set input paths must be projection-allowed",`${T}.inputSchema.properties`);}S.add(P.actionId),L.push(P);}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",...l===void 0?{}:{entryHash:l},...t===void 0?{}:{runtime:t},...i===void 0?{}:{csp:i},...u===void 0?{}:{initialState:u},...A===void 0?{}:{usage:A},...I===void 0?{}:{detailPanel:I},...h===void 0?{}:{displayModes:h},surfaces:V,size:{height:M},stateProjection:O,...H===void 0?{}:{summaryProjection:H},...N===void 0?{}:{dataPaths:N},actions:L}}function ki(e){B(e)||y("MANIFEST_INVALID","_meta must be an object");let n=JSON.stringify(e);(n===void 0||Buffer.byteLength(n,"utf8")>ps)&&J("_meta exceeds the 4 KiB limit",void 0,"meta-too-large");}function Bs(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 _t(e,n,t,i,r,o){if(typeof e=="string"){let s=r.length>0&&o.some(a=>Fe(r.join("."),a));return (e.length>4096||Ln(e,false,false,s))&&pe("state contains an unsafe string"),e}if(e===null||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)||pe("state contains a non-finite number"),e;(e===void 0||typeof e!="object"||typeof e=="function"||typeof e=="bigint")&&pe("state contains a non-JSON value"),t>8&&pe("state is too deep"),n.has(e)&&pe("state contains a cycle"),n.add(e);try{let s;if(Array.isArray(e))e.length>128&&pe("state array is too long"),s=e.map(d=>_t(d,n,t+1,65536,r,o));else {B(e)||pe("state contains a non-plain object");let d={};for(let[c,p]of Object.entries(e))(c.length>4096||!Dn.test(c)||He(c))&&(c.length>4096&&pe("state key is too long"),pe("state contains a reserved or invalid key")),d[c]=_t(p,n,t+1,65536,[...r,c],o);s=d;}let a=JSON.stringify(s);return (a===void 0||Buffer.byteLength(a,"utf8")>i)&&pe("state subtree is too large"),s}finally{n.delete(e);}}function Et(e,n=[]){B(e)||pe("initial state must be a JSON object");let t=_t(e,new Set,0,65536,[],n);return (t===null||Array.isArray(t)||typeof t!="object")&&pe(),t}function Hs(e,n={}){Sn(e),B(e)||y("MANIFEST_INVALID"),$(e,rs),e.manifestVersion!==1&&y("MANIFEST_INVALID");let t=yt(ge(e,"pluginId")),i=yt(ge(e,"definitionId")),r=le(e,"version",1),o=le(e,"primitiveSet",1),s=n.supportedPrimitiveSet??Kr;(!Number.isSafeInteger(s)||s<1)&&y("MANIFEST_INVALID"),o>s&&y("PRIMITIVE_SET_UNSUPPORTED"),B(e.activation)||y("MANIFEST_INVALID"),$(e.activation,["kind","language"]),e.activation.kind!=="fenced-code"&&y("MANIFEST_INVALID");let a=yt(ge(e.activation,"language")),d=Ns(e.schema),c=Ms(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 zs(e,n={}){return B(e)||y("MANIFEST_INVALID"),Object.hasOwn(e,"lineage")&&y("MANIFEST_INVALID","lineage is only allowed in product bundle indexes"),e.manifestVersion===2?Fs(e,n):Hs(e,n)}function sn(e,n={}){try{return zs(e,n)}catch(t){if(t instanceof oe)throw t;return y("MANIFEST_INVALID")}}function an(e,n={}){let t=sn(e,n);return t.manifestVersion===2?Bs(t):t}var Kr,Yr,qr,Ri,Zr,Qr,es,ns,Ei,ts,is,os,rs,ss,as,cs,ds,ps,ls,us,fs,ys,As,Is,gs,ms,hs,_s,Ts,oe,Dt=w(()=>{g();pi();De();dt();ui();ut();Ti();Re();Kr=1,Yr=/^[a-z][a-zA-Z0-9]*(\.[a-zA-Z0-9]+)+$/,qr=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,Ri=/^[A-Za-z][A-Za-z0-9_-]{0,63}$/,Zr=/<\/?[A-Za-z][^>]*>/,Qr=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,es=/^(?:https?|file|ftp|ws|wss):\/\//i,ns=/^\s*(?:javascript|data):/i,Ei=/data:[^,\s]*,/i,ts=/(?:https?|file|ftp|ws|wss):\/\//i,is=/javascript:/i,os=/(?:^[\s]*|[\s"'(=])(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)(?=[^\s"'<>])[^\s"'<>]*/,rs=["manifestVersion","pluginId","definitionId","version","primitiveSet","activation","schema","layout"],ss=["manifestVersion","pluginId","definitionId","version","name","description","entry","surfaces","size","stateProjection","actions"],as=["_meta","icon","tone","entryHash","runtime","csp","initialState","usage","detailPanel","displayModes","summaryProjection","dataPaths","focusedAiDataPaths"],cs=["actionId","capability","mutation","inputSchema","resultProjection","backend"],ds=["confirmation","dataInputs","content","_meta"],ps=4*1024,ls=["type","handler"],us=["type","command"],fs=["env"],ys=["type","entry"],As=["path"],Is=["hash"],gs=/^[0-9a-f]{64}$/,ms=/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/,hs=/[\r\n]/,_s=16,Ts=["card-shell","meta-banner","heading","labeled-text","step-flow","text-list"],oe=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,rn(t,this.path),this.rule)}};});function Fi(e){return typeof e=="string"&&e.length<=$s&&Gs.test(e)}function C(e,n,t,i,r){throw new he(e,{path:n,rule:t,...i===void 0?{}:{message:i},...r===void 0?{}:{file:r}})}function Z(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 W(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function fe(e){let n=`_meta["${Me}"]`;return e===void 0||e===""?n:e.startsWith("[")?`${n}${e}`:`${n}.${e}`}function Ks(e){return e.toLowerCase().replace(/_/g,"-")}function Ys(e){if(e===void 0||e==="")return "";let n=/^([^.[]+)(.*)$/.exec(e);if(!n)return fe(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 fe("definitionVersion");case "definitionId":return fe("definitionId");default:return fe(`${t}${i}`)}}function Bi(e,n,t){return {path:t(e.path),rule:e.rule??Ks(e.code),...e.message!==e.code?{message:e.message}:{},file:n}}function Hi(e){return JSON.parse(JSON.stringify(e))}function Pt(e,n,t=0,i=new Set){if(typeof e=="string"){e.length>4096&&C("LIMIT_EXCEEDED",n,"string-too-long"),(Js.test(e)||Ws.test(e)||Xs.test(e))&&C("UNSAFE_VALUE",n,"unsafe-value");return}if(!(e===null||typeof e=="boolean")){if(typeof e=="number"){Number.isFinite(e)||C("MANIFEST_INVALID",n,"non-finite-number");return}typeof e!="object"&&C("MANIFEST_INVALID",n,"non-json-value"),t>8&&C("LIMIT_EXCEEDED",n,"too-deep"),i.has(e)&&C("MANIFEST_INVALID",n,"cycle"),i.add(e);try{if(Array.isArray(e)){e.length>128&&C("LIMIT_EXCEEDED",n,"array-too-long"),e.forEach((r,o)=>Pt(r,`${n}[${o}]`,t+1,i));return}Z(e)||C("MANIFEST_INVALID",n,"non-plain-object");for(let[r,o]of Object.entries(e))Pt(o,n===""?r:`${n}.${r}`,t+1,i);}finally{i.delete(e);}}}function ue(e,n){return (typeof e!="string"||e.length===0)&&C("MANIFEST_INVALID",n,"string"),e}function We(e,n){return Z(e)||C("MANIFEST_INVALID",n,"object"),e}function qs(e,n){Array.isArray(e)||C("MANIFEST_INVALID",n,"array"),e.forEach((t,i)=>ue(t,`${n}[${i}]`));}function Zs(e,n){typeof e!="boolean"&&C("MANIFEST_INVALID",n,"boolean");}function cn(e,n,t,i){for(let r of Object.keys(e))!t.includes(r)&&!i.includes(r)&&C("MANIFEST_INVALID",`${n}.${r}`,"unknown-key");for(let r of t)W(e,r)||C("MANIFEST_INVALID",`${n}.${r}`,"missing-key");}function Qs(e,n){switch(Pt(n,e),e){case "long_description":case "homepage":case "documentation":case "support":case "icon":case "license":ue(n,e);return;case "author":{let t=We(n,e);cn(t,e,["name"],["email","url"]);for(let i of Object.keys(t))ue(t[i],`${e}.${i}`);return}case "repository":{let t=We(n,e);cn(t,e,[],["type","url"]);for(let i of Object.keys(t))ue(t[i],`${e}.${i}`);return}case "icons":{Array.isArray(n)||C("MANIFEST_INVALID",e,"array"),n.forEach((t,i)=>{let r=`${e}[${i}]`,o=We(t,r);cn(o,r,["src","size"],["theme"]),ue(o.src,`${r}.src`),ue(o.size,`${r}.size`),W(o,"theme")&&ue(o.theme,`${r}.theme`);});return}case "screenshots":case "keywords":case "privacy_policies":qs(n,e);return;case "tools":{Array.isArray(n)||C("MANIFEST_INVALID",e,"array"),n.forEach((t,i)=>{let r=`${e}[${i}]`,o=We(t,r);cn(o,r,["name"],["description"]),ue(o.name,`${r}.name`),W(o,"description")&&ue(o.description,`${r}.description`);});return}case "prompts":{Array.isArray(n)||C("MANIFEST_INVALID",e,"array"),n.forEach((t,i)=>{let r=`${e}[${i}]`,o=We(t,r);cn(o,r,["name","text"],["description","arguments"]),ue(o.name,`${r}.name`),ue(o.text,`${r}.text`);});return}case "tools_generated":case "prompts_generated":Zs(n,e);return;case "localization":case "compatibility":case "user_config":We(n,e);return;default:C("MANIFEST_INVALID",e,"unknown-key");}}function On(e){return typeof e=="string"&&Ie.test(e)?e:void 0}function zi(e){return Number.isSafeInteger(e)&&e>=1?e:void 0}function ea(e){let n=On(e.name);if(n===void 0)return;let t=e._meta,i=Z(t)?t[Me]:void 0,r=Z(i)?i:{},o=W(r,"definitionId")?On(r.definitionId):n,s=W(r,"definitionVersion")?zi(r.definitionVersion):1;return {pluginId:n,...o===void 0?{}:{definitionId:o},...s===void 0?{}:{definitionVersion:s}}}function na(e){let n=On(e.pluginId);if(n===void 0)return;let t=On(e.definitionId),i=zi(e.version);return {pluginId:n,...t===void 0?{}:{definitionId:t},...i===void 0?{}:{definitionVersion:i}}}function Ot(e){try{let n=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(e));if(!Z(n))return !1;let t=n._meta;return Z(t)&&W(t,Me)}catch{return false}}function ta(e,n){if(e===ke)return n.builtinOnly===true;let t=n._meta,i=Z(t)?t[Me]:void 0;return Z(i)&&i.builtinOnly===true}function ia(e,n){W(e,"server")&&C("MANIFEST_INVALID","server","server-unsupported","phase 1 runs CrewX-owned Apps only");for(let a of Object.keys(e))St.includes(a)||C("MANIFEST_INVALID",a,"unknown-key");for(let a of Lt)W(e,a)||C("MANIFEST_INVALID",a,"missing-key");e.manifest_version!==Nt&&C("MANIFEST_INVALID","manifest_version","unsupported-version",`manifest_version must be "${Nt}"`),Fi(e.version)||C("MANIFEST_INVALID","version","semver","version must be a semver.org version such as 0.1.0");let t=e._meta;Z(t)||C("MANIFEST_INVALID","_meta","object"),W(t,Me)||C("MANIFEST_INVALID",fe(),"missing-key");let i=t[Me];Z(i)||C("MANIFEST_INVALID",fe(),"object");for(let a of Object.keys(i))bt.includes(a)||Vi.includes(a)||C("MANIFEST_INVALID",fe(a),"unknown-key");for(let a of bt)a==="actions"&&n!==void 0||W(i,a)||C("MANIFEST_INVALID",fe(a),"missing-key");if(n!==void 0&&W(i,"actions")&&C("MANIFEST_INVALID",fe("actions"),"two-truths",`actions are declared in both ${X} and ${Y}; a server.ts App keeps them in the tools file only`),oa(i.actions),W(i,"definitionVersion")){let a=i.definitionVersion;(!Number.isSafeInteger(a)||a<1)&&C("MANIFEST_INVALID",fe("definitionVersion"),"positive-integer");}let r={};for(let a of vi)W(e,a)&&(Qs(a,e[a]),r[a]=Hi(e[a]));let o={};for(let[a,d]of Object.entries(t))a!==Me&&(o[a]=d);let s={manifestVersion:2,pluginId:e.name,definitionId:W(i,"definitionId")?i.definitionId:e.name,version:W(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:ze}}))),Object.keys(o).length>0&&(s._meta=o),{v2Input:s,...Object.keys(o).length>0?{vendorMeta:o}:{},passthrough:r}}function oa(e){Array.isArray(e)&&e.forEach((n,t)=>{let i=Z(n)?n.backend:void 0;Z(i)&&W(i,"entry")&&C("MANIFEST_INVALID",fe(`actions[${t}].backend.entry`),"entry-not-authorable",`an action in ${X} cannot name an entry; a server.ts App declares its actions in ${Y}`);});}function ra(e,n,t){Z(e)||C("MANIFEST_INVALID","","not-object","manifest.json must be a JSON object",X);let i;try{i=ia(e,t);}catch(s){throw s instanceof he?new he(s.code,{...s.reason,file:X}):s}let r;try{let s=sn(i.v2Input,{mode:n.mode??"local"});s.manifestVersion!==2&&C("MANIFEST_INVALID","","v2-required"),r=s;}catch(s){throw s instanceof oe?new he(s.code,Bi(s,X,Ys)):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 he("MANIFEST_INVALID",{path:`tools[${d}].name`,rule:"tool-not-action",message:"every tools[].name must be an action id",file:X})});}return {file:X,manifest:r,v2Input:i.v2Input,releaseVersion:e.version,...Object.keys(i.passthrough).length>0?{mcpb:i.passthrough}:{}}}function sa(e,n){try{let t=sn(e,{mode:n.mode??"local"});if(t.manifestVersion!==2)throw new he("MANIFEST_INVALID",{path:"manifestVersion",rule:"v2-required",message:"a workspace App requires manifestVersion 2",file:ke});return {file:ke,manifest:t,v2Input:e}}catch(t){throw t instanceof oe?new he(t.code,Bi(t,ke,i=>i??"")):t}}function Mt(e){return ie(an(e).definition)}function xi(e){let{entryHash:n,initialState:t,...i}=e,r={...i};return t!==void 0&&(r.initialState={path:t.path}),Hi(r)}function aa(e,n){let t=xi(e),i=xi(n);return [...new Set([...Object.keys(t),...Object.keys(i)])].sort().filter(o=>q(t[o]??null)!==q(i[o]??null))}function ca(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 da(e,n){let t=aa(e,n),i=ca(e,n),r="";try{let o=Mt(e),s=Mt(n);i=i||o!==s,r=` (definition hash ${o.slice(0,12)} vs ${s.slice(0,12)})`;}catch{i=true;}t.length===0&&!i||C("MANIFEST_DUAL_MISMATCH","","dual-manifest-mismatch",`${X} and ${ke} normalize to different definitions${r}`+(t.length>0?`; differing fields: ${t.join(", ")}`:""));}function me(e,n,t="MANIFEST_INVALID",i){return {code:t,reason:{path:e,rule:n,...i===void 0?{}:{message:i},file:Y},files:[]}}function ji(e){return {...me("","tools-needs-manifest-json","MANIFEST_INVALID",`${Y} is read with ${X} only`),files:e}}function pa(e,n){if(e.byteLength>n)return {failure:me("","file-too-large","LIMIT_EXCEEDED")};let t;try{t=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(e));}catch{return {failure:me("","invalid-json")}}if(!Z(t))return {failure:me("","not-object","MANIFEST_INVALID",`${Y} must be a JSON object`)};for(let r of Object.keys(t))if(r!=="schemaVersion"&&r!=="actions")return {failure:me(r,"unknown-key")};for(let r of ["schemaVersion","actions"])if(!W(t,r))return {failure:me(r,"missing-key")};if(t.schemaVersion!==1)return {failure:me("schemaVersion","unsupported-version","MANIFEST_INVALID",`schemaVersion must be ${1}`)};let i=t.actions;if(!Array.isArray(i))return {failure:me("actions","array")};for(let[r,o]of i.entries()){if(!Z(o))return {failure:me(`actions[${r}]`,"object")};if(W(o,"backend"))return {failure:me(`actions[${r}].backend`,"tools-backend","MANIFEST_INVALID",`an action in ${Y} cannot carry a backend`)}}return {actions:i}}function la(e,n){let t=n.maxBytes??262144,i=[],r=new TextDecoder("utf-8",{fatal:true});for(let o of re){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(!Z(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 Rt(e,n={}){let{parsed:t,failure:i}=la(e,n),r=re.filter(A=>e[A]!==void 0);if(i!==void 0)return {ok:false,rejection:i,parseFailure:true,builtinOnly:false};let o=e[Y],s=o===void 0?void 0:pa(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:[]}:ji(r),parseFailure:true,builtinOnly:false};let a=t[0],d=a.file===X?ea(a.raw):na(a.raw),c=t.some(A=>ta(A.file,A.raw)),p;if(s!==void 0){let A=t.some(I=>I.file===X)?s.failure:ji(r);if(A!==void 0)return {ok:false,rejection:A,parseFailure:false,...d===void 0?{}:{identity:d},builtinOnly:c};p=s.actions;}let l=[];try{for(let A of t)l.push(A.file===X?ra(A.raw,n,p):sa(A.raw,n));l.length===2&&da(l[0].manifest,l[1].manifest);}catch(A){if(A instanceof he)return {ok:false,rejection:{code:A.code,reason:A.reason,files:A.code==="MANIFEST_DUAL_MISMATCH"?[...re]:A.reason.file===void 0||A.reason.file===Y?r:[A.reason.file]},parseFailure:false,...d===void 0?{}:{identity:d},builtinOnly:c};throw A}let u=l[0];return {ok:true,...u,identity:d??{pluginId:u.manifest.pluginId},files:r}}var X,ke,re,Nt,Me,St,Lt,vi,bt,Vi,Gs,$s,Js,Ws,Xs,he,Ut=w(()=>{g();Ue();De();ut();Re();Dt();X="manifest.json",ke="ui-plugin.json",re=[X,ke],Nt="0.3",Me="dev.crewx",St=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"]),Lt=Object.freeze(["manifest_version","name","display_name","version","description","_meta"]),vi=Object.freeze(St.filter(e=>e!=="server"&&!Lt.includes(e))),bt=Object.freeze(["entry","surfaces","size","stateProjection","actions"]),Vi=Object.freeze(["definitionId","definitionVersion","icon","tone","entryHash","runtime","initialState","usage","detailPanel","displayModes","summaryProjection","dataPaths","focusedAiDataPaths","csp"]),Gs=/^(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-]+)*))?$/,$s=256,Js=/<\/?[A-Za-z][^>]*>/,Ws=/^\s*javascript:/i,Xs=/data:[^,\s]*,/i;he=class extends Error{constructor(t,i){super(`${t}: ${i.path||"<file>"} (${i.rule})`);this.code=t;this.reason=i;}code;reason};});var Gi=w(()=>{g();di();Ut();Dt();Re();});function E(e,n=e){throw new _e(e,n)}var _e,Un=w(()=>{g();_e=class extends Error{constructor(t,i=t){super(i);this.code=t;}code;name="McpAppContractError"};});var $i=w(()=>{g();});var Ji=w(()=>{g();Ue();De();Un();$i();});function Xi(e,n){return Wi.add(e),n!==void 0&&ua.set(e,n),e}function Xe(e){return e!==null&&typeof e=="object"&&Wi.has(e)}var Wi,ua,Cn=w(()=>{g();Wi=new WeakSet,ua=new WeakMap;});function ln(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Ct(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 qi(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;for(let n of Object.values(e))qi(n);return Object.freeze(e)}function Q(e){throw new Te("LINEAGE_INVALID",e)}function ha(e){throw new Te("LINEAGE_STALE",e)}function Zi(e){if(!ln(e)||!Ct(e,Aa,Ia)||!ln(e.actions))return Q("Lineage definition shape is invalid");for(let n of Object.values(e.actions))if(!ln(n)||!Ct(n,ga,ma))return Q("Lineage action definition shape is invalid");return e}function _a(e){if(!ln(e)||!Ct(e,fa,ya))return Q("Lineage entry shape is invalid");if(!Number.isSafeInteger(e.version)||e.version<1||typeof e.hash!="string"||!Ki.test(e.hash))return Q("Lineage entry identity is invalid");if(e.sourceHash!==void 0&&(typeof e.sourceHash!="string"||!Ki.test(e.sourceHash)))return Q("Lineage source hash is invalid");if(e.compat!==void 0&&e.compat!=="break")return Q("Lineage compatibility marker is invalid");let n=Zi(e.definition);if(n.version!==e.version)return Q("Lineage version does not match its definition");if(e.sourceHash!==void 0&&n.sourceHash!==e.sourceHash)return Q("Lineage source hash does not match its definition");let t;try{t=ie(n),de({...n,hash:e.hash});}catch{return Q("Lineage definition is invalid")}return t!==e.hash?Q("Lineage definition hash does not match"):qi({version:e.version,hash:e.hash,definition:n,...e.sourceHash===void 0?{}:{sourceHash:e.sourceHash},...e.compat===void 0?{}:{compat:e.compat}})}function Yi(e){return e.stateProjection?.allow??[]}function Ta(e,n){let t=[],i=new Set(Yi(n));Yi(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 Ea(e,n){return q(e)===q(n)}function kt(e,n){if(!Array.isArray(e)||e.length===0)return Q("Definition lineage is missing");if(!ln(n)||typeof n.hash!="string")return Q("Current definition is invalid");let t,i;try{let{hash:a,...d}=n;i=Zi(d),t={...i,hash:a},de(t);}catch{return Q("Current definition is invalid")}let r=e.map(_a),o=r[0].definition.id;if(r.some(a=>a.definition.id!==o))return Q("Lineage definition ids do not match");if(r.some((a,d)=>d>0&&a.version<=r[d-1].version))return Q("Lineage generations are not in increasing version order");if(r.some((a,d)=>r.findIndex(c=>c.hash===a.hash)!==d))return Q("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||!Ea(s.definition,i))return ha("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 l of Object.keys(p.definition.actions))a.has(l)&&d.add(l);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 Te("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=Ta(r[a].definition,t);if(c.length>0)throw new Te("LINEAGE_INVALID",`Lineage compatibility failed: ${c.join(", ")}`,c)}return Object.freeze({entries:Object.freeze(r),current:t})}var Te,Ki,fa,ya,Aa,Ia,ga,ma,wt=w(()=>{g();Ue();De();Te=class extends Error{constructor(t,i=t,r=[]){super(i);this.code=t;this.violations=r;}code;violations;name="UiDefinitionLineageError"},Ki=/^[0-9a-f]{64}$/,fa=["version","hash","definition"],ya=["sourceHash","compat"],Aa=["id","version","actions"],Ia=["sourceHash","usage","detailPanel","displayModes","renderer","surfaces","stateProjection","dataPaths","summaryProjection","legacy"],ga=["capabilities"],ma=["inputKeys","dataInputs","confirmation","resultProjection","content","env"];});var Qi,eo,no,xt,to=w(()=>{g();Qi="text/html;profile=mcp-app",eo=["crewx_app_terminal_connect","crewx_app_html_viewer_open"],no=["crewx_listWorkspaces","crewx_queryAgent","crewx_executeAgent","crewx_getTaskResult","crewx_listTasks","crewx_listAgents","callBrowser","openTab","listTabs","closeTab"],xt="text/html";});function io(e,n=[],t){if(e.content!==void 0||e.confirmation!=="none")return "denied";let i=Da();return i&&Object.hasOwn(i,e.actionId)?i[e.actionId]:e.backend?.type==="core"&&e.backend.handler.startsWith("host.")?"denied":e.backend?.type==="core"&&e.backend.handler==="state.set"?"allowed":e.backend?.type==="skill"?"approval_required":e.backend===void 0&&n.includes(e.actionId)?"allowed":"denied"}function Da(e){return;}var oo=w(()=>{g();Ue();Cn();});function Ua(e){let n=[];return e?.terminal===true&&n.push({name:"crewx_app_terminal_connect",description:"Open a local-only terminal session for this App.",inputSchema:{type:"object",properties:{workspace:{type:"string"},threadId:{type:"string"},instanceId:{type:"string"}},required:["threadId","instanceId"],additionalProperties:false},textFallback:"A local terminal connection is ready for this App.",visibility:Object.freeze(["app"]),kind:"host",resourceBinding:Le}),e?.htmlDocuments===true&&n.push({name:"crewx_app_html_viewer_open",description:"List workspace HTML documents or open one through a short-lived Host capability.",inputSchema:{type:"object",properties:{workspace:{type:"string"},threadId:{type:"string"},instanceId:{type:"string"},operation:{type:"string",enum:["list","open"]},documentId:{type:"string"}},required:["threadId","instanceId","operation"],additionalProperties:false},textFallback:"Workspace HTML documents are available through this App.",visibility:Object.freeze(["app"]),kind:"host",resourceBinding:Le}),n}function Oe(e,n,t){return (typeof e!="string"||!so.test(e))&&E(n,`${t} must be a safe identifier`),e}function un(e,n,t){let i=e??t;return (typeof i!="string"||i.trim().length===0||i.length>Pa)&&E("TOOL_INVALID",`${n} must be a meaningful description`),i}function vt(e){return (typeof e!="string"||e.length===0||e.length>Ke||!/<html(?:\s|>)/i.test(e)||!/<\/html\s*>/i.test(e))&&E("HTML_INVALID","MCP App HTML must be a non-empty HTML document"),e}function fn(e,n=0){try{let t=ce(e,n);return t.type!==void 0&&t.type!=="object"&&E("TOOL_INVALID","MCP App inputSchema must describe an object"),t}catch(t){if(t instanceof _e)throw t;E("TOOL_INVALID","MCP App inputSchema must be projection-safe JSON");}}function Ca(e){return (typeof e!="string"||e.trim().length===0||e.length>Ma)&&E("TOOL_INVALID","MCP App tools require a meaningful text fallback"),e}function ka(e){e===void 0&&E("TOOL_INVALID","MCP App tool visibility is required");let n=[...e];return (n.length===0||n.some(t=>t!=="model"&&t!=="app")||new Set(n).size!==n.length)&&E("TOOL_INVALID","MCP App tool visibility must contain model and/or app once"),n}function po(e){return (typeof e!="string"||!ao.test(e))&&E("RESOURCE_URI_INVALID","MCP App resource URI is not a registered ui:// URI"),e}function lo(e){let n=Oe(e.appId,"APP_ID_INVALID","Local App id"),t=un(e.name,"Local App name",n),i=un(e.description,"Local App description",`${t} interactive view`),r=jn(e.definition),o=vt(e.html),s=kn(e.entryHash,"Local App entry hash"),a=e.entryBytes===void 0?Array.from(new TextEncoder().encode(o)):xn(e.entryBytes,"Local App entry bytes");(wn(a)!==s||yo(a)!==o)&&E("HTML_INVALID","Local App entry bytes do not match the HTML hash");let d=wa(e),c=[];Array.isArray(e.actions)||E("TOOL_INVALID","Local App actions must be an array");for(let M of e.actions){let O=Oe(M.actionId,"TOOL_ID_INVALID","Local App action id");(c.includes(O)||!Object.prototype.hasOwnProperty.call(r.actions,O))&&E("TOOL_INVALID",`Local App action is not declared by the UI definition: ${O}`),c.push(O);}let p=Oe(e.readToolName,"TOOL_ID_INVALID","Local App read tool name"),l=e.actionToolName===void 0?void 0:Oe(e.actionToolName,"TOOL_ID_INVALID","Local App action tool name");c.length===0&&l!==void 0&&E("TOOL_INVALID","A static local App cannot register an action tool"),c.length>0&&l===void 0&&E("TOOL_INVALID","A stateful local App requires an action tool name"),l!==void 0&&l===p&&E("TOOL_ID_CONFLICT",`Local App read and action tools share a name: ${p}`);let u=Ua(e.runtime);u.some(M=>M.name===p||M.name===l)&&E("TOOL_ID_CONFLICT","Local App read or action tool conflicts with a requested Host capability");let A={name:p,description:`${t} current state`,inputSchema:Ra,textFallback:`${t} current state is available through its open instance.`,visibility:Object.freeze(["model","app"]),kind:"read",resourceBinding:Le},I=[Object.freeze(A)];if(I.push(...u.map(M=>Object.freeze(M))),l!==void 0){let M={name:l,description:`${t} actions`,inputSchema:Vt(e.actions),textFallback:`${t} action requests are handled by the open App instance.`,visibility:Object.freeze(["app"]),kind:"action",resourceBinding:Le,actionIds:Object.freeze([...c])};I.push(Object.freeze(M));}let h=[],b=new Set(I.map(M=>M.name));if(l!==void 0)for(let M of e.actions){let O=`${l}__${M.actionId}`;if(O.length>128||!so.test(O)){h.push(Object.freeze({toolName:O,actionId:M.actionId,reason:"name_too_long"}));continue}if(b.has(O)){h.push(Object.freeze({toolName:O,actionId:M.actionId,reason:"name_collision"}));continue}let H=io({actionId:M.actionId,confirmation:r.actions[M.actionId]?.confirmation,content:r.actions[M.actionId]?.content,backend:M.backend},e.modelActions),N=Object.freeze(H==="denied"?["app"]:["model","app"]),L={name:O,description:`${O} action`,inputSchema:fn(M.inputSchema),textFallback:`${O} action requests are handled by the open App instance.`,visibility:N,kind:"action",resourceBinding:Le,actionId:M.actionId,actionIds:Object.freeze([M.actionId]),_meta:Object.freeze({ui:Object.freeze({visibility:N})})};I.push(Object.freeze(L)),b.add(O);}let V={mimeType:xt,entryHash:s,html:o,bytes:Object.freeze([...a]),...d===void 0?{}:{initialState:Object.freeze({hash:d.hash,bytes:Object.freeze([...d.bytes])})}},x={appId:n,name:t,description:i,...e.icon===void 0?{}:{icon:Ao(e.icon)},...e.tone===void 0?{}:{tone:Io(e.tone)},builtinOnly:false,definition:r,...e.runtime===void 0?{}:{runtime:Object.freeze({...e.runtime})},resourceBinding:Le,resource:Object.freeze(V),tools:Object.freeze(I),toolDiagnostics:Object.freeze(h)};return K(x)}function uo(e={}){return new jt(e)}function Vt(e){if(e.length===0)return fn({type:"object",properties:{},additionalProperties:false});let n=e.map(i=>i.actionId),t=new Map;for(let i of e)t.set(i.actionId,fn(i.inputSchema));return fn(xa(n,t),co)}function wa(e){let n=e.definition.dataPaths??[];if(e.initialStateBytes===void 0){e.initialStateHash!==void 0&&E("STATE_INVALID","Initial state hash has no bytes"),e.initialState!==void 0&&ce(e.initialState,0,n);return}e.initialStateHash===void 0&&E("STATE_INVALID","Initial state bytes require a hash");let t=kn(e.initialStateHash,"Initial state hash"),i=xn(e.initialStateBytes,"Initial state bytes");wn(i)!==t&&E("STATE_INVALID","Initial state bytes do not match the hash");let r;try{let o=new TextDecoder("utf-8",{fatal:!0}).decode(Uint8Array.from(i));r=ce(JSON.parse(o),0,n);}catch{E("STATE_INVALID","Initial state bytes are not projection-safe JSON");}return e.initialState!==void 0&&q(r)!==q(ce(e.initialState,0,n))&&E("STATE_INVALID","Initial state bytes do not match the state value"),{hash:t,bytes:Object.freeze([...i])}}function xa(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})}function ja(e){let n=yn(e),t=Oe(n.appId,"APP_ID_INVALID","MCP App id"),i=vt(n.html);po(n.uiUri);let r=n.definition===void 0?void 0:jn(n.definition),o=e.provenance;o!==void 0&&(!Xe(o)||o.appId!==t||o.definitionId!==r?.id||o.version!==r?.version||o.definitionHash!==r?.hash)&&E("TOOL_INVALID","Product App built-in registration provenance is not verified");let s=Object.freeze(n.tools.map(c=>K(yn(c)))),a=K({...n,appId:t,html:i,...r===void 0?{}:{definition:r},...o===void 0?{}:{provenance:o},tools:s}),d=K({uri:a.uiUri,mimeType:Qi,text:i,...a.csp===void 0?{}:{_meta:{ui:{csp:a.csp}}}});return K({appId:t,name:a.name,description:a.description,...a.icon===void 0?{}:{icon:a.icon},...a.tone===void 0?{}:{tone:a.tone},builtinOnly:a.builtinOnly,uiUri:a.uiUri,...r===void 0?{}:{definition:r},resourceBinding:Object.freeze({kind:"mcp",uri:a.uiUri}),resource:d,tools:s,descriptor:a})}function va(e){(e.resourceBinding.kind!=="instance"||e.builtinOnly!==false)&&E("STATE_INVALID","Local App registration binding is invalid"),Object.prototype.hasOwnProperty.call(e,"uiUri")&&E("STATE_INVALID","Local App registration cannot contain uiUri");let n=Oe(e.appId,"APP_ID_INVALID","Local App id"),t=jn(e.definition),i=e.provenance;i!==void 0&&(!Xe(i)||i.appId!==n||i.definitionId!==t.id||i.version!==t.version||i.definitionHash!==t.hash)&&E("TOOL_INVALID","Product App local registration provenance is not verified");let r=vt(e.resource.html),o=kn(e.resource.entryHash,"Local App entry hash"),s=xn(e.resource.bytes,"Local App entry bytes");(wn(s)!==o||yo(s)!==r)&&E("HTML_INVALID","Local App entry bytes do not match the HTML hash");let a=e.resource.initialState===void 0?void 0:{hash:kn(e.resource.initialState.hash,"Initial state hash"),bytes:xn(e.resource.initialState.bytes,"Initial state bytes")};a&&wn(a.bytes)!==a.hash&&E("STATE_INVALID","Initial state bytes do not match the hash");let d=e.tools.map(c=>{Oe(c.name,"TOOL_ID_INVALID","Local App tool name"),un(c.description,"Local App tool description","Local App tool"),Ca(c.textFallback);let p=fn(c.inputSchema,c.kind==="action"&&!("actionId"in c)?co:0);if((c.resourceBinding.kind!=="instance"||Object.prototype.hasOwnProperty.call(c,"resourceUri"))&&E("TOOL_INVALID","Local App tools cannot carry an MCP resource URI"),c.kind==="host")return (!Oa.has(c.name)||c.visibility.length!==1||c.visibility[0]!=="app"||Object.prototype.hasOwnProperty.call(c,"actionId"))&&E("TOOL_INVALID","Local App Host tools must use an allow-listed name and app-only visibility"),K({...c,inputSchema:p,visibility:Object.freeze(["app"])});if(c.kind==="action"){if("actionId"in c){let u=Oe(c.actionId,"TOOL_ID_INVALID","Local App action id");Object.prototype.hasOwnProperty.call(t.actions,u)||E("TOOL_INVALID","Local App action tool references an undeclared action");let A=ka(c._meta.ui.visibility);return JSON.stringify(A)!==JSON.stringify(c.visibility)&&E("TOOL_INVALID","Local App action metadata visibility must match the tool visibility"),K({...c,actionId:u,actionIds:Object.freeze([u]),inputSchema:p,visibility:A,_meta:{ui:{visibility:A}}})}let l=[...c.actionIds];return (l.length===0||l.some(u=>!Object.prototype.hasOwnProperty.call(t.actions,u)))&&E("TOOL_INVALID","Local App action tool references an undeclared action"),K({...c,inputSchema:p,actionIds:Object.freeze(l)})}return K({...c,inputSchema:p})});return K({appId:n,name:un(e.name,"Local App name",e.appId),description:un(e.description,"Local App description",e.name),...e.icon===void 0?{}:{icon:Ao(e.icon)},...e.tone===void 0?{}:{tone:Io(e.tone)},builtinOnly:false,definition:t,...e.runtime===void 0?{}:{runtime:Object.freeze({...e.runtime})},...i===void 0?{}:{provenance:i},resourceBinding:Le,resource:K({mimeType:xt,entryHash:o,html:r,bytes:Object.freeze([...s]),...a===void 0?{}:{initialState:Object.freeze({hash:a.hash,bytes:Object.freeze([...a.bytes])})}}),tools:Object.freeze(d),toolDiagnostics:Object.freeze([...e.toolDiagnostics??[]])})}function Va(e){return K({appId:e.appId,name:e.name,description:e.description,...e.icon===void 0?{}:{icon:e.icon},...e.tone===void 0?{}:{tone:e.tone},builtinOnly:false,definition:fo(e.definition),...e.provenance===void 0?{}:{provenance:e.provenance},entryHash:e.resource.entryHash,resourceBinding:Le,tools:e.tools})}function Fa(e){return K({appId:e.appId,name:e.name,description:e.description,...e.icon===void 0?{}:{icon:e.icon},...e.tone===void 0?{}:{tone:e.tone},builtinOnly:e.builtinOnly,uiUri:e.uiUri,...e.definition===void 0?{}:{definition:fo(e.definition)},resourceBinding:Object.freeze({kind:"mcp",uri:e.uiUri}),tools:e.tools})}function jn(e){try{if(Object.isFrozen(e))return de(e),K(e);let n=yn(e);return de(n),K(n)}catch(n){if(n instanceof _e)throw n;E("STATE_INVALID","UI definition is not a valid immutable definition");}}function fo(e){return K({id:e.id,version:e.version,hash:e.hash})}function Ba(e){return e!==null&&typeof e=="object"&&typeof e.id=="string"&&Number.isSafeInteger(e.version)&&typeof e.hash=="string"}function ro(e,n,t){return `${e}\0${n}\0${t}`}function kn(e,n){return (typeof e!="string"||!ba.test(e))&&E("SERIALIZATION_INVALID",`${n} is invalid`),e}function wn(e){return crypto.createHash("sha256").update(Uint8Array.from(e)).digest("hex")}function xn(e,n){return (!Array.isArray(e)||e.some(t=>!Number.isInteger(t)||t<0||t>255))&&E("SERIALIZATION_INVALID",`${n} is invalid`),[...e]}function yo(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(Uint8Array.from(e))}catch{E("SERIALIZATION_INVALID","UTF-8 bytes are invalid");}}function Ao(e){return (typeof e!="string"||!Sa.test(e))&&E("TOOL_INVALID","MCP App icon is invalid"),e}function Io(e){return (typeof e!="string"||!La.has(e))&&E("TOOL_INVALID","MCP App tone is invalid"),e}function yn(e,n=new Map){if(e===null||typeof e!="object")return e;let t=e;if(n.has(t)&&E("SERIALIZATION_INVALID","MCP App value contains a cycle"),Array.isArray(e)){let o=[];n.set(t,o);for(let s of e)o.push(yn(s,n));return n.delete(t),o}let i;try{i=Object.getPrototypeOf(e);}catch{E("SERIALIZATION_INVALID","MCP App value cannot be cloned");}i!==Object.prototype&&i!==null&&E("SERIALIZATION_INVALID","MCP App value must be plain JSON");let r={};n.set(t,r);for(let[o,s]of Object.entries(e))Object.defineProperty(r,o,{configurable:true,enumerable:true,value:yn(s,n),writable:true});return n.delete(t),r}function K(e,n=new Set){if(e===null||typeof e!="object"||n.has(e))return e;n.add(e);for(let t of Object.values(e))K(t,n);return Object.freeze(e),e}var so,ao,ba,Ke,Pa,Ma,Sa,La,Oa,Le,Ra,co,jt,vn=w(()=>{g();Ji();Ue();De();Cn();Un();wt();to();oo();so=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,ao=/^ui:\/\/crewx\/([A-Za-z][A-Za-z0-9._-]{0,127})\/([0-9a-f]{12})$/,ba=/^[0-9a-f]{64}$/,Ke=8*1024*1024,Pa=8*1024,Ma=16*1024,Sa=/^[a-z][a-z0-9-]{0,63}$/,La=new Set(["blue","violet","emerald","amber","rose","sky","slate","indigo"]),Oa=new Set(eo),new Set(no),Le=Object.freeze({kind:"instance"}),Ra=Object.freeze({type:"object",properties:Object.freeze({}),additionalProperties:false});co=4;jt=class{builtinApps;localApps;builtinDescriptors;builtinTools;mcpResources=new Map;localById=new Map;registrationById=new Map;launcherById=new Map;definitionByKey=new Map;handlerByKey=new Map;mcpToolByName=new Map;localToolByName=new Map;constructor(n){let t=n.builtins??n.builtin,i=[],r=[],o=[],s=new Set,a=new Set;for(let l of t?.listMcpApps()??[]){let u=ja(l);s.has(u.appId)&&E("APP_ID_CONFLICT",`MCP App id is already registered: ${u.appId}`),s.add(u.appId);let A=u.tools;for(let I of A)a.has(I.name)&&E("TOOL_ID_CONFLICT",`MCP App tool name is already registered: ${I.name}`),a.add(I.name),this.mcpToolByName.set(I.name,I),o.push(I);this.mcpResources.set(u.resource.uri,u.resource),i.push(u),r.push(u.descriptor);}let d=(n.localApps??n.locals??[]).map(va),c=new Set(d.flatMap(l=>l.tools.filter(u=>!(u.kind==="action"&&"actionId"in u)).map(u=>u.name))),p=[];for(let l of d){let u=l;s.has(u.appId)&&E("APP_ID_CONFLICT",`MCP App id is already registered: ${u.appId}`),s.add(u.appId);let A=[],I=[...u.toolDiagnostics??[]];for(let h of u.tools){if(a.has(h.name)){if(h.kind==="host"&&this.localToolByName.get(h.name)?.kind==="host"){A.push(h);continue}if(h.kind==="action"&&"actionId"in h){I.push(Object.freeze({toolName:h.name,actionId:h.actionId,reason:"name_collision"}));continue}E("TOOL_ID_CONFLICT",`MCP App tool name is already registered: ${h.name}`);}if(h.kind==="action"&&"actionId"in h&&c.has(h.name)){I.push(Object.freeze({toolName:h.name,actionId:h.actionId,reason:"name_collision"}));continue}a.add(h.name),this.localToolByName.set(h.name,h),A.push(h);}(A.length!==u.tools.length||I.length!==(u.toolDiagnostics?.length??0))&&(u=K({...u,tools:Object.freeze(A),toolDiagnostics:Object.freeze(I)})),p.push(u),this.localById.set(u.appId,u);}for(let l of i)this.registrationById.set(l.appId,l),this.launcherById.set(l.appId,Fa(l)),l.definition&&this.addDefinition(l.definition);for(let l of p)this.registrationById.set(l.appId,l),this.launcherById.set(l.appId,Va(l)),this.addDefinition(l.definition);for(let l of n.definitions??[])this.addDefinition(l);for(let l of n.handlers??[])this.addHandler(l);this.builtinApps=Object.freeze(i),this.localApps=Object.freeze(p),this.builtinDescriptors=Object.freeze(r),this.builtinTools=Object.freeze(o);}getMcpApp(n){return this.builtinApps.find(t=>t.appId===n)?.descriptor??null}listMcpApps(){return this.builtinDescriptors}listMcpAppTools(){return this.builtinTools}resolveMcpAppTool(n){return this.mcpToolByName.get(n)??null}resolveMcpAppResource(n){return typeof n!="string"||!ao.test(n)?null:this.mcpResources.get(n)??null}requireMcpAppResource(n){po(n);let t=this.mcpResources.get(n);return t||E("RESOURCE_NOT_FOUND",`MCP App resource is not registered: ${n}`),t}listLocalMcpApps(){return this.localApps}getLocalMcpApp(n){return this.localById.get(n)??null}listLocalMcpAppTools(){return Object.freeze([...this.localToolByName.values()])}resolveLocalMcpAppTool(n){return this.localToolByName.get(n)??null}resolveLocalMcpAppResource(n,t){let i=this.localById.get(n);return !i||t!==void 0&&i.definition.hash!==t?null:i.resource}listRegistrations(){return Object.freeze([...this.builtinApps,...this.localApps])}getRegistration(n){return this.registrationById.get(n)??null}listLaunchers(){return Object.freeze([...this.launcherById.values()].filter(n=>{let t=this.registrationById.get(n.appId),i=t?"descriptor"in t?t.descriptor.provenance:t.provenance:void 0,r=Xe(i)&&i.launcher===false;return t?.definition?.usage!=="card"&&!r}))}getLauncher(n){return this.launcherById.get(n)??null}resolveDefinition(n){if(!Ba(n))return null;let t=this.definitionByKey.get(lt(n));if(!t||t.hash!==n.hash)return null;try{return ie(t)===t.hash?t:null}catch{return null}}resolveActionHandler(n,t,i){return typeof n!="string"||typeof i!="string"||!Number.isSafeInteger(t)?null:this.handlerByKey.get(ro(n,t,i))??null}addDefinition(n){let t=jn(n),i=lt(t),r=this.definitionByKey.get(i);r&&r.hash!==t.hash&&E("STATE_INVALID",`UI definition generation conflicts: ${i}`),r||this.definitionByKey.set(i,t);}addHandler(n){(!n||typeof n.definitionId!="string"||typeof n.actionId!="string"||!Number.isSafeInteger(n.version)||n.version<1||typeof n.handle!="function")&&E("STATE_INVALID","UI action handler registration is invalid");let t=ro(n.definitionId,n.version,n.actionId);this.handlerByKey.has(t)&&E("TOOL_INVALID",`Duplicate UI action handler registration: ${t}`),this.handlerByKey.set(t,Object.freeze({...n}));}};});function Ha(e){let n=lo({appId:e.appId,name:e.name,description:e.description,...e.icon===void 0?{}:{icon:e.icon},...e.tone===void 0?{}:{tone:e.tone},...e.normalized.manifest.runtime===void 0?{}:{runtime:e.normalized.manifest.runtime},definition:e.definition,html:e.html,entryHash:e.entryHash,entryBytes:e.entryBytes,initialState:e.initialState,...e.initialStateHash===void 0?{}:{initialStateHash:e.initialStateHash},...e.initialStateBytes===void 0?{}:{initialStateBytes:e.initialStateBytes},readToolName:e.toolNames.read,...e.toolNames.action===void 0?{}:{actionToolName:e.toolNames.action},actions:e.normalized.manifest.actions.map(i=>({actionId:i.actionId,inputSchema:i.inputSchema,backend:i.backend}))});return e.provenance===void 0?n:Object.freeze({...n,provenance:e.provenance})}function go(e){let n=e.normalized.manifest.actions;if(n.some(i=>i.backend.type==="skill")&&n.some(i=>i.backend.type==="core"))throw new Error("Mixed workspace App execution models");let t=Ha(e);uo({localApps:[t],definitions:[e.definition]});}var mo=w(()=>{g();vn();});function ho(){return Object.freeze({[Ft]:{candidates:new Map,assetCatalogs:new Map}})}function za(e){if(e===null||typeof e!="object"||!(Ft in e))throw new TypeError("scanCache must be created by createWorkspaceAppScanCache");return e[Ft]}function _o(e,n){let t=za(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 Ft,To=w(()=>{g();Ft=Symbol("crewx.workspace-app-scan-cache.state");});function se(e){let n=typeof e=="object"&&e!==null&&"code"in e?String(e.code):"";return n==="ENOENT"?new _("NOT_FOUND"):n==="ELOOP"?new _("PATH_ESCAPED"):n==="EFBIG"||n==="EOVERFLOW"?new _("LIMIT_EXCEEDED"):n==="EACCES"||n==="EPERM"||n==="ENOTDIR"?new _("READ_DENIED"):new _("READ_DENIED")}function Wa(e){if(typeof e!="string"||e.length===0||!path.isAbsolute(e))throw new _("READ_DENIED")}function Bt(e){if(typeof e!="string"||path.isAbsolute(e)||/[\\\u0000]/.test(e))throw new _("PATH_ESCAPED");if(e==="")return [];let n=e.split("/");if(n.some(t=>t.length===0||t==="."||t===".."))throw new _("PATH_ESCAPED");return n}function Hn(e,n){let t=path.relative(e,n);return t===""||t!==".."&&!t.startsWith(`..${path.sep}`)&&!path.isAbsolute(t)}function qe(e){return {dev:e.dev,ino:e.ino,size:e.size,mtimeNs:e.mtimeNs,ctimeNs:e.ctimeNs}}function $t(e,n){return e.dev===n.dev&&e.ino===n.ino}function Jt(e,n){return $t(e,n)&&e.size===n.size&&e.mtimeNs===n.mtimeNs&&e.ctimeNs===n.ctimeNs}async function Vn(e){Wa(e);let n,t;try{n=await promises.realpath(e),t=await promises.stat(n,{bigint:!0});}catch(i){throw se(i)}if(!t.isDirectory())throw new _("READ_DENIED");return {realRoot:n,identity:qe(t)}}async function No(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 _("READ_DENIED")}catch(o){throw o instanceof _?o:se(o)}if(!Hn(n,r))throw new _("PATH_ESCAPED");return r}async function Fn(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 se(a)}if(!Hn(n,o)||t!==void 0&&!Hn(t,o))throw new _("PATH_ESCAPED");if(!r.isFile()||!s.isFile())throw new _("READ_DENIED");if(!$t(i,r)||!$t(i,s)||i.dev!==s.dev)throw new _("PATH_ESCAPED")}async function Ye(e,n){let t,i;try{t=await promises.realpath(e),i=await promises.stat(t,{bigint:!0});}catch{throw new _("PATH_ESCAPED")}if(t!==n.realRoot||!Jt(n.identity,qe(i)))throw new _("PATH_ESCAPED")}function Xa(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 _,Gt,Ja,Do,Ze,zn,bo,Po,Xt=w(()=>{g();_=class extends Error{constructor(t){super(t);this.code=t;}code;name="AppDiscoveryFsError"},Gt=fs$1.constants.O_NOFOLLOW,Ja=fs$1.constants.O_NONBLOCK,Do=fs$1.constants.O_RDONLY|(Gt??0)|(Ja??0);Ze=class{async getRootIdentity(n){let t=await Vn(n);return await Ye(n,t),{dev:t.identity.dev,ino:t.identity.ino,realPath:t.realRoot}}async listDirectory(n,t){let i=Bt(t),r=await Vn(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=se(d);if(c.code==="NOT_FOUND")return [];throw c}if(!Hn(r.realRoot,s)||!a.isDirectory())throw new _("PATH_ESCAPED");try{let d=await promises.readdir(s,{withFileTypes:!0,encoding:"utf8"});return await Ye(n,r),d.map(Xa)}catch(d){let c=se(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 _("READ_DENIED");if(Gt===void 0)throw new _("UNSUPPORTED");let r=Bt(t),o=await Vn(n),s=path.resolve(n,...r),a=path.relative(n,s);if(a===".."||a.startsWith(`..${path.sep}`)||path.isAbsolute(a))throw new _("PATH_ESCAPED");let d;try{d=await promises.open(s,Do);}catch(c){throw se(c)}try{let c;try{let I=await d.stat({bigint:!0});c=qe(I);}catch(I){throw se(I)}if(c.size>BigInt(i))throw new _("LIMIT_EXCEEDED");if(c.size>BigInt(Number.MAX_SAFE_INTEGER))throw new _("LIMIT_EXCEEDED");await Ye(n,o);let p=await No(n,o.realRoot,r);await Fn(s,o.realRoot,p,c);let l=new Uint8Array(new ArrayBuffer(Number(c.size))),u=0;for(;u<l.byteLength;){let I;try{I=(await d.read(l,u,l.byteLength-u,u)).bytesRead;}catch(h){throw se(h)}if(I<=0)throw new _("IDENTITY_CHANGED");u+=I;}let A;try{let I=await d.stat({bigint:!0});A=qe(I);}catch(I){throw se(I)}if(!Jt(c,A))throw new _("IDENTITY_CHANGED");return await Fn(s,o.realRoot,p,A),await Ye(n,o),new Uint8Array(l)}finally{await d.close().catch(()=>{});}}async fingerprintVerifiedFile(n,t,i){if(!Number.isSafeInteger(i)||i<0)throw new _("READ_DENIED");if(Gt===void 0)throw new _("UNSUPPORTED");let r=Bt(t),o=await Vn(n),s=path.resolve(n,...r),a=path.relative(n,s);if(a===".."||a.startsWith(`..${path.sep}`)||path.isAbsolute(a))throw new _("PATH_ESCAPED");let d;try{d=await promises.open(s,Do);}catch(c){throw se(c)}try{let c;try{let u=await d.stat({bigint:!0});c=qe(u);}catch(u){throw se(u)}if(c.size>BigInt(i)||c.size>BigInt(Number.MAX_SAFE_INTEGER))throw new _("LIMIT_EXCEEDED");await Ye(n,o);let p=await No(n,o.realRoot,r);await Fn(s,o.realRoot,p,c);let l;try{let u=await d.stat({bigint:!0});l=qe(u);}catch(u){throw se(u)}if(!Jt(c,l))throw new _("IDENTITY_CHANGED");return await Fn(s,o.realRoot,p,l),await Ye(n,o),{...l,candidateRealPath:p??o.realRoot}}catch(c){throw c instanceof _?c:se(c)}finally{await d.close().catch(()=>{});}}async readFileVerified(n,t,i){return this.readVerifiedFile(n,t,i)}},zn=new Ze,bo=zn,Po=Ze;});function mn(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 So(e){return typeof e=="string"&&Ie.test(e)?e:void 0}function nc(e){return e.length>0&&e!=="."&&e!==".."&&!/[\\/\u0000]/.test(e)}function xe(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 tc(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 ic(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 oc(e){return Qa.decode(e)}function rc(e){return JSON.parse(oc(e))}function Lo(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 sc(e){if(e instanceof _)return Lo(e.code);if(e!==null&&typeof e=="object"&&"code"in e){let n=e.code;if(typeof n=="string")return Lo(n)}}function be(e,n){let t=n();return Number.isFinite(t)&&Number.isFinite(e)&&t-e<=5e3}function ac(e){if(typeof e.readVerifiedFile=="function")return e.readVerifiedFile;if(typeof e.readFileVerified=="function")return e.readFileVerified}function cc(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 Oo(e,n,t,i){let r=ac(e);if(!r)throw new _("READ_DENIED");return ic(await r.call(e,n,t,i))}async function qt(e,n,t){let i=cc(e);if(!i)throw new _("READ_DENIED");let r=await i.call(e,n,t);if(!Array.isArray(r))throw new _("READ_DENIED");return r.map(tc).filter(o=>o!==null)}function dc(e,n,t,i){return Object.freeze({code:e,...{},source:n,relativePath:t})}function pc(e){if(!mn(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(xe))};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 lc(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 hn(e){return Object.freeze({appIds:Object.freeze([...new Set(e.map(n=>n.appId))].sort(xe)),definitionIds:Object.freeze([...new Set(e.map(n=>n.definition.id))].sort(xe))})}function Gn(e,n){let t=Object.keys(e).sort(xe),i=[...n].sort(xe);return t.length===i.length&&t.every((r,o)=>r===i[o])}function Ro(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 uc(e){let n;try{n=rc(e);}catch{return}if(!mn(n)||!Gn(n,["version","packages"])||n.version!==1||!Array.isArray(n.packages)||n.packages.length>Zt)return;let t=new Set,i=new Set,r=0,o=[];for(let s of n.packages){if(!mn(s))return;let a=["packageDir","appId","definition","files"],d=Object.hasOwn(s,"lineage"),c=Object.hasOwn(s,"launcher"),p=[...d?["lineage"]:[],...c?["launcher"]:[]];if(!Gn(s,[...a,...p])||c&&s.launcher!==false)return;let l=Ro(s.packageDir),u=So(s.appId);if(!l||l.length!==2||l[0]!=="apps"||!nc(l[1])||!u||t.has(s.packageDir)||!mn(s.definition)||!Gn(s.definition,["id","version","hash"]))return;let A=So(s.definition.id),I=s.definition.version,h=s.definition.hash;if(!A||!Number.isSafeInteger(I)||I<1||typeof h!="string"||!Yt.test(h)||!Array.isArray(s.files)||s.files.length<2||s.files.length>Qt)return;let b=new Set,V=[];for(let x of s.files){if(!mn(x)||!Gn(x,["path","sha256"]))return;let M=Ro(x.path);if(!M||typeof x.sha256!="string"||!Yt.test(x.sha256))return;let O=M.join("/"),H=`${s.packageDir}/${O}`;if(b.has(O)||i.has(H))return;b.add(O),i.add(H),V.push(Object.freeze({path:O,sha256:x.sha256}));}if(!re.some(x=>b.has(x))||!b.has("ui/index.html")||(r+=V.length,r>Ya))return;t.add(s.packageDir),o.push(Object.freeze({packageDir:s.packageDir,...c?{launcher:false}:{},appId:u,definition:Object.freeze({id:A,version:I,hash:h}),lineage:Array.isArray(s.lineage)?s.lineage:[],files:Object.freeze(V.sort((x,M)=>xe(x.path,M.path)))}));}return Object.freeze({version:1,packages:Object.freeze(o)})}function we(e){let n=sc(e);return n==="PATH_ESCAPED"||n==="IDENTITY_CHANGED"||n==="TOCTOU"?"PATH_ESCAPED":n==="LIMIT_EXCEEDED"?"LIMIT_EXCEEDED":"BUNDLE_INTEGRITY"}async function fc(e,n,t,i,r){let o=[],s=async(a,d)=>{if(!be(i,r))throw new _("LIMIT_EXCEEDED");if(d>2)throw new _("LIMIT_EXCEEDED");let c=await qt(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 _("PATH_ESCAPED");let l=`${a}/${p.name}`;if(p.kind==="file"){if(o.push(l.slice(t.length+1)),o.length>Qt)throw new _("LIMIT_EXCEEDED")}else if(p.kind==="directory")await s(l,d+1);else throw p.kind==="symlink"?new _("PATH_ESCAPED"):new _("READ_DENIED")}};return await s(t,0),o.sort(xe)}function yc(e){return re.includes(e)?262144:e==="ui/index.html"?Ke:e==="ui/state.json"?65536:e.startsWith("ui/assets/")?Za:qa}async function Uo(e,n,t,i){if(e===void 0)return {packages:[],diagnostics:[],incomplete:false,reservedIds:ec};let r=pc(e.reservedIds),o=[],s=(f,m,T)=>dc(f,"bundled",m),a=(f=[],m=false,T)=>({...T===void 0?{}:{indexHash:T},packages:f,diagnostics:o,incomplete:m,reservedIds:r});if(typeof e.root!="string"||e.root.length===0||typeof e.expectedIndexHash!="string"||!Yt.test(e.expectedIndexHash))return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a();let d;try{d=await Oo(n,e.root,"bundle-index.json",Ka);}catch(f){return o.push(s(we(f),"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=uc(d);if(p===void 0)return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a();if(!lc(hn(p.packages),r))return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a([],false,c);if(!be(t,i))return o.push(s("LIMIT_EXCEEDED","bundle-index.json")),a(p.packages.map(f=>({indexEntry:f,failureCode:"LIMIT_EXCEEDED"})),true,c);let l;try{l=await qt(n,e.root,"");}catch(f){return o.push(s(we(f),"bundle-index.json")),a(p.packages.map(m=>({indexEntry:m,failureCode:we(f)})),false,c)}if(!be(t,i))return o.push(s("LIMIT_EXCEEDED","bundle-index.json")),a(p.packages.map(f=>({indexEntry:f,failureCode:"LIMIT_EXCEEDED"})),true,c);let u=l.find(f=>f.name==="bundle-index.json"&&f.kind==="file"),A=l.find(f=>f.name==="apps"&&f.kind==="directory"),I=f=>p.packages.map(m=>({indexEntry:m,failureCode:f}));if(!u)return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a(I("BUNDLE_INTEGRITY"),false,c);let h=l.filter(f=>f.name!=="bundle-index.json"&&f.name!=="apps");if(h.length>0){let f=h.some(m=>m.kind==="symlink")?"PATH_ESCAPED":"BUNDLE_INTEGRITY";return o.push(s(f,"bundle-index.json")),a(I("BUNDLE_INTEGRITY"),false,c)}if(l.some(f=>f.name==="apps"&&f.kind!=="directory"))return o.push(s("PATH_ESCAPED","apps")),a(I("PATH_ESCAPED"),false,c);let b=[];if(A)try{b=await qt(n,e.root,"apps");}catch(f){return o.push(s(we(f),"apps")),a(I(we(f)),false,c)}if(!be(t,i)||b.length>Zt)return o.push(s("LIMIT_EXCEEDED","apps")),a(I("LIMIT_EXCEEDED"),true,c);let V=new Map(p.packages.map(f=>[f.packageDir.slice(5),f])),x=b.filter(f=>!V.has(f.name));for(let f of x)o.push(s(f.kind==="symlink"?"PATH_ESCAPED":"BUNDLE_INTEGRITY",`apps/${f.name}`));if(x.length>0){let f=x.some(m=>m.kind==="symlink")?"PATH_ESCAPED":"BUNDLE_INTEGRITY";return a(I(f),false,c)}let M=new Set,O=new Map,H=new Map;for(let f of p.packages){let m=O.get(f.appId)??[];m.push(f),O.set(f.appId,m);let T=`${f.definition.id}\0${String(f.definition.version)}`,P=H.get(T)??[];P.push(f),H.set(T,P);}for(let f of [...O.values(),...H.values()])if(f.length>1)for(let m of f)M.add(m);let N=[],L=d.byteLength,S=false;for(let f of p.packages){if(!be(t,i)){S=true,N.push({indexEntry:f,failureCode:"LIMIT_EXCEEDED"});continue}let m;try{let D=f.lineage[f.lineage.length-1];if(!D)throw new Te("LINEAGE_INVALID","Definition lineage is missing");if(D.definition.id!==f.definition.id||D.version!==f.definition.version||D.hash!==f.definition.hash)throw new Te("LINEAGE_STALE","Last lineage generation does not match bundle identity");m=kt(f.lineage,{...D.definition,hash:D.hash}).entries;}catch(D){let z=D instanceof Te?D.code:"LINEAGE_INVALID";o.push(s(z,f.packageDir)),N.push({indexEntry:f,failureCode:z});continue}let T=b.find(D=>D.name===f.packageDir.slice(5));if(!A||!T){N.push({indexEntry:f,failureCode:"BUNDLE_INTEGRITY"});continue}if(T.kind!=="directory"){N.push({indexEntry:f,failureCode:T.kind==="symlink"?"PATH_ESCAPED":"BUNDLE_INTEGRITY"});continue}let P;try{let D=await fc(n,e.root,f.packageDir,t,i);if(!be(t,i)){S=!0,N.push({indexEntry:f,failureCode:"LIMIT_EXCEEDED"});continue}let z=f.files.map(G=>G.path);if(D.length!==z.length||D.some((G,Ee)=>G!==z[Ee])){N.push({indexEntry:f,failureCode:"BUNDLE_INTEGRITY"});continue}P=new Map;let te;for(let G of f.files){if(!be(t,i)){te="LIMIT_EXCEEDED",S=!0;break}if(L>=Kt){te="LIMIT_EXCEEDED";break}let Ee;try{Ee=await Oo(n,e.root,`${f.packageDir}/${G.path}`,yc(G.path));}catch(cr){te=we(cr);break}if(!be(t,i)){te="LIMIT_EXCEEDED",S=!0;break}if(L+Ee.byteLength>Kt){L=Kt,te="LIMIT_EXCEEDED";break}if(L+=Ee.byteLength,crypto.createHash("sha256").update(Ee).digest("hex")!==G.sha256){te="BUNDLE_INTEGRITY";break}P.set(G.path,Ee);}if(te!==void 0){N.push({indexEntry:f,failureCode:te});continue}}catch(D){be(t,i)||(S=true),N.push({indexEntry:f,failureCode:we(D)});continue}N.push({indexEntry:f,lineage:m,files:P,...M.has(f)?{failureCode:"DUPLICATE_ID"}:{}});}return a(N,S,c)}var Ka,Zt,Qt,Ya,qa,Za,Kt,Yt,Qa,ec,ei=w(()=>{g();wt();Re();Ut();vn();Xt();Ka=256*1024,Zt=64,Qt=128,Ya=Zt*Qt,qa=2*1024*1024,Za=8*1024*1024,Kt=32*1024*1024,Yt=/^[0-9a-f]{64}$/,Qa=new TextDecoder("utf-8",{fatal:true}),ec=Object.freeze({appIds:Object.freeze([]),definitionIds:Object.freeze([])});});var nr={};pr(nr,{AppDiscoveryFsError:()=>_,LOCAL_APP_TOOL_PREFIX:()=>gc,MCP_APP_WORKSPACE_TOOL_PREFIX:()=>mc,NodeAppDiscoveryFs:()=>Ze,NodeAppDiscoveryFsAdapter:()=>Po,WORKSPACE_APP_TOOL_PREFIX:()=>Qe,createWorkspaceAppScanCache:()=>ho,defaultAppDiscoveryFs:()=>zn,defaultNodeAppDiscoveryFs:()=>bo,deriveWorkspaceAppToolName:()=>hc,deriveWorkspaceAppToolNames:()=>ii,discoverWorkspaceAppCandidates:()=>Wc,discoverWorkspaceApps:()=>oi,isWorkspacePackage:()=>Ic,productAppBundleReservations:()=>hn,scanWorkspaceApps:()=>Xc});function Ic(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 ii(e){if(typeof e!="string"||!Ie.test(e))throw new TypeError("pluginId must be a safe UI plugin identifier");let n=`${Qe}${e}`.length+7<=128?e:`hash_${crypto.createHash("sha256").update(e,"utf8").digest("hex")}`;return {read:`${Qe}${n}_read`,action:`${Qe}${n}_action`}}function hc(e,n="read"){let t=ii(e);return n==="read"?t.read:t.action}function ko(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 Tc(e,n){return n.length===0||n==="."||n===".."||/[\\/\u0000]/.test(n)?e==="skills"?"skills":"apps":`${e==="skills"?"skills":"apps"}/${n}`}function Ec(e){return e.length>0&&e!=="."&&e!==".."&&!/[\\/\u0000]/.test(e)}function _n(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 $o(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 Dc(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 Jo(e){return _c.decode(e)}function Nc(e){return JSON.parse(Jo(e))}function bc(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 Jn(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 wo(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 ne(e){if(e instanceof _)return wo(e.code);if(e!==null&&typeof e=="object"&&"code"in e){let n=e.code;if(typeof n=="string")return wo(n)}}function ve(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 xo(e){return {reason:e.reason,...e.code==="MANIFEST_DUAL_MISMATCH"?{files:e.files}:{}}}function jo(e){return e==="MANIFEST_DUAL_MISMATCH"?e:Wo(e)}function Pc(e){return Wo(e.code)}function Wo(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 Xo("UiPluginValidationError",e)}}function Xo(e,n){throw new Error(`Unmapped ${e} code: ${String(n)}`)}function Ko(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 Xo("McpAppContractError",e)}}function Pe(e,n){let t=n();return Number.isFinite(t)&&Number.isFinite(e)&&t-e<=5e3}function Mc(e){return {pluginId:e.appId,definitionKey:`${e.definition.id}\0${String(e.definition.version)}`}}function Sc(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(ko(r)){let o=r.bin,s=typeof o=="string"?o:ko(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=Lc(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 Lc(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 Oc(){return globalThis.performance?.now()??Date.now()}function je(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;for(let n of Object.values(e))je(n);return Object.freeze(e)}function vo(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 _("NOT_FOUND");if(a.byteLength>i)throw new _("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 Ho(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 Ho(e,n.root,r,i),c=await s.call(e,o.workspaceRoot,r,i);return o.candidateRealPath=c.candidateRealPath,qo(a,c)&&c.size===BigInt(d.byteLength)&&!Zo(c,o.scanStartedAtNs)?o.files.set(r,{relativePath:r,byteLimit:i,fingerprint:c}):o.cacheable=!1,d}catch(a){let d=re.includes(t)&&ne(a)==="NOT_FOUND"&&o.directoryListings.some(p=>p.relativePath===n.relativePath&&!Xn(p.key,t)),c=t===Y&&ne(a)==="NOT_FOUND"&&Rc(o.directoryListings,n.relativePath);throw !d&&!c&&(o.cacheable=false),a}}function Rc(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 Yo(e,n){return JSON.stringify([e.realPath,n.source,n.relativePath])}async function Cc(e,n,t,i,r,o,s,a){let d=e.fingerprintVerifiedFile,c=Yo(t,i),p=r.candidates.get(c),l=i.relativePath,u;try{u=await Bo(e,n,l);}catch(S){if(ne(S)!=="NOT_FOUND")throw S}let A=u===void 0?void 0:{relativePath:l,key:u};if(A!==void 0&&(i.source==="apps"||i.source==="skills")&&!re.some(S=>Xn(A.key,S)))return Pe(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 I=async S=>{if(S==="")return A;let f=`${i.relativePath}${S}`;try{let m=await Bo(e,n,f);return m===void 0?void 0:{relativePath:f,key:m}}catch(m){if(ne(m)==="NOT_FOUND")return;throw m}},h=await Promise.all(Vo.map(I)),b=await Promise.all(Uc.map(I));if(!Pe(s,a))return {timeLimitReached:true};let V=typeof d=="function"&&h.every(S=>S!==void 0),x=h.filter(S=>S!==void 0),M=[...x,...b.filter(S=>S!==void 0)],O=new Map,H=p!==void 0&&V,N;if(p!==void 0&&typeof d=="function"){let S=await Promise.all(p.files.map(async f=>{if(!Pe(s,a))return {kind:"time",file:f};try{let m=await d.call(e,n,f.relativePath,f.byteLimit);return {kind:"fingerprint",file:f,current:m}}catch(m){return ne(m)==="NOT_FOUND"?{kind:"missing",file:f}:{kind:"error",file:f,error:m}}}));if(S.some(f=>f.kind==="time"))return {timeLimitReached:true};for(let f of S){if(f.kind==="error")throw f.error;if(f.kind==="missing"){H=false;continue}if(f.kind!=="fingerprint")continue;let{file:m,current:T}=f;O.set(m.relativePath,T),N??=T.candidateRealPath,(T.candidateRealPath!==p.candidateRealPath||!qo(T,m.fingerprint)||Zo(T,o))&&(H=false);}}let L=p!==void 0&&p.directoryListings.length===M.length&&p.directoryListings.every((S,f)=>S.relativePath===M[f]?.relativePath&&S.key===M[f]?.key);return p!==void 0&&V&&L&&H&&N===p.candidateRealPath?{memo:p}:!V||x.length!==Vo.length?{}:{context:{state:r,cacheKey:c,workspaceRoot:n,scanStartedAtNs:o,directoryListings:Object.freeze(M),priorFingerprints:O,files:new Map,...N===void 0?{}:{candidateRealPath:N},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 Bo(e,n,t){let i=Qo(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($o);if(!o.some(s=>s===null))return JSON.stringify(o.slice().sort((s,a)=>_n(s.name,a.name)||_n(s.kind,a.kind)).map(s=>[s.name,s.kind]))}function qo(e,n){return e.dev===n.dev&&e.ino===n.ino&&e.size===n.size&&e.mtimeNs===n.mtimeNs&&e.ctimeNs===n.ctimeNs}function Zo(e,n){let t=e.mtimeNs-n;return t>=-Fo&&t<=Fo}function ni(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 kc(e,n,t){let i=crypto.createHash("sha256"),r=new TextEncoder().encode(q(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 wc(e,n){let t={...e.definition,sourceHash:n},i;try{i=ie(t);}catch(o){throw o instanceof R&&o.code==="INPUT_INVALID"?new oe("MANIFEST_INVALID","normalized definition is invalid"):o}let r={...t,hash:i};try{de(r);}catch{throw new oe("MANIFEST_INVALID","normalized definition is invalid")}return r}function xc(e){return e.actions.some(n=>n.backend.type==="core"&&n.backend.handler!=="state.set")}function jc(e){if(typeof e.readVerifiedFile=="function")return e.readVerifiedFile;if(typeof e.readFileVerified=="function")return e.readFileVerified}function Qo(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 Ho(e,n,t,i){let r=jc(e);if(!r)throw new _("READ_DENIED");return Dc(await r.call(e,n,t,i))}async function vc(e,n,t){let i=Qo(e);if(!i)throw new _("READ_DENIED");let r=await i.call(e,n,t);if(!Array.isArray(r))throw new _("READ_DENIED");return r.map($o).filter(o=>o!==null)}function Vc(e){let n=[];for(let t of [e.reserved,e.builtin])t&&n.push(t);return e.builtins&&"listMcpApps"in e.builtins?n.push(zo(e.builtins)):e.builtins&&n.push(e.builtins),e.builtinCatalog&&n.push(zo(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 zo(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 ye(e,n){e.diagnostic||(e.diagnostic=Jn(n,e.source,e.relativePath,e.identity?.pluginId));}function Fc(e,n){let t=new Set,i=new Map;for(let o of e){let s=o.identity?.pluginId;if(s===void 0)continue;let a=i.get(s)??[];a.push(o),i.set(s,a);}for(let o of i.values()){if(o.length<2)continue;let s=o.filter(d=>d.provenance!==void 0);if(s.length>0){let d=o.find(c=>n.has(c));if(d){for(let c of s)t.add(c);for(let c of o)c!==d&&c.provenance===void 0&&ye(c,"RESERVED_ID");continue}for(let c of o)c.provenance===void 0&&ye(c,"RESERVED_ID");if(s.length>1)for(let c of s)ye(c,"DUPLICATE_ID");continue}let a=o.filter(d=>d.source==="apps");if(a.length>1){for(let d of a)ye(d,"DUPLICATE_ID");for(let d of o.filter(c=>c.source==="skills"))ye(d,"DUPLICATE_ID");}else for(let d of o.filter(c=>c.source==="skills"))ye(d,"DUPLICATE_ID");}let r=new Map;for(let o of e){if(o.diagnostic?.code==="RESERVED_ID"||t.has(o)||o.provenance===void 0&&!n.has(o)&&i.get(o.identity?.pluginId??"")?.some(d=>d.provenance!==void 0))continue;let s=o.identity?.definitionKey;if(s===void 0)continue;let a=r.get(s)??[];a.push(o),r.set(s,a);}for(let o of r.values())if(o.length>1)for(let s of o)ye(s,"DUPLICATE_ID");return t}function Bc(e,n,t){let i=new Set,r=new Set,o=new Set,s=new Set([...t.appIds,...n.productBundleReservationMetadata?.reservedAppIds??[]]),a=new Set([...t.definitionIds,...n.productBundleReservationMetadata?.reservedDefinitionIds??[]]);for(let p of Vc(n)){for(let l of p.appIds??[])typeof l=="string"&&i.add(l);for(let l of p.definitionIds??[])typeof l=="string"&&r.add(l);for(let l of p.toolNames??[])typeof l=="string"&&o.add(l);}for(let p of e){let l=p.candidate;if(!l)continue;if(i.has(l.pluginId)||r.has(l.definitionId)){ye(p,"RESERVED_ID");continue}[l.toolNames.read,l.toolNames.action].filter(A=>A!==void 0).some(A=>o.has(A))&&ye(p,"DUPLICATE_ID");}let d=[...e.filter(p=>p.provenance!==void 0&&p.diagnostic===void 0).flatMap(p=>p.candidate?[p.candidate]:[]),...(n.productBundleReservationMetadata?.candidates??[]).filter(p=>n.productBundleReservationMetadata?.indexHash!==void 0&&p.provenance?.indexHash===n.productBundleReservationMetadata.indexHash)],c=new Set;for(let p of e){let l=p.candidate;if(!(!l||p.diagnostic||p.source!=="apps"||p.provenance!==void 0)&&e.filter(u=>u.source==="apps"&&u.identity?.pluginId===l.pluginId).length===1&&d.some(u=>u.pluginId===l.pluginId)&&!(a.has(l.definitionId)&&!d.some(u=>u.pluginId===l.pluginId&&u.definitionId===l.definitionId))&&!d.some(u=>u.pluginId!==l.pluginId&&u.definitionId===l.definitionId)&&!e.some(u=>u.identity?.pluginId!==l.pluginId&&u.identity?.definitionKey===`${l.definitionId}\0${l.version}`&&u.diagnostic?.code!=="RESERVED_ID"))try{go(l),c.add(p);}catch(u){ye(p,u instanceof _e?Ko(u.code):"EXEC_DENIED");}}for(let p of e){let l=p.candidate;l&&p.provenance===void 0&&!c.has(p)&&(s.has(l.pluginId)||a.has(l.definitionId))&&ye(p,"RESERVED_ID");}return c}function Hc(e){return [...e].sort((n,t)=>{let i=Co.indexOf(n.source)-Co.indexOf(t.source);return i!==0?i:_n(n.relativePath,t.relativePath)})}function k(e,n,t){e.diagnostic=Jn(n,e.source,e.relativePath,e.identity?.pluginId,t);}async function Go(e,n,t){let i=Rt(t,{mode:"local"});if(!i.ok&&i.parseFailure){k(n,jo(i.rejection.code),xo(i.rejection));return}let r=bc(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)}`){k(n,"BUNDLE_INTEGRITY");return}if(!i.ok&&i.builtinOnly){k(n,"RESERVED_ID");return}if(!i.ok){k(n,jo(i.rejection.code),xo(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{Vt(o.actions.map(D=>({actionId:D.actionId,inputSchema:D.inputSchema})));}catch(D){if(D instanceof _e){k(n,Ko(D.code));return}throw D}let a;try{a=await Wn(e,n,"ui/index.html",Ke);}catch(D){k(n,ve(ne(D),"entry"));return}if(a.byteLength>Ke){k(n,"LIMIT_EXCEEDED");return}let d;try{d=Jo(a);}catch{k(n,"ENTRY_INVALID");return}if(a.byteLength===0||d.length===0){k(n,"ENTRY_INVALID");return}let c=crypto.createHash("sha256").update(a).digest("hex");if(o.entryHash!==void 0&&o.entryHash!==c){k(n,"ENTRY_INVALID");return}let p={},l,u;if(o.initialState!==void 0){try{l=await Wn(e,n,"ui/state.json",65536);}catch(D){k(n,ve(ne(D),"initial"));return}if(l.byteLength>65536){k(n,"LIMIT_EXCEEDED");return}try{let D=Nc(l),z=o.dataPaths??[],te=Et(D,z);p=ce(te,0,z),Be(p);}catch{k(n,"INITIAL_STATE_INVALID");return}if(u=crypto.createHash("sha256").update(l).digest("hex"),o.initialState.hash!==void 0&&o.initialState.hash!==u){k(n,"INITIAL_STATE_INVALID");return}}let A={...o,entryHash:c,...o.initialState===void 0?{}:{initialState:{path:"ui/state.json",hash:u}}},I=an(A),h=kc(A,a,l??new Uint8Array),b;try{b=wc(I,h);}catch(D){if(D instanceof oe){k(n,Pc(D));return}throw D}let V;if(n.bundleLineage!==void 0){let D=n.bundleLineage[n.bundleLineage.length-1];if(!D){k(n,"LINEAGE_INVALID");return}let{legacy:z,...te}=D.definition,{hash:G,...Ee}=b;if(q(te)!==q(Ee)){k(n,"LINEAGE_STALE");return}if(z!==void 0&&(b={...b,legacy:z}),z!==void 0)try{b={...b,hash:ie(b)},de(b);}catch{k(n,"LINEAGE_INVALID");return}V=n.bundleLineage;}if(n.bundleIdentity!==void 0&&n.bundleIdentity.appId!==o.pluginId){k(n,"BUNDLE_INTEGRITY");return}if(n.bundleIdentity!==void 0&&(n.bundleIdentity.definitionId!==b.id||n.bundleIdentity.version!==b.version||n.bundleIdentity.definitionHash!==b.hash)){k(n,"LINEAGE_STALE");return}let x=ii(o.pluginId),M=o.actions.length===0?{read:x.read}:x,O=je(I),H=je(A),N=je(b),L=je({...I.handlers}),S=vo(a),f=l===void 0?void 0:vo(l),m=Object.freeze({...n.provenance===void 0?{}:{provenance:n.provenance},entry:Object.freeze({path:"ui/index.html",hash:c,bytes:S}),...f===void 0?{}:{initialState:Object.freeze({path:"ui/state.json",hash:u,bytes:f})}}),T={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:je(i.mcpb)},relativePath:n.relativePath,manifest:H,normalized:O,name:o.name,description:o.description,...o.icon===void 0?{}:{icon:o.icon},...o.tone===void 0?{}:{tone:o.tone},definition:N,handlers:L,resources:m,html:d,entryBytes:S,entryHash:c,initialState:je(p),...f===void 0?{}:{initialStateBytes:f},...u===void 0?{}:{initialStateHash:u},sourceHash:h,toolNames:Object.freeze(M)},P=n.provenance===void 0?{...T,source:n.source}:{...T,provenance:n.provenance,lineage:V??[]};n.candidate=Object.freeze(P),xc(o)&&k(n,"EXEC_DENIED");}async function er(e,n){let t={};for(let i of re)try{t[i]=await Wn(e,n,i,262144);}catch(r){if(ne(r)==="NOT_FOUND")continue;return {files:t,failure:ve(ne(r),"manifest")}}if(t[X]!==void 0)try{t[Y]=await Wn(e,n,Y,262144);}catch(i){if(ne(i)!=="NOT_FOUND")return {files:t,failure:ve(ne(i),"manifest")}}return {files:t}}function ti(e){return re.some(n=>e[n]!==void 0)}async function zc(e,n){let{files:t,failure:i}=await er(e,n);if(i!==void 0){k(n,i);return}let r=t[X];return r!==void 0&&!Ot(r)&&(delete t[X],delete t[Y]),ti(t)?t:void 0}function Gc(e,n,t,i=Ac,r=false,o=new Set){let s=Hc(e),a=Fc(s,o),d=Object.freeze(s.filter(u=>u.candidate!==void 0&&u.diagnostic===void 0&&!a.has(u)).map(u=>u.candidate)),c=Object.freeze(s.filter(u=>u.diagnostic!==void 0).map(u=>u.diagnostic)),p=r?Object.freeze({...t===void 0?{}:{indexHash:t},candidates:Object.freeze(s.filter(u=>u.source==="bundled"&&u.diagnostic===void 0&&t!==void 0&&u.candidate?.provenance?.indexHash===t).map(u=>u.candidate)),diagnostics:Object.freeze(c.filter(u=>u.source==="bundled").map(u=>Object.freeze({...u}))),reservedAppIds:Object.freeze([...i.appIds]),reservedDefinitionIds:Object.freeze([...i.definitionIds])}):void 0,l={apps:d,diagnostics:c,complete:n===void 0,...n===void 0?{}:{incompleteReason:n},...t===void 0?{}:{productBundleIndexHash:t},...p===void 0?{}:{productBundleSnapshotMetadata:p}};return Object.defineProperty(l,"candidates",{configurable:false,enumerable:false,get:()=>d}),Object.freeze(l)}function $c(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 Jc(e,n){if($c(e))return {fs:e,options:n??{}};let t=e??n??{};return {fs:t.filesystem??t.fileSystem??t.fs??zn,options:t}}async function oi(e,n,t){if(typeof e!="string"||e.length===0)throw new TypeError("workspaceRoot must be explicit");let{fs:i,options:r}=Jc(n,t),o=r.clock??Oc,s=o(),a=await Uo(r.productBundle,i,s,o),d=o(),c=BigInt(Date.now())*1000000n,p=[],l=0,u,A=false,I,h;if(r.scanCache!==void 0&&typeof i.getRootIdentity=="function"&&typeof i.fingerprintVerifiedFile=="function")try{h=await i.getRootIdentity(e),I=_o(r.scanCache,h),I.scanStartedAtNs=c;}catch(N){if(ne(N)!=="NOT_FOUND")throw N}let b=I!==void 0&&r.productBundle===void 0&&a.packages.length===0&&a.diagnostics.length===0,V=new Set,x=true;p.push(...a.diagnostics.map(N=>({source:N.source,root:r.productBundle?.root??e,name:"",relativePath:N.relativePath,diagnostic:N})));let M=a.reservedIds;a.incomplete&&(u="time_limit");for(let N of a.packages){if(!Pe(d,o)){A=true,u="time_limit";break}let L=N.indexEntry,S=L.packageDir,f=N.files===void 0?void 0:Sc(S,N.files),m=a.indexHash===void 0?void 0:Xi(Object.freeze({kind:"bundled",launcher:L.launcher!==false,indexHash:a.indexHash,packageDir:S,appId:L.appId,definitionId:L.definition.id,version:L.definition.version,definitionHash:L.definition.hash,files:L.files}),f),T={source:"bundled",root:r.productBundle?.root??e,name:S.slice(5),relativePath:S,...m===void 0?{}:{provenance:m},...N.files===void 0?{}:{pinnedFiles:N.files},...N.lineage===void 0?{}:{bundleLineage:N.lineage},bundleIdentity:{appId:L.appId,definitionId:L.definition.id,version:L.definition.version,definitionHash:L.definition.hash},identity:Mc(L)};if(p.push(T),l+=1,N.failureCode!==void 0){k(T,N.failureCode);continue}if(N.files?.has(Y)===true){k(T,"EXEC_DENIED",{reason:{path:"",rule:"bundled-tool-mode-unsupported",file:Y}});continue}let P={};for(let D of re){let z=N.files?.get(D);z!==void 0&&(P[D]=z);}if(!ti(P)){k(T,"BUNDLE_INTEGRITY");continue}if(await Go(i,T,P),!Pe(d,o)){A=true,u="time_limit";break}}let O=[{source:"apps",directory:"apps"},{source:"skills",directory:"skills"}];e:for(let N of O){let{source:L,directory:S}=N,f;try{f=await vc(i,e,S);}catch(T){if(ne(T)==="NOT_FOUND")continue;b=false,x=false,p.push({source:L,root:e,name:"",relativePath:L,diagnostic:Jn(ve(ne(T),"manifest"),L,L)});continue}let m=f.filter(T=>T.kind==="directory"||T.kind==="symlink").filter(T=>Ec(T.name)).map(T=>({source:L,root:e,name:T.name,relativePath:Tc(L,T.name)})).sort((T,P)=>_n(T.relativePath,P.relativePath));for(let T of m){let P={...T};if(p.push(P),h!==void 0?V.add(Yo(h,P)):b=false,!Pe(d,o)){A=true,u="time_limit";break e}let D;if(I!==void 0&&h!==void 0){try{let G=await Cc(i,e,h,P,I,c,d,o);if(G.timeLimitReached){A=!0,u="time_limit";break e}P.scanContext=G.context,D=G.memo;}catch(G){b=false,k(P,ve(ne(G),"manifest"));continue}D===void 0&&(b=false);}if(D!==void 0){if(P.candidate=D.candidate,P.diagnostic=D.diagnostic,P.identity=D.identity,L==="skills"&&D.candidate===void 0&&D.diagnostic===void 0)continue;if(l>=64){k(P,"LIMIT_EXCEEDED");continue}if(T.relativePath.split("/").length-1>2){k(P,"LIMIT_EXCEEDED");continue}if(l+=1,!Pe(d,o)){A=true,u="time_limit";break e}continue}let z;if(L==="skills"&&(z=await zc(i,P),z===void 0)){P.diagnostic===void 0&&ni(P);continue}if(l>=64){k(P,"LIMIT_EXCEEDED");continue}if(T.relativePath.split("/").length-1>2){k(P,"LIMIT_EXCEEDED");continue}if(!Pe(d,o)){A=true,u="time_limit";break e}if(l+=1,z===void 0){let G=await er(i,P);if(G.failure!==void 0||!ti(G.files)){k(P,G.failure??ve("NOT_FOUND","manifest")),ni(P);continue}z=G.files;}if(await Go(i,P,z),ni(P),!Pe(d,o)){A=true,u="time_limit";break e}}}if(I!==void 0&&h!==void 0){let N=[...V].sort(_n),L=I.lastCandidateKeys,S=L!==void 0&&L.length===N.length&&L.every((m,T)=>m===N[T]);if(b=b&&S,x&&!A&&u===void 0)for(let m of I.candidates.keys())try{JSON.parse(m)[0]===h.realPath&&!V.has(m)&&I.candidates.delete(m);}catch{I.candidates.delete(m);}let f=[...I.candidates.keys()].filter(m=>{try{return JSON.parse(m)[0]===h.realPath}catch{return false}});b=b&&f.length===V.size&&f.every(m=>V.has(m))&&!A&&u===void 0,I.lastCandidateScanUnchanged=b,x&&!A&&u===void 0&&(I.lastCandidateKeys=Object.freeze(N));}A&&p.push({source:"apps",root:e,name:"",relativePath:"apps",diagnostic:Jn("DISCOVERY_TIME_LIMIT","apps","apps")});let H=Bc(p,r,M);return Gc(p,u,a.indexHash,M,r.productBundle!==void 0,H)}var Ac,Qe,gc,mc,Co,_c,Vo,Uc,Fo,Wc,Xc,tr=w(()=>{g();Ue();Tn();De();Gi();Re();vn();mo();Un();To();Xt();Cn();ei();ei();Ac=hn([]);Qe="crewx_local_app_",gc=Qe,mc=Qe;Co=["bundled","apps","skills"],_c=new TextDecoder("utf-8",{fatal:true});Vo=["","/ui"],Uc=["/dist"],Fo=2000000000n;Wc=oi,Xc=oi;});g();var ir="SKILL.md",Qc=/^---\s*\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/;function or(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}function ed(e){return e.isDirectory()||e.isSymbolicLink()}function ar(e){try{return fs$1.existsSync(e)&&fs$1.statSync(e).isDirectory()}catch{return false}}var nd=["index.js","main.js"];function Yl(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 nd){let o=path.resolve(e,r);if(fs$1.existsSync(o))return o}}function td(e){let n;try{n=fs$1.readFileSync(e,"utf8");}catch{return {frontmatter:{},readable:false,valid:false,hasFrontmatter:false}}let t=n.match(Qc);if(!t)return {frontmatter:{},readable:true,valid:true,hasFrontmatter:false};try{let i=jsYaml.load(t[1]??"");if(!or(i))return {frontmatter:{},readable:!0,valid:!1,hasFrontmatter:!0};let r=or(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 id(e){return [path.join(e,ir),path.join(e,"skill",ir)]}function Kn(e,n){if(!ar(e))return null;for(let t of id(e)){if(!fs$1.existsSync(t))continue;let r=td(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 ri(e){try{return fs$1.readdirSync(e,{withFileTypes:!0}).filter(ed)}catch{return []}}function od(e){return e.length===0||/[\\\u0000]/.test(e)?false:e.split("/").every(n=>n.length>0&&n!=="."&&n!=="..")}function rr(e,n,t){!e||n.has(e.name)||(n.add(e.name),t.push(e));}function Yn(e){let n=[],t=new Set;for(let i of e)if(ar(i))for(let r of ri(i)){if(r.name.startsWith("@")){let o=path.join(i,r.name);for(let s of ri(o))rr(Kn(path.join(o,s.name),s.name),t,n);continue}rr(Kn(path.join(i,r.name),r.name),t,n);}return n.sort((i,r)=>i.name.localeCompare(r.name))}function rd(e,n){if(!od(e))throw new Error(`Skill not found: ${e}`);for(let i of n){let r=Kn(path.join(i,e),e);if(r)return r;for(let o of ri(i)){if(!o.name.startsWith("@"))continue;let s=Kn(path.join(i,o.name,e),e);if(s)return s}}let t=Yn(n).find(i=>i.name===e);if(t)return t;throw new Error(`Skill not found: ${e}`)}async function ql(e){if(!e||e.root===null)return {skills:[],diagnostics:[]};let{discoverWorkspaceApps:n}=await Promise.resolve().then(()=>(tr(),nr)),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 Yn([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 Yn([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 Zl=Yn,Ql=rd;
|
|
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 dr=Object.defineProperty;var w=(e,n)=>()=>(e&&(n=e(e=0)),n);var pr=(e,n)=>{for(var t in n)dr(e,t,{get:n[t],enumerable:true});};var g=w(()=>{});var R,Tn=w(()=>{g();R=class extends Error{constructor(t,i=t,r){super(i);this.code=t;this.currentRevision=r;}code;currentRevision;name="UiRuntimeError"};});function Qn(e){return lr.test(e)||ur.test(e)}function ae(){throw new R("INPUT_INVALID","JSON value is not projection-safe")}function Ir(e){let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}function qn(e,n,t,i,r,o){if(n>i&&ae(),e===null||typeof e=="string"||typeof e=="boolean")return typeof e=="string"&&(fr.test(e)||Ar.test(e)&&!hr(r,o)||yr.test(e))&&ae(),e;if(typeof e=="number")return Number.isFinite(e)||ae(),e;(typeof e!="object"||e===void 0||typeof e=="function"||typeof e=="bigint")&&ae();let s=e;t.has(s)&&ae(),t.add(s);try{if(Array.isArray(e))return e.map(d=>qn(d,n+1,t,i,r,o));Ir(s)||ae();let a={};for(let[d,c]of Object.entries(e))Qn(d)&&ae(),a[d]=qn(c,n+1,t,i,[...r,d],o);return a}finally{t.delete(s);}}function ce(e,n=0,t=[]){(!Number.isInteger(n)||n<0||n>mr)&&ae(),(!Array.isArray(t)||t.some(r=>typeof r!="string"))&&ae();let i=qn(e,0,new Set,gr+n,[],t);return (i===null||Array.isArray(i)||typeof i!="object")&&ae(),i}function Fe(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 hr(e,n){if(e.length===0)return false;let t=e.join(".");return n.some(i=>Fe(t,i))}function Be(e){try{let n=JSON.stringify(e);return n===void 0&&ae(),n}catch{ae();}}function Zn(e){return Array.isArray(e)?e.map(Zn):e!==null&&typeof e=="object"?Object.fromEntries(Object.keys(e).sort().map(n=>[n,Zn(e[n])])):e}function q(e){return Be(Zn(e))}function et(e){return Buffer.byteLength(e,"utf8")}var lr,ur,fr,yr,Ar,gr,mr,De=w(()=>{g();Tn();lr=/(?:proof|token|secret|password|cookie|authorization|private[_-]?key|stack|exception|plugin[_-]?text)/i,ur=/(?:url|uri|endpoint|path|file(?:name|path)?|cwd|shell|directory|dir|folder)$/i,fr=/<\/?[A-Za-z][^>]*>/,yr=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,Ar=/^(?:https?|file|ftp|ws|wss):\/\//i;gr=8,mr=4;});var En,nt=w(()=>{g();En=["text/plain","application/json"];});var si=w(()=>{g();nt();});function He(e){return Tr.has(e)||Er.test(e)||Dr.test(e)}var ai,Tr,Er,Dr,Dn,nn,Ie,tt,it,ot,rt,st,Re=w(()=>{g();ai=["__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"],Tr=new Set(ai),Er=/(?:proof|token|secret|password|cookie|authorization|private[_-]?key|stack|exception|plugin[_-]?text)/i,Dr=/(?:url|uri|endpoint|path|file(?:name|path)?|cwd|shell|directory|dir|folder)$/i;Dn=/^[A-Za-z0-9_]+$/,nn=/^[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*$/,Ie=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,tt=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/,it=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,ot=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$/,rt=["blue","violet","emerald","amber","rose","sky","slate","indigo"],st=["inline","panel"];});function at(e){return typeof e=="string"&&En.includes(e)}var ci=w(()=>{g();nt();Re();});function Nn(e){if(!ct(e))return false;let n=Object.keys(e);return !(n.some(t=>t!=="in"&&t!=="out")||n.length===0||Object.hasOwn(e,"in")&&!Nr(e.in)||Object.hasOwn(e,"out")&&!br(e.out))}function Nr(e){return ct(e)?Object.keys(e).every(t=>t==="mediaType"||t==="required")&&Object.hasOwn(e,"mediaType")&&at(e.mediaType)&&(!Object.hasOwn(e,"required")||typeof e.required=="boolean"):false}function br(e){return ct(e)?Object.keys(e).every(t=>t==="mediaType"||t==="range")&&Object.hasOwn(e,"mediaType")&&at(e.mediaType)&&(!Object.hasOwn(e,"range")||typeof e.range=="boolean"):false}function ct(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}var dt=w(()=>{g();si();ci();new TextDecoder("utf-8",{fatal:true,ignoreBOM:true});});function ie(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=ce(t);return crypto.createHash("sha256").update(q(i)).digest("hex")}function lt(e){return `${e.id}\0${e.version}`}function de(e){if(!/^\d+$/.test(String(e.version))||e.version<1||e.id.length<1||e.id.length>128)throw new R("DEFINITION_UNSUPPORTED","UI definition is invalid");if(e.sourceHash!==void 0&&(typeof e.sourceHash!="string"||!Mr.test(e.sourceHash)))throw new R("DEFINITION_UNSUPPORTED","UI definition source hash is invalid");if(!/^[0-9a-f]{64}$/.test(e.hash)||ie(e)!==e.hash)throw new R("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=>!Lr(i)))throw new R("DEFINITION_UNSUPPORTED","UI action declaration is invalid");if(t.confirmation!==void 0&&t.confirmation!=="none"&&t.confirmation!=="native")throw new R("DEFINITION_UNSUPPORTED","UI action confirmation is invalid");if(t.inputKeys&&(!Array.isArray(t.inputKeys)||t.inputKeys.some(i=>typeof i!="string"||!i)))throw new R("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 R("DEFINITION_UNSUPPORTED","UI action data input declaration is invalid");if(t.resultProjection&&pt(t.resultProjection),t.content!==void 0&&!Nn(t.content))throw new R("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 R("DEFINITION_UNSUPPORTED","UI action environment declaration is invalid")}if(e.renderer!==void 0&&(!e.renderer||e.renderer.length>128))throw new R("DEFINITION_UNSUPPORTED","UI definition renderer is invalid");if(e.surfaces&&(!Array.isArray(e.surfaces)||e.surfaces.some(n=>!n||n.length>64)))throw new R("DEFINITION_UNSUPPORTED","UI definition surfaces are invalid");if(e.usage!==void 0&&e.usage!=="card"&&e.usage!=="window")throw new R("DEFINITION_UNSUPPORTED","UI definition usage is invalid");if(e.detailPanel!==void 0&&typeof e.detailPanel!="boolean")throw new R("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 R("DEFINITION_UNSUPPORTED","UI definition displayModes are invalid");if(e.usage==="card"&&e.displayModes!==void 0)throw new R("DEFINITION_UNSUPPORTED","Card definitions cannot declare displayModes");if(e.usage==="window"&&e.detailPanel!==void 0)throw new R("DEFINITION_UNSUPPORTED","Window definitions cannot declare detailPanel");if(e.stateProjection&&pt(e.stateProjection),e.summaryProjection){pt(e.summaryProjection);let n=new Set(e.stateProjection?.allow??[]);if(e.summaryProjection.allow.some(t=>!n.has(t)))throw new R("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 R("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(Sr(o,r==="readTool"),n.has(o.name))throw new R("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 R("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 R("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 R("DEFINITION_UNSUPPORTED","UI legacy agent access is invalid");if(e.legacy.actionTool!==void 0&&(!i||Object.keys(i).length===0))throw new R("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=>Fe(t,i))))throw new R("DEFINITION_UNSUPPORTED","UI definition dataPaths are invalid")}}function Sr(e,n){if(!e||typeof e!="object"||Array.isArray(e))throw new R("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 R("DEFINITION_UNSUPPORTED","UI legacy tool metadata is invalid");try{let o=ce(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=ce(a.structuredContent);if(et(Be(d))>4*1024)throw new Error("fixed result size")}}catch{throw new R("DEFINITION_UNSUPPORTED","UI legacy tool metadata is not projection-safe")}}function pt(e){if(!Array.isArray(e.allow)||e.allow.some(n=>!/^[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*$/.test(n)))throw new R("DEFINITION_UNSUPPORTED","UI projection policy is invalid")}function Lr(e){return e.length>0&&e.length<=128&&e!=="*"&&e!=="all"&&!/[/*]/.test(e)}var Mr,Ue=w(()=>{g();De();Tn();dt();Mr=/^[0-9a-f]{64}$/;});var di=w(()=>{g();De();});var Y,ze,ut=w(()=>{g();Y="dist/tools.json",ze="dist/main.mjs";});var tn,pi=w(()=>{g();tn="window";});function li(e){if(!Array.isArray(e)||e.length===0)return false;let n=new Set;for(let t of e){if(!Or.some(i=>i===t)||n.has(t))return false;n.add(t);}return true}var Or,ui=w(()=>{g();Or=["CREWX_APP_INSTANCE_ID","CREWX_THREAD_ID"];});function v(e){throw new ft(e)}function Hr(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 zr(e,n){let t=Object.getOwnPropertyDescriptor(e,n);return (!t||!("value"in t))&&v("CSP_ORIGIN_INVALID"),t.value}function bn(e,n){if(!Object.prototype.hasOwnProperty.call(e,n))return [];let t=zr(e,n);Array.isArray(t)||v("CSP_ORIGIN_INVALID"),Reflect.ownKeys(t).some(o=>typeof o!="string"||o!=="length"&&!/^(?:0|[1-9][0-9]*)$/.test(o))&&v("CSP_ORIGIN_INVALID");let r=[];for(let o=0;o<t.length;o+=1)(!Object.prototype.hasOwnProperty.call(t,o)||typeof t[o]!="string")&&v("CSP_ORIGIN_INVALID"),r.push(t[o]);return Object.keys(t).length!==t.length&&v("CSP_ORIGIN_INVALID"),r}function Gr(e){let n;try{n=JSON.stringify(e);}catch{v("CSP_ORIGIN_INVALID");}return n===void 0&&v("CSP_ORIGIN_INVALID"),new TextEncoder().encode(n).byteLength}function Ai(e,n){/\s|\\/u.test(e)&&v("CSP_ORIGIN_INVALID");let t=jr.exec(e);t||v("CSP_ORIGIN_INVALID");let i=t[1].toLowerCase(),r=t[2];(r.includes("@")||r.includes("%")||r.includes("*"))&&v("CSP_ORIGIN_INVALID"),(r.startsWith("[")?vr:Vr).test(r)||v("CSP_ORIGIN_INVALID"),i==="wss"&&n!=="connectDomains"&&v("CSP_ORIGIN_INVALID");let s;try{s=new URL(e);}catch{v("CSP_ORIGIN_INVALID");}(s.protocol!==`${i}:`||s.username!==""||s.password!==""||s.search!==""||s.hash!=="")&&v("CSP_ORIGIN_INVALID");let a=s.hostname.toLowerCase();if((!a||a.includes("%"))&&v("CSP_ORIGIN_INVALID"),!a.startsWith("[")){let c=a.endsWith(".")?a.slice(0,-1):a;(c.length===0||c.length>253)&&v("CSP_ORIGIN_INVALID"),c.split(".").some(l=>l.length>63||!Fr.test(l))&&v("CSP_ORIGIN_INVALID");}let d=s.origin;return (d==="null"||!d.startsWith(`${i}://`))&&v("CSP_ORIGIN_INVALID"),{origin:d,hostname:a}}function $r(e){let n=e.split(".").map(Number);return ((n[0]*256+n[1])*256+n[2])*256+n[3]}function Ii(e,n,t){let i=4294967295<<32-t>>>0;return (e&i)===(n&i)}function hi(e){let n=$r(e);return Ii(n,3221225472,24)?n!==3221225481&&n!==3221225482:Br.some(([t,i])=>Ii(n,t,i))}function Jr(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 Wr(e){let n=Jr(e),t=Number(n>>112n),i=Number(n>>96n&0xffffn);if(n>>32n===0xffffn){let r=Number(n&0xffffffffn);return hi([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 Xr(e,n){let t=e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1):e,i=net.isIP(t);if(i===4)return hi(t);if(i===6)return Wr(t);let r=e.toLowerCase().replace(/\.$/,"");return !r||!r.includes(".")||n.has(r)?true:xr.some(o=>r===o||r.endsWith(`.${o}`))}function gi(e){return Object.freeze([...new Set(e.map(n=>n.origin))].sort())}function mi(e){return JSON.stringify({baseUriDomains:[],connectDomains:e.connectDomains,declared:e.declared,frameDomains:e.frameDomains,resourceDomains:[]})}function _i(e,n={}){if(e===void 0){let A=mi({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")})}Hr(e)||v("CSP_ORIGIN_INVALID");let t=Reflect.ownKeys(e);t.some(A=>typeof A!="string")&&v("CSP_ORIGIN_INVALID"),t.some(A=>!wr.has(A))&&v("CSP_AXIS_UNKNOWN");let i=bn(e,"connectDomains"),r=bn(e,"frameDomains"),o=bn(e,"resourceDomains"),s=bn(e,"baseUriDomains");(o.length>0||s.length>0)&&v("CSP_AXIS_UNSUPPORTED"),(Gr(e)>Ur||i.length>yi||r.length>yi||i.length+r.length>Cr||[...i,...r].some(A=>new TextEncoder().encode(A).byteLength>kr))&&v("CSP_LIMIT_EXCEEDED");let d=i.map(A=>Ai(A,"connectDomains")),c=r.map(A=>Ai(A,"frameDomains")),p=new Set((n.runtimeHostnames??[]).map(A=>A.toLowerCase().replace(/\.$/,"")));[...d,...c].some(A=>Xr(A.hostname,p))&&v("CSP_ORIGIN_FORBIDDEN");let l={declared:true,connectDomains:gi(d),frameDomains:gi(c)},u=mi(l);return Object.freeze({...l,resourceDomains:Object.freeze([]),baseUriDomains:Object.freeze([]),cspHash:crypto.createHash("sha256").update(u,"utf8").digest("hex")})}var Ur,yi,Cr,kr,wr,xr,jr,vr,Vr,Fr,Br,ft,Ti=w(()=>{g();Ur=4096,yi=16,Cr=32,kr=512,wr=new Set(["connectDomains","frameDomains","resourceDomains","baseUriDomains"]),xr=["localhost","local","internal","home.arpa","test","example","invalid","onion","lan","corp","home","intranet","private","localdomain"],jr=/^(https|wss):\/\/([^/?#]+)$/i,vr=/^\[[^\]]+\](?::[0-9]+)?$/,Vr=/^[^:\[\]]+(?::[0-9]+)?$/,Fr=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,Br=[[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]],ft=class extends Error{constructor(t){super(t);this.code=t;}code;name="UiPluginCspNormalizationError"};});function rn(e,n){return n===void 0||n===""?e:e===""?n:n.startsWith("[")?`${e}${n}`:`${e}.${n}`}function y(e,n=e,t,i){throw new oe(e,n,t,i)}function F(e,n){try{return n()}catch(t){throw t instanceof oe?t.withPathPrefix(e):t}}function B(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 U(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function Es(e,n){let t={};for(let[i,r]of Object.entries(e))i!==n&&(t[i]=r);return t}function $(e,n,t=[]){let i=new Set([...n,...t]),r=Object.keys(e).find(s=>!i.has(s));r!==void 0&&y("MANIFEST_INVALID","MANIFEST_INVALID",r,"unknown-key");let o=n.find(s=>!U(e,s));o!==void 0&&y("MANIFEST_INVALID","MANIFEST_INVALID",o,"missing-key");}function Ln(e,n=false,t=false,i=false){return Zr.test(e)||!i&&es.test(e)||Qr.test(e)||t&&Ei.test(e)||ns.test(e)&&!(n&&/^\s*data:/i.test(e)&&!Ei.test(e))}function Sn(e,n=new Set,t=0,i=false,r=false,o=""){if(typeof e=="string"){Ln(e,i,r)&&y("UNSAFE_VALUE","UNSAFE_VALUE",o,"unsafe-value");return}if(!(e===null||typeof e!="object")){(t>8||n.has(e))&&y("MANIFEST_INVALID","MANIFEST_INVALID",o),n.add(e);try{if(Array.isArray(e)){e.forEach((s,a)=>Sn(s,n,t+1,!1,!1,rn(o,`[${a}]`)));return}B(e)||y("MANIFEST_INVALID","MANIFEST_INVALID",o);for(let[s,a]of Object.entries(e))Sn(a,n,t+1,i&&t===0&&(s==="name"||s==="description"),r,rn(o,s));}finally{n.delete(e);}}}function ge(e,n){let t=e[n];return typeof t!="string"&&y("MANIFEST_INVALID"),t}function le(e,n,t){let i=e[n];return (!Number.isSafeInteger(i)||i<t)&&y("MANIFEST_INVALID"),i}function yt(e){return qr.test(e)||y("MANIFEST_INVALID"),e}function Ge(e){return Yr.test(e)||y("TOKEN_INVALID"),e}function Ds(e){return Ri.test(e)||y("MANIFEST_INVALID"),e}function Ns(e){B(e)||y("MANIFEST_INVALID");let n={};for(let[t,i]of Object.entries(e)){let r=Ds(t);B(i)||y("MANIFEST_INVALID");let o=i.type;if(o==="text"){$(i,["type","maxLength"]),n[r]={type:o,maxLength:le(i,"maxLength",1)};continue}if(o==="text-list"){$(i,["type","max","itemMaxLength"]),n[r]={type:o,max:le(i,"max",0),itemMaxLength:le(i,"itemMaxLength",1)};continue}if(o==="step-list"){$(i,["type","min","max","labelMaxLength","detailMaxLength"]);let s=le(i,"min",0),a=le(i,"max",1);s>a&&y("MANIFEST_INVALID"),n[r]={type:o,min:s,max:a,labelMaxLength:le(i,"labelMaxLength",1),detailMaxLength:le(i,"detailMaxLength",1)};continue}typeof o=="string"&&y("SCHEMA_TYPE_UNSUPPORTED"),y("MANIFEST_INVALID");}return n}function bs(e,n,t){let i=e[n];(!i||i.type!==t)&&y("MANIFEST_INVALID");}function Pn(e,n,t){let i=ge(e,"field");return Ri.test(i)||y("MANIFEST_INVALID"),bs(n,i,t),i}function Ps(e,n){B(e)||y("MANIFEST_INVALID");let t=e.primitive;switch(typeof t!="string"&&y("MANIFEST_INVALID"),Ts.includes(t)||y("PRIMITIVE_UNKNOWN"),t){case "card-shell":return $(e,["primitive"]),{primitive:t};case "meta-banner":return $(e,["primitive","badgeToken","noticeToken"]),{primitive:t,badgeToken:Ge(ge(e,"badgeToken")),noticeToken:Ge(ge(e,"noticeToken"))};case "heading":return $(e,["primitive","field"]),{primitive:t,field:Pn(e,n,"text")};case "labeled-text":return $(e,["primitive","titleToken","field","variant"]),e.variant!=="callout"&&y("MANIFEST_INVALID"),{primitive:t,titleToken:Ge(ge(e,"titleToken")),field:Pn(e,n,"text"),variant:"callout"};case "step-flow":return $(e,["primitive","titleToken","field"]),{primitive:t,titleToken:Ge(ge(e,"titleToken")),field:Pn(e,n,"step-list")};case "text-list":{$(e,["primitive","titleToken","field"],["emptyToken","hideWhenEmpty"]);let i={primitive:t,titleToken:Ge(ge(e,"titleToken")),field:Pn(e,n,"text-list")};return U(e,"emptyToken")&&(i.emptyToken=Ge(ge(e,"emptyToken"))),U(e,"hideWhenEmpty")&&(typeof e.hideWhenEmpty!="boolean"&&y("MANIFEST_INVALID"),i.hideWhenEmpty=e.hideWhenEmpty),i}}return y("MANIFEST_INVALID")}function Ms(e,n){return Array.isArray(e)||y("MANIFEST_INVALID"),e.map(t=>Ps(t,n))}function J(e="v2 manifest exceeds a contract limit",n,t){return y("LIMIT_EXCEEDED",e,n,t)}function pe(e="initial state is not projection-safe"){return y("INITIAL_STATE_INVALID",e)}function Di(e,n){return (typeof e!="string"||e.length===0||e.length>4096||e.trim().length===0||ms.test(e)||hs.test(e))&&y("MANIFEST_INVALID",`${n} is invalid`),(Ln(e,true,true)||ts.test(e)||is.test(e)||os.test(e))&&y("UNSAFE_VALUE",`${n} contains an unsafe value`),e}function At(e,n){return (typeof e!="string"||!Ie.test(e))&&y("MANIFEST_INVALID",`${n} is invalid`),e}function Ss(e){return (typeof e!="string"||!tt.test(e)||e==="*"||e==="all")&&y("MANIFEST_INVALID","action capability is invalid"),e}function Ui(e){return (typeof e!="string"||!gs.test(e))&&y("MANIFEST_INVALID","resource hash is invalid"),e}function It(e,n=new Set,t=0,i=""){if(typeof e=="string"){e.length>4096&&J("v2 manifest string is too long",i,"string-too-long");return}if(!(e===null||typeof e=="boolean")){if(typeof e=="number"){Number.isFinite(e)||y("MANIFEST_INVALID","v2 manifest contains a non-finite number",i,"non-finite-number");return}(e===void 0||typeof e=="function"||typeof e=="bigint")&&y("MANIFEST_INVALID","v2 manifest contains a non-JSON value",i,"non-json-value"),typeof e!="object"&&y("MANIFEST_INVALID","MANIFEST_INVALID",i),t>8&&J("v2 manifest nesting is too deep",i,"too-deep"),n.has(e)&&y("MANIFEST_INVALID","v2 manifest contains a cycle",i,"cycle"),n.add(e);try{if(Array.isArray(e)){e.length>128&&J("v2 manifest array is too long",i,"array-too-long"),e.forEach((r,o)=>It(r,n,t+1,rn(i,`[${o}]`)));return}B(e)||y("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,rn(i,r));}finally{n.delete(e);}}}function Ci(e){return (typeof e!="string"||e.length>4096||!nn.test(e))&&(typeof e=="string"&&e.length>4096&&J("projection path is too long"),y("MANIFEST_INVALID","projection paths must be canonical exact paths")),e.split(".").some(t=>He(t))&&y("MANIFEST_INVALID","projection paths cannot address reserved state keys"),e}function gt(e){B(e)||y("MANIFEST_INVALID","projection policy must be an object"),$(e,["allow"]),Array.isArray(e.allow)||y("MANIFEST_INVALID","projection allow must be an array"),e.allow.length>128&&J("projection allowlist is too long");let n=[],t=new Set;for(let i of e.allow){let r=Ci(i);t.has(r)&&y("MANIFEST_INVALID","projection allowlist contains a duplicate path"),t.add(r),n.push(r);}return {allow:n}}function Ls(e,n){if(e===void 0)return;Array.isArray(e)||y("MANIFEST_INVALID","dataPaths must be an array"),e.length>_s&&J("dataPaths exceed the v2 limit");let t=[],i=new Set;for(let r of e){let o=Ci(r);i.has(o)&&y("MANIFEST_INVALID","dataPaths contain a duplicate path"),n.some(s=>Fe(o,s))||y("MANIFEST_INVALID","dataPaths must be projection-allowed"),i.add(o),t.push(o);}return t}function $e(e,n,t=Number.MAX_SAFE_INTEGER){return (!Number.isSafeInteger(e)||e<0||e>t)&&y("MANIFEST_INVALID",`${n} is invalid`),e}function Ni(e,n){return (typeof e!="number"||!Number.isFinite(e))&&y("MANIFEST_INVALID",`${n} is invalid`),e}function mt(e,n=0,t=new Set){if(typeof e=="string")return (e.length>4096||Ln(e))&&y("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)||y("MANIFEST_INVALID","schema enum contains a non-finite number"),e;(n>8||typeof e!="object"||e===void 0)&&J("schema enum is too deep"),t.has(e)&&y("MANIFEST_INVALID","schema enum contains a cycle"),t.add(e);try{if(Array.isArray(e))return e.length>128&&J("schema enum array is too long"),e.map(r=>mt(r,n+1,t));B(e)||y("MANIFEST_INVALID","schema enum contains a non-plain object");let i={};for(let[r,o]of Object.entries(e))He(r)&&y("MANIFEST_INVALID","schema enum contains a reserved key"),i[r]=mt(o,n+1,t);return i}finally{t.delete(e);}}function Os(e,n){if(e===void 0)return;Array.isArray(e)||y("MANIFEST_INVALID","schema required must be an array"),e.length>64&&J("schema required list is too long");let t=[],i=new Set;for(let r of e)(typeof r!="string"||!nn.test(r))&&y("MANIFEST_INVALID","schema required contains an invalid key"),r.length>4096&&J("schema required key is too long"),i.has(r)&&y("MANIFEST_INVALID","schema required contains a duplicate key"),n&&!Object.prototype.hasOwnProperty.call(n,r)&&y("MANIFEST_INVALID","schema required references an undeclared property"),i.add(r),t.push(r);return t}function Rs(e,n){let t=n?nn:Dn;return e.length>4096&&J("schema property name is too long"),(!t.test(e)||e.split(".").some(i=>He(i)))&&y("MANIFEST_INVALID","schema property name is invalid"),e}function ht(e,n=0,t=false){B(e)||y("MANIFEST_INVALID","action inputSchema must be an object"),n>8&&J("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"&&y("SCHEMA_TYPE_UNSUPPORTED","action inputSchema type is unsupported"),y("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"),$(e,["type"],r.filter(a=>a!=="type"));let o={type:i};if(U(e,"enum")&&(Array.isArray(e.enum)||y("MANIFEST_INVALID","schema enum must be an array"),e.enum.length>128&&J("schema enum is too long"),o.enum=e.enum.map(a=>mt(a))),i==="string"&&(U(e,"minLength")&&(o.minLength=$e(e.minLength,"schema minLength",4096)),U(e,"maxLength")&&(o.maxLength=$e(e.maxLength,"schema maxLength",4096)),o.minLength!==void 0&&o.maxLength!==void 0&&o.minLength>o.maxLength&&y("MANIFEST_INVALID","schema string length bounds are inverted")),(i==="number"||i==="integer")&&(U(e,"minimum")&&(o.minimum=Ni(e.minimum,"schema minimum")),U(e,"maximum")&&(o.maximum=Ni(e.maximum,"schema maximum")),o.minimum!==void 0&&o.maximum!==void 0&&o.minimum>o.maximum&&y("MANIFEST_INVALID","schema numeric bounds are inverted")),i==="array"&&(U(e,"minItems")&&(o.minItems=$e(e.minItems,"schema minItems",128)),U(e,"maxItems")&&(o.maxItems=$e(e.maxItems,"schema maxItems",128)),o.minItems!==void 0&&o.maxItems!==void 0&&o.minItems>o.maxItems&&y("MANIFEST_INVALID","schema array length bounds are inverted"),U(e,"items")&&(o.items=ht(e.items,n+1,false))),i==="object"){let a;if(U(e,"properties")){B(e.properties)||y("MANIFEST_INVALID","schema properties must be an object");let c=Object.entries(e.properties);c.length>64&&J("schema properties are too many"),a={};for(let[p,l]of c){let u=Rs(p,t);a[u]=ht(l,n+1,false);}o.properties=a;}U(e,"minProperties")&&(o.minProperties=$e(e.minProperties,"schema minProperties",64)),U(e,"maxProperties")&&(o.maxProperties=$e(e.maxProperties,"schema maxProperties",64)),o.minProperties!==void 0&&o.maxProperties!==void 0&&o.minProperties>o.maxProperties&&y("MANIFEST_INVALID","schema object property bounds are inverted");let d=Os(e.required,a);d!==void 0&&(o.required=d),U(e,"additionalProperties")&&(e.additionalProperties!==false&&y("MANIFEST_INVALID","schema additionalProperties must be false"),o.additionalProperties=false);}let s=JSON.stringify(o);return (s===void 0||Buffer.byteLength(s,"utf8")>1048576)&&J("action inputSchema subtree is too large"),o}function Us(e){let n=ht(e,0,true);return (n.type!=="object"||!n.properties)&&y("MANIFEST_INVALID","action inputSchema must declare object properties"),n}function Cs(e){if(B(e)||y("MANIFEST_INVALID","action backend must be an object"),e.type==="core"){$(e,ls);let n=e.handler;return (typeof n!="string"||!it.test(n))&&y("MANIFEST_INVALID","core backend handler is invalid"),{type:"core",handler:n}}if(e.type==="skill"&&U(e,"entry"))return $(e,ys),e.entry!==ze&&y("MANIFEST_INVALID",`skill backend entry must be ${ze}`),{type:"skill",entry:ze};if(e.type==="skill"){$(e,us,fs),(!Array.isArray(e.command)||e.command.length===0||e.command.length>16)&&y("MANIFEST_INVALID","skill backend command is invalid");let n=[];for(let i of e.command)(typeof i!="string"||i.length===0||i.length>256||!ot.test(i))&&y("MANIFEST_INVALID","skill backend command token is invalid"),n.push(i);let t=U(e,"env")?ws(e.env):void 0;return {type:"skill",command:n,...t===void 0?{}:{env:t}}}y("MANIFEST_INVALID","action backend type is unsupported");}function ks(e){B(e)||y("MANIFEST_INVALID","action must be an object"),$(e,cs,ds),U(e,"_meta")&&F("_meta",()=>ki(e._meta));let n=F("actionId",()=>At(e.actionId,"actionId"));Qn(n)&&y("MANIFEST_INVALID",`actionId "${n}" is not projection-safe`,"actionId");let t=F("capability",()=>Ss(e.capability)),i=e.mutation;typeof i!="boolean"&&y("MANIFEST_INVALID","action mutation must be boolean","mutation");let r=F("inputSchema",()=>Us(e.inputSchema)),o;if(U(e,"dataInputs")){Array.isArray(e.dataInputs)||y("MANIFEST_INVALID","action dataInputs must be an array","dataInputs");let p=r.properties,l=new Set,u=[];for(let A of e.dataInputs)(typeof A!="string"||!U(p,A)||l.has(A))&&y("MANIFEST_INVALID","action dataInputs must be unique declared properties","dataInputs"),l.add(A),u.push(A);o=u;}let s=F("resultProjection",()=>gt(e.resultProjection)),a=F("backend",()=>Cs(e.backend)),d;U(e,"content")&&((a.type!=="skill"||!Nn(e.content))&&y("MANIFEST_INVALID","action content declaration is invalid","content"),d=xs(e.content));let c;if(U(e,"confirmation")){let p=e.confirmation;p!=="none"&&p!=="native"&&y("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 ws(e){return li(e)||y("MANIFEST_INVALID","skill backend env is invalid"),Object.freeze([...e])}function xs(e){return Object.freeze({...e.in===void 0?{}:{in:Object.freeze({...e.in})},...e.out===void 0?{}:{out:Object.freeze({...e.out})}})}function js(e){return B(e)||y("INITIAL_STATE_INVALID","initialState must be an object"),$(e,As,Is),e.path!=="ui/state.json"&&y("MANIFEST_INVALID","initialState path is not fixed"),U(e,"hash")?{path:"ui/state.json",hash:Ui(e.hash)}:{path:"ui/state.json"}}function vs(e){let n=["wasm","terminal","htmlDocuments"];return (!B(e)||Object.keys(e).length===0||Object.keys(e).some(t=>!n.includes(t)||e[t]!==true))&&y("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 Vs(e,n){let t;try{t=_i(e);}catch(i){let r=i!==null&&typeof i=="object"&&"code"in i&&typeof i.code=="string"?i.code:"CSP_ORIGIN_INVALID";return y("MANIFEST_INVALID",r,void 0,r.toLowerCase().replace(/_/g,"-"))}if(t.frameDomains.length>0&&y("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&&y("MANIFEST_INVALID","runtime.terminal cannot be combined with csp.connectDomains","connectDomains","terminal-with-connect-domains"),Object.freeze({connectDomains:t.connectDomains})}function Fs(e,n){Sn(B(e)&&U(e,"csp")?Es(e,"csp"):e,new Set,0,true,true),It(e),B(e)||y("MANIFEST_INVALID"),$(e,ss,as),U(e,"_meta")&&F("_meta",()=>ki(e._meta)),e.manifestVersion!==2&&y("MANIFEST_INVALID");let t;U(e,"runtime")&&(t=F("runtime",()=>vs(e.runtime)));let i;U(e,"csp")&&(i=F("csp",()=>Vs(e.csp,t)));let r=F("pluginId",()=>At(e.pluginId,"pluginId")),o=F("definitionId",()=>At(e.definitionId,"definitionId")),s=F("version",()=>le(e,"version",1)),a=F("name",()=>Di(e.name,"name")),d=F("description",()=>Di(e.description,"description")),c;U(e,"icon")&&((typeof e.icon!="string"||!/^[a-z][a-z0-9-]{0,63}$/.test(e.icon))&&y("MANIFEST_INVALID","icon is invalid","icon"),c=e.icon);let p;U(e,"tone")&&((typeof e.tone!="string"||!rt.includes(e.tone))&&y("MANIFEST_INVALID","tone is invalid","tone"),p=e.tone),e.entry!=="ui/index.html"&&y("MANIFEST_INVALID","entry path is not fixed","entry","fixed-value");let l;U(e,"entryHash")&&(l=F("entryHash",()=>Ui(e.entryHash)));let u;U(e,"initialState")&&(u=F("initialState",()=>js(e.initialState)));let A;U(e,"usage")&&(e.usage!=="card"&&e.usage!=="window"&&y("MANIFEST_INVALID","usage is invalid","usage"),A=e.usage);let I;U(e,"detailPanel")&&(typeof e.detailPanel!="boolean"&&y("MANIFEST_INVALID","detailPanel is invalid","detailPanel"),I=e.detailPanel);let h;if(U(e,"displayModes")){((A??tn)!==tn||!Array.isArray(e.displayModes)||e.displayModes.length===0)&&y("MANIFEST_INVALID","displayModes are only valid for window Apps","displayModes");let f=new Set(["inline","floating","focused"]);(new Set(e.displayModes).size!==e.displayModes.length||e.displayModes.some(m=>typeof m!="string"||!f.has(m)))&&y("MANIFEST_INVALID","displayModes are invalid","displayModes"),h=e.displayModes;}(A??tn)===tn&&I!==void 0&&y("MANIFEST_INVALID","detailPanel is card-only","detailPanel");let b=n.mode??"local";b!=="local"&&b!=="installed"&&b!=="published"&&y("MANIFEST_INVALID","manifest mode is invalid"),b!=="local"&&l===void 0&&y("MANIFEST_INVALID","installed manifests require entryHash","entryHash","required-when-installed"),b!=="local"&&u!==void 0&&u.hash===void 0&&y("MANIFEST_INVALID","installed manifests require initialState.hash","initialState.hash","required-when-installed"),(!Array.isArray(e.surfaces)||e.surfaces.length===0)&&y("MANIFEST_INVALID","surfaces are invalid","surfaces"),e.surfaces.length>2&&J("surfaces exceed the v2 limit","surfaces","too-many-items");let V=[],x=new Set;for(let f of e.surfaces)(typeof f!="string"||!st.includes(f))&&y("MANIFEST_INVALID","surface is unsupported","surfaces"),x.has(f)&&y("MANIFEST_INVALID","surfaces contain a duplicate","surfaces","duplicate-item"),x.add(f),V.push(f);B(e.size)||y("MANIFEST_INVALID","size must be an object","size"),F("size",()=>$(e.size,["height"]));let M=F("size",()=>le(e.size,"height",1));M>720&&J("size.height exceeds the v2 limit","size.height","too-large");let O=F("stateProjection",()=>gt(e.stateProjection)),H=e.summaryProjection===void 0?void 0:F("summaryProjection",()=>gt(e.summaryProjection));H!==void 0&&H.allow.some(f=>!O.allow.includes(f))&&y("MANIFEST_INVALID","summaryProjection must be a subset of stateProjection.allow","summaryProjection");let N=F("dataPaths",()=>Ls(e.dataPaths,O.allow));Array.isArray(e.actions)||y("MANIFEST_INVALID","actions must be an array","actions"),e.actions.length>32&&J("actions exceed the v2 limit","actions","too-many-items");let L=[],S=new Set;for(let[f,m]of e.actions.entries()){let T=`actions[${f}]`,P=F(T,()=>ks(m));if(S.has(P.actionId)&&y("MANIFEST_INVALID","actions contain a duplicate actionId",`${T}.actionId`,"duplicate-item"),P.backend.type==="core"&&P.backend.handler==="state.set"){P.mutation||y("MANIFEST_INVALID","state.set actions must be mutations",`${T}.mutation`);for(let D of Object.keys(P.inputSchema.properties))O.allow.includes(D)||y("MANIFEST_INVALID","state.set input paths must be projection-allowed",`${T}.inputSchema.properties`);}S.add(P.actionId),L.push(P);}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",...l===void 0?{}:{entryHash:l},...t===void 0?{}:{runtime:t},...i===void 0?{}:{csp:i},...u===void 0?{}:{initialState:u},...A===void 0?{}:{usage:A},...I===void 0?{}:{detailPanel:I},...h===void 0?{}:{displayModes:h},surfaces:V,size:{height:M},stateProjection:O,...H===void 0?{}:{summaryProjection:H},...N===void 0?{}:{dataPaths:N},actions:L}}function ki(e){B(e)||y("MANIFEST_INVALID","_meta must be an object");let n=JSON.stringify(e);(n===void 0||Buffer.byteLength(n,"utf8")>ps)&&J("_meta exceeds the 4 KiB limit",void 0,"meta-too-large");}function Bs(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 _t(e,n,t,i,r,o){if(typeof e=="string"){let s=r.length>0&&o.some(a=>Fe(r.join("."),a));return (e.length>4096||Ln(e,false,false,s))&&pe("state contains an unsafe string"),e}if(e===null||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)||pe("state contains a non-finite number"),e;(e===void 0||typeof e!="object"||typeof e=="function"||typeof e=="bigint")&&pe("state contains a non-JSON value"),t>8&&pe("state is too deep"),n.has(e)&&pe("state contains a cycle"),n.add(e);try{let s;if(Array.isArray(e))e.length>128&&pe("state array is too long"),s=e.map(d=>_t(d,n,t+1,1048576,r,o));else {B(e)||pe("state contains a non-plain object");let d={};for(let[c,p]of Object.entries(e))(c.length>4096||!Dn.test(c)||He(c))&&(c.length>4096&&pe("state key is too long"),pe("state contains a reserved or invalid key")),d[c]=_t(p,n,t+1,1048576,[...r,c],o);s=d;}let a=JSON.stringify(s);return (a===void 0||Buffer.byteLength(a,"utf8")>i)&&pe("state subtree is too large"),s}finally{n.delete(e);}}function Et(e,n=[]){B(e)||pe("initial state must be a JSON object");let t=_t(e,new Set,0,1048576,[],n);return (t===null||Array.isArray(t)||typeof t!="object")&&pe(),t}function Hs(e,n={}){Sn(e),B(e)||y("MANIFEST_INVALID"),$(e,rs),e.manifestVersion!==1&&y("MANIFEST_INVALID");let t=yt(ge(e,"pluginId")),i=yt(ge(e,"definitionId")),r=le(e,"version",1),o=le(e,"primitiveSet",1),s=n.supportedPrimitiveSet??Kr;(!Number.isSafeInteger(s)||s<1)&&y("MANIFEST_INVALID"),o>s&&y("PRIMITIVE_SET_UNSUPPORTED"),B(e.activation)||y("MANIFEST_INVALID"),$(e.activation,["kind","language"]),e.activation.kind!=="fenced-code"&&y("MANIFEST_INVALID");let a=yt(ge(e.activation,"language")),d=Ns(e.schema),c=Ms(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 zs(e,n={}){return B(e)||y("MANIFEST_INVALID"),Object.hasOwn(e,"lineage")&&y("MANIFEST_INVALID","lineage is only allowed in product bundle indexes"),e.manifestVersion===2?Fs(e,n):Hs(e,n)}function sn(e,n={}){try{return zs(e,n)}catch(t){if(t instanceof oe)throw t;return y("MANIFEST_INVALID")}}function an(e,n={}){let t=sn(e,n);return t.manifestVersion===2?Bs(t):t}var Kr,Yr,qr,Ri,Zr,Qr,es,ns,Ei,ts,is,os,rs,ss,as,cs,ds,ps,ls,us,fs,ys,As,Is,gs,ms,hs,_s,Ts,oe,Dt=w(()=>{g();pi();De();dt();ui();ut();Ti();Re();Kr=1,Yr=/^[a-z][a-zA-Z0-9]*(\.[a-zA-Z0-9]+)+$/,qr=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,Ri=/^[A-Za-z][A-Za-z0-9_-]{0,63}$/,Zr=/<\/?[A-Za-z][^>]*>/,Qr=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,es=/^(?:https?|file|ftp|ws|wss):\/\//i,ns=/^\s*(?:javascript|data):/i,Ei=/data:[^,\s]*,/i,ts=/(?:https?|file|ftp|ws|wss):\/\//i,is=/javascript:/i,os=/(?:^[\s]*|[\s"'(=])(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)(?=[^\s"'<>])[^\s"'<>]*/,rs=["manifestVersion","pluginId","definitionId","version","primitiveSet","activation","schema","layout"],ss=["manifestVersion","pluginId","definitionId","version","name","description","entry","surfaces","size","stateProjection","actions"],as=["_meta","icon","tone","entryHash","runtime","csp","initialState","usage","detailPanel","displayModes","summaryProjection","dataPaths","focusedAiDataPaths"],cs=["actionId","capability","mutation","inputSchema","resultProjection","backend"],ds=["confirmation","dataInputs","content","_meta"],ps=4*1024,ls=["type","handler"],us=["type","command"],fs=["env"],ys=["type","entry"],As=["path"],Is=["hash"],gs=/^[0-9a-f]{64}$/,ms=/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/,hs=/[\r\n]/,_s=16,Ts=["card-shell","meta-banner","heading","labeled-text","step-flow","text-list"],oe=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,rn(t,this.path),this.rule)}};});function Fi(e){return typeof e=="string"&&e.length<=$s&&Gs.test(e)}function C(e,n,t,i,r){throw new he(e,{path:n,rule:t,...i===void 0?{}:{message:i},...r===void 0?{}:{file:r}})}function Z(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 W(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function fe(e){let n=`_meta["${Me}"]`;return e===void 0||e===""?n:e.startsWith("[")?`${n}${e}`:`${n}.${e}`}function Ks(e){return e.toLowerCase().replace(/_/g,"-")}function Ys(e){if(e===void 0||e==="")return "";let n=/^([^.[]+)(.*)$/.exec(e);if(!n)return fe(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 fe("definitionVersion");case "definitionId":return fe("definitionId");default:return fe(`${t}${i}`)}}function Bi(e,n,t){return {path:t(e.path),rule:e.rule??Ks(e.code),...e.message!==e.code?{message:e.message}:{},file:n}}function Hi(e){return JSON.parse(JSON.stringify(e))}function Pt(e,n,t=0,i=new Set){if(typeof e=="string"){e.length>4096&&C("LIMIT_EXCEEDED",n,"string-too-long"),(Js.test(e)||Ws.test(e)||Xs.test(e))&&C("UNSAFE_VALUE",n,"unsafe-value");return}if(!(e===null||typeof e=="boolean")){if(typeof e=="number"){Number.isFinite(e)||C("MANIFEST_INVALID",n,"non-finite-number");return}typeof e!="object"&&C("MANIFEST_INVALID",n,"non-json-value"),t>8&&C("LIMIT_EXCEEDED",n,"too-deep"),i.has(e)&&C("MANIFEST_INVALID",n,"cycle"),i.add(e);try{if(Array.isArray(e)){e.length>128&&C("LIMIT_EXCEEDED",n,"array-too-long"),e.forEach((r,o)=>Pt(r,`${n}[${o}]`,t+1,i));return}Z(e)||C("MANIFEST_INVALID",n,"non-plain-object");for(let[r,o]of Object.entries(e))Pt(o,n===""?r:`${n}.${r}`,t+1,i);}finally{i.delete(e);}}}function ue(e,n){return (typeof e!="string"||e.length===0)&&C("MANIFEST_INVALID",n,"string"),e}function We(e,n){return Z(e)||C("MANIFEST_INVALID",n,"object"),e}function qs(e,n){Array.isArray(e)||C("MANIFEST_INVALID",n,"array"),e.forEach((t,i)=>ue(t,`${n}[${i}]`));}function Zs(e,n){typeof e!="boolean"&&C("MANIFEST_INVALID",n,"boolean");}function cn(e,n,t,i){for(let r of Object.keys(e))!t.includes(r)&&!i.includes(r)&&C("MANIFEST_INVALID",`${n}.${r}`,"unknown-key");for(let r of t)W(e,r)||C("MANIFEST_INVALID",`${n}.${r}`,"missing-key");}function Qs(e,n){switch(Pt(n,e),e){case "long_description":case "homepage":case "documentation":case "support":case "icon":case "license":ue(n,e);return;case "author":{let t=We(n,e);cn(t,e,["name"],["email","url"]);for(let i of Object.keys(t))ue(t[i],`${e}.${i}`);return}case "repository":{let t=We(n,e);cn(t,e,[],["type","url"]);for(let i of Object.keys(t))ue(t[i],`${e}.${i}`);return}case "icons":{Array.isArray(n)||C("MANIFEST_INVALID",e,"array"),n.forEach((t,i)=>{let r=`${e}[${i}]`,o=We(t,r);cn(o,r,["src","size"],["theme"]),ue(o.src,`${r}.src`),ue(o.size,`${r}.size`),W(o,"theme")&&ue(o.theme,`${r}.theme`);});return}case "screenshots":case "keywords":case "privacy_policies":qs(n,e);return;case "tools":{Array.isArray(n)||C("MANIFEST_INVALID",e,"array"),n.forEach((t,i)=>{let r=`${e}[${i}]`,o=We(t,r);cn(o,r,["name"],["description"]),ue(o.name,`${r}.name`),W(o,"description")&&ue(o.description,`${r}.description`);});return}case "prompts":{Array.isArray(n)||C("MANIFEST_INVALID",e,"array"),n.forEach((t,i)=>{let r=`${e}[${i}]`,o=We(t,r);cn(o,r,["name","text"],["description","arguments"]),ue(o.name,`${r}.name`),ue(o.text,`${r}.text`);});return}case "tools_generated":case "prompts_generated":Zs(n,e);return;case "localization":case "compatibility":case "user_config":We(n,e);return;default:C("MANIFEST_INVALID",e,"unknown-key");}}function On(e){return typeof e=="string"&&Ie.test(e)?e:void 0}function zi(e){return Number.isSafeInteger(e)&&e>=1?e:void 0}function ea(e){let n=On(e.name);if(n===void 0)return;let t=e._meta,i=Z(t)?t[Me]:void 0,r=Z(i)?i:{},o=W(r,"definitionId")?On(r.definitionId):n,s=W(r,"definitionVersion")?zi(r.definitionVersion):1;return {pluginId:n,...o===void 0?{}:{definitionId:o},...s===void 0?{}:{definitionVersion:s}}}function na(e){let n=On(e.pluginId);if(n===void 0)return;let t=On(e.definitionId),i=zi(e.version);return {pluginId:n,...t===void 0?{}:{definitionId:t},...i===void 0?{}:{definitionVersion:i}}}function Ot(e){try{let n=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(e));if(!Z(n))return !1;let t=n._meta;return Z(t)&&W(t,Me)}catch{return false}}function ta(e,n){if(e===ke)return n.builtinOnly===true;let t=n._meta,i=Z(t)?t[Me]:void 0;return Z(i)&&i.builtinOnly===true}function ia(e,n){W(e,"server")&&C("MANIFEST_INVALID","server","server-unsupported","phase 1 runs CrewX-owned Apps only");for(let a of Object.keys(e))St.includes(a)||C("MANIFEST_INVALID",a,"unknown-key");for(let a of Lt)W(e,a)||C("MANIFEST_INVALID",a,"missing-key");e.manifest_version!==Nt&&C("MANIFEST_INVALID","manifest_version","unsupported-version",`manifest_version must be "${Nt}"`),Fi(e.version)||C("MANIFEST_INVALID","version","semver","version must be a semver.org version such as 0.1.0");let t=e._meta;Z(t)||C("MANIFEST_INVALID","_meta","object"),W(t,Me)||C("MANIFEST_INVALID",fe(),"missing-key");let i=t[Me];Z(i)||C("MANIFEST_INVALID",fe(),"object");for(let a of Object.keys(i))bt.includes(a)||Vi.includes(a)||C("MANIFEST_INVALID",fe(a),"unknown-key");for(let a of bt)a==="actions"&&n!==void 0||W(i,a)||C("MANIFEST_INVALID",fe(a),"missing-key");if(n!==void 0&&W(i,"actions")&&C("MANIFEST_INVALID",fe("actions"),"two-truths",`actions are declared in both ${X} and ${Y}; a server.ts App keeps them in the tools file only`),oa(i.actions),W(i,"definitionVersion")){let a=i.definitionVersion;(!Number.isSafeInteger(a)||a<1)&&C("MANIFEST_INVALID",fe("definitionVersion"),"positive-integer");}let r={};for(let a of vi)W(e,a)&&(Qs(a,e[a]),r[a]=Hi(e[a]));let o={};for(let[a,d]of Object.entries(t))a!==Me&&(o[a]=d);let s={manifestVersion:2,pluginId:e.name,definitionId:W(i,"definitionId")?i.definitionId:e.name,version:W(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:ze}}))),Object.keys(o).length>0&&(s._meta=o),{v2Input:s,...Object.keys(o).length>0?{vendorMeta:o}:{},passthrough:r}}function oa(e){Array.isArray(e)&&e.forEach((n,t)=>{let i=Z(n)?n.backend:void 0;Z(i)&&W(i,"entry")&&C("MANIFEST_INVALID",fe(`actions[${t}].backend.entry`),"entry-not-authorable",`an action in ${X} cannot name an entry; a server.ts App declares its actions in ${Y}`);});}function ra(e,n,t){Z(e)||C("MANIFEST_INVALID","","not-object","manifest.json must be a JSON object",X);let i;try{i=ia(e,t);}catch(s){throw s instanceof he?new he(s.code,{...s.reason,file:X}):s}let r;try{let s=sn(i.v2Input,{mode:n.mode??"local"});s.manifestVersion!==2&&C("MANIFEST_INVALID","","v2-required"),r=s;}catch(s){throw s instanceof oe?new he(s.code,Bi(s,X,Ys)):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 he("MANIFEST_INVALID",{path:`tools[${d}].name`,rule:"tool-not-action",message:"every tools[].name must be an action id",file:X})});}return {file:X,manifest:r,v2Input:i.v2Input,releaseVersion:e.version,...Object.keys(i.passthrough).length>0?{mcpb:i.passthrough}:{}}}function sa(e,n){try{let t=sn(e,{mode:n.mode??"local"});if(t.manifestVersion!==2)throw new he("MANIFEST_INVALID",{path:"manifestVersion",rule:"v2-required",message:"a workspace App requires manifestVersion 2",file:ke});return {file:ke,manifest:t,v2Input:e}}catch(t){throw t instanceof oe?new he(t.code,Bi(t,ke,i=>i??"")):t}}function Mt(e){return ie(an(e).definition)}function xi(e){let{entryHash:n,initialState:t,...i}=e,r={...i};return t!==void 0&&(r.initialState={path:t.path}),Hi(r)}function aa(e,n){let t=xi(e),i=xi(n);return [...new Set([...Object.keys(t),...Object.keys(i)])].sort().filter(o=>q(t[o]??null)!==q(i[o]??null))}function ca(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 da(e,n){let t=aa(e,n),i=ca(e,n),r="";try{let o=Mt(e),s=Mt(n);i=i||o!==s,r=` (definition hash ${o.slice(0,12)} vs ${s.slice(0,12)})`;}catch{i=true;}t.length===0&&!i||C("MANIFEST_DUAL_MISMATCH","","dual-manifest-mismatch",`${X} and ${ke} normalize to different definitions${r}`+(t.length>0?`; differing fields: ${t.join(", ")}`:""));}function me(e,n,t="MANIFEST_INVALID",i){return {code:t,reason:{path:e,rule:n,...i===void 0?{}:{message:i},file:Y},files:[]}}function ji(e){return {...me("","tools-needs-manifest-json","MANIFEST_INVALID",`${Y} is read with ${X} only`),files:e}}function pa(e,n){if(e.byteLength>n)return {failure:me("","file-too-large","LIMIT_EXCEEDED")};let t;try{t=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(e));}catch{return {failure:me("","invalid-json")}}if(!Z(t))return {failure:me("","not-object","MANIFEST_INVALID",`${Y} must be a JSON object`)};for(let r of Object.keys(t))if(r!=="schemaVersion"&&r!=="actions")return {failure:me(r,"unknown-key")};for(let r of ["schemaVersion","actions"])if(!W(t,r))return {failure:me(r,"missing-key")};if(t.schemaVersion!==1)return {failure:me("schemaVersion","unsupported-version","MANIFEST_INVALID",`schemaVersion must be ${1}`)};let i=t.actions;if(!Array.isArray(i))return {failure:me("actions","array")};for(let[r,o]of i.entries()){if(!Z(o))return {failure:me(`actions[${r}]`,"object")};if(W(o,"backend"))return {failure:me(`actions[${r}].backend`,"tools-backend","MANIFEST_INVALID",`an action in ${Y} cannot carry a backend`)}}return {actions:i}}function la(e,n){let t=n.maxBytes??262144,i=[],r=new TextDecoder("utf-8",{fatal:true});for(let o of re){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(!Z(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 Rt(e,n={}){let{parsed:t,failure:i}=la(e,n),r=re.filter(A=>e[A]!==void 0);if(i!==void 0)return {ok:false,rejection:i,parseFailure:true,builtinOnly:false};let o=e[Y],s=o===void 0?void 0:pa(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:[]}:ji(r),parseFailure:true,builtinOnly:false};let a=t[0],d=a.file===X?ea(a.raw):na(a.raw),c=t.some(A=>ta(A.file,A.raw)),p;if(s!==void 0){let A=t.some(I=>I.file===X)?s.failure:ji(r);if(A!==void 0)return {ok:false,rejection:A,parseFailure:false,...d===void 0?{}:{identity:d},builtinOnly:c};p=s.actions;}let l=[];try{for(let A of t)l.push(A.file===X?ra(A.raw,n,p):sa(A.raw,n));l.length===2&&da(l[0].manifest,l[1].manifest);}catch(A){if(A instanceof he)return {ok:false,rejection:{code:A.code,reason:A.reason,files:A.code==="MANIFEST_DUAL_MISMATCH"?[...re]:A.reason.file===void 0||A.reason.file===Y?r:[A.reason.file]},parseFailure:false,...d===void 0?{}:{identity:d},builtinOnly:c};throw A}let u=l[0];return {ok:true,...u,identity:d??{pluginId:u.manifest.pluginId},files:r}}var X,ke,re,Nt,Me,St,Lt,vi,bt,Vi,Gs,$s,Js,Ws,Xs,he,Ut=w(()=>{g();Ue();De();ut();Re();Dt();X="manifest.json",ke="ui-plugin.json",re=[X,ke],Nt="0.3",Me="dev.crewx",St=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"]),Lt=Object.freeze(["manifest_version","name","display_name","version","description","_meta"]),vi=Object.freeze(St.filter(e=>e!=="server"&&!Lt.includes(e))),bt=Object.freeze(["entry","surfaces","size","stateProjection","actions"]),Vi=Object.freeze(["definitionId","definitionVersion","icon","tone","entryHash","runtime","initialState","usage","detailPanel","displayModes","summaryProjection","dataPaths","focusedAiDataPaths","csp"]),Gs=/^(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-]+)*))?$/,$s=256,Js=/<\/?[A-Za-z][^>]*>/,Ws=/^\s*javascript:/i,Xs=/data:[^,\s]*,/i;he=class extends Error{constructor(t,i){super(`${t}: ${i.path||"<file>"} (${i.rule})`);this.code=t;this.reason=i;}code;reason};});var Gi=w(()=>{g();di();Ut();Dt();Re();});function E(e,n=e){throw new _e(e,n)}var _e,Un=w(()=>{g();_e=class extends Error{constructor(t,i=t){super(i);this.code=t;}code;name="McpAppContractError"};});var $i=w(()=>{g();});var Ji=w(()=>{g();Ue();De();Un();$i();});function Xi(e,n){return Wi.add(e),n!==void 0&&ua.set(e,n),e}function Xe(e){return e!==null&&typeof e=="object"&&Wi.has(e)}var Wi,ua,Cn=w(()=>{g();Wi=new WeakSet,ua=new WeakMap;});function ln(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Ct(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 qi(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;for(let n of Object.values(e))qi(n);return Object.freeze(e)}function Q(e){throw new Te("LINEAGE_INVALID",e)}function ha(e){throw new Te("LINEAGE_STALE",e)}function Zi(e){if(!ln(e)||!Ct(e,Aa,Ia)||!ln(e.actions))return Q("Lineage definition shape is invalid");for(let n of Object.values(e.actions))if(!ln(n)||!Ct(n,ga,ma))return Q("Lineage action definition shape is invalid");return e}function _a(e){if(!ln(e)||!Ct(e,fa,ya))return Q("Lineage entry shape is invalid");if(!Number.isSafeInteger(e.version)||e.version<1||typeof e.hash!="string"||!Ki.test(e.hash))return Q("Lineage entry identity is invalid");if(e.sourceHash!==void 0&&(typeof e.sourceHash!="string"||!Ki.test(e.sourceHash)))return Q("Lineage source hash is invalid");if(e.compat!==void 0&&e.compat!=="break")return Q("Lineage compatibility marker is invalid");let n=Zi(e.definition);if(n.version!==e.version)return Q("Lineage version does not match its definition");if(e.sourceHash!==void 0&&n.sourceHash!==e.sourceHash)return Q("Lineage source hash does not match its definition");let t;try{t=ie(n),de({...n,hash:e.hash});}catch{return Q("Lineage definition is invalid")}return t!==e.hash?Q("Lineage definition hash does not match"):qi({version:e.version,hash:e.hash,definition:n,...e.sourceHash===void 0?{}:{sourceHash:e.sourceHash},...e.compat===void 0?{}:{compat:e.compat}})}function Yi(e){return e.stateProjection?.allow??[]}function Ta(e,n){let t=[],i=new Set(Yi(n));Yi(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 Ea(e,n){return q(e)===q(n)}function kt(e,n){if(!Array.isArray(e)||e.length===0)return Q("Definition lineage is missing");if(!ln(n)||typeof n.hash!="string")return Q("Current definition is invalid");let t,i;try{let{hash:a,...d}=n;i=Zi(d),t={...i,hash:a},de(t);}catch{return Q("Current definition is invalid")}let r=e.map(_a),o=r[0].definition.id;if(r.some(a=>a.definition.id!==o))return Q("Lineage definition ids do not match");if(r.some((a,d)=>d>0&&a.version<=r[d-1].version))return Q("Lineage generations are not in increasing version order");if(r.some((a,d)=>r.findIndex(c=>c.hash===a.hash)!==d))return Q("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||!Ea(s.definition,i))return ha("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 l of Object.keys(p.definition.actions))a.has(l)&&d.add(l);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 Te("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=Ta(r[a].definition,t);if(c.length>0)throw new Te("LINEAGE_INVALID",`Lineage compatibility failed: ${c.join(", ")}`,c)}return Object.freeze({entries:Object.freeze(r),current:t})}var Te,Ki,fa,ya,Aa,Ia,ga,ma,wt=w(()=>{g();Ue();De();Te=class extends Error{constructor(t,i=t,r=[]){super(i);this.code=t;this.violations=r;}code;violations;name="UiDefinitionLineageError"},Ki=/^[0-9a-f]{64}$/,fa=["version","hash","definition"],ya=["sourceHash","compat"],Aa=["id","version","actions"],Ia=["sourceHash","usage","detailPanel","displayModes","renderer","surfaces","stateProjection","dataPaths","summaryProjection","legacy"],ga=["capabilities"],ma=["inputKeys","dataInputs","confirmation","resultProjection","content","env"];});var Qi,eo,no,xt,to=w(()=>{g();Qi="text/html;profile=mcp-app",eo=["crewx_app_terminal_connect","crewx_app_html_viewer_open"],no=["crewx_listWorkspaces","crewx_queryAgent","crewx_executeAgent","crewx_getTaskResult","crewx_listTasks","crewx_listAgents","callBrowser","openTab","listTabs","closeTab"],xt="text/html";});function io(e,n=[],t){if(e.content!==void 0||e.confirmation!=="none")return "denied";let i=Da();return i&&Object.hasOwn(i,e.actionId)?i[e.actionId]:e.backend?.type==="core"&&e.backend.handler.startsWith("host.")?"denied":e.backend?.type==="core"&&e.backend.handler==="state.set"?"allowed":e.backend?.type==="skill"?"approval_required":e.backend===void 0&&n.includes(e.actionId)?"allowed":"denied"}function Da(e){return;}var oo=w(()=>{g();Ue();Cn();});function Ua(e){let n=[];return e?.terminal===true&&n.push({name:"crewx_app_terminal_connect",description:"Open a local-only terminal session for this App.",inputSchema:{type:"object",properties:{workspace:{type:"string"},threadId:{type:"string"},instanceId:{type:"string"}},required:["threadId","instanceId"],additionalProperties:false},textFallback:"A local terminal connection is ready for this App.",visibility:Object.freeze(["app"]),kind:"host",resourceBinding:Le}),e?.htmlDocuments===true&&n.push({name:"crewx_app_html_viewer_open",description:"List workspace HTML documents or open one through a short-lived Host capability.",inputSchema:{type:"object",properties:{workspace:{type:"string"},threadId:{type:"string"},instanceId:{type:"string"},operation:{type:"string",enum:["list","open"]},documentId:{type:"string"}},required:["threadId","instanceId","operation"],additionalProperties:false},textFallback:"Workspace HTML documents are available through this App.",visibility:Object.freeze(["app"]),kind:"host",resourceBinding:Le}),n}function Oe(e,n,t){return (typeof e!="string"||!so.test(e))&&E(n,`${t} must be a safe identifier`),e}function un(e,n,t){let i=e??t;return (typeof i!="string"||i.trim().length===0||i.length>Pa)&&E("TOOL_INVALID",`${n} must be a meaningful description`),i}function vt(e){return (typeof e!="string"||e.length===0||e.length>Ke||!/<html(?:\s|>)/i.test(e)||!/<\/html\s*>/i.test(e))&&E("HTML_INVALID","MCP App HTML must be a non-empty HTML document"),e}function fn(e,n=0){try{let t=ce(e,n);return t.type!==void 0&&t.type!=="object"&&E("TOOL_INVALID","MCP App inputSchema must describe an object"),t}catch(t){if(t instanceof _e)throw t;E("TOOL_INVALID","MCP App inputSchema must be projection-safe JSON");}}function Ca(e){return (typeof e!="string"||e.trim().length===0||e.length>Ma)&&E("TOOL_INVALID","MCP App tools require a meaningful text fallback"),e}function ka(e){e===void 0&&E("TOOL_INVALID","MCP App tool visibility is required");let n=[...e];return (n.length===0||n.some(t=>t!=="model"&&t!=="app")||new Set(n).size!==n.length)&&E("TOOL_INVALID","MCP App tool visibility must contain model and/or app once"),n}function po(e){return (typeof e!="string"||!ao.test(e))&&E("RESOURCE_URI_INVALID","MCP App resource URI is not a registered ui:// URI"),e}function lo(e){let n=Oe(e.appId,"APP_ID_INVALID","Local App id"),t=un(e.name,"Local App name",n),i=un(e.description,"Local App description",`${t} interactive view`),r=jn(e.definition),o=vt(e.html),s=kn(e.entryHash,"Local App entry hash"),a=e.entryBytes===void 0?Array.from(new TextEncoder().encode(o)):xn(e.entryBytes,"Local App entry bytes");(wn(a)!==s||yo(a)!==o)&&E("HTML_INVALID","Local App entry bytes do not match the HTML hash");let d=wa(e),c=[];Array.isArray(e.actions)||E("TOOL_INVALID","Local App actions must be an array");for(let M of e.actions){let O=Oe(M.actionId,"TOOL_ID_INVALID","Local App action id");(c.includes(O)||!Object.prototype.hasOwnProperty.call(r.actions,O))&&E("TOOL_INVALID",`Local App action is not declared by the UI definition: ${O}`),c.push(O);}let p=Oe(e.readToolName,"TOOL_ID_INVALID","Local App read tool name"),l=e.actionToolName===void 0?void 0:Oe(e.actionToolName,"TOOL_ID_INVALID","Local App action tool name");c.length===0&&l!==void 0&&E("TOOL_INVALID","A static local App cannot register an action tool"),c.length>0&&l===void 0&&E("TOOL_INVALID","A stateful local App requires an action tool name"),l!==void 0&&l===p&&E("TOOL_ID_CONFLICT",`Local App read and action tools share a name: ${p}`);let u=Ua(e.runtime);u.some(M=>M.name===p||M.name===l)&&E("TOOL_ID_CONFLICT","Local App read or action tool conflicts with a requested Host capability");let A={name:p,description:`${t} current state`,inputSchema:Ra,textFallback:`${t} current state is available through its open instance.`,visibility:Object.freeze(["model","app"]),kind:"read",resourceBinding:Le},I=[Object.freeze(A)];if(I.push(...u.map(M=>Object.freeze(M))),l!==void 0){let M={name:l,description:`${t} actions`,inputSchema:Vt(e.actions),textFallback:`${t} action requests are handled by the open App instance.`,visibility:Object.freeze(["app"]),kind:"action",resourceBinding:Le,actionIds:Object.freeze([...c])};I.push(Object.freeze(M));}let h=[],b=new Set(I.map(M=>M.name));if(l!==void 0)for(let M of e.actions){let O=`${l}__${M.actionId}`;if(O.length>128||!so.test(O)){h.push(Object.freeze({toolName:O,actionId:M.actionId,reason:"name_too_long"}));continue}if(b.has(O)){h.push(Object.freeze({toolName:O,actionId:M.actionId,reason:"name_collision"}));continue}let H=io({actionId:M.actionId,confirmation:r.actions[M.actionId]?.confirmation,content:r.actions[M.actionId]?.content,backend:M.backend},e.modelActions),N=Object.freeze(H==="denied"?["app"]:["model","app"]),L={name:O,description:`${O} action`,inputSchema:fn(M.inputSchema),textFallback:`${O} action requests are handled by the open App instance.`,visibility:N,kind:"action",resourceBinding:Le,actionId:M.actionId,actionIds:Object.freeze([M.actionId]),_meta:Object.freeze({ui:Object.freeze({visibility:N})})};I.push(Object.freeze(L)),b.add(O);}let V={mimeType:xt,entryHash:s,html:o,bytes:Object.freeze([...a]),...d===void 0?{}:{initialState:Object.freeze({hash:d.hash,bytes:Object.freeze([...d.bytes])})}},x={appId:n,name:t,description:i,...e.icon===void 0?{}:{icon:Ao(e.icon)},...e.tone===void 0?{}:{tone:Io(e.tone)},builtinOnly:false,definition:r,...e.runtime===void 0?{}:{runtime:Object.freeze({...e.runtime})},resourceBinding:Le,resource:Object.freeze(V),tools:Object.freeze(I),toolDiagnostics:Object.freeze(h)};return K(x)}function uo(e={}){return new jt(e)}function Vt(e){if(e.length===0)return fn({type:"object",properties:{},additionalProperties:false});let n=e.map(i=>i.actionId),t=new Map;for(let i of e)t.set(i.actionId,fn(i.inputSchema));return fn(xa(n,t),co)}function wa(e){let n=e.definition.dataPaths??[];if(e.initialStateBytes===void 0){e.initialStateHash!==void 0&&E("STATE_INVALID","Initial state hash has no bytes"),e.initialState!==void 0&&ce(e.initialState,0,n);return}e.initialStateHash===void 0&&E("STATE_INVALID","Initial state bytes require a hash");let t=kn(e.initialStateHash,"Initial state hash"),i=xn(e.initialStateBytes,"Initial state bytes");wn(i)!==t&&E("STATE_INVALID","Initial state bytes do not match the hash");let r;try{let o=new TextDecoder("utf-8",{fatal:!0}).decode(Uint8Array.from(i));r=ce(JSON.parse(o),0,n);}catch{E("STATE_INVALID","Initial state bytes are not projection-safe JSON");}return e.initialState!==void 0&&q(r)!==q(ce(e.initialState,0,n))&&E("STATE_INVALID","Initial state bytes do not match the state value"),{hash:t,bytes:Object.freeze([...i])}}function xa(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})}function ja(e){let n=yn(e),t=Oe(n.appId,"APP_ID_INVALID","MCP App id"),i=vt(n.html);po(n.uiUri);let r=n.definition===void 0?void 0:jn(n.definition),o=e.provenance;o!==void 0&&(!Xe(o)||o.appId!==t||o.definitionId!==r?.id||o.version!==r?.version||o.definitionHash!==r?.hash)&&E("TOOL_INVALID","Product App built-in registration provenance is not verified");let s=Object.freeze(n.tools.map(c=>K(yn(c)))),a=K({...n,appId:t,html:i,...r===void 0?{}:{definition:r},...o===void 0?{}:{provenance:o},tools:s}),d=K({uri:a.uiUri,mimeType:Qi,text:i,...a.csp===void 0?{}:{_meta:{ui:{csp:a.csp}}}});return K({appId:t,name:a.name,description:a.description,...a.icon===void 0?{}:{icon:a.icon},...a.tone===void 0?{}:{tone:a.tone},builtinOnly:a.builtinOnly,uiUri:a.uiUri,...r===void 0?{}:{definition:r},resourceBinding:Object.freeze({kind:"mcp",uri:a.uiUri}),resource:d,tools:s,descriptor:a})}function va(e){(e.resourceBinding.kind!=="instance"||e.builtinOnly!==false)&&E("STATE_INVALID","Local App registration binding is invalid"),Object.prototype.hasOwnProperty.call(e,"uiUri")&&E("STATE_INVALID","Local App registration cannot contain uiUri");let n=Oe(e.appId,"APP_ID_INVALID","Local App id"),t=jn(e.definition),i=e.provenance;i!==void 0&&(!Xe(i)||i.appId!==n||i.definitionId!==t.id||i.version!==t.version||i.definitionHash!==t.hash)&&E("TOOL_INVALID","Product App local registration provenance is not verified");let r=vt(e.resource.html),o=kn(e.resource.entryHash,"Local App entry hash"),s=xn(e.resource.bytes,"Local App entry bytes");(wn(s)!==o||yo(s)!==r)&&E("HTML_INVALID","Local App entry bytes do not match the HTML hash");let a=e.resource.initialState===void 0?void 0:{hash:kn(e.resource.initialState.hash,"Initial state hash"),bytes:xn(e.resource.initialState.bytes,"Initial state bytes")};a&&wn(a.bytes)!==a.hash&&E("STATE_INVALID","Initial state bytes do not match the hash");let d=e.tools.map(c=>{Oe(c.name,"TOOL_ID_INVALID","Local App tool name"),un(c.description,"Local App tool description","Local App tool"),Ca(c.textFallback);let p=fn(c.inputSchema,c.kind==="action"&&!("actionId"in c)?co:0);if((c.resourceBinding.kind!=="instance"||Object.prototype.hasOwnProperty.call(c,"resourceUri"))&&E("TOOL_INVALID","Local App tools cannot carry an MCP resource URI"),c.kind==="host")return (!Oa.has(c.name)||c.visibility.length!==1||c.visibility[0]!=="app"||Object.prototype.hasOwnProperty.call(c,"actionId"))&&E("TOOL_INVALID","Local App Host tools must use an allow-listed name and app-only visibility"),K({...c,inputSchema:p,visibility:Object.freeze(["app"])});if(c.kind==="action"){if("actionId"in c){let u=Oe(c.actionId,"TOOL_ID_INVALID","Local App action id");Object.prototype.hasOwnProperty.call(t.actions,u)||E("TOOL_INVALID","Local App action tool references an undeclared action");let A=ka(c._meta.ui.visibility);return JSON.stringify(A)!==JSON.stringify(c.visibility)&&E("TOOL_INVALID","Local App action metadata visibility must match the tool visibility"),K({...c,actionId:u,actionIds:Object.freeze([u]),inputSchema:p,visibility:A,_meta:{ui:{visibility:A}}})}let l=[...c.actionIds];return (l.length===0||l.some(u=>!Object.prototype.hasOwnProperty.call(t.actions,u)))&&E("TOOL_INVALID","Local App action tool references an undeclared action"),K({...c,inputSchema:p,actionIds:Object.freeze(l)})}return K({...c,inputSchema:p})});return K({appId:n,name:un(e.name,"Local App name",e.appId),description:un(e.description,"Local App description",e.name),...e.icon===void 0?{}:{icon:Ao(e.icon)},...e.tone===void 0?{}:{tone:Io(e.tone)},builtinOnly:false,definition:t,...e.runtime===void 0?{}:{runtime:Object.freeze({...e.runtime})},...i===void 0?{}:{provenance:i},resourceBinding:Le,resource:K({mimeType:xt,entryHash:o,html:r,bytes:Object.freeze([...s]),...a===void 0?{}:{initialState:Object.freeze({hash:a.hash,bytes:Object.freeze([...a.bytes])})}}),tools:Object.freeze(d),toolDiagnostics:Object.freeze([...e.toolDiagnostics??[]])})}function Va(e){return K({appId:e.appId,name:e.name,description:e.description,...e.icon===void 0?{}:{icon:e.icon},...e.tone===void 0?{}:{tone:e.tone},builtinOnly:false,definition:fo(e.definition),...e.provenance===void 0?{}:{provenance:e.provenance},entryHash:e.resource.entryHash,resourceBinding:Le,tools:e.tools})}function Fa(e){return K({appId:e.appId,name:e.name,description:e.description,...e.icon===void 0?{}:{icon:e.icon},...e.tone===void 0?{}:{tone:e.tone},builtinOnly:e.builtinOnly,uiUri:e.uiUri,...e.definition===void 0?{}:{definition:fo(e.definition)},resourceBinding:Object.freeze({kind:"mcp",uri:e.uiUri}),tools:e.tools})}function jn(e){try{if(Object.isFrozen(e))return de(e),K(e);let n=yn(e);return de(n),K(n)}catch(n){if(n instanceof _e)throw n;E("STATE_INVALID","UI definition is not a valid immutable definition");}}function fo(e){return K({id:e.id,version:e.version,hash:e.hash})}function Ba(e){return e!==null&&typeof e=="object"&&typeof e.id=="string"&&Number.isSafeInteger(e.version)&&typeof e.hash=="string"}function ro(e,n,t){return `${e}\0${n}\0${t}`}function kn(e,n){return (typeof e!="string"||!ba.test(e))&&E("SERIALIZATION_INVALID",`${n} is invalid`),e}function wn(e){return crypto.createHash("sha256").update(Uint8Array.from(e)).digest("hex")}function xn(e,n){return (!Array.isArray(e)||e.some(t=>!Number.isInteger(t)||t<0||t>255))&&E("SERIALIZATION_INVALID",`${n} is invalid`),[...e]}function yo(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(Uint8Array.from(e))}catch{E("SERIALIZATION_INVALID","UTF-8 bytes are invalid");}}function Ao(e){return (typeof e!="string"||!Sa.test(e))&&E("TOOL_INVALID","MCP App icon is invalid"),e}function Io(e){return (typeof e!="string"||!La.has(e))&&E("TOOL_INVALID","MCP App tone is invalid"),e}function yn(e,n=new Map){if(e===null||typeof e!="object")return e;let t=e;if(n.has(t)&&E("SERIALIZATION_INVALID","MCP App value contains a cycle"),Array.isArray(e)){let o=[];n.set(t,o);for(let s of e)o.push(yn(s,n));return n.delete(t),o}let i;try{i=Object.getPrototypeOf(e);}catch{E("SERIALIZATION_INVALID","MCP App value cannot be cloned");}i!==Object.prototype&&i!==null&&E("SERIALIZATION_INVALID","MCP App value must be plain JSON");let r={};n.set(t,r);for(let[o,s]of Object.entries(e))Object.defineProperty(r,o,{configurable:true,enumerable:true,value:yn(s,n),writable:true});return n.delete(t),r}function K(e,n=new Set){if(e===null||typeof e!="object"||n.has(e))return e;n.add(e);for(let t of Object.values(e))K(t,n);return Object.freeze(e),e}var so,ao,ba,Ke,Pa,Ma,Sa,La,Oa,Le,Ra,co,jt,vn=w(()=>{g();Ji();Ue();De();Cn();Un();wt();to();oo();so=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,ao=/^ui:\/\/crewx\/([A-Za-z][A-Za-z0-9._-]{0,127})\/([0-9a-f]{12})$/,ba=/^[0-9a-f]{64}$/,Ke=8*1024*1024,Pa=8*1024,Ma=16*1024,Sa=/^[a-z][a-z0-9-]{0,63}$/,La=new Set(["blue","violet","emerald","amber","rose","sky","slate","indigo"]),Oa=new Set(eo),new Set(no),Le=Object.freeze({kind:"instance"}),Ra=Object.freeze({type:"object",properties:Object.freeze({}),additionalProperties:false});co=4;jt=class{builtinApps;localApps;builtinDescriptors;builtinTools;mcpResources=new Map;localById=new Map;registrationById=new Map;launcherById=new Map;definitionByKey=new Map;handlerByKey=new Map;mcpToolByName=new Map;localToolByName=new Map;constructor(n){let t=n.builtins??n.builtin,i=[],r=[],o=[],s=new Set,a=new Set;for(let l of t?.listMcpApps()??[]){let u=ja(l);s.has(u.appId)&&E("APP_ID_CONFLICT",`MCP App id is already registered: ${u.appId}`),s.add(u.appId);let A=u.tools;for(let I of A)a.has(I.name)&&E("TOOL_ID_CONFLICT",`MCP App tool name is already registered: ${I.name}`),a.add(I.name),this.mcpToolByName.set(I.name,I),o.push(I);this.mcpResources.set(u.resource.uri,u.resource),i.push(u),r.push(u.descriptor);}let d=(n.localApps??n.locals??[]).map(va),c=new Set(d.flatMap(l=>l.tools.filter(u=>!(u.kind==="action"&&"actionId"in u)).map(u=>u.name))),p=[];for(let l of d){let u=l;s.has(u.appId)&&E("APP_ID_CONFLICT",`MCP App id is already registered: ${u.appId}`),s.add(u.appId);let A=[],I=[...u.toolDiagnostics??[]];for(let h of u.tools){if(a.has(h.name)){if(h.kind==="host"&&this.localToolByName.get(h.name)?.kind==="host"){A.push(h);continue}if(h.kind==="action"&&"actionId"in h){I.push(Object.freeze({toolName:h.name,actionId:h.actionId,reason:"name_collision"}));continue}E("TOOL_ID_CONFLICT",`MCP App tool name is already registered: ${h.name}`);}if(h.kind==="action"&&"actionId"in h&&c.has(h.name)){I.push(Object.freeze({toolName:h.name,actionId:h.actionId,reason:"name_collision"}));continue}a.add(h.name),this.localToolByName.set(h.name,h),A.push(h);}(A.length!==u.tools.length||I.length!==(u.toolDiagnostics?.length??0))&&(u=K({...u,tools:Object.freeze(A),toolDiagnostics:Object.freeze(I)})),p.push(u),this.localById.set(u.appId,u);}for(let l of i)this.registrationById.set(l.appId,l),this.launcherById.set(l.appId,Fa(l)),l.definition&&this.addDefinition(l.definition);for(let l of p)this.registrationById.set(l.appId,l),this.launcherById.set(l.appId,Va(l)),this.addDefinition(l.definition);for(let l of n.definitions??[])this.addDefinition(l);for(let l of n.handlers??[])this.addHandler(l);this.builtinApps=Object.freeze(i),this.localApps=Object.freeze(p),this.builtinDescriptors=Object.freeze(r),this.builtinTools=Object.freeze(o);}getMcpApp(n){return this.builtinApps.find(t=>t.appId===n)?.descriptor??null}listMcpApps(){return this.builtinDescriptors}listMcpAppTools(){return this.builtinTools}resolveMcpAppTool(n){return this.mcpToolByName.get(n)??null}resolveMcpAppResource(n){return typeof n!="string"||!ao.test(n)?null:this.mcpResources.get(n)??null}requireMcpAppResource(n){po(n);let t=this.mcpResources.get(n);return t||E("RESOURCE_NOT_FOUND",`MCP App resource is not registered: ${n}`),t}listLocalMcpApps(){return this.localApps}getLocalMcpApp(n){return this.localById.get(n)??null}listLocalMcpAppTools(){return Object.freeze([...this.localToolByName.values()])}resolveLocalMcpAppTool(n){return this.localToolByName.get(n)??null}resolveLocalMcpAppResource(n,t){let i=this.localById.get(n);return !i||t!==void 0&&i.definition.hash!==t?null:i.resource}listRegistrations(){return Object.freeze([...this.builtinApps,...this.localApps])}getRegistration(n){return this.registrationById.get(n)??null}listLaunchers(){return Object.freeze([...this.launcherById.values()].filter(n=>{let t=this.registrationById.get(n.appId),i=t?"descriptor"in t?t.descriptor.provenance:t.provenance:void 0,r=Xe(i)&&i.launcher===false;return t?.definition?.usage!=="card"&&!r}))}getLauncher(n){return this.launcherById.get(n)??null}resolveDefinition(n){if(!Ba(n))return null;let t=this.definitionByKey.get(lt(n));if(!t||t.hash!==n.hash)return null;try{return ie(t)===t.hash?t:null}catch{return null}}resolveActionHandler(n,t,i){return typeof n!="string"||typeof i!="string"||!Number.isSafeInteger(t)?null:this.handlerByKey.get(ro(n,t,i))??null}addDefinition(n){let t=jn(n),i=lt(t),r=this.definitionByKey.get(i);r&&r.hash!==t.hash&&E("STATE_INVALID",`UI definition generation conflicts: ${i}`),r||this.definitionByKey.set(i,t);}addHandler(n){(!n||typeof n.definitionId!="string"||typeof n.actionId!="string"||!Number.isSafeInteger(n.version)||n.version<1||typeof n.handle!="function")&&E("STATE_INVALID","UI action handler registration is invalid");let t=ro(n.definitionId,n.version,n.actionId);this.handlerByKey.has(t)&&E("TOOL_INVALID",`Duplicate UI action handler registration: ${t}`),this.handlerByKey.set(t,Object.freeze({...n}));}};});function Ha(e){let n=lo({appId:e.appId,name:e.name,description:e.description,...e.icon===void 0?{}:{icon:e.icon},...e.tone===void 0?{}:{tone:e.tone},...e.normalized.manifest.runtime===void 0?{}:{runtime:e.normalized.manifest.runtime},definition:e.definition,html:e.html,entryHash:e.entryHash,entryBytes:e.entryBytes,initialState:e.initialState,...e.initialStateHash===void 0?{}:{initialStateHash:e.initialStateHash},...e.initialStateBytes===void 0?{}:{initialStateBytes:e.initialStateBytes},readToolName:e.toolNames.read,...e.toolNames.action===void 0?{}:{actionToolName:e.toolNames.action},actions:e.normalized.manifest.actions.map(i=>({actionId:i.actionId,inputSchema:i.inputSchema,backend:i.backend}))});return e.provenance===void 0?n:Object.freeze({...n,provenance:e.provenance})}function go(e){let n=e.normalized.manifest.actions;if(n.some(i=>i.backend.type==="skill")&&n.some(i=>i.backend.type==="core"))throw new Error("Mixed workspace App execution models");let t=Ha(e);uo({localApps:[t],definitions:[e.definition]});}var mo=w(()=>{g();vn();});function ho(){return Object.freeze({[Ft]:{candidates:new Map,assetCatalogs:new Map}})}function za(e){if(e===null||typeof e!="object"||!(Ft in e))throw new TypeError("scanCache must be created by createWorkspaceAppScanCache");return e[Ft]}function _o(e,n){let t=za(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 Ft,To=w(()=>{g();Ft=Symbol("crewx.workspace-app-scan-cache.state");});function se(e){let n=typeof e=="object"&&e!==null&&"code"in e?String(e.code):"";return n==="ENOENT"?new _("NOT_FOUND"):n==="ELOOP"?new _("PATH_ESCAPED"):n==="EFBIG"||n==="EOVERFLOW"?new _("LIMIT_EXCEEDED"):n==="EACCES"||n==="EPERM"||n==="ENOTDIR"?new _("READ_DENIED"):new _("READ_DENIED")}function Wa(e){if(typeof e!="string"||e.length===0||!path.isAbsolute(e))throw new _("READ_DENIED")}function Bt(e){if(typeof e!="string"||path.isAbsolute(e)||/[\\\u0000]/.test(e))throw new _("PATH_ESCAPED");if(e==="")return [];let n=e.split("/");if(n.some(t=>t.length===0||t==="."||t===".."))throw new _("PATH_ESCAPED");return n}function Hn(e,n){let t=path.relative(e,n);return t===""||t!==".."&&!t.startsWith(`..${path.sep}`)&&!path.isAbsolute(t)}function qe(e){return {dev:e.dev,ino:e.ino,size:e.size,mtimeNs:e.mtimeNs,ctimeNs:e.ctimeNs}}function $t(e,n){return e.dev===n.dev&&e.ino===n.ino}function Jt(e,n){return $t(e,n)&&e.size===n.size&&e.mtimeNs===n.mtimeNs&&e.ctimeNs===n.ctimeNs}async function Vn(e){Wa(e);let n,t;try{n=await promises.realpath(e),t=await promises.stat(n,{bigint:!0});}catch(i){throw se(i)}if(!t.isDirectory())throw new _("READ_DENIED");return {realRoot:n,identity:qe(t)}}async function No(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 _("READ_DENIED")}catch(o){throw o instanceof _?o:se(o)}if(!Hn(n,r))throw new _("PATH_ESCAPED");return r}async function Fn(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 se(a)}if(!Hn(n,o)||t!==void 0&&!Hn(t,o))throw new _("PATH_ESCAPED");if(!r.isFile()||!s.isFile())throw new _("READ_DENIED");if(!$t(i,r)||!$t(i,s)||i.dev!==s.dev)throw new _("PATH_ESCAPED")}async function Ye(e,n){let t,i;try{t=await promises.realpath(e),i=await promises.stat(t,{bigint:!0});}catch{throw new _("PATH_ESCAPED")}if(t!==n.realRoot||!Jt(n.identity,qe(i)))throw new _("PATH_ESCAPED")}function Xa(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 _,Gt,Ja,Do,Ze,zn,bo,Po,Xt=w(()=>{g();_=class extends Error{constructor(t){super(t);this.code=t;}code;name="AppDiscoveryFsError"},Gt=fs$1.constants.O_NOFOLLOW,Ja=fs$1.constants.O_NONBLOCK,Do=fs$1.constants.O_RDONLY|(Gt??0)|(Ja??0);Ze=class{async getRootIdentity(n){let t=await Vn(n);return await Ye(n,t),{dev:t.identity.dev,ino:t.identity.ino,realPath:t.realRoot}}async listDirectory(n,t){let i=Bt(t),r=await Vn(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=se(d);if(c.code==="NOT_FOUND")return [];throw c}if(!Hn(r.realRoot,s)||!a.isDirectory())throw new _("PATH_ESCAPED");try{let d=await promises.readdir(s,{withFileTypes:!0,encoding:"utf8"});return await Ye(n,r),d.map(Xa)}catch(d){let c=se(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 _("READ_DENIED");if(Gt===void 0)throw new _("UNSUPPORTED");let r=Bt(t),o=await Vn(n),s=path.resolve(n,...r),a=path.relative(n,s);if(a===".."||a.startsWith(`..${path.sep}`)||path.isAbsolute(a))throw new _("PATH_ESCAPED");let d;try{d=await promises.open(s,Do);}catch(c){throw se(c)}try{let c;try{let I=await d.stat({bigint:!0});c=qe(I);}catch(I){throw se(I)}if(c.size>BigInt(i))throw new _("LIMIT_EXCEEDED");if(c.size>BigInt(Number.MAX_SAFE_INTEGER))throw new _("LIMIT_EXCEEDED");await Ye(n,o);let p=await No(n,o.realRoot,r);await Fn(s,o.realRoot,p,c);let l=new Uint8Array(new ArrayBuffer(Number(c.size))),u=0;for(;u<l.byteLength;){let I;try{I=(await d.read(l,u,l.byteLength-u,u)).bytesRead;}catch(h){throw se(h)}if(I<=0)throw new _("IDENTITY_CHANGED");u+=I;}let A;try{let I=await d.stat({bigint:!0});A=qe(I);}catch(I){throw se(I)}if(!Jt(c,A))throw new _("IDENTITY_CHANGED");return await Fn(s,o.realRoot,p,A),await Ye(n,o),new Uint8Array(l)}finally{await d.close().catch(()=>{});}}async fingerprintVerifiedFile(n,t,i){if(!Number.isSafeInteger(i)||i<0)throw new _("READ_DENIED");if(Gt===void 0)throw new _("UNSUPPORTED");let r=Bt(t),o=await Vn(n),s=path.resolve(n,...r),a=path.relative(n,s);if(a===".."||a.startsWith(`..${path.sep}`)||path.isAbsolute(a))throw new _("PATH_ESCAPED");let d;try{d=await promises.open(s,Do);}catch(c){throw se(c)}try{let c;try{let u=await d.stat({bigint:!0});c=qe(u);}catch(u){throw se(u)}if(c.size>BigInt(i)||c.size>BigInt(Number.MAX_SAFE_INTEGER))throw new _("LIMIT_EXCEEDED");await Ye(n,o);let p=await No(n,o.realRoot,r);await Fn(s,o.realRoot,p,c);let l;try{let u=await d.stat({bigint:!0});l=qe(u);}catch(u){throw se(u)}if(!Jt(c,l))throw new _("IDENTITY_CHANGED");return await Fn(s,o.realRoot,p,l),await Ye(n,o),{...l,candidateRealPath:p??o.realRoot}}catch(c){throw c instanceof _?c:se(c)}finally{await d.close().catch(()=>{});}}async readFileVerified(n,t,i){return this.readVerifiedFile(n,t,i)}},zn=new Ze,bo=zn,Po=Ze;});function mn(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 So(e){return typeof e=="string"&&Ie.test(e)?e:void 0}function nc(e){return e.length>0&&e!=="."&&e!==".."&&!/[\\/\u0000]/.test(e)}function xe(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 tc(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 ic(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 oc(e){return Qa.decode(e)}function rc(e){return JSON.parse(oc(e))}function Lo(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 sc(e){if(e instanceof _)return Lo(e.code);if(e!==null&&typeof e=="object"&&"code"in e){let n=e.code;if(typeof n=="string")return Lo(n)}}function be(e,n){let t=n();return Number.isFinite(t)&&Number.isFinite(e)&&t-e<=5e3}function ac(e){if(typeof e.readVerifiedFile=="function")return e.readVerifiedFile;if(typeof e.readFileVerified=="function")return e.readFileVerified}function cc(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 Oo(e,n,t,i){let r=ac(e);if(!r)throw new _("READ_DENIED");return ic(await r.call(e,n,t,i))}async function qt(e,n,t){let i=cc(e);if(!i)throw new _("READ_DENIED");let r=await i.call(e,n,t);if(!Array.isArray(r))throw new _("READ_DENIED");return r.map(tc).filter(o=>o!==null)}function dc(e,n,t,i){return Object.freeze({code:e,...{},source:n,relativePath:t})}function pc(e){if(!mn(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(xe))};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 lc(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 hn(e){return Object.freeze({appIds:Object.freeze([...new Set(e.map(n=>n.appId))].sort(xe)),definitionIds:Object.freeze([...new Set(e.map(n=>n.definition.id))].sort(xe))})}function Gn(e,n){let t=Object.keys(e).sort(xe),i=[...n].sort(xe);return t.length===i.length&&t.every((r,o)=>r===i[o])}function Ro(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 uc(e){let n;try{n=rc(e);}catch{return}if(!mn(n)||!Gn(n,["version","packages"])||n.version!==1||!Array.isArray(n.packages)||n.packages.length>Zt)return;let t=new Set,i=new Set,r=0,o=[];for(let s of n.packages){if(!mn(s))return;let a=["packageDir","appId","definition","files"],d=Object.hasOwn(s,"lineage"),c=Object.hasOwn(s,"launcher"),p=[...d?["lineage"]:[],...c?["launcher"]:[]];if(!Gn(s,[...a,...p])||c&&s.launcher!==false)return;let l=Ro(s.packageDir),u=So(s.appId);if(!l||l.length!==2||l[0]!=="apps"||!nc(l[1])||!u||t.has(s.packageDir)||!mn(s.definition)||!Gn(s.definition,["id","version","hash"]))return;let A=So(s.definition.id),I=s.definition.version,h=s.definition.hash;if(!A||!Number.isSafeInteger(I)||I<1||typeof h!="string"||!Yt.test(h)||!Array.isArray(s.files)||s.files.length<2||s.files.length>Qt)return;let b=new Set,V=[];for(let x of s.files){if(!mn(x)||!Gn(x,["path","sha256"]))return;let M=Ro(x.path);if(!M||typeof x.sha256!="string"||!Yt.test(x.sha256))return;let O=M.join("/"),H=`${s.packageDir}/${O}`;if(b.has(O)||i.has(H))return;b.add(O),i.add(H),V.push(Object.freeze({path:O,sha256:x.sha256}));}if(!re.some(x=>b.has(x))||!b.has("ui/index.html")||(r+=V.length,r>Ya))return;t.add(s.packageDir),o.push(Object.freeze({packageDir:s.packageDir,...c?{launcher:false}:{},appId:u,definition:Object.freeze({id:A,version:I,hash:h}),lineage:Array.isArray(s.lineage)?s.lineage:[],files:Object.freeze(V.sort((x,M)=>xe(x.path,M.path)))}));}return Object.freeze({version:1,packages:Object.freeze(o)})}function we(e){let n=sc(e);return n==="PATH_ESCAPED"||n==="IDENTITY_CHANGED"||n==="TOCTOU"?"PATH_ESCAPED":n==="LIMIT_EXCEEDED"?"LIMIT_EXCEEDED":"BUNDLE_INTEGRITY"}async function fc(e,n,t,i,r){let o=[],s=async(a,d)=>{if(!be(i,r))throw new _("LIMIT_EXCEEDED");if(d>2)throw new _("LIMIT_EXCEEDED");let c=await qt(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 _("PATH_ESCAPED");let l=`${a}/${p.name}`;if(p.kind==="file"){if(o.push(l.slice(t.length+1)),o.length>Qt)throw new _("LIMIT_EXCEEDED")}else if(p.kind==="directory")await s(l,d+1);else throw p.kind==="symlink"?new _("PATH_ESCAPED"):new _("READ_DENIED")}};return await s(t,0),o.sort(xe)}function yc(e){return re.includes(e)?262144:e==="ui/index.html"?Ke:e==="ui/state.json"?1048576:e.startsWith("ui/assets/")?Za:qa}async function Uo(e,n,t,i){if(e===void 0)return {packages:[],diagnostics:[],incomplete:false,reservedIds:ec};let r=pc(e.reservedIds),o=[],s=(f,m,T)=>dc(f,"bundled",m),a=(f=[],m=false,T)=>({...T===void 0?{}:{indexHash:T},packages:f,diagnostics:o,incomplete:m,reservedIds:r});if(typeof e.root!="string"||e.root.length===0||typeof e.expectedIndexHash!="string"||!Yt.test(e.expectedIndexHash))return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a();let d;try{d=await Oo(n,e.root,"bundle-index.json",Ka);}catch(f){return o.push(s(we(f),"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=uc(d);if(p===void 0)return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a();if(!lc(hn(p.packages),r))return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a([],false,c);if(!be(t,i))return o.push(s("LIMIT_EXCEEDED","bundle-index.json")),a(p.packages.map(f=>({indexEntry:f,failureCode:"LIMIT_EXCEEDED"})),true,c);let l;try{l=await qt(n,e.root,"");}catch(f){return o.push(s(we(f),"bundle-index.json")),a(p.packages.map(m=>({indexEntry:m,failureCode:we(f)})),false,c)}if(!be(t,i))return o.push(s("LIMIT_EXCEEDED","bundle-index.json")),a(p.packages.map(f=>({indexEntry:f,failureCode:"LIMIT_EXCEEDED"})),true,c);let u=l.find(f=>f.name==="bundle-index.json"&&f.kind==="file"),A=l.find(f=>f.name==="apps"&&f.kind==="directory"),I=f=>p.packages.map(m=>({indexEntry:m,failureCode:f}));if(!u)return o.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a(I("BUNDLE_INTEGRITY"),false,c);let h=l.filter(f=>f.name!=="bundle-index.json"&&f.name!=="apps");if(h.length>0){let f=h.some(m=>m.kind==="symlink")?"PATH_ESCAPED":"BUNDLE_INTEGRITY";return o.push(s(f,"bundle-index.json")),a(I("BUNDLE_INTEGRITY"),false,c)}if(l.some(f=>f.name==="apps"&&f.kind!=="directory"))return o.push(s("PATH_ESCAPED","apps")),a(I("PATH_ESCAPED"),false,c);let b=[];if(A)try{b=await qt(n,e.root,"apps");}catch(f){return o.push(s(we(f),"apps")),a(I(we(f)),false,c)}if(!be(t,i)||b.length>Zt)return o.push(s("LIMIT_EXCEEDED","apps")),a(I("LIMIT_EXCEEDED"),true,c);let V=new Map(p.packages.map(f=>[f.packageDir.slice(5),f])),x=b.filter(f=>!V.has(f.name));for(let f of x)o.push(s(f.kind==="symlink"?"PATH_ESCAPED":"BUNDLE_INTEGRITY",`apps/${f.name}`));if(x.length>0){let f=x.some(m=>m.kind==="symlink")?"PATH_ESCAPED":"BUNDLE_INTEGRITY";return a(I(f),false,c)}let M=new Set,O=new Map,H=new Map;for(let f of p.packages){let m=O.get(f.appId)??[];m.push(f),O.set(f.appId,m);let T=`${f.definition.id}\0${String(f.definition.version)}`,P=H.get(T)??[];P.push(f),H.set(T,P);}for(let f of [...O.values(),...H.values()])if(f.length>1)for(let m of f)M.add(m);let N=[],L=d.byteLength,S=false;for(let f of p.packages){if(!be(t,i)){S=true,N.push({indexEntry:f,failureCode:"LIMIT_EXCEEDED"});continue}let m;try{let D=f.lineage[f.lineage.length-1];if(!D)throw new Te("LINEAGE_INVALID","Definition lineage is missing");if(D.definition.id!==f.definition.id||D.version!==f.definition.version||D.hash!==f.definition.hash)throw new Te("LINEAGE_STALE","Last lineage generation does not match bundle identity");m=kt(f.lineage,{...D.definition,hash:D.hash}).entries;}catch(D){let z=D instanceof Te?D.code:"LINEAGE_INVALID";o.push(s(z,f.packageDir)),N.push({indexEntry:f,failureCode:z});continue}let T=b.find(D=>D.name===f.packageDir.slice(5));if(!A||!T){N.push({indexEntry:f,failureCode:"BUNDLE_INTEGRITY"});continue}if(T.kind!=="directory"){N.push({indexEntry:f,failureCode:T.kind==="symlink"?"PATH_ESCAPED":"BUNDLE_INTEGRITY"});continue}let P;try{let D=await fc(n,e.root,f.packageDir,t,i);if(!be(t,i)){S=!0,N.push({indexEntry:f,failureCode:"LIMIT_EXCEEDED"});continue}let z=f.files.map(G=>G.path);if(D.length!==z.length||D.some((G,Ee)=>G!==z[Ee])){N.push({indexEntry:f,failureCode:"BUNDLE_INTEGRITY"});continue}P=new Map;let te;for(let G of f.files){if(!be(t,i)){te="LIMIT_EXCEEDED",S=!0;break}if(L>=Kt){te="LIMIT_EXCEEDED";break}let Ee;try{Ee=await Oo(n,e.root,`${f.packageDir}/${G.path}`,yc(G.path));}catch(cr){te=we(cr);break}if(!be(t,i)){te="LIMIT_EXCEEDED",S=!0;break}if(L+Ee.byteLength>Kt){L=Kt,te="LIMIT_EXCEEDED";break}if(L+=Ee.byteLength,crypto.createHash("sha256").update(Ee).digest("hex")!==G.sha256){te="BUNDLE_INTEGRITY";break}P.set(G.path,Ee);}if(te!==void 0){N.push({indexEntry:f,failureCode:te});continue}}catch(D){be(t,i)||(S=true),N.push({indexEntry:f,failureCode:we(D)});continue}N.push({indexEntry:f,lineage:m,files:P,...M.has(f)?{failureCode:"DUPLICATE_ID"}:{}});}return a(N,S,c)}var Ka,Zt,Qt,Ya,qa,Za,Kt,Yt,Qa,ec,ei=w(()=>{g();wt();Re();Ut();vn();Xt();Ka=256*1024,Zt=64,Qt=128,Ya=Zt*Qt,qa=2*1024*1024,Za=8*1024*1024,Kt=32*1024*1024,Yt=/^[0-9a-f]{64}$/,Qa=new TextDecoder("utf-8",{fatal:true}),ec=Object.freeze({appIds:Object.freeze([]),definitionIds:Object.freeze([])});});var nr={};pr(nr,{AppDiscoveryFsError:()=>_,LOCAL_APP_TOOL_PREFIX:()=>gc,MCP_APP_WORKSPACE_TOOL_PREFIX:()=>mc,NodeAppDiscoveryFs:()=>Ze,NodeAppDiscoveryFsAdapter:()=>Po,WORKSPACE_APP_TOOL_PREFIX:()=>Qe,createWorkspaceAppScanCache:()=>ho,defaultAppDiscoveryFs:()=>zn,defaultNodeAppDiscoveryFs:()=>bo,deriveWorkspaceAppToolName:()=>hc,deriveWorkspaceAppToolNames:()=>ii,discoverWorkspaceAppCandidates:()=>Wc,discoverWorkspaceApps:()=>oi,isWorkspacePackage:()=>Ic,productAppBundleReservations:()=>hn,scanWorkspaceApps:()=>Xc});function Ic(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 ii(e){if(typeof e!="string"||!Ie.test(e))throw new TypeError("pluginId must be a safe UI plugin identifier");let n=`${Qe}${e}`.length+7<=128?e:`hash_${crypto.createHash("sha256").update(e,"utf8").digest("hex")}`;return {read:`${Qe}${n}_read`,action:`${Qe}${n}_action`}}function hc(e,n="read"){let t=ii(e);return n==="read"?t.read:t.action}function ko(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 Tc(e,n){return n.length===0||n==="."||n===".."||/[\\/\u0000]/.test(n)?e==="skills"?"skills":"apps":`${e==="skills"?"skills":"apps"}/${n}`}function Ec(e){return e.length>0&&e!=="."&&e!==".."&&!/[\\/\u0000]/.test(e)}function _n(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 $o(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 Dc(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 Jo(e){return _c.decode(e)}function Nc(e){return JSON.parse(Jo(e))}function bc(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 Jn(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 wo(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 ne(e){if(e instanceof _)return wo(e.code);if(e!==null&&typeof e=="object"&&"code"in e){let n=e.code;if(typeof n=="string")return wo(n)}}function ve(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 xo(e){return {reason:e.reason,...e.code==="MANIFEST_DUAL_MISMATCH"?{files:e.files}:{}}}function jo(e){return e==="MANIFEST_DUAL_MISMATCH"?e:Wo(e)}function Pc(e){return Wo(e.code)}function Wo(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 Xo("UiPluginValidationError",e)}}function Xo(e,n){throw new Error(`Unmapped ${e} code: ${String(n)}`)}function Ko(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 Xo("McpAppContractError",e)}}function Pe(e,n){let t=n();return Number.isFinite(t)&&Number.isFinite(e)&&t-e<=5e3}function Mc(e){return {pluginId:e.appId,definitionKey:`${e.definition.id}\0${String(e.definition.version)}`}}function Sc(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(ko(r)){let o=r.bin,s=typeof o=="string"?o:ko(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=Lc(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 Lc(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 Oc(){return globalThis.performance?.now()??Date.now()}function je(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;for(let n of Object.values(e))je(n);return Object.freeze(e)}function vo(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 _("NOT_FOUND");if(a.byteLength>i)throw new _("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 Ho(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 Ho(e,n.root,r,i),c=await s.call(e,o.workspaceRoot,r,i);return o.candidateRealPath=c.candidateRealPath,qo(a,c)&&c.size===BigInt(d.byteLength)&&!Zo(c,o.scanStartedAtNs)?o.files.set(r,{relativePath:r,byteLimit:i,fingerprint:c}):o.cacheable=!1,d}catch(a){let d=re.includes(t)&&ne(a)==="NOT_FOUND"&&o.directoryListings.some(p=>p.relativePath===n.relativePath&&!Xn(p.key,t)),c=t===Y&&ne(a)==="NOT_FOUND"&&Rc(o.directoryListings,n.relativePath);throw !d&&!c&&(o.cacheable=false),a}}function Rc(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 Yo(e,n){return JSON.stringify([e.realPath,n.source,n.relativePath])}async function Cc(e,n,t,i,r,o,s,a){let d=e.fingerprintVerifiedFile,c=Yo(t,i),p=r.candidates.get(c),l=i.relativePath,u;try{u=await Bo(e,n,l);}catch(S){if(ne(S)!=="NOT_FOUND")throw S}let A=u===void 0?void 0:{relativePath:l,key:u};if(A!==void 0&&(i.source==="apps"||i.source==="skills")&&!re.some(S=>Xn(A.key,S)))return Pe(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 I=async S=>{if(S==="")return A;let f=`${i.relativePath}${S}`;try{let m=await Bo(e,n,f);return m===void 0?void 0:{relativePath:f,key:m}}catch(m){if(ne(m)==="NOT_FOUND")return;throw m}},h=await Promise.all(Vo.map(I)),b=await Promise.all(Uc.map(I));if(!Pe(s,a))return {timeLimitReached:true};let V=typeof d=="function"&&h.every(S=>S!==void 0),x=h.filter(S=>S!==void 0),M=[...x,...b.filter(S=>S!==void 0)],O=new Map,H=p!==void 0&&V,N;if(p!==void 0&&typeof d=="function"){let S=await Promise.all(p.files.map(async f=>{if(!Pe(s,a))return {kind:"time",file:f};try{let m=await d.call(e,n,f.relativePath,f.byteLimit);return {kind:"fingerprint",file:f,current:m}}catch(m){return ne(m)==="NOT_FOUND"?{kind:"missing",file:f}:{kind:"error",file:f,error:m}}}));if(S.some(f=>f.kind==="time"))return {timeLimitReached:true};for(let f of S){if(f.kind==="error")throw f.error;if(f.kind==="missing"){H=false;continue}if(f.kind!=="fingerprint")continue;let{file:m,current:T}=f;O.set(m.relativePath,T),N??=T.candidateRealPath,(T.candidateRealPath!==p.candidateRealPath||!qo(T,m.fingerprint)||Zo(T,o))&&(H=false);}}let L=p!==void 0&&p.directoryListings.length===M.length&&p.directoryListings.every((S,f)=>S.relativePath===M[f]?.relativePath&&S.key===M[f]?.key);return p!==void 0&&V&&L&&H&&N===p.candidateRealPath?{memo:p}:!V||x.length!==Vo.length?{}:{context:{state:r,cacheKey:c,workspaceRoot:n,scanStartedAtNs:o,directoryListings:Object.freeze(M),priorFingerprints:O,files:new Map,...N===void 0?{}:{candidateRealPath:N},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 Bo(e,n,t){let i=Qo(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($o);if(!o.some(s=>s===null))return JSON.stringify(o.slice().sort((s,a)=>_n(s.name,a.name)||_n(s.kind,a.kind)).map(s=>[s.name,s.kind]))}function qo(e,n){return e.dev===n.dev&&e.ino===n.ino&&e.size===n.size&&e.mtimeNs===n.mtimeNs&&e.ctimeNs===n.ctimeNs}function Zo(e,n){let t=e.mtimeNs-n;return t>=-Fo&&t<=Fo}function ni(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 kc(e,n,t){let i=crypto.createHash("sha256"),r=new TextEncoder().encode(q(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 wc(e,n){let t={...e.definition,sourceHash:n},i;try{i=ie(t);}catch(o){throw o instanceof R&&o.code==="INPUT_INVALID"?new oe("MANIFEST_INVALID","normalized definition is invalid"):o}let r={...t,hash:i};try{de(r);}catch{throw new oe("MANIFEST_INVALID","normalized definition is invalid")}return r}function xc(e){return e.actions.some(n=>n.backend.type==="core"&&n.backend.handler!=="state.set")}function jc(e){if(typeof e.readVerifiedFile=="function")return e.readVerifiedFile;if(typeof e.readFileVerified=="function")return e.readFileVerified}function Qo(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 Ho(e,n,t,i){let r=jc(e);if(!r)throw new _("READ_DENIED");return Dc(await r.call(e,n,t,i))}async function vc(e,n,t){let i=Qo(e);if(!i)throw new _("READ_DENIED");let r=await i.call(e,n,t);if(!Array.isArray(r))throw new _("READ_DENIED");return r.map($o).filter(o=>o!==null)}function Vc(e){let n=[];for(let t of [e.reserved,e.builtin])t&&n.push(t);return e.builtins&&"listMcpApps"in e.builtins?n.push(zo(e.builtins)):e.builtins&&n.push(e.builtins),e.builtinCatalog&&n.push(zo(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 zo(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 ye(e,n){e.diagnostic||(e.diagnostic=Jn(n,e.source,e.relativePath,e.identity?.pluginId));}function Fc(e,n){let t=new Set,i=new Map;for(let o of e){let s=o.identity?.pluginId;if(s===void 0)continue;let a=i.get(s)??[];a.push(o),i.set(s,a);}for(let o of i.values()){if(o.length<2)continue;let s=o.filter(d=>d.provenance!==void 0);if(s.length>0){let d=o.find(c=>n.has(c));if(d){for(let c of s)t.add(c);for(let c of o)c!==d&&c.provenance===void 0&&ye(c,"RESERVED_ID");continue}for(let c of o)c.provenance===void 0&&ye(c,"RESERVED_ID");if(s.length>1)for(let c of s)ye(c,"DUPLICATE_ID");continue}let a=o.filter(d=>d.source==="apps");if(a.length>1){for(let d of a)ye(d,"DUPLICATE_ID");for(let d of o.filter(c=>c.source==="skills"))ye(d,"DUPLICATE_ID");}else for(let d of o.filter(c=>c.source==="skills"))ye(d,"DUPLICATE_ID");}let r=new Map;for(let o of e){if(o.diagnostic?.code==="RESERVED_ID"||t.has(o)||o.provenance===void 0&&!n.has(o)&&i.get(o.identity?.pluginId??"")?.some(d=>d.provenance!==void 0))continue;let s=o.identity?.definitionKey;if(s===void 0)continue;let a=r.get(s)??[];a.push(o),r.set(s,a);}for(let o of r.values())if(o.length>1)for(let s of o)ye(s,"DUPLICATE_ID");return t}function Bc(e,n,t){let i=new Set,r=new Set,o=new Set,s=new Set([...t.appIds,...n.productBundleReservationMetadata?.reservedAppIds??[]]),a=new Set([...t.definitionIds,...n.productBundleReservationMetadata?.reservedDefinitionIds??[]]);for(let p of Vc(n)){for(let l of p.appIds??[])typeof l=="string"&&i.add(l);for(let l of p.definitionIds??[])typeof l=="string"&&r.add(l);for(let l of p.toolNames??[])typeof l=="string"&&o.add(l);}for(let p of e){let l=p.candidate;if(!l)continue;if(i.has(l.pluginId)||r.has(l.definitionId)){ye(p,"RESERVED_ID");continue}[l.toolNames.read,l.toolNames.action].filter(A=>A!==void 0).some(A=>o.has(A))&&ye(p,"DUPLICATE_ID");}let d=[...e.filter(p=>p.provenance!==void 0&&p.diagnostic===void 0).flatMap(p=>p.candidate?[p.candidate]:[]),...(n.productBundleReservationMetadata?.candidates??[]).filter(p=>n.productBundleReservationMetadata?.indexHash!==void 0&&p.provenance?.indexHash===n.productBundleReservationMetadata.indexHash)],c=new Set;for(let p of e){let l=p.candidate;if(!(!l||p.diagnostic||p.source!=="apps"||p.provenance!==void 0)&&e.filter(u=>u.source==="apps"&&u.identity?.pluginId===l.pluginId).length===1&&d.some(u=>u.pluginId===l.pluginId)&&!(a.has(l.definitionId)&&!d.some(u=>u.pluginId===l.pluginId&&u.definitionId===l.definitionId))&&!d.some(u=>u.pluginId!==l.pluginId&&u.definitionId===l.definitionId)&&!e.some(u=>u.identity?.pluginId!==l.pluginId&&u.identity?.definitionKey===`${l.definitionId}\0${l.version}`&&u.diagnostic?.code!=="RESERVED_ID"))try{go(l),c.add(p);}catch(u){ye(p,u instanceof _e?Ko(u.code):"EXEC_DENIED");}}for(let p of e){let l=p.candidate;l&&p.provenance===void 0&&!c.has(p)&&(s.has(l.pluginId)||a.has(l.definitionId))&&ye(p,"RESERVED_ID");}return c}function Hc(e){return [...e].sort((n,t)=>{let i=Co.indexOf(n.source)-Co.indexOf(t.source);return i!==0?i:_n(n.relativePath,t.relativePath)})}function k(e,n,t){e.diagnostic=Jn(n,e.source,e.relativePath,e.identity?.pluginId,t);}async function Go(e,n,t){let i=Rt(t,{mode:"local"});if(!i.ok&&i.parseFailure){k(n,jo(i.rejection.code),xo(i.rejection));return}let r=bc(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)}`){k(n,"BUNDLE_INTEGRITY");return}if(!i.ok&&i.builtinOnly){k(n,"RESERVED_ID");return}if(!i.ok){k(n,jo(i.rejection.code),xo(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{Vt(o.actions.map(D=>({actionId:D.actionId,inputSchema:D.inputSchema})));}catch(D){if(D instanceof _e){k(n,Ko(D.code));return}throw D}let a;try{a=await Wn(e,n,"ui/index.html",Ke);}catch(D){k(n,ve(ne(D),"entry"));return}if(a.byteLength>Ke){k(n,"LIMIT_EXCEEDED");return}let d;try{d=Jo(a);}catch{k(n,"ENTRY_INVALID");return}if(a.byteLength===0||d.length===0){k(n,"ENTRY_INVALID");return}let c=crypto.createHash("sha256").update(a).digest("hex");if(o.entryHash!==void 0&&o.entryHash!==c){k(n,"ENTRY_INVALID");return}let p={},l,u;if(o.initialState!==void 0){try{l=await Wn(e,n,"ui/state.json",1048576);}catch(D){k(n,ve(ne(D),"initial"));return}if(l.byteLength>1048576){k(n,"LIMIT_EXCEEDED");return}try{let D=Nc(l),z=o.dataPaths??[],te=Et(D,z);p=ce(te,0,z),Be(p);}catch{k(n,"INITIAL_STATE_INVALID");return}if(u=crypto.createHash("sha256").update(l).digest("hex"),o.initialState.hash!==void 0&&o.initialState.hash!==u){k(n,"INITIAL_STATE_INVALID");return}}let A={...o,entryHash:c,...o.initialState===void 0?{}:{initialState:{path:"ui/state.json",hash:u}}},I=an(A),h=kc(A,a,l??new Uint8Array),b;try{b=wc(I,h);}catch(D){if(D instanceof oe){k(n,Pc(D));return}throw D}let V;if(n.bundleLineage!==void 0){let D=n.bundleLineage[n.bundleLineage.length-1];if(!D){k(n,"LINEAGE_INVALID");return}let{legacy:z,...te}=D.definition,{hash:G,...Ee}=b;if(q(te)!==q(Ee)){k(n,"LINEAGE_STALE");return}if(z!==void 0&&(b={...b,legacy:z}),z!==void 0)try{b={...b,hash:ie(b)},de(b);}catch{k(n,"LINEAGE_INVALID");return}V=n.bundleLineage;}if(n.bundleIdentity!==void 0&&n.bundleIdentity.appId!==o.pluginId){k(n,"BUNDLE_INTEGRITY");return}if(n.bundleIdentity!==void 0&&(n.bundleIdentity.definitionId!==b.id||n.bundleIdentity.version!==b.version||n.bundleIdentity.definitionHash!==b.hash)){k(n,"LINEAGE_STALE");return}let x=ii(o.pluginId),M=o.actions.length===0?{read:x.read}:x,O=je(I),H=je(A),N=je(b),L=je({...I.handlers}),S=vo(a),f=l===void 0?void 0:vo(l),m=Object.freeze({...n.provenance===void 0?{}:{provenance:n.provenance},entry:Object.freeze({path:"ui/index.html",hash:c,bytes:S}),...f===void 0?{}:{initialState:Object.freeze({path:"ui/state.json",hash:u,bytes:f})}}),T={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:je(i.mcpb)},relativePath:n.relativePath,manifest:H,normalized:O,name:o.name,description:o.description,...o.icon===void 0?{}:{icon:o.icon},...o.tone===void 0?{}:{tone:o.tone},definition:N,handlers:L,resources:m,html:d,entryBytes:S,entryHash:c,initialState:je(p),...f===void 0?{}:{initialStateBytes:f},...u===void 0?{}:{initialStateHash:u},sourceHash:h,toolNames:Object.freeze(M)},P=n.provenance===void 0?{...T,source:n.source}:{...T,provenance:n.provenance,lineage:V??[]};n.candidate=Object.freeze(P),xc(o)&&k(n,"EXEC_DENIED");}async function er(e,n){let t={};for(let i of re)try{t[i]=await Wn(e,n,i,262144);}catch(r){if(ne(r)==="NOT_FOUND")continue;return {files:t,failure:ve(ne(r),"manifest")}}if(t[X]!==void 0)try{t[Y]=await Wn(e,n,Y,262144);}catch(i){if(ne(i)!=="NOT_FOUND")return {files:t,failure:ve(ne(i),"manifest")}}return {files:t}}function ti(e){return re.some(n=>e[n]!==void 0)}async function zc(e,n){let{files:t,failure:i}=await er(e,n);if(i!==void 0){k(n,i);return}let r=t[X];return r!==void 0&&!Ot(r)&&(delete t[X],delete t[Y]),ti(t)?t:void 0}function Gc(e,n,t,i=Ac,r=false,o=new Set){let s=Hc(e),a=Fc(s,o),d=Object.freeze(s.filter(u=>u.candidate!==void 0&&u.diagnostic===void 0&&!a.has(u)).map(u=>u.candidate)),c=Object.freeze(s.filter(u=>u.diagnostic!==void 0).map(u=>u.diagnostic)),p=r?Object.freeze({...t===void 0?{}:{indexHash:t},candidates:Object.freeze(s.filter(u=>u.source==="bundled"&&u.diagnostic===void 0&&t!==void 0&&u.candidate?.provenance?.indexHash===t).map(u=>u.candidate)),diagnostics:Object.freeze(c.filter(u=>u.source==="bundled").map(u=>Object.freeze({...u}))),reservedAppIds:Object.freeze([...i.appIds]),reservedDefinitionIds:Object.freeze([...i.definitionIds])}):void 0,l={apps:d,diagnostics:c,complete:n===void 0,...n===void 0?{}:{incompleteReason:n},...t===void 0?{}:{productBundleIndexHash:t},...p===void 0?{}:{productBundleSnapshotMetadata:p}};return Object.defineProperty(l,"candidates",{configurable:false,enumerable:false,get:()=>d}),Object.freeze(l)}function $c(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 Jc(e,n){if($c(e))return {fs:e,options:n??{}};let t=e??n??{};return {fs:t.filesystem??t.fileSystem??t.fs??zn,options:t}}async function oi(e,n,t){if(typeof e!="string"||e.length===0)throw new TypeError("workspaceRoot must be explicit");let{fs:i,options:r}=Jc(n,t),o=r.clock??Oc,s=o(),a=await Uo(r.productBundle,i,s,o),d=o(),c=BigInt(Date.now())*1000000n,p=[],l=0,u,A=false,I,h;if(r.scanCache!==void 0&&typeof i.getRootIdentity=="function"&&typeof i.fingerprintVerifiedFile=="function")try{h=await i.getRootIdentity(e),I=_o(r.scanCache,h),I.scanStartedAtNs=c;}catch(N){if(ne(N)!=="NOT_FOUND")throw N}let b=I!==void 0&&r.productBundle===void 0&&a.packages.length===0&&a.diagnostics.length===0,V=new Set,x=true;p.push(...a.diagnostics.map(N=>({source:N.source,root:r.productBundle?.root??e,name:"",relativePath:N.relativePath,diagnostic:N})));let M=a.reservedIds;a.incomplete&&(u="time_limit");for(let N of a.packages){if(!Pe(d,o)){A=true,u="time_limit";break}let L=N.indexEntry,S=L.packageDir,f=N.files===void 0?void 0:Sc(S,N.files),m=a.indexHash===void 0?void 0:Xi(Object.freeze({kind:"bundled",launcher:L.launcher!==false,indexHash:a.indexHash,packageDir:S,appId:L.appId,definitionId:L.definition.id,version:L.definition.version,definitionHash:L.definition.hash,files:L.files}),f),T={source:"bundled",root:r.productBundle?.root??e,name:S.slice(5),relativePath:S,...m===void 0?{}:{provenance:m},...N.files===void 0?{}:{pinnedFiles:N.files},...N.lineage===void 0?{}:{bundleLineage:N.lineage},bundleIdentity:{appId:L.appId,definitionId:L.definition.id,version:L.definition.version,definitionHash:L.definition.hash},identity:Mc(L)};if(p.push(T),l+=1,N.failureCode!==void 0){k(T,N.failureCode);continue}if(N.files?.has(Y)===true){k(T,"EXEC_DENIED",{reason:{path:"",rule:"bundled-tool-mode-unsupported",file:Y}});continue}let P={};for(let D of re){let z=N.files?.get(D);z!==void 0&&(P[D]=z);}if(!ti(P)){k(T,"BUNDLE_INTEGRITY");continue}if(await Go(i,T,P),!Pe(d,o)){A=true,u="time_limit";break}}let O=[{source:"apps",directory:"apps"},{source:"skills",directory:"skills"}];e:for(let N of O){let{source:L,directory:S}=N,f;try{f=await vc(i,e,S);}catch(T){if(ne(T)==="NOT_FOUND")continue;b=false,x=false,p.push({source:L,root:e,name:"",relativePath:L,diagnostic:Jn(ve(ne(T),"manifest"),L,L)});continue}let m=f.filter(T=>T.kind==="directory"||T.kind==="symlink").filter(T=>Ec(T.name)).map(T=>({source:L,root:e,name:T.name,relativePath:Tc(L,T.name)})).sort((T,P)=>_n(T.relativePath,P.relativePath));for(let T of m){let P={...T};if(p.push(P),h!==void 0?V.add(Yo(h,P)):b=false,!Pe(d,o)){A=true,u="time_limit";break e}let D;if(I!==void 0&&h!==void 0){try{let G=await Cc(i,e,h,P,I,c,d,o);if(G.timeLimitReached){A=!0,u="time_limit";break e}P.scanContext=G.context,D=G.memo;}catch(G){b=false,k(P,ve(ne(G),"manifest"));continue}D===void 0&&(b=false);}if(D!==void 0){if(P.candidate=D.candidate,P.diagnostic=D.diagnostic,P.identity=D.identity,L==="skills"&&D.candidate===void 0&&D.diagnostic===void 0)continue;if(l>=64){k(P,"LIMIT_EXCEEDED");continue}if(T.relativePath.split("/").length-1>2){k(P,"LIMIT_EXCEEDED");continue}if(l+=1,!Pe(d,o)){A=true,u="time_limit";break e}continue}let z;if(L==="skills"&&(z=await zc(i,P),z===void 0)){P.diagnostic===void 0&&ni(P);continue}if(l>=64){k(P,"LIMIT_EXCEEDED");continue}if(T.relativePath.split("/").length-1>2){k(P,"LIMIT_EXCEEDED");continue}if(!Pe(d,o)){A=true,u="time_limit";break e}if(l+=1,z===void 0){let G=await er(i,P);if(G.failure!==void 0||!ti(G.files)){k(P,G.failure??ve("NOT_FOUND","manifest")),ni(P);continue}z=G.files;}if(await Go(i,P,z),ni(P),!Pe(d,o)){A=true,u="time_limit";break e}}}if(I!==void 0&&h!==void 0){let N=[...V].sort(_n),L=I.lastCandidateKeys,S=L!==void 0&&L.length===N.length&&L.every((m,T)=>m===N[T]);if(b=b&&S,x&&!A&&u===void 0)for(let m of I.candidates.keys())try{JSON.parse(m)[0]===h.realPath&&!V.has(m)&&I.candidates.delete(m);}catch{I.candidates.delete(m);}let f=[...I.candidates.keys()].filter(m=>{try{return JSON.parse(m)[0]===h.realPath}catch{return false}});b=b&&f.length===V.size&&f.every(m=>V.has(m))&&!A&&u===void 0,I.lastCandidateScanUnchanged=b,x&&!A&&u===void 0&&(I.lastCandidateKeys=Object.freeze(N));}A&&p.push({source:"apps",root:e,name:"",relativePath:"apps",diagnostic:Jn("DISCOVERY_TIME_LIMIT","apps","apps")});let H=Bc(p,r,M);return Gc(p,u,a.indexHash,M,r.productBundle!==void 0,H)}var Ac,Qe,gc,mc,Co,_c,Vo,Uc,Fo,Wc,Xc,tr=w(()=>{g();Ue();Tn();De();Gi();Re();vn();mo();Un();To();Xt();Cn();ei();ei();Ac=hn([]);Qe="crewx_local_app_",gc=Qe,mc=Qe;Co=["bundled","apps","skills"],_c=new TextDecoder("utf-8",{fatal:true});Vo=["","/ui"],Uc=["/dist"],Fo=2000000000n;Wc=oi,Xc=oi;});g();var ir="SKILL.md",Qc=/^---\s*\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/;function or(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}function ed(e){return e.isDirectory()||e.isSymbolicLink()}function ar(e){try{return fs$1.existsSync(e)&&fs$1.statSync(e).isDirectory()}catch{return false}}var nd=["index.js","main.js"];function Yl(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 nd){let o=path.resolve(e,r);if(fs$1.existsSync(o))return o}}function td(e){let n;try{n=fs$1.readFileSync(e,"utf8");}catch{return {frontmatter:{},readable:false,valid:false,hasFrontmatter:false}}let t=n.match(Qc);if(!t)return {frontmatter:{},readable:true,valid:true,hasFrontmatter:false};try{let i=jsYaml.load(t[1]??"");if(!or(i))return {frontmatter:{},readable:!0,valid:!1,hasFrontmatter:!0};let r=or(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 id(e){return [path.join(e,ir),path.join(e,"skill",ir)]}function Kn(e,n){if(!ar(e))return null;for(let t of id(e)){if(!fs$1.existsSync(t))continue;let r=td(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 ri(e){try{return fs$1.readdirSync(e,{withFileTypes:!0}).filter(ed)}catch{return []}}function od(e){return e.length===0||/[\\\u0000]/.test(e)?false:e.split("/").every(n=>n.length>0&&n!=="."&&n!=="..")}function rr(e,n,t){!e||n.has(e.name)||(n.add(e.name),t.push(e));}function Yn(e){let n=[],t=new Set;for(let i of e)if(ar(i))for(let r of ri(i)){if(r.name.startsWith("@")){let o=path.join(i,r.name);for(let s of ri(o))rr(Kn(path.join(o,s.name),s.name),t,n);continue}rr(Kn(path.join(i,r.name),r.name),t,n);}return n.sort((i,r)=>i.name.localeCompare(r.name))}function rd(e,n){if(!od(e))throw new Error(`Skill not found: ${e}`);for(let i of n){let r=Kn(path.join(i,e),e);if(r)return r;for(let o of ri(i)){if(!o.name.startsWith("@"))continue;let s=Kn(path.join(i,o.name,e),e);if(s)return s}}let t=Yn(n).find(i=>i.name===e);if(t)return t;throw new Error(`Skill not found: ${e}`)}async function ql(e){if(!e||e.root===null)return {skills:[],diagnostics:[]};let{discoverWorkspaceApps:n}=await Promise.resolve().then(()=>(tr(),nr)),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 Yn([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 Yn([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 Zl=Yn,Ql=rd;
|
|
2
2
|
exports.discover=Yn;exports.discoverBundledProductSkills=ql;exports.discoverSkills=Zl;exports.findEntrypoint=Yl;exports.readSkillFrontmatter=td;exports.resolve=rd;exports.resolveSkill=Ql;
|