@rizom/brain 0.2.0-alpha.233 → 0.2.0-alpha.234

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 (29) hide show
  1. package/dist/brain.js +913 -913
  2. package/dist/chunks/blog-post-adapter-bgre78xn.js +5 -0
  3. package/dist/chunks/{index-0mbxe3qn.js → index-23zvavvg.js} +2 -2
  4. package/dist/chunks/{index-6dj1keya.js → index-9djq51zg.js} +2 -2
  5. package/dist/chunks/{index-r10vtebb.js → index-k1dcptsq.js} +2 -2
  6. package/dist/chunks/{index-r10vtebb.js.map → index-k1dcptsq.js.map} +4 -4
  7. package/dist/chunks/{index-n7s4e13a.js → index-q0dkt6nc.js} +4 -4
  8. package/dist/chunks/{index-n7s4e13a.js.map → index-q0dkt6nc.js.map} +2 -2
  9. package/dist/chunks/{index-2are5r6e.js → index-srk70x0g.js} +2 -2
  10. package/dist/chunks/{rss-datasource-ta5908z4.js → rss-datasource-gj506d71.js} +2 -2
  11. package/dist/entities.d.ts +3 -0
  12. package/dist/entities.js +1 -1
  13. package/dist/index.js +2 -2
  14. package/dist/index.js.map +1 -1
  15. package/dist/plugins.d.ts +3 -0
  16. package/dist/plugins.js +1 -1
  17. package/dist/services.d.ts +19 -0
  18. package/dist/services.js +1 -1
  19. package/dist/site.js +6 -6
  20. package/dist/site.js.map +1 -1
  21. package/dist/ui/cms-app.js +135 -134
  22. package/dist/ui/cms-app.js.map +8 -8
  23. package/package.json +1 -1
  24. package/dist/chunks/blog-post-adapter-aajwrg2b.js +0 -5
  25. /package/dist/chunks/{blog-post-adapter-aajwrg2b.js.map → blog-post-adapter-bgre78xn.js.map} +0 -0
  26. /package/dist/chunks/{index-0mbxe3qn.js.map → index-23zvavvg.js.map} +0 -0
  27. /package/dist/chunks/{index-6dj1keya.js.map → index-9djq51zg.js.map} +0 -0
  28. /package/dist/chunks/{index-2are5r6e.js.map → index-srk70x0g.js.map} +0 -0
  29. /package/dist/chunks/{rss-datasource-ta5908z4.js.map → rss-datasource-gj506d71.js.map} +0 -0
@@ -0,0 +1,5 @@
1
+ // @bun
2
+ import{a,b}from"./index-23zvavvg.js";import"./index-q0dkt6nc.js";import"./index-9djq51zg.js";import"./index-srk70x0g.js";import"./index-k1dcptsq.js";import"./index-twtkr2fy.js";import"./index-6tjqzkys.js";import"./index-5ecgasa8.js";import"./index-zx3c2cws.js";import"./index-57d1xga4.js";import"./index-vtwspye3.js";export{b as blogPostAdapter,a as BlogPostAdapter};
3
+
4
+ //# debugId=D2E6026F1A96F07064756E2164756E21
5
+ //# sourceMappingURL=blog-post-adapter-bgre78xn.js.map
@@ -1,6 +1,6 @@
1
1
  // @bun
2
- import{h as v,i as G}from"./index-n7s4e13a.js";import{$ as D}from"./index-r10vtebb.js";import{sa as z}from"./index-6tjqzkys.js";class H extends D{constructor(){super({entityType:"post",purpose:"A long-form published article, essay, or blog post written for an audience.",schema:G,frontmatterSchema:v,supportsCoverImage:!0})}toMarkdown(j){let q=this.extractBody(j.content);try{let x=this.parseFrontMatter(j.content,v),I={...x,slug:x.slug??j.metadata.slug};return this.buildMarkdown(q,I)}catch{return q}}fromMarkdown(j){let q=this.parseFrontMatter(j,v),x=q.slug??z(q.title);return{content:j,entityType:"post",metadata:{title:q.title,slug:x,status:q.status,publishedAt:q.publishedAt,seriesName:q.seriesName,seriesIndex:q.seriesIndex}}}parsePostFrontmatter(j){return this.parseFrontMatter(j.content,v)}createPostContent(j,q){return this.buildMarkdown(q,j)}buildStub(j){let q={title:j.title,slug:j.id,status:"generating",excerpt:"",author:"AI"};return{content:this.buildMarkdown("",q),metadata:{title:j.title,slug:j.id,status:"generating"}}}}var M=new H;
2
+ import{h as v,i as G}from"./index-q0dkt6nc.js";import{$ as D}from"./index-k1dcptsq.js";import{sa as z}from"./index-6tjqzkys.js";class H extends D{constructor(){super({entityType:"post",purpose:"A long-form published article, essay, or blog post written for an audience.",schema:G,frontmatterSchema:v,supportsCoverImage:!0})}toMarkdown(j){let q=this.extractBody(j.content);try{let x=this.parseFrontMatter(j.content,v),I={...x,slug:x.slug??j.metadata.slug};return this.buildMarkdown(q,I)}catch{return q}}fromMarkdown(j){let q=this.parseFrontMatter(j,v),x=q.slug??z(q.title);return{content:j,entityType:"post",metadata:{title:q.title,slug:x,status:q.status,publishedAt:q.publishedAt,seriesName:q.seriesName,seriesIndex:q.seriesIndex}}}parsePostFrontmatter(j){return this.parseFrontMatter(j.content,v)}createPostContent(j,q){return this.buildMarkdown(q,j)}buildStub(j){let q={title:j.title,slug:j.id,status:"generating",excerpt:"",author:"AI"};return{content:this.buildMarkdown("",q),metadata:{title:j.title,slug:j.id,status:"generating"}}}}var M=new H;
3
3
  export{H as a,M as b};
4
4
 
5
5
  //# debugId=551B0161A9F6B95964756E2164756E21
