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