@rizom/brain 0.2.0-alpha.166 → 0.2.0-alpha.168
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/brain.js +1045 -1045
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/interfaces.js +2 -2
- package/dist/interfaces.js.map +3 -3
- package/dist/plugins.js +2 -2
- package/dist/plugins.js.map +3 -3
- package/dist/site.js +5 -5
- package/dist/site.js.map +3 -3
- package/dist/templates.d.ts +10 -0
- package/dist/templates.js +2 -2
- package/dist/templates.js.map +3 -3
- package/package.json +1 -1
package/dist/plugins.js
CHANGED
|
@@ -191,7 +191,7 @@ ${$.message}`;return X}var mv=P.enum(["tool:invoking","tool:completed","tool:fai
|
|
|
191
191
|
|
|
192
192
|
${U}`}function iA($,U){let G=$.match(nv)??[];return[...new Set(G)].filter((X)=>{try{let{hostname:D}=new URL(X);return!U.some((V)=>D===V||D.endsWith(`.${V}`))}catch{return!1}})}function xJ($,U){let G=$.attachment.source;if((G?.entityType==="document"||G?.entityType==="image")&&G.entityId)return{entityType:G.entityType,id:G.entityId};return ov($.attachment.downloadUrl??$.attachment.url,U)}function ov($,U="http://local"){if(!$)return;let G;try{G=new URL($,U)}catch{return}let X=G.searchParams.get("id")?.trim();if(!X)return;if(G.pathname==="/api/chat/attachments/document")return{entityType:"document",id:X};if(G.pathname==="/api/chat/attachments/image")return{entityType:"image",id:X};return}function nA($,U){let G=av(U,$==="document"?/^application\/pdf$/i:/^image\/[a-z0-9.+-]+$/i);if(!G)return;if($==="document"&&G.mimeType.toLowerCase()!=="application/pdf")return;return G}function cA($,U,G,X){let D=$?.filename;if(typeof D==="string"&&D.trim())return D;if(G==="document")return`${U}.pdf`;let V=$?.format;if(typeof V==="string"&&V.trim())return`${U}.${V==="jpeg"?"jpg":V}`;let Z=X.split("/")[1]?.split("+")[0]??"png";return`${U}.${Z}`}function av($,U){let G=$.match(/^data:([^;]+);base64,(.+)$/i),X=G?.[1],D=G?.[2];if(!X||!D||!U.test(X))return;let V=Buffer.from(D,"base64");return{mimeType:X,data:V.buffer.slice(V.byteOffset,V.byteOffset+V.byteLength)}}async function dA({entityRef:$,userLevel:U,getEntity:G,getVisibleEntity:X}){let D=d0(U),V=await X($,D);if(V)return{status:"visible",entity:V};return Boolean(await G($))?{status:"denied"}:{status:"missing"}}function oA($){return $==="anchor"||$==="trusted"}var aA=500;class bJ extends _D{isUploadableTextFile($,U){return yA($,U)}isFileSizeAllowed($){return fA($)}formatFileUploadMessage($,U){return lA($,U)}getMaxFileUploadBytes(){return kJ}isLikelyTextContent($){return pA($)}async resolveNativeArtifactDelivery($){let U=[],G=new Set;if(!this.context||!$.cards)return{files:U,deniedCardIds:G};let X=this.context;for(let D of $.cards){if(D.kind!=="attachment")continue;let V=xJ(D,$.displayBaseUrl);if(!V)continue;let Z=await dA({entityRef:V,userLevel:$.userPermissionLevel,getEntity:(Y)=>X.entityService.getEntity(Y),getVisibleEntity:(Y,W)=>X.entityService.getEntity({...Y,visibilityScope:W})});if(Z.status==="denied"){G.add(D.id);continue}if(Z.status!=="visible")continue;if(!oA($.userPermissionLevel))continue;if(typeof Z.entity.content!=="string")continue;let J=nA(V.entityType,Z.entity.content);if(!J)continue;if($.maxBytes!==void 0&&J.data.byteLength>$.maxBytes){this.logger.debug("Skipping oversized native artifact upload",{cardId:D.id,sizeBytes:J.data.byteLength});continue}U.push({cardId:D.id,data:new Uint8Array(J.data),filename:D.attachment.filename??cA(Z.entity.metadata,V.id,V.entityType,J.mimeType),mimeType:J.mimeType})}return{files:U,deniedCardIds:G}}extractCaptureableUrls($,U){return iA($,U)}async captureUrlViaAgent($,U,G,X,D){if(!this.context)return;let V=this.context.permissions.getUserLevel(X,G,D);await this.context.agent.chat(`Save this link: ${$}`,`links-${U}`,{userPermissionLevel:V,interfaceType:X,channelId:U})}progressEvents=new Map;sendMessageWithId($){return Promise.resolve(void 0)}editMessage($){return Promise.resolve(!1)}supportsMessageEditing(){return!1}progressCallback;isProcessingInput=!1;currentChannelId=null;bufferedCompletionMessages=[];progressMessageTracking=new Map;agentResponseTracking=new Map;pendingToolCompletions=new Map;registerProgressCallback($){this.progressCallback=$;let U=Array.from(this.progressEvents.values()).filter((G)=>G.status==="processing");$(U)}unregisterProgressCallback(){delete this.progressCallback}trackAgentResponseForJob($,U,G){this.agentResponseTracking.set($,{messageId:U,channelId:G,lastUpdate:Date.now()}),this.logger.debug("Tracking agent response for job",{jobId:$,messageId:U,channelId:G})}async onRegister($){await super.onRegister($),bA($,{onProgress:async(U,G)=>{await this.handleProgressEvent(U,G)},onError:(U)=>{this.logger.error("Error handling progress event",{error:U,interfaceId:this.id})},onInvalidSchema:()=>{this.logger.warn("Invalid progress event schema",{interfaceId:this.id})}}),hA($,{onToolActivity:async(U)=>{await this.handleToolActivityEvent(U)},onError:(U)=>{this.logger.error("Error handling tool activity event",{error:U,interfaceId:this.id})},onInvalidSchema:()=>{this.logger.warn("Invalid tool activity event schema",{interfaceId:this.id})}}),this.logger.debug("Message interface registered with progress and tool handlers",{id:this.id})}async handleProgressEvent($,U){if(!this.shouldHandleProgressEvent($))return;this.updateProgressState($);let G=$.metadata.channelId??null,X=$.metadata.rootJobId;if(await this.handleProcessingProgress($,G,X))return;if($.status==="completed"||$.status==="failed")await this.handleTerminalProgress($,G,X);await this.onProgressUpdate($),this.logProgressProcessed($)}shouldHandleProgressEvent($){let U=$.metadata.interfaceType;return!U||U===this.id}updateProgressState($){this.progressEvents.set($.id,$),this.notifyProgressCallback()}async handleProcessingProgress($,U,G){if($.status!=="processing"||!this.supportsMessageEditing())return!1;let X=this.agentResponseTracking.get($.id);if(X)return await this.editTrackedProgressMessage($,X),!0;let D=this.formatProgressOutput($),V=this.progressMessageTracking.get(G),Z=Date.now();if(V){if(Z-V.lastUpdate>=aA)await this.editMessage({channelId:V.channelId,messageId:V.messageId,newMessage:D}),V.lastUpdate=Z}else if(U&&!this.isProcessingInput)await this.sendInitialProgressMessage(G,U,D,Z);return!1}async editTrackedProgressMessage($,U){let G=Date.now();if(G-U.lastUpdate<aA)return;await this.editMessage({channelId:U.channelId,messageId:U.messageId,newMessage:this.formatProgressOutput($)}),U.lastUpdate=G}async sendInitialProgressMessage($,U,G,X){let D=await this.sendMessageWithId({channelId:U,message:G});if(!D)return;this.progressMessageTracking.set($,{messageId:D,channelId:U,lastUpdate:X}),this.logger.debug("Tracking progress message",{rootJobId:$,messageId:D,channelId:U})}async handleTerminalProgress($,U,G){let X=this.formatCompletionOutput($),D=this.progressMessageTracking.get(G),V=this.agentResponseTracking.get($.id);if(this.logger.debug("Completion event received",{eventId:$.id,rootJobId:G,hasProgressTracking:!!D,hasAgentTracking:!!V,supportsEditing:this.supportsMessageEditing()}),this.supportsMessageEditing())await this.updateTrackedCompletion($,X,D,V,G);if(!D&&!V&&U)this.sendOrBufferCompletionMessage(X,U);this.scheduleProgressCleanup($.id)}async updateTrackedCompletion($,U,G,X,D){if(X){if(await this.editMessage({channelId:X.channelId,messageId:X.messageId,newMessage:U}),this.agentResponseTracking.delete($.id),G)this.progressMessageTracking.delete(D);return}if(G)await this.editMessage({channelId:G.channelId,messageId:G.messageId,newMessage:U}),this.progressMessageTracking.delete(D)}sendOrBufferCompletionMessage($,U){if(this.isProcessingInput){this.bufferedCompletionMessages.push({message:$,channelId:U});return}this.sendMessageToChannel({channelId:U,message:$})}scheduleProgressCleanup($){setTimeout(()=>{this.progressEvents.delete($),this.notifyProgressCallback()},500)}logProgressProcessed($){this.logger.debug("Progress event processed",{eventId:$.id,status:$.status,operationType:$.metadata.operationType,targetChannel:$.metadata.channelId})}formatProgressOutput($){return rA($)}formatCompletionOutput($){return uA($)}async onProgressUpdate($){}async handleToolActivityEvent($){if($.interfaceType!==this.id)return;switch($.type){case"tool:invoking":this.pendingToolCompletions.delete(this.getToolCompletionKey($)),await this.handleToolStatusUpdate(qD($,"running"));return;case"tool:completed":if(this.isProcessingInput){this.pendingToolCompletions.set(this.getToolCompletionKey($),$);return}await this.handleToolStatusUpdate(qD($,"completed"));return;case"tool:failed":this.pendingToolCompletions.delete(this.getToolCompletionKey($)),await this.handleToolStatusUpdate(qD($,"failed"));return}}async handleToolStatusUpdate($){}async handleAgentResponseToolStatuses($,U){if(this.pendingToolCompletions.size===0)return;let G=Array.from(this.pendingToolCompletions.values()).filter((X)=>X.interfaceType===this.id&&X.conversationId===U);for(let X of G){this.pendingToolCompletions.delete(this.getToolCompletionKey(X));let D=mA($,X.toolName)?"awaiting-approval":"completed";await this.handleToolStatusUpdate(qD(X,D))}}getToolCompletionKey($){return`${$.interfaceType}:${$.conversationId}:${$.toolName}`}notifyProgressCallback(){if(this.progressCallback){let $=Array.from(this.progressEvents.values());this.progressCallback($)}}getProgressEvents(){return Array.from(this.progressEvents.values())}getActiveProgressEvents(){return Array.from(this.progressEvents.values()).filter(($)=>$.status==="processing")}startProcessingInput($=null){this.isProcessingInput=!0,this.currentChannelId=$}endProcessingInput(){this.isProcessingInput=!1;for(let{message:$,channelId:U}of this.bufferedCompletionMessages)this.sendMessageToChannel({channelId:U,message:$});this.bufferedCompletionMessages=[],this.currentChannelId=null}getCurrentChannelId(){return this.currentChannelId}}class sA extends bJ{hooks;constructor($,U,G,X,D){super($,U,G,X);this.hooks=D}async onRegister($){await super.onRegister($),await this.hooks.onRegister($)}onReady($){return this.hooks.onReady($)}onShutdown(){return this.hooks.onShutdown()}getTools(){return this.hooks.getTools()}getResources(){return this.hooks.getResources()}getInstructions(){return this.hooks.getInstructions()}getWebRoutes(){return this.hooks.getWebRoutes()}requiresDaemonStartup(){return this.hooks.requiresDaemonStartup()}sendMessageToChannel($){this.hooks.sendMessageToChannel($)}sendMessageWithId($){return this.hooks.sendMessageWithId($)}editMessage($){return this.hooks.editMessage($)}supportsMessageEditing(){return this.hooks.supportsMessageEditing()}onProgressUpdate($){return this.hooks.onProgressUpdate($)}trackAgentResponseForJobPublic($,U,G){this.trackAgentResponseForJob($,U,G)}captureUrlViaAgentPublic($,U,G,X,D){return this.captureUrlViaAgent($,U,G,X,D)}getCurrentChannelIdPublic(){return this.getCurrentChannelId()}}class uJ extends FD{messageDelegate;constructor($,U,G,X){super($,U,G,X);this.messageDelegate=new sA($,U,G,X,{onRegister:(D)=>this.onRegister(D),onReady:(D)=>this.onReady(D),onShutdown:()=>this.onShutdown(),getTools:()=>this.getTools(),getResources:()=>this.getResources(),getInstructions:()=>this.getInstructions(),getWebRoutes:()=>this.getWebRoutes(),requiresDaemonStartup:()=>this.requiresDaemonStartup(),sendMessageToChannel:(D)=>this.sendMessageToChannel(D),sendMessageWithId:(D)=>this.sendMessageWithId(D),editMessage:(D)=>this.editMessage(D),supportsMessageEditing:()=>this.supportsMessageEditing(),onProgressUpdate:(D)=>this.onProgressUpdate(D)})}register($,U){return this.messageDelegate.register($,U)}async onRegister($){}async onReady($){}async onShutdown(){}async getTools(){return[]}async getResources(){return[]}async getInstructions(){return}sendMessageWithId($){return Promise.resolve(void 0)}editMessage($){return Promise.resolve(!1)}supportsMessageEditing(){return!1}async onProgressUpdate($){}isUploadableTextFile($,U){let G=[".md",".txt",".markdown"];if(U&&["text/plain","text/markdown","text/x-markdown"].some((D)=>U.startsWith(D)))return!0;return G.some((D)=>$.toLowerCase().endsWith(D))}isFileSizeAllowed($){return $<=1e5}formatFileUploadMessage($,U){return`User uploaded a file "${$}":
|
|
193
193
|
|
|
194
|
-
${U}`}extractCaptureableUrls($,U){let G=$.match(/https?:\/\/[^\s<>"{}|\\^`[\]]+?(?=[,;:\s]|$)/gi)??[];return[...new Set(G)].filter((X)=>{try{let{hostname:D}=new URL(X);return!U.some((V)=>D===V||D.endsWith(`.${V}`))}catch{return!1}})}captureUrlViaAgent($,U,G,X,D){return this.messageDelegate.captureUrlViaAgentPublic($,U,G,X,D)}trackAgentResponseForJob($,U,G){this.messageDelegate.trackAgentResponseForJobPublic($,U,G)}registerProgressCallback($){this.messageDelegate.registerProgressCallback($)}unregisterProgressCallback(){this.messageDelegate.unregisterProgressCallback()}getProgressEvents(){return this.messageDelegate.getProgressEvents()}getActiveProgressEvents(){return this.messageDelegate.getActiveProgressEvents()}startProcessingInput($=null){this.messageDelegate.startProcessingInput($)}endProcessingInput(){this.messageDelegate.endProcessingInput()}getCurrentChannelId(){return this.messageDelegate.getCurrentChannelIdPublic()}ready(){return this.messageDelegate.ready()}shutdown(){return this.messageDelegate.shutdown?.()??Promise.resolve()}}var sv=P.object({name:P.string(),description:P.string(),schema:P.any(),basePrompt:P.string().optional(),useKnowledgeContext:P.boolean().optional(),requiredPermission:P.enum(["anchor","trusted","public"]),formatter:P.any().optional(),layout:P.object({component:P.any().optional(),fullscreen:P.boolean().optional()}).optional(),dataSourceId:P.string().optional()});class RD{static canGenerate($){return!!$.basePrompt&&!!$.dataSourceId&&$.dataSourceId.includes("ai-content")}static canFetch($){return!!$.dataSourceId&&!this.canGenerate($)}static canRender($){return!!$.layout?.component}static isStaticOnly($){return!this.canGenerate($)&&!this.canFetch($)}static getCapabilities($){return{canGenerate:this.canGenerate($),canFetch:this.canFetch($),canRender:this.canRender($),isStaticOnly:this.isStaticOnly($)}}static validate($){let U=[];if($.dataSourceId?.includes("ai-content")&&!$.basePrompt)U.push(`Template "${$.name}" has AI-content dataSourceId but no basePrompt. AI generation requires a basePrompt.`);if($.basePrompt&&(!$.dataSourceId||!$.dataSourceId.includes("ai-content")))U.push(`Template "${$.name}" has basePrompt but no AI-content dataSourceId. The basePrompt won't be used.`);return U}static logCapabilities($,U){let G=this.getCapabilities($),X=this.validate($);if(U)U.debug(`Template capabilities for "${$.name}":`,{...G,errors:X.length>0?X:void 0})}}var ev=P.enum(["anchor","trusted","public"]),$L=P.enum(["create","update","delete","extract","publish"]),GU=P.enum(["never","anchor","trusted","public"]),tA=P.strictObject({create:GU.optional(),update:GU.optional(),delete:GU.optional(),extract:GU.optional(),publish:GU.optional()}),UL=P.record(P.string(),tA);var DL=P.enum(["site-content-preview","site-content-production"]),GL=P.enum(["web","image","pdf"]),rJ=P.custom(($)=>typeof $==="function"),XL=P.object({name:P.string(),schema:P.any(),description:P.string().optional(),pluginId:P.string(),renderers:P.object({web:P.union([rJ,P.string()]).optional(),image:P.union([rJ,P.string()]).optional(),pdf:P.union([rJ,P.string()]).optional()})}),VL=P.object({enableContentGeneration:P.boolean().default(!1),outputDir:P.string(),workingDir:P.string().optional(),environment:P.enum(["preview","production"]).default("preview"),siteConfig:P.object({title:P.string(),description:P.string(),url:P.string().optional()}).optional()}),ZL=P.object({success:P.boolean(),routesBuilt:P.number(),errors:P.array(P.string()).optional(),warnings:P.array(P.string()).optional()});function eA($,U,G){let X=c1($,U,G),D=$.getEntityService(),V=$.getRenderService(),Z=$.getContentService();return{...X,entityService:D,entities:PG($),webRoutes:{getRoutes:()=>$.getPluginWebRoutes()},templates:{register:(J,Y)=>{$.registerTemplates(J,Y??U)},format:(J,Y)=>{return Z.formatContent(J,Y,{pluginId:U})},parse:(J,Y)=>{return Z.parseContent(J,Y,U)},resolve:async(J,Y)=>{return await Z.resolveContent(J,Y,U)},getCapabilities:(J)=>{let Y=J.includes(":")?J:`${U}:${J}`,W=$.getTemplate(Y);if(!W)return null;let w=RD.getCapabilities(W);return{canGenerate:w.canGenerate,canFetch:w.canFetch,canRender:w.canRender,isStaticOnly:w.isStaticOnly}}},views:{get:(J)=>{return V.get(J)??void 0},list:()=>{return V.list()},hasRenderer:(J,Y="web")=>{return V.hasRenderer(J,Y)},getRenderer:(J,Y="web")=>{return V.getRenderer(J,Y)},validate:(J,Y)=>{return V.validate(J,Y)}},prompts:WG(D),ai:{query:(J,Y)=>$.query(J,Y),generate:async(J)=>{return $.generateContent(J)},generateObject:async(J,Y)=>{return $.generateObject(J,Y)},generateImage:async(J,Y)=>{return $.generateImage(J,Y)},canGenerateImages:()=>{return $.canGenerateImages()}},registerInstructions:(J)=>{$.registerInstructions(U,J)}}}class hJ extends C6{type="service";getApiRoutes(){return[]}getWebRoutes(){return[]}async register($,U){let G=eA($,this.id,U);return this.context=G,this.setupMessageHandlers(G),await this.onRegister(G),this.getCapabilities()}get entityService(){return this.getContext().entityService}registerEntityType($,U,G,X){this.getContext().entities.register($,U,G,X)}async enqueueJob($){return this.getContext().jobs.enqueue($)}async enqueueBatch($,U){return this.getContext().jobs.enqueueBatch($,U)}async registerEntityTypes($){}async registerJobHandlers($){}async onRegister($){await this.registerEntityTypes($),await this.registerJobHandlers($)}}class $_ extends hJ{hooks;constructor($,U,G,X,D){super($,U,G,X);this.hooks=D}onRegister($){return this.hooks.onRegister($)}onReady($){return this.hooks.onReady($)}onShutdown(){return this.hooks.onShutdown()}getTools(){return this.hooks.getTools()}getResources(){return this.hooks.getResources()}getInstructions(){return this.hooks.getInstructions()}}class mJ{type="service";id;version;packageName;description;delegate;constructor($,U,G,X){if(this.id=$,this.version=U.version,this.packageName=U.name,U.description!==void 0)this.description=U.description;this.delegate=new $_($,U,G,X,{onRegister:(D)=>this.onRegister(D),onReady:(D)=>this.onReady(D),onShutdown:()=>this.onShutdown(),getTools:()=>this.getTools(),getResources:()=>this.getResources(),getInstructions:()=>this.getInstructions()})}register($,U){return this.delegate.register($,U)}async onRegister($){}async onReady($){}async onShutdown(){}async getTools(){return[]}async getResources(){return[]}async getInstructions(){return}ready(){return this.delegate.ready()}shutdown(){return this.delegate.shutdown?.()??Promise.resolve()}}var U_=P.object({kind:P.string().min(1),id:P.string().min(1)}),PL=P.object({kind:P.literal("text"),filename:P.string().min(1),mediaType:P.string().min(1),content:P.string(),sizeBytes:P.number().nonnegative().optional(),source:U_.optional()}),WL=P.custom(($)=>$ instanceof Uint8Array),YL=P.object({kind:P.literal("file"),filename:P.string().min(1),mediaType:P.string().min(1),data:WL,sizeBytes:P.number().nonnegative().optional(),source:U_.optional()}),HL=P.discriminatedUnion("kind",[PL,YL]),wL=P.object({userPermissionLevel:P.enum(["anchor","trusted","public"]).optional(),interfaceType:P.string().optional(),channelId:P.string().optional(),channelName:P.string().optional(),actor:p0.optional(),source:l0.optional(),attachments:P.array(HL).optional()});var KL=P.object({status:P.enum(["healthy","warning","error","unknown"]),message:P.string().optional(),lastCheck:P.date().optional(),details:P.record(P.string(),P.unknown()).optional()}),D_=P.object({name:P.string(),pluginId:P.string(),status:P.string(),health:KL.optional()});import{McpServer as Vt,ResourceTemplate as Zt}from"@modelcontextprotocol/sdk/server/mcp.js";var G_=P.object({interfaceType:P.string(),userId:P.string(),conversationId:P.string().optional(),channelId:P.string().optional(),channelName:P.string().optional(),runId:P.string().optional(),toolCallId:P.string().optional(),userPermissionLevel:P.enum(["anchor","trusted","public"]).optional()}),X_=P.strictObject({success:P.literal(!0),data:P.unknown().optional(),message:P.string().optional(),cached:P.literal(!0).optional()}),V_=P.strictObject({success:P.literal(!1),error:P.string(),code:P.string().optional()}),Z_=P.strictObject({needsConfirmation:P.literal(!0),toolName:P.string(),summary:P.string(),completionSummary:P.string().optional(),preview:P.string().optional(),args:P.unknown()}),yJ=P.union([X_,V_,Z_]);var es=P.union([P.looseObject({success:P.literal(!0)}),P.object({success:P.literal(!1),error:P.string()})]);var OL=P.union([P.object({success:P.literal(!0),data:P.unknown(),message:P.string().optional()}),P.object({success:P.literal(!1),error:P.string(),code:P.string().optional()})]);var nt=P.object({id:P.string(),type:P.string(),version:P.string(),status:P.string()}),ct=P.object({name:P.string(),description:P.string()}),J_=P.enum(["anchor","trusted","public"]),fJ=P.object({label:P.string(),url:P.string(),pluginId:P.string(),priority:P.number().default(100),visibility:J_.default("public")}),AL=P.enum(["human","agent","admin","protocol"]),_L=P.enum(["available","coming-soon","disabled"]),pJ=P.object({id:P.string(),label:P.string(),description:P.string().optional(),href:P.string(),kind:AL,pluginId:P.string(),priority:P.number().default(100),visibility:J_.default("public"),status:_L.default("available")}),lJ=P.object({entityType:P.string(),count:P.number()}),dt=P.object({model:P.string(),version:P.string(),uptime:P.number(),entities:P.number(),entityCounts:P.array(lJ),embeddings:P.number(),ai:P.object({model:P.string(),embeddingModel:P.string()}),daemons:P.array(D_),endpoints:P.array(fJ),interactions:P.array(pJ)});var ot=P.object({id:P.string(),version:P.string(),type:P.enum(["core","entity","service","interface"]),description:P.string().optional(),dependencies:P.array(P.string()).optional(),packageName:P.string()});var FL=P.object({status:P.enum(["healthy","warning","error","unknown"]),message:P.string().optional(),lastCheck:P.string().optional(),details:P.record(P.string(),P.unknown()).optional()}),qL=P.object({name:P.string(),pluginId:P.string(),status:P.string(),health:FL.optional()}),RL=P.object({model:P.string(),version:P.string(),uptime:P.number(),entities:P.number(),entityCounts:P.array(lJ),embeddings:P.number(),ai:P.object({model:P.string(),embeddingModel:P.string()}),daemons:P.array(qL),endpoints:P.array(fJ),interactions:P.array(pJ)});var NL=P.union([P.object({success:P.boolean(),data:P.unknown().optional(),error:P.string().optional()}),P.object({noop:P.literal(!0)})]),ML=P.object({id:P.string(),timestamp:P.string(),type:P.string(),source:P.string(),target:P.string().optional(),metadata:n1.optional()});export{WR as urlCaptureConfigSchema,JR as toolSuccess,PR as toolError,YR as defineChannel,VR as createTool,ZR as createResource,D0 as ToolResultDataSchema,mJ as ServicePlugin,U0 as PendingConfirmationSchema,PI as MessageSchema,NL as MessageResponseSchema,uJ as MessageInterfacePlugin,FD as InterfacePlugin,n1 as ExtensionMetadataSchema,CJ as EntityPlugin,JI as ConversationSchema,wL as ChatContextSchema,XJ as BrainCharacterSchema,ML as BaseMessageSchema,RL as AppInfoSchema,VJ as AnchorProfileSchema,G0 as AgentResponseSchema};
|
|
194
|
+
${U}`}extractCaptureableUrls($,U){let G=$.match(/https?:\/\/[^\s<>"{}|\\^`[\]]+?(?=[,;:\s]|$)/gi)??[];return[...new Set(G)].filter((X)=>{try{let{hostname:D}=new URL(X);return!U.some((V)=>D===V||D.endsWith(`.${V}`))}catch{return!1}})}captureUrlViaAgent($,U,G,X,D){return this.messageDelegate.captureUrlViaAgentPublic($,U,G,X,D)}trackAgentResponseForJob($,U,G){this.messageDelegate.trackAgentResponseForJobPublic($,U,G)}registerProgressCallback($){this.messageDelegate.registerProgressCallback($)}unregisterProgressCallback(){this.messageDelegate.unregisterProgressCallback()}getProgressEvents(){return this.messageDelegate.getProgressEvents()}getActiveProgressEvents(){return this.messageDelegate.getActiveProgressEvents()}startProcessingInput($=null){this.messageDelegate.startProcessingInput($)}endProcessingInput(){this.messageDelegate.endProcessingInput()}getCurrentChannelId(){return this.messageDelegate.getCurrentChannelIdPublic()}ready(){return this.messageDelegate.ready()}shutdown(){return this.messageDelegate.shutdown?.()??Promise.resolve()}}var sv=P.object({name:P.string(),description:P.string(),schema:P.any(),basePrompt:P.string().optional(),useKnowledgeContext:P.boolean().optional(),requiredPermission:P.enum(["anchor","trusted","public"]),formatter:P.any().optional(),overlayFormatter:P.any().optional(),layout:P.object({component:P.any().optional(),fullscreen:P.boolean().optional()}).optional(),dataSourceId:P.string().optional()});class RD{static canGenerate($){return!!$.basePrompt&&!!$.dataSourceId&&$.dataSourceId.includes("ai-content")}static canFetch($){return!!$.dataSourceId&&!this.canGenerate($)}static canRender($){return!!$.layout?.component}static isStaticOnly($){return!this.canGenerate($)&&!this.canFetch($)}static getCapabilities($){return{canGenerate:this.canGenerate($),canFetch:this.canFetch($),canRender:this.canRender($),isStaticOnly:this.isStaticOnly($)}}static validate($){let U=[];if($.dataSourceId?.includes("ai-content")&&!$.basePrompt)U.push(`Template "${$.name}" has AI-content dataSourceId but no basePrompt. AI generation requires a basePrompt.`);if($.basePrompt&&(!$.dataSourceId||!$.dataSourceId.includes("ai-content")))U.push(`Template "${$.name}" has basePrompt but no AI-content dataSourceId. The basePrompt won't be used.`);return U}static logCapabilities($,U){let G=this.getCapabilities($),X=this.validate($);if(U)U.debug(`Template capabilities for "${$.name}":`,{...G,errors:X.length>0?X:void 0})}}var ev=P.enum(["anchor","trusted","public"]),$L=P.enum(["create","update","delete","extract","publish"]),GU=P.enum(["never","anchor","trusted","public"]),tA=P.strictObject({create:GU.optional(),update:GU.optional(),delete:GU.optional(),extract:GU.optional(),publish:GU.optional()}),UL=P.record(P.string(),tA);var DL=P.enum(["site-content-preview","site-content-production"]),GL=P.enum(["web","image","pdf"]),rJ=P.custom(($)=>typeof $==="function"),XL=P.object({name:P.string(),schema:P.any(),description:P.string().optional(),pluginId:P.string(),renderers:P.object({web:P.union([rJ,P.string()]).optional(),image:P.union([rJ,P.string()]).optional(),pdf:P.union([rJ,P.string()]).optional()})}),VL=P.object({enableContentGeneration:P.boolean().default(!1),outputDir:P.string(),workingDir:P.string().optional(),environment:P.enum(["preview","production"]).default("preview"),siteConfig:P.object({title:P.string(),description:P.string(),url:P.string().optional()}).optional()}),ZL=P.object({success:P.boolean(),routesBuilt:P.number(),errors:P.array(P.string()).optional(),warnings:P.array(P.string()).optional()});function eA($,U,G){let X=c1($,U,G),D=$.getEntityService(),V=$.getRenderService(),Z=$.getContentService();return{...X,entityService:D,entities:PG($),webRoutes:{getRoutes:()=>$.getPluginWebRoutes()},templates:{register:(J,Y)=>{$.registerTemplates(J,Y??U)},format:(J,Y)=>{return Z.formatContent(J,Y,{pluginId:U})},parse:(J,Y)=>{return Z.parseContent(J,Y,U)},resolve:async(J,Y)=>{return await Z.resolveContent(J,Y,U)},getCapabilities:(J)=>{let Y=J.includes(":")?J:`${U}:${J}`,W=$.getTemplate(Y);if(!W)return null;let w=RD.getCapabilities(W);return{canGenerate:w.canGenerate,canFetch:w.canFetch,canRender:w.canRender,isStaticOnly:w.isStaticOnly}}},views:{get:(J)=>{return V.get(J)??void 0},list:()=>{return V.list()},hasRenderer:(J,Y="web")=>{return V.hasRenderer(J,Y)},getRenderer:(J,Y="web")=>{return V.getRenderer(J,Y)},validate:(J,Y)=>{return V.validate(J,Y)}},prompts:WG(D),ai:{query:(J,Y)=>$.query(J,Y),generate:async(J)=>{return $.generateContent(J)},generateObject:async(J,Y)=>{return $.generateObject(J,Y)},generateImage:async(J,Y)=>{return $.generateImage(J,Y)},canGenerateImages:()=>{return $.canGenerateImages()}},registerInstructions:(J)=>{$.registerInstructions(U,J)}}}class hJ extends C6{type="service";getApiRoutes(){return[]}getWebRoutes(){return[]}async register($,U){let G=eA($,this.id,U);return this.context=G,this.setupMessageHandlers(G),await this.onRegister(G),this.getCapabilities()}get entityService(){return this.getContext().entityService}registerEntityType($,U,G,X){this.getContext().entities.register($,U,G,X)}async enqueueJob($){return this.getContext().jobs.enqueue($)}async enqueueBatch($,U){return this.getContext().jobs.enqueueBatch($,U)}async registerEntityTypes($){}async registerJobHandlers($){}async onRegister($){await this.registerEntityTypes($),await this.registerJobHandlers($)}}class $_ extends hJ{hooks;constructor($,U,G,X,D){super($,U,G,X);this.hooks=D}onRegister($){return this.hooks.onRegister($)}onReady($){return this.hooks.onReady($)}onShutdown(){return this.hooks.onShutdown()}getTools(){return this.hooks.getTools()}getResources(){return this.hooks.getResources()}getInstructions(){return this.hooks.getInstructions()}}class mJ{type="service";id;version;packageName;description;delegate;constructor($,U,G,X){if(this.id=$,this.version=U.version,this.packageName=U.name,U.description!==void 0)this.description=U.description;this.delegate=new $_($,U,G,X,{onRegister:(D)=>this.onRegister(D),onReady:(D)=>this.onReady(D),onShutdown:()=>this.onShutdown(),getTools:()=>this.getTools(),getResources:()=>this.getResources(),getInstructions:()=>this.getInstructions()})}register($,U){return this.delegate.register($,U)}async onRegister($){}async onReady($){}async onShutdown(){}async getTools(){return[]}async getResources(){return[]}async getInstructions(){return}ready(){return this.delegate.ready()}shutdown(){return this.delegate.shutdown?.()??Promise.resolve()}}var U_=P.object({kind:P.string().min(1),id:P.string().min(1)}),PL=P.object({kind:P.literal("text"),filename:P.string().min(1),mediaType:P.string().min(1),content:P.string(),sizeBytes:P.number().nonnegative().optional(),source:U_.optional()}),WL=P.custom(($)=>$ instanceof Uint8Array),YL=P.object({kind:P.literal("file"),filename:P.string().min(1),mediaType:P.string().min(1),data:WL,sizeBytes:P.number().nonnegative().optional(),source:U_.optional()}),HL=P.discriminatedUnion("kind",[PL,YL]),wL=P.object({userPermissionLevel:P.enum(["anchor","trusted","public"]).optional(),interfaceType:P.string().optional(),channelId:P.string().optional(),channelName:P.string().optional(),actor:p0.optional(),source:l0.optional(),attachments:P.array(HL).optional()});var KL=P.object({status:P.enum(["healthy","warning","error","unknown"]),message:P.string().optional(),lastCheck:P.date().optional(),details:P.record(P.string(),P.unknown()).optional()}),D_=P.object({name:P.string(),pluginId:P.string(),status:P.string(),health:KL.optional()});import{McpServer as Vt,ResourceTemplate as Zt}from"@modelcontextprotocol/sdk/server/mcp.js";var G_=P.object({interfaceType:P.string(),userId:P.string(),conversationId:P.string().optional(),channelId:P.string().optional(),channelName:P.string().optional(),runId:P.string().optional(),toolCallId:P.string().optional(),userPermissionLevel:P.enum(["anchor","trusted","public"]).optional()}),X_=P.strictObject({success:P.literal(!0),data:P.unknown().optional(),message:P.string().optional(),cached:P.literal(!0).optional()}),V_=P.strictObject({success:P.literal(!1),error:P.string(),code:P.string().optional()}),Z_=P.strictObject({needsConfirmation:P.literal(!0),toolName:P.string(),summary:P.string(),completionSummary:P.string().optional(),preview:P.string().optional(),args:P.unknown()}),yJ=P.union([X_,V_,Z_]);var es=P.union([P.looseObject({success:P.literal(!0)}),P.object({success:P.literal(!1),error:P.string()})]);var OL=P.union([P.object({success:P.literal(!0),data:P.unknown(),message:P.string().optional()}),P.object({success:P.literal(!1),error:P.string(),code:P.string().optional()})]);var nt=P.object({id:P.string(),type:P.string(),version:P.string(),status:P.string()}),ct=P.object({name:P.string(),description:P.string()}),J_=P.enum(["anchor","trusted","public"]),fJ=P.object({label:P.string(),url:P.string(),pluginId:P.string(),priority:P.number().default(100),visibility:J_.default("public")}),AL=P.enum(["human","agent","admin","protocol"]),_L=P.enum(["available","coming-soon","disabled"]),pJ=P.object({id:P.string(),label:P.string(),description:P.string().optional(),href:P.string(),kind:AL,pluginId:P.string(),priority:P.number().default(100),visibility:J_.default("public"),status:_L.default("available")}),lJ=P.object({entityType:P.string(),count:P.number()}),dt=P.object({model:P.string(),version:P.string(),uptime:P.number(),entities:P.number(),entityCounts:P.array(lJ),embeddings:P.number(),ai:P.object({model:P.string(),embeddingModel:P.string()}),daemons:P.array(D_),endpoints:P.array(fJ),interactions:P.array(pJ)});var ot=P.object({id:P.string(),version:P.string(),type:P.enum(["core","entity","service","interface"]),description:P.string().optional(),dependencies:P.array(P.string()).optional(),packageName:P.string()});var FL=P.object({status:P.enum(["healthy","warning","error","unknown"]),message:P.string().optional(),lastCheck:P.string().optional(),details:P.record(P.string(),P.unknown()).optional()}),qL=P.object({name:P.string(),pluginId:P.string(),status:P.string(),health:FL.optional()}),RL=P.object({model:P.string(),version:P.string(),uptime:P.number(),entities:P.number(),entityCounts:P.array(lJ),embeddings:P.number(),ai:P.object({model:P.string(),embeddingModel:P.string()}),daemons:P.array(qL),endpoints:P.array(fJ),interactions:P.array(pJ)});var NL=P.union([P.object({success:P.boolean(),data:P.unknown().optional(),error:P.string().optional()}),P.object({noop:P.literal(!0)})]),ML=P.object({id:P.string(),timestamp:P.string(),type:P.string(),source:P.string(),target:P.string().optional(),metadata:n1.optional()});export{WR as urlCaptureConfigSchema,JR as toolSuccess,PR as toolError,YR as defineChannel,VR as createTool,ZR as createResource,D0 as ToolResultDataSchema,mJ as ServicePlugin,U0 as PendingConfirmationSchema,PI as MessageSchema,NL as MessageResponseSchema,uJ as MessageInterfacePlugin,FD as InterfacePlugin,n1 as ExtensionMetadataSchema,CJ as EntityPlugin,JI as ConversationSchema,wL as ChatContextSchema,XJ as BrainCharacterSchema,ML as BaseMessageSchema,RL as AppInfoSchema,VJ as AnchorProfileSchema,G0 as AgentResponseSchema};
|
|
195
195
|
|
|
196
|
-
//# debugId=
|
|
196
|
+
//# debugId=5B3C58D63E4ACA2664756E2164756E21
|
|
197
197
|
//# sourceMappingURL=plugins.js.map
|