@rizom/brain 0.2.0-alpha.223 → 0.2.0-alpha.225

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.
Files changed (62) hide show
  1. package/dist/brain.js +1007 -1001
  2. package/dist/chunks/blog-post-adapter-tk0z5tgh.js +5 -0
  3. package/dist/chunks/{index-ps0mn8y9.js → index-18d0wj5t.js} +4 -4
  4. package/dist/chunks/{index-ps0mn8y9.js.map → index-18d0wj5t.js.map} +1 -1
  5. package/dist/chunks/{index-px8fmtx1.js → index-1qz89akh.js} +4 -4
  6. package/dist/chunks/{index-px8fmtx1.js.map → index-1qz89akh.js.map} +1 -1
  7. package/dist/chunks/{index-vtwspye3.js → index-48mg443r.js} +3 -3
  8. package/dist/chunks/{index-vtwspye3.js.map → index-48mg443r.js.map} +1 -1
  9. package/dist/chunks/{index-0bjkx8vb.js → index-4xzx30t8.js} +4 -4
  10. package/dist/chunks/{index-0bjkx8vb.js.map → index-4xzx30t8.js.map} +2 -2
  11. package/dist/chunks/{index-gca7xnrh.js → index-e933mq3w.js} +3 -3
  12. package/dist/chunks/{index-gca7xnrh.js.map → index-e933mq3w.js.map} +1 -1
  13. package/dist/chunks/{index-nqjbkf5n.js → index-gaa2742w.js} +3 -3
  14. package/dist/chunks/{index-nqjbkf5n.js.map → index-gaa2742w.js.map} +1 -1
  15. package/dist/chunks/index-gfewwta6.js +6 -0
  16. package/dist/chunks/{index-59y15khc.js.map → index-gfewwta6.js.map} +2 -2
  17. package/dist/chunks/{index-57d1xga4.js → index-h1zmmtbw.js} +4 -4
  18. package/dist/chunks/{index-57d1xga4.js.map → index-h1zmmtbw.js.map} +1 -1
  19. package/dist/chunks/index-jm9vaxsh.js +10 -0
  20. package/dist/chunks/{index-836tm28j.js.map → index-jm9vaxsh.js.map} +8 -8
  21. package/dist/chunks/{index-c93wmj0d.js → index-q53nehd5.js} +4 -4
  22. package/dist/chunks/{index-c93wmj0d.js.map → index-q53nehd5.js.map} +3 -3
  23. package/dist/chunks/index-rng6ka15.js +6 -0
  24. package/dist/chunks/{index-t7hbrpyx.js.map → index-rng6ka15.js.map} +12 -12
  25. package/dist/chunks/{rss-datasource-c67ta2xa.js → rss-datasource-v805vq9d.js} +3 -3
  26. package/dist/chunks/{rss-datasource-c67ta2xa.js.map → rss-datasource-v805vq9d.js.map} +1 -1
  27. package/dist/deploy.js +1 -1
  28. package/dist/entities.js +2 -2
  29. package/dist/entities.js.map +1 -1
  30. package/dist/index.js +2 -2
  31. package/dist/index.js.map +1 -1
  32. package/dist/interfaces.js +2 -2
  33. package/dist/interfaces.js.map +1 -1
  34. package/dist/plugins.d.ts +17 -5
  35. package/dist/plugins.js +3 -3
  36. package/dist/plugins.js.map +3 -3
  37. package/dist/seed-content/ranger/anchor-profile/anchor-profile.md +1 -1
  38. package/dist/seed-content/ranger/site-info/site-info.md +1 -0
  39. package/dist/seed-content/relay/site-info/site-info.md +1 -0
  40. package/dist/seed-content/rover-seed-content-core/anchor-profile/anchor-profile.md +1 -1
  41. package/dist/seed-content/rover-seed-content-core/style-guide/style-guide.md +48 -0
  42. package/dist/seed-content/rover-seed-content-default/anchor-profile/anchor-profile.md +1 -1
  43. package/dist/seed-content/rover-seed-content-default/site-info/site-info.md +1 -0
  44. package/dist/seed-content/rover-seed-content-default/style-guide/style-guide.md +48 -0
  45. package/dist/seed-content/rover-seed-content-full/anchor-profile/anchor-profile.md +1 -1
  46. package/dist/seed-content/rover-seed-content-full/site-info/site-info.md +1 -0
  47. package/dist/seed-content/rover-seed-content-full/style-guide/style-guide.md +48 -0
  48. package/dist/services.js +2 -2
  49. package/dist/services.js.map +1 -1
  50. package/dist/site.js +155 -160
  51. package/dist/site.js.map +33 -25
  52. package/dist/templates.js +2 -2
  53. package/dist/templates.js.map +1 -1
  54. package/dist/themes.js +1 -1
  55. package/dist/ui/cms-app.js +121 -121
  56. package/dist/ui/cms-app.js.map +6 -6
  57. package/package.json +1 -1
  58. package/dist/chunks/blog-post-adapter-gny02sy3.js +0 -5
  59. package/dist/chunks/index-59y15khc.js +0 -6
  60. package/dist/chunks/index-836tm28j.js +0 -10
  61. package/dist/chunks/index-t7hbrpyx.js +0 -6
  62. /package/dist/chunks/{blog-post-adapter-gny02sy3.js.map → blog-post-adapter-tk0z5tgh.js.map} +0 -0
