@crewx/sdk 0.9.0-rc.130 → 0.9.0-rc.131

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.
@@ -144,7 +144,7 @@ ${r.join(`
144
144
  THEN COALESCE(t.cached_input_tokens, 0)
145
145
  ELSE 0
146
146
  END
147
- `,u=r?drizzleOrm.sql`WHERE ${i} AND t.started_at >= ${e} AND t.started_at < ${n} AND t.workspace_id = ${r}`:drizzleOrm.sql`WHERE ${i} AND t.started_at >= ${e} AND t.started_at < ${n}`,f=o.db.all(drizzleOrm.sql`
147
+ `,u=r?drizzleOrm.sql`WHERE ${i} AND t.started_at >= ${e} AND t.started_at < ${n} AND t.workspace_id = ${r} AND t.agent_id != 'workflow'`:drizzleOrm.sql`WHERE ${i} AND t.started_at >= ${e} AND t.started_at < ${n} AND t.agent_id != 'workflow'`,f=o.db.all(drizzleOrm.sql`
148
148
  SELECT
149
149
  t.agent_id,
150
150
  t.workspace_id,
@@ -184,6 +184,7 @@ ${r.join(`
184
184
  AND t.started_at >= ${e}
185
185
  AND t.started_at < ${n}
186
186
  AND t.workspace_id = ${r}
187
+ AND t.agent_id != 'workflow'
187
188
  GROUP BY date(t.started_at), t.agent_id
188
189
  ORDER BY date(t.started_at) ASC
189
190
  `:drizzleOrm.sql`
@@ -211,6 +212,7 @@ ${r.join(`
211
212
  WHERE ${s}
212
213
  AND t.started_at >= ${e}
213
214
  AND t.started_at < ${n}
215
+ AND t.agent_id != 'workflow'
214
216
  GROUP BY date(t.started_at), t.agent_id
215
217
  ORDER BY date(t.started_at) ASC
216
218
  `).map(c=>({date:c.date,agentId:c.agent_id,unavailableTaskCount:c.unavailable_task_count,inputTokens:c.input_tokens,outputTokens:c.output_tokens,cachedInputTokens:c.cached_input_tokens,costUsd:c.cost_usd,totalTokens:c.input_tokens+c.output_tokens}))}catch(s){throw new exports.RepositoryError("DB_ERROR","Failed to get agent usage trend",s)}finally{o.close();}}findTaskForStop(e,n){if(!this.dbExists())return;let r=this.openHandle(false);try{let o=r.db.select().from(exports.tasks).where(drizzleOrm.and(drizzleOrm.eq(exports.tasks.id,e),drizzleOrm.eq(exports.tasks.workspace_id,n))).limit(1).get();return o?rt(o):void 0}catch(o){throw new exports.RepositoryError("DB_ERROR","Failed to find task for stop",o)}finally{r.close();}}findLatestTaskByMetadata(e){if(!this.dbExists())return null;let n=this.openHandle(false);try{return n.db.select({id:exports.tasks.id,thread_id:exports.tasks.thread_id,status:exports.tasks.status,result:exports.tasks.result,error:exports.tasks.error,started_at:exports.tasks.started_at,completed_at:exports.tasks.completed_at,metadata:exports.tasks.metadata}).from(exports.tasks).where(drizzleOrm.and(drizzleOrm.eq(exports.tasks.agent_id,e.agentId),drizzleOrm.eq(exports.tasks.workspace_id,e.workspaceId),drizzleOrm.sql`${exports.tasks.metadata} IS NOT NULL AND json_valid(${exports.tasks.metadata}) AND json_extract(${exports.tasks.metadata}, '$.' || ${e.metaKey}) = ${e.metaValue}`)).orderBy(drizzleOrm.desc(exports.tasks.started_at)).limit(1).get()??null}catch(r){throw new exports.RepositoryError("DB_ERROR","Failed to find latest task by metadata",r)}finally{n.close();}}markTaskFailed(e,n,r,o="failed",s){if(!this.dbExists())return;let i=this.openHandle(true);try{let d=new Date().toISOString(),c=r?drizzleOrm.and(drizzleOrm.eq(exports.tasks.id,e),drizzleOrm.eq(exports.tasks.status,"running"),drizzleOrm.eq(exports.tasks.workspace_id,r)):drizzleOrm.and(drizzleOrm.eq(exports.tasks.id,e),drizzleOrm.eq(exports.tasks.status,"running")),u=i.db.select({metadata:exports.tasks.metadata}).from(exports.tasks).where(c).limit(1).get();if(!u)return;let f={status:o,error:n,completed_at:d};if(s){let p=le(u.metadata);p.terminalReason=s,f.metadata=JSON.stringify(p);}i.db.update(exports.tasks).set(f).where(c).run();}catch(d){throw d instanceof exports.RepositoryError?d:new exports.RepositoryError("DB_ERROR","Failed to mark task failed",d)}finally{i.close();}}findTasksByPromptHint(e,n){let r=this.resolveDbPaths(),o=new Set,s=[];for(let i of r){if(!Oa.existsSync(i))continue;let d=x(i);try{let c=n?drizzleOrm.and(drizzleOrm.like(exports.tasks.prompt,`%${e}%`),drizzleOrm.eq(exports.tasks.workspace_id,n)):drizzleOrm.like(exports.tasks.prompt,`%${e}%`),u=d.db.select().from(exports.tasks).where(c).orderBy(drizzleOrm.asc(exports.tasks.started_at)).all();for(let f of u)o.has(f.id)||(o.add(f.id),s.push(rt(f)));}catch(c){throw new exports.RepositoryError("DB_ERROR","Failed to find tasks by prompt hint",c)}finally{d.close();}}return s}getProviderUsage(e,n,r){if(!this.dbExists())return [];let o=this.openHandle(false);try{let s=Ls(),i=or(exports.tasks.status),d=eo(exports.tasks.metadata),c=drizzleOrm.sql`
@@ -416,6 +418,7 @@ ${r.join(`
416
418
  SELECT DISTINCT child.agent_id FROM tasks child
417
419
  WHERE child.thread_id = ${e}
418
420
  AND child.agent_id IS NOT NULL AND child.agent_id != ''
421
+ AND child.agent_id != 'workflow'
419
422
  AND ${this.topLevelTaskPredicateSql()}
420
423
  ${n?drizzleOrm.sql`AND child.workspace_id = ${n}`:drizzleOrm.sql``}
421
424
  `);for(let m of _)u.add(m.agent_id);}catch(g){throw new exports.RepositoryError("DB_ERROR","Failed to aggregate task stats",g)}finally{p.close();}}return {taskCount:o,inputTokens:s,outputTokens:i,cachedInputTokens:d,costUsd:c,agentIds:Array.from(u)}}findTopLevelTasks(e,n,r){let o=this.resolveDbPaths(),s=new Set,i=[];for(let d of o){if(!Oa.existsSync(d))continue;let c=x(d);try{let u;r!==void 0?u=c.db.all(drizzleOrm.sql`
@@ -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 yi=Object.defineProperty;var O=(e,n)=>()=>(e&&(n=e(e=0)),n);var Ai=(e,n)=>{for(var t in n)yi(e,t,{get:n[t],enumerable:true});};var I=O(()=>{});var _,Fe=O(()=>{I();_=class extends Error{constructor(t,i=t,o){super(i);this.code=t;this.currentRevision=o;}code;currentRevision;name="UiRuntimeError"};});function ln(e){return Ii.test(e)||gi.test(e)}function H(){throw new _("INPUT_INVALID","JSON value is not projection-safe")}function _i(e){let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}function pn(e,n,t,i,o,r){if(n>i&&H(),e===null||typeof e=="string"||typeof e=="boolean")return typeof e=="string"&&(mi.test(e)||Ti.test(e)&&!Ni(o,r)||hi.test(e))&&H(),e;if(typeof e=="number")return Number.isFinite(e)||H(),e;(typeof e!="object"||e===void 0||typeof e=="function"||typeof e=="bigint")&&H();let s=e;t.has(s)&&H(),t.add(s);try{if(Array.isArray(e))return e.map(d=>pn(d,n+1,t,i,o,r));_i(s)||H();let a={};for(let[d,p]of Object.entries(e))ln(d)&&H(),a[d]=pn(p,n+1,t,i,[...o,d],r);return a}finally{t.delete(s);}}function ee(e,n=0,t=[]){(!Number.isInteger(n)||n<0||n>Ei)&&H(),(!Array.isArray(t)||t.some(o=>typeof o!="string"))&&H();let i=pn(e,0,new Set,Di+n,[],t);return (i===null||Array.isArray(i)||typeof i!="object")&&H(),i}function Ie(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 Ni(e,n){if(e.length===0)return false;let t=e.join(".");return n.some(i=>Ie(t,i))}function ge(e){try{let n=JSON.stringify(e);return n===void 0&&H(),n}catch{H();}}function dn(e){return Array.isArray(e)?e.map(dn):e!==null&&typeof e=="object"?Object.fromEntries(Object.keys(e).sort().map(n=>[n,dn(e[n])])):e}function G(e){return ge(dn(e))}function un(e){return Buffer.byteLength(e,"utf8")}var Ii,gi,mi,hi,Ti,Di,Ei,ce=O(()=>{I();Fe();Ii=/(?: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,mi=/<\/?[A-Za-z][^>]*>/,hi=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,Ti=/^(?:https?|file|ftp|ws|wss):\/\//i;Di=8,Ei=4;});function me(e){return bi.has(e)||Pi.test(e)||Mi.test(e)}var nt,bi,Pi,Mi,Be,Oe,ne,fn,yn,An,In,gn,he=O(()=>{I();nt=["__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"],bi=new Set(nt),Pi=/(?:proof|token|secret|password|cookie|authorization|private[_-]?key|stack|exception|plugin[_-]?text)/i,Mi=/(?:url|uri|endpoint|path|file(?:name|path)?|cwd|shell|directory|dir|folder)$/i;Be=/^[A-Za-z0-9_]+$/,Oe=/^[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*$/,ne=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,fn=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/,yn=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,An=/^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$/,In=["blue","violet","emerald","amber","rose","sky","slate","indigo"],gn=["inline","panel"];});function mn(e){return typeof e=="string"&&tt.includes(e)}var tt,it=O(()=>{I();he();tt=["text/plain","application/json"];});function He(e){if(!hn(e))return false;let n=Object.keys(e);return !(n.some(t=>t!=="in"&&t!=="out")||n.length===0||Object.hasOwn(e,"in")&&!Li(e.in)||Object.hasOwn(e,"out")&&!Oi(e.out))}function Li(e){return hn(e)?Object.keys(e).every(t=>t==="mediaType"||t==="required")&&Object.hasOwn(e,"mediaType")&&mn(e.mediaType)&&(!Object.hasOwn(e,"required")||typeof e.required=="boolean"):false}function Oi(e){return hn(e)?Object.keys(e).every(t=>t==="mediaType"||t==="range")&&Object.hasOwn(e,"mediaType")&&mn(e.mediaType)&&(!Object.hasOwn(e,"range")||typeof e.range=="boolean"):false}function hn(e){if(e===null||typeof e!="object"||Array.isArray(e))return false;let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}var Tn=O(()=>{I();it();new TextDecoder("utf-8",{fatal:true,ignoreBOM:true});});function te(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=ee(t);return crypto.createHash("sha256").update(G(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 _("DEFINITION_UNSUPPORTED","UI definition is invalid");if(e.sourceHash!==void 0&&(typeof e.sourceHash!="string"||!Ui.test(e.sourceHash)))throw new _("DEFINITION_UNSUPPORTED","UI definition source hash is invalid");if(!/^[0-9a-f]{64}$/.test(e.hash)||te(e)!==e.hash)throw new _("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=>!ki(i)))throw new _("DEFINITION_UNSUPPORTED","UI action declaration is invalid");if(t.confirmation!==void 0&&t.confirmation!=="none"&&t.confirmation!=="native")throw new _("DEFINITION_UNSUPPORTED","UI action confirmation is invalid");if(t.inputKeys&&(!Array.isArray(t.inputKeys)||t.inputKeys.some(i=>typeof i!="string"||!i)))throw new _("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 _("DEFINITION_UNSUPPORTED","UI action data input declaration is invalid");if(t.resultProjection&&_n(t.resultProjection),t.content!==void 0&&!He(t.content))throw new _("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 _("DEFINITION_UNSUPPORTED","UI action environment declaration is invalid")}if(e.renderer!==void 0&&(!e.renderer||e.renderer.length>128))throw new _("DEFINITION_UNSUPPORTED","UI definition renderer is invalid");if(e.surfaces&&(!Array.isArray(e.surfaces)||e.surfaces.some(n=>!n||n.length>64)))throw new _("DEFINITION_UNSUPPORTED","UI definition surfaces are invalid");if(e.usage!==void 0&&e.usage!=="card"&&e.usage!=="window")throw new _("DEFINITION_UNSUPPORTED","UI definition usage is invalid");if(e.detailPanel!==void 0&&typeof e.detailPanel!="boolean")throw new _("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 _("DEFINITION_UNSUPPORTED","UI definition displayModes are invalid");if(e.usage==="card"&&e.displayModes!==void 0)throw new _("DEFINITION_UNSUPPORTED","Card definitions cannot declare displayModes");if(e.usage==="window"&&e.detailPanel!==void 0)throw new _("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 _("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 _("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(Ri(r,o==="readTool"),n.has(r.name))throw new _("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 _("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,s]of Object.entries(t)){if(!Object.hasOwn(o,r)||o[r]!==s||typeof s!="string"||!/^[A-Za-z][A-Za-z0-9._-]{0,127}$/.test(s)||n.has(s))throw new _("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(([o,r])=>!o||!Object.hasOwn(e.actions,o)||r!=="allowed"&&r!=="denied")))throw new _("DEFINITION_UNSUPPORTED","UI legacy agent access is invalid");if(e.legacy.actionTool!==void 0&&(!i||Object.keys(i).length===0))throw new _("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=>Ie(t,i))))throw new _("DEFINITION_UNSUPPORTED","UI definition dataPaths are invalid")}}function Ri(e,n){if(!e||typeof e!="object"||Array.isArray(e))throw new _("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 _("DEFINITION_UNSUPPORTED","UI legacy tool metadata is invalid");try{let r=ee(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 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=ee(a.structuredContent);if(un(ge(d))>4*1024)throw new Error("fixed result size")}}catch{throw new _("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 _("DEFINITION_UNSUPPORTED","UI projection policy is invalid")}function ki(e){return e.length>0&&e.length<=128&&e!=="*"&&e!=="all"&&!/[/*]/.test(e)}var Ui,Te=O(()=>{I();ce();Fe();Tn();Ui=/^[0-9a-f]{64}$/;});var ot=O(()=>{I();ce();});var Se,rt=O(()=>{I();Se="window";});function c(e,n=e){throw new W(e,n)}function R(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 D(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function C(e,n,t=[]){let i=new Set([...n,...t]);Object.keys(e).some(o=>!i.has(o))&&c("MANIFEST_INVALID"),n.some(o=>!D(e,o))&&c("MANIFEST_INVALID");}function $e(e,n=false,t=false,i=false){return ji.test(e)||!i&&Vi.test(e)||vi.test(e)||t&&st.test(e)||Fi.test(e)&&!(n&&/^\s*data:/i.test(e)&&!st.test(e))}function Je(e,n=new Set,t=0,i=false,o=false){if(typeof e=="string"){$e(e,i,o)&&c("UNSAFE_VALUE");return}if(!(e===null||typeof e!="object")){(t>8||n.has(e))&&c("MANIFEST_INVALID"),n.add(e);try{if(Array.isArray(e)){for(let r of e)Je(r,n,t+1);return}R(e)||c("MANIFEST_INVALID");for(let[r,s]of Object.entries(e))Je(s,n,t+1,i&&t===0&&(r==="name"||r==="description"),o);}finally{n.delete(e);}}}function K(e,n){let t=e[n];return typeof t!="string"&&c("MANIFEST_INVALID"),t}function J(e,n,t){let i=e[n];return (!Number.isSafeInteger(i)||i<t)&&c("MANIFEST_INVALID"),i}function Dn(e){return xi.test(e)||c("MANIFEST_INVALID"),e}function _e(e){return wi.test(e)||c("TOKEN_INVALID"),e}function so(e){return At.test(e)||c("MANIFEST_INVALID"),e}function ao(e){R(e)||c("MANIFEST_INVALID");let n={};for(let[t,i]of Object.entries(e)){let o=so(t);R(i)||c("MANIFEST_INVALID");let r=i.type;if(r==="text"){C(i,["type","maxLength"]),n[o]={type:r,maxLength:J(i,"maxLength",1)};continue}if(r==="text-list"){C(i,["type","max","itemMaxLength"]),n[o]={type:r,max:J(i,"max",0),itemMaxLength:J(i,"itemMaxLength",1)};continue}if(r==="step-list"){C(i,["type","min","max","labelMaxLength","detailMaxLength"]);let s=J(i,"min",0),a=J(i,"max",1);s>a&&c("MANIFEST_INVALID"),n[o]={type:r,min:s,max:a,labelMaxLength:J(i,"labelMaxLength",1),detailMaxLength:J(i,"detailMaxLength",1)};continue}typeof r=="string"&&c("SCHEMA_TYPE_UNSUPPORTED"),c("MANIFEST_INVALID");}return n}function co(e,n,t){let i=e[n];(!i||i.type!==t)&&c("MANIFEST_INVALID");}function ze(e,n,t){let i=K(e,"field");return At.test(i)||c("MANIFEST_INVALID"),co(n,i,t),i}function po(e,n){R(e)||c("MANIFEST_INVALID");let t=e.primitive;switch(typeof t!="string"&&c("MANIFEST_INVALID"),ro.includes(t)||c("PRIMITIVE_UNKNOWN"),t){case "card-shell":return C(e,["primitive"]),{primitive:t};case "meta-banner":return C(e,["primitive","badgeToken","noticeToken"]),{primitive:t,badgeToken:_e(K(e,"badgeToken")),noticeToken:_e(K(e,"noticeToken"))};case "heading":return C(e,["primitive","field"]),{primitive:t,field:ze(e,n,"text")};case "labeled-text":return C(e,["primitive","titleToken","field","variant"]),e.variant!=="callout"&&c("MANIFEST_INVALID"),{primitive:t,titleToken:_e(K(e,"titleToken")),field:ze(e,n,"text"),variant:"callout"};case "step-flow":return C(e,["primitive","titleToken","field"]),{primitive:t,titleToken:_e(K(e,"titleToken")),field:ze(e,n,"step-list")};case "text-list":{C(e,["primitive","titleToken","field"],["emptyToken","hideWhenEmpty"]);let i={primitive:t,titleToken:_e(K(e,"titleToken")),field:ze(e,n,"text-list")};return D(e,"emptyToken")&&(i.emptyToken=_e(K(e,"emptyToken"))),D(e,"hideWhenEmpty")&&(typeof e.hideWhenEmpty!="boolean"&&c("MANIFEST_INVALID"),i.hideWhenEmpty=e.hideWhenEmpty),i}}return c("MANIFEST_INVALID")}function lo(e,n){return Array.isArray(e)||c("MANIFEST_INVALID"),e.map(t=>po(t,n))}function w(e="v2 manifest exceeds a contract limit"){return c("LIMIT_EXCEEDED",e)}function z(e="initial state is not projection-safe"){return c("INITIAL_STATE_INVALID",e)}function at(e,n){return (typeof e!="string"||e.length===0||e.length>4096||e.trim().length===0||to.test(e)||io.test(e))&&c("MANIFEST_INVALID",`${n} is invalid`),($e(e,true,true)||Bi.test(e)||Hi.test(e)||zi.test(e))&&c("UNSAFE_VALUE",`${n} contains an unsafe value`),e}function En(e,n){return (typeof e!="string"||!ne.test(e))&&c("MANIFEST_INVALID",`${n} is invalid`),e}function uo(e){return (typeof e!="string"||!fn.test(e)||e==="*"||e==="all")&&c("MANIFEST_INVALID","action capability is invalid"),e}function It(e){return (typeof e!="string"||!no.test(e))&&c("MANIFEST_INVALID","resource hash is invalid"),e}function Nn(e,n=new Set,t=0){if(typeof e=="string"){e.length>4096&&w("v2 manifest string is too long");return}if(!(e===null||typeof e=="boolean")){if(typeof e=="number"){Number.isFinite(e)||c("MANIFEST_INVALID","v2 manifest contains a non-finite number");return}(e===void 0||typeof e=="function"||typeof e=="bigint")&&c("MANIFEST_INVALID","v2 manifest contains a non-JSON value"),typeof e!="object"&&c("MANIFEST_INVALID"),t>8&&w("v2 manifest nesting is too deep"),n.has(e)&&c("MANIFEST_INVALID","v2 manifest contains a cycle"),n.add(e);try{if(Array.isArray(e)){e.length>128&&w("v2 manifest array is too long");for(let i of e)Nn(i,n,t+1);return}R(e)||c("MANIFEST_INVALID","v2 manifest contains a non-plain object");for(let i of Object.values(e))Nn(i,n,t+1);}finally{n.delete(e);}}}function gt(e){return (typeof e!="string"||e.length>4096||!Oe.test(e))&&(typeof e=="string"&&e.length>4096&&w("projection path is too long"),c("MANIFEST_INVALID","projection paths must be canonical exact paths")),e.split(".").some(t=>me(t))&&c("MANIFEST_INVALID","projection paths cannot address reserved state keys"),e}function bn(e){R(e)||c("MANIFEST_INVALID","projection policy must be an object"),C(e,["allow"]),Array.isArray(e.allow)||c("MANIFEST_INVALID","projection allow must be an array"),e.allow.length>128&&w("projection allowlist is too long");let n=[],t=new Set;for(let i of e.allow){let o=gt(i);t.has(o)&&c("MANIFEST_INVALID","projection allowlist contains a duplicate path"),t.add(o),n.push(o);}return {allow:n}}function fo(e,n){if(e===void 0)return;Array.isArray(e)||c("MANIFEST_INVALID","dataPaths must be an array"),e.length>oo&&w("dataPaths exceed the v2 limit");let t=[],i=new Set;for(let o of e){let r=gt(o);i.has(r)&&c("MANIFEST_INVALID","dataPaths contain a duplicate path"),n.some(s=>Ie(r,s))||c("MANIFEST_INVALID","dataPaths must be projection-allowed"),i.add(r),t.push(r);}return t}function De(e,n,t=Number.MAX_SAFE_INTEGER){return (!Number.isSafeInteger(e)||e<0||e>t)&&c("MANIFEST_INVALID",`${n} is invalid`),e}function ct(e,n){return (typeof e!="number"||!Number.isFinite(e))&&c("MANIFEST_INVALID",`${n} is invalid`),e}function Pn(e,n=0,t=new Set){if(typeof e=="string")return (e.length>4096||$e(e))&&c("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)||c("MANIFEST_INVALID","schema enum contains a non-finite number"),e;(n>8||typeof e!="object"||e===void 0)&&w("schema enum is too deep"),t.has(e)&&c("MANIFEST_INVALID","schema enum contains a cycle"),t.add(e);try{if(Array.isArray(e))return e.length>128&&w("schema enum array is too long"),e.map(o=>Pn(o,n+1,t));R(e)||c("MANIFEST_INVALID","schema enum contains a non-plain object");let i={};for(let[o,r]of Object.entries(e))me(o)&&c("MANIFEST_INVALID","schema enum contains a reserved key"),i[o]=Pn(r,n+1,t);return i}finally{t.delete(e);}}function yo(e,n){if(e===void 0)return;Array.isArray(e)||c("MANIFEST_INVALID","schema required must be an array"),e.length>64&&w("schema required list is too long");let t=[],i=new Set;for(let o of e)(typeof o!="string"||!Oe.test(o))&&c("MANIFEST_INVALID","schema required contains an invalid key"),o.length>4096&&w("schema required key is too long"),i.has(o)&&c("MANIFEST_INVALID","schema required contains a duplicate key"),n&&!Object.prototype.hasOwnProperty.call(n,o)&&c("MANIFEST_INVALID","schema required references an undeclared property"),i.add(o),t.push(o);return t}function Ao(e,n){let t=n?Oe:Be;return e.length>4096&&w("schema property name is too long"),(!t.test(e)||e.split(".").some(i=>me(i)))&&c("MANIFEST_INVALID","schema property name is invalid"),e}function Mn(e,n=0,t=false){R(e)||c("MANIFEST_INVALID","action inputSchema must be an object"),n>8&&w("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"&&c("SCHEMA_TYPE_UNSUPPORTED","action inputSchema type is unsupported"),c("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"),C(e,["type"],o.filter(a=>a!=="type"));let r={type:i};if(D(e,"enum")&&(Array.isArray(e.enum)||c("MANIFEST_INVALID","schema enum must be an array"),e.enum.length>128&&w("schema enum is too long"),r.enum=e.enum.map(a=>Pn(a))),i==="string"&&(D(e,"minLength")&&(r.minLength=De(e.minLength,"schema minLength",4096)),D(e,"maxLength")&&(r.maxLength=De(e.maxLength,"schema maxLength",4096)),r.minLength!==void 0&&r.maxLength!==void 0&&r.minLength>r.maxLength&&c("MANIFEST_INVALID","schema string length bounds are inverted")),(i==="number"||i==="integer")&&(D(e,"minimum")&&(r.minimum=ct(e.minimum,"schema minimum")),D(e,"maximum")&&(r.maximum=ct(e.maximum,"schema maximum")),r.minimum!==void 0&&r.maximum!==void 0&&r.minimum>r.maximum&&c("MANIFEST_INVALID","schema numeric bounds are inverted")),i==="array"&&(D(e,"minItems")&&(r.minItems=De(e.minItems,"schema minItems",128)),D(e,"maxItems")&&(r.maxItems=De(e.maxItems,"schema maxItems",128)),r.minItems!==void 0&&r.maxItems!==void 0&&r.minItems>r.maxItems&&c("MANIFEST_INVALID","schema array length bounds are inverted"),D(e,"items")&&(r.items=Mn(e.items,n+1,false))),i==="object"){let a;if(D(e,"properties")){R(e.properties)||c("MANIFEST_INVALID","schema properties must be an object");let p=Object.entries(e.properties);p.length>64&&w("schema properties are too many"),a={};for(let[u,y]of p){let b=Ao(u,t);a[b]=Mn(y,n+1,false);}r.properties=a;}D(e,"minProperties")&&(r.minProperties=De(e.minProperties,"schema minProperties",64)),D(e,"maxProperties")&&(r.maxProperties=De(e.maxProperties,"schema maxProperties",64)),r.minProperties!==void 0&&r.maxProperties!==void 0&&r.minProperties>r.maxProperties&&c("MANIFEST_INVALID","schema object property bounds are inverted");let d=yo(e.required,a);d!==void 0&&(r.required=d),D(e,"additionalProperties")&&(e.additionalProperties!==false&&c("MANIFEST_INVALID","schema additionalProperties must be false"),r.additionalProperties=false);}let s=JSON.stringify(r);return (s===void 0||Buffer.byteLength(s,"utf8")>65536)&&w("action inputSchema subtree is too large"),r}function Io(e){let n=Mn(e,0,true);return (n.type!=="object"||!n.properties)&&c("MANIFEST_INVALID","action inputSchema must declare object properties"),n}function go(e){if(R(e)||c("MANIFEST_INVALID","action backend must be an object"),e.type==="core"){C(e,Ki);let n=e.handler;return (typeof n!="string"||!yn.test(n))&&c("MANIFEST_INVALID","core backend handler is invalid"),{type:"core",handler:n}}if(e.type==="skill"){C(e,qi,Zi),(!Array.isArray(e.command)||e.command.length===0||e.command.length>16)&&c("MANIFEST_INVALID","skill backend command is invalid");let n=[];for(let i of e.command)(typeof i!="string"||i.length===0||i.length>256||!An.test(i))&&c("MANIFEST_INVALID","skill backend command token is invalid"),n.push(i);let t=D(e,"env")?ho(e.env):void 0;return {type:"skill",command:n,...t===void 0?{}:{env:t}}}c("MANIFEST_INVALID","action backend type is unsupported");}function mo(e){R(e)||c("MANIFEST_INVALID","action must be an object"),C(e,$i,Xi),D(e,"_meta")&&mt(e._meta);let n=En(e.actionId,"actionId");ln(n)&&c("MANIFEST_INVALID",`actionId "${n}" is not projection-safe`);let t=uo(e.capability),i=e.mutation;typeof i!="boolean"&&c("MANIFEST_INVALID","action mutation must be boolean");let o=Io(e.inputSchema),r;if(D(e,"dataInputs")){Array.isArray(e.dataInputs)||c("MANIFEST_INVALID","action dataInputs must be an array");let u=o.properties,y=new Set,b=[];for(let g of e.dataInputs)(typeof g!="string"||!D(u,g)||y.has(g))&&c("MANIFEST_INVALID","action dataInputs must be unique declared properties"),y.add(g),b.push(g);r=b;}let s=bn(e.resultProjection),a=go(e.backend),d;D(e,"content")&&((a.type!=="skill"||!He(e.content))&&c("MANIFEST_INVALID","action content declaration is invalid"),d=To(e.content));let p;if(D(e,"confirmation")){let u=e.confirmation;u!=="none"&&u!=="native"&&c("MANIFEST_INVALID","action confirmation is invalid"),p=u;}return {actionId:n,capability:t,mutation:i,inputSchema:o,resultProjection:s,backend:a,...d===void 0?{}:{content:d},...r===void 0?{}:{dataInputs:r},...p===void 0?{}:{confirmation:p}}}function ho(e){(!Array.isArray(e)||e.length===0)&&c("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))&&c("MANIFEST_INVALID","skill backend env is invalid"),n.add(i),t.push(i);return Object.freeze(t)}function To(e){return Object.freeze({...e.in===void 0?{}:{in:Object.freeze({...e.in})},...e.out===void 0?{}:{out:Object.freeze({...e.out})}})}function _o(e){return R(e)||c("INITIAL_STATE_INVALID","initialState must be an object"),C(e,Qi,eo),e.path!=="ui/state.json"&&c("MANIFEST_INVALID","initialState path is not fixed"),D(e,"hash")?{path:"ui/state.json",hash:It(e.hash)}:{path:"ui/state.json"}}function Do(e){let n=["wasm","terminal","htmlDocuments"];return (!R(e)||Object.keys(e).length===0||Object.keys(e).some(t=>!n.includes(t)||e[t]!==true))&&c("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 Eo(e,n){Je(e,new Set,0,true,true),Nn(e),R(e)||c("MANIFEST_INVALID"),C(e,Ji,Wi),D(e,"_meta")&&mt(e._meta),e.manifestVersion!==2&&c("MANIFEST_INVALID");let t;D(e,"runtime")&&(t=Do(e.runtime));let i=En(e.pluginId,"pluginId"),o=En(e.definitionId,"definitionId"),r=J(e,"version",1),s=at(e.name,"name"),a=at(e.description,"description"),d;D(e,"icon")&&((typeof e.icon!="string"||!/^[a-z][a-z0-9-]{0,63}$/.test(e.icon))&&c("MANIFEST_INVALID","icon is invalid"),d=e.icon);let p;D(e,"tone")&&((typeof e.tone!="string"||!In.includes(e.tone))&&c("MANIFEST_INVALID","tone is invalid"),p=e.tone),e.entry!=="ui/index.html"&&c("MANIFEST_INVALID","entry path is not fixed");let u;D(e,"entryHash")&&(u=It(e.entryHash));let y;D(e,"initialState")&&(y=_o(e.initialState));let b;D(e,"usage")&&(e.usage!=="card"&&e.usage!=="window"&&c("MANIFEST_INVALID","usage is invalid"),b=e.usage);let g;D(e,"detailPanel")&&(typeof e.detailPanel!="boolean"&&c("MANIFEST_INVALID","detailPanel is invalid"),g=e.detailPanel);let f;if(D(e,"displayModes")){((b??Se)!==Se||!Array.isArray(e.displayModes)||e.displayModes.length===0)&&c("MANIFEST_INVALID","displayModes are only valid for window Apps");let M=new Set(["inline","floating","focused"]);(new Set(e.displayModes).size!==e.displayModes.length||e.displayModes.some(l=>typeof l!="string"||!M.has(l)))&&c("MANIFEST_INVALID","displayModes are invalid"),f=e.displayModes;}(b??Se)===Se&&g!==void 0&&c("MANIFEST_INVALID","detailPanel is card-only");let T=n.mode??"local";T!=="local"&&T!=="installed"&&T!=="published"&&c("MANIFEST_INVALID","manifest mode is invalid"),T!=="local"&&u===void 0&&c("MANIFEST_INVALID","installed manifests require entryHash"),T!=="local"&&y!==void 0&&y.hash===void 0&&c("MANIFEST_INVALID","installed manifests require initialState.hash"),(!Array.isArray(e.surfaces)||e.surfaces.length===0)&&c("MANIFEST_INVALID","surfaces are invalid"),e.surfaces.length>2&&w("surfaces exceed the v2 limit");let k=[],j=new Set;for(let M of e.surfaces)(typeof M!="string"||!gn.includes(M))&&c("MANIFEST_INVALID","surface is unsupported"),j.has(M)&&c("MANIFEST_INVALID","surfaces contain a duplicate"),j.add(M),k.push(M);R(e.size)||c("MANIFEST_INVALID","size must be an object"),C(e.size,["height"]);let m=J(e.size,"height",1);m>720&&w("size.height exceeds the v2 limit");let N=bn(e.stateProjection),S=e.summaryProjection===void 0?void 0:bn(e.summaryProjection);S!==void 0&&S.allow.some(M=>!N.allow.includes(M))&&c("MANIFEST_INVALID","summaryProjection must be a subset of stateProjection.allow");let B=fo(e.dataPaths,N.allow);Array.isArray(e.actions)||c("MANIFEST_INVALID","actions must be an array"),e.actions.length>32&&w("actions exceed the v2 limit");let x=[],X=new Set;for(let M of e.actions){let l=mo(M);if(X.has(l.actionId)&&c("MANIFEST_INVALID","actions contain a duplicate actionId"),l.backend.type==="core"&&l.backend.handler==="state.set"){l.mutation||c("MANIFEST_INVALID","state.set actions must be mutations");for(let P of Object.keys(l.inputSchema.properties))N.allow.includes(P)||c("MANIFEST_INVALID","state.set input paths must be projection-allowed");}X.add(l.actionId),x.push(l);}return {manifestVersion:2,pluginId:i,definitionId:o,version:r,name:s,description:a,...d===void 0?{}:{icon:d},...p===void 0?{}:{tone:p},entry:"ui/index.html",...u===void 0?{}:{entryHash:u},...t===void 0?{}:{runtime:t},...y===void 0?{}:{initialState:y},...b===void 0?{}:{usage:b},...g===void 0?{}:{detailPanel:g},...f===void 0?{}:{displayModes:f},surfaces:k,size:{height:m},stateProjection:N,...S===void 0?{}:{summaryProjection:S},...B===void 0?{}:{dataPaths:B},actions:x}}function mt(e){R(e)||c("MANIFEST_INVALID","_meta must be an object");let n=JSON.stringify(e);(n===void 0||Buffer.byteLength(n,"utf8")>Yi)&&w("_meta exceeds the 4 KiB limit");}function No(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 s=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: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},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 Ln(e,n,t,i,o,r){if(typeof e=="string"){let s=o.length>0&&r.some(a=>Ie(o.join("."),a));return (e.length>4096||$e(e,false,false,s))&&z("state contains an unsafe string"),e}if(e===null||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)||z("state contains a non-finite number"),e;(e===void 0||typeof e!="object"||typeof e=="function"||typeof e=="bigint")&&z("state contains a non-JSON value"),t>8&&z("state is too deep"),n.has(e)&&z("state contains a cycle"),n.add(e);try{let s;if(Array.isArray(e))e.length>128&&z("state array is too long"),s=e.map(d=>Ln(d,n,t+1,65536,o,r));else {R(e)||z("state contains a non-plain object");let d={};for(let[p,u]of Object.entries(e))(p.length>4096||!Be.test(p)||me(p))&&(p.length>4096&&z("state key is too long"),z("state contains a reserved or invalid key")),d[p]=Ln(u,n,t+1,65536,[...o,p],r);s=d;}let a=JSON.stringify(s);return (a===void 0||Buffer.byteLength(a,"utf8")>i)&&z("state subtree is too large"),s}finally{n.delete(e);}}function Sn(e,n=[]){R(e)||z("initial state must be a JSON object");let t=Ln(e,new Set,0,65536,[],n);return (t===null||Array.isArray(t)||typeof t!="object")&&z(),t}function bo(e,n={}){Je(e),R(e)||c("MANIFEST_INVALID"),C(e,Gi),e.manifestVersion!==1&&c("MANIFEST_INVALID");let t=Dn(K(e,"pluginId")),i=Dn(K(e,"definitionId")),o=J(e,"version",1),r=J(e,"primitiveSet",1),s=n.supportedPrimitiveSet??Ci;(!Number.isSafeInteger(s)||s<1)&&c("MANIFEST_INVALID"),r>s&&c("PRIMITIVE_SET_UNSUPPORTED"),R(e.activation)||c("MANIFEST_INVALID"),C(e.activation,["kind","language"]),e.activation.kind!=="fenced-code"&&c("MANIFEST_INVALID");let a=Dn(K(e.activation,"language")),d=ao(e.schema),p=lo(e.layout,d);return {manifestVersion:1,pluginId:t,definitionId:i,version:o,primitiveSet:r,activation:{kind:"fenced-code",language:a},schema:d,layout:p}}function Po(e,n={}){return R(e)||c("MANIFEST_INVALID"),Object.hasOwn(e,"lineage")&&c("MANIFEST_INVALID","lineage is only allowed in product bundle indexes"),e.manifestVersion===2?Eo(e,n):bo(e,n)}function Xe(e,n={}){try{return Po(e,n)}catch(t){if(t instanceof W)throw t;return c("MANIFEST_INVALID")}}function Un(e,n={}){let t=Xe(e,n);return t.manifestVersion===2?No(t):t}var Ci,wi,xi,At,ji,vi,Vi,Fi,st,Bi,Hi,zi,Gi,Ji,Wi,$i,Xi,Yi,Ki,qi,Zi,Qi,eo,no,to,io,oo,ro,W,ht=O(()=>{I();rt();ce();Tn();he();Ci=1,wi=/^[a-z][a-zA-Z0-9]*(\.[a-zA-Z0-9]+)+$/,xi=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,At=/^[A-Za-z][A-Za-z0-9_-]{0,63}$/,ji=/<\/?[A-Za-z][^>]*>/,vi=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,Vi=/^(?:https?|file|ftp|ws|wss):\/\//i,Fi=/^\s*(?:javascript|data):/i,st=/data:[^,\s]*,/i,Bi=/(?:https?|file|ftp|ws|wss):\/\//i,Hi=/javascript:/i,zi=/(?:^[\s]*|[\s"'(=])(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)(?=[^\s"'<>])[^\s"'<>]*/,Gi=["manifestVersion","pluginId","definitionId","version","primitiveSet","activation","schema","layout"],Ji=["manifestVersion","pluginId","definitionId","version","name","description","entry","surfaces","size","stateProjection","actions"],Wi=["_meta","icon","tone","entryHash","runtime","initialState","usage","detailPanel","displayModes","summaryProjection","dataPaths","focusedAiDataPaths"],$i=["actionId","capability","mutation","inputSchema","resultProjection","backend"],Xi=["confirmation","dataInputs","content","_meta"],Yi=4*1024,Ki=["type","handler"],qi=["type","command"],Zi=["env"],Qi=["path"],eo=["hash"],no=/^[0-9a-f]{64}$/,to=/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/,io=/[\r\n]/,oo=16,ro=["card-shell","meta-banner","heading","labeled-text","step-flow","text-list"],W=class extends Error{constructor(t,i=t){super(i);this.code=t;}code;name="UiPluginValidationError"};});var Tt=O(()=>{I();ot();ht();he();});function qe(e,n=e){throw new oe(e,n)}var oe,Ze=O(()=>{I();oe=class extends Error{constructor(t,i=t){super(i);this.code=t;}code;name="McpAppContractError"};});var _t=O(()=>{I();});var Dt=O(()=>{I();Te();ce();Ze();_t();});function Et(e,n){return Mo.add(e),n!==void 0&&Lo.set(e,n),e}var Mo,Lo,Qe=O(()=>{I();Mo=new WeakSet,Lo=new WeakMap;});function Re(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Rn(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 Pt(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;for(let n of Object.values(e))Pt(n);return Object.freeze(e)}function v(e){throw new q("LINEAGE_INVALID",e)}function wo(e){throw new q("LINEAGE_STALE",e)}function Mt(e){if(!Re(e)||!Rn(e,Uo,Ro)||!Re(e.actions))return v("Lineage definition shape is invalid");for(let n of Object.values(e.actions))if(!Re(n)||!Rn(n,ko,Co))return v("Lineage action definition shape is invalid");return e}function xo(e){if(!Re(e)||!Rn(e,Oo,So))return v("Lineage entry shape is invalid");if(!Number.isSafeInteger(e.version)||e.version<1||typeof e.hash!="string"||!Nt.test(e.hash))return v("Lineage entry identity is invalid");if(e.sourceHash!==void 0&&(typeof e.sourceHash!="string"||!Nt.test(e.sourceHash)))return v("Lineage source hash is invalid");if(e.compat!==void 0&&e.compat!=="break")return v("Lineage compatibility marker is invalid");let n=Mt(e.definition);if(n.version!==e.version)return v("Lineage version does not match its definition");if(e.sourceHash!==void 0&&n.sourceHash!==e.sourceHash)return v("Lineage source hash does not match its definition");let t;try{t=te(n),ie({...n,hash:e.hash});}catch{return v("Lineage definition is invalid")}return t!==e.hash?v("Lineage definition hash does not match"):Pt({version:e.version,hash:e.hash,definition:n,...e.sourceHash===void 0?{}:{sourceHash:e.sourceHash},...e.compat===void 0?{}:{compat:e.compat}})}function bt(e){return e.stateProjection?.allow??[]}function jo(e,n){let t=[],i=new Set(bt(n));bt(e).some(a=>!i.has(a))&&t.push("S1_STATE_PROJECTION");let o=new Set(n.dataPaths??[]);(e.dataPaths??[]).some(a=>!o.has(a))&&t.push("S2_DATA_PATHS");for(let[a,d]of Object.entries(e.actions)){let p=n.actions[a];if(p&&(d.confirmation??"native")==="native"&&(p.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 vo(e,n){return G(e)===G(n)}function kn(e,n){if(!Array.isArray(e)||e.length===0)return v("Definition lineage is missing");if(!Re(n)||typeof n.hash!="string")return v("Current definition is invalid");let t,i;try{let{hash:a,...d}=n;i=Mt(d),t={...i,hash:a},ie(t);}catch{return v("Current definition is invalid")}let o=e.map(xo),r=o[0].definition.id;if(o.some(a=>a.definition.id!==r))return v("Lineage definition ids do not match");if(o.some((a,d)=>d>0&&a.version<=o[d-1].version))return v("Lineage generations are not in increasing version order");if(o.some((a,d)=>o.findIndex(p=>p.hash===a.hash)!==d))return v("Lineage contains a duplicate hash");let s=o[o.length-1];if(s.version!==t.version||s.hash!==t.hash||s.definition.id!==t.id||!vo(s.definition,i))return wo("The last lineage generation does not match the current package");if(t.legacy!==void 0){let a=new Set(Object.keys(t.actions)),d=new Set;for(let u of o)if(u.sourceHash===void 0)for(let y of Object.keys(u.definition.actions))a.has(y)&&d.add(y);let p=Object.keys(t.legacy.agentAccess??{});if(p.length!==d.size||p.some(u=>!d.has(u))){let u="S4_LEGACY_AGENT_ACCESS_COMPLETE";throw new q("LINEAGE_INVALID",`Lineage compatibility failed: ${u}`,[u])}}for(let a=0;a<o.length-1;a+=1){if(o.slice(a,-1).some(u=>u.compat==="break"))continue;let p=jo(o[a].definition,t);if(p.length>0)throw new q("LINEAGE_INVALID",`Lineage compatibility failed: ${p.join(", ")}`,p)}return Object.freeze({entries:Object.freeze(o),current:t})}var q,Nt,Oo,So,Uo,Ro,ko,Co,Cn=O(()=>{I();Te();ce();q=class extends Error{constructor(t,i=t,o=[]){super(i);this.code=t;this.violations=o;}code;violations;name="UiDefinitionLineageError"},Nt=/^[0-9a-f]{64}$/,Oo=["version","hash","definition"],So=["sourceHash","compat"],Uo=["id","version","actions"],Ro=["sourceHash","usage","detailPanel","displayModes","renderer","surfaces","stateProjection","dataPaths","summaryProjection","legacy"],ko=["capabilities"],Co=["inputKeys","dataInputs","confirmation","resultProjection","content","env"];});var Lt,Ot,St=O(()=>{I();Lt=["crewx_app_terminal_connect","crewx_app_html_viewer_open"],Ot=["crewx_listWorkspaces","crewx_queryAgent","crewx_executeAgent","crewx_getTaskResult","crewx_listTasks","crewx_listAgents","callBrowser","openTab","listTabs","closeTab"];});var Ut=O(()=>{I();Te();Qe();});function wn(e,n=0){try{let t=ee(e,n);return t.type!==void 0&&t.type!=="object"&&qe("TOOL_INVALID","MCP App inputSchema must describe an object"),t}catch(t){if(t instanceof oe)throw t;qe("TOOL_INVALID","MCP App inputSchema must be projection-safe JSON");}}function Rt(e){if(e.length===0)return wn({type:"object",properties:{},additionalProperties:false});let n=e.map(i=>i.actionId),t=new Map;for(let i of e)t.set(i.actionId,wn(i.inputSchema));return wn(Bo(n,t),Fo)}function Bo(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 ke,Fo,xn=O(()=>{I();Dt();Te();ce();Qe();Ze();Cn();St();Ut();ke=8*1024*1024,new Set(Lt),new Set(Ot),Fo=4;});function re(e){let n=typeof e=="object"&&e!==null&&"code"in e?String(e.code):"";return n==="ENOENT"?new A("NOT_FOUND"):n==="ELOOP"?new A("PATH_ESCAPED"):n==="EFBIG"||n==="EOVERFLOW"?new A("LIMIT_EXCEEDED"):n==="EACCES"||n==="EPERM"||n==="ENOTDIR"?new A("READ_DENIED"):new A("READ_DENIED")}function $o(e){if(typeof e!="string"||e.length===0||!path.isAbsolute(e))throw new A("READ_DENIED")}function kt(e){if(typeof e!="string"||path.isAbsolute(e)||/[\\\u0000]/.test(e))throw new A("PATH_ESCAPED");if(e==="")return [];let n=e.split("/");if(n.some(t=>t.length===0||t==="."||t===".."))throw new A("PATH_ESCAPED");return n}function en(e,n){let t=path.relative(e,n);return t===""||t!==".."&&!t.startsWith(`..${path.sep}`)&&!path.isAbsolute(t)}function nn(e){return {dev:e.dev,ino:e.ino,size:e.size,mtimeNs:e.mtimeNs,ctimeNs:e.ctimeNs}}function Vn(e,n){return e.dev===n.dev&&e.ino===n.ino}function Vt(e,n){return Vn(e,n)&&e.size===n.size&&e.mtimeNs===n.mtimeNs&&e.ctimeNs===n.ctimeNs}async function Ct(e){$o(e);let n,t;try{n=await promises.realpath(e),t=await promises.stat(n,{bigint:!0});}catch(i){throw re(i)}if(!t.isDirectory())throw new A("READ_DENIED");return {realRoot:n,identity:nn(t)}}async function Xo(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 A("READ_DENIED")}catch(r){throw r instanceof A?r:re(r)}if(!en(n,o))throw new A("PATH_ESCAPED");return o}async function wt(e,n,t,i){let o,r,s;try{o=await promises.lstat(e,{bigint:!0}),r=await promises.realpath(e),s=await promises.stat(r,{bigint:!0});}catch(a){throw re(a)}if(!en(n,r)||t!==void 0&&!en(t,r))throw new A("PATH_ESCAPED");if(!o.isFile()||!s.isFile())throw new A("READ_DENIED");if(!Vn(i,o)||!Vn(i,s)||i.dev!==s.dev)throw new A("PATH_ESCAPED")}async function jn(e,n){let t,i;try{t=await promises.realpath(e),i=await promises.stat(t,{bigint:!0});}catch{throw new A("PATH_ESCAPED")}if(t!==n.realRoot||!Vt(n.identity,nn(i)))throw new A("PATH_ESCAPED")}function Yo(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 A,vt,Jo,Wo,be,on,Ft,Bt,Bn=O(()=>{I();A=class extends Error{constructor(t){super(t);this.code=t;}code;name="AppDiscoveryFsError"},vt=fs.constants.O_NOFOLLOW,Jo=fs.constants.O_NONBLOCK,Wo=fs.constants.O_RDONLY|(vt??0)|(Jo??0);be=class{async listDirectory(n,t){let i=kt(t),o=await Ct(n),r=path.resolve(n,...i),s,a;try{s=await promises.realpath(r),a=await promises.stat(s,{bigint:!0});}catch(d){let p=re(d);if(p.code==="NOT_FOUND")return [];throw p}if(!en(o.realRoot,s)||!a.isDirectory())throw new A("PATH_ESCAPED");try{let d=await promises.readdir(s,{withFileTypes:!0,encoding:"utf8"});return await jn(n,o),d.map(Yo)}catch(d){let p=re(d);if(p.code==="NOT_FOUND")return [];throw p}}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 A("READ_DENIED");if(vt===void 0)throw new A("UNSUPPORTED");let o=kt(t),r=await Ct(n),s=path.resolve(n,...o),a=path.relative(n,s);if(a===".."||a.startsWith(`..${path.sep}`)||path.isAbsolute(a))throw new A("PATH_ESCAPED");let d;try{d=await promises.open(s,Wo);}catch(p){throw re(p)}try{let p;try{let f=await d.stat({bigint:!0});p=nn(f);}catch(f){throw re(f)}if(p.size>BigInt(i))throw new A("LIMIT_EXCEEDED");if(p.size>BigInt(Number.MAX_SAFE_INTEGER))throw new A("LIMIT_EXCEEDED");await jn(n,r);let u=await Xo(n,r.realRoot,o);await wt(s,r.realRoot,u,p);let y=new Uint8Array(new ArrayBuffer(Number(p.size))),b=0;for(;b<y.byteLength;){let f;try{f=(await d.read(y,b,y.byteLength-b,b)).bytesRead;}catch(T){throw re(T)}if(f<=0)throw new A("IDENTITY_CHANGED");b+=f;}let g;try{let f=await d.stat({bigint:!0});g=nn(f);}catch(f){throw re(f)}if(!Vt(p,g))throw new A("IDENTITY_CHANGED");return await wt(s,r.realRoot,u,g),await jn(n,r),new Uint8Array(y)}finally{await d.close().catch(()=>{});}}async readFileVerified(n,t,i){return this.readVerifiedFile(n,t,i)}},on=new be,Ft=on,Bt=be;});function xe(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"&&ne.test(e)?e:void 0}function tr(e){return e.length>0&&e!=="."&&e!==".."&&!/[\\/\u0000]/.test(e)}function fe(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 s=t[r]-i[r];if(s!==0)return s}return t.byteLength-i.byteLength}function ir(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 or(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 rr(e){return er.decode(e)}function sr(e){return JSON.parse(rr(e))}function Gt(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 ar(e){if(e instanceof A)return Gt(e.code);if(e!==null&&typeof e=="object"&&"code"in e){let n=e.code;if(typeof n=="string")return Gt(n)}}function se(e,n){let t=n();return Number.isFinite(t)&&Number.isFinite(e)&&t-e<=5e3}function cr(e){if(typeof e.readVerifiedFile=="function")return e.readVerifiedFile;if(typeof e.readFileVerified=="function")return e.readFileVerified}function pr(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 Jt(e,n,t,i){let o=cr(e);if(!o)throw new A("READ_DENIED");return or(await o.call(e,n,t,i))}async function Gn(e,n,t){let i=pr(e);if(!i)throw new A("READ_DENIED");let o=await i.call(e,n,t);if(!Array.isArray(o))throw new A("READ_DENIED");return o.map(ir).filter(r=>r!==null)}function dr(e,n,t,i){return Object.freeze({code:e,...{},source:n,relativePath:t})}function lr(e){if(!xe(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 s=0;s<i.length;s+=1){let a=i[s];if(typeof a!="string"||a.length===0)throw new TypeError("productBundle.reservedIds."+o+" must contain non-empty strings");r.push(a);}return Object.freeze([...new Set(r)].sort(fe))};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 ur(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 je(e){return Object.freeze({appIds:Object.freeze([...new Set(e.map(n=>n.appId))].sort(fe)),definitionIds:Object.freeze([...new Set(e.map(n=>n.definition.id))].sort(fe))})}function rn(e,n){let t=Object.keys(e).sort(fe),i=[...n].sort(fe);return t.length===i.length&&t.every((o,r)=>o===i[r])}function Wt(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 fr(e){let n;try{n=sr(e);}catch{return}if(!xe(n)||!rn(n,["version","packages"])||n.version!==1||!Array.isArray(n.packages)||n.packages.length>Jn)return;let t=new Set,i=new Set,o=0,r=[];for(let s of n.packages){if(!xe(s))return;let a=["packageDir","appId","definition","files"],d=Object.hasOwn(s,"lineage"),p=Object.hasOwn(s,"launcher"),u=[...d?["lineage"]:[],...p?["launcher"]:[]];if(!rn(s,[...a,...u])||p&&s.launcher!==false)return;let y=Wt(s.packageDir),b=zt(s.appId);if(!y||y.length!==2||y[0]!=="apps"||!tr(y[1])||!b||t.has(s.packageDir)||!xe(s.definition)||!rn(s.definition,["id","version","hash"]))return;let g=zt(s.definition.id),f=s.definition.version,T=s.definition.hash;if(!g||!Number.isSafeInteger(f)||f<1||typeof T!="string"||!zn.test(T)||!Array.isArray(s.files)||s.files.length<2||s.files.length>Wn)return;let k=new Set,j=[];for(let m of s.files){if(!xe(m)||!rn(m,["path","sha256"]))return;let N=Wt(m.path);if(!N||typeof m.sha256!="string"||!zn.test(m.sha256))return;let S=N.join("/"),B=`${s.packageDir}/${S}`;if(k.has(S)||i.has(B))return;k.add(S),i.add(B),j.push(Object.freeze({path:S,sha256:m.sha256}));}if(!k.has("ui-plugin.json")||!k.has("ui/index.html")||(o+=j.length,o>qo))return;t.add(s.packageDir),r.push(Object.freeze({packageDir:s.packageDir,...p?{launcher:false}:{},appId:b,definition:Object.freeze({id:g,version:f,hash:T}),lineage:Array.isArray(s.lineage)?s.lineage:[],files:Object.freeze(j.sort((m,N)=>fe(m.path,N.path)))}));}return Object.freeze({version:1,packages:Object.freeze(r)})}function ue(e){let n=ar(e);return n==="PATH_ESCAPED"||n==="IDENTITY_CHANGED"||n==="TOCTOU"?"PATH_ESCAPED":n==="LIMIT_EXCEEDED"?"LIMIT_EXCEEDED":"BUNDLE_INTEGRITY"}async function yr(e,n,t,i,o){let r=[],s=async(a,d)=>{if(!se(i,o))throw new A("LIMIT_EXCEEDED");if(d>2)throw new A("LIMIT_EXCEEDED");let p=await Gn(e,n,a);for(let u of p){if(typeof u.name!="string"||u.name.length===0||u.name==="."||u.name===".."||/[\\/\u0000]/.test(u.name))throw new A("PATH_ESCAPED");let y=`${a}/${u.name}`;if(u.kind==="file"){if(r.push(y.slice(t.length+1)),r.length>Wn)throw new A("LIMIT_EXCEEDED")}else if(u.kind==="directory")await s(y,d+1);else throw u.kind==="symlink"?new A("PATH_ESCAPED"):new A("READ_DENIED")}};return await s(t,0),r.sort(fe)}function Ar(e){return e==="ui-plugin.json"?262144:e==="ui/index.html"?ke:e==="ui/state.json"?65536:e.startsWith("ui/assets/")?Qo:Zo}async function $t(e,n,t,i){if(e===void 0)return {packages:[],diagnostics:[],incomplete:false,reservedIds:nr};let o=lr(e.reservedIds),r=[],s=(l,P,V)=>dr(l,"bundled",P),a=(l=[],P=false,V)=>({...V===void 0?{}:{indexHash:V},packages:l,diagnostics:r,incomplete:P,reservedIds:o});if(typeof e.root!="string"||e.root.length===0||typeof e.expectedIndexHash!="string"||!zn.test(e.expectedIndexHash))return r.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a();let d;try{d=await Jt(n,e.root,"bundle-index.json",Ko);}catch(l){return r.push(s(ue(l),"bundle-index.json")),a()}let p=crypto.createHash("sha256").update(d).digest("hex");if(p!==e.expectedIndexHash)return r.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a();let u=fr(d);if(u===void 0)return r.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a();if(!ur(je(u.packages),o))return r.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a([],false,p);if(!se(t,i))return r.push(s("LIMIT_EXCEEDED","bundle-index.json")),a(u.packages.map(l=>({indexEntry:l,failureCode:"LIMIT_EXCEEDED"})),true,p);let y;try{y=await Gn(n,e.root,"");}catch(l){return r.push(s(ue(l),"bundle-index.json")),a(u.packages.map(P=>({indexEntry:P,failureCode:ue(l)})),false,p)}if(!se(t,i))return r.push(s("LIMIT_EXCEEDED","bundle-index.json")),a(u.packages.map(l=>({indexEntry:l,failureCode:"LIMIT_EXCEEDED"})),true,p);let b=y.find(l=>l.name==="bundle-index.json"&&l.kind==="file"),g=y.find(l=>l.name==="apps"&&l.kind==="directory"),f=l=>u.packages.map(P=>({indexEntry:P,failureCode:l}));if(!b)return r.push(s("BUNDLE_INTEGRITY","bundle-index.json")),a(f("BUNDLE_INTEGRITY"),false,p);let T=y.filter(l=>l.name!=="bundle-index.json"&&l.name!=="apps");if(T.length>0){let l=T.some(P=>P.kind==="symlink")?"PATH_ESCAPED":"BUNDLE_INTEGRITY";return r.push(s(l,"bundle-index.json")),a(f("BUNDLE_INTEGRITY"),false,p)}if(y.some(l=>l.name==="apps"&&l.kind!=="directory"))return r.push(s("PATH_ESCAPED","apps")),a(f("PATH_ESCAPED"),false,p);let k=[];if(g)try{k=await Gn(n,e.root,"apps");}catch(l){return r.push(s(ue(l),"apps")),a(f(ue(l)),false,p)}if(!se(t,i)||k.length>Jn)return r.push(s("LIMIT_EXCEEDED","apps")),a(f("LIMIT_EXCEEDED"),true,p);let j=new Map(u.packages.map(l=>[l.packageDir.slice(5),l])),m=k.filter(l=>!j.has(l.name));for(let l of m)r.push(s(l.kind==="symlink"?"PATH_ESCAPED":"BUNDLE_INTEGRITY",`apps/${l.name}`));if(m.length>0){let l=m.some(P=>P.kind==="symlink")?"PATH_ESCAPED":"BUNDLE_INTEGRITY";return a(f(l),false,p)}let N=new Set,S=new Map,B=new Map;for(let l of u.packages){let P=S.get(l.appId)??[];P.push(l),S.set(l.appId,P);let V=`${l.definition.id}\0${String(l.definition.version)}`,h=B.get(V)??[];h.push(l),B.set(V,h);}for(let l of [...S.values(),...B.values()])if(l.length>1)for(let P of l)N.add(P);let x=[],X=d.byteLength,M=false;for(let l of u.packages){if(!se(t,i)){M=true,x.push({indexEntry:l,failureCode:"LIMIT_EXCEEDED"});continue}let P;try{let L=l.lineage[l.lineage.length-1];if(!L)throw new q("LINEAGE_INVALID","Definition lineage is missing");if(L.definition.id!==l.definition.id||L.version!==l.definition.version||L.hash!==l.definition.hash)throw new q("LINEAGE_STALE","Last lineage generation does not match bundle identity");P=kn(l.lineage,{...L.definition,hash:L.hash}).entries;}catch(L){let Z=L instanceof q?L.code:"LINEAGE_INVALID";r.push(s(Z,l.packageDir)),x.push({indexEntry:l,failureCode:Z});continue}let V=k.find(L=>L.name===l.packageDir.slice(5));if(!g||!V){x.push({indexEntry:l,failureCode:"BUNDLE_INTEGRITY"});continue}if(V.kind!=="directory"){x.push({indexEntry:l,failureCode:V.kind==="symlink"?"PATH_ESCAPED":"BUNDLE_INTEGRITY"});continue}let h;try{let L=await yr(n,e.root,l.packageDir,t,i);if(!se(t,i)){M=!0,x.push({indexEntry:l,failureCode:"LIMIT_EXCEEDED"});continue}let Z=l.files.map(Y=>Y.path);if(L.length!==Z.length||L.some((Y,pe)=>Y!==Z[pe])){x.push({indexEntry:l,failureCode:"BUNDLE_INTEGRITY"});continue}h=new Map;let Q;for(let Y of l.files){if(!se(t,i)){Q="LIMIT_EXCEEDED",M=!0;break}if(X>=Hn){Q="LIMIT_EXCEEDED";break}let pe;try{pe=await Jt(n,e.root,`${l.packageDir}/${Y.path}`,Ar(Y.path));}catch(fi){Q=ue(fi);break}if(!se(t,i)){Q="LIMIT_EXCEEDED",M=!0;break}if(X+pe.byteLength>Hn){X=Hn,Q="LIMIT_EXCEEDED";break}if(X+=pe.byteLength,crypto.createHash("sha256").update(pe).digest("hex")!==Y.sha256){Q="BUNDLE_INTEGRITY";break}h.set(Y.path,pe);}if(Q!==void 0){x.push({indexEntry:l,failureCode:Q});continue}}catch(L){se(t,i)||(M=true),x.push({indexEntry:l,failureCode:ue(L)});continue}x.push({indexEntry:l,lineage:P,files:h,...N.has(l)?{failureCode:"DUPLICATE_ID"}:{}});}return a(x,M,p)}var Ko,Jn,Wn,qo,Zo,Qo,Hn,zn,er,nr,$n=O(()=>{I();Cn();he();xn();Bn();Ko=256*1024,Jn=64,Wn=128,qo=Jn*Wn,Zo=2*1024*1024,Qo=8*1024*1024,Hn=32*1024*1024,zn=/^[0-9a-f]{64}$/,er=new TextDecoder("utf-8",{fatal:true}),nr=Object.freeze({appIds:Object.freeze([]),definitionIds:Object.freeze([])});});var si={};Ai(si,{AppDiscoveryFsError:()=>A,LOCAL_APP_TOOL_PREFIX:()=>mr,MCP_APP_WORKSPACE_TOOL_PREFIX:()=>hr,NodeAppDiscoveryFs:()=>be,NodeAppDiscoveryFsAdapter:()=>Bt,WORKSPACE_APP_TOOL_PREFIX:()=>Me,defaultAppDiscoveryFs:()=>on,defaultNodeAppDiscoveryFs:()=>Ft,deriveWorkspaceAppToolName:()=>Tr,deriveWorkspaceAppToolNames:()=>qn,discoverWorkspaceAppCandidates:()=>Wr,discoverWorkspaceApps:()=>Qn,isWorkspacePackage:()=>gr,productAppBundleReservations:()=>je,scanWorkspaceApps:()=>$r});function gr(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 qn(e){if(typeof e!="string"||!ne.test(e))throw new TypeError("pluginId must be a safe UI plugin identifier");let n=`${Me}${e}`.length+7<=128?e:`hash_${crypto.createHash("sha256").update(e,"utf8").digest("hex")}`;return {read:`${Me}${n}_read`,action:`${Me}${n}_action`}}function Tr(e,n="read"){let t=qn(e);return n==="read"?t.read:t.action}function ve(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 Yt(e){return typeof e=="string"&&ne.test(e)?e:void 0}function Dr(e,n){return n.length===0||n==="."||n===".."||/[\\/\u0000]/.test(n)?e==="skills"?"skills":"apps":`${e==="skills"?"skills":"apps"}/${n}`}function Er(e){return e.length>0&&e!=="."&&e!==".."&&!/[\\/\u0000]/.test(e)}function ni(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 s=t[r]-i[r];if(s!==0)return s}return t.byteLength-i.byteLength}function Nr(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 br(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 ti(e){return _r.decode(e)}function ii(e){return JSON.parse(ti(e))}function Pr(e){if(!ve(e))return;let n=Yt(e.pluginId);if(!n)return;let t=Yt(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 Mr(e){let n=ii(e);return {value:n,identity:Pr(n)}}function Zn(e,n,t,i){let o={code:e,...i===void 0?{}:{pluginId:i},source:n,relativePath:t};return Object.freeze(o)}function Kt(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 ye(e){if(e instanceof A)return Kt(e.code);if(e!==null&&typeof e=="object"&&"code"in e){let n=e.code;if(typeof n=="string")return Kt(n)}}function Ve(e,n){return e==="PATH_ESCAPED"||e==="IDENTITY_CHANGED"||e==="TOCTOU"?"PATH_ESCAPED":e==="LIMIT_EXCEEDED"?"LIMIT_EXCEEDED":n==="manifest"&&e==="NOT_FOUND"?"MANIFEST_MISSING":n==="entry"?"ENTRY_INVALID":n==="initial"?"INITIAL_STATE_INVALID":"MANIFEST_INVALID"}function qt(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 oi("UiPluginValidationError",e.code)}}function oi(e,n){throw new Error(`Unmapped ${e} code: ${String(n)}`)}function Xn(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 oi("McpAppContractError",e)}}function Yn(e,n){let t=n();return Number.isFinite(t)&&Number.isFinite(e)&&t-e<=5e3}function Lr(e){return {pluginId:e.appId,definitionKey:`${e.definition.id}\0${String(e.definition.version)}`}}function Or(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(ve(o)){let r=o.bin,s=typeof r=="string"?r:ve(r)?Object.values(r).find(a=>typeof a=="string"):void 0;for(let a of [s,o.main]){if(typeof a!="string")continue;let d=Sr(a);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 Sr(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 Ur(){return globalThis.performance?.now()??Date.now()}function Pe(e){if(e===null||typeof e!="object"||Object.isFrozen(e))return e;for(let n of Object.values(e))Pe(n);return Object.freeze(e)}function Zt(e){return Object.freeze(Array.from(e))}async function Kn(e,n,t,i){if(n.pinnedFiles!==void 0){let o=n.pinnedFiles.get(t);if(o===void 0)throw new A("NOT_FOUND");if(o.byteLength>i)throw new A("LIMIT_EXCEEDED");return new Uint8Array(o)}return ri(e,n.root,`${n.relativePath}/${t}`,i)}function Rr(e,n,t){let i=crypto.createHash("sha256"),o=new TextEncoder().encode(G(e)),r=s=>{let a=new Uint8Array(8);new DataView(a.buffer).setBigUint64(0,BigInt(s)),i.update(a);};return r(o.byteLength),i.update(o),r(n.byteLength),i.update(n),r(t.byteLength),i.update(t),i.digest("hex")}function kr(e,n){let t={...e.definition,sourceHash:n},i;try{i=te(t);}catch(r){throw r instanceof _&&r.code==="INPUT_INVALID"?new W("MANIFEST_INVALID","normalized definition is invalid"):r}let o={...t,hash:i};try{ie(o);}catch{throw new W("MANIFEST_INVALID","normalized definition is invalid")}return o}function Cr(e){return e.actions.some(n=>n.backend.type==="core"&&n.backend.handler!=="state.set")}function wr(e){if(typeof e.readVerifiedFile=="function")return e.readVerifiedFile;if(typeof e.readFileVerified=="function")return e.readFileVerified}function xr(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 ri(e,n,t,i){let o=wr(e);if(!o)throw new A("READ_DENIED");return br(await o.call(e,n,t,i))}async function jr(e,n,t){let i=xr(e);if(!i)throw new A("READ_DENIED");let o=await i.call(e,n,t);if(!Array.isArray(o))throw new A("READ_DENIED");return o.map(Nr).filter(r=>r!==null)}function vr(e){let n=[];for(let t of [e.reserved,e.builtin])t&&n.push(t);return e.builtins&&"listMcpApps"in e.builtins?n.push(Qt(e.builtins)):e.builtins&&n.push(e.builtins),e.builtinCatalog&&n.push(Qt(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 Qt(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 ae(e,n){e.diagnostic||(e.diagnostic=Zn(n,e.source,e.relativePath,e.identity?.pluginId));}function Vr(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(s=>s.provenance!==void 0);if(o.length>0){for(let s of i)s.provenance===void 0&&ae(s,"RESERVED_ID");if(o.length>1)for(let s of o)ae(s,"DUPLICATE_ID");continue}let r=i.filter(s=>s.source==="apps");if(r.length>1){for(let s of r)ae(s,"DUPLICATE_ID");for(let s of i.filter(a=>a.source==="skills"))ae(s,"DUPLICATE_ID");}else for(let s of i.filter(a=>a.source==="skills"))ae(s,"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)ae(o,"DUPLICATE_ID");}function Fr(e,n,t){let i=new Set,o=new Set,r=new Set,s=new Set(t.appIds),a=new Set(t.definitionIds);for(let d of vr(n)){for(let p of d.appIds??[])typeof p=="string"&&i.add(p);for(let p of d.definitionIds??[])typeof p=="string"&&o.add(p);for(let p of d.toolNames??[])typeof p=="string"&&r.add(p);}for(let d of e){let p=d.candidate;if(!p)continue;if(i.has(p.pluginId)||o.has(p.definitionId)){ae(d,"RESERVED_ID");continue}if(d.provenance===void 0&&(s.has(p.pluginId)||a.has(p.definitionId))){ae(d,"RESERVED_ID");continue}[p.toolNames.read,p.toolNames.action].filter(y=>y!==void 0).some(y=>r.has(y))&&ae(d,"DUPLICATE_ID");}}function Br(e){return [...e].sort((n,t)=>{let i=Xt.indexOf(n.source)-Xt.indexOf(t.source);return i!==0?i:ni(n.relativePath,t.relativePath)})}function E(e,n){e.diagnostic=Zn(n,e.source,e.relativePath,e.identity?.pluginId);}async function ei(e,n,t){if(t.byteLength>262144){E(n,"LIMIT_EXCEEDED");return}let i;try{i=Mr(t);}catch{E(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)}`){E(n,"BUNDLE_INTEGRITY");return}if(ve(i.value)&&i.value.builtinOnly===true){E(n,"RESERVED_ID");return}let o;try{let h=Xe(i.value,{mode:"local"});if(h.manifestVersion!==2)throw new W("MANIFEST_INVALID","workspace App requires v2");o=h;}catch(h){if(h instanceof W){E(n,qt(h));return}if(h instanceof oe){E(n,Xn(h.code));return}if(ve(h)&&typeof h.code=="string"){E(n,Xn(h.code));return}throw h}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{Rt(o.actions.map(h=>({actionId:h.actionId,inputSchema:h.inputSchema})));}catch(h){if(h instanceof oe){E(n,Xn(h.code));return}throw h}let s;try{s=await Kn(e,n,"ui/index.html",ke);}catch(h){E(n,Ve(ye(h),"entry"));return}if(s.byteLength>ke){E(n,"LIMIT_EXCEEDED");return}let a;try{a=ti(s);}catch{E(n,"ENTRY_INVALID");return}if(s.byteLength===0||a.length===0){E(n,"ENTRY_INVALID");return}let d=crypto.createHash("sha256").update(s).digest("hex");if(o.entryHash!==void 0&&o.entryHash!==d){E(n,"ENTRY_INVALID");return}let p={},u,y;if(o.initialState!==void 0){try{u=await Kn(e,n,"ui/state.json",65536);}catch(h){E(n,Ve(ye(h),"initial"));return}if(u.byteLength>65536){E(n,"LIMIT_EXCEEDED");return}try{let h=ii(u),L=o.dataPaths??[],Z=Sn(h,L);p=ee(Z,0,L),ge(p);}catch{E(n,"INITIAL_STATE_INVALID");return}if(y=crypto.createHash("sha256").update(u).digest("hex"),o.initialState.hash!==void 0&&o.initialState.hash!==y){E(n,"INITIAL_STATE_INVALID");return}}let b={...o,entryHash:d,...o.initialState===void 0?{}:{initialState:{path:"ui/state.json",hash:y}}},g=Un(b),f=Rr(b,s,u??new Uint8Array),T;try{T=kr(g,f);}catch(h){if(h instanceof W){E(n,qt(h));return}throw h}let k;if(n.bundleLineage!==void 0){let h=n.bundleLineage[n.bundleLineage.length-1];if(!h){E(n,"LINEAGE_INVALID");return}let{legacy:L,...Z}=h.definition,{hash:Q,...Y}=T;if(G(Z)!==G(Y)){E(n,"LINEAGE_STALE");return}if(L!==void 0&&(T={...T,legacy:L}),L!==void 0)try{T={...T,hash:te(T)},ie(T);}catch{E(n,"LINEAGE_INVALID");return}k=n.bundleLineage;}if(n.bundleIdentity!==void 0&&n.bundleIdentity.appId!==o.pluginId){E(n,"BUNDLE_INTEGRITY");return}if(n.bundleIdentity!==void 0&&(n.bundleIdentity.definitionId!==T.id||n.bundleIdentity.version!==T.version||n.bundleIdentity.definitionHash!==T.hash)){E(n,"LINEAGE_STALE");return}let j=qn(o.pluginId),m=o.actions.length===0?{read:j.read}:j,N=Pe(g),S=Pe(b),B=Pe(T),x=Pe({...g.handlers}),X=Zt(s),M=u===void 0?void 0:Zt(u),l=Object.freeze({...n.provenance===void 0?{}:{provenance:n.provenance},entry:Object.freeze({path:"ui/index.html",hash:d,bytes:X}),...M===void 0?{}:{initialState:Object.freeze({path:"ui/state.json",hash:y,bytes:M})}}),P={appId:o.pluginId,pluginId:o.pluginId,definitionId:o.definitionId,version:o.version,relativePath:n.relativePath,manifest:S,normalized:N,name:o.name,description:o.description,...o.icon===void 0?{}:{icon:o.icon},...o.tone===void 0?{}:{tone:o.tone},definition:B,handlers:x,resources:l,html:a,entryBytes:X,entryHash:d,initialState:Pe(p),...M===void 0?{}:{initialStateBytes:M},...y===void 0?{}:{initialStateHash:y},sourceHash:f,toolNames:Object.freeze(m)},V=n.provenance===void 0?{...P,source:n.source}:{...P,provenance:n.provenance,lineage:k??[]};n.candidate=Object.freeze(V),Cr(o)&&E(n,"EXEC_DENIED");}async function Hr(e,n){try{return await Kn(e,n,"ui-plugin.json",262144)}catch(t){if(ye(t)==="NOT_FOUND")return;E(n,Ve(ye(t),"manifest"));return}}function zr(e,n,t,i=Ir,o=false){let r=Br(e);Vr(r);let s=Object.freeze(r.filter(u=>u.candidate!==void 0&&u.diagnostic===void 0).map(u=>u.candidate)),a=Object.freeze(r.filter(u=>u.diagnostic!==void 0).map(u=>u.diagnostic)),d=o?Object.freeze({...t===void 0?{}:{indexHash:t},diagnostics:Object.freeze(a.filter(u=>u.source==="bundled").map(u=>Object.freeze({...u}))),reservedAppIds:Object.freeze([...i.appIds]),reservedDefinitionIds:Object.freeze([...i.definitionIds])}):void 0,p={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(p,"candidates",{configurable:false,enumerable:false,get:()=>s}),Object.freeze(p)}function Gr(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 Jr(e,n){if(Gr(e))return {fs:e,options:n??{}};let t=e??n??{};return {fs:t.filesystem??t.fileSystem??t.fs??on,options:t}}async function Qn(e,n,t){if(typeof e!="string"||e.length===0)throw new TypeError("workspaceRoot must be explicit");let{fs:i,options:o}=Jr(n,t),r=o.clock??Ur,s=r(),a=[],d=0,p,u=await $t(o.productBundle,i,s,r);a.push(...u.diagnostics.map(g=>({source:g.source,root:o.productBundle?.root??e,name:"",relativePath:g.relativePath,diagnostic:g})));let y=u.reservedIds;u.incomplete&&(p="time_limit");for(let g of u.packages){let f=g.indexEntry,T=f.packageDir,k=g.files===void 0?void 0:Or(T,g.files),j=u.indexHash===void 0?void 0:Et(Object.freeze({kind:"bundled",launcher:f.launcher!==false,indexHash:u.indexHash,packageDir:T,appId:f.appId,definitionId:f.definition.id,version:f.definition.version,definitionHash:f.definition.hash,files:f.files}),k),m={source:"bundled",root:o.productBundle?.root??e,name:T.slice(5),relativePath:T,...j===void 0?{}:{provenance:j},...g.files===void 0?{}:{pinnedFiles:g.files},...g.lineage===void 0?{}:{bundleLineage:g.lineage},bundleIdentity:{appId:f.appId,definitionId:f.definition.id,version:f.definition.version,definitionHash:f.definition.hash},identity:Lr(f)};if(a.push(m),d+=1,g.failureCode!==void 0){E(m,g.failureCode);continue}let N=g.files?.get("ui-plugin.json");if(N===void 0){E(m,"BUNDLE_INTEGRITY");continue}await ei(i,m,N),m.candidate!==void 0&&m.diagnostic===void 0&&d<64&&!Yn(s,r)&&(p="time_limit");}let b=[{source:"apps",directory:"apps"},{source:"skills",directory:"skills"}];for(let g of b){let{source:f,directory:T}=g,k;try{k=await jr(i,e,T);}catch(m){if(ye(m)==="NOT_FOUND")continue;a.push({source:f,root:e,name:"",relativePath:f,diagnostic:Zn(Ve(ye(m),"manifest"),f,f)});continue}let j=k.filter(m=>m.kind==="directory"||m.kind==="symlink").filter(m=>Er(m.name)).map(m=>({source:f,root:e,name:m.name,relativePath:Dr(f,m.name)})).sort((m,N)=>ni(m.relativePath,N.relativePath));for(let m of j){let N={...m};a.push(N);let S;if(f==="skills"&&(S=await Hr(i,N),S===void 0))continue;if(d>=64){E(N,"LIMIT_EXCEEDED");continue}if(m.relativePath.split("/").length-1>2){E(N,"LIMIT_EXCEEDED");continue}if(p!==void 0||!Yn(s,r)){E(N,"LIMIT_EXCEEDED"),p="time_limit";continue}if(d+=1,S===void 0)try{S=await ri(i,N.root,`${N.relativePath}/ui-plugin.json`,262144);}catch(x){E(N,Ve(ye(x),"manifest"));continue}await ei(i,N,S),N.diagnostic===void 0&&d<64&&!Yn(s,r)&&(p="time_limit");}}return Fr(a,o,y),zr(a,p,u.indexHash,y,o.productBundle!==void 0)}var Ir,Me,mr,hr,Xt,_r,Wr,$r,ai=O(()=>{I();Te();Fe();ce();Tt();he();xn();Ze();Bn();Qe();$n();$n();Ir=je([]);Me="crewx_local_app_",mr=Me,hr=Me;Xt=["bundled","apps","skills"],_r=new TextDecoder("utf-8",{fatal:true});Wr=Qn,$r=Qn;});I();var ci="SKILL.md",Zr=/^---\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 Qr(e){return e.isDirectory()||e.isSymbolicLink()}function ui(e){try{return fs.existsSync(e)&&fs.statSync(e).isDirectory()}catch{return false}}var es=["index.js","main.js"];function Dc(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(s=>typeof s=="string");if(r){let s=path.resolve(e,r);if(fs.existsSync(s))return s}}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 es){let r=path.resolve(e,o);if(fs.existsSync(r))return r}}function ns(e){let n;try{n=fs.readFileSync(e,"utf8");}catch{return {frontmatter:{},readable:false,valid:false,hasFrontmatter:false}}let t=n.match(Zr);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 ts(e){return [path.join(e,ci),path.join(e,"skill",ci)]}function an(e,n){if(!ui(e))return null;for(let t of ts(e)){if(!fs.existsSync(t))continue;let o=ns(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 et(e){try{return fs.readdirSync(e,{withFileTypes:!0}).filter(Qr)}catch{return []}}function is(e){return e.length===0||/[\\\u0000]/.test(e)?false:e.split("/").every(n=>n.length>0&&n!=="."&&n!=="..")}function di(e,n,t){!e||n.has(e.name)||(n.add(e.name),t.push(e));}function cn(e){let n=[],t=new Set;for(let i of e)if(ui(i))for(let o of et(i)){if(o.name.startsWith("@")){let r=path.join(i,o.name);for(let s of et(r))di(an(path.join(r,s.name),s.name),t,n);continue}di(an(path.join(i,o.name),o.name),t,n);}return n.sort((i,o)=>i.name.localeCompare(o.name))}function os(e,n){if(!is(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 et(i)){if(!r.name.startsWith("@"))continue;let s=an(path.join(i,r.name,e),e);if(s)return s}}let t=cn(n).find(i=>i.name===e);if(t)return t;throw new Error(`Skill not found: ${e}`)}async function Ec(e){if(!e||e.root===null)return {skills:[],diagnostics:[]};let{discoverWorkspaceApps:n}=await Promise.resolve().then(()=>(ai(),si)),t=await n(e.root,{productBundle:e}),i=[],o=new Set;for(let r of t.apps){let s=r.provenance?.kind==="bundled"?r.provenance.packageDir:void 0;if(!s)continue;let a=path.join(e.root,...s.split("/"));for(let d of cn([path.dirname(a)]))path.resolve(d.dir)!==path.resolve(a)||o.has(d.name)||(o.add(d.name),i.push(d));for(let d of [path.join(a,"skill"),path.join(a,"skills")])for(let p of cn([d]))o.has(p.name)||(o.add(p.name),i.push(p));}return {skills:i.sort((r,s)=>r.name.localeCompare(s.name)),diagnostics:t.diagnostics.filter(r=>r.source==="bundled")}}var Nc=cn,bc=os;
2
- exports.discover=cn;exports.discoverBundledProductSkills=Ec;exports.discoverSkills=Nc;exports.findEntrypoint=Dc;exports.readSkillFrontmatter=ns;exports.resolve=os;exports.resolveSkill=bc;
1
+ 'use strict';var crypto=require('crypto'),fs=require('fs'),promises=require('fs/promises'),path=require('path'),jsYaml=require('js-yaml');var Oi=Object.defineProperty;var k=(e,n)=>()=>(e&&(n=e(e=0)),n);var Ui=(e,n)=>{for(var t in n)Oi(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 Ri.test(e)||ki.test(e)}function J(){throw new P("INPUT_INVALID","JSON value is not projection-safe")}function vi(e){let n=Object.getPrototypeOf(e);return n===Object.prototype||n===null}function gn(e,n,t,i,o,r){if(n>i&&J(),e===null||typeof e=="string"||typeof e=="boolean")return typeof e=="string"&&(Ci.test(e)||xi.test(e)&&!Fi(o,r)||wi.test(e))&&J(),e;if(typeof e=="number")return Number.isFinite(e)||J(),e;(typeof e!="object"||e===void 0||typeof e=="function"||typeof e=="bigint")&&J();let a=e;t.has(a)&&J(),t.add(a);try{if(Array.isArray(e))return e.map(d=>gn(d,n+1,t,i,o,r));vi(a)||J();let s={};for(let[d,c]of Object.entries(e))hn(d)&&J(),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>Vi)&&J(),(!Array.isArray(t)||t.some(o=>typeof o!="string"))&&J();let i=gn(e,0,new Set,ji+n,[],t);return (i===null||Array.isArray(i)||typeof i!="object")&&J(),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 Fi(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&&J(),n}catch{J();}}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 $(e){return me(mn(e))}function Tn(e){return Buffer.byteLength(e,"utf8")}var Ri,ki,Ci,wi,xi,ji,Vi,pe=k(()=>{_();We();Ri=/(?:proof|token|secret|password|cookie|authorization|private[_-]?key|stack|exception|plugin[_-]?text)/i,ki=/(?:url|uri|endpoint|path|file(?:name|path)?|cwd|shell|directory|dir|folder)$/i,Ci=/<\/?[A-Za-z][^>]*>/,wi=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,xi=/^(?:https?|file|ftp|ws|wss):\/\//i;ji=8,Vi=4;});function he(e){return Bi.has(e)||Hi.test(e)||zi.test(e)}var lt,Bi,Hi,zi,$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"],Bi=new Set(lt),Hi=/(?:proof|token|secret|password|cookie|authorization|private[_-]?key|stack|exception|plugin[_-]?text)/i,zi=/(?: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")&&!Gi(e.in)||Object.hasOwn(e,"out")&&!Ji(e.out))}function Gi(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 Ji(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($(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"||!$i.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=>!Ki(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(Xi(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 Xi(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 Ki(e){return e.length>0&&e.length<=128&&e!=="*"&&e!=="all"&&!/[/*]/.test(e)}var $i,_e=k(()=>{_();pe();We();Ln();$i=/^[0-9a-f]{64}$/;});var yt=k(()=>{_();pe();});var ke,At=k(()=>{_();ke="window";});function p(e,n=e){throw new K(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 Qi.test(e)||!i&&no.test(e)||eo.test(e)||t&&It.test(e)||to.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 X(e,n,t){let i=e[n];return (!Number.isSafeInteger(i)||i<t)&&p("MANIFEST_INVALID"),i}function On(e){return Zi.test(e)||p("MANIFEST_INVALID"),e}function De(e){return qi.test(e)||p("TOKEN_INVALID"),e}function Eo(e){return bt.test(e)||p("MANIFEST_INVALID"),e}function No(e){x(e)||p("MANIFEST_INVALID");let n={};for(let[t,i]of Object.entries(e)){let o=Eo(t);x(i)||p("MANIFEST_INVALID");let r=i.type;if(r==="text"){V(i,["type","maxLength"]),n[o]={type:r,maxLength:X(i,"maxLength",1)};continue}if(r==="text-list"){V(i,["type","max","itemMaxLength"]),n[o]={type:r,max:X(i,"max",0),itemMaxLength:X(i,"itemMaxLength",1)};continue}if(r==="step-list"){V(i,["type","min","max","labelMaxLength","detailMaxLength"]);let a=X(i,"min",0),s=X(i,"max",1);a>s&&p("MANIFEST_INVALID"),n[o]={type:r,min:a,max:s,labelMaxLength:X(i,"labelMaxLength",1),detailMaxLength:X(i,"detailMaxLength",1)};continue}typeof r=="string"&&p("SCHEMA_TYPE_UNSUPPORTED"),p("MANIFEST_INVALID");}return n}function bo(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"),bo(n,i,t),i}function Po(e,n){x(e)||p("MANIFEST_INVALID");let t=e.primitive;switch(typeof t!="string"&&p("MANIFEST_INVALID"),Do.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 Mo(e,n){return Array.isArray(e)||p("MANIFEST_INVALID"),e.map(t=>Po(t,n))}function F(e="v2 manifest exceeds a contract limit"){return p("LIMIT_EXCEEDED",e)}function W(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||ho.test(e)||To.test(e))&&p("MANIFEST_INVALID",`${n} is invalid`),(Qe(e,true,true)||io.test(e)||oo.test(e)||ro.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 Lo(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"||!mo.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 So(e,n){if(e===void 0)return;Array.isArray(e)||p("MANIFEST_INVALID","dataPaths must be an array"),e.length>_o&&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 Oo(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 Uo(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 I=Uo(l,t);s[I]=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=Oo(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 Ro(e){let n=wn(e,0,true);return (n.type!=="object"||!n.properties)&&p("MANIFEST_INVALID","action inputSchema must declare object properties"),n}function ko(e){if(x(e)||p("MANIFEST_INVALID","action backend must be an object"),e.type==="core"){V(e,fo);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,yo,Ao),(!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")?wo(e.env):void 0;return {type:"skill",command:n,...t===void 0?{}:{env:t}}}p("MANIFEST_INVALID","action backend type is unsupported");}function Co(e){x(e)||p("MANIFEST_INVALID","action must be an object"),V(e,po,lo),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=Lo(e.capability),i=e.mutation;typeof i!="boolean"&&p("MANIFEST_INVALID","action mutation must be boolean");let o=Ro(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,I=[];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),I.push(D);r=I;}let a=kn(e.resultProjection),s=ko(e.backend),d;O(e,"content")&&((s.type!=="skill"||!Xe(e.content))&&p("MANIFEST_INVALID","action content declaration is invalid"),d=xo(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 wo(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 xo(e){return Object.freeze({...e.in===void 0?{}:{in:Object.freeze({...e.in})},...e.out===void 0?{}:{out:Object.freeze({...e.out})}})}function vo(e){return x(e)||p("INITIAL_STATE_INVALID","initialState must be an object"),V(e,Io,go),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 jo(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 Vo(e,n){qe(e,new Set,0,true,true),Rn(e),x(e)||p("MANIFEST_INVALID"),V(e,so,co),O(e,"_meta")&&Lt(e._meta),e.manifestVersion!==2&&p("MANIFEST_INVALID");let t;O(e,"runtime")&&(t=jo(e.runtime));let i=Un(e.pluginId,"pluginId"),o=Un(e.definitionId,"definitionId"),r=X(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=vo(e.initialState));let I;O(e,"usage")&&(e.usage!=="card"&&e.usage!=="window"&&p("MANIFEST_INVALID","usage is invalid"),I=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")){((I??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;}(I??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=X(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 g=So(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=Co(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},...I===void 0?{}:{usage:I},...D===void 0?{}:{detailPanel:D},...h===void 0?{}:{displayModes:h},surfaces:S,size:{height:R},stateProjection:C,...j===void 0?{}:{summaryProjection:j},...g===void 0?{}:{dataPaths:g},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")>uo)&&F("_meta exceeds the 4 KiB limit");}function Fo(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))&&W("state contains an unsafe string"),e}if(e===null||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)||W("state contains a non-finite number"),e;(e===void 0||typeof e!="object"||typeof e=="function"||typeof e=="bigint")&&W("state contains a non-JSON value"),t>8&&W("state is too deep"),n.has(e)&&W("state contains a cycle"),n.add(e);try{let a;if(Array.isArray(e))e.length>128&&W("state array is too long"),a=e.map(d=>xn(d,n,t+1,65536,o,r));else {x(e)||W("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&&W("state key is too long"),W("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)&&W("state subtree is too large"),a}finally{n.delete(e);}}function jn(e,n=[]){x(e)||W("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")&&W(),t}function Bo(e,n={}){qe(e),x(e)||p("MANIFEST_INVALID"),V(e,ao),e.manifestVersion!==1&&p("MANIFEST_INVALID");let t=On(ee(e,"pluginId")),i=On(ee(e,"definitionId")),o=X(e,"version",1),r=X(e,"primitiveSet",1),a=n.supportedPrimitiveSet??Yi;(!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=No(e.schema),c=Mo(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 Ho(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?Vo(e,n):Bo(e,n)}function en(e,n={}){try{return Ho(e,n)}catch(t){if(t instanceof K)throw t;return p("MANIFEST_INVALID")}}function Vn(e,n={}){let t=en(e,n);return t.manifestVersion===2?Fo(t):t}var Yi,qi,Zi,bt,Qi,eo,no,to,It,io,oo,ro,ao,so,co,po,lo,uo,fo,yo,Ao,Io,go,mo,ho,To,_o,Do,K,St=k(()=>{_();At();pe();Ln();Te();Yi=1,qi=/^[a-z][a-zA-Z0-9]*(\.[a-zA-Z0-9]+)+$/,Zi=/^[A-Za-z][A-Za-z0-9._-]{0,127}$/,bt=/^[A-Za-z][A-Za-z0-9_-]{0,63}$/,Qi=/<\/?[A-Za-z][^>]*>/,eo=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,no=/^(?:https?|file|ftp|ws|wss):\/\//i,to=/^\s*(?:javascript|data):/i,It=/data:[^,\s]*,/i,io=/(?:https?|file|ftp|ws|wss):\/\//i,oo=/javascript:/i,ro=/(?:^[\s]*|[\s"'(=])(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)(?=[^\s"'<>])[^\s"'<>]*/,ao=["manifestVersion","pluginId","definitionId","version","primitiveSet","activation","schema","layout"],so=["manifestVersion","pluginId","definitionId","version","name","description","entry","surfaces","size","stateProjection","actions"],co=["_meta","icon","tone","entryHash","runtime","initialState","usage","detailPanel","displayModes","summaryProjection","dataPaths","focusedAiDataPaths"],po=["actionId","capability","mutation","inputSchema","resultProjection","backend"],lo=["confirmation","dataInputs","content","_meta"],uo=4*1024,fo=["type","handler"],yo=["type","command"],Ao=["env"],Io=["path"],go=["hash"],mo=/^[0-9a-f]{64}$/,ho=/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/,To=/[\r\n]/,_o=16,Do=["card-shell","meta-banner","heading","labeled-text","step-flow","text-list"],K=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 zo.add(e),n!==void 0&&Go.set(e,n),e}var zo,Go,rn=k(()=>{_();zo=new WeakSet,Go=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 qo(e){throw new ne("LINEAGE_STALE",e)}function vt(e){if(!ve(e)||!Fn(e,$o,Xo)||!ve(e.actions))return H("Lineage definition shape is invalid");for(let n of Object.values(e.actions))if(!ve(n)||!Fn(n,Ko,Yo))return H("Lineage action definition shape is invalid");return e}function Zo(e){if(!ve(e)||!Fn(e,Jo,Wo))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 Qo(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 er(e,n){return $(e)===$(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(Zo),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||!er(a.definition,i))return qo("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=Qo(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,Jo,Wo,$o,Xo,Ko,Yo,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}$/,Jo=["version","hash","definition"],Wo=["sourceHash","compat"],$o=["id","version","actions"],Xo=["sourceHash","usage","detailPanel","displayModes","renderer","surfaces","stateProjection","dataPaths","summaryProjection","legacy"],Ko=["capabilities"],Yo=["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(ir(n,t),tr)}function ir(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,tr,Gn=k(()=>{_();Rt();_e();pe();rn();on();Hn();Ft();Bt();je=8*1024*1024,new Set(jt),new Set(Vt),tr=4;});function zt(){return Object.freeze({[Jn]:{candidates:new Map,assetCatalogs:new Map}})}function or(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=or(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 A("NOT_FOUND"):n==="ELOOP"?new A("PATH_ESCAPED"):n==="EFBIG"||n==="EOVERFLOW"?new A("LIMIT_EXCEEDED"):n==="EACCES"||n==="EPERM"||n==="ENOTDIR"?new A("READ_DENIED"):new A("READ_DENIED")}function cr(e){if(typeof e!="string"||e.length===0||!path.isAbsolute(e))throw new A("READ_DENIED")}function Wn(e){if(typeof e!="string"||path.isAbsolute(e)||/[\\\u0000]/.test(e))throw new A("PATH_ESCAPED");if(e==="")return [];let n=e.split("/");if(n.some(t=>t.length===0||t==="."||t===".."))throw new A("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){cr(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 A("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 A("READ_DENIED")}catch(r){throw r instanceof A?r:G(r)}if(!dn(n,o))throw new A("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 A("PATH_ESCAPED");if(!o.isFile()||!a.isFile())throw new A("READ_DENIED");if(!Yn(i,o)||!Yn(i,a)||i.dev!==a.dev)throw new A("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 A("PATH_ESCAPED")}if(t!==n.realRoot||!qn(n.identity,Pe(i)))throw new A("PATH_ESCAPED")}function dr(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 A,Kn,sr,$t,Me,pn,Kt,Yt,Qn=k(()=>{_();A=class extends Error{constructor(t){super(t);this.code=t;}code;name="AppDiscoveryFsError"},Kn=fs.constants.O_NOFOLLOW,sr=fs.constants.O_NONBLOCK,$t=fs.constants.O_RDONLY|(Kn??0)|(sr??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 A("PATH_ESCAPED");try{let d=await promises.readdir(a,{withFileTypes:!0,encoding:"utf8"});return await be(n,o),d.map(dr)}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 A("READ_DENIED");if(Kn===void 0)throw new A("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 A("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 A("LIMIT_EXCEEDED");if(c.size>BigInt(Number.MAX_SAFE_INTEGER))throw new A("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))),I=0;for(;I<y.byteLength;){let h;try{h=(await d.read(y,I,y.byteLength-I,I)).bytesRead;}catch(E){throw G(E)}if(h<=0)throw new A("IDENTITY_CHANGED");I+=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 A("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 A("READ_DENIED");if(Kn===void 0)throw new A("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 A("PATH_ESCAPED");let d;try{d=await promises.open(a,$t);}catch(c){throw G(c)}try{let c;try{let I=await d.stat({bigint:!0});c=Pe(I);}catch(I){throw G(I)}if(c.size>BigInt(i)||c.size>BigInt(Number.MAX_SAFE_INTEGER))throw new A("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 I=await d.stat({bigint:!0});y=Pe(I);}catch(I){throw G(I)}if(!qn(c,y))throw new A("IDENTITY_CHANGED");return await sn(a,r.realRoot,l,y),await be(n,r),{...y,candidateRealPath:l??r.realRoot}}catch(c){throw c instanceof A?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 Ir(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 gr(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 mr(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 hr(e){return yr.decode(e)}function Tr(e){return JSON.parse(hr(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 _r(e){if(e instanceof A)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 Dr(e){if(typeof e.readVerifiedFile=="function")return e.readVerifiedFile;if(typeof e.readFileVerified=="function")return e.readFileVerified}function Er(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=Dr(e);if(!o)throw new A("READ_DENIED");return mr(await o.call(e,n,t,i))}async function tt(e,n,t){let i=Er(e);if(!i)throw new A("READ_DENIED");let o=await i.call(e,n,t);if(!Array.isArray(o))throw new A("READ_DENIED");return o.map(gr).filter(r=>r!==null)}function Nr(e,n,t,i){return Object.freeze({code:e,...{},source:n,relativePath:t})}function br(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 Pr(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 Mr(e){let n;try{n=Tr(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),I=Zt(a.appId);if(!y||y.length!==2||y[0]!=="apps"||!Ir(y[1])||!I||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("/"),g=`${a.packageDir}/${j}`;if(S.has(j)||i.has(g))return;S.add(j),i.add(g),v.push(Object.freeze({path:j,sha256:R.sha256}));}if(!S.has("ui-plugin.json")||!S.has("ui/index.html")||(o+=v.length,o>lr))return;t.add(a.packageDir),r.push(Object.freeze({packageDir:a.packageDir,...c?{launcher:false}:{},appId:I,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=_r(e);return n==="PATH_ESCAPED"||n==="IDENTITY_CHANGED"||n==="TOCTOU"?"PATH_ESCAPED":n==="LIMIT_EXCEEDED"?"LIMIT_EXCEEDED":"BUNDLE_INTEGRITY"}async function Lr(e,n,t,i,o){let r=[],a=async(s,d)=>{if(!se(i,o))throw new A("LIMIT_EXCEEDED");if(d>2)throw new A("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 A("PATH_ESCAPED");let y=`${s}/${l.name}`;if(l.kind==="file"){if(r.push(y.slice(t.length+1)),r.length>ot)throw new A("LIMIT_EXCEEDED")}else if(l.kind==="directory")await a(y,d+1);else throw l.kind==="symlink"?new A("PATH_ESCAPED"):new A("READ_DENIED")}};return await a(t,0),r.sort(Ae)}function Sr(e){return e==="ui-plugin.json"?262144:e==="ui/index.html"?je:e==="ui/state.json"?65536:e.startsWith("ui/assets/")?fr:ur}async function ti(e,n,t,i){if(e===void 0)return {packages:[],diagnostics:[],incomplete:false,reservedIds:Ar};let o=br(e.reservedIds),r=[],a=(u,m,N)=>Nr(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",pr);}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=Mr(d);if(l===void 0)return r.push(a("BUNDLE_INTEGRITY","bundle-index.json")),s();if(!Pr(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 I=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(!I)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,g=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=g.get(N)??[];T.push(u),g.set(N,T);}for(let u of [...j.values(),...g.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 Lr(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}`,Sr(Q.path));}catch(Si){B=ye(Si);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 pr,it,ot,lr,ur,fr,et,nt,yr,Ar,rt=k(()=>{_();Hn();Te();Gn();Qn();pr=256*1024,it=64,ot=128,lr=it*ot,ur=2*1024*1024,fr=8*1024*1024,et=32*1024*1024,nt=/^[0-9a-f]{64}$/,yr=new TextDecoder("utf-8",{fatal:true}),Ar=Object.freeze({appIds:Object.freeze([]),definitionIds:Object.freeze([])});});var Di={};Ui(Di,{AppDiscoveryFsError:()=>A,LOCAL_APP_TOOL_PREFIX:()=>Rr,MCP_APP_WORKSPACE_TOOL_PREFIX:()=>kr,NodeAppDiscoveryFs:()=>Me,NodeAppDiscoveryFsAdapter:()=>Yt,WORKSPACE_APP_TOOL_PREFIX:()=>Se,createWorkspaceAppScanCache:()=>zt,defaultAppDiscoveryFs:()=>pn,defaultNodeAppDiscoveryFs:()=>Kt,deriveWorkspaceAppToolName:()=>Cr,deriveWorkspaceAppToolNames:()=>ct,discoverWorkspaceAppCandidates:()=>aa,discoverWorkspaceApps:()=>dt,isWorkspacePackage:()=>Ur,productAppBundleReservations:()=>ze,scanWorkspaceApps:()=>sa});function Ur(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 Cr(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 xr(e,n){return n.length===0||n==="."||n===".."||/[\\/\u0000]/.test(n)?e==="skills"?"skills":"apps":`${e==="skills"?"skills":"apps"}/${n}`}function vr(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 jr(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 wr.decode(e)}function Ii(e){return JSON.parse(Ai(e))}function Vr(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 Fr(e){let n=Ii(e);return {value:n,identity:Vr(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 Y(e){if(e instanceof A)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 Br(e){return {pluginId:e.appId,definitionKey:`${e.definition.id}\0${String(e.definition.version)}`}}function Hr(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=zr(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 zr(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 Gr(){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 l=n.pinnedFiles.get(t);if(l===void 0)throw new A("NOT_FOUND");if(l.byteLength>i)throw new A("LIMIT_EXCEEDED");return new Uint8Array(l)}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);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,hi(s,c)&&c.size===BigInt(d.byteLength)&&!Ti(c,r.scanStartedAtNs)?r.files.set(o,{relativePath:o,byteLimit:i,fingerprint:c}):r.cacheable=false,d}function mi(e,n){return JSON.stringify([e.realPath,n.source,n.relativePath])}async function Jr(e,n,t,i,o,r,a,s){let d=e.fingerprintVerifiedFile,c=mi(t,i),l=o.candidates.get(c),y=i.relativePath,I;try{I=await pi(e,n,y);}catch(g){if(Y(g)!=="NOT_FOUND")throw g}let D=I===void 0?void 0:{relativePath:y,key:I};if(D!==void 0&&i.source==="skills"&&!Wr(D.key,"ui-plugin.json"))return ce(a,s)?l!==void 0&&l.candidate===void 0&&l.diagnostic===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&&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 g=>{if(g==="")return D;let f=`${i.relativePath}${g}`;try{let M=await pi(e,n,f);return M===void 0?void 0:{relativePath:f,key:M}}catch(M){if(Y(M)==="NOT_FOUND")return;throw M}}));if(!ce(a,s))return {timeLimitReached:true};let E=typeof d=="function"&&h.every(g=>g!==void 0),S=h.filter(g=>g!==void 0),v=new Map,R=l!==void 0&&E,C;if(l!==void 0&&typeof d=="function"){let g=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 Y(M)==="NOT_FOUND"?{kind:"missing",file:f}:{kind:"error",file:f,error:M}}}));if(g.some(f=>f.kind==="time"))return {timeLimitReached:true};for(let f of g){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||!hi(b,M.fingerprint)||Ti(b,r))&&(R=false);}}let j=l!==void 0&&l.directoryListings.length===S.length&&l.directoryListings.every((g,f)=>g.relativePath===S[f]?.relativePath&&g.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 Wr(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=_i(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 hi(e,n){return e.dev===n.dev&&e.ino===n.ino&&e.size===n.size&&e.mtimeNs===n.mtimeNs&&e.ctimeNs===n.ctimeNs}function Ti(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;if(n===void 0||!n.cacheable||n.candidateRealPath===void 0&&!t||n.files.size===0&&!t)return;let i=Object.freeze({...!t&&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,i);}function $r(e,n,t){let i=crypto.createHash("sha256"),o=new TextEncoder().encode($(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 K("MANIFEST_INVALID","normalized definition is invalid"):r}let o={...t,hash:i};try{re(o);}catch{throw new K("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 _i(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 A("READ_DENIED");return jr(await o.call(e,n,t,i))}async function qr(e,n,t){let i=_i(e);if(!i)throw new A("READ_DENIED");let o=await i.call(e,n,t);if(!Array.isArray(o))throw new A("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=Fr(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 K("MANIFEST_INVALID","workspace App requires v2");o=T;}catch(T){if(T instanceof K){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(Y(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(Y(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 I={...o,entryHash:d,...o.initialState===void 0?{}:{initialState:{path:"ui/state.json",hash:y}}},D=Vn(I),h=$r(I,a,l??new Uint8Array),E;try{E=Xr(D,h);}catch(T){if(T instanceof K){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($(Z)!==$(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(I),g=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:g,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(Y(t)==="NOT_FOUND")return;L(n,Oe(Y(t),"manifest"));return}}function ia(e,n,t,i=Or,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},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??Gr,a=r(),s=await ti(o.productBundle,i,a,r),d=r(),c=BigInt(Date.now())*1000000n,l=[],y=0,I,D=false,h,E;o.scanCache!==void 0&&typeof i.getRootIdentity=="function"&&typeof i.fingerprintVerifiedFile=="function"&&(E=await i.getRootIdentity(e),h=Gt(o.scanCache,E),h.scanStartedAtNs=c);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(g=>({source:g.source,root:o.productBundle?.root??e,name:"",relativePath:g.relativePath,diagnostic:g})));let C=s.reservedIds;s.incomplete&&(I="time_limit");for(let g of s.packages){if(!ce(d,r)){D=true,I="time_limit";break}let f=g.indexEntry,M=f.packageDir,b=g.files===void 0?void 0:Hr(M,g.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},...g.files===void 0?{}:{pinnedFiles:g.files},...g.lineage===void 0?{}:{bundleLineage:g.lineage},bundleIdentity:{appId:f.appId,definitionId:f.definition.id,version:f.definition.version,definitionHash:f.definition.hash},identity:Br(f)};if(l.push(m),y+=1,g.failureCode!==void 0){L(m,g.failureCode);continue}let N=g.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,I="time_limit";break}}let j=[{source:"apps",directory:"apps"},{source:"skills",directory:"skills"}];e:for(let g of j){let{source:f,directory:M}=g,b;try{b=await qr(i,e,M);}catch(m){if(Y(m)==="NOT_FOUND")continue;S=false,R=false,l.push({source:f,root:e,name:"",relativePath:f,diagnostic:fn(Oe(Y(m),"manifest"),f,f)});continue}let u=b.filter(m=>m.kind==="directory"||m.kind==="symlink").filter(m=>vr(m.name)).map(m=>({source:f,root:e,name:m.name,relativePath:xr(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,I="time_limit";break e}let T;if(h!==void 0&&E!==void 0){try{let B=await Jr(i,e,E,N,h,c,d,r);if(B.timeLimitReached){D=!0,I="time_limit";break e}N.scanContext=B.context,T=B.memo;}catch(B){S=false,L(N,Oe(Y(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,I="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,I="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(Y(B),"manifest")),st(N);continue}if(await fi(i,N,U),st(N),!ce(d,r)){D=true,I="time_limit";break e}}}if(h!==void 0&&E!==void 0){let g=[...v].sort(Je),f=h.lastCandidateKeys,M=f!==void 0&&f.length===g.length&&f.every((u,m)=>u===g[m]);if(S=S&&M,R&&!D&&I===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&&I===void 0,h.lastCandidateScanUnchanged=S,R&&!D&&I===void 0&&(h.lastCandidateKeys=Object.freeze(g));}return D&&l.push({source:"apps",root:e,name:"",relativePath:"apps",diagnostic:fn("DISCOVERY_TIME_LIMIT","apps","apps")}),ea(l,o,C),ia(l,I,s.indexHash,C,o.productBundle!==void 0)}var Or,Se,Rr,kr,ii,wr,ci,di,aa,sa,Ei=k(()=>{_();_e();We();pe();Ot();Te();Gn();on();Jt();Qn();rn();rt();rt();Or=ze([]);Se="crewx_local_app_",Rr=Se,kr=Se;ii=["bundled","apps","skills"],wr=new TextDecoder("utf-8",{fatal:true});ci=["","/ui"],di=2000000000n;aa=dt,sa=dt;});_();var Ni="SKILL.md",ua=/^---\s*\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/;function bi(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 Li(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(!bi(i))return {frontmatter:{},readable:!0,valid:!1,hasFrontmatter:!0};let o=bi(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,Ni),path.join(e,"skill",Ni)]}function An(e,n){if(!Li(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 Pi(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(Li(i))for(let o of pt(i)){if(o.name.startsWith("@")){let r=path.join(i,o.name);for(let a of pt(r))Pi(An(path.join(r,a.name),a.name),t,n);continue}Pi(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(()=>(Ei(),Di)),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,4 +1,4 @@
1
- export type { ActionReceipt, ActionReceiptOutcome, CreateUiInstanceInput, JsonObject, JsonPrimitive, JsonValue, UiActionHandlerContext, UiActionHandlerRegistration, UiActionHandlerResult, UiActionEnvelope, UiActionConfirmation, UiSkillBackendEnvironmentKey, UiActor, UiDefinition, UiDefinitionAction, UiDefinitionDisplayMode, UiDefinitionInput, UiDefinitionLegacyMetadata, UiDefinitionRef, UiDefinitionUsage, UiProjectionPolicy, UiExecutionContext, UiAuthenticatedActor, UiTaskActorSnapshot, UiAuthenticatedExecutionContext, UiApprovalRequestContext, UiTaskExecutionContext, UiApprovalDecisionProvenance, UiApprovalPendingReceipt, UiApprovalRequestReceiptResult, UiAuthenticatedGrantPolicy, UiServerRuntimeFacade, UiServerRuntimeOptions, UiAgentContextProjection, UiExternalActionHandlerRegistration, UiInstance, UiInstanceStatus, UiLocalGrantPolicy, UiRuntimeFacade, UiRuntimeOptions, UiStateActionHandlerRegistration, } from './types.js';
1
+ export type { ActionReceipt, ActionReceiptResultSummary, ActionExecutionReceipt, ActionReceiptOutcome, CreateUiInstanceInput, JsonObject, JsonPrimitive, JsonValue, UiActionHandlerContext, UiActionHandlerRegistration, UiActionHandlerResult, UiActionEnvelope, UiActionConfirmation, UiSkillBackendEnvironmentKey, UiActor, UiDefinition, UiDefinitionAction, UiDefinitionDisplayMode, UiDefinitionInput, UiDefinitionLegacyMetadata, UiDefinitionRef, UiDefinitionUsage, UiProjectionPolicy, UiExecutionContext, UiAuthenticatedActor, UiTaskActorSnapshot, UiAuthenticatedExecutionContext, UiApprovalRequestContext, UiTaskExecutionContext, UiApprovalDecisionProvenance, UiApprovalPendingReceipt, UiApprovalRequestReceiptResult, UiAuthenticatedGrantPolicy, UiServerRuntimeFacade, UiServerRuntimeOptions, UiAgentContextProjection, UiExternalActionHandlerRegistration, UiInstance, UiInstanceStatus, UiLocalGrantPolicy, UiRuntimeFacade, UiRuntimeOptions, UiStateActionHandlerRegistration, } from './types.js';
2
2
  export { isUiAuthenticatedActor, resolveUiEffectiveCapabilities } from './types.js';
3
3
  export { UiRuntimeError } from './errors.js';
4
4
  export type { UiRuntimeErrorCode } from './errors.js';
@@ -174,7 +174,7 @@ export declare class UiInstanceStore {
174
174
  reservationMarker: number;
175
175
  outcome: ActionReceiptOutcome;
176
176
  state: JsonObject;
177
- result: JsonObject | null;
177
+ resultSummary: JsonObject | null;
178
178
  errorCode: string | null;
179
179
  apply?: () => ReturnType<StateHandlerExecution['handle']>;
180
180
  restoreRevisionOnFailure?: boolean;
@@ -169,6 +169,14 @@ export interface UiApprovalRequestReceiptResult {
169
169
  } | null;
170
170
  }
171
171
  export type ActionReceiptOutcome = 'succeeded' | 'rejected' | 'failed' | 'conflicted' | 'expired';
172
+ export interface ActionReceiptResultSummary {
173
+ readonly crewxResult?: {
174
+ readonly keys: readonly string[];
175
+ readonly bytes: number;
176
+ readonly sha256: string;
177
+ };
178
+ readonly crewxContent?: JsonObject;
179
+ }
172
180
  export interface ActionReceipt {
173
181
  id: string;
174
182
  instanceId: string;
@@ -182,11 +190,14 @@ export interface ActionReceipt {
182
190
  status: 'requested' | 'settled';
183
191
  outcome: ActionReceiptOutcome | null;
184
192
  input: JsonObject;
185
- result: JsonObject | null;
193
+ resultSummary: ActionReceiptResultSummary | null;
186
194
  errorCode: string | null;
187
195
  requestedAt: number;
188
196
  settledAt: number | null;
189
197
  }
198
+ export interface ActionExecutionReceipt extends ActionReceipt {
199
+ actionResult?: JsonObject;
200
+ }
190
201
  export interface UiLocalGrantPolicy {
191
202
  resolveInstanceGrants(input: {
192
203
  definition: UiDefinitionRef;
@@ -254,7 +265,7 @@ export interface UiRuntimeOptions {
254
265
  export interface UiRuntimeFacade {
255
266
  resolveDefinition(ref: UiDefinitionRef): UiDefinition | null;
256
267
  createInstance(input: CreateUiInstanceInput): Promise<UiInstance>;
257
- dispatchAction(input: UiActionEnvelope, context: UiExecutionContext): Promise<ActionReceipt>;
268
+ dispatchAction(input: UiActionEnvelope, context: UiExecutionContext): Promise<ActionExecutionReceipt>;
258
269
  getReceipt(instanceId: string, requestId: string): Promise<ActionReceipt | null>;
259
270
  close(): void;
260
271
  }
@@ -286,13 +297,13 @@ export interface UiServerRuntimeFacade {
286
297
  resolveDefinition(ref: UiDefinitionRef): UiDefinition | null;
287
298
  getInstance(instanceId: string, context: UiAuthenticatedExecutionContext): Promise<UiInstance | null>;
288
299
  createInstance(input: CreateUiInstanceInput, context: UiAuthenticatedExecutionContext): Promise<UiInstance>;
289
- dispatchAction(input: UiActionEnvelope, context: UiAuthenticatedExecutionContext | UiTaskExecutionContext): Promise<ActionReceipt>;
300
+ dispatchAction(input: UiActionEnvelope, context: UiAuthenticatedExecutionContext | UiTaskExecutionContext): Promise<ActionExecutionReceipt>;
290
301
  getReceipt(instanceId: string, requestId: string, context: UiAuthenticatedExecutionContext): Promise<ActionReceipt | null>;
291
302
  createApprovalPendingReceipt(input: UiActionEnvelope, context: UiApprovalRequestContext, approval: {
292
303
  approvalId: string;
293
304
  expiresAt: number;
294
305
  }): Promise<UiApprovalRequestReceiptResult>;
295
- executeApprovalPending(input: UiActionEnvelope, receiptId: string, provenance: UiApprovalDecisionProvenance): Promise<ActionReceipt>;
306
+ executeApprovalPending(input: UiActionEnvelope, receiptId: string, provenance: UiApprovalDecisionProvenance): Promise<ActionExecutionReceipt>;
296
307
  settleApprovalPending(receiptId: string, outcome: 'rejected' | 'expired' | 'conflicted', provenance: UiApprovalDecisionProvenance): Promise<ActionReceipt | null>;
297
308
  listApprovalPendingReceipts(): Promise<UiApprovalPendingReceipt[]>;
298
309
  close(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewx/sdk",
3
- "version": "0.9.0-rc.130",
3
+ "version": "0.9.0-rc.131",
4
4
  "license": "UNLICENSED",
5
5
  "engines": {
6
6
  "node": ">=20.19.0"