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