@@ -0,0 +1,10 @@
1
+ // @bun
2
+ import{B as L,D as v,E as Q,F as z,G as _,H as D,I as q,M as x,N as f,O as R,P as I,Q as UZ,V as iA,W as nA}from"./index-4xzx30t8.js";import{na as lA,oa as c}from"./index-q53nehd5.js";import{Aa as oA,Ba as HA,Da as t,Ga as k,wa as $Z,za as M}from"./index-18d0wj5t.js";import{Pa as CZ}from"./index-e933mq3w.js";import{Wa as Z}from"./index-h1zmmtbw.js";var q$=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}),Q$=Z.object({id:Z.string(),conversationId:Z.string(),role:M,content:Z.string(),timestamp:Z.string(),metadata:c});var DA=Z.object({name:Z.string(),role:Z.string(),purpose:Z.string(),values:Z.array(Z.string())}),FA=Z.object({name:Z.string(),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 z$}from"@libsql/client";class UA{constructor(A,$){this.name=A,this.unique=$}static[z]="SQLiteIndexBuilderOn";on(...A){return new RA(this.name,A,this.unique)}}class RA{static[z]="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 wA(this.config,A)}}class wA{static[z]="SQLiteIndex";config;constructor(A,$){this.config={...A,table:$}}}function N(A){return new UA(A,!1)}var m=q("conversations",{id:D("id").primaryKey(),sessionId:D("session_id").notNull(),interfaceType:D("interface_type").notNull(),channelId:D("channel_id").notNull(),started:D("started").notNull(),lastActive:D("last_active").notNull(),metadata:D("metadata"),created:D("created").notNull(),updated:D("updated").notNull()},(A)=>({sessionIdx:N("idx_conversations_session").on(A.sessionId),channelIdx:N("idx_conversations_channel").on(A.channelId),interfaceSessionIdx:N("idx_conversations_interface_session").on(A.interfaceType,A.sessionId),interfaceChannelIdx:N("idx_conversations_interface_channel").on(A.interfaceType,A.channelId)})),NA=q("messages",{id:D("id").primaryKey(),conversationId:D("conversation_id").notNull().references(()=>m.id,{onDelete:"cascade"}),role:D("role").notNull(),content:D("content").notNull(),timestamp:D("timestamp").notNull(),metadata:D("metadata")},(A)=>({conversationIdx:N("idx_messages_conversation").on(A.conversationId),timestampIdx:N("idx_messages_timestamp").on(A.timestamp)})),_A=q("summary_tracking",{conversationId:D("conversation_id").primaryKey().references(()=>m.id,{onDelete:"cascade"}),lastSummarizedAt:D("last_summarized_at"),lastMessageId:D("last_message_id"),messagesSinceSummary:_("messages_since_summary").default(0),updated:D("updated").notNull()});var QZ=Z.preprocess((A)=>{if(typeof A!=="string")return A;try{return JSON.parse(A)}catch{return}},Z.record(Z.string(),Z.unknown())).catch({});function T(A){return QZ.parse(A)}var h=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()}),j=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()}),kZ=Z.looseObject({actor:h.optional(),source:j.optional()});var EZ=Z.object({id:Z.string(),conversationId:Z.string(),role:Z.string(),content:Z.string(),timestamp:Z.string(),metadata:Z.string().nullable()}),fZ=Z.object({conversationId:Z.string(),messageCount:Z.number(),messages:Z.array(EZ),windowStart:Z.number(),windowEnd:Z.number(),windowSize:Z.number(),timestamp:Z.string()});var LA=Z.object({kind:Z.string().min(1),id:Z.string().min(1)}),SZ=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:LA.optional()}),xZ=Z.custom((A)=>A instanceof Uint8Array),yZ=Z.object({kind:Z.literal("file"),filename:Z.string().min(1),mediaType:Z.string().min(1),data:xZ,sizeBytes:Z.number().nonnegative().optional(),source:LA.optional()}),zZ=Z.discriminatedUnion("kind",[SZ,yZ]),C1=Z.object({userPermissionLevel:Z.enum(["anchor","trusted","public"]).optional(),interfaceType:Z.string().optional(),channelId:Z.string().optional(),channelName:Z.string().optional(),actor:h.optional(),source:j.optional(),attachments:Z.array(zZ).optional()});var mZ=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()}),OA=Z.object({name:Z.string(),pluginId:Z.string(),status:Z.string(),health:mZ.optional()});import{McpServer as I1,ResourceTemplate as g1}from"@modelcontextprotocol/sdk/server/mcp.js";var BA=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()}),CA=Z.strictObject({success:Z.literal(!0),data:Z.unknown().optional(),message:Z.string().optional(),cached:Z.literal(!0).optional()}),MA=Z.strictObject({success:Z.literal(!1),error:Z.string(),code:Z.string().optional()}),qA=Z.strictObject({needsConfirmation:Z.literal(!0),toolName:Z.string(),summary:Z.string(),completionSummary:Z.string().optional(),preview:Z.string().optional(),args:Z.unknown()}),d=Z.union([CA,MA,qA]);var S1=Z.union([Z.looseObject({success:Z.literal(!0)}),Z.object({success:Z.literal(!1),error:Z.string()})]);var hZ=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 T4=Z.object({id:Z.string(),type:Z.string(),version:Z.string(),status:Z.string()}),S4=Z.object({name:Z.string(),description:Z.string()}),QA=Z.enum(["anchor","trusted","public"]),l=Z.object({label:Z.string(),url:Z.string(),pluginId:Z.string(),priority:Z.number().default(100),visibility:QA.default("public")}),jZ=Z.enum(["human","agent","admin","protocol"]),vZ=Z.enum(["available","coming-soon","disabled"]),i=Z.object({id:Z.string(),label:Z.string(),description:Z.string().optional(),href:Z.string(),kind:jZ,pluginId:Z.string(),priority:Z.number().default(100),visibility:QA.default("public"),status:vZ.default("available")}),n=Z.object({entityType:Z.string(),count:Z.number()}),x4=Z.object({model:Z.string(),version:Z.string(),uptime:Z.number(),entities:Z.number(),entityCounts:Z.array(n),embeddings:Z.number(),ai:Z.object({model:Z.string(),embeddingModel:Z.string()}),daemons:Z.array(OA),endpoints:Z.array(l),interactions:Z.array(i)});var y4=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 IZ=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()}),gZ=Z.object({name:Z.string(),pluginId:Z.string(),status:Z.string(),health:IZ.optional()}),v4=Z.object({model:Z.string(),version:Z.string(),uptime:Z.number(),entities:Z.number(),entityCounts:Z.array(n),embeddings:Z.number(),ai:Z.object({model:Z.string(),embeddingModel:Z.string()}),daemons:Z.array(gZ),endpoints:Z.array(l),interactions:Z.array(i)});var b4=Z.object({enabled:Z.boolean().describe("Whether the plugin is enabled"),debug:Z.boolean().describe("Enable debug logging for this plugin")});class r extends Error{pluginId;issues;constructor(A,$){super(`Invalid plugin config for ${A}`);this.name="PluginConfigValidationError",this.pluginId=A,this.issues=$}}var a=Z.enum(["file_operations","content_operations","data_processing","batch_processing"]),bZ=Z.object({pluginId:Z.string().optional(),progressToken:Z.union([Z.string(),Z.number()]).optional(),operationType:a,operationTarget:Z.string().optional(),interfaceType:Z.string().optional(),conversationId:Z.string().optional(),channelId:Z.string().optional(),silent:Z.boolean().optional()}),E=Z.object({pluginId:Z.string().optional(),progressToken:Z.union([Z.string(),Z.number()]).optional(),operationType:a,operationTarget:Z.string().optional(),interfaceType:Z.string().optional(),conversationId:Z.string().optional(),channelId:Z.string().optional(),silent:Z.boolean().optional(),rootJobId:Z.string()}),c4=Z.enum(["none","skip","replace","coalesce"]);var s=Z.enum(["pending","processing","completed","failed"]),kA=Z.enum(["completed","failed"]);var pZ=Z.object({id:Z.string(),type:Z.string(),status:s,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()}),uZ=Z.object({jobId:Z.string(),type:Z.string(),status:kA,result:Z.unknown().optional(),error:Z.string().optional()}),EA=Z.object({success:Z.literal(!1),error:Z.string().optional()}),o=Z.object({id:Z.string(),type:Z.enum(["job","batch"]),status:s,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:E});var cZ=Z.record(Z.string(),Z.unknown());class fA{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,X){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 $=cZ.safeParse(A);return $.success?$.data:{}}}import{createClient as A6}from"@libsql/client";var JA=q("job_queue",{id:D("id").primaryKey().$defaultFn(()=>Q()),type:D("type").notNull(),data:D("data").notNull(),result:D("result",{mode:"json"}),source:D("source"),metadata:D("metadata",{mode:"json"}).$type().notNull(),status:D("status",{enum:["pending","processing","completed","failed"]}).notNull().default("pending"),priority:_("priority").notNull().default(0),retryCount:_("retryCount").notNull().default(0),maxRetries:_("maxRetries").notNull().default(3),lastError:D("lastError"),createdAt:_("createdAt").notNull().$defaultFn(()=>Date.now()),scheduledFor:_("scheduledFor").notNull().$defaultFn(()=>Date.now()),startedAt:_("startedAt"),completedAt:_("completedAt")},(A)=>({queueReadyIdx:N("idx_job_queue_ready").on(A.status,A.priority,A.scheduledFor),jobTypeIdx:N("idx_job_queue_type").on(A.type,A.status),jobSourceIdx:N("idx_job_queue_source").on(A.source)}));var G6=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:X}=$,Y=X-H;return new O(async(K)=>{let W=H+K.progress/(K.total??100)*Y;await this.callback({...K,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 g6=Z.preprocess((A)=>{if(typeof A!=="string")return A;return JSON.parse(A)},Z.record(Z.string(),Z.unknown()));var iZ=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:E,result:Z.unknown().nullable().optional()});function e(A,$,H){return async(X)=>{let{type:Y,data:K,toolContext:W=null,options:P}=X,{metadata:G,...V}=P??{},F={source:$,...P?.rootJobId&&{rootJobId:P.rootJobId},...V,metadata:{operationType:"data_processing",pluginId:$,...W&&{interfaceType:W.interfaceType,channelId:W.channelId},...G}},U=H&&!Y.includes(":")?`${$}:${Y}`:Y;return A.enqueue({type:U,data:K,options:F})}}function AA(A,$){return async(H,X)=>{let Y=Q(),K=H.map((P)=>({...P,type:P.type.includes(":")?P.type:`${$}:${P.type}`})),W={...X,source:$,rootJobId:Y,metadata:{...X?.metadata,operationType:"batch_processing",pluginId:$}};return await A.enqueueBatch(K,W,Y,$),Y}}function ZA(A,$){return(H,X)=>{let Y=H.includes(":")?H:`${$}:${H}`;A.registerHandler(Y,X,$)}}var nZ=Z.custom((A)=>typeof A==="object"&&A!==null&&("safeParse"in A)),rZ=Z.object({name:Z.string(),schema:nZ});function TA(A){return rZ.safeParse(A).success}function aZ(A){if(!A)return;return{status:A.status,message:A.message,lastCheck:A.lastCheck?.toISOString(),details:A.details}}function SA(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:aZ($.health)})),endpoints:A.endpoints,interactions:A.interactions}}function sZ(A){let $=M.safeParse(A);return $.success?$.data:"user"}function g(A){let $=T(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 xA(A){return{id:A.id,conversationId:A.conversationId,role:sZ(A.role),content:A.content,timestamp:A.timestamp,metadata:T(A.metadata)}}function yA(A){return DA.parse(A)}function zA(A){return FA.parse(A)}function mA(A){return async()=>{return SA(await A.getAppInfo())}}function hA(A,$){return{get:()=>yA(A.getIdentity()),getProfile:()=>zA(A.getProfile()),getAppInfo:$}}function jA(A,$){let H=A.getProfileKindRegistry();return{register:(X)=>{H.register($,X)},getResolved:()=>H.getResolved(),getSelectedDefinition:()=>H.getSelectedDefinition()}}function vA(A,$,H){let X=A.getMessageBus();return{send:async(K)=>{return X.send({...K,sender:$})},subscribe:(K,W)=>{if(TA(K)){let P=K,G=W,V=async(F)=>{let U=P.schema.safeParse(F.payload);if(!U.success)return H.warn(`Invalid payload for channel ${P.name}`,{error:U.error.message}),{noop:!0};let{payload:C,...w}=F;return G(U.data,w)};return X.subscribe(P.name,V)}return X.subscribe(K,W)}}}function IA(A,$){let H=A.getJobQueueService();return{...A.jobs,enqueue:e(H,$,!0),enqueueBatch:AA(A.jobs,$),registerHandler:ZA(H,$)}}function gA(A){let $=A.getPermissionService();return{assertEntityActionAllowed:(H,X,Y)=>{$.assertEntityActionAllowed(H,X,Y.userPermissionLevel)}}}function bA(A){return{get:async($)=>{let X=await A.getConversationService().getConversation($);return X?g(X):null},search:async($)=>{return(await A.getConversationService().searchConversations($)).map(g)},list:async($)=>{return(await A.getConversationService().listConversations($)).map(g)},getMessages:async($,H)=>{return(await A.getConversationService().getMessages($,H)).map(xA)},countMessages:async($)=>{return A.getConversationService().countMessages($)}}}function pA(A,$){return{registerHandler:(H,X)=>{A.registerEvalHandler($,H,X)}}}function uA(A){return{register:($,H)=>{A.getInsightsRegistry().register($,H)}}}function cA(A,$){return{register:(H)=>{A.registerEndpoint({...H,pluginId:$})}}}function dA(A,$){return{register:(H)=>{A.registerInteraction({...H,pluginId:$})}}}function J(A,$,H){let X=A.getEntityService(),Y=A.getLogger().child($),K=A.getDomain(),W=A.getLocalSiteUrl(),P=A.shouldPreferLocalUrls(),G=A.getThemeCSS(),V=mA(A),F=A.getAttachmentRegistry(),U=A.getRuntimeUploadRegistry(),C=A.getRuntimeState();return{pluginId:$,logger:Y,entityService:X,semantic:{project:(w)=>X.projectSemanticSpace(w)},identity:hA(A,V),profileKinds:jA(A,$),appInfo:V,judge:(w)=>A.judge(w),domain:K,siteUrl:K?`https://${K}`:void 0,localSiteUrl:W,previewUrl:K?`https://${lA(K)}`:void 0,preferLocalUrls:P,themeCSS:G,entityDisplay:H?.entityDisplay,spaces:A.getSpaces(),permissions:gA(A),messaging:vA(A,$,Y),jobs:IA(A,$),attachments:F,uploads:U,runtimeState:C,recurringChecks:A.getRecurringChecks($),conversations:bA(A),dataDir:A.getDataDir(),eval:pA(A,$),insights:uA(A),endpoints:cA(A,$),interactions:dA(A,$)}}function oZ(A){return A.replace(/:/g,"-")}function tZ(A){return A.split(/[:.-]/).map(($)=>$.charAt(0).toUpperCase()+$.slice(1)).join(" ")}var $A=new Map;async function rA(A,$,H){let X=$A.get($);if(X!==void 0)return X;let Y=oZ($),K;try{K=await A.getEntity({entityType:"prompt",id:Y})}catch{return H}if(K?.content){let W=nA(K.content,Z.record(Z.string(),Z.unknown())).content;return $A.set($,W),W}try{let W=tZ($),P=iA(H,{title:W,target:$});await A.createEntity({entity:{id:Y,entityType:"prompt",content:P,metadata:{title:W,target:$,slug:Y}}})}catch{}return $A.set($,H),H}function b(A){let $=A.getEntityService(),H=A.getEntityRegistry(),X=A.getDataSourceRegistry();return{register:(Y,K,W,P)=>{H.registerEntityType(Y,K,W,P)},getAdapter:(Y)=>{try{return H.getAdapter(Y)}catch{return}},extendFrontmatterSchema:(Y,K)=>{H.extendFrontmatterSchema(Y,K)},getEffectiveFrontmatterSchema:(Y)=>{return H.getEffectiveFrontmatterSchema(Y)},registerPersistValidator:(Y,K)=>{H.registerPersistValidator(Y,K)},registerCreateInterceptor:(Y,K)=>{H.registerCreateInterceptor(Y,K)},registerUploadSaveHandler:(Y)=>{H.registerUploadSaveHandler(Y)},getUploadSaveHandler:(Y)=>{return H.getUploadSaveHandler(Y)},update:async(Y)=>{return $.updateEntity({entity:Y})},registerDataSource:(Y)=>{X.register(Y)}}}function p(A){return{resolve:($,H)=>{return rA(A,$,H)}}}function aA(A,$,H){let X=J(A,$,H),Y=A.getEntityService();return{...X,entityService:Y,entities:b(A),ai:{query:(K,W)=>A.query(K,W),generate:async(K)=>{return A.generateContent(K)},generateObject:async(K,W,P)=>{return A.generateObject(K,W,P)},generateImage:async(K,W)=>{return A.generateImage(K,W)},canGenerateImages:()=>{return A.canGenerateImages()}},prompts:p(Y),permissions:X.permissions}}function tA(A,$,H){let X=!1,Y=!1;if(A.jobs.registerHandler(H.job.type,H.job.handler),H.initialSync){let K=H.initialSync;A.messaging.subscribe(oA.initialCompleted,async()=>{if(X)return{success:!0};if(X=!0,!(await K.shouldEnqueue?.()??!0))return $.info("Skipping derived entity projection initial sync",{projectionId:H.id,targetType:H.targetType}),{success:!0};return Y=await sA(A,$,H,K.jobData,A$(K.jobOptions),"initial-sync"),{success:!0}})}if(H.sourceChange){let K=H.sourceChange,W=new Set(K.sourceTypes),P=K.events??[HA.created,HA.updated],G=async(V)=>{if(K.requireInitialSync&&!X)return{success:!0};let F=V.payload,U=eZ(K,F);if(!U||!W.has("*")&&!W.has(U))return{success:!0};if(!(await K.shouldEnqueue?.(F)??!0))return{success:!0};let w=await K.jobData(F);if(!w)return{success:!0};return await sA(A,$,H,w,K.jobOptions?.(F),"source-change"),{success:!0}};for(let V of P)A.messaging.subscribe(V,G)}return{hasObservedInitialSync:()=>X,hasQueuedInitialSync:()=>Y}}function eZ(A,$){if(A.sourceType)return A.sourceType;if(A.sourceKind&&A.sourceKind!=="entity")return A.sourceKind;return $.entityType}async function sA(A,$,H,X,Y,K){try{return await A.jobs.enqueue({type:H.job.type,data:X,...Y?{options:Y}:{}}),$.info("Queued derived entity projection",{projectionId:H.id,targetType:H.targetType,reason:K}),!0}catch(W){return $.error("Failed to queue derived entity projection",{projectionId:H.id,targetType:H.targetType,reason:K,error:L(W)}),!1}}function A$(A){return typeof A==="function"?A():A}var Z$=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()}),$$=Z.object({resourceUri:Z.string()});class B{id;version;description;packageName;config;context;get logger(){return this.context?.logger??v.createFresh({context:this.id})}constructor(A,$,H,X){this.id=A,this.packageName=$.name,this.version=$.version,this.description=$.description??`${$.name} plugin`;let Y=X.safeParse(H);if(!Y.success)throw new r(A,Y.error.issues.map((K)=>({path:K.path.map(String).join("."),code:K.code,message:K.message})));this.config=Y.data}setupMessageHandlers(A){A.messaging.subscribe(k.toolExecute(this.id),async($)=>{try{let H=Z$.safeParse($.payload);if(!H.success)return{success:!1,error:"Invalid tool execution request format"};let{toolName:X,args:Y,progressToken:K,hasProgress:W,interfaceType:P,userId:G,conversationId:V,channelId:F,channelName:U,runId:C,toolCallId:w,userPermissionLevel:WA,signal:GA}=H.data,VA=(await this.getTools()).find((u)=>u.name===X);if(!VA)return{success:!1,error:`Tool not found: ${X}`};let qZ={interfaceType:P,userId:G,...V&&{conversationId:V},...F&&{channelId:F},...U&&{channelName:U},...C&&{runId:C},...w&&{toolCallId:w},...WA&&{userPermissionLevel:WA},...GA&&{signal:GA},...W&&K!==void 0&&{progressToken:K,sendProgress:async(u)=>{await A.messaging.send({type:k.progress(this.id),payload:{progressToken:K,notification:u}})}}};return{success:!0,data:await VA.handler(Y,qZ)}}catch(H){return this.logger.error("Tool execution error",H),{success:!1,error:L(H)}}}),A.messaging.subscribe(k.resourceGet(this.id),async($)=>{try{let H=$$.safeParse($.payload);if(!H.success)return{success:!1,error:"Invalid resource get request format"};let{resourceUri:X}=H.data,K=(await this.getResources()).find((P)=>P.uri===X);if(!K)return{success:!1,error:`Resource not found: ${X}`};return{success:!0,data:await K.handler()}}catch(H){return this.logger.error("Resource fetch error",H),{success:!1,error:L(H)}}})}async onRegister(A){}async onRegistrationComplete(A){}async finalizeRegistration(){await this.onRegistrationComplete(this.getContext())}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(X)=>{await $.messaging.send({type:k.progress(H),payload:{progressToken:A,notification:{progress:X.progress,total:X.total,message:X.message}}})})}}var n0=Z.object({});class eA extends B{type="entity";entityActionPolicy;derivedEntityProjectionControllers=new Map;constructor(A,$,H,X,Y){super(A,$,H,X);if(Y!==void 0)this.entityActionPolicy=Y}async register(A,$){let H=aA(A,this.id,$);if(this.context=H,this.setupMessageHandlers(H),H.entities.register(this.entityType,this.schema,this.adapter,this.getEntityTypeConfig()),this.interceptCreate!==eA.prototype.interceptCreate)H.entities.registerCreateInterceptor(this.entityType,(G,V)=>this.interceptCreate(G,V,H));let X=this.createGenerationHandler(H);if(X)H.jobs.registerHandler(`${this.entityType}:generation`,X);let Y=this.getTemplates();if(Y&&Object.keys(Y).length>0)A.registerTemplates(Y,this.id);let K=this.getDataSources();for(let G of K)H.entities.registerDataSource(G);let W=this.getDerivedEntityProjections(H);for(let G of W){let V=tA(H,this.logger,G);this.derivedEntityProjectionControllers.set(G.id,V)}await this.onRegister(this.context);let P=await this.getInstructions();return{tools:[],resources:[],...P&&{instructions:P}}}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 AZ(A){return $Z(A)}function ZZ(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 HZ(A){return{chat:async($,H,X,Y)=>{let K=ZZ(X),W=Y?await A.chat($,H,K,Y):await A.chat($,H,K);return AZ(W)},confirmPendingAction:async($,H,X,Y,K)=>{let W=ZZ(Y);if(!W)throw Error("Confirmation requires caller context.");let P=K?await A.confirmPendingAction($,H,X,W,K):await A.confirmPendingAction($,H,X,W);return AZ(P)},invalidate:()=>{A.invalidateAgent()}}}function XZ(A,$,H){let X=J(A,$,H),Y=A.getMCPService(),K=A.getPermissionService(),W=HZ(A.getAgentService());return{...X,mcpTransport:Y,agent:W,permissions:{...X.permissions,getUserLevel:(P,G,V)=>{return K.determineUserLevel(P,G,V)}},daemons:{register:(P,G)=>{let V=`${$}:${P}`;A.registerDaemon(V,G,$),X.logger.debug(`Registered daemon: ${V}`)}},conversations:{...X.conversations,start:async(P)=>{return A.getConversationService().startConversation(P)},addMessage:async(P)=>{await A.getConversationService().addMessage(P)},updateMetadata:async(P)=>{return A.getConversationService().updateConversationMetadata(P)},delete:async(P)=>{return A.getConversationService().deleteConversation(P)}},tools:{listForPermissionLevel:(P)=>{return A.listToolsForPermissionLevel(P)}},apiRoutes:{getRoutes:()=>{return A.getPluginApiRoutes()},getMessageBus:()=>{return A.getMessageBus()}},webRoutes:{getRoutes:()=>{return A.getPluginWebRoutes()}},plugins:{has:(P)=>A.hasPlugin(P)}}}var H$=3600000;class XA extends B{type="interface";daemon;jobTrackingEntries=new Map;jobTrackingTtlMs=H$;async register(A,$){let H=XZ(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,X]of this.jobTrackingEntries)if(A-X.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 X=this.jobTrackingEntries.get($);if(X)return X.info}return}setJobTracking(A,$){this.cleanupExpiredEntries(),this.jobTrackingEntries.set(A,{info:$,createdAt:Date.now()})}removeJobTracking(A){this.jobTrackingEntries.delete(A)}async createJobWithTracking(A,$){let X=await this.getContext().jobs.enqueue(A);return this.setJobTracking(X,$),X}async createBatchWithTracking(A,$,H){let Y=await this.getContext().jobs.enqueueBatch(A,H);return this.setJobTracking(Y,$),Y}}function y(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 YZ(A,$){return A.pendingConfirmations?.some((H)=>H.toolName===$)===!0||X$(A.cards).some((H)=>H.toolName===$)}function X$(A){return A?.filter(($)=>$.kind==="tool-approval"&&$.state==="approval-requested")??[]}var YA=1e5,Y$=[".md",".txt",".markdown"],K$=["text/plain","text/markdown","text/x-markdown"],P$=/https?:\/\/[^\s<>"{}|\\^`[\]]+?(?=[,;:\s]|$)/gi,W$=["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"],G$=Z.object({captureUrls:Z.boolean().default(!1),blockedUrlDomains:Z.array(Z.string()).default(W$)});function KZ(A,$){if($&&K$.some((H)=>$.startsWith(H)))return!0;return Y$.some((H)=>A.toLowerCase().endsWith(H))}function PZ(A){return A<=YA}function WZ(A){if(A.includes(0))return!1;try{return new TextDecoder("utf-8",{fatal:!0}).decode(A),!0}catch{return!1}}function GZ(A,$){return`User uploaded a file "${A}":
3
+
4
+ ${$}`}function VZ(A,$){let H=A.match(P$)??[];return[...new Set(H)].filter((X)=>{try{let{hostname:Y}=new URL(X);return!$.some((K)=>Y===K||Y.endsWith(`.${K}`))}catch{return!1}})}function KA(A,$){let H=A.attachment.source;if((H?.entityType==="document"||H?.entityType==="image")&&H.entityId)return{entityType:H.entityType,id:H.entityId};return V$(A.attachment.downloadUrl??A.attachment.url,$)}function V$(A,$="http://local"){if(!A)return;let H;try{H=new URL(A,$)}catch{return}let X=H.searchParams.get("id")?.trim();if(!X)return;if(H.pathname==="/api/chat/attachments/document")return{entityType:"document",id:X};if(H.pathname==="/api/chat/attachments/image")return{entityType:"image",id:X};return}function DZ(A,$){let H=D$($,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 FZ(A,$,H,X){let Y=A?.filename;if(typeof Y==="string"&&Y.trim())return Y;if(H==="document")return`${$}.pdf`;let K=A?.format;if(typeof K==="string"&&K.trim())return`${$}.${K==="jpeg"?"jpg":K}`;let W=X.split("/")[1]?.split("+")[0]??"png";return`${$}.${W}`}function D$(A,$){let H=A.match(/^data:([^;]+);base64,(.+)$/i),X=H?.[1],Y=H?.[2];if(!X||!Y||!$.test(X))return;let K=Buffer.from(Y,"base64");return{mimeType:X,data:K.buffer.slice(K.byteOffset,K.byteOffset+K.byteLength)}}async function RZ({entityRef:A,userLevel:$,getEntity:H,getVisibleEntity:X}){let Y=UZ($),K=await X(A,Y);if(K)return{status:"visible",entity:K};return Boolean(await H(A))?{status:"denied"}:{status:"missing"}}function wZ(A){return A==="anchor"||A==="trusted"}function NZ(A,$){A.messaging.subscribe(t.progress,async(H)=>{try{let X=o.safeParse(H.payload);if(!X.success)return $.onInvalidSchema(),{success:!1};let Y=X.data;return await $.onProgress(Y,Y.metadata),{success:!0}}catch(X){return $.onError(X),{success:!1}}})}function _Z(A){let $=A.status==="completed"?"\u2705":"\u274C",H=A.status==="completed"?"completed":"failed",X=A.metadata.operationType.replace(/_/g," "),Y=A.metadata.operationTarget?`: ${A.metadata.operationTarget}`:"",K=`${$} **${X}${Y}** ${H}`;if(A.message)K+=`
5
+ ${A.message}`;return K}function LZ(A){let $=A.metadata.operationType.replace(/_/g," "),H=A.metadata.operationTarget?`: ${A.metadata.operationTarget}`:"",X=`\uD83D\uDD04 **${$}${H}**`;if(A.progress&&A.progress.total>0)X+=` ${A.progress.current}/${A.progress.total} (${A.progress.percentage}%)`;if(A.message)X+=`
6
+ ${A.message}`;return X}var F$=Z.enum(["tool:invoking","tool:completed","tool:failed"]),U$=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()}),R$=["tool:invoking","tool:completed","tool:failed"];function OZ(A,$){for(let H of R$)A.messaging.subscribe(H,async(X)=>{try{let Y=F$.safeParse(X.type),K=U$.safeParse(X.payload);if(!Y.success||!K.success)return $.onInvalidSchema(),{success:!1};return await $.onToolActivity({type:Y.data,...K.data}),{success:!0}}catch(Y){return $.onError(Y),{success:!1}}})}class PA{scope;fibers;delayMs;clock;closePromise=null;closed=!1;constructor(A,$){this.delayMs=A,this.clock=$?.clock,this.scope=R.runSync(f.make()),this.fibers=R.runSync(f.extend(I.make(),this.scope))}schedule(A,$){if(this.closed)return;let H=R.sleep(this.delayMs).pipe(R.andThen(R.sync($))),X=this.clock?R.withClock(H,this.clock):H,Y=R.runFork(X);I.unsafeSet(this.fibers,A,Y)}close(){return this.closed=!0,this.closePromise??=R.runPromise(f.close(this.scope,x.void)),this.closePromise}}var BZ=500,w$=500;class N$ extends XA{isUploadableTextFile(A,$){return KZ(A,$)}isFileSizeAllowed(A){return PZ(A)}formatFileUploadMessage(A,$){return GZ(A,$)}getMaxFileUploadBytes(){return YA}isLikelyTextContent(A){return WZ(A)}async resolveNativeArtifactDelivery(A){let $=[],H=new Set;if(!this.context||!A.cards)return{files:$,deniedCardIds:H};let X=this.context;for(let Y of A.cards){if(Y.kind!=="attachment")continue;let K=KA(Y,A.displayBaseUrl);if(!K)continue;let W=await RZ({entityRef:K,userLevel:A.userPermissionLevel,getEntity:(G)=>X.entityService.getEntity(G),getVisibleEntity:(G,V)=>X.entityService.getEntity({...G,visibilityScope:V})});if(W.status==="denied"){H.add(Y.id);continue}if(W.status!=="visible")continue;if(!wZ(A.userPermissionLevel))continue;if(typeof W.entity.content!=="string")continue;let P=DZ(K.entityType,W.entity.content);if(!P)continue;if(A.maxBytes!==void 0&&P.data.byteLength>A.maxBytes){this.logger.debug("Skipping oversized native artifact upload",{cardId:Y.id,sizeBytes:P.data.byteLength});continue}$.push({cardId:Y.id,data:new Uint8Array(P.data),filename:Y.attachment.filename??FZ(W.entity.metadata,K.id,K.entityType,P.mimeType),mimeType:P.mimeType})}return{files:$,deniedCardIds:H}}extractCaptureableUrls(A,$){return VZ(A,$)}async captureUrlViaAgent(A,$,H,X,Y){if(!this.context)return;let K=this.context.permissions.getUserLevel(X,H,Y);await this.context.agent.chat(`Save this link: ${A}`,`links-${$}`,{userPermissionLevel:K,interfaceType:X,channelId:$})}progressEvents=new Map;progressCleanupSupervisor=new PA(w$);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})}}),OZ(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,X=A.metadata.rootJobId;if(await this.handleProcessingProgress(A,H,X))return;if(A.status==="completed"||A.status==="failed")await this.handleTerminalProgress(A,H,X);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 X=this.agentResponseTracking.get(A.id);if(X)return await this.editTrackedProgressMessage(A,X),!0;let Y=this.formatProgressOutput(A),K=this.progressMessageTracking.get(H),W=Date.now();if(K){if(W-K.lastUpdate>=BZ)await this.editMessage({channelId:K.channelId,messageId:K.messageId,newMessage:Y}),K.lastUpdate=W}else if($&&!this.isProcessingInput)await this.sendInitialProgressMessage(H,$,Y,W);return!1}async editTrackedProgressMessage(A,$){let H=Date.now();if(H-$.lastUpdate<BZ)return;await this.editMessage({channelId:$.channelId,messageId:$.messageId,newMessage:this.formatProgressOutput(A)}),$.lastUpdate=H}async sendInitialProgressMessage(A,$,H,X){let Y=await this.sendMessageWithId({channelId:$,message:H});if(!Y)return;this.progressMessageTracking.set(A,{messageId:Y,channelId:$,lastUpdate:X}),this.logger.debug("Tracking progress message",{rootJobId:A,messageId:Y,channelId:$})}async handleTerminalProgress(A,$,H){let X=this.formatCompletionOutput(A),Y=this.progressMessageTracking.get(H),K=this.agentResponseTracking.get(A.id);if(this.logger.debug("Completion event received",{eventId:A.id,rootJobId:H,hasProgressTracking:!!Y,hasAgentTracking:!!K,supportsEditing:this.supportsMessageEditing()}),this.supportsMessageEditing())await this.updateTrackedCompletion(A,X,Y,K,H);if(!Y&&!K&&$)this.sendOrBufferCompletionMessage(X,$);this.scheduleProgressCleanup(A.id)}async updateTrackedCompletion(A,$,H,X,Y){if(X){if(await this.editMessage({channelId:X.channelId,messageId:X.messageId,newMessage:$}),this.agentResponseTracking.delete(A.id),H)this.progressMessageTracking.delete(Y);return}if(H)await this.editMessage({channelId:H.channelId,messageId:H.messageId,newMessage:$}),this.progressMessageTracking.delete(Y)}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 LZ(A)}formatCompletionOutput(A){return _Z(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(y(A,"running"));return;case"tool:completed":if(this.isProcessingInput){this.pendingToolCompletions.set(this.getToolCompletionKey(A),A);return}await this.handleToolStatusUpdate(y(A,"completed"));return;case"tool:failed":this.pendingToolCompletions.delete(this.getToolCompletionKey(A)),await this.handleToolStatusUpdate(y(A,"failed"));return}}async handleToolStatusUpdate(A){}async handleAgentResponseToolStatuses(A,$){if(this.pendingToolCompletions.size===0)return;let H=Array.from(this.pendingToolCompletions.values()).filter((X)=>X.interfaceType===this.id&&X.conversationId===$);for(let X of H){this.pendingToolCompletions.delete(this.getToolCompletionKey(X));let Y=YZ(A,X.toolName)?"awaiting-approval":"completed";await this.handleToolStatusUpdate(y(X,Y))}}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 MZ(A,$,H){let X=J(A,$,H),Y=A.getEntityService(),K=A.getRenderService(),W=A.getContentService();return{...X,entityService:Y,entities:b(A),webRoutes:{getRoutes:()=>A.getPluginWebRoutes()},templates:{register:(P,G)=>{A.registerTemplates(P,G??$)},format:(P,G)=>{return W.formatContent(P,G,{pluginId:$})},parse:(P,G)=>{return W.parseContent(P,G,$)},resolve:async(P,G)=>{return await W.resolveContent(P,G,$)},getCapabilities:(P)=>{let G=P.includes(":")?P:`${$}:${P}`,V=A.getTemplate(G);if(!V)return null;let F=CZ.getCapabilities(V);return{canGenerate:F.canGenerate,canFetch:F.canFetch,canRender:F.canRender,isStaticOnly:F.isStaticOnly}}},views:{get:(P)=>{return K.get(P)??void 0},list:()=>{return K.list()},hasRenderer:(P,G="web")=>{return K.hasRenderer(P,G)},getRenderer:(P,G="web")=>{return K.getRenderer(P,G)},validate:(P,G)=>{return K.validate(P,G)}},prompts:p(Y),ai:{query:(P,G)=>A.query(P,G),generate:async(P)=>{return A.generateContent(P)},generateObject:async(P,G,V)=>{return A.generateObject(P,G,V)},generateImage:async(P,G)=>{return A.generateImage(P,G)},canGenerateImages:()=>{return A.canGenerateImages()}},registerInstructions:(P)=>{A.registerInstructions($,P)}}}class _$ extends B{type="service";getApiRoutes(){return[]}getWebRoutes(){return[]}async register(A,$){let H=MZ(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,X){this.getContext().entities.register(A,$,H,X)}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{fA as m,q$ as n,Q$ as o,DA as p,FA as q,n0 as r,eA as s,XA as t,N$ as u,_$ as v,C1 as w,v4 as x};
8
+
9
+ //# debugId=D7FF5754EA41B18E64756E2164756E21
10
+ //# sourceMappingURL=index-jm9vaxsh.js.map