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