6
- //# sourceMappingURL=index-0mbxe3qn.js.map
6
+ //# sourceMappingURL=index-23zvavvg.js.map
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{B,D as v,E as k,F as m,G as _,H as D,I as q,M as z,N as f,O as N,P as g,Q as OA,V as tZ,W as eZ}from"./index-r10vtebb.js";import{na as oZ,oa as d}from"./index-twtkr2fy.js";import{xa as JA}from"./index-5ecgasa8.js";import{Ia as WA,Ja as L,Ka as CZ,La as yZ,Oa as Q,Pa as HA,Qa as XZ,Sa as e,Va as E}from"./index-zx3c2cws.js";import{Za as A}from"./index-57d1xga4.js";var z$=A.object({id:A.string(),sessionId:A.string(),interfaceType:A.string(),channelId:A.string(),personId:A.string().optional(),channelName:A.string().optional(),startedAt:A.string(),lastActiveAt:A.string(),createdAt:A.string(),updatedAt:A.string(),metadata:d}),y$=A.object({id:A.string(),conversationId:A.string(),role:Q,content:A.string(),timestamp:A.string(),metadata:d});var RZ=A.object({name:A.string(),role:A.string(),purpose:A.string(),values:A.array(A.string())}),wZ=A.object({name:A.string(),organization:A.string().optional(),description:A.string().optional(),avatar:A.string().optional(),website:A.string().optional(),email:A.string().optional(),socialLinks:A.array(A.object({platform:A.enum(["github","instagram","linkedin","email","website"]),url:A.string(),label:A.string().optional()})).optional()});import{createClient as u$}from"@libsql/client";class NZ{constructor(Z,$){this.name=Z,this.unique=$}static[m]="SQLiteIndexBuilderOn";on(...Z){return new _Z(this.name,Z,this.unique)}}class _Z{static[m]="SQLiteIndexBuilder";config;constructor(Z,$,H){this.config={name:Z,columns:$,unique:H,where:void 0}}where(Z){return this.config.where=Z,this}build(Z){return new LZ(this.config,Z)}}class LZ{static[m]="SQLiteIndex";config;constructor(Z,$){this.config={...Z,table:$}}}function w(Z){return new NZ(Z,!1)}var h=q("conversations",{id:D("id").primaryKey(),sessionId:D("session_id").notNull(),interfaceType:D("interface_type").notNull(),channelId:D("channel_id").notNull(),personId:D("person_id"),started:D("started").notNull(),lastActive:D("last_active").notNull(),metadata:D("metadata"),created:D("created").notNull(),updated:D("updated").notNull()},(Z)=>({sessionIdx:w("idx_conversations_session").on(Z.sessionId),channelIdx:w("idx_conversations_channel").on(Z.channelId),personIdx:w("idx_conversations_person").on(Z.personId),interfaceSessionIdx:w("idx_conversations_interface_session").on(Z.interfaceType,Z.sessionId),interfaceChannelIdx:w("idx_conversations_interface_channel").on(Z.interfaceType,Z.channelId)})),OZ=q("messages",{id:D("id").primaryKey(),conversationId:D("conversation_id").notNull().references(()=>h.id,{onDelete:"cascade"}),role:D("role").notNull(),content:D("content").notNull(),timestamp:D("timestamp").notNull(),metadata:D("metadata")},(Z)=>({conversationIdx:w("idx_messages_conversation").on(Z.conversationId),timestampIdx:w("idx_messages_timestamp").on(Z.timestamp)})),BZ=q("summary_tracking",{conversationId:D("conversation_id").primaryKey().references(()=>h.id,{onDelete:"cascade"}),lastSummarizedAt:D("last_summarized_at"),lastMessageId:D("last_message_id"),messagesSinceSummary:_("messages_since_summary").default(0),updated:D("updated").notNull()});var SA=A.preprocess((Z)=>{if(typeof Z!=="string")return Z;try{return JSON.parse(Z)}catch{return}},A.record(A.string(),A.unknown())).catch({});function S(Z){return SA.parse(Z)}var j=A.object({identity:L,interfaceType:A.string(),role:Q,displayName:A.string().optional(),username:A.string().optional(),isBot:A.boolean().optional()}),xA=A.preprocess(zA,j);function zA(Z){if(!mA(Z)||"identity"in Z)return Z;let{actorId:$,interfaceType:H,role:X}=Z;if(typeof $!=="string"||typeof H!=="string"||X!=="user"&&X!=="assistant")return Z;let{userId:Y,canonicalId:P}=Z;return{identity:CZ({actorId:$,interfaceType:H,role:X,...typeof Y==="string"?{userId:Y}:{},...typeof P==="string"?{canonicalId:P}:{}}),interfaceType:H,role:X,...typeof Z.displayName==="string"?{displayName:Z.displayName}:{},...typeof Z.username==="string"?{username:Z.username}:{},...typeof Z.isBot==="boolean"?{isBot:Z.isBot}:{}}}var I=A.object({messageId:A.string().optional(),channelId:A.string().optional(),channelName:A.string().optional(),threadId:A.string().optional(),metadata:A.record(A.string(),A.unknown()).optional()}),yA=A.looseObject({actor:xA.optional(),source:I.optional()});function mA(Z){return typeof Z==="object"&&Z!==null&&!Array.isArray(Z)}var hA=A.object({id:A.string(),conversationId:A.string(),role:A.string(),content:A.string(),timestamp:A.string(),metadata:A.string().nullable()}),jA=A.object({conversationId:A.string(),messageCount:A.number(),messages:A.array(hA),windowStart:A.number(),windowEnd:A.number(),windowSize:A.number(),timestamp:A.string()});var MZ=A.object({kind:A.string().min(1),id:A.string().min(1)}),gA=A.object({kind:A.literal("text"),filename:A.string().min(1),mediaType:A.string().min(1),content:A.string(),sizeBytes:A.number().nonnegative().optional(),source:MZ.optional()}),bA=A.custom((Z)=>Z instanceof Uint8Array),pA=A.object({kind:A.literal("file"),filename:A.string().min(1),mediaType:A.string().min(1),data:bA,sizeBytes:A.number().nonnegative().optional(),source:MZ.optional()}),uA=A.discriminatedUnion("kind",[gA,pA]),S1=A.object({userPermissionLevel:A.enum(["admin","trusted","public"]).optional(),isAnchor:A.boolean().optional(),interfaceType:A.string().optional(),channelId:A.string().optional(),channelName:A.string().optional(),actor:j.optional(),source:I.optional(),attachments:A.array(uA).optional()});var cA=A.object({status:A.enum(["healthy","warning","error","unknown"]),message:A.string().optional(),lastCheck:A.date().optional(),details:A.record(A.string(),A.unknown()).optional()}),QZ=A.object({name:A.string(),pluginId:A.string(),status:A.string(),health:cA.optional()});import{McpServer as a1,ResourceTemplate as s1}from"@modelcontextprotocol/sdk/server/mcp.js";var qZ=A.object({interfaceType:A.string(),actor:L,displayName:A.string().optional(),conversationId:A.string().optional(),channelId:A.string().optional(),channelName:A.string().optional(),runId:A.string().optional(),toolCallId:A.string().optional(),userPermissionLevel:A.enum(["admin","trusted","public"]).optional(),isAnchor:A.boolean().optional()}),kZ=A.strictObject({success:A.literal(!0),data:A.unknown().optional(),message:A.string().optional(),cached:A.literal(!0).optional()}),EZ=A.strictObject({success:A.literal(!1),error:A.string(),code:A.string().optional()}),JZ=A.strictObject({needsConfirmation:A.literal(!0),toolName:A.string(),summary:A.string(),completionSummary:A.string().optional(),preview:A.string().optional(),args:A.unknown()}),l=A.union([kZ,EZ,JZ]);var b1=A.union([A.looseObject({success:A.literal(!0)}),A.object({success:A.literal(!1),error:A.string()})]);var dA=A.union([A.object({success:A.literal(!0),data:A.unknown(),message:A.string().optional()}),A.object({success:A.literal(!1),error:A.string(),code:A.string().optional()})]);var b4=A.object({id:A.string(),type:A.string(),version:A.string(),status:A.string()}),p4=A.object({name:A.string(),description:A.string()}),fZ=A.enum(["admin","trusted","public"]),i=A.object({label:A.string(),url:A.string(),pluginId:A.string(),priority:A.number().default(100),visibility:fZ.default("public")}),lA=A.enum(["human","agent","admin","protocol"]),iA=A.enum(["available","coming-soon","disabled"]),n=A.object({id:A.string(),label:A.string(),description:A.string().optional(),href:A.string(),kind:lA,pluginId:A.string(),priority:A.number().default(100),visibility:fZ.default("public"),status:iA.default("available")}),r=A.object({entityType:A.string(),count:A.number()}),u4=A.object({model:A.string(),version:A.string(),uptime:A.number(),entities:A.number(),entityCounts:A.array(r),embeddings:A.number(),ai:A.object({model:A.string(),embeddingModel:A.string()}),daemons:A.array(QZ),endpoints:A.array(i),interactions:A.array(n)});var c4=A.object({id:A.string(),version:A.string(),type:A.enum(["core","entity","service","interface"]),description:A.string().optional(),dependencies:A.array(A.string()).optional(),packageName:A.string()});var nA=A.object({status:A.enum(["healthy","warning","error","unknown"]),message:A.string().optional(),lastCheck:A.string().optional(),details:A.record(A.string(),A.unknown()).optional()}),rA=A.object({name:A.string(),pluginId:A.string(),status:A.string(),health:nA.optional()}),r4=A.object({model:A.string(),version:A.string(),uptime:A.number(),entities:A.number(),entityCounts:A.array(r),embeddings:A.number(),ai:A.object({model:A.string(),embeddingModel:A.string()}),daemons:A.array(rA),endpoints:A.array(i),interactions:A.array(n)});var o4=A.object({enabled:A.boolean().describe("Whether the plugin is enabled"),debug:A.boolean().describe("Enable debug logging for this plugin")});class a extends Error{pluginId;issues;constructor(Z,$){super(`Invalid plugin config for ${Z}`);this.name="PluginConfigValidationError",this.pluginId=Z,this.issues=$}}var s=A.enum(["file_operations","content_operations","data_processing","batch_processing"]),aA=A.object({pluginId:A.string().optional(),progressToken:A.union([A.string(),A.number()]).optional(),operationType:s,operationTarget:A.string().optional(),interfaceType:A.string().optional(),conversationId:A.string().optional(),channelId:A.string().optional(),requestedByActor:L.optional(),requestedByUserId:A.string().optional(),requestedByInterface:A.string().optional(),silent:A.boolean().optional()}),J=A.object({pluginId:A.string().optional(),progressToken:A.union([A.string(),A.number()]).optional(),operationType:s,operationTarget:A.string().optional(),interfaceType:A.string().optional(),conversationId:A.string().optional(),channelId:A.string().optional(),requestedByActor:L.optional(),requestedByUserId:A.string().optional(),requestedByInterface:A.string().optional(),silent:A.boolean().optional(),rootJobId:A.string()}),A6=A.enum(["none","skip","replace","coalesce"]);var o=A.enum(["pending","processing","completed","failed"]),TZ=A.enum(["completed","failed"]);var sA=A.object({id:A.string(),type:A.string(),status:o,data:A.unknown(),result:A.unknown().optional(),lastError:A.string().optional().nullable(),attempts:A.number(),maxRetries:A.number(),priority:A.number(),createdAt:A.date(),updatedAt:A.date(),processedAt:A.date().optional().nullable(),completedAt:A.date().optional().nullable(),failedAt:A.date().optional().nullable()}),oA=A.object({jobId:A.string(),type:A.string(),status:TZ,result:A.unknown().optional(),error:A.string().optional()}),SZ=A.object({success:A.literal(!1),error:A.string().optional()}),t=A.object({id:A.string(),type:A.enum(["job","batch"]),status:o,message:A.string().optional(),progress:A.object({current:A.number(),total:A.number(),percentage:A.number()}).optional(),aggregationKey:A.string().optional(),batchDetails:A.object({totalOperations:A.number(),completedOperations:A.number(),failedOperations:A.number(),currentOperation:A.string().optional(),errors:A.array(A.string()).optional()}).optional(),jobDetails:A.object({jobType:A.string(),priority:A.number(),retryCount:A.number()}).optional(),metadata:J});var tA=A.record(A.string(),A.unknown());class xZ{logger;schema;jobTypeName;constructor(Z,$){this.logger=Z,this.schema=$.schema,this.jobTypeName=$.jobTypeName}validateAndParse(Z){if(!this.schema)throw Error(`${this.jobTypeName}: No schema provided. Override validateAndParse() or provide a schema.`);let $=this.schema.safeParse(Z);if(!$.success)return this.logger.warn(`Invalid ${this.jobTypeName} job data`,{data:Z,validationError:$.error.issues}),null;return this.logger.debug(`${this.jobTypeName} job data validation successful`,{data:this.summarizeDataForLog($.data)}),$.data}async onError(Z,$,H,X){this.logger.error(`${this.jobTypeName} job error handler triggered`,{jobId:H,errorMessage:Z.message,errorStack:Z.stack,data:this.summarizeDataForLog($)})}async reportProgress(Z,$){await Z.report({progress:$.progress,total:$.total??100,message:$.message})}summarizeDataForLog(Z){let $=tA.safeParse(Z);return $.success?$.data:{}}}import{createClient as F6}from"@libsql/client";var zZ=q("job_queue",{id:D("id").primaryKey().$defaultFn(()=>k()),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")},(Z)=>({queueReadyIdx:w("idx_job_queue_ready").on(Z.status,Z.priority,Z.scheduledFor),jobTypeIdx:w("idx_job_queue_type").on(Z.type,Z.status),jobSourceIdx:w("idx_job_queue_source").on(Z.source)}));var C6=A.looseObject({deduplicationKey:A.string().optional()});class C{callback;heartbeatInterval;constructor(Z){this.callback=Z}static from(Z){if(!Z)return;return new C(Z)}createSub(Z){let{scale:$}=Z??{};if($){let{start:H,end:X}=$,Y=X-H;return new C(async(P)=>{let K=H+P.progress/(P.total??100)*Y;await this.callback({...P,progress:K,total:100})})}return new C(this.callback)}async report(Z){await this.callback(Z)}startHeartbeat(Z,$=5000){this.stopHeartbeat(),this.heartbeatInterval=setInterval(()=>{this.report({message:Z,progress:0}).catch(()=>{})},$)}stopHeartbeat(){if(this.heartbeatInterval)clearInterval(this.heartbeatInterval),this.heartbeatInterval=void 0}toCallback(){return this.callback}}var o6=A.preprocess((Z)=>{if(typeof Z!=="string")return Z;return JSON.parse(Z)},A.record(A.string(),A.unknown()));var A$=A.object({id:A.string(),type:A.string(),data:A.string(),status:A.enum(["pending","processing","completed","failed"]),source:A.string().nullable(),priority:A.number(),retryCount:A.number(),maxRetries:A.number(),lastError:A.string().nullable(),createdAt:A.number(),scheduledFor:A.number(),startedAt:A.number().nullable(),completedAt:A.number().nullable(),metadata:J,result:A.unknown().nullable().optional()});function ZZ(Z,$,H){return async(X)=>{let{type:Y,data:P,toolContext:K=null,options:G}=X,W=K?yZ(K):void 0,{metadata:V,...F}=G??{},U={operationType:"data_processing",pluginId:$,...V,...K&&{interfaceType:K.interfaceType,conversationId:K.conversationId,channelId:K.channelId,requestedByActor:K.actor,...W?{requestedByUserId:W}:{},requestedByInterface:K.interfaceType}};if(K&&!W)delete U.requestedByUserId;let O={...F,source:$,...G?.rootJobId&&{rootJobId:G.rootJobId},metadata:U},R=H&&!Y.includes(":")?`${$}:${Y}`:Y;return Z.enqueue({type:R,data:P,options:O})}}function AZ(Z,$){return async(H,X)=>{let Y=k(),P=H.map((G)=>({...G,type:G.type.includes(":")?G.type:`${$}:${G.type}`})),K={...X,source:$,rootJobId:Y,metadata:{...X?.metadata,operationType:"batch_processing",pluginId:$}};return await Z.enqueueBatch(P,K,Y,$),Y}}function $Z(Z,$){return(H,X)=>{let Y=H.includes(":")?H:`${$}:${H}`;Z.registerHandler(Y,X,$)}}var $$=A.custom((Z)=>typeof Z==="object"&&Z!==null&&("safeParse"in Z)),H$=A.object({name:A.string(),schema:$$});function mZ(Z){return H$.safeParse(Z).success}function X$(Z){if(!Z)return;return{status:Z.status,message:Z.message,lastCheck:Z.lastCheck?.toISOString(),details:Z.details}}function hZ(Z){return{model:Z.model,version:Z.version,uptime:Z.uptime,entities:Z.entities,entityCounts:Z.entityCounts,embeddings:Z.embeddings,ai:Z.ai,daemons:Z.daemons.map(($)=>({name:$.name,pluginId:$.pluginId,status:$.status,health:X$($.health)})),endpoints:Z.endpoints,interactions:Z.interactions}}function Y$(Z){let $=Q.safeParse(Z);return $.success?$.data:"user"}function b(Z){let $=S(Z.metadata),H=typeof $.channelName==="string"?$.channelName:void 0;return{id:Z.id,sessionId:Z.sessionId,interfaceType:Z.interfaceType,channelId:Z.channelId,...Z.personId?{personId:Z.personId}:{},channelName:H,startedAt:Z.started,lastActiveAt:Z.lastActive,createdAt:Z.created,updatedAt:Z.updated,metadata:$}}function jZ(Z){return{id:Z.id,conversationId:Z.conversationId,role:Y$(Z.role),content:Z.content,timestamp:Z.timestamp,metadata:S(Z.metadata)}}function IZ(Z){return RZ.parse(Z)}function vZ(Z){return wZ.parse(Z)}function gZ(Z){return async()=>{return hZ(await Z.getAppInfo())}}function bZ(Z,$){return{get:()=>IZ(Z.getIdentity()),getProfile:()=>vZ(Z.getProfile()),getAppInfo:$}}function pZ(Z,$){let H=Z.getProfileKindRegistry();return{register:(X)=>{H.register($,X)},getResolved:()=>H.getResolved(),getSelectedDefinition:()=>H.getSelectedDefinition()}}function uZ(Z,$,H){let X=Z.getMessageBus();return{send:async(P)=>{return X.send({...P,sender:$})},subscribe:(P,K)=>{if(mZ(P)){let G=P,W=K,V=async(F)=>{let U=G.schema.safeParse(F.payload);if(!U.success)return H.warn(`Invalid payload for channel ${G.name}`,{error:U.error.message}),{noop:!0};let{payload:O,...R}=F;return W(U.data,R)};return X.subscribe(G.name,V)}return X.subscribe(P,K)}}}function cZ(Z,$){let H=Z.getJobQueueService();return{...Z.jobs,enqueue:ZZ(H,$,!0),enqueueBatch:AZ(Z.jobs,$),registerHandler:$Z(H,$)}}function dZ(Z){let $=Z.getPermissionService();return{assertEntityActionAllowed:(H,X,Y)=>{$.assertEntityActionAllowed(H,X,Y.userPermissionLevel)}}}function lZ(Z){return{get:async($)=>{let X=await Z.getConversationService().getConversation($);return X?b(X):null},search:async($)=>{return(await Z.getConversationService().searchConversations($)).map(b)},list:async($)=>{return(await Z.getConversationService().listConversations($)).map(b)},getMessages:async($,H)=>{return(await Z.getConversationService().getMessages($,H)).map(jZ)},countMessages:async($)=>{return Z.getConversationService().countMessages($)}}}function iZ(Z,$){return{registerHandler:(H,X)=>{Z.registerEvalHandler($,H,X)}}}function nZ(Z){return{register:($,H)=>{Z.getInsightsRegistry().register($,H)}}}function rZ(Z){return{has:($)=>Z.getPluginPackageName($)!==void 0}}function aZ(Z,$){return{register:(H)=>{Z.registerEndpoint({...H,pluginId:$})}}}function sZ(Z,$){return{register:(H)=>{Z.registerInteraction({...H,pluginId:$})}}}function T(Z,$,H){let X=Z.getEntityService(),Y=Z.getLogger().child($),P=Z.getDomain(),K=Z.getLocalSiteUrl(),G=Z.shouldPreferLocalUrls(),W=Z.getThemeCSS(),V=gZ(Z),F=Z.getAttachmentRegistry(),U=Z.getRuntimeUploadRegistry(),O=Z.getRuntimeState();return{pluginId:$,logger:Y,entityService:X,semantic:{project:(R)=>X.projectSemanticSpace(R)},identity:bZ(Z,V),profileKinds:pZ(Z,$),appInfo:V,judge:(R)=>Z.judge(R),domain:P,siteUrl:P?`https://${P}`:void 0,localSiteUrl:K,previewUrl:P?`https://${oZ(P)}`:void 0,preferLocalUrls:G,themeCSS:W,entityDisplay:H?.entityDisplay,spaces:Z.getSpaces(),permissions:dZ(Z),messaging:uZ(Z,$,Y),jobs:cZ(Z,$),attachments:F,uploads:U,runtimeState:O,recurringChecks:Z.getRecurringChecks($),conversations:lZ(Z),dataDir:Z.getDataDir(),eval:iZ(Z,$),insights:nZ(Z),plugins:rZ(Z),endpoints:aZ(Z,$),interactions:sZ(Z,$)}}function P$(Z){return Z.replace(/:/g,"-")}function K$(Z){return Z.split(/[:.-]/).map(($)=>$.charAt(0).toUpperCase()+$.slice(1)).join(" ")}var HZ=new Map;async function ZA(Z,$,H){let X=HZ.get($);if(X!==void 0)return X;let Y=P$($),P;try{P=await Z.getEntity({entityType:"prompt",id:Y})}catch{return H}if(P?.content){let K=eZ(P.content,A.record(A.string(),A.unknown())).content;return HZ.set($,K),K}try{let K=K$($),G=tZ(H,{title:K,target:$});await Z.createEntity({entity:{id:Y,entityType:"prompt",content:G,metadata:{title:K,target:$,slug:Y}}})}catch{}return HZ.set($,H),H}function p(Z){let $=Z.getEntityService(),H=Z.getEntityRegistry(),X=Z.getDataSourceRegistry();return{register:(Y,P,K,G)=>{H.registerEntityType(Y,P,K,G)},getAdapter:(Y)=>{try{return H.getAdapter(Y)}catch{return}},extendFrontmatterSchema:(Y,P)=>{H.extendFrontmatterSchema(Y,P)},getEffectiveFrontmatterSchema:(Y)=>{return H.getEffectiveFrontmatterSchema(Y)},registerPersistValidator:(Y,P)=>{H.registerPersistValidator(Y,P)},registerCreateInterceptor:(Y,P)=>{H.registerCreateInterceptor(Y,P)},registerUploadSaveHandler:(Y)=>{H.registerUploadSaveHandler(Y)},getUploadSaveHandler:(Y)=>{return H.getUploadSaveHandler(Y)},update:async(Y)=>{return $.updateEntity({entity:Y})},registerDataSource:(Y)=>{X.register(Y)}}}function u(Z){return{resolve:($,H)=>{return ZA(Z,$,H)}}}function AA(Z,$,H){let X=T(Z,$,H),Y=Z.getEntityService();return{...X,entityService:Y,entities:p(Z),ai:{query:(P,K)=>Z.query(P,K),generate:async(P)=>{return Z.generateContent(P)},generateObject:async(P,K,G)=>{return Z.generateObject(P,K,G)},generateImage:async(P,K)=>{return Z.generateImage(P,K)},canGenerateImages:()=>{return Z.canGenerateImages()}},prompts:u(Y),permissions:X.permissions}}function XA(Z,$,H){let X=!1,Y=!1;if(Z.jobs.registerHandler(H.job.type,H.job.handler),H.initialSync){let P=H.initialSync;Z.messaging.subscribe(HA.initialCompleted,async()=>{if(X)return{success:!0};if(X=!0,!(await P.shouldEnqueue?.()??!0))return $.info("Skipping derived entity projection initial sync",{projectionId:H.id,targetType:H.targetType}),{success:!0};return Y=await $A(Z,$,H,P.jobData,G$(P.jobOptions),"initial-sync"),{success:!0}})}if(H.sourceChange){let P=H.sourceChange,K=new Set(P.sourceTypes),G=P.events??[XZ.created,XZ.updated],W=async(V)=>{if(P.requireInitialSync&&!X)return{success:!0};let F=V.payload,U=W$(P,F);if(!U||!K.has("*")&&!K.has(U))return{success:!0};if(!(await P.shouldEnqueue?.(F)??!0))return{success:!0};let R=await P.jobData(F);if(!R)return{success:!0};return await $A(Z,$,H,R,P.jobOptions?.(F),"source-change"),{success:!0}};for(let V of G)Z.messaging.subscribe(V,W)}return{hasObservedInitialSync:()=>X,hasQueuedInitialSync:()=>Y}}function W$(Z,$){if(Z.sourceType)return Z.sourceType;if(Z.sourceKind&&Z.sourceKind!=="entity")return Z.sourceKind;return $.entityType}async function $A(Z,$,H,X,Y,P){try{return await Z.jobs.enqueue({type:H.job.type,data:X,...Y?{options:Y}:{}}),$.info("Queued derived entity projection",{projectionId:H.id,targetType:H.targetType,reason:P}),!0}catch(K){return $.error("Failed to queue derived entity projection",{projectionId:H.id,targetType:H.targetType,reason:P,error:B(K)}),!1}}function G$(Z){return typeof Z==="function"?Z():Z}var V$=A.object({toolName:A.string(),args:A.unknown(),progressToken:A.union([A.string(),A.number()]).optional(),hasProgress:A.boolean().optional(),interfaceType:A.string(),actor:L,displayName:A.string().optional(),conversationId:A.string().optional(),channelId:A.string().optional(),channelName:A.string().optional(),runId:A.string().optional(),toolCallId:A.string().optional(),userPermissionLevel:A.enum(["admin","trusted","public"]).optional(),isAnchor:A.boolean().optional(),signal:A.custom((Z)=>Z instanceof AbortSignal).optional()}),D$=A.object({resourceUri:A.string()});class M{id;version;description;packageName;config;context;get logger(){return this.context?.logger??v.createFresh({context:this.id})}constructor(Z,$,H,X){this.id=Z,this.packageName=$.name,this.version=$.version,this.description=$.description??`${$.name} plugin`;let Y=X.safeParse(H);if(!Y.success)throw new a(Z,Y.error.issues.map((P)=>({path:P.path.map(String).join("."),code:P.code,message:P.message})));this.config=Y.data}setupMessageHandlers(Z){Z.messaging.subscribe(E.toolExecute(this.id),async($)=>{try{let H=V$.safeParse($.payload);if(!H.success)return{success:!1,error:"Invalid tool execution request format"};let{toolName:X,args:Y,progressToken:P,hasProgress:K,interfaceType:G,actor:W,displayName:V,conversationId:F,channelId:U,channelName:O,runId:R,toolCallId:GZ,userPermissionLevel:VZ,isAnchor:DZ,signal:FZ}=H.data,UZ=(await this.getTools()).find((c)=>c.name===X);if(!UZ)return{success:!1,error:`Tool not found: ${X}`};let TA={interfaceType:G,actor:W,...V&&{displayName:V},...F&&{conversationId:F},...U&&{channelId:U},...O&&{channelName:O},...R&&{runId:R},...GZ&&{toolCallId:GZ},...VZ&&{userPermissionLevel:VZ},...DZ!==void 0&&{isAnchor:DZ},...FZ&&{signal:FZ},...K&&P!==void 0&&{progressToken:P,sendProgress:async(c)=>{await Z.messaging.send({type:E.progress(this.id),payload:{progressToken:P,notification:c}})}}};return{success:!0,data:await UZ.handler(Y,TA)}}catch(H){return this.logger.error("Tool execution error",H),{success:!1,error:B(H)}}}),Z.messaging.subscribe(E.resourceGet(this.id),async($)=>{try{let H=D$.safeParse($.payload);if(!H.success)return{success:!1,error:"Invalid resource get request format"};let{resourceUri:X}=H.data,P=(await this.getResources()).find((G)=>G.uri===X);if(!P)return{success:!1,error:`Resource not found: ${X}`};return{success:!0,data:await P.handler()}}catch(H){return this.logger.error("Resource fetch error",H),{success:!1,error:B(H)}}})}async onRegister(Z){}async onRegistrationComplete(Z){}async finalizeRegistration(){await this.onRegistrationComplete(this.getContext())}async onReady(Z){}async ready(){await this.onReady(this.getContext())}async getCapabilities(){let Z=await this.getInstructions();return{tools:await this.getTools(),resources:await this.getResources(),...Z&&{instructions:Z}}}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(Z){return"public"}createProgressBridge(Z){if(!Z)return;let $=this.context;if(!$)return;let H=this.id;return C.from(async(X)=>{await $.messaging.send({type:E.progress(H),payload:{progressToken:Z,notification:{progress:X.progress,total:X.total,message:X.message}}})})}}var K8=A.object({});class YA extends M{type="entity";entityActionPolicy;derivedEntityProjectionControllers=new Map;constructor(Z,$,H,X,Y){super(Z,$,H,X);if(Y!==void 0)this.entityActionPolicy=Y}async register(Z,$){let H=AA(Z,this.id,$);if(this.context=H,this.setupMessageHandlers(H),H.entities.register(this.entityType,this.schema,this.adapter,this.getEntityTypeConfig()),this.interceptCreate!==YA.prototype.interceptCreate)H.entities.registerCreateInterceptor(this.entityType,(W,V)=>this.interceptCreate(W,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)Z.registerTemplates(Y,this.id);let P=this.getDataSources();for(let W of P)H.entities.registerDataSource(W);let K=this.getDerivedEntityProjections(H);for(let W of K){let V=XA(H,this.logger,W);this.derivedEntityProjectionControllers.set(W.id,V)}await this.onRegister(this.context);let G=await this.getInstructions();return{tools:[],resources:[],...G&&{instructions:G}}}async interceptCreate(Z,$,H){return{kind:"continue",input:Z}}createGenerationHandler(Z){return null}getTemplates(){return null}getDataSources(){return[]}getEntityTypeConfig(){return}getDerivedEntityProjections(Z){return[]}getDerivedEntityProjectionController(Z){return this.derivedEntityProjectionControllers.get(Z)}}function PA(Z){return WA(Z)}function KA(Z){if(!Z)return;return{...Z.userPermissionLevel&&{userPermissionLevel:Z.userPermissionLevel},...Z.isAnchor!==void 0&&{isAnchor:Z.isAnchor},...Z.interfaceType&&{interfaceType:Z.interfaceType},...Z.channelId&&{channelId:Z.channelId},...Z.channelName&&{channelName:Z.channelName},...Z.actor&&{actor:Z.actor},...Z.source&&{source:Z.source},...Z.attachments&&{attachments:Z.attachments}}}function GA(Z){return{chat:async($,H,X,Y)=>{let P=KA(X),K=Y?await Z.chat($,H,P,Y):await Z.chat($,H,P);return PA(K)},confirmPendingAction:async($,H,X,Y,P)=>{let K=KA(Y);if(!K)throw Error("Confirmation requires caller context.");let G=P?await Z.confirmPendingAction($,H,X,K,P):await Z.confirmPendingAction($,H,X,K);return PA(G)},invalidate:()=>{Z.invalidateAgent()}}}function VA(Z,$,H){let X=T(Z,$,H),Y=Z.getMCPService(),P=Z.getPermissionService(),K=GA(Z.getAgentService());return{...X,mcpTransport:Y,agent:K,permissions:{...X.permissions,getUserLevel:(G,W,V)=>{return P.determineUserLevel(G,W,V)},isAnchor:(G,W)=>P.isAnchor(G,W)},daemons:{register:(G,W)=>{let V=`${$}:${G}`;Z.registerDaemon(V,W,$),X.logger.debug(`Registered daemon: ${V}`)}},conversations:{...X.conversations,start:async(G)=>{return Z.getConversationService().startConversation(G)},addMessage:async(G)=>{await Z.getConversationService().addMessage(G)},updateMetadata:async(G)=>{return Z.getConversationService().updateConversationMetadata(G)},delete:async(G)=>{return Z.getConversationService().deleteConversation(G)}},tools:{listForPermissionLevel:(G)=>{return Z.listToolsForPermissionLevel(G)}},apiRoutes:{getRoutes:()=>{return Z.getPluginApiRoutes()},getMessageBus:()=>{return Z.getMessageBus()}},webRoutes:{getRoutes:()=>{return Z.getPluginWebRoutes()}},plugins:{has:(G)=>Z.hasPlugin(G)}}}var F$=3600000;class YZ extends M{type="interface";daemon;jobTrackingEntries=new Map;jobTrackingTtlMs=F$;async register(Z,$){let H=VA(Z,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(Z){}async registerDaemon(Z){if(!this.daemon)return;Z.daemons.register(this.id,this.daemon),Z.logger.debug(`Registered daemon for interface: ${this.id}`)}createDaemon(){return}requiresDaemonStartup(){return!1}getWebRoutes(){return[]}initializeDaemon(){let Z=this.createDaemon();if(Z)this.daemon=Z}async handleProgressEvent(Z,$){}cleanupExpiredEntries(){let Z=Date.now(),$=[];for(let[H,X]of this.jobTrackingEntries)if(Z-X.createdAt>this.jobTrackingTtlMs)$.push(H);for(let H of $)this.jobTrackingEntries.delete(H)}ownsJob(Z,$){return this.jobTrackingEntries.has(Z)||$!==void 0&&this.jobTrackingEntries.has($)}getJobTracking(Z,$){let H=this.jobTrackingEntries.get(Z);if(H)return H.info;if($){let X=this.jobTrackingEntries.get($);if(X)return X.info}return}setJobTracking(Z,$){this.cleanupExpiredEntries(),this.jobTrackingEntries.set(Z,{info:$,createdAt:Date.now()})}removeJobTracking(Z){this.jobTrackingEntries.delete(Z)}async createJobWithTracking(Z,$){let X=await this.getContext().jobs.enqueue(Z);return this.setJobTracking(X,$),X}async createBatchWithTracking(Z,$,H){let Y=await this.getContext().jobs.enqueueBatch(Z,H);return this.setJobTracking(Y,$),Y}}function y(Z,$){return{state:$,toolName:Z.toolName,conversationId:Z.conversationId,interfaceType:Z.interfaceType,...Z.channelId!==void 0&&{channelId:Z.channelId},...Z.channelName!==void 0&&{channelName:Z.channelName},...Z.error!==void 0&&{error:Z.error}}}function DA(Z,$){return Z.pendingConfirmations?.some((H)=>H.toolName===$)===!0||U$(Z.cards).some((H)=>H.toolName===$)}function U$(Z){return Z?.filter(($)=>$.kind==="tool-approval"&&$.state==="approval-requested")??[]}var PZ=1e5,R$=[".md",".txt",".markdown"],w$=["text/plain","text/markdown","text/x-markdown"],N$=/https?:\/\/[^\s<>"{}|\\^`[\]]+?(?=[,;:\s]|$)/gi,_$=["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"],L$=A.object({captureUrls:A.boolean().default(!1),blockedUrlDomains:A.array(A.string()).default(_$)});function FA(Z,$){if($&&w$.some((H)=>$.startsWith(H)))return!0;return R$.some((H)=>Z.toLowerCase().endsWith(H))}function UA(Z){return Z<=PZ}function RA(Z){if(Z.includes(0))return!1;try{return new TextDecoder("utf-8",{fatal:!0}).decode(Z),!0}catch{return!1}}function wA(Z,$){return`User uploaded a file "${Z}":
2
+ import{B,D as v,E as k,F as m,G as _,H as D,I as q,M as z,N as f,O as N,P as g,Q as OA,V as tZ,W as eZ}from"./index-k1dcptsq.js";import{na as oZ,oa as d}from"./index-twtkr2fy.js";import{xa as JA}from"./index-5ecgasa8.js";import{Ia as WA,Ja as L,Ka as CZ,La as yZ,Oa as Q,Pa as HA,Qa as XZ,Sa as e,Va as E}from"./index-zx3c2cws.js";import{Za as A}from"./index-57d1xga4.js";var z$=A.object({id:A.string(),sessionId:A.string(),interfaceType:A.string(),channelId:A.string(),personId:A.string().optional(),channelName:A.string().optional(),startedAt:A.string(),lastActiveAt:A.string(),createdAt:A.string(),updatedAt:A.string(),metadata:d}),y$=A.object({id:A.string(),conversationId:A.string(),role:Q,content:A.string(),timestamp:A.string(),metadata:d});var RZ=A.object({name:A.string(),role:A.string(),purpose:A.string(),values:A.array(A.string())}),wZ=A.object({name:A.string(),organization:A.string().optional(),description:A.string().optional(),avatar:A.string().optional(),website:A.string().optional(),email:A.string().optional(),socialLinks:A.array(A.object({platform:A.enum(["github","instagram","linkedin","email","website"]),url:A.string(),label:A.string().optional()})).optional()});import{createClient as u$}from"@libsql/client";class NZ{constructor(Z,$){this.name=Z,this.unique=$}static[m]="SQLiteIndexBuilderOn";on(...Z){return new _Z(this.name,Z,this.unique)}}class _Z{static[m]="SQLiteIndexBuilder";config;constructor(Z,$,H){this.config={name:Z,columns:$,unique:H,where:void 0}}where(Z){return this.config.where=Z,this}build(Z){return new LZ(this.config,Z)}}class LZ{static[m]="SQLiteIndex";config;constructor(Z,$){this.config={...Z,table:$}}}function w(Z){return new NZ(Z,!1)}var h=q("conversations",{id:D("id").primaryKey(),sessionId:D("session_id").notNull(),interfaceType:D("interface_type").notNull(),channelId:D("channel_id").notNull(),personId:D("person_id"),started:D("started").notNull(),lastActive:D("last_active").notNull(),metadata:D("metadata"),created:D("created").notNull(),updated:D("updated").notNull()},(Z)=>({sessionIdx:w("idx_conversations_session").on(Z.sessionId),channelIdx:w("idx_conversations_channel").on(Z.channelId),personIdx:w("idx_conversations_person").on(Z.personId),interfaceSessionIdx:w("idx_conversations_interface_session").on(Z.interfaceType,Z.sessionId),interfaceChannelIdx:w("idx_conversations_interface_channel").on(Z.interfaceType,Z.channelId)})),OZ=q("messages",{id:D("id").primaryKey(),conversationId:D("conversation_id").notNull().references(()=>h.id,{onDelete:"cascade"}),role:D("role").notNull(),content:D("content").notNull(),timestamp:D("timestamp").notNull(),metadata:D("metadata")},(Z)=>({conversationIdx:w("idx_messages_conversation").on(Z.conversationId),timestampIdx:w("idx_messages_timestamp").on(Z.timestamp)})),BZ=q("summary_tracking",{conversationId:D("conversation_id").primaryKey().references(()=>h.id,{onDelete:"cascade"}),lastSummarizedAt:D("last_summarized_at"),lastMessageId:D("last_message_id"),messagesSinceSummary:_("messages_since_summary").default(0),updated:D("updated").notNull()});var SA=A.preprocess((Z)=>{if(typeof Z!=="string")return Z;try{return JSON.parse(Z)}catch{return}},A.record(A.string(),A.unknown())).catch({});function S(Z){return SA.parse(Z)}var j=A.object({identity:L,interfaceType:A.string(),role:Q,displayName:A.string().optional(),username:A.string().optional(),isBot:A.boolean().optional()}),xA=A.preprocess(zA,j);function zA(Z){if(!mA(Z)||"identity"in Z)return Z;let{actorId:$,interfaceType:H,role:X}=Z;if(typeof $!=="string"||typeof H!=="string"||X!=="user"&&X!=="assistant")return Z;let{userId:Y,canonicalId:P}=Z;return{identity:CZ({actorId:$,interfaceType:H,role:X,...typeof Y==="string"?{userId:Y}:{},...typeof P==="string"?{canonicalId:P}:{}}),interfaceType:H,role:X,...typeof Z.displayName==="string"?{displayName:Z.displayName}:{},...typeof Z.username==="string"?{username:Z.username}:{},...typeof Z.isBot==="boolean"?{isBot:Z.isBot}:{}}}var I=A.object({messageId:A.string().optional(),channelId:A.string().optional(),channelName:A.string().optional(),threadId:A.string().optional(),metadata:A.record(A.string(),A.unknown()).optional()}),yA=A.looseObject({actor:xA.optional(),source:I.optional()});function mA(Z){return typeof Z==="object"&&Z!==null&&!Array.isArray(Z)}var hA=A.object({id:A.string(),conversationId:A.string(),role:A.string(),content:A.string(),timestamp:A.string(),metadata:A.string().nullable()}),jA=A.object({conversationId:A.string(),messageCount:A.number(),messages:A.array(hA),windowStart:A.number(),windowEnd:A.number(),windowSize:A.number(),timestamp:A.string()});var MZ=A.object({kind:A.string().min(1),id:A.string().min(1)}),gA=A.object({kind:A.literal("text"),filename:A.string().min(1),mediaType:A.string().min(1),content:A.string(),sizeBytes:A.number().nonnegative().optional(),source:MZ.optional()}),bA=A.custom((Z)=>Z instanceof Uint8Array),pA=A.object({kind:A.literal("file"),filename:A.string().min(1),mediaType:A.string().min(1),data:bA,sizeBytes:A.number().nonnegative().optional(),source:MZ.optional()}),uA=A.discriminatedUnion("kind",[gA,pA]),S1=A.object({userPermissionLevel:A.enum(["admin","trusted","public"]).optional(),isAnchor:A.boolean().optional(),interfaceType:A.string().optional(),channelId:A.string().optional(),channelName:A.string().optional(),actor:j.optional(),source:I.optional(),attachments:A.array(uA).optional()});var cA=A.object({status:A.enum(["healthy","warning","error","unknown"]),message:A.string().optional(),lastCheck:A.date().optional(),details:A.record(A.string(),A.unknown()).optional()}),QZ=A.object({name:A.string(),pluginId:A.string(),status:A.string(),health:cA.optional()});import{McpServer as a1,ResourceTemplate as s1}from"@modelcontextprotocol/sdk/server/mcp.js";var qZ=A.object({interfaceType:A.string(),actor:L,displayName:A.string().optional(),conversationId:A.string().optional(),channelId:A.string().optional(),channelName:A.string().optional(),runId:A.string().optional(),toolCallId:A.string().optional(),userPermissionLevel:A.enum(["admin","trusted","public"]).optional(),isAnchor:A.boolean().optional()}),kZ=A.strictObject({success:A.literal(!0),data:A.unknown().optional(),message:A.string().optional(),cached:A.literal(!0).optional()}),EZ=A.strictObject({success:A.literal(!1),error:A.string(),code:A.string().optional()}),JZ=A.strictObject({needsConfirmation:A.literal(!0),toolName:A.string(),summary:A.string(),completionSummary:A.string().optional(),preview:A.string().optional(),args:A.unknown()}),l=A.union([kZ,EZ,JZ]);var b1=A.union([A.looseObject({success:A.literal(!0)}),A.object({success:A.literal(!1),error:A.string()})]);var dA=A.union([A.object({success:A.literal(!0),data:A.unknown(),message:A.string().optional()}),A.object({success:A.literal(!1),error:A.string(),code:A.string().optional()})]);var b4=A.object({id:A.string(),type:A.string(),version:A.string(),status:A.string()}),p4=A.object({name:A.string(),description:A.string()}),fZ=A.enum(["admin","trusted","public"]),i=A.object({label:A.string(),url:A.string(),pluginId:A.string(),priority:A.number().default(100),visibility:fZ.default("public")}),lA=A.enum(["human","agent","admin","protocol"]),iA=A.enum(["available","coming-soon","disabled"]),n=A.object({id:A.string(),label:A.string(),description:A.string().optional(),href:A.string(),kind:lA,pluginId:A.string(),priority:A.number().default(100),visibility:fZ.default("public"),status:iA.default("available")}),r=A.object({entityType:A.string(),count:A.number()}),u4=A.object({model:A.string(),version:A.string(),uptime:A.number(),entities:A.number(),entityCounts:A.array(r),embeddings:A.number(),ai:A.object({model:A.string(),embeddingModel:A.string()}),daemons:A.array(QZ),endpoints:A.array(i),interactions:A.array(n)});var c4=A.object({id:A.string(),version:A.string(),type:A.enum(["core","entity","service","interface"]),description:A.string().optional(),dependencies:A.array(A.string()).optional(),packageName:A.string()});var nA=A.object({status:A.enum(["healthy","warning","error","unknown"]),message:A.string().optional(),lastCheck:A.string().optional(),details:A.record(A.string(),A.unknown()).optional()}),rA=A.object({name:A.string(),pluginId:A.string(),status:A.string(),health:nA.optional()}),r4=A.object({model:A.string(),version:A.string(),uptime:A.number(),entities:A.number(),entityCounts:A.array(r),embeddings:A.number(),ai:A.object({model:A.string(),embeddingModel:A.string()}),daemons:A.array(rA),endpoints:A.array(i),interactions:A.array(n)});var o4=A.object({enabled:A.boolean().describe("Whether the plugin is enabled"),debug:A.boolean().describe("Enable debug logging for this plugin")});class a extends Error{pluginId;issues;constructor(Z,$){super(`Invalid plugin config for ${Z}`);this.name="PluginConfigValidationError",this.pluginId=Z,this.issues=$}}var s=A.enum(["file_operations","content_operations","data_processing","batch_processing"]),aA=A.object({pluginId:A.string().optional(),progressToken:A.union([A.string(),A.number()]).optional(),operationType:s,operationTarget:A.string().optional(),interfaceType:A.string().optional(),conversationId:A.string().optional(),channelId:A.string().optional(),requestedByActor:L.optional(),requestedByUserId:A.string().optional(),requestedByInterface:A.string().optional(),silent:A.boolean().optional()}),J=A.object({pluginId:A.string().optional(),progressToken:A.union([A.string(),A.number()]).optional(),operationType:s,operationTarget:A.string().optional(),interfaceType:A.string().optional(),conversationId:A.string().optional(),channelId:A.string().optional(),requestedByActor:L.optional(),requestedByUserId:A.string().optional(),requestedByInterface:A.string().optional(),silent:A.boolean().optional(),rootJobId:A.string()}),A6=A.enum(["none","skip","replace","coalesce"]);var o=A.enum(["pending","processing","completed","failed"]),TZ=A.enum(["completed","failed"]);var sA=A.object({id:A.string(),type:A.string(),status:o,data:A.unknown(),result:A.unknown().optional(),lastError:A.string().optional().nullable(),attempts:A.number(),maxRetries:A.number(),priority:A.number(),createdAt:A.date(),updatedAt:A.date(),processedAt:A.date().optional().nullable(),completedAt:A.date().optional().nullable(),failedAt:A.date().optional().nullable()}),oA=A.object({jobId:A.string(),type:A.string(),status:TZ,result:A.unknown().optional(),error:A.string().optional()}),SZ=A.object({success:A.literal(!1),error:A.string().optional()}),t=A.object({id:A.string(),type:A.enum(["job","batch"]),status:o,message:A.string().optional(),progress:A.object({current:A.number(),total:A.number(),percentage:A.number()}).optional(),aggregationKey:A.string().optional(),batchDetails:A.object({totalOperations:A.number(),completedOperations:A.number(),failedOperations:A.number(),currentOperation:A.string().optional(),errors:A.array(A.string()).optional()}).optional(),jobDetails:A.object({jobType:A.string(),priority:A.number(),retryCount:A.number()}).optional(),metadata:J});var tA=A.record(A.string(),A.unknown());class xZ{logger;schema;jobTypeName;constructor(Z,$){this.logger=Z,this.schema=$.schema,this.jobTypeName=$.jobTypeName}validateAndParse(Z){if(!this.schema)throw Error(`${this.jobTypeName}: No schema provided. Override validateAndParse() or provide a schema.`);let $=this.schema.safeParse(Z);if(!$.success)return this.logger.warn(`Invalid ${this.jobTypeName} job data`,{data:Z,validationError:$.error.issues}),null;return this.logger.debug(`${this.jobTypeName} job data validation successful`,{data:this.summarizeDataForLog($.data)}),$.data}async onError(Z,$,H,X){this.logger.error(`${this.jobTypeName} job error handler triggered`,{jobId:H,errorMessage:Z.message,errorStack:Z.stack,data:this.summarizeDataForLog($)})}async reportProgress(Z,$){await Z.report({progress:$.progress,total:$.total??100,message:$.message})}summarizeDataForLog(Z){let $=tA.safeParse(Z);return $.success?$.data:{}}}import{createClient as F6}from"@libsql/client";var zZ=q("job_queue",{id:D("id").primaryKey().$defaultFn(()=>k()),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")},(Z)=>({queueReadyIdx:w("idx_job_queue_ready").on(Z.status,Z.priority,Z.scheduledFor),jobTypeIdx:w("idx_job_queue_type").on(Z.type,Z.status),jobSourceIdx:w("idx_job_queue_source").on(Z.source)}));var C6=A.looseObject({deduplicationKey:A.string().optional()});class C{callback;heartbeatInterval;constructor(Z){this.callback=Z}static from(Z){if(!Z)return;return new C(Z)}createSub(Z){let{scale:$}=Z??{};if($){let{start:H,end:X}=$,Y=X-H;return new C(async(P)=>{let K=H+P.progress/(P.total??100)*Y;await this.callback({...P,progress:K,total:100})})}return new C(this.callback)}async report(Z){await this.callback(Z)}startHeartbeat(Z,$=5000){this.stopHeartbeat(),this.heartbeatInterval=setInterval(()=>{this.report({message:Z,progress:0}).catch(()=>{})},$)}stopHeartbeat(){if(this.heartbeatInterval)clearInterval(this.heartbeatInterval),this.heartbeatInterval=void 0}toCallback(){return this.callback}}var o6=A.preprocess((Z)=>{if(typeof Z!=="string")return Z;return JSON.parse(Z)},A.record(A.string(),A.unknown()));var A$=A.object({id:A.string(),type:A.string(),data:A.string(),status:A.enum(["pending","processing","completed","failed"]),source:A.string().nullable(),priority:A.number(),retryCount:A.number(),maxRetries:A.number(),lastError:A.string().nullable(),createdAt:A.number(),scheduledFor:A.number(),startedAt:A.number().nullable(),completedAt:A.number().nullable(),metadata:J,result:A.unknown().nullable().optional()});function ZZ(Z,$,H){return async(X)=>{let{type:Y,data:P,toolContext:K=null,options:G}=X,W=K?yZ(K):void 0,{metadata:V,...F}=G??{},U={operationType:"data_processing",pluginId:$,...V,...K&&{interfaceType:K.interfaceType,conversationId:K.conversationId,channelId:K.channelId,requestedByActor:K.actor,...W?{requestedByUserId:W}:{},requestedByInterface:K.interfaceType}};if(K&&!W)delete U.requestedByUserId;let O={...F,source:$,...G?.rootJobId&&{rootJobId:G.rootJobId},metadata:U},R=H&&!Y.includes(":")?`${$}:${Y}`:Y;return Z.enqueue({type:R,data:P,options:O})}}function AZ(Z,$){return async(H,X)=>{let Y=k(),P=H.map((G)=>({...G,type:G.type.includes(":")?G.type:`${$}:${G.type}`})),K={...X,source:$,rootJobId:Y,metadata:{...X?.metadata,operationType:"batch_processing",pluginId:$}};return await Z.enqueueBatch(P,K,Y,$),Y}}function $Z(Z,$){return(H,X)=>{let Y=H.includes(":")?H:`${$}:${H}`;Z.registerHandler(Y,X,$)}}var $$=A.custom((Z)=>typeof Z==="object"&&Z!==null&&("safeParse"in Z)),H$=A.object({name:A.string(),schema:$$});function mZ(Z){return H$.safeParse(Z).success}function X$(Z){if(!Z)return;return{status:Z.status,message:Z.message,lastCheck:Z.lastCheck?.toISOString(),details:Z.details}}function hZ(Z){return{model:Z.model,version:Z.version,uptime:Z.uptime,entities:Z.entities,entityCounts:Z.entityCounts,embeddings:Z.embeddings,ai:Z.ai,daemons:Z.daemons.map(($)=>({name:$.name,pluginId:$.pluginId,status:$.status,health:X$($.health)})),endpoints:Z.endpoints,interactions:Z.interactions}}function Y$(Z){let $=Q.safeParse(Z);return $.success?$.data:"user"}function b(Z){let $=S(Z.metadata),H=typeof $.channelName==="string"?$.channelName:void 0;return{id:Z.id,sessionId:Z.sessionId,interfaceType:Z.interfaceType,channelId:Z.channelId,...Z.personId?{personId:Z.personId}:{},channelName:H,startedAt:Z.started,lastActiveAt:Z.lastActive,createdAt:Z.created,updatedAt:Z.updated,metadata:$}}function jZ(Z){return{id:Z.id,conversationId:Z.conversationId,role:Y$(Z.role),content:Z.content,timestamp:Z.timestamp,metadata:S(Z.metadata)}}function IZ(Z){return RZ.parse(Z)}function vZ(Z){return wZ.parse(Z)}function gZ(Z){return async()=>{return hZ(await Z.getAppInfo())}}function bZ(Z,$){return{get:()=>IZ(Z.getIdentity()),getProfile:()=>vZ(Z.getProfile()),getAppInfo:$}}function pZ(Z,$){let H=Z.getProfileKindRegistry();return{register:(X)=>{H.register($,X)},getResolved:()=>H.getResolved(),getSelectedDefinition:()=>H.getSelectedDefinition()}}function uZ(Z,$,H){let X=Z.getMessageBus();return{send:async(P)=>{return X.send({...P,sender:$})},subscribe:(P,K)=>{if(mZ(P)){let G=P,W=K,V=async(F)=>{let U=G.schema.safeParse(F.payload);if(!U.success)return H.warn(`Invalid payload for channel ${G.name}`,{error:U.error.message}),{noop:!0};let{payload:O,...R}=F;return W(U.data,R)};return X.subscribe(G.name,V)}return X.subscribe(P,K)}}}function cZ(Z,$){let H=Z.getJobQueueService();return{...Z.jobs,enqueue:ZZ(H,$,!0),enqueueBatch:AZ(Z.jobs,$),registerHandler:$Z(H,$)}}function dZ(Z){let $=Z.getPermissionService();return{assertEntityActionAllowed:(H,X,Y)=>{$.assertEntityActionAllowed(H,X,Y.userPermissionLevel)}}}function lZ(Z){return{get:async($)=>{let X=await Z.getConversationService().getConversation($);return X?b(X):null},search:async($)=>{return(await Z.getConversationService().searchConversations($)).map(b)},list:async($)=>{return(await Z.getConversationService().listConversations($)).map(b)},getMessages:async($,H)=>{return(await Z.getConversationService().getMessages($,H)).map(jZ)},countMessages:async($)=>{return Z.getConversationService().countMessages($)}}}function iZ(Z,$){return{registerHandler:(H,X)=>{Z.registerEvalHandler($,H,X)}}}function nZ(Z){return{register:($,H)=>{Z.getInsightsRegistry().register($,H)}}}function rZ(Z){return{has:($)=>Z.getPluginPackageName($)!==void 0}}function aZ(Z,$){return{register:(H)=>{Z.registerEndpoint({...H,pluginId:$})}}}function sZ(Z,$){return{register:(H)=>{Z.registerInteraction({...H,pluginId:$})}}}function T(Z,$,H){let X=Z.getEntityService(),Y=Z.getLogger().child($),P=Z.getDomain(),K=Z.getLocalSiteUrl(),G=Z.shouldPreferLocalUrls(),W=Z.getThemeCSS(),V=gZ(Z),F=Z.getAttachmentRegistry(),U=Z.getRuntimeUploadRegistry(),O=Z.getRuntimeState();return{pluginId:$,logger:Y,entityService:X,semantic:{project:(R)=>X.projectSemanticSpace(R)},identity:bZ(Z,V),profileKinds:pZ(Z,$),appInfo:V,judge:(R)=>Z.judge(R),domain:P,siteUrl:P?`https://${P}`:void 0,localSiteUrl:K,previewUrl:P?`https://${oZ(P)}`:void 0,preferLocalUrls:G,themeCSS:W,entityDisplay:H?.entityDisplay,spaces:Z.getSpaces(),permissions:dZ(Z),messaging:uZ(Z,$,Y),jobs:cZ(Z,$),attachments:F,uploads:U,runtimeState:O,recurringChecks:Z.getRecurringChecks($),conversations:lZ(Z),dataDir:Z.getDataDir(),eval:iZ(Z,$),insights:nZ(Z),plugins:rZ(Z),endpoints:aZ(Z,$),interactions:sZ(Z,$)}}function P$(Z){return Z.replace(/:/g,"-")}function K$(Z){return Z.split(/[:.-]/).map(($)=>$.charAt(0).toUpperCase()+$.slice(1)).join(" ")}var HZ=new Map;async function ZA(Z,$,H){let X=HZ.get($);if(X!==void 0)return X;let Y=P$($),P;try{P=await Z.getEntity({entityType:"prompt",id:Y})}catch{return H}if(P?.content){let K=eZ(P.content,A.record(A.string(),A.unknown())).content;return HZ.set($,K),K}try{let K=K$($),G=tZ(H,{title:K,target:$});await Z.createEntity({entity:{id:Y,entityType:"prompt",content:G,metadata:{title:K,target:$,slug:Y}}})}catch{}return HZ.set($,H),H}function p(Z){let $=Z.getEntityService(),H=Z.getEntityRegistry(),X=Z.getDataSourceRegistry();return{register:(Y,P,K,G)=>{H.registerEntityType(Y,P,K,G)},getAdapter:(Y)=>{try{return H.getAdapter(Y)}catch{return}},extendFrontmatterSchema:(Y,P)=>{H.extendFrontmatterSchema(Y,P)},getEffectiveFrontmatterSchema:(Y)=>{return H.getEffectiveFrontmatterSchema(Y)},registerPersistValidator:(Y,P)=>{H.registerPersistValidator(Y,P)},registerCreateInterceptor:(Y,P)=>{H.registerCreateInterceptor(Y,P)},registerUploadSaveHandler:(Y)=>{H.registerUploadSaveHandler(Y)},getUploadSaveHandler:(Y)=>{return H.getUploadSaveHandler(Y)},update:async(Y)=>{return $.updateEntity({entity:Y})},registerDataSource:(Y)=>{X.register(Y)}}}function u(Z){return{resolve:($,H)=>{return ZA(Z,$,H)}}}function AA(Z,$,H){let X=T(Z,$,H),Y=Z.getEntityService();return{...X,entityService:Y,entities:p(Z),ai:{query:(P,K)=>Z.query(P,K),generate:async(P)=>{return Z.generateContent(P)},generateObject:async(P,K,G)=>{return Z.generateObject(P,K,G)},generateImage:async(P,K)=>{return Z.generateImage(P,K)},canGenerateImages:()=>{return Z.canGenerateImages()}},prompts:u(Y),permissions:X.permissions}}function XA(Z,$,H){let X=!1,Y=!1;if(Z.jobs.registerHandler(H.job.type,H.job.handler),H.initialSync){let P=H.initialSync;Z.messaging.subscribe(HA.initialCompleted,async()=>{if(X)return{success:!0};if(X=!0,!(await P.shouldEnqueue?.()??!0))return $.info("Skipping derived entity projection initial sync",{projectionId:H.id,targetType:H.targetType}),{success:!0};return Y=await $A(Z,$,H,P.jobData,G$(P.jobOptions),"initial-sync"),{success:!0}})}if(H.sourceChange){let P=H.sourceChange,K=new Set(P.sourceTypes),G=P.events??[XZ.created,XZ.updated],W=async(V)=>{if(P.requireInitialSync&&!X)return{success:!0};let F=V.payload,U=W$(P,F);if(!U||!K.has("*")&&!K.has(U))return{success:!0};if(!(await P.shouldEnqueue?.(F)??!0))return{success:!0};let R=await P.jobData(F);if(!R)return{success:!0};return await $A(Z,$,H,R,P.jobOptions?.(F),"source-change"),{success:!0}};for(let V of G)Z.messaging.subscribe(V,W)}return{hasObservedInitialSync:()=>X,hasQueuedInitialSync:()=>Y}}function W$(Z,$){if(Z.sourceType)return Z.sourceType;if(Z.sourceKind&&Z.sourceKind!=="entity")return Z.sourceKind;return $.entityType}async function $A(Z,$,H,X,Y,P){try{return await Z.jobs.enqueue({type:H.job.type,data:X,...Y?{options:Y}:{}}),$.info("Queued derived entity projection",{projectionId:H.id,targetType:H.targetType,reason:P}),!0}catch(K){return $.error("Failed to queue derived entity projection",{projectionId:H.id,targetType:H.targetType,reason:P,error:B(K)}),!1}}function G$(Z){return typeof Z==="function"?Z():Z}var V$=A.object({toolName:A.string(),args:A.unknown(),progressToken:A.union([A.string(),A.number()]).optional(),hasProgress:A.boolean().optional(),interfaceType:A.string(),actor:L,displayName:A.string().optional(),conversationId:A.string().optional(),channelId:A.string().optional(),channelName:A.string().optional(),runId:A.string().optional(),toolCallId:A.string().optional(),userPermissionLevel:A.enum(["admin","trusted","public"]).optional(),isAnchor:A.boolean().optional(),signal:A.custom((Z)=>Z instanceof AbortSignal).optional()}),D$=A.object({resourceUri:A.string()});class M{id;version;description;packageName;config;context;get logger(){return this.context?.logger??v.createFresh({context:this.id})}constructor(Z,$,H,X){this.id=Z,this.packageName=$.name,this.version=$.version,this.description=$.description??`${$.name} plugin`;let Y=X.safeParse(H);if(!Y.success)throw new a(Z,Y.error.issues.map((P)=>({path:P.path.map(String).join("."),code:P.code,message:P.message})));this.config=Y.data}setupMessageHandlers(Z){Z.messaging.subscribe(E.toolExecute(this.id),async($)=>{try{let H=V$.safeParse($.payload);if(!H.success)return{success:!1,error:"Invalid tool execution request format"};let{toolName:X,args:Y,progressToken:P,hasProgress:K,interfaceType:G,actor:W,displayName:V,conversationId:F,channelId:U,channelName:O,runId:R,toolCallId:GZ,userPermissionLevel:VZ,isAnchor:DZ,signal:FZ}=H.data,UZ=(await this.getTools()).find((c)=>c.name===X);if(!UZ)return{success:!1,error:`Tool not found: ${X}`};let TA={interfaceType:G,actor:W,...V&&{displayName:V},...F&&{conversationId:F},...U&&{channelId:U},...O&&{channelName:O},...R&&{runId:R},...GZ&&{toolCallId:GZ},...VZ&&{userPermissionLevel:VZ},...DZ!==void 0&&{isAnchor:DZ},...FZ&&{signal:FZ},...K&&P!==void 0&&{progressToken:P,sendProgress:async(c)=>{await Z.messaging.send({type:E.progress(this.id),payload:{progressToken:P,notification:c}})}}};return{success:!0,data:await UZ.handler(Y,TA)}}catch(H){return this.logger.error("Tool execution error",H),{success:!1,error:B(H)}}}),Z.messaging.subscribe(E.resourceGet(this.id),async($)=>{try{let H=D$.safeParse($.payload);if(!H.success)return{success:!1,error:"Invalid resource get request format"};let{resourceUri:X}=H.data,P=(await this.getResources()).find((G)=>G.uri===X);if(!P)return{success:!1,error:`Resource not found: ${X}`};return{success:!0,data:await P.handler()}}catch(H){return this.logger.error("Resource fetch error",H),{success:!1,error:B(H)}}})}async onRegister(Z){}async onRegistrationComplete(Z){}async finalizeRegistration(){await this.onRegistrationComplete(this.getContext())}async onReady(Z){}async ready(){await this.onReady(this.getContext())}async getCapabilities(){let Z=await this.getInstructions();return{tools:await this.getTools(),resources:await this.getResources(),...Z&&{instructions:Z}}}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(Z){return"public"}createProgressBridge(Z){if(!Z)return;let $=this.context;if(!$)return;let H=this.id;return C.from(async(X)=>{await $.messaging.send({type:E.progress(H),payload:{progressToken:Z,notification:{progress:X.progress,total:X.total,message:X.message}}})})}}var K8=A.object({});class YA extends M{type="entity";entityActionPolicy;derivedEntityProjectionControllers=new Map;constructor(Z,$,H,X,Y){super(Z,$,H,X);if(Y!==void 0)this.entityActionPolicy=Y}async register(Z,$){let H=AA(Z,this.id,$);if(this.context=H,this.setupMessageHandlers(H),H.entities.register(this.entityType,this.schema,this.adapter,this.getEntityTypeConfig()),this.interceptCreate!==YA.prototype.interceptCreate)H.entities.registerCreateInterceptor(this.entityType,(W,V)=>this.interceptCreate(W,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)Z.registerTemplates(Y,this.id);let P=this.getDataSources();for(let W of P)H.entities.registerDataSource(W);let K=this.getDerivedEntityProjections(H);for(let W of K){let V=XA(H,this.logger,W);this.derivedEntityProjectionControllers.set(W.id,V)}await this.onRegister(this.context);let G=await this.getInstructions();return{tools:[],resources:[],...G&&{instructions:G}}}async interceptCreate(Z,$,H){return{kind:"continue",input:Z}}createGenerationHandler(Z){return null}getTemplates(){return null}getDataSources(){return[]}getEntityTypeConfig(){return}getDerivedEntityProjections(Z){return[]}getDerivedEntityProjectionController(Z){return this.derivedEntityProjectionControllers.get(Z)}}function PA(Z){return WA(Z)}function KA(Z){if(!Z)return;return{...Z.userPermissionLevel&&{userPermissionLevel:Z.userPermissionLevel},...Z.isAnchor!==void 0&&{isAnchor:Z.isAnchor},...Z.interfaceType&&{interfaceType:Z.interfaceType},...Z.channelId&&{channelId:Z.channelId},...Z.channelName&&{channelName:Z.channelName},...Z.actor&&{actor:Z.actor},...Z.source&&{source:Z.source},...Z.attachments&&{attachments:Z.attachments}}}function GA(Z){return{chat:async($,H,X,Y)=>{let P=KA(X),K=Y?await Z.chat($,H,P,Y):await Z.chat($,H,P);return PA(K)},confirmPendingAction:async($,H,X,Y,P)=>{let K=KA(Y);if(!K)throw Error("Confirmation requires caller context.");let G=P?await Z.confirmPendingAction($,H,X,K,P):await Z.confirmPendingAction($,H,X,K);return PA(G)},invalidate:()=>{Z.invalidateAgent()}}}function VA(Z,$,H){let X=T(Z,$,H),Y=Z.getMCPService(),P=Z.getPermissionService(),K=GA(Z.getAgentService());return{...X,mcpTransport:Y,agent:K,permissions:{...X.permissions,getUserLevel:(G,W,V)=>{return P.determineUserLevel(G,W,V)},isAnchor:(G,W)=>P.isAnchor(G,W)},daemons:{register:(G,W)=>{let V=`${$}:${G}`;Z.registerDaemon(V,W,$),X.logger.debug(`Registered daemon: ${V}`)}},conversations:{...X.conversations,start:async(G)=>{return Z.getConversationService().startConversation(G)},addMessage:async(G)=>{await Z.getConversationService().addMessage(G)},updateMetadata:async(G)=>{return Z.getConversationService().updateConversationMetadata(G)},delete:async(G)=>{return Z.getConversationService().deleteConversation(G)}},tools:{listForPermissionLevel:(G)=>{return Z.listToolsForPermissionLevel(G)}},apiRoutes:{getRoutes:()=>{return Z.getPluginApiRoutes()},getMessageBus:()=>{return Z.getMessageBus()}},webRoutes:{getRoutes:()=>{return Z.getPluginWebRoutes()}},plugins:{has:(G)=>Z.hasPlugin(G)}}}var F$=3600000;class YZ extends M{type="interface";daemon;jobTrackingEntries=new Map;jobTrackingTtlMs=F$;async register(Z,$){let H=VA(Z,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(Z){}async registerDaemon(Z){if(!this.daemon)return;Z.daemons.register(this.id,this.daemon),Z.logger.debug(`Registered daemon for interface: ${this.id}`)}createDaemon(){return}requiresDaemonStartup(){return!1}getWebRoutes(){return[]}initializeDaemon(){let Z=this.createDaemon();if(Z)this.daemon=Z}async handleProgressEvent(Z,$){}cleanupExpiredEntries(){let Z=Date.now(),$=[];for(let[H,X]of this.jobTrackingEntries)if(Z-X.createdAt>this.jobTrackingTtlMs)$.push(H);for(let H of $)this.jobTrackingEntries.delete(H)}ownsJob(Z,$){return this.jobTrackingEntries.has(Z)||$!==void 0&&this.jobTrackingEntries.has($)}getJobTracking(Z,$){let H=this.jobTrackingEntries.get(Z);if(H)return H.info;if($){let X=this.jobTrackingEntries.get($);if(X)return X.info}return}setJobTracking(Z,$){this.cleanupExpiredEntries(),this.jobTrackingEntries.set(Z,{info:$,createdAt:Date.now()})}removeJobTracking(Z){this.jobTrackingEntries.delete(Z)}async createJobWithTracking(Z,$){let X=await this.getContext().jobs.enqueue(Z);return this.setJobTracking(X,$),X}async createBatchWithTracking(Z,$,H){let Y=await this.getContext().jobs.enqueueBatch(Z,H);return this.setJobTracking(Y,$),Y}}function y(Z,$){return{state:$,toolName:Z.toolName,conversationId:Z.conversationId,interfaceType:Z.interfaceType,...Z.channelId!==void 0&&{channelId:Z.channelId},...Z.channelName!==void 0&&{channelName:Z.channelName},...Z.error!==void 0&&{error:Z.error}}}function DA(Z,$){return Z.pendingConfirmations?.some((H)=>H.toolName===$)===!0||U$(Z.cards).some((H)=>H.toolName===$)}function U$(Z){return Z?.filter(($)=>$.kind==="tool-approval"&&$.state==="approval-requested")??[]}var PZ=1e5,R$=[".md",".txt",".markdown"],w$=["text/plain","text/markdown","text/x-markdown"],N$=/https?:\/\/[^\s<>"{}|\\^`[\]]+?(?=[,;:\s]|$)/gi,_$=["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"],L$=A.object({captureUrls:A.boolean().default(!1),blockedUrlDomains:A.array(A.string()).default(_$)});function FA(Z,$){if($&&w$.some((H)=>$.startsWith(H)))return!0;return R$.some((H)=>Z.toLowerCase().endsWith(H))}function UA(Z){return Z<=PZ}function RA(Z){if(Z.includes(0))return!1;try{return new TextDecoder("utf-8",{fatal:!0}).decode(Z),!0}catch{return!1}}function wA(Z,$){return`User uploaded a file "${Z}":
3
3
 
4
4
  ${$}`}function NA(Z,$){let H=Z.match(N$)??[];return[...new Set(H)].filter((X)=>{try{let{hostname:Y}=new URL(X);return!$.some((P)=>Y===P||Y.endsWith(`.${P}`))}catch{return!1}})}function KZ(Z,$){let H=Z.attachment.source;if((H?.entityType==="document"||H?.entityType==="image")&&H.entityId)return{entityType:H.entityType,id:H.entityId};return O$(Z.attachment.downloadUrl??Z.attachment.url,$)}function O$(Z,$="http://local"){if(!Z)return;let H;try{H=new URL(Z,$)}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 _A(Z,$){let H=B$($,Z==="document"?/^application\/pdf$/i:/^image\/[a-z0-9.+-]+$/i);if(!H)return;if(Z==="document"&&H.mimeType.toLowerCase()!=="application/pdf")return;return H}function LA(Z,$,H,X){let Y=Z?.filename;if(typeof Y==="string"&&Y.trim())return Y;if(H==="document")return`${$}.pdf`;let P=Z?.format;if(typeof P==="string"&&P.trim())return`${$}.${P==="jpeg"?"jpg":P}`;let K=X.split("/")[1]?.split("+")[0]??"png";return`${$}.${K}`}function B$(Z,$){let H=Z.match(/^data:([^;]+);base64,(.+)$/i),X=H?.[1],Y=H?.[2];if(!X||!Y||!$.test(X))return;let P=Buffer.from(Y,"base64");return{mimeType:X,data:P.buffer.slice(P.byteOffset,P.byteOffset+P.byteLength)}}async function BA({entityRef:Z,userLevel:$,getEntity:H,getVisibleEntity:X}){let Y=OA($),P=await X(Z,Y);if(P)return{status:"visible",entity:P};return Boolean(await H(Z))?{status:"denied"}:{status:"missing"}}function CA(Z){return Z==="admin"||Z==="trusted"}function MA(Z,$){Z.messaging.subscribe(e.progress,async(H)=>{try{let X=t.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 QA(Z){let $=Z.status==="completed"?"\u2705":"\u274C",H=Z.status==="completed"?"completed":"failed",X=Z.metadata.operationType.replace(/_/g," "),Y=Z.metadata.operationTarget?`: ${Z.metadata.operationTarget}`:"",P=`${$} **${X}${Y}** ${H}`;if(Z.message)P+=`
5
5
  ${Z.message}`;return P}function qA(Z){let $=Z.metadata.operationType.replace(/_/g," "),H=Z.metadata.operationTarget?`: ${Z.metadata.operationTarget}`:"",X=`\uD83D\uDD04 **${$}${H}**`;if(Z.progress&&Z.progress.total>0)X+=` ${Z.progress.current}/${Z.progress.total} (${Z.progress.percentage}%)`;if(Z.message)X+=`
@@ -7,4 +7,4 @@ ${Z.message}`;return X}var C$=A.enum(["tool:invoking","tool:completed","tool:fai
7
7
  export{xZ as m,z$ as n,y$ as o,RZ as p,wZ as q,K8 as r,YA as s,YZ as t,k$ as u,E$ as v,S1 as w,r4 as x};
8
8
 
9
9
  //# debugId=EB8D474FDA1FF01064756E2164756E21
10
- //# sourceMappingURL=index-6dj1keya.js.map
10
+ //# sourceMappingURL=index-9djq51zg.js.map
@@ -81,5 +81,5 @@ ${this.stack.split(`
81
81
  `).trim();if(!U.includes("("))U=U.replace(/at (.*)/,"at ($1)");return J=`${K}
82
82
  ${U}`,J}},G=$.spanOptions&&"captureStackTrace"in $.spanOptions?$.spanOptions:{captureStackTrace:Y,...$.spanOptions};return p_(Z,$.spanName,G)}var Sn=e4,kn=()=>($)=>$,vn=()=>($)=>$,bn=()=>($)=>$;var yK={};H9(yK,{unsafeSet:()=>C2,unsafeHas:()=>I2,unsafeGet:()=>l_,size:()=>ln,set:()=>pn,runtimePromise:()=>i_,runtime:()=>gK,run:()=>rn,remove:()=>on,makeRuntimePromise:()=>dn,makeRuntime:()=>mn,make:()=>bK,join:()=>sn,isFiberMap:()=>vK,has:()=>fn,get:()=>un,clear:()=>nn,awaitEmpty:()=>an,TypeId:()=>R2});var SK=L1;var f_=R5;var o_=aW;var R2=Symbol.for("effect/FiberMap"),vK=($)=>T($,R2),yn={[R2]:R2,[Symbol.iterator](){if(this.state._tag==="Closed")return fz();return this.state.backing[Symbol.iterator]()},toString(){return i(this.toJSON())},toJSON(){return{_id:"FiberMap",state:this.state}},[d](){return this.toJSON()},pipe(){return _(this,arguments)}},hn=($,Z)=>{let X=Object.create(yn);return X.state={_tag:"Open",backing:$},X.deferred=Z,X},bK=()=>RK(C5(D_(),($)=>hn(c6(),$)),($)=>R1((Z)=>{let X=$.state;if(X._tag==="Closed")return I1;return $.state={_tag:"Closed"},AT(oz(X.backing,([,J])=>J),o5(Z.id(),E1)).pipe(IK($.deferred))})),mn=()=>_2(bK(),($)=>gK($)()),dn=()=>_2(bK(),($)=>i_($)()),r_=-1,E1=jO(r_,0),cn=CQ(void 0,{emptyCase:z8,failCase:z8,dieCase:z8,interruptCase:($,Z)=>GJ(I7(Z),r_),sequentialCase:($,Z,X)=>Z||X,parallelCase:($,Z,X)=>Z||X}),C2=W(($)=>vK($[0]),($,Z,X,J)=>{if($.state._tag==="Closed"){X.unsafeInterruptAsFork(o5(J?.interruptAs??s0,E1));return}let Y=V0($.state.backing,Z);if(Y._tag==="Some"){if(J?.onlyIfMissing===!0){X.unsafeInterruptAsFork(o5(J?.interruptAs??s0,E1));return}else if(Y.value===X)return;Y.value.unsafeInterruptAsFork(o5(J?.interruptAs??s0,E1))}U8($.state.backing,Z,X),X.addObserver((G)=>{if($.state._tag==="Closed")return;let Q=V0($.state.backing,Z);if(a(Q)&&X===Q.value)p6($.state.backing,Z);if(pH(G)&&(J?.propagateInterruption===!0?!cn(G.cause):!_Q(G.cause)))O_($.deferred,G)})}),pn=W(($)=>vK($[0]),($,Z,X,J)=>CK((Y)=>C1(()=>C2($,Z,X,{...J,interruptAs:Y})))),l_=W(2,($,Z)=>$.state._tag==="Closed"?N():V0($.state.backing,Z)),un=W(2,($,Z)=>_K(()=>l_($,Z))),I2=W(2,($,Z)=>$.state._tag==="Closed"?!1:c8($.state.backing,Z)),fn=W(2,($,Z)=>C1(()=>I2($,Z))),on=W(2,($,Z)=>R1((X)=>{if($.state._tag==="Closed")return I1;let J=V0($.state.backing,Z);if(J._tag==="None")return I1;return cZ(J.value,o5(X.id(),E1))})),nn=($)=>R1((Z)=>{if($.state._tag==="Closed")return I1;return FK($.state.backing,([,X])=>cZ(X,o5(Z.id(),E1)))}),kK=function(){let $=void 0;return()=>{if($===void 0)$=xK(T2);return $}}(),rn=function(){let $=arguments[0];if(MK(arguments[2]))return n_($,arguments[1],arguments[2],arguments[3]);let Z=arguments[1],X=arguments[2];return(J)=>n_($,Z,J,X)},n_=($,Z,X,J)=>R1((Y)=>{if($.state._tag==="Closed")return T2;else if(J?.onlyIfMissing===!0&&I2($,Z))return C1(kK);let G=o_({context:Y.currentContext,fiberRefs:Y.getFiberRefs(),runtimeFlags:f_.runtimeFlags}),Q=SK(G)(X);return C2($,Z,Q,{...J,interruptAs:Y.id()}),LK(Q)}),gK=($)=>()=>C5(EK(),(Z)=>{let X=SK(Z);return(J,Y,G)=>{if($.state._tag==="Closed")return kK();else if(G?.onlyIfMissing===!0&&I2($,J))return kK();let Q=X(Y,G);return C2($,J,Q,G),Q}}),i_=($)=>()=>C5(gK($)(),(Z)=>(X,J,Y)=>new Promise((G,Q)=>Z(X,J,Y).addObserver((H)=>{if(uH(H))G(H.value);else Q(RQ(H.cause))}))),ln=($)=>C1(()=>$.state._tag==="Closed"?0:X4($.state.backing)),sn=($)=>Q4($.deferred),an=($)=>jK({while:()=>$.state._tag==="Open"&&X4($.state.backing)>0,body:()=>OT(uz($)[1]),step:r8});var hK=GD(ZG(),1);var h70=a_();function Wr($){let{data:Z,content:X}=hK.default($);return{frontmatter:{...Z},content:X.trim()}}function Kr($,Z){return hK.default.stringify(Z,$)}function m70($,Z,X){let{frontmatter:J,content:Y}=Wr($);if(X===null||X===void 0)delete J[Z];else J[Z]=X;return Kr(J,Y)}class t_{cache=null;cacheParseError=null;logger;entityService;entityType;defaultBody;readScope;constructor($,Z,X,J,Y="public"){this.entityService=$,this.logger=Z.child(this.constructor.name),this.entityType=X,this.defaultBody=J,this.readScope=Y}async initialize(){if(await this.load())return;if(await this.load())return;this.logger.info(`No ${this.entityType} found, creating default ${this.entityType}`);try{let $=this.createContent(this.defaultBody);await this.entityService.createEntity({entity:{id:this.entityType,entityType:this.entityType,content:$,metadata:{}}}),await this.load(),this.logger.info(`Default ${this.entityType} created successfully`)}catch($){this.logger.error(`Failed to create default ${this.entityType}`,{error:$})}}get(){if(this.cache&&!this.cacheParseError)return this.parseBody(this.cache.content);return this.defaultBody}getContent(){if(this.cache)return this.cache.content;return this.createContent(this.defaultBody)}async refreshCache(){await this.load()}async load(){try{let $=await this.entityService.getEntity({entityType:this.entityType,id:this.entityType,visibilityScope:this.readScope});if(this.cache=$,this.cacheParseError=null,$)try{return this.parseBody($.content),this.logger.debug(`${this.entityType} loaded`),!0}catch(Z){return this.cacheParseError=Z instanceof Error?Z:Error(String(Z)),this.logger.error(`Failed to parse ${this.entityType} \u2014 using default. Fix the entity content to clear this error.`,{error:this.cacheParseError.message}),!0}else this.logger.debug(`No ${this.entityType} found in database`)}catch($){this.logger.warn(`Failed to load ${this.entityType}`,{error:$}),this.cache=null,this.cacheParseError=null}return!1}}export{HX as B,Ql as C,n8 as D,jE as E,I as F,r1 as G,k8 as H,OX as I,S5 as J,W0 as K,VZ as L,e9 as M,U2 as N,j1 as O,yK as P,mK as Q,XR as R,k2 as S,YR as T,Zz as U,JG as V,i$ as W,YG as X,Wr as Y,Kr as Z,m70 as _,WX as $,t_ as aa,KE as ba,UE as ca,VE as da};
83
83
 
84
- //# debugId=7E358F07B5EF0C1C64756E2164756E21
85
- //# sourceMappingURL=index-r10vtebb.js.map
84
+ //# debugId=DF5EF5C88A39357064756E2164756E21
85
+ //# sourceMappingURL=index-k1dcptsq.js.map