@crewx/sdk 0.9.0-rc.136 → 0.9.0-rc.138

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