@rizom/brain 0.2.0-alpha.178 → 0.2.0-alpha.179
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 +1297 -1160
- package/dist/chunks/blog-post-adapter-ghky7chd.js +5 -0
- package/dist/chunks/{index-7qzmwknk.js → index-0ddyhcj5.js} +2 -2
- package/dist/chunks/{index-q6b959de.js → index-7xd8xdzz.js} +2 -2
- package/dist/chunks/{index-q6b959de.js.map → index-7xd8xdzz.js.map} +2 -2
- package/dist/chunks/{index-vf1qjxx9.js → index-mexsb6fq.js} +3 -3
- package/dist/chunks/{index-vf1qjxx9.js.map → index-mexsb6fq.js.map} +4 -4
- package/dist/chunks/{index-0jj13cwd.js → index-rt5tcayx.js} +5 -5
- package/dist/chunks/{index-0jj13cwd.js.map → index-rt5tcayx.js.map} +3 -3
- package/dist/chunks/{index-y5phk0t1.js → index-tgy6sxfz.js} +2 -2
- package/dist/chunks/{rss-datasource-vnkzbhm2.js → rss-datasource-y1wnwfe1.js} +2 -2
- package/dist/entities.js +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/plugins.js +1 -1
- package/dist/services.js +1 -1
- package/dist/site.js +6 -6
- package/dist/site.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/blog-post-adapter-wcpwhx74.js +0 -5
- /package/dist/chunks/{blog-post-adapter-wcpwhx74.js.map → blog-post-adapter-ghky7chd.js.map} +0 -0
- /package/dist/chunks/{index-7qzmwknk.js.map → index-0ddyhcj5.js.map} +0 -0
- /package/dist/chunks/{index-y5phk0t1.js.map → index-tgy6sxfz.js.map} +0 -0
- /package/dist/chunks/{rss-datasource-vnkzbhm2.js.map → rss-datasource-y1wnwfe1.js.map} +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{D as _,F as j,G as q,H as y,I as L,J as N,K as k,N as S,O as E,P as U,Q as v,R as WZ,W as cA,X as uA}from"./index-q6b959de.js";import{ra as oA,ua as M,ya as pA,za as c}from"./index-ejwmsqv7.js";import{Ia as wZ}from"./index-spm9f4m4.js";import{Pa as Z}from"./index-awx4ta1w.js";var _$=Z.object({id:Z.string(),sessionId:Z.string(),interfaceType:Z.string(),channelId:Z.string(),channelName:Z.string().optional(),startedAt:Z.string(),lastActiveAt:Z.string(),createdAt:Z.string(),updatedAt:Z.string(),metadata:c}),C$=Z.object({id:Z.string(),conversationId:Z.string(),role:M,content:Z.string(),timestamp:Z.string(),metadata:c});var WA=Z.object({name:Z.string(),role:Z.string(),purpose:Z.string(),values:Z.array(Z.string())}),KA=Z.object({name:Z.string(),kind:Z.enum(["professional","team","collective"]),organization:Z.string().optional(),description:Z.string().optional(),avatar:Z.string().optional(),website:Z.string().optional(),email:Z.string().optional(),socialLinks:Z.array(Z.object({platform:Z.enum(["github","instagram","linkedin","email","website"]),url:Z.string(),label:Z.string().optional()})).optional()});import{createClient as J$}from"@libsql/client";class VA{constructor(A,$){this.name=A,this.unique=$}static[y]="SQLiteIndexBuilderOn";on(...A){return new NA(this.name,A,this.unique)}}class NA{static[y]="SQLiteIndexBuilder";config;constructor(A,$,H){this.config={name:A,columns:$,unique:H,where:void 0}}where(A){return this.config.where=A,this}build(A){return new DA(this.config,A)}}class DA{static[y]="SQLiteIndex";config;constructor(A,$){this.config={...A,table:$}}}function w(A){return new VA(A,!1)}var z=k("conversations",{id:N("id").primaryKey(),sessionId:N("session_id").notNull(),interfaceType:N("interface_type").notNull(),channelId:N("channel_id").notNull(),started:N("started").notNull(),lastActive:N("last_active").notNull(),metadata:N("metadata"),created:N("created").notNull(),updated:N("updated").notNull()},(A)=>({sessionIdx:w("idx_conversations_session").on(A.sessionId),channelIdx:w("idx_conversations_channel").on(A.channelId),interfaceSessionIdx:w("idx_conversations_interface_session").on(A.interfaceType,A.sessionId),interfaceChannelIdx:w("idx_conversations_interface_channel").on(A.interfaceType,A.channelId)})),FA=k("messages",{id:N("id").primaryKey(),conversationId:N("conversation_id").notNull().references(()=>z.id,{onDelete:"cascade"}),role:N("role").notNull(),content:N("content").notNull(),timestamp:N("timestamp").notNull(),metadata:N("metadata")},(A)=>({conversationIdx:w("idx_messages_conversation").on(A.conversationId),timestampIdx:w("idx_messages_timestamp").on(A.timestamp)})),UA=k("summary_tracking",{conversationId:N("conversation_id").primaryKey().references(()=>z.id,{onDelete:"cascade"}),lastSummarizedAt:N("last_summarized_at"),lastMessageId:N("last_message_id"),messagesSinceSummary:L("messages_since_summary").default(0),updated:N("updated").notNull()});var CZ=Z.preprocess((A)=>{if(typeof A!=="string")return A;try{return JSON.parse(A)}catch{return}},Z.record(Z.string(),Z.unknown())).catch({});function J(A){return CZ.parse(A)}var m=Z.object({actorId:Z.string(),canonicalId:Z.string().optional(),interfaceType:Z.string(),role:M,displayName:Z.string().optional(),username:Z.string().optional(),isBot:Z.boolean().optional()}),h=Z.object({messageId:Z.string().optional(),channelId:Z.string().optional(),channelName:Z.string().optional(),threadId:Z.string().optional(),metadata:Z.record(Z.string(),Z.unknown()).optional()}),OZ=Z.looseObject({actor:m.optional(),source:h.optional()});var BZ=Z.object({id:Z.string(),conversationId:Z.string(),role:Z.string(),content:Z.string(),timestamp:Z.string(),metadata:Z.string().nullable()}),MZ=Z.object({conversationId:Z.string(),messageCount:Z.number(),messages:Z.array(BZ),windowStart:Z.number(),windowEnd:Z.number(),windowSize:Z.number(),timestamp:Z.string()});var RA=Z.object({kind:Z.string().min(1),id:Z.string().min(1)}),QZ=Z.object({kind:Z.literal("text"),filename:Z.string().min(1),mediaType:Z.string().min(1),content:Z.string(),sizeBytes:Z.number().nonnegative().optional(),source:RA.optional()}),EZ=Z.custom((A)=>A instanceof Uint8Array),fZ=Z.object({kind:Z.literal("file"),filename:Z.string().min(1),mediaType:Z.string().min(1),data:EZ,sizeBytes:Z.number().nonnegative().optional(),source:RA.optional()}),JZ=Z.discriminatedUnion("kind",[QZ,fZ]),U1=Z.object({userPermissionLevel:Z.enum(["anchor","trusted","public"]).optional(),interfaceType:Z.string().optional(),channelId:Z.string().optional(),channelName:Z.string().optional(),actor:m.optional(),source:h.optional(),attachments:Z.array(JZ).optional()});var TZ=Z.object({status:Z.enum(["healthy","warning","error","unknown"]),message:Z.string().optional(),lastCheck:Z.date().optional(),details:Z.record(Z.string(),Z.unknown()).optional()}),wA=Z.object({name:Z.string(),pluginId:Z.string(),status:Z.string(),health:TZ.optional()});import{McpServer as S1,ResourceTemplate as x1}from"@modelcontextprotocol/sdk/server/mcp.js";var LA=Z.object({interfaceType:Z.string(),userId:Z.string(),conversationId:Z.string().optional(),channelId:Z.string().optional(),channelName:Z.string().optional(),runId:Z.string().optional(),toolCallId:Z.string().optional(),userPermissionLevel:Z.enum(["anchor","trusted","public"]).optional()}),_A=Z.strictObject({success:Z.literal(!0),data:Z.unknown().optional(),message:Z.string().optional(),cached:Z.literal(!0).optional()}),CA=Z.strictObject({success:Z.literal(!1),error:Z.string(),code:Z.string().optional()}),OA=Z.strictObject({needsConfirmation:Z.literal(!0),toolName:Z.string(),summary:Z.string(),completionSummary:Z.string().optional(),preview:Z.string().optional(),args:Z.unknown()}),u=Z.union([_A,CA,OA]);var k1=Z.union([Z.looseObject({success:Z.literal(!0)}),Z.object({success:Z.literal(!1),error:Z.string()})]);var SZ=Z.union([Z.object({success:Z.literal(!0),data:Z.unknown(),message:Z.string().optional()}),Z.object({success:Z.literal(!1),error:Z.string(),code:Z.string().optional()})]);var BH=Z.object({id:Z.string(),type:Z.string(),version:Z.string(),status:Z.string()}),MH=Z.object({name:Z.string(),description:Z.string()}),BA=Z.enum(["anchor","trusted","public"]),d=Z.object({label:Z.string(),url:Z.string(),pluginId:Z.string(),priority:Z.number().default(100),visibility:BA.default("public")}),xZ=Z.enum(["human","agent","admin","protocol"]),yZ=Z.enum(["available","coming-soon","disabled"]),l=Z.object({id:Z.string(),label:Z.string(),description:Z.string().optional(),href:Z.string(),kind:xZ,pluginId:Z.string(),priority:Z.number().default(100),visibility:BA.default("public"),status:yZ.default("available")}),i=Z.object({entityType:Z.string(),count:Z.number()}),kH=Z.object({model:Z.string(),version:Z.string(),uptime:Z.number(),entities:Z.number(),entityCounts:Z.array(i),embeddings:Z.number(),ai:Z.object({model:Z.string(),embeddingModel:Z.string()}),daemons:Z.array(wA),endpoints:Z.array(d),interactions:Z.array(l)});var qH=Z.object({id:Z.string(),version:Z.string(),type:Z.enum(["core","entity","service","interface"]),description:Z.string().optional(),dependencies:Z.array(Z.string()).optional(),packageName:Z.string()});var zZ=Z.object({status:Z.enum(["healthy","warning","error","unknown"]),message:Z.string().optional(),lastCheck:Z.string().optional(),details:Z.record(Z.string(),Z.unknown()).optional()}),mZ=Z.object({name:Z.string(),pluginId:Z.string(),status:Z.string(),health:zZ.optional()}),TH=Z.object({model:Z.string(),version:Z.string(),uptime:Z.number(),entities:Z.number(),entityCounts:Z.array(i),embeddings:Z.number(),ai:Z.object({model:Z.string(),embeddingModel:Z.string()}),daemons:Z.array(mZ),endpoints:Z.array(d),interactions:Z.array(l)});var yH=Z.object({enabled:Z.boolean().describe("Whether the plugin is enabled"),debug:Z.boolean().describe("Enable debug logging for this plugin")});class n extends Error{pluginId;issues;constructor(A,$){super(`Invalid plugin config for ${A}`);this.name="PluginConfigValidationError",this.pluginId=A,this.issues=$}}var r=Z.enum(["file_operations","content_operations","data_processing","batch_processing"]),hZ=Z.object({pluginId:Z.string().optional(),progressToken:Z.union([Z.string(),Z.number()]).optional(),operationType:r,operationTarget:Z.string().optional(),interfaceType:Z.string().optional(),conversationId:Z.string().optional(),channelId:Z.string().optional(),silent:Z.boolean().optional()}),Q=Z.object({pluginId:Z.string().optional(),progressToken:Z.union([Z.string(),Z.number()]).optional(),operationType:r,operationTarget:Z.string().optional(),interfaceType:Z.string().optional(),conversationId:Z.string().optional(),channelId:Z.string().optional(),silent:Z.boolean().optional(),rootJobId:Z.string()}),hH=Z.enum(["none","skip","replace","coalesce"]);var a=Z.enum(["pending","processing","completed","failed"]),MA=Z.enum(["completed","failed"]);var jZ=Z.object({id:Z.string(),type:Z.string(),status:a,data:Z.unknown(),result:Z.unknown().optional(),lastError:Z.string().optional().nullable(),attempts:Z.number(),maxRetries:Z.number(),priority:Z.number(),createdAt:Z.date(),updatedAt:Z.date(),processedAt:Z.date().optional().nullable(),completedAt:Z.date().optional().nullable(),failedAt:Z.date().optional().nullable()}),vZ=Z.object({jobId:Z.string(),type:Z.string(),status:MA,result:Z.unknown().optional(),error:Z.string().optional()}),kA=Z.object({success:Z.literal(!1),error:Z.string().optional()}),s=Z.object({id:Z.string(),type:Z.enum(["job","batch"]),status:a,message:Z.string().optional(),progress:Z.object({current:Z.number(),total:Z.number(),percentage:Z.number()}).optional(),aggregationKey:Z.string().optional(),batchDetails:Z.object({totalOperations:Z.number(),completedOperations:Z.number(),failedOperations:Z.number(),currentOperation:Z.string().optional(),errors:Z.array(Z.string()).optional()}).optional(),jobDetails:Z.object({jobType:Z.string(),priority:Z.number(),retryCount:Z.number()}).optional(),metadata:Q});var IZ=Z.record(Z.string(),Z.unknown());class qA{logger;schema;jobTypeName;constructor(A,$){this.logger=A,this.schema=$.schema,this.jobTypeName=$.jobTypeName}validateAndParse(A){if(!this.schema)throw Error(`${this.jobTypeName}: No schema provided. Override validateAndParse() or provide a schema.`);let $=this.schema.safeParse(A);if(!$.success)return this.logger.warn(`Invalid ${this.jobTypeName} job data`,{data:A,validationError:$.error.issues}),null;return this.logger.debug(`${this.jobTypeName} job data validation successful`,{data:this.summarizeDataForLog($.data)}),$.data}async onError(A,$,H,Y){this.logger.error(`${this.jobTypeName} job error handler triggered`,{jobId:H,errorMessage:A.message,errorStack:A.stack,data:this.summarizeDataForLog($)})}async reportProgress(A,$){await A.report({progress:$.progress,total:$.total??100,message:$.message})}summarizeDataForLog(A){let $=IZ.safeParse(A);return $.success?$.data:{}}}import{createClient as iH}from"@libsql/client";var QA=k("job_queue",{id:N("id").primaryKey().$defaultFn(()=>q()),type:N("type").notNull(),data:N("data").notNull(),result:N("result",{mode:"json"}),source:N("source"),metadata:N("metadata",{mode:"json"}).$type().notNull(),status:N("status",{enum:["pending","processing","completed","failed"]}).notNull().default("pending"),priority:L("priority").notNull().default(0),retryCount:L("retryCount").notNull().default(0),maxRetries:L("maxRetries").notNull().default(3),lastError:N("lastError"),createdAt:L("createdAt").notNull().$defaultFn(()=>Date.now()),scheduledFor:L("scheduledFor").notNull().$defaultFn(()=>Date.now()),startedAt:L("startedAt"),completedAt:L("completedAt")},(A)=>({queueReadyIdx:w("idx_job_queue_ready").on(A.status,A.priority,A.scheduledFor),jobTypeIdx:w("idx_job_queue_type").on(A.type,A.status),jobSourceIdx:w("idx_job_queue_source").on(A.source)}));var Z4=Z.looseObject({deduplicationKey:Z.string().optional()});class C{callback;heartbeatInterval;constructor(A){this.callback=A}static from(A){if(!A)return;return new C(A)}createSub(A){let{scale:$}=A??{};if($){let{start:H,end:Y}=$,X=Y-H;return new C(async(P)=>{let W=H+P.progress/(P.total??100)*X;await this.callback({...P,progress:W,total:100})})}return new C(this.callback)}async report(A){await this.callback(A)}startHeartbeat(A,$=5000){this.stopHeartbeat(),this.heartbeatInterval=setInterval(()=>{this.report({message:A,progress:0}).catch(()=>{})},$)}stopHeartbeat(){if(this.heartbeatInterval)clearInterval(this.heartbeatInterval),this.heartbeatInterval=void 0}toCallback(){return this.callback}}var S4=Z.preprocess((A)=>{if(typeof A!=="string")return A;return JSON.parse(A)},Z.record(Z.string(),Z.unknown()));var pZ=Z.object({id:Z.string(),type:Z.string(),data:Z.string(),status:Z.enum(["pending","processing","completed","failed"]),source:Z.string().nullable(),priority:Z.number(),retryCount:Z.number(),maxRetries:Z.number(),lastError:Z.string().nullable(),createdAt:Z.number(),scheduledFor:Z.number(),startedAt:Z.number().nullable(),completedAt:Z.number().nullable(),metadata:Q,result:Z.unknown().nullable().optional()});function o(A,$,H){return async(Y)=>{let{type:X,data:P,toolContext:W=null,options:G}=Y,{metadata:K,...V}=G??{},D={source:$,...G?.rootJobId&&{rootJobId:G.rootJobId},...V,metadata:{operationType:"data_processing",pluginId:$,...W&&{interfaceType:W.interfaceType,channelId:W.channelId},...K}},F=H&&!X.includes(":")?`${$}:${X}`:X;return A.enqueue({type:F,data:P,options:D})}}function t(A,$){return async(H,Y)=>{let X=q(),P=H.map((G)=>({...G,type:G.type.includes(":")?G.type:`${$}:${G.type}`})),W={...Y,source:$,rootJobId:X,metadata:{...Y?.metadata,operationType:"batch_processing",pluginId:$}};return await A.enqueueBatch(P,W,X,$),X}}function e(A,$){return(H,Y)=>{let X=H.includes(":")?H:`${$}:${H}`;A.registerHandler(X,Y,$)}}var cZ=Z.custom((A)=>typeof A==="object"&&A!==null&&("safeParse"in A)),uZ=Z.object({name:Z.string(),schema:cZ});function EA(A){return uZ.safeParse(A).success}function dZ(A){if(!A)return;return{status:A.status,message:A.message,lastCheck:A.lastCheck?.toISOString(),details:A.details}}function fA(A){return{model:A.model,version:A.version,uptime:A.uptime,entities:A.entities,entityCounts:A.entityCounts,embeddings:A.embeddings,ai:A.ai,daemons:A.daemons.map(($)=>({name:$.name,pluginId:$.pluginId,status:$.status,health:dZ($.health)})),endpoints:A.endpoints,interactions:A.interactions}}function lZ(A){let $=M.safeParse(A);return $.success?$.data:"user"}function I(A){let $=J(A.metadata),H=typeof $.channelName==="string"?$.channelName:void 0;return{id:A.id,sessionId:A.sessionId,interfaceType:A.interfaceType,channelId:A.channelId,channelName:H,startedAt:A.started,lastActiveAt:A.lastActive,createdAt:A.created,updatedAt:A.updated,metadata:$}}function JA(A){return{id:A.id,conversationId:A.conversationId,role:lZ(A.role),content:A.content,timestamp:A.timestamp,metadata:J(A.metadata)}}function TA(A){return WA.parse(A)}function SA(A){return KA.parse(A)}function xA(A){return async()=>{return fA(await A.getAppInfo())}}function yA(A,$){return{get:()=>TA(A.getIdentity()),getProfile:()=>SA(A.getProfile()),getAppInfo:$}}function zA(A,$,H){let Y=A.getMessageBus();return{send:async(P)=>{return Y.send({...P,sender:$})},subscribe:(P,W)=>{if(EA(P)){let G=P,K=W,V=async(D)=>{let F=G.schema.safeParse(D.payload);if(!F.success)return H.warn(`Invalid payload for channel ${G.name}`,{error:F.error.message}),{noop:!0};let{payload:B,...R}=D;return K(F.data,R)};return Y.subscribe(G.name,V)}return Y.subscribe(P,W)}}}function mA(A,$){let H=A.getJobQueueService();return{...A.jobs,enqueue:o(H,$,!0),enqueueBatch:t(A.jobs,$),registerHandler:e(H,$)}}function hA(A){let $=A.getPermissionService();return{assertEntityActionAllowed:(H,Y,X)=>{$.assertEntityActionAllowed(H,Y,X.userPermissionLevel)}}}function jA(A){return{get:async($)=>{let Y=await A.getConversationService().getConversation($);return Y?I(Y):null},search:async($)=>{return(await A.getConversationService().searchConversations($)).map(I)},list:async($)=>{return(await A.getConversationService().listConversations($)).map(I)},getMessages:async($,H)=>{return(await A.getConversationService().getMessages($,H)).map(JA)},countMessages:async($)=>{return A.getConversationService().countMessages($)}}}function vA(A,$){return{registerHandler:(H,Y)=>{A.registerEvalHandler($,H,Y)}}}function IA(A){return{register:($,H)=>{A.getInsightsRegistry().register($,H)}}}function gA(A,$){return{register:(H)=>{A.registerEndpoint({...H,pluginId:$})}}}function bA(A,$){return{register:(H)=>{A.registerInteraction({...H,pluginId:$})}}}function f(A,$,H){let Y=A.getEntityService(),X=A.getLogger().child($),P=A.getDomain(),W=A.getLocalSiteUrl(),G=A.shouldPreferLocalUrls(),K=A.getThemeCSS(),V=xA(A),D=A.getAttachmentRegistry(),F=A.getRuntimeUploadRegistry(),B=A.getRuntimeState();return{pluginId:$,logger:X,entityService:Y,semantic:{project:(R)=>Y.projectSemanticSpace(R)},identity:yA(A,V),appInfo:V,judge:(R)=>A.judge(R),domain:P,siteUrl:P?`https://${P}`:void 0,localSiteUrl:W,previewUrl:P?`https://${pA(P)}`:void 0,preferLocalUrls:G,themeCSS:K,entityDisplay:H?.entityDisplay,spaces:A.getSpaces(),permissions:hA(A),messaging:zA(A,$,X),jobs:mA(A,$),attachments:D,uploads:F,runtimeState:B,conversations:jA(A),dataDir:A.getDataDir(),eval:vA(A,$),insights:IA(A),endpoints:gA(A,$),interactions:bA(A,$)}}function iZ(A){return A.replace(/:/g,"-")}function nZ(A){return A.split(/[:.-]/).map(($)=>$.charAt(0).toUpperCase()+$.slice(1)).join(" ")}var AA=new Map;async function dA(A,$,H){let Y=AA.get($);if(Y!==void 0)return Y;let X=iZ($),P;try{P=await A.getEntity({entityType:"prompt",id:X})}catch{return H}if(P?.content){let W=uA(P.content,Z.record(Z.string(),Z.unknown())).content;return AA.set($,W),W}try{let W=nZ($),G=cA(H,{title:W,target:$});await A.createEntity({entity:{id:X,entityType:"prompt",content:G,metadata:{title:W,target:$,slug:X}}})}catch{}return AA.set($,H),H}function g(A){let $=A.getEntityService(),H=A.getEntityRegistry(),Y=A.getDataSourceRegistry();return{register:(X,P,W,G)=>{H.registerEntityType(X,P,W,G)},getAdapter:(X)=>{try{return H.getAdapter(X)}catch{return}},extendFrontmatterSchema:(X,P)=>{H.extendFrontmatterSchema(X,P)},getEffectiveFrontmatterSchema:(X)=>{return H.getEffectiveFrontmatterSchema(X)},registerCreateInterceptor:(X,P)=>{H.registerCreateInterceptor(X,P)},registerUploadSaveHandler:(X)=>{H.registerUploadSaveHandler(X)},getUploadSaveHandler:(X)=>{return H.getUploadSaveHandler(X)},update:async(X)=>{return $.updateEntity({entity:X})},registerDataSource:(X)=>{Y.register(X)}}}function b(A){return{resolve:($,H)=>{return dA(A,$,H)}}}function lA(A,$,H){let Y=f(A,$,H),X=A.getEntityService();return{...Y,entityService:X,entities:g(A),ai:{query:(P,W)=>A.query(P,W),generate:async(P)=>{return A.generateContent(P)},generateObject:async(P,W,G)=>{return A.generateObject(P,W,G)},generateImage:async(P,W)=>{return A.generateImage(P,W)},canGenerateImages:()=>{return A.canGenerateImages()}},prompts:b(X),permissions:Y.permissions}}function nA(A,$,H){let Y=!1,X=!1;if(A.jobs.registerHandler(H.job.type,H.job.handler),H.initialSync){let P=H.initialSync;A.messaging.subscribe("sync:initial:completed",async()=>{if(Y)return{success:!0};if(Y=!0,!(await P.shouldEnqueue?.()??!0))return $.info("Skipping derived entity projection initial sync",{projectionId:H.id,targetType:H.targetType}),{success:!0};return X=await iA(A,$,H,P.jobData,aZ(P.jobOptions),"initial-sync"),{success:!0}})}if(H.sourceChange){let P=H.sourceChange,W=new Set(P.sourceTypes),G=P.events??["entity:created","entity:updated"],K=async(V)=>{if(P.requireInitialSync&&!Y)return{success:!0};let D=V.payload,F=rZ(P,D);if(!F||!W.has("*")&&!W.has(F))return{success:!0};if(!(await P.shouldEnqueue?.(D)??!0))return{success:!0};let R=await P.jobData(D);if(!R)return{success:!0};return await iA(A,$,H,R,P.jobOptions?.(D),"source-change"),{success:!0}};for(let V of G)A.messaging.subscribe(V,K)}return{hasObservedInitialSync:()=>Y,hasQueuedInitialSync:()=>X}}function rZ(A,$){if(A.sourceType)return A.sourceType;if(A.sourceKind&&A.sourceKind!=="entity")return A.sourceKind;return $.entityType}async function iA(A,$,H,Y,X,P){try{return await A.jobs.enqueue({type:H.job.type,data:Y,...X?{options:X}:{}}),$.info("Queued derived entity projection",{projectionId:H.id,targetType:H.targetType,reason:P}),!0}catch(W){return $.error("Failed to queue derived entity projection",{projectionId:H.id,targetType:H.targetType,reason:P,error:_(W)}),!1}}function aZ(A){return typeof A==="function"?A():A}var sZ=Z.object({toolName:Z.string(),args:Z.unknown(),progressToken:Z.union([Z.string(),Z.number()]).optional(),hasProgress:Z.boolean().optional(),interfaceType:Z.string(),userId:Z.string(),conversationId:Z.string().optional(),channelId:Z.string().optional(),channelName:Z.string().optional(),runId:Z.string().optional(),toolCallId:Z.string().optional(),userPermissionLevel:Z.enum(["anchor","trusted","public"]).optional(),signal:Z.custom((A)=>A instanceof AbortSignal).optional()}),oZ=Z.object({resourceUri:Z.string()});class O{id;version;description;packageName;config;context;get logger(){return this.context?.logger??j.createFresh({context:this.id})}constructor(A,$,H,Y){this.id=A,this.packageName=$.name,this.version=$.version,this.description=$.description??`${$.name} plugin`;let X=Y.safeParse(H);if(!X.success)throw new n(A,X.error.issues.map((P)=>({path:P.path.map(String).join("."),code:P.code,message:P.message})));this.config=X.data}setupMessageHandlers(A){A.messaging.subscribe(`plugin:${this.id}:tool:execute`,async($)=>{try{let H=sZ.safeParse($.payload);if(!H.success)return{success:!1,error:"Invalid tool execution request format"};let{toolName:Y,args:X,progressToken:P,hasProgress:W,interfaceType:G,userId:K,conversationId:V,channelId:D,channelName:F,runId:B,toolCallId:R,userPermissionLevel:XA,signal:PA}=H.data,GA=(await this.getTools()).find((p)=>p.name===Y);if(!GA)return{success:!1,error:`Tool not found: ${Y}`};let _Z={interfaceType:G,userId:K,...V&&{conversationId:V},...D&&{channelId:D},...F&&{channelName:F},...B&&{runId:B},...R&&{toolCallId:R},...XA&&{userPermissionLevel:XA},...PA&&{signal:PA},...W&&P!==void 0&&{progressToken:P,sendProgress:async(p)=>{await A.messaging.send({type:`plugin:${this.id}:progress`,payload:{progressToken:P,notification:p}})}}};return{success:!0,data:await GA.handler(X,_Z)}}catch(H){return this.logger.error("Tool execution error",H),{success:!1,error:_(H)}}}),A.messaging.subscribe(`plugin:${this.id}:resource:get`,async($)=>{try{let H=oZ.safeParse($.payload);if(!H.success)return{success:!1,error:"Invalid resource get request format"};let{resourceUri:Y}=H.data,P=(await this.getResources()).find((G)=>G.uri===Y);if(!P)return{success:!1,error:`Resource not found: ${Y}`};return{success:!0,data:await P.handler()}}catch(H){return this.logger.error("Resource fetch error",H),{success:!1,error:_(H)}}})}async onRegister(A){}async onReady(A){}async ready(){await this.onReady(this.getContext())}async getCapabilities(){let A=await this.getInstructions();return{tools:await this.getTools(),resources:await this.getResources(),...A&&{instructions:A}}}async getTools(){return[]}async getResources(){return[]}async getInstructions(){return}async shutdown(){await this.onShutdown()}async onShutdown(){}getContext(){if(!this.context)throw Error(`Plugin ${this.id}: Plugin not registered yet`);return this.context}determineUserPermissionLevel(A){return"public"}createProgressBridge(A){if(!A)return;let $=this.context;if(!$)return;let H=this.id;return C.from(async(Y)=>{await $.messaging.send({type:`plugin:${H}:progress`,payload:{progressToken:A,notification:{progress:Y.progress,total:Y.total,message:Y.message}}})})}}var j6=Z.object({});class rA extends O{type="entity";entityActionPolicy;derivedEntityProjectionControllers=new Map;constructor(A,$,H,Y,X){super(A,$,H,Y);if(X!==void 0)this.entityActionPolicy=X}async register(A,$){let H=lA(A,this.id,$);if(this.context=H,this.setupMessageHandlers(H),H.entities.register(this.entityType,this.schema,this.adapter,this.getEntityTypeConfig()),this.interceptCreate!==rA.prototype.interceptCreate)H.entities.registerCreateInterceptor(this.entityType,(K,V)=>this.interceptCreate(K,V,H));let Y=this.createGenerationHandler(H);if(Y)H.jobs.registerHandler(`${this.entityType}:generation`,Y);let X=this.getTemplates();if(X&&Object.keys(X).length>0)A.registerTemplates(X,this.id);let P=this.getDataSources();for(let K of P)H.entities.registerDataSource(K);let W=this.getDerivedEntityProjections(H);for(let K of W){let V=nA(H,this.logger,K);this.derivedEntityProjectionControllers.set(K.id,V)}await this.onRegister(this.context);let G=await this.getInstructions();return{tools:[],resources:[],...G&&{instructions:G}}}async interceptCreate(A,$,H){return{kind:"continue",input:A}}createGenerationHandler(A){return null}getTemplates(){return null}getDataSources(){return[]}getEntityTypeConfig(){return}getDerivedEntityProjections(A){return[]}getDerivedEntityProjectionController(A){return this.derivedEntityProjectionControllers.get(A)}}function aA(A){return oA(A)}function sA(A){if(!A)return;return{...A.userPermissionLevel&&{userPermissionLevel:A.userPermissionLevel},...A.interfaceType&&{interfaceType:A.interfaceType},...A.channelId&&{channelId:A.channelId},...A.channelName&&{channelName:A.channelName},...A.actor&&{actor:A.actor},...A.source&&{source:A.source},...A.attachments&&{attachments:A.attachments}}}function tA(A){return{chat:async($,H,Y,X)=>{let P=sA(Y),W=X?await A.chat($,H,P,X):await A.chat($,H,P);return aA(W)},confirmPendingAction:async($,H,Y,X,P)=>{let W=sA(X);if(!W)throw Error("Confirmation requires caller context.");let G=P?await A.confirmPendingAction($,H,Y,W,P):await A.confirmPendingAction($,H,Y,W);return aA(G)},invalidate:()=>{A.invalidateAgent()}}}function eA(A,$,H){let Y=f(A,$,H),X=A.getMCPService(),P=A.getPermissionService(),W=tA(A.getAgentService());return{...Y,mcpTransport:X,agent:W,permissions:{...Y.permissions,getUserLevel:(G,K,V)=>{return P.determineUserLevel(G,K,V)}},daemons:{register:(G,K)=>{let V=`${$}:${G}`;A.registerDaemon(V,K,$),Y.logger.debug(`Registered daemon: ${V}`)}},conversations:{...Y.conversations,start:async(G)=>{return A.getConversationService().startConversation(G)},addMessage:async(G)=>{await A.getConversationService().addMessage(G)},updateMetadata:async(G)=>{return A.getConversationService().updateConversationMetadata(G)},delete:async(G)=>{return A.getConversationService().deleteConversation(G)}},tools:{listForPermissionLevel:(G)=>{return A.listToolsForPermissionLevel(G)}},apiRoutes:{getRoutes:()=>{return A.getPluginApiRoutes()},getMessageBus:()=>{return A.getMessageBus()}},webRoutes:{getRoutes:()=>{return A.getPluginWebRoutes()}},plugins:{has:(G)=>A.hasPlugin(G)}}}var tZ=3600000;class ZA extends O{type="interface";daemon;jobTrackingEntries=new Map;jobTrackingTtlMs=tZ;async register(A,$){let H=eA(A,this.id,$);if(this.context=H,this.initializeDaemon(),this.daemon)await this.registerDaemon(H);return this.setupMessageHandlers(H),await this.onRegister(H),this.getCapabilities()}async onRegister(A){}async registerDaemon(A){if(!this.daemon)return;A.daemons.register(this.id,this.daemon),A.logger.debug(`Registered daemon for interface: ${this.id}`)}createDaemon(){return}requiresDaemonStartup(){return!1}getWebRoutes(){return[]}initializeDaemon(){let A=this.createDaemon();if(A)this.daemon=A}async handleProgressEvent(A,$){}cleanupExpiredEntries(){let A=Date.now(),$=[];for(let[H,Y]of this.jobTrackingEntries)if(A-Y.createdAt>this.jobTrackingTtlMs)$.push(H);for(let H of $)this.jobTrackingEntries.delete(H)}ownsJob(A,$){return this.jobTrackingEntries.has(A)||$!==void 0&&this.jobTrackingEntries.has($)}getJobTracking(A,$){let H=this.jobTrackingEntries.get(A);if(H)return H.info;if($){let Y=this.jobTrackingEntries.get($);if(Y)return Y.info}return}setJobTracking(A,$){this.cleanupExpiredEntries(),this.jobTrackingEntries.set(A,{info:$,createdAt:Date.now()})}removeJobTracking(A){this.jobTrackingEntries.delete(A)}async createJobWithTracking(A,$){let Y=await this.getContext().jobs.enqueue(A);return this.setJobTracking(Y,$),Y}async createBatchWithTracking(A,$,H){let X=await this.getContext().jobs.enqueueBatch(A,H);return this.setJobTracking(X,$),X}}function x(A,$){return{state:$,toolName:A.toolName,conversationId:A.conversationId,interfaceType:A.interfaceType,...A.channelId!==void 0&&{channelId:A.channelId},...A.channelName!==void 0&&{channelName:A.channelName},...A.error!==void 0&&{error:A.error}}}function AZ(A,$){return A.pendingConfirmations?.some((H)=>H.toolName===$)===!0||eZ(A.cards).some((H)=>H.toolName===$)}function eZ(A){return A?.filter(($)=>$.kind==="tool-approval"&&$.state==="approval-requested")??[]}var $A=1e5,A$=[".md",".txt",".markdown"],Z$=["text/plain","text/markdown","text/x-markdown"],$$=/https?:\/\/[^\s<>"{}|\\^`[\]]+?(?=[,;:\s]|$)/gi,H$=["meet.google.com","zoom.us","teams.microsoft.com","whereby.com","gather.town","calendly.com","cal.com","discord.com","discord.gg","cdn.discordapp.com","media.discordapp.net","giphy.com","tenor.com","wetransfer.com","file.io"],Y$=Z.object({captureUrls:Z.boolean().default(!1),blockedUrlDomains:Z.array(Z.string()).default(H$)});function ZZ(A,$){if($&&Z$.some((H)=>$.startsWith(H)))return!0;return A$.some((H)=>A.toLowerCase().endsWith(H))}function $Z(A){return A<=$A}function HZ(A){if(A.includes(0))return!1;try{return new TextDecoder("utf-8",{fatal:!0}).decode(A),!0}catch{return!1}}function YZ(A,$){return`User uploaded a file "${A}":
|
|
2
|
+
import{D as _,F as j,G as q,H as y,I as L,J as N,K as k,N as S,O as E,P as U,Q as v,R as WZ,W as cA,X as uA}from"./index-7xd8xdzz.js";import{ra as oA,ua as M,ya as pA,za as c}from"./index-ejwmsqv7.js";import{Ia as wZ}from"./index-spm9f4m4.js";import{Pa as Z}from"./index-awx4ta1w.js";var _$=Z.object({id:Z.string(),sessionId:Z.string(),interfaceType:Z.string(),channelId:Z.string(),channelName:Z.string().optional(),startedAt:Z.string(),lastActiveAt:Z.string(),createdAt:Z.string(),updatedAt:Z.string(),metadata:c}),O$=Z.object({id:Z.string(),conversationId:Z.string(),role:M,content:Z.string(),timestamp:Z.string(),metadata:c});var WA=Z.object({name:Z.string(),role:Z.string(),purpose:Z.string(),values:Z.array(Z.string())}),KA=Z.object({name:Z.string(),kind:Z.enum(["professional","team","collective"]),organization:Z.string().optional(),description:Z.string().optional(),avatar:Z.string().optional(),website:Z.string().optional(),email:Z.string().optional(),socialLinks:Z.array(Z.object({platform:Z.enum(["github","instagram","linkedin","email","website"]),url:Z.string(),label:Z.string().optional()})).optional()});import{createClient as J$}from"@libsql/client";class VA{constructor(A,$){this.name=A,this.unique=$}static[y]="SQLiteIndexBuilderOn";on(...A){return new NA(this.name,A,this.unique)}}class NA{static[y]="SQLiteIndexBuilder";config;constructor(A,$,H){this.config={name:A,columns:$,unique:H,where:void 0}}where(A){return this.config.where=A,this}build(A){return new DA(this.config,A)}}class DA{static[y]="SQLiteIndex";config;constructor(A,$){this.config={...A,table:$}}}function w(A){return new VA(A,!1)}var z=k("conversations",{id:N("id").primaryKey(),sessionId:N("session_id").notNull(),interfaceType:N("interface_type").notNull(),channelId:N("channel_id").notNull(),started:N("started").notNull(),lastActive:N("last_active").notNull(),metadata:N("metadata"),created:N("created").notNull(),updated:N("updated").notNull()},(A)=>({sessionIdx:w("idx_conversations_session").on(A.sessionId),channelIdx:w("idx_conversations_channel").on(A.channelId),interfaceSessionIdx:w("idx_conversations_interface_session").on(A.interfaceType,A.sessionId),interfaceChannelIdx:w("idx_conversations_interface_channel").on(A.interfaceType,A.channelId)})),FA=k("messages",{id:N("id").primaryKey(),conversationId:N("conversation_id").notNull().references(()=>z.id,{onDelete:"cascade"}),role:N("role").notNull(),content:N("content").notNull(),timestamp:N("timestamp").notNull(),metadata:N("metadata")},(A)=>({conversationIdx:w("idx_messages_conversation").on(A.conversationId),timestampIdx:w("idx_messages_timestamp").on(A.timestamp)})),UA=k("summary_tracking",{conversationId:N("conversation_id").primaryKey().references(()=>z.id,{onDelete:"cascade"}),lastSummarizedAt:N("last_summarized_at"),lastMessageId:N("last_message_id"),messagesSinceSummary:L("messages_since_summary").default(0),updated:N("updated").notNull()});var OZ=Z.preprocess((A)=>{if(typeof A!=="string")return A;try{return JSON.parse(A)}catch{return}},Z.record(Z.string(),Z.unknown())).catch({});function J(A){return OZ.parse(A)}var m=Z.object({actorId:Z.string(),canonicalId:Z.string().optional(),interfaceType:Z.string(),role:M,displayName:Z.string().optional(),username:Z.string().optional(),isBot:Z.boolean().optional()}),h=Z.object({messageId:Z.string().optional(),channelId:Z.string().optional(),channelName:Z.string().optional(),threadId:Z.string().optional(),metadata:Z.record(Z.string(),Z.unknown()).optional()}),CZ=Z.looseObject({actor:m.optional(),source:h.optional()});var BZ=Z.object({id:Z.string(),conversationId:Z.string(),role:Z.string(),content:Z.string(),timestamp:Z.string(),metadata:Z.string().nullable()}),MZ=Z.object({conversationId:Z.string(),messageCount:Z.number(),messages:Z.array(BZ),windowStart:Z.number(),windowEnd:Z.number(),windowSize:Z.number(),timestamp:Z.string()});var RA=Z.object({kind:Z.string().min(1),id:Z.string().min(1)}),QZ=Z.object({kind:Z.literal("text"),filename:Z.string().min(1),mediaType:Z.string().min(1),content:Z.string(),sizeBytes:Z.number().nonnegative().optional(),source:RA.optional()}),EZ=Z.custom((A)=>A instanceof Uint8Array),fZ=Z.object({kind:Z.literal("file"),filename:Z.string().min(1),mediaType:Z.string().min(1),data:EZ,sizeBytes:Z.number().nonnegative().optional(),source:RA.optional()}),JZ=Z.discriminatedUnion("kind",[QZ,fZ]),U1=Z.object({userPermissionLevel:Z.enum(["anchor","trusted","public"]).optional(),interfaceType:Z.string().optional(),channelId:Z.string().optional(),channelName:Z.string().optional(),actor:m.optional(),source:h.optional(),attachments:Z.array(JZ).optional()});var TZ=Z.object({status:Z.enum(["healthy","warning","error","unknown"]),message:Z.string().optional(),lastCheck:Z.date().optional(),details:Z.record(Z.string(),Z.unknown()).optional()}),wA=Z.object({name:Z.string(),pluginId:Z.string(),status:Z.string(),health:TZ.optional()});import{McpServer as S1,ResourceTemplate as x1}from"@modelcontextprotocol/sdk/server/mcp.js";var LA=Z.object({interfaceType:Z.string(),userId:Z.string(),conversationId:Z.string().optional(),channelId:Z.string().optional(),channelName:Z.string().optional(),runId:Z.string().optional(),toolCallId:Z.string().optional(),userPermissionLevel:Z.enum(["anchor","trusted","public"]).optional()}),_A=Z.strictObject({success:Z.literal(!0),data:Z.unknown().optional(),message:Z.string().optional(),cached:Z.literal(!0).optional()}),OA=Z.strictObject({success:Z.literal(!1),error:Z.string(),code:Z.string().optional()}),CA=Z.strictObject({needsConfirmation:Z.literal(!0),toolName:Z.string(),summary:Z.string(),completionSummary:Z.string().optional(),preview:Z.string().optional(),args:Z.unknown()}),u=Z.union([_A,OA,CA]);var k1=Z.union([Z.looseObject({success:Z.literal(!0)}),Z.object({success:Z.literal(!1),error:Z.string()})]);var SZ=Z.union([Z.object({success:Z.literal(!0),data:Z.unknown(),message:Z.string().optional()}),Z.object({success:Z.literal(!1),error:Z.string(),code:Z.string().optional()})]);var BH=Z.object({id:Z.string(),type:Z.string(),version:Z.string(),status:Z.string()}),MH=Z.object({name:Z.string(),description:Z.string()}),BA=Z.enum(["anchor","trusted","public"]),d=Z.object({label:Z.string(),url:Z.string(),pluginId:Z.string(),priority:Z.number().default(100),visibility:BA.default("public")}),xZ=Z.enum(["human","agent","admin","protocol"]),yZ=Z.enum(["available","coming-soon","disabled"]),l=Z.object({id:Z.string(),label:Z.string(),description:Z.string().optional(),href:Z.string(),kind:xZ,pluginId:Z.string(),priority:Z.number().default(100),visibility:BA.default("public"),status:yZ.default("available")}),i=Z.object({entityType:Z.string(),count:Z.number()}),kH=Z.object({model:Z.string(),version:Z.string(),uptime:Z.number(),entities:Z.number(),entityCounts:Z.array(i),embeddings:Z.number(),ai:Z.object({model:Z.string(),embeddingModel:Z.string()}),daemons:Z.array(wA),endpoints:Z.array(d),interactions:Z.array(l)});var qH=Z.object({id:Z.string(),version:Z.string(),type:Z.enum(["core","entity","service","interface"]),description:Z.string().optional(),dependencies:Z.array(Z.string()).optional(),packageName:Z.string()});var zZ=Z.object({status:Z.enum(["healthy","warning","error","unknown"]),message:Z.string().optional(),lastCheck:Z.string().optional(),details:Z.record(Z.string(),Z.unknown()).optional()}),mZ=Z.object({name:Z.string(),pluginId:Z.string(),status:Z.string(),health:zZ.optional()}),TH=Z.object({model:Z.string(),version:Z.string(),uptime:Z.number(),entities:Z.number(),entityCounts:Z.array(i),embeddings:Z.number(),ai:Z.object({model:Z.string(),embeddingModel:Z.string()}),daemons:Z.array(mZ),endpoints:Z.array(d),interactions:Z.array(l)});var yH=Z.object({enabled:Z.boolean().describe("Whether the plugin is enabled"),debug:Z.boolean().describe("Enable debug logging for this plugin")});class n extends Error{pluginId;issues;constructor(A,$){super(`Invalid plugin config for ${A}`);this.name="PluginConfigValidationError",this.pluginId=A,this.issues=$}}var r=Z.enum(["file_operations","content_operations","data_processing","batch_processing"]),hZ=Z.object({pluginId:Z.string().optional(),progressToken:Z.union([Z.string(),Z.number()]).optional(),operationType:r,operationTarget:Z.string().optional(),interfaceType:Z.string().optional(),conversationId:Z.string().optional(),channelId:Z.string().optional(),silent:Z.boolean().optional()}),Q=Z.object({pluginId:Z.string().optional(),progressToken:Z.union([Z.string(),Z.number()]).optional(),operationType:r,operationTarget:Z.string().optional(),interfaceType:Z.string().optional(),conversationId:Z.string().optional(),channelId:Z.string().optional(),silent:Z.boolean().optional(),rootJobId:Z.string()}),hH=Z.enum(["none","skip","replace","coalesce"]);var a=Z.enum(["pending","processing","completed","failed"]),MA=Z.enum(["completed","failed"]);var jZ=Z.object({id:Z.string(),type:Z.string(),status:a,data:Z.unknown(),result:Z.unknown().optional(),lastError:Z.string().optional().nullable(),attempts:Z.number(),maxRetries:Z.number(),priority:Z.number(),createdAt:Z.date(),updatedAt:Z.date(),processedAt:Z.date().optional().nullable(),completedAt:Z.date().optional().nullable(),failedAt:Z.date().optional().nullable()}),vZ=Z.object({jobId:Z.string(),type:Z.string(),status:MA,result:Z.unknown().optional(),error:Z.string().optional()}),kA=Z.object({success:Z.literal(!1),error:Z.string().optional()}),s=Z.object({id:Z.string(),type:Z.enum(["job","batch"]),status:a,message:Z.string().optional(),progress:Z.object({current:Z.number(),total:Z.number(),percentage:Z.number()}).optional(),aggregationKey:Z.string().optional(),batchDetails:Z.object({totalOperations:Z.number(),completedOperations:Z.number(),failedOperations:Z.number(),currentOperation:Z.string().optional(),errors:Z.array(Z.string()).optional()}).optional(),jobDetails:Z.object({jobType:Z.string(),priority:Z.number(),retryCount:Z.number()}).optional(),metadata:Q});var IZ=Z.record(Z.string(),Z.unknown());class qA{logger;schema;jobTypeName;constructor(A,$){this.logger=A,this.schema=$.schema,this.jobTypeName=$.jobTypeName}validateAndParse(A){if(!this.schema)throw Error(`${this.jobTypeName}: No schema provided. Override validateAndParse() or provide a schema.`);let $=this.schema.safeParse(A);if(!$.success)return this.logger.warn(`Invalid ${this.jobTypeName} job data`,{data:A,validationError:$.error.issues}),null;return this.logger.debug(`${this.jobTypeName} job data validation successful`,{data:this.summarizeDataForLog($.data)}),$.data}async onError(A,$,H,Y){this.logger.error(`${this.jobTypeName} job error handler triggered`,{jobId:H,errorMessage:A.message,errorStack:A.stack,data:this.summarizeDataForLog($)})}async reportProgress(A,$){await A.report({progress:$.progress,total:$.total??100,message:$.message})}summarizeDataForLog(A){let $=IZ.safeParse(A);return $.success?$.data:{}}}import{createClient as iH}from"@libsql/client";var QA=k("job_queue",{id:N("id").primaryKey().$defaultFn(()=>q()),type:N("type").notNull(),data:N("data").notNull(),result:N("result",{mode:"json"}),source:N("source"),metadata:N("metadata",{mode:"json"}).$type().notNull(),status:N("status",{enum:["pending","processing","completed","failed"]}).notNull().default("pending"),priority:L("priority").notNull().default(0),retryCount:L("retryCount").notNull().default(0),maxRetries:L("maxRetries").notNull().default(3),lastError:N("lastError"),createdAt:L("createdAt").notNull().$defaultFn(()=>Date.now()),scheduledFor:L("scheduledFor").notNull().$defaultFn(()=>Date.now()),startedAt:L("startedAt"),completedAt:L("completedAt")},(A)=>({queueReadyIdx:w("idx_job_queue_ready").on(A.status,A.priority,A.scheduledFor),jobTypeIdx:w("idx_job_queue_type").on(A.type,A.status),jobSourceIdx:w("idx_job_queue_source").on(A.source)}));var Z4=Z.looseObject({deduplicationKey:Z.string().optional()});class O{callback;heartbeatInterval;constructor(A){this.callback=A}static from(A){if(!A)return;return new O(A)}createSub(A){let{scale:$}=A??{};if($){let{start:H,end:Y}=$,X=Y-H;return new O(async(P)=>{let W=H+P.progress/(P.total??100)*X;await this.callback({...P,progress:W,total:100})})}return new O(this.callback)}async report(A){await this.callback(A)}startHeartbeat(A,$=5000){this.stopHeartbeat(),this.heartbeatInterval=setInterval(()=>{this.report({message:A,progress:0}).catch(()=>{})},$)}stopHeartbeat(){if(this.heartbeatInterval)clearInterval(this.heartbeatInterval),this.heartbeatInterval=void 0}toCallback(){return this.callback}}var S4=Z.preprocess((A)=>{if(typeof A!=="string")return A;return JSON.parse(A)},Z.record(Z.string(),Z.unknown()));var pZ=Z.object({id:Z.string(),type:Z.string(),data:Z.string(),status:Z.enum(["pending","processing","completed","failed"]),source:Z.string().nullable(),priority:Z.number(),retryCount:Z.number(),maxRetries:Z.number(),lastError:Z.string().nullable(),createdAt:Z.number(),scheduledFor:Z.number(),startedAt:Z.number().nullable(),completedAt:Z.number().nullable(),metadata:Q,result:Z.unknown().nullable().optional()});function o(A,$,H){return async(Y)=>{let{type:X,data:P,toolContext:W=null,options:G}=Y,{metadata:K,...V}=G??{},D={source:$,...G?.rootJobId&&{rootJobId:G.rootJobId},...V,metadata:{operationType:"data_processing",pluginId:$,...W&&{interfaceType:W.interfaceType,channelId:W.channelId},...K}},F=H&&!X.includes(":")?`${$}:${X}`:X;return A.enqueue({type:F,data:P,options:D})}}function t(A,$){return async(H,Y)=>{let X=q(),P=H.map((G)=>({...G,type:G.type.includes(":")?G.type:`${$}:${G.type}`})),W={...Y,source:$,rootJobId:X,metadata:{...Y?.metadata,operationType:"batch_processing",pluginId:$}};return await A.enqueueBatch(P,W,X,$),X}}function e(A,$){return(H,Y)=>{let X=H.includes(":")?H:`${$}:${H}`;A.registerHandler(X,Y,$)}}var cZ=Z.custom((A)=>typeof A==="object"&&A!==null&&("safeParse"in A)),uZ=Z.object({name:Z.string(),schema:cZ});function EA(A){return uZ.safeParse(A).success}function dZ(A){if(!A)return;return{status:A.status,message:A.message,lastCheck:A.lastCheck?.toISOString(),details:A.details}}function fA(A){return{model:A.model,version:A.version,uptime:A.uptime,entities:A.entities,entityCounts:A.entityCounts,embeddings:A.embeddings,ai:A.ai,daemons:A.daemons.map(($)=>({name:$.name,pluginId:$.pluginId,status:$.status,health:dZ($.health)})),endpoints:A.endpoints,interactions:A.interactions}}function lZ(A){let $=M.safeParse(A);return $.success?$.data:"user"}function I(A){let $=J(A.metadata),H=typeof $.channelName==="string"?$.channelName:void 0;return{id:A.id,sessionId:A.sessionId,interfaceType:A.interfaceType,channelId:A.channelId,channelName:H,startedAt:A.started,lastActiveAt:A.lastActive,createdAt:A.created,updatedAt:A.updated,metadata:$}}function JA(A){return{id:A.id,conversationId:A.conversationId,role:lZ(A.role),content:A.content,timestamp:A.timestamp,metadata:J(A.metadata)}}function TA(A){return WA.parse(A)}function SA(A){return KA.parse(A)}function xA(A){return async()=>{return fA(await A.getAppInfo())}}function yA(A,$){return{get:()=>TA(A.getIdentity()),getProfile:()=>SA(A.getProfile()),getAppInfo:$}}function zA(A,$,H){let Y=A.getMessageBus();return{send:async(P)=>{return Y.send({...P,sender:$})},subscribe:(P,W)=>{if(EA(P)){let G=P,K=W,V=async(D)=>{let F=G.schema.safeParse(D.payload);if(!F.success)return H.warn(`Invalid payload for channel ${G.name}`,{error:F.error.message}),{noop:!0};let{payload:B,...R}=D;return K(F.data,R)};return Y.subscribe(G.name,V)}return Y.subscribe(P,W)}}}function mA(A,$){let H=A.getJobQueueService();return{...A.jobs,enqueue:o(H,$,!0),enqueueBatch:t(A.jobs,$),registerHandler:e(H,$)}}function hA(A){let $=A.getPermissionService();return{assertEntityActionAllowed:(H,Y,X)=>{$.assertEntityActionAllowed(H,Y,X.userPermissionLevel)}}}function jA(A){return{get:async($)=>{let Y=await A.getConversationService().getConversation($);return Y?I(Y):null},search:async($)=>{return(await A.getConversationService().searchConversations($)).map(I)},list:async($)=>{return(await A.getConversationService().listConversations($)).map(I)},getMessages:async($,H)=>{return(await A.getConversationService().getMessages($,H)).map(JA)},countMessages:async($)=>{return A.getConversationService().countMessages($)}}}function vA(A,$){return{registerHandler:(H,Y)=>{A.registerEvalHandler($,H,Y)}}}function IA(A){return{register:($,H)=>{A.getInsightsRegistry().register($,H)}}}function gA(A,$){return{register:(H)=>{A.registerEndpoint({...H,pluginId:$})}}}function bA(A,$){return{register:(H)=>{A.registerInteraction({...H,pluginId:$})}}}function f(A,$,H){let Y=A.getEntityService(),X=A.getLogger().child($),P=A.getDomain(),W=A.getLocalSiteUrl(),G=A.shouldPreferLocalUrls(),K=A.getThemeCSS(),V=xA(A),D=A.getAttachmentRegistry(),F=A.getRuntimeUploadRegistry(),B=A.getRuntimeState();return{pluginId:$,logger:X,entityService:Y,semantic:{project:(R)=>Y.projectSemanticSpace(R)},identity:yA(A,V),appInfo:V,judge:(R)=>A.judge(R),domain:P,siteUrl:P?`https://${P}`:void 0,localSiteUrl:W,previewUrl:P?`https://${pA(P)}`:void 0,preferLocalUrls:G,themeCSS:K,entityDisplay:H?.entityDisplay,spaces:A.getSpaces(),permissions:hA(A),messaging:zA(A,$,X),jobs:mA(A,$),attachments:D,uploads:F,runtimeState:B,conversations:jA(A),dataDir:A.getDataDir(),eval:vA(A,$),insights:IA(A),endpoints:gA(A,$),interactions:bA(A,$)}}function iZ(A){return A.replace(/:/g,"-")}function nZ(A){return A.split(/[:.-]/).map(($)=>$.charAt(0).toUpperCase()+$.slice(1)).join(" ")}var AA=new Map;async function dA(A,$,H){let Y=AA.get($);if(Y!==void 0)return Y;let X=iZ($),P;try{P=await A.getEntity({entityType:"prompt",id:X})}catch{return H}if(P?.content){let W=uA(P.content,Z.record(Z.string(),Z.unknown())).content;return AA.set($,W),W}try{let W=nZ($),G=cA(H,{title:W,target:$});await A.createEntity({entity:{id:X,entityType:"prompt",content:G,metadata:{title:W,target:$,slug:X}}})}catch{}return AA.set($,H),H}function g(A){let $=A.getEntityService(),H=A.getEntityRegistry(),Y=A.getDataSourceRegistry();return{register:(X,P,W,G)=>{H.registerEntityType(X,P,W,G)},getAdapter:(X)=>{try{return H.getAdapter(X)}catch{return}},extendFrontmatterSchema:(X,P)=>{H.extendFrontmatterSchema(X,P)},getEffectiveFrontmatterSchema:(X)=>{return H.getEffectiveFrontmatterSchema(X)},registerCreateInterceptor:(X,P)=>{H.registerCreateInterceptor(X,P)},registerUploadSaveHandler:(X)=>{H.registerUploadSaveHandler(X)},getUploadSaveHandler:(X)=>{return H.getUploadSaveHandler(X)},update:async(X)=>{return $.updateEntity({entity:X})},registerDataSource:(X)=>{Y.register(X)}}}function b(A){return{resolve:($,H)=>{return dA(A,$,H)}}}function lA(A,$,H){let Y=f(A,$,H),X=A.getEntityService();return{...Y,entityService:X,entities:g(A),ai:{query:(P,W)=>A.query(P,W),generate:async(P)=>{return A.generateContent(P)},generateObject:async(P,W,G)=>{return A.generateObject(P,W,G)},generateImage:async(P,W)=>{return A.generateImage(P,W)},canGenerateImages:()=>{return A.canGenerateImages()}},prompts:b(X),permissions:Y.permissions}}function nA(A,$,H){let Y=!1,X=!1;if(A.jobs.registerHandler(H.job.type,H.job.handler),H.initialSync){let P=H.initialSync;A.messaging.subscribe("sync:initial:completed",async()=>{if(Y)return{success:!0};if(Y=!0,!(await P.shouldEnqueue?.()??!0))return $.info("Skipping derived entity projection initial sync",{projectionId:H.id,targetType:H.targetType}),{success:!0};return X=await iA(A,$,H,P.jobData,aZ(P.jobOptions),"initial-sync"),{success:!0}})}if(H.sourceChange){let P=H.sourceChange,W=new Set(P.sourceTypes),G=P.events??["entity:created","entity:updated"],K=async(V)=>{if(P.requireInitialSync&&!Y)return{success:!0};let D=V.payload,F=rZ(P,D);if(!F||!W.has("*")&&!W.has(F))return{success:!0};if(!(await P.shouldEnqueue?.(D)??!0))return{success:!0};let R=await P.jobData(D);if(!R)return{success:!0};return await iA(A,$,H,R,P.jobOptions?.(D),"source-change"),{success:!0}};for(let V of G)A.messaging.subscribe(V,K)}return{hasObservedInitialSync:()=>Y,hasQueuedInitialSync:()=>X}}function rZ(A,$){if(A.sourceType)return A.sourceType;if(A.sourceKind&&A.sourceKind!=="entity")return A.sourceKind;return $.entityType}async function iA(A,$,H,Y,X,P){try{return await A.jobs.enqueue({type:H.job.type,data:Y,...X?{options:X}:{}}),$.info("Queued derived entity projection",{projectionId:H.id,targetType:H.targetType,reason:P}),!0}catch(W){return $.error("Failed to queue derived entity projection",{projectionId:H.id,targetType:H.targetType,reason:P,error:_(W)}),!1}}function aZ(A){return typeof A==="function"?A():A}var sZ=Z.object({toolName:Z.string(),args:Z.unknown(),progressToken:Z.union([Z.string(),Z.number()]).optional(),hasProgress:Z.boolean().optional(),interfaceType:Z.string(),userId:Z.string(),conversationId:Z.string().optional(),channelId:Z.string().optional(),channelName:Z.string().optional(),runId:Z.string().optional(),toolCallId:Z.string().optional(),userPermissionLevel:Z.enum(["anchor","trusted","public"]).optional(),signal:Z.custom((A)=>A instanceof AbortSignal).optional()}),oZ=Z.object({resourceUri:Z.string()});class C{id;version;description;packageName;config;context;get logger(){return this.context?.logger??j.createFresh({context:this.id})}constructor(A,$,H,Y){this.id=A,this.packageName=$.name,this.version=$.version,this.description=$.description??`${$.name} plugin`;let X=Y.safeParse(H);if(!X.success)throw new n(A,X.error.issues.map((P)=>({path:P.path.map(String).join("."),code:P.code,message:P.message})));this.config=X.data}setupMessageHandlers(A){A.messaging.subscribe(`plugin:${this.id}:tool:execute`,async($)=>{try{let H=sZ.safeParse($.payload);if(!H.success)return{success:!1,error:"Invalid tool execution request format"};let{toolName:Y,args:X,progressToken:P,hasProgress:W,interfaceType:G,userId:K,conversationId:V,channelId:D,channelName:F,runId:B,toolCallId:R,userPermissionLevel:XA,signal:PA}=H.data,GA=(await this.getTools()).find((p)=>p.name===Y);if(!GA)return{success:!1,error:`Tool not found: ${Y}`};let _Z={interfaceType:G,userId:K,...V&&{conversationId:V},...D&&{channelId:D},...F&&{channelName:F},...B&&{runId:B},...R&&{toolCallId:R},...XA&&{userPermissionLevel:XA},...PA&&{signal:PA},...W&&P!==void 0&&{progressToken:P,sendProgress:async(p)=>{await A.messaging.send({type:`plugin:${this.id}:progress`,payload:{progressToken:P,notification:p}})}}};return{success:!0,data:await GA.handler(X,_Z)}}catch(H){return this.logger.error("Tool execution error",H),{success:!1,error:_(H)}}}),A.messaging.subscribe(`plugin:${this.id}:resource:get`,async($)=>{try{let H=oZ.safeParse($.payload);if(!H.success)return{success:!1,error:"Invalid resource get request format"};let{resourceUri:Y}=H.data,P=(await this.getResources()).find((G)=>G.uri===Y);if(!P)return{success:!1,error:`Resource not found: ${Y}`};return{success:!0,data:await P.handler()}}catch(H){return this.logger.error("Resource fetch error",H),{success:!1,error:_(H)}}})}async onRegister(A){}async onReady(A){}async ready(){await this.onReady(this.getContext())}async getCapabilities(){let A=await this.getInstructions();return{tools:await this.getTools(),resources:await this.getResources(),...A&&{instructions:A}}}async getTools(){return[]}async getResources(){return[]}async getInstructions(){return}async shutdown(){await this.onShutdown()}async onShutdown(){}getContext(){if(!this.context)throw Error(`Plugin ${this.id}: Plugin not registered yet`);return this.context}determineUserPermissionLevel(A){return"public"}createProgressBridge(A){if(!A)return;let $=this.context;if(!$)return;let H=this.id;return O.from(async(Y)=>{await $.messaging.send({type:`plugin:${H}:progress`,payload:{progressToken:A,notification:{progress:Y.progress,total:Y.total,message:Y.message}}})})}}var j6=Z.object({});class rA extends C{type="entity";entityActionPolicy;derivedEntityProjectionControllers=new Map;constructor(A,$,H,Y,X){super(A,$,H,Y);if(X!==void 0)this.entityActionPolicy=X}async register(A,$){let H=lA(A,this.id,$);if(this.context=H,this.setupMessageHandlers(H),H.entities.register(this.entityType,this.schema,this.adapter,this.getEntityTypeConfig()),this.interceptCreate!==rA.prototype.interceptCreate)H.entities.registerCreateInterceptor(this.entityType,(K,V)=>this.interceptCreate(K,V,H));let Y=this.createGenerationHandler(H);if(Y)H.jobs.registerHandler(`${this.entityType}:generation`,Y);let X=this.getTemplates();if(X&&Object.keys(X).length>0)A.registerTemplates(X,this.id);let P=this.getDataSources();for(let K of P)H.entities.registerDataSource(K);let W=this.getDerivedEntityProjections(H);for(let K of W){let V=nA(H,this.logger,K);this.derivedEntityProjectionControllers.set(K.id,V)}await this.onRegister(this.context);let G=await this.getInstructions();return{tools:[],resources:[],...G&&{instructions:G}}}async interceptCreate(A,$,H){return{kind:"continue",input:A}}createGenerationHandler(A){return null}getTemplates(){return null}getDataSources(){return[]}getEntityTypeConfig(){return}getDerivedEntityProjections(A){return[]}getDerivedEntityProjectionController(A){return this.derivedEntityProjectionControllers.get(A)}}function aA(A){return oA(A)}function sA(A){if(!A)return;return{...A.userPermissionLevel&&{userPermissionLevel:A.userPermissionLevel},...A.interfaceType&&{interfaceType:A.interfaceType},...A.channelId&&{channelId:A.channelId},...A.channelName&&{channelName:A.channelName},...A.actor&&{actor:A.actor},...A.source&&{source:A.source},...A.attachments&&{attachments:A.attachments}}}function tA(A){return{chat:async($,H,Y,X)=>{let P=sA(Y),W=X?await A.chat($,H,P,X):await A.chat($,H,P);return aA(W)},confirmPendingAction:async($,H,Y,X,P)=>{let W=sA(X);if(!W)throw Error("Confirmation requires caller context.");let G=P?await A.confirmPendingAction($,H,Y,W,P):await A.confirmPendingAction($,H,Y,W);return aA(G)},invalidate:()=>{A.invalidateAgent()}}}function eA(A,$,H){let Y=f(A,$,H),X=A.getMCPService(),P=A.getPermissionService(),W=tA(A.getAgentService());return{...Y,mcpTransport:X,agent:W,permissions:{...Y.permissions,getUserLevel:(G,K,V)=>{return P.determineUserLevel(G,K,V)}},daemons:{register:(G,K)=>{let V=`${$}:${G}`;A.registerDaemon(V,K,$),Y.logger.debug(`Registered daemon: ${V}`)}},conversations:{...Y.conversations,start:async(G)=>{return A.getConversationService().startConversation(G)},addMessage:async(G)=>{await A.getConversationService().addMessage(G)},updateMetadata:async(G)=>{return A.getConversationService().updateConversationMetadata(G)},delete:async(G)=>{return A.getConversationService().deleteConversation(G)}},tools:{listForPermissionLevel:(G)=>{return A.listToolsForPermissionLevel(G)}},apiRoutes:{getRoutes:()=>{return A.getPluginApiRoutes()},getMessageBus:()=>{return A.getMessageBus()}},webRoutes:{getRoutes:()=>{return A.getPluginWebRoutes()}},plugins:{has:(G)=>A.hasPlugin(G)}}}var tZ=3600000;class ZA extends C{type="interface";daemon;jobTrackingEntries=new Map;jobTrackingTtlMs=tZ;async register(A,$){let H=eA(A,this.id,$);if(this.context=H,this.initializeDaemon(),this.daemon)await this.registerDaemon(H);return this.setupMessageHandlers(H),await this.onRegister(H),this.getCapabilities()}async onRegister(A){}async registerDaemon(A){if(!this.daemon)return;A.daemons.register(this.id,this.daemon),A.logger.debug(`Registered daemon for interface: ${this.id}`)}createDaemon(){return}requiresDaemonStartup(){return!1}getWebRoutes(){return[]}initializeDaemon(){let A=this.createDaemon();if(A)this.daemon=A}async handleProgressEvent(A,$){}cleanupExpiredEntries(){let A=Date.now(),$=[];for(let[H,Y]of this.jobTrackingEntries)if(A-Y.createdAt>this.jobTrackingTtlMs)$.push(H);for(let H of $)this.jobTrackingEntries.delete(H)}ownsJob(A,$){return this.jobTrackingEntries.has(A)||$!==void 0&&this.jobTrackingEntries.has($)}getJobTracking(A,$){let H=this.jobTrackingEntries.get(A);if(H)return H.info;if($){let Y=this.jobTrackingEntries.get($);if(Y)return Y.info}return}setJobTracking(A,$){this.cleanupExpiredEntries(),this.jobTrackingEntries.set(A,{info:$,createdAt:Date.now()})}removeJobTracking(A){this.jobTrackingEntries.delete(A)}async createJobWithTracking(A,$){let Y=await this.getContext().jobs.enqueue(A);return this.setJobTracking(Y,$),Y}async createBatchWithTracking(A,$,H){let X=await this.getContext().jobs.enqueueBatch(A,H);return this.setJobTracking(X,$),X}}function x(A,$){return{state:$,toolName:A.toolName,conversationId:A.conversationId,interfaceType:A.interfaceType,...A.channelId!==void 0&&{channelId:A.channelId},...A.channelName!==void 0&&{channelName:A.channelName},...A.error!==void 0&&{error:A.error}}}function AZ(A,$){return A.pendingConfirmations?.some((H)=>H.toolName===$)===!0||eZ(A.cards).some((H)=>H.toolName===$)}function eZ(A){return A?.filter(($)=>$.kind==="tool-approval"&&$.state==="approval-requested")??[]}var $A=1e5,A$=[".md",".txt",".markdown"],Z$=["text/plain","text/markdown","text/x-markdown"],$$=/https?:\/\/[^\s<>"{}|\\^`[\]]+?(?=[,;:\s]|$)/gi,H$=["meet.google.com","zoom.us","teams.microsoft.com","whereby.com","gather.town","calendly.com","cal.com","discord.com","discord.gg","cdn.discordapp.com","media.discordapp.net","giphy.com","tenor.com","wetransfer.com","file.io"],Y$=Z.object({captureUrls:Z.boolean().default(!1),blockedUrlDomains:Z.array(Z.string()).default(H$)});function ZZ(A,$){if($&&Z$.some((H)=>$.startsWith(H)))return!0;return A$.some((H)=>A.toLowerCase().endsWith(H))}function $Z(A){return A<=$A}function HZ(A){if(A.includes(0))return!1;try{return new TextDecoder("utf-8",{fatal:!0}).decode(A),!0}catch{return!1}}function YZ(A,$){return`User uploaded a file "${A}":
|
|
3
3
|
|
|
4
4
|
${$}`}function XZ(A,$){let H=A.match($$)??[];return[...new Set(H)].filter((Y)=>{try{let{hostname:X}=new URL(Y);return!$.some((P)=>X===P||X.endsWith(`.${P}`))}catch{return!1}})}function HA(A,$){let H=A.attachment.source;if((H?.entityType==="document"||H?.entityType==="image")&&H.entityId)return{entityType:H.entityType,id:H.entityId};return X$(A.attachment.downloadUrl??A.attachment.url,$)}function X$(A,$="http://local"){if(!A)return;let H;try{H=new URL(A,$)}catch{return}let Y=H.searchParams.get("id")?.trim();if(!Y)return;if(H.pathname==="/api/chat/attachments/document")return{entityType:"document",id:Y};if(H.pathname==="/api/chat/attachments/image")return{entityType:"image",id:Y};return}function PZ(A,$){let H=P$($,A==="document"?/^application\/pdf$/i:/^image\/[a-z0-9.+-]+$/i);if(!H)return;if(A==="document"&&H.mimeType.toLowerCase()!=="application/pdf")return;return H}function GZ(A,$,H,Y){let X=A?.filename;if(typeof X==="string"&&X.trim())return X;if(H==="document")return`${$}.pdf`;let P=A?.format;if(typeof P==="string"&&P.trim())return`${$}.${P==="jpeg"?"jpg":P}`;let W=Y.split("/")[1]?.split("+")[0]??"png";return`${$}.${W}`}function P$(A,$){let H=A.match(/^data:([^;]+);base64,(.+)$/i),Y=H?.[1],X=H?.[2];if(!Y||!X||!$.test(Y))return;let P=Buffer.from(X,"base64");return{mimeType:Y,data:P.buffer.slice(P.byteOffset,P.byteOffset+P.byteLength)}}async function KZ({entityRef:A,userLevel:$,getEntity:H,getVisibleEntity:Y}){let X=WZ($),P=await Y(A,X);if(P)return{status:"visible",entity:P};return Boolean(await H(A))?{status:"denied"}:{status:"missing"}}function VZ(A){return A==="anchor"||A==="trusted"}function NZ(A,$){A.messaging.subscribe("job-progress",async(H)=>{try{let Y=s.safeParse(H.payload);if(!Y.success)return $.onInvalidSchema(),{success:!1};let X=Y.data;return await $.onProgress(X,X.metadata),{success:!0}}catch(Y){return $.onError(Y),{success:!1}}})}function DZ(A){let $=A.status==="completed"?"\u2705":"\u274C",H=A.status==="completed"?"completed":"failed",Y=A.metadata.operationType.replace(/_/g," "),X=A.metadata.operationTarget?`: ${A.metadata.operationTarget}`:"",P=`${$} **${Y}${X}** ${H}`;if(A.message)P+=`
|
|
5
5
|
${A.message}`;return P}function FZ(A){let $=A.metadata.operationType.replace(/_/g," "),H=A.metadata.operationTarget?`: ${A.metadata.operationTarget}`:"",Y=`\uD83D\uDD04 **${$}${H}**`;if(A.progress&&A.progress.total>0)Y+=` ${A.progress.current}/${A.progress.total} (${A.progress.percentage}%)`;if(A.message)Y+=`
|
|
6
|
-
${A.message}`;return Y}var G$=Z.enum(["tool:invoking","tool:completed","tool:failed"]),W$=Z.object({toolName:Z.string().min(1),conversationId:Z.string().min(1),interfaceType:Z.string().min(1),channelId:Z.string().min(1).optional(),channelName:Z.string().min(1).optional(),toolCallId:Z.string().min(1).optional(),error:Z.string().optional()}),K$=["tool:invoking","tool:completed","tool:failed"];function UZ(A,$){for(let H of K$)A.messaging.subscribe(H,async(Y)=>{try{let X=G$.safeParse(Y.type),P=W$.safeParse(Y.payload);if(!X.success||!P.success)return $.onInvalidSchema(),{success:!1};return await $.onToolActivity({type:X.data,...P.data}),{success:!0}}catch(X){return $.onError(X),{success:!1}}})}class YA{scope;fibers;delayMs;clock;closePromise=null;closed=!1;constructor(A,$){this.delayMs=A,this.clock=$?.clock,this.scope=U.runSync(E.make()),this.fibers=U.runSync(E.extend(v.make(),this.scope))}schedule(A,$){if(this.closed)return;let H=U.sleep(this.delayMs).pipe(U.andThen(U.sync($))),Y=this.clock?U.withClock(H,this.clock):H,X=U.runFork(Y);v.unsafeSet(this.fibers,A,X)}close(){return this.closed=!0,this.closePromise??=U.runPromise(E.close(this.scope,S.void)),this.closePromise}}var RZ=500,V$=500;class N$ extends ZA{isUploadableTextFile(A,$){return ZZ(A,$)}isFileSizeAllowed(A){return $Z(A)}formatFileUploadMessage(A,$){return YZ(A,$)}getMaxFileUploadBytes(){return $A}isLikelyTextContent(A){return HZ(A)}async resolveNativeArtifactDelivery(A){let $=[],H=new Set;if(!this.context||!A.cards)return{files:$,deniedCardIds:H};let Y=this.context;for(let X of A.cards){if(X.kind!=="attachment")continue;let P=HA(X,A.displayBaseUrl);if(!P)continue;let W=await KZ({entityRef:P,userLevel:A.userPermissionLevel,getEntity:(K)=>Y.entityService.getEntity(K),getVisibleEntity:(K,V)=>Y.entityService.getEntity({...K,visibilityScope:V})});if(W.status==="denied"){H.add(X.id);continue}if(W.status!=="visible")continue;if(!VZ(A.userPermissionLevel))continue;if(typeof W.entity.content!=="string")continue;let G=PZ(P.entityType,W.entity.content);if(!G)continue;if(A.maxBytes!==void 0&&G.data.byteLength>A.maxBytes){this.logger.debug("Skipping oversized native artifact upload",{cardId:X.id,sizeBytes:G.data.byteLength});continue}$.push({cardId:X.id,data:new Uint8Array(G.data),filename:X.attachment.filename??GZ(W.entity.metadata,P.id,P.entityType,G.mimeType),mimeType:G.mimeType})}return{files:$,deniedCardIds:H}}extractCaptureableUrls(A,$){return XZ(A,$)}async captureUrlViaAgent(A,$,H,Y,X){if(!this.context)return;let P=this.context.permissions.getUserLevel(Y,H,X);await this.context.agent.chat(`Save this link: ${A}`,`links-${$}`,{userPermissionLevel:P,interfaceType:Y,channelId:$})}progressEvents=new Map;progressCleanupSupervisor=new YA(V$);sendMessageWithId(A){return Promise.resolve(void 0)}editMessage(A){return Promise.resolve(!1)}supportsMessageEditing(){return!1}progressCallback;isProcessingInput=!1;currentChannelId=null;bufferedCompletionMessages=[];progressMessageTracking=new Map;agentResponseTracking=new Map;pendingToolCompletions=new Map;registerProgressCallback(A){this.progressCallback=A;let $=Array.from(this.progressEvents.values()).filter((H)=>H.status==="processing");A($)}unregisterProgressCallback(){delete this.progressCallback}trackAgentResponseForJob(A,$,H){this.agentResponseTracking.set(A,{messageId:$,channelId:H,lastUpdate:Date.now()}),this.logger.debug("Tracking agent response for job",{jobId:A,messageId:$,channelId:H})}async onRegister(A){await super.onRegister(A),NZ(A,{onProgress:async($,H)=>{await this.handleProgressEvent($,H)},onError:($)=>{this.logger.error("Error handling progress event",{error:$,interfaceId:this.id})},onInvalidSchema:()=>{this.logger.warn("Invalid progress event schema",{interfaceId:this.id})}}),UZ(A,{onToolActivity:async($)=>{await this.handleToolActivityEvent($)},onError:($)=>{this.logger.error("Error handling tool activity event",{error:$,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 onShutdown(){await this.progressCleanupSupervisor.close(),this.progressEvents.clear(),this.progressMessageTracking.clear(),this.agentResponseTracking.clear(),this.pendingToolCompletions.clear(),this.bufferedCompletionMessages=[],this.isProcessingInput=!1,this.currentChannelId=null,delete this.progressCallback,await super.onShutdown()}async handleProgressEvent(A,$){if(!this.shouldHandleProgressEvent(A))return;this.updateProgressState(A);let H=A.metadata.channelId??null,Y=A.metadata.rootJobId;if(await this.handleProcessingProgress(A,H,Y))return;if(A.status==="completed"||A.status==="failed")await this.handleTerminalProgress(A,H,Y);await this.onProgressUpdate(A),this.logProgressProcessed(A)}shouldHandleProgressEvent(A){let $=A.metadata.interfaceType;return!$||$===this.id}updateProgressState(A){this.progressEvents.set(A.id,A),this.notifyProgressCallback()}async handleProcessingProgress(A,$,H){if(A.status!=="processing"||!this.supportsMessageEditing())return!1;let Y=this.agentResponseTracking.get(A.id);if(Y)return await this.editTrackedProgressMessage(A,Y),!0;let X=this.formatProgressOutput(A),P=this.progressMessageTracking.get(H),W=Date.now();if(P){if(W-P.lastUpdate>=RZ)await this.editMessage({channelId:P.channelId,messageId:P.messageId,newMessage:X}),P.lastUpdate=W}else if($&&!this.isProcessingInput)await this.sendInitialProgressMessage(H,$,X,W);return!1}async editTrackedProgressMessage(A,$){let H=Date.now();if(H-$.lastUpdate<RZ)return;await this.editMessage({channelId:$.channelId,messageId:$.messageId,newMessage:this.formatProgressOutput(A)}),$.lastUpdate=H}async sendInitialProgressMessage(A,$,H,Y){let X=await this.sendMessageWithId({channelId:$,message:H});if(!X)return;this.progressMessageTracking.set(A,{messageId:X,channelId:$,lastUpdate:Y}),this.logger.debug("Tracking progress message",{rootJobId:A,messageId:X,channelId:$})}async handleTerminalProgress(A,$,H){let Y=this.formatCompletionOutput(A),X=this.progressMessageTracking.get(H),P=this.agentResponseTracking.get(A.id);if(this.logger.debug("Completion event received",{eventId:A.id,rootJobId:H,hasProgressTracking:!!X,hasAgentTracking:!!P,supportsEditing:this.supportsMessageEditing()}),this.supportsMessageEditing())await this.updateTrackedCompletion(A,Y,X,P,H);if(!X&&!P&&$)this.sendOrBufferCompletionMessage(Y,$);this.scheduleProgressCleanup(A.id)}async updateTrackedCompletion(A,$,H,Y,X){if(Y){if(await this.editMessage({channelId:Y.channelId,messageId:Y.messageId,newMessage:$}),this.agentResponseTracking.delete(A.id),H)this.progressMessageTracking.delete(X);return}if(H)await this.editMessage({channelId:H.channelId,messageId:H.messageId,newMessage:$}),this.progressMessageTracking.delete(X)}sendOrBufferCompletionMessage(A,$){if(this.isProcessingInput){this.bufferedCompletionMessages.push({message:A,channelId:$});return}this.sendMessageToChannel({channelId:$,message:A})}scheduleProgressCleanup(A){this.progressCleanupSupervisor.schedule(A,()=>{this.progressEvents.delete(A),this.notifyProgressCallback()})}logProgressProcessed(A){this.logger.debug("Progress event processed",{eventId:A.id,status:A.status,operationType:A.metadata.operationType,targetChannel:A.metadata.channelId})}formatProgressOutput(A){return FZ(A)}formatCompletionOutput(A){return DZ(A)}async onProgressUpdate(A){}async handleToolActivityEvent(A){if(A.interfaceType!==this.id)return;switch(A.type){case"tool:invoking":this.pendingToolCompletions.delete(this.getToolCompletionKey(A)),await this.handleToolStatusUpdate(x(A,"running"));return;case"tool:completed":if(this.isProcessingInput){this.pendingToolCompletions.set(this.getToolCompletionKey(A),A);return}await this.handleToolStatusUpdate(x(A,"completed"));return;case"tool:failed":this.pendingToolCompletions.delete(this.getToolCompletionKey(A)),await this.handleToolStatusUpdate(x(A,"failed"));return}}async handleToolStatusUpdate(A){}async handleAgentResponseToolStatuses(A,$){if(this.pendingToolCompletions.size===0)return;let H=Array.from(this.pendingToolCompletions.values()).filter((Y)=>Y.interfaceType===this.id&&Y.conversationId===$);for(let Y of H){this.pendingToolCompletions.delete(this.getToolCompletionKey(Y));let X=AZ(A,Y.toolName)?"awaiting-approval":"completed";await this.handleToolStatusUpdate(x(Y,X))}}getToolCompletionKey(A){return`${A.interfaceType}:${A.conversationId}:${A.toolName}`}notifyProgressCallback(){if(this.progressCallback){let A=Array.from(this.progressEvents.values());this.progressCallback(A)}}getProgressEvents(){return Array.from(this.progressEvents.values())}getActiveProgressEvents(){return Array.from(this.progressEvents.values()).filter((A)=>A.status==="processing")}startProcessingInput(A=null){this.isProcessingInput=!0,this.currentChannelId=A}endProcessingInput(){this.isProcessingInput=!1;for(let{message:A,channelId:$}of this.bufferedCompletionMessages)this.sendMessageToChannel({channelId:$,message:A});this.bufferedCompletionMessages=[],this.currentChannelId=null}getCurrentChannelId(){return this.currentChannelId}}function LZ(A,$,H){let Y=f(A,$,H),X=A.getEntityService(),P=A.getRenderService(),W=A.getContentService();return{...Y,entityService:X,entities:g(A),webRoutes:{getRoutes:()=>A.getPluginWebRoutes()},templates:{register:(G,K)=>{A.registerTemplates(G,K??$)},format:(G,K)=>{return W.formatContent(G,K,{pluginId:$})},parse:(G,K)=>{return W.parseContent(G,K,$)},resolve:async(G,K)=>{return await W.resolveContent(G,K,$)},getCapabilities:(G)=>{let K=G.includes(":")?G:`${$}:${G}`,V=A.getTemplate(K);if(!V)return null;let D=wZ.getCapabilities(V);return{canGenerate:D.canGenerate,canFetch:D.canFetch,canRender:D.canRender,isStaticOnly:D.isStaticOnly}}},views:{get:(G)=>{return P.get(G)??void 0},list:()=>{return P.list()},hasRenderer:(G,K="web")=>{return P.hasRenderer(G,K)},getRenderer:(G,K="web")=>{return P.getRenderer(G,K)},validate:(G,K)=>{return P.validate(G,K)}},prompts:b(X),ai:{query:(G,K)=>A.query(G,K),generate:async(G)=>{return A.generateContent(G)},generateObject:async(G,K,V)=>{return A.generateObject(G,K,V)},generateImage:async(G,K)=>{return A.generateImage(G,K)},canGenerateImages:()=>{return A.canGenerateImages()}},registerInstructions:(G)=>{A.registerInstructions($,G)}}}class D$ extends O{type="service";getApiRoutes(){return[]}getWebRoutes(){return[]}async register(A,$){let H=LZ(A,this.id,$);return this.context=H,this.setupMessageHandlers(H),await this.onRegister(H),this.getCapabilities()}get entityService(){return this.getContext().entityService}registerEntityType(A,$,H,Y){this.getContext().entities.register(A,$,H,Y)}async enqueueJob(A){return this.getContext().jobs.enqueue(A)}async enqueueBatch(A,$){return this.getContext().jobs.enqueueBatch(A,$)}async registerEntityTypes(A){}async registerJobHandlers(A){}async onRegister(A){await this.registerEntityTypes(A),await this.registerJobHandlers(A)}}
|
|
7
|
-
export{qA as o,_$ as p,
|
|
6
|
+
${A.message}`;return Y}var G$=Z.enum(["tool:invoking","tool:completed","tool:failed"]),W$=Z.object({toolName:Z.string().min(1),conversationId:Z.string().min(1),interfaceType:Z.string().min(1),channelId:Z.string().min(1).optional(),channelName:Z.string().min(1).optional(),toolCallId:Z.string().min(1).optional(),error:Z.string().optional()}),K$=["tool:invoking","tool:completed","tool:failed"];function UZ(A,$){for(let H of K$)A.messaging.subscribe(H,async(Y)=>{try{let X=G$.safeParse(Y.type),P=W$.safeParse(Y.payload);if(!X.success||!P.success)return $.onInvalidSchema(),{success:!1};return await $.onToolActivity({type:X.data,...P.data}),{success:!0}}catch(X){return $.onError(X),{success:!1}}})}class YA{scope;fibers;delayMs;clock;closePromise=null;closed=!1;constructor(A,$){this.delayMs=A,this.clock=$?.clock,this.scope=U.runSync(E.make()),this.fibers=U.runSync(E.extend(v.make(),this.scope))}schedule(A,$){if(this.closed)return;let H=U.sleep(this.delayMs).pipe(U.andThen(U.sync($))),Y=this.clock?U.withClock(H,this.clock):H,X=U.runFork(Y);v.unsafeSet(this.fibers,A,X)}close(){return this.closed=!0,this.closePromise??=U.runPromise(E.close(this.scope,S.void)),this.closePromise}}var RZ=500,V$=500;class N$ extends ZA{isUploadableTextFile(A,$){return ZZ(A,$)}isFileSizeAllowed(A){return $Z(A)}formatFileUploadMessage(A,$){return YZ(A,$)}getMaxFileUploadBytes(){return $A}isLikelyTextContent(A){return HZ(A)}async resolveNativeArtifactDelivery(A){let $=[],H=new Set;if(!this.context||!A.cards)return{files:$,deniedCardIds:H};let Y=this.context;for(let X of A.cards){if(X.kind!=="attachment")continue;let P=HA(X,A.displayBaseUrl);if(!P)continue;let W=await KZ({entityRef:P,userLevel:A.userPermissionLevel,getEntity:(K)=>Y.entityService.getEntity(K),getVisibleEntity:(K,V)=>Y.entityService.getEntity({...K,visibilityScope:V})});if(W.status==="denied"){H.add(X.id);continue}if(W.status!=="visible")continue;if(!VZ(A.userPermissionLevel))continue;if(typeof W.entity.content!=="string")continue;let G=PZ(P.entityType,W.entity.content);if(!G)continue;if(A.maxBytes!==void 0&&G.data.byteLength>A.maxBytes){this.logger.debug("Skipping oversized native artifact upload",{cardId:X.id,sizeBytes:G.data.byteLength});continue}$.push({cardId:X.id,data:new Uint8Array(G.data),filename:X.attachment.filename??GZ(W.entity.metadata,P.id,P.entityType,G.mimeType),mimeType:G.mimeType})}return{files:$,deniedCardIds:H}}extractCaptureableUrls(A,$){return XZ(A,$)}async captureUrlViaAgent(A,$,H,Y,X){if(!this.context)return;let P=this.context.permissions.getUserLevel(Y,H,X);await this.context.agent.chat(`Save this link: ${A}`,`links-${$}`,{userPermissionLevel:P,interfaceType:Y,channelId:$})}progressEvents=new Map;progressCleanupSupervisor=new YA(V$);sendMessageWithId(A){return Promise.resolve(void 0)}editMessage(A){return Promise.resolve(!1)}supportsMessageEditing(){return!1}progressCallback;isProcessingInput=!1;currentChannelId=null;bufferedCompletionMessages=[];progressMessageTracking=new Map;agentResponseTracking=new Map;pendingToolCompletions=new Map;registerProgressCallback(A){this.progressCallback=A;let $=Array.from(this.progressEvents.values()).filter((H)=>H.status==="processing");A($)}unregisterProgressCallback(){delete this.progressCallback}trackAgentResponseForJob(A,$,H){this.agentResponseTracking.set(A,{messageId:$,channelId:H,lastUpdate:Date.now()}),this.logger.debug("Tracking agent response for job",{jobId:A,messageId:$,channelId:H})}async onRegister(A){await super.onRegister(A),NZ(A,{onProgress:async($,H)=>{await this.handleProgressEvent($,H)},onError:($)=>{this.logger.error("Error handling progress event",{error:$,interfaceId:this.id})},onInvalidSchema:()=>{this.logger.warn("Invalid progress event schema",{interfaceId:this.id})}}),UZ(A,{onToolActivity:async($)=>{await this.handleToolActivityEvent($)},onError:($)=>{this.logger.error("Error handling tool activity event",{error:$,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 onShutdown(){await this.progressCleanupSupervisor.close(),this.progressEvents.clear(),this.progressMessageTracking.clear(),this.agentResponseTracking.clear(),this.pendingToolCompletions.clear(),this.bufferedCompletionMessages=[],this.isProcessingInput=!1,this.currentChannelId=null,delete this.progressCallback,await super.onShutdown()}async handleProgressEvent(A,$){if(!this.shouldHandleProgressEvent(A))return;this.updateProgressState(A);let H=A.metadata.channelId??null,Y=A.metadata.rootJobId;if(await this.handleProcessingProgress(A,H,Y))return;if(A.status==="completed"||A.status==="failed")await this.handleTerminalProgress(A,H,Y);await this.onProgressUpdate(A),this.logProgressProcessed(A)}shouldHandleProgressEvent(A){let $=A.metadata.interfaceType;return!$||$===this.id}updateProgressState(A){this.progressEvents.set(A.id,A),this.notifyProgressCallback()}async handleProcessingProgress(A,$,H){if(A.status!=="processing"||!this.supportsMessageEditing())return!1;let Y=this.agentResponseTracking.get(A.id);if(Y)return await this.editTrackedProgressMessage(A,Y),!0;let X=this.formatProgressOutput(A),P=this.progressMessageTracking.get(H),W=Date.now();if(P){if(W-P.lastUpdate>=RZ)await this.editMessage({channelId:P.channelId,messageId:P.messageId,newMessage:X}),P.lastUpdate=W}else if($&&!this.isProcessingInput)await this.sendInitialProgressMessage(H,$,X,W);return!1}async editTrackedProgressMessage(A,$){let H=Date.now();if(H-$.lastUpdate<RZ)return;await this.editMessage({channelId:$.channelId,messageId:$.messageId,newMessage:this.formatProgressOutput(A)}),$.lastUpdate=H}async sendInitialProgressMessage(A,$,H,Y){let X=await this.sendMessageWithId({channelId:$,message:H});if(!X)return;this.progressMessageTracking.set(A,{messageId:X,channelId:$,lastUpdate:Y}),this.logger.debug("Tracking progress message",{rootJobId:A,messageId:X,channelId:$})}async handleTerminalProgress(A,$,H){let Y=this.formatCompletionOutput(A),X=this.progressMessageTracking.get(H),P=this.agentResponseTracking.get(A.id);if(this.logger.debug("Completion event received",{eventId:A.id,rootJobId:H,hasProgressTracking:!!X,hasAgentTracking:!!P,supportsEditing:this.supportsMessageEditing()}),this.supportsMessageEditing())await this.updateTrackedCompletion(A,Y,X,P,H);if(!X&&!P&&$)this.sendOrBufferCompletionMessage(Y,$);this.scheduleProgressCleanup(A.id)}async updateTrackedCompletion(A,$,H,Y,X){if(Y){if(await this.editMessage({channelId:Y.channelId,messageId:Y.messageId,newMessage:$}),this.agentResponseTracking.delete(A.id),H)this.progressMessageTracking.delete(X);return}if(H)await this.editMessage({channelId:H.channelId,messageId:H.messageId,newMessage:$}),this.progressMessageTracking.delete(X)}sendOrBufferCompletionMessage(A,$){if(this.isProcessingInput){this.bufferedCompletionMessages.push({message:A,channelId:$});return}this.sendMessageToChannel({channelId:$,message:A})}scheduleProgressCleanup(A){this.progressCleanupSupervisor.schedule(A,()=>{this.progressEvents.delete(A),this.notifyProgressCallback()})}logProgressProcessed(A){this.logger.debug("Progress event processed",{eventId:A.id,status:A.status,operationType:A.metadata.operationType,targetChannel:A.metadata.channelId})}formatProgressOutput(A){return FZ(A)}formatCompletionOutput(A){return DZ(A)}async onProgressUpdate(A){}async handleToolActivityEvent(A){if(A.interfaceType!==this.id)return;switch(A.type){case"tool:invoking":this.pendingToolCompletions.delete(this.getToolCompletionKey(A)),await this.handleToolStatusUpdate(x(A,"running"));return;case"tool:completed":if(this.isProcessingInput){this.pendingToolCompletions.set(this.getToolCompletionKey(A),A);return}await this.handleToolStatusUpdate(x(A,"completed"));return;case"tool:failed":this.pendingToolCompletions.delete(this.getToolCompletionKey(A)),await this.handleToolStatusUpdate(x(A,"failed"));return}}async handleToolStatusUpdate(A){}async handleAgentResponseToolStatuses(A,$){if(this.pendingToolCompletions.size===0)return;let H=Array.from(this.pendingToolCompletions.values()).filter((Y)=>Y.interfaceType===this.id&&Y.conversationId===$);for(let Y of H){this.pendingToolCompletions.delete(this.getToolCompletionKey(Y));let X=AZ(A,Y.toolName)?"awaiting-approval":"completed";await this.handleToolStatusUpdate(x(Y,X))}}getToolCompletionKey(A){return`${A.interfaceType}:${A.conversationId}:${A.toolName}`}notifyProgressCallback(){if(this.progressCallback){let A=Array.from(this.progressEvents.values());this.progressCallback(A)}}getProgressEvents(){return Array.from(this.progressEvents.values())}getActiveProgressEvents(){return Array.from(this.progressEvents.values()).filter((A)=>A.status==="processing")}startProcessingInput(A=null){this.isProcessingInput=!0,this.currentChannelId=A}endProcessingInput(){this.isProcessingInput=!1;for(let{message:A,channelId:$}of this.bufferedCompletionMessages)this.sendMessageToChannel({channelId:$,message:A});this.bufferedCompletionMessages=[],this.currentChannelId=null}getCurrentChannelId(){return this.currentChannelId}}function LZ(A,$,H){let Y=f(A,$,H),X=A.getEntityService(),P=A.getRenderService(),W=A.getContentService();return{...Y,entityService:X,entities:g(A),webRoutes:{getRoutes:()=>A.getPluginWebRoutes()},templates:{register:(G,K)=>{A.registerTemplates(G,K??$)},format:(G,K)=>{return W.formatContent(G,K,{pluginId:$})},parse:(G,K)=>{return W.parseContent(G,K,$)},resolve:async(G,K)=>{return await W.resolveContent(G,K,$)},getCapabilities:(G)=>{let K=G.includes(":")?G:`${$}:${G}`,V=A.getTemplate(K);if(!V)return null;let D=wZ.getCapabilities(V);return{canGenerate:D.canGenerate,canFetch:D.canFetch,canRender:D.canRender,isStaticOnly:D.isStaticOnly}}},views:{get:(G)=>{return P.get(G)??void 0},list:()=>{return P.list()},hasRenderer:(G,K="web")=>{return P.hasRenderer(G,K)},getRenderer:(G,K="web")=>{return P.getRenderer(G,K)},validate:(G,K)=>{return P.validate(G,K)}},prompts:b(X),ai:{query:(G,K)=>A.query(G,K),generate:async(G)=>{return A.generateContent(G)},generateObject:async(G,K,V)=>{return A.generateObject(G,K,V)},generateImage:async(G,K)=>{return A.generateImage(G,K)},canGenerateImages:()=>{return A.canGenerateImages()}},registerInstructions:(G)=>{A.registerInstructions($,G)}}}class D$ extends C{type="service";getApiRoutes(){return[]}getWebRoutes(){return[]}async register(A,$){let H=LZ(A,this.id,$);return this.context=H,this.setupMessageHandlers(H),await this.onRegister(H),this.getCapabilities()}get entityService(){return this.getContext().entityService}registerEntityType(A,$,H,Y){this.getContext().entities.register(A,$,H,Y)}async enqueueJob(A){return this.getContext().jobs.enqueue(A)}async enqueueBatch(A,$){return this.getContext().jobs.enqueueBatch(A,$)}async registerEntityTypes(A){}async registerJobHandlers(A){}async onRegister(A){await this.registerEntityTypes(A),await this.registerJobHandlers(A)}}
|
|
7
|
+
export{qA as o,_$ as p,O$ as q,WA as r,KA as s,j6 as t,rA as u,ZA as v,N$ as w,D$ as x,U1 as y,TH as z};
|
|
8
8
|
|
|
9
|
-
//# debugId=
|
|
10
|
-
//# sourceMappingURL=index-
|
|
9
|
+
//# debugId=5B1855840E029A9A64756E2164756E21
|
|
10
|
+
//# sourceMappingURL=index-rt5tcayx.js.map
|