@rizom/brain 0.2.0-alpha.46 → 0.2.0-alpha.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/brain.js +511 -511
- package/dist/entities.d.ts +1 -1
- package/dist/index.js +82 -82
- package/dist/index.js.map +7 -7
- package/dist/interfaces.d.ts +1 -1
- package/dist/interfaces.js +2 -2
- package/dist/interfaces.js.map +3 -3
- package/dist/plugins.d.ts +166 -22
- package/dist/plugins.js +2 -2
- package/dist/plugins.js.map +3 -3
- package/dist/services.d.ts +1 -1
- package/dist/services.js +2 -2
- package/dist/services.js.map +3 -3
- package/dist/site.js +6 -6
- package/dist/site.js.map +3 -3
- package/dist/templates.d.ts +1 -1
- package/package.json +1 -5
- package/dist/utils.d.ts +0 -133
- package/dist/utils.js +0 -174
- package/dist/utils.js.map +0 -211
package/dist/plugins.d.ts
CHANGED
|
@@ -1,12 +1,24 @@
|
|
|
1
|
-
import type { z
|
|
1
|
+
import type { z } from "zod";
|
|
2
|
+
|
|
3
|
+
export interface Logger {
|
|
4
|
+
debug(message: string, data?: unknown): void;
|
|
5
|
+
info(message: string, data?: unknown): void;
|
|
6
|
+
warn(message: string, data?: unknown): void;
|
|
7
|
+
error(message: string, data?: unknown): void;
|
|
8
|
+
child(context: string): Logger;
|
|
9
|
+
}
|
|
2
10
|
import type {
|
|
3
11
|
BaseEntity,
|
|
4
12
|
CreateExecutionContext,
|
|
5
13
|
CreateInput,
|
|
6
14
|
CreateInterceptionResult,
|
|
15
|
+
CreateInterceptor,
|
|
7
16
|
EntityAdapter,
|
|
8
17
|
EntityTypeConfig,
|
|
9
18
|
DataSource,
|
|
19
|
+
ListOptions,
|
|
20
|
+
SearchOptions,
|
|
21
|
+
SearchResult,
|
|
10
22
|
} from "./entities";
|
|
11
23
|
import type { Template, ViewTemplate, WebRenderer } from "./templates";
|
|
12
24
|
import type {
|
|
@@ -117,6 +129,138 @@ export interface MessageJobTrackingInfo extends BaseJobTrackingInfo {
|
|
|
117
129
|
channelId?: string;
|
|
118
130
|
}
|
|
119
131
|
|
|
132
|
+
export interface BrainCharacter {
|
|
133
|
+
name: string;
|
|
134
|
+
role: string;
|
|
135
|
+
purpose: string;
|
|
136
|
+
values: string[];
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export interface AnchorProfile {
|
|
140
|
+
name: string;
|
|
141
|
+
kind: "professional" | "team" | "collective";
|
|
142
|
+
organization?: string;
|
|
143
|
+
description?: string;
|
|
144
|
+
avatar?: string;
|
|
145
|
+
website?: string;
|
|
146
|
+
email?: string;
|
|
147
|
+
socialLinks?: Array<{
|
|
148
|
+
platform: "github" | "instagram" | "linkedin" | "email" | "website";
|
|
149
|
+
url: string;
|
|
150
|
+
label?: string;
|
|
151
|
+
}>;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export interface AppInfo {
|
|
155
|
+
model: string;
|
|
156
|
+
version: string;
|
|
157
|
+
uptime: number;
|
|
158
|
+
entities: number;
|
|
159
|
+
embeddings: number;
|
|
160
|
+
ai: { model: string; embeddingModel: string };
|
|
161
|
+
daemons: unknown[];
|
|
162
|
+
endpoints: Array<{
|
|
163
|
+
label: string;
|
|
164
|
+
url: string;
|
|
165
|
+
pluginId: string;
|
|
166
|
+
priority: number;
|
|
167
|
+
}>;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export interface Conversation {
|
|
171
|
+
id: string;
|
|
172
|
+
sessionId: string;
|
|
173
|
+
interfaceType: string;
|
|
174
|
+
channelId: string;
|
|
175
|
+
channelName: string;
|
|
176
|
+
metadata: string | null;
|
|
177
|
+
createdAt: string;
|
|
178
|
+
updatedAt: string;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export interface Message {
|
|
182
|
+
id: string;
|
|
183
|
+
conversationId: string;
|
|
184
|
+
role: string;
|
|
185
|
+
content: string;
|
|
186
|
+
timestamp: string;
|
|
187
|
+
metadata: string | null;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
export interface GetMessagesOptions {
|
|
191
|
+
limit?: number;
|
|
192
|
+
range?: { start: number; end: number };
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export interface IEntityService {
|
|
196
|
+
getEntity<T extends BaseEntity>(
|
|
197
|
+
entityType: string,
|
|
198
|
+
id: string,
|
|
199
|
+
): Promise<T | null>;
|
|
200
|
+
listEntities<T extends BaseEntity>(
|
|
201
|
+
type: string,
|
|
202
|
+
options?: ListOptions,
|
|
203
|
+
): Promise<T[]>;
|
|
204
|
+
search<T extends BaseEntity = BaseEntity>(
|
|
205
|
+
query: string,
|
|
206
|
+
options?: SearchOptions,
|
|
207
|
+
): Promise<SearchResult<T>[]>;
|
|
208
|
+
getEntityTypes(): string[];
|
|
209
|
+
hasEntityType(type: string): boolean;
|
|
210
|
+
countEntities(
|
|
211
|
+
entityType: string,
|
|
212
|
+
options?: Pick<ListOptions, "publishedOnly">,
|
|
213
|
+
): Promise<number>;
|
|
214
|
+
getEntityCounts(): Promise<Array<{ entityType: string; count: number }>>;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export type EvalHandler<TInput = unknown, TOutput = unknown> = (
|
|
218
|
+
input: TInput,
|
|
219
|
+
) => Promise<TOutput>;
|
|
220
|
+
|
|
221
|
+
export type InsightHandler = (
|
|
222
|
+
entityService: IEntityService,
|
|
223
|
+
) => Promise<Record<string, unknown>>;
|
|
224
|
+
|
|
225
|
+
export interface PendingConfirmation {
|
|
226
|
+
toolName: string;
|
|
227
|
+
description: string;
|
|
228
|
+
args: unknown;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
export interface ToolResultData {
|
|
232
|
+
toolName: string;
|
|
233
|
+
args?: Record<string, unknown>;
|
|
234
|
+
jobId?: string;
|
|
235
|
+
data?: unknown;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export interface AgentResponse {
|
|
239
|
+
text: string;
|
|
240
|
+
toolResults?: ToolResultData[];
|
|
241
|
+
pendingConfirmation?: PendingConfirmation;
|
|
242
|
+
usage: {
|
|
243
|
+
promptTokens: number;
|
|
244
|
+
completionTokens: number;
|
|
245
|
+
totalTokens: number;
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
export interface ChatContext {
|
|
250
|
+
userPermissionLevel?: UserPermissionLevel;
|
|
251
|
+
interfaceType?: string;
|
|
252
|
+
channelId?: string;
|
|
253
|
+
channelName?: string;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
export interface IAgentService {
|
|
257
|
+
chat(
|
|
258
|
+
message: string,
|
|
259
|
+
conversationId: string,
|
|
260
|
+
context?: ChatContext,
|
|
261
|
+
): Promise<AgentResponse>;
|
|
262
|
+
}
|
|
263
|
+
|
|
120
264
|
export interface BasePluginContext {
|
|
121
265
|
readonly pluginId: string;
|
|
122
266
|
readonly logger: Logger;
|
|
@@ -124,12 +268,12 @@ export interface BasePluginContext {
|
|
|
124
268
|
readonly domain: string | undefined;
|
|
125
269
|
readonly siteUrl: string | undefined;
|
|
126
270
|
readonly previewUrl: string | undefined;
|
|
127
|
-
readonly appInfo: () => Promise<
|
|
128
|
-
readonly entityService:
|
|
271
|
+
readonly appInfo: () => Promise<AppInfo>;
|
|
272
|
+
readonly entityService: IEntityService;
|
|
129
273
|
readonly identity: {
|
|
130
|
-
get: () =>
|
|
131
|
-
getProfile: () =>
|
|
132
|
-
getAppInfo: () => Promise<
|
|
274
|
+
get: () => BrainCharacter;
|
|
275
|
+
getProfile: () => AnchorProfile;
|
|
276
|
+
getAppInfo: () => Promise<AppInfo>;
|
|
133
277
|
};
|
|
134
278
|
readonly messaging: {
|
|
135
279
|
send: MessageSender;
|
|
@@ -154,24 +298,21 @@ export interface BasePluginContext {
|
|
|
154
298
|
registerHandler(type: string, handler: JobHandler): void;
|
|
155
299
|
};
|
|
156
300
|
readonly conversations: {
|
|
157
|
-
get(conversationId: string): Promise<
|
|
158
|
-
search(query: string): Promise<
|
|
301
|
+
get(conversationId: string): Promise<Conversation | null>;
|
|
302
|
+
search(query: string): Promise<Conversation[]>;
|
|
159
303
|
getMessages(
|
|
160
304
|
conversationId: string,
|
|
161
|
-
options?:
|
|
162
|
-
): Promise<
|
|
305
|
+
options?: GetMessagesOptions,
|
|
306
|
+
): Promise<Message[]>;
|
|
163
307
|
};
|
|
164
308
|
readonly eval: {
|
|
165
|
-
registerHandler(
|
|
309
|
+
registerHandler<TInput = unknown, TOutput = unknown>(
|
|
166
310
|
handlerId: string,
|
|
167
|
-
handler:
|
|
311
|
+
handler: EvalHandler<TInput, TOutput>,
|
|
168
312
|
): void;
|
|
169
313
|
};
|
|
170
314
|
readonly insights: {
|
|
171
|
-
register(
|
|
172
|
-
type: string,
|
|
173
|
-
handler: (entityService: unknown) => Promise<Record<string, unknown>>,
|
|
174
|
-
): void;
|
|
315
|
+
register(type: string, handler: InsightHandler): void;
|
|
175
316
|
};
|
|
176
317
|
readonly endpoints: {
|
|
177
318
|
register(endpoint: { label: string; url: string; priority?: number }): void;
|
|
@@ -179,7 +320,7 @@ export interface BasePluginContext {
|
|
|
179
320
|
}
|
|
180
321
|
|
|
181
322
|
export interface EntityPluginContext extends BasePluginContext {
|
|
182
|
-
readonly entityService:
|
|
323
|
+
readonly entityService: IEntityService;
|
|
183
324
|
readonly entities: {
|
|
184
325
|
register<T extends BaseEntity>(
|
|
185
326
|
entityType: string,
|
|
@@ -201,10 +342,13 @@ export interface EntityPluginContext extends BasePluginContext {
|
|
|
201
342
|
entity: T,
|
|
202
343
|
): Promise<{ entityId: string; jobId: string }>;
|
|
203
344
|
registerDataSource(dataSource: DataSource): void;
|
|
204
|
-
registerCreateInterceptor(
|
|
345
|
+
registerCreateInterceptor(
|
|
346
|
+
entityType: string,
|
|
347
|
+
interceptor: CreateInterceptor,
|
|
348
|
+
): void;
|
|
205
349
|
};
|
|
206
350
|
readonly ai: {
|
|
207
|
-
query(prompt: string, context?:
|
|
351
|
+
query(prompt: string, context?: ChatContext): Promise<AgentResponse>;
|
|
208
352
|
generate<T = unknown>(config: Record<string, unknown>): Promise<T>;
|
|
209
353
|
generateObject<T>(
|
|
210
354
|
prompt: string,
|
|
@@ -213,7 +357,7 @@ export interface EntityPluginContext extends BasePluginContext {
|
|
|
213
357
|
generateImage(
|
|
214
358
|
prompt: string,
|
|
215
359
|
options?: Record<string, unknown>,
|
|
216
|
-
): Promise<
|
|
360
|
+
): Promise<{ url?: string; data?: Uint8Array; mimeType?: string }>;
|
|
217
361
|
canGenerateImages(): boolean;
|
|
218
362
|
};
|
|
219
363
|
readonly prompts: {
|
|
@@ -221,7 +365,7 @@ export interface EntityPluginContext extends BasePluginContext {
|
|
|
221
365
|
};
|
|
222
366
|
}
|
|
223
367
|
export interface ServicePluginContext extends BasePluginContext {
|
|
224
|
-
readonly entityService:
|
|
368
|
+
readonly entityService: IEntityService;
|
|
225
369
|
readonly entities: EntityPluginContext["entities"];
|
|
226
370
|
readonly templates: {
|
|
227
371
|
register(templates: Record<string, Template>, namespace?: string): void;
|
|
@@ -244,7 +388,7 @@ export interface ServicePluginContext extends BasePluginContext {
|
|
|
244
388
|
}
|
|
245
389
|
export interface InterfacePluginContext extends BasePluginContext {
|
|
246
390
|
readonly mcpTransport: unknown;
|
|
247
|
-
readonly agentService:
|
|
391
|
+
readonly agentService: IAgentService;
|
|
248
392
|
readonly permissions: {
|
|
249
393
|
getUserLevel(interfaceType: string, userId: string): UserPermissionLevel;
|
|
250
394
|
};
|
package/dist/plugins.js
CHANGED
|
@@ -166,7 +166,7 @@ Please report this to https://github.com/markedjs/marked.`,$){let Y="<p>An error
|
|
|
166
166
|
`}format($){try{let X=[`# ${this.config.title}`,""];for(let G of this.config.mappings)this.formatField($,G,X,2);return X.join(`
|
|
167
167
|
`)}catch{throw Error("Failed to format structured content")}}parse($){try{let X=this.processor.parse($),G=this.extractSections(X,2),Y=this.buildDataFromSections(G,this.config.mappings);return this.schema.parse(Y)}catch{throw Error("Failed to parse structured content")}}formatField($,X,G,Y){let q="#".repeat(Y)+" "+X.label,J=this.getValueByPath($,X.key);if(X.type==="custom"&&X.formatter){if(J!==void 0&&J!==null){G.push(q,"");let V=X.formatter(J);if(V)G.push(V,"")}return}switch(X.type){case"string":case"number":G.push(q,String(J??""),"");break;case"object":if(G.push(q),X.children&&J)for(let V of X.children)this.formatField(J,V,G,Y+1);break;case"array":if(G.push(q,""),Array.isArray(J))if(X.itemType==="object"&&X.itemMappings)J.forEach((V,W)=>{if(G.push(`${"#".repeat(Y+1)} ${X.label.slice(0,-1)} ${W+1}`),G.push(""),X.itemMappings)for(let H of X.itemMappings)this.formatField(V,H,G,Y+2)});else{for(let V of J){let W=this.defaultArrayItemFormat(V);G.push(`- ${W}`)}G.push("")}break}}getValueByPath($,X){let G=X.split("."),Y=$;for(let q of G)if(Y&&typeof Y==="object"&&q in Y)Y=Y[q];else return;return Y}defaultArrayItemFormat($){if(typeof $==="string"||typeof $==="number")return String($);return JSON.stringify($)}extractSections($,X){let G=new Map,Y=null,q=[];for(let J of $.children)if(J.type==="heading"&&J.depth===X){if(Y)G.set(Y.toLowerCase(),q);Y=this.getHeadingText(J),q=[]}else if(Y)q.push(J);if(Y)G.set(Y.toLowerCase(),q);return G}extractSubsections($,X){let G=new Map,Y=null,q=[];for(let J of $)if(J.type==="heading"&&J.depth===X){if(Y)G.set(Y.toLowerCase(),q);Y=this.getHeadingText(J),q=[]}else if(Y)q.push(J);if(Y)G.set(Y.toLowerCase(),q);return G}textNodeSchema=Q.object({type:Q.literal("text"),value:Q.string()});extractTextValue($){let X=this.textNodeSchema.safeParse($);return X.success?X.data.value:""}getHeadingText($){return $.children.filter((G)=>G.type==="text").map((G)=>this.extractTextValue(G)).join("")}buildDataFromSections($,X,G=2){let Y={};for(let q of X){let J=$.get(q.label.toLowerCase());if(q.type==="custom"&&q.parser&&J){let V=this.getTextFromSection(J),W=q.parser(V);this.setValueByPath(Y,q.key,W)}else if(q.type==="object"&&q.children&&J){let V=this.extractSubsections(J,G+1),W=this.buildDataFromSections(V,q.children,G+1);this.setValueByPath(Y,q.key,W)}else if(q.type==="array"&&J)if(q.itemType==="object"&&q.itemMappings){let V=this.extractObjectArrayItems(J,G+1,q.itemMappings);this.setValueByPath(Y,q.key,V)}else{let V=this.extractSimpleArrayItems(J);this.setValueByPath(Y,q.key,V)}else if(J){let V=this.getTextFromSection(J),W=q.type==="number"?Number(V):V;this.setValueByPath(Y,q.key,W)}}return Y}setValueByPath($,X,G){let Y=X.split("."),q=$;for(let V=0;V<Y.length-1;V++){let W=Y[V];if(!W)continue;if(!(W in q))q[W]={};q=q[W]}let J=Y[Y.length-1];if(J)q[J]=G}getTextFromSection($){let X=[];for(let G of $)if(G.type==="paragraph"){let Y=this.extractTextFromParagraph(G);if(Y)X.push(Y)}else if(G.type==="list"){let Y=G;for(let q of Y.children){let J=this.extractTextFromListItem(q);if(J)X.push(`- ${J}`)}}return X.join(`
|
|
168
168
|
`)}extractTextFromParagraph($){return this.extractInlineText($.children).trim()}extractInlineText($){let X=[];for(let G of $)if(G.type==="text")X.push(this.extractTextValue(G));else if(G.type==="emphasis"){let Y=this.extractInlineText(G.children);if(Y)X.push(`*${Y}*`)}else if(G.type==="strong"){let Y=this.extractInlineText(G.children);if(Y)X.push(`**${Y}**`)}return X.join("")}extractSimpleArrayItems($){let X=[];for(let G of $)if(G.type==="list"){let Y=G;for(let q of Y.children){let J=this.extractTextFromListItem(q);if(J)X.push(J)}}return X}extractObjectArrayItems($,X,G){let Y=[],q=[],J=!1;for(let V of $)if(V.type==="heading"&&V.depth===X){if(J&&q.length>0){let W=this.extractSubsections(q,X+1),H=this.buildDataFromSections(W,G,X+1);Y.push(H)}q=[],J=!0}else if(J)q.push(V);if(J&&q.length>0){let V=this.extractSubsections(q,X+1),W=this.buildDataFromSections(V,G,X+1);Y.push(W)}return Y}extractTextFromListItem($){let X=[];for(let G of $.children)if(G.type==="paragraph"){let Y=this.extractTextFromParagraph(G);if(Y)X.push(Y)}return X.join(`
|
|
169
|
-
`)}}var iC=Q.object({slug:Q.string(),title:Q.string(),type:Q.string(),entityId:Q.string(),contentHash:Q.string()});import{webcrypto as aY}from"crypto";var sY="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var pO=128,E2,A4;function lO($){if(!E2||E2.length<$)E2=Buffer.allocUnsafe($*pO),aY.getRandomValues(E2),A4=0;else if(A4+$>E2.length)aY.getRandomValues(E2),A4=0;A4+=$}function tY($=21){lO($|=0);let X="";for(let G=A4-$;G<A4;G++)X+=sY[E2[G]&63];return X}function I0($=12){return tY($)}function k9($){let X=$.trim().replace(/^https?:\/\//,""),G=X.split(".").filter(Boolean);if(G.length>=3){let[Y,...q]=G;if(!Y||q.length===0)return`preview.${X}`;return`${Y}-preview.${q.join(".")}`}return`preview.${X}`}function x1($){return $ instanceof Error?$.message:String($)}function H6($){return $ instanceof Error?$:Error(String($))}var cO=Q.object({success:Q.boolean(),entityId:Q.string().optional(),error:Q.string().optional()});var nO=Q.object({status:Q.enum(["healthy","warning","error","unknown"]),message:Q.string().optional(),lastCheck:Q.date().optional(),details:Q.record(Q.string(),Q.unknown()).optional()}),eY=Q.object({name:Q.string(),pluginId:Q.string(),status:Q.string(),health:nO.optional()});import{McpServer as _I}from"@modelcontextprotocol/sdk/server/mcp.js";var h9=Q.enum(["anchor","trusted","public"]);var sO=Q.object({name:Q.string(),description:Q.string(),schema:Q.any(),basePrompt:Q.string().optional(),useKnowledgeContext:Q.boolean().optional(),requiredPermission:h9,formatter:Q.any().optional(),layout:Q.object({component:Q.any(),fullscreen:Q.boolean().optional()}).optional(),dataSourceId:Q.string().optional()});class U6{static canGenerate($){return!!$.basePrompt&&!!$.dataSourceId&&$.dataSourceId.includes("ai-content")}static canFetch($){return!!$.dataSourceId&&!this.canGenerate($)}static canRender($){return!!$.layout?.component}static isStaticOnly($){return!this.canGenerate($)&&!this.canFetch($)}static getCapabilities($){return{canGenerate:this.canGenerate($),canFetch:this.canFetch($),canRender:this.canRender($),isStaticOnly:this.isStaticOnly($)}}static validate($){let X=[];if($.dataSourceId?.includes("ai-content")&&!$.basePrompt)X.push(`Template "${$.name}" has AI-content dataSourceId but no basePrompt. AI generation requires a basePrompt.`);if($.basePrompt&&(!$.dataSourceId||!$.dataSourceId.includes("ai-content")))X.push(`Template "${$.name}" has basePrompt but no AI-content dataSourceId. The basePrompt won't be used.`);return X}static logCapabilities($,X){let G=this.getCapabilities($),Y=this.validate($);if(X)X.debug(`Template capabilities for "${$.name}":`,{...G,errors:Y.length>0?Y:void 0})}}var aO=Q.enum(["site-content-preview","site-content-production"]),tO=Q.object({name:Q.string(),schema:Q.any(),description:Q.string().optional(),pluginId:Q.string(),renderers:Q.object({web:Q.union([Q.function(),Q.string()]).optional()})}),eO=Q.object({enableContentGeneration:Q.boolean().default(!1),outputDir:Q.string(),workingDir:Q.string().optional(),environment:Q.enum(["preview","production"]).default("preview"),siteConfig:Q.object({title:Q.string(),description:Q.string(),url:Q.string().optional()}).optional()}),$A=Q.object({success:Q.boolean(),routesBuilt:Q.number(),errors:Q.array(Q.string()).optional(),warnings:Q.array(Q.string()).optional()});import{ResourceTemplate as EI}from"@modelcontextprotocol/sdk/server/mcp.js";var L5=Q.object({interfaceType:Q.string(),userId:Q.string(),channelId:Q.string().optional(),channelName:Q.string().optional()}),Xq=Q.object({success:Q.literal(!0),data:Q.unknown(),message:Q.string().optional()}),Gq=Q.object({success:Q.literal(!1),error:Q.string(),code:Q.string().optional()}),Yq=Q.object({needsConfirmation:Q.literal(!0),toolName:Q.string(),description:Q.string(),args:Q.unknown()}),y9=Q.union([Xq,Gq,Yq]);var qq=Q.union([Q.object({success:Q.literal(!0),data:Q.unknown(),message:Q.string().optional()}),Q.object({success:Q.literal(!1),error:Q.string(),code:Q.string().optional()})]);function g9($,X){return X?{success:!0,data:$,message:X}:{success:!0,data:$}}function f9($,X){return X?{success:!1,error:$,code:X}:{success:!1,error:$}}function m9($,X,G,Y,q,J={}){let{visibility:V="anchor",debug:W=!1,cli:H}=J,U=W?B1.createFresh({context:$}):null;return{name:`${$}_${X}`,description:G,inputSchema:Y.shape,handler:async(D,M)=>{U?.debug(`Tool ${X} started`);try{let R=Y.safeParse(D);if(!R.success){let N=R.error.errors.map((z)=>`${z.path.join(".")}: ${z.message}`).join(", ");return U?.debug(`Tool ${X} validation failed: ${N}`),{success:!1,error:`Invalid input: ${N}`}}let O=await q(R.data,M);return U?.debug(`Tool ${X} completed`),O}catch(R){return U?.error(`Tool ${X} failed`,R),{success:!1,error:x1(R)}}},visibility:V,...H?{cli:H}:{}}}function u9($,X,G,Y,q,J={}){let{mimeType:V="text/plain",debug:W=!1}=J,H=W?B1.createFresh({context:$}):null;return{uri:`${$}_${X}`,name:G,description:Y,mimeType:V,handler:async()=>{H?.debug(`Resource ${X} started`);try{let U=await q();return H?.debug(`Resource ${X} completed`),U}catch(U){throw H?.error(`Resource ${X} failed`,U),U}}}}var rI=Q.object({id:Q.string(),type:Q.string(),version:Q.string(),status:Q.string()}),iI=Q.object({name:Q.string(),description:Q.string()}),Jq=Q.object({label:Q.string(),url:Q.string(),pluginId:Q.string(),priority:Q.number().default(100)}),GA=Q.object({model:Q.string(),version:Q.string(),uptime:Q.number(),entities:Q.number(),embeddings:Q.number(),ai:Q.object({model:Q.string(),embeddingModel:Q.string()}),daemons:Q.array(eY),endpoints:Q.array(Jq)}),oI=Q.object({pluginId:Q.string(),tool:Q.object({name:Q.string(),description:Q.string(),inputSchema:Q.record(Q.string(),Q.unknown()),handler:Q.function(),visibility:Q.enum(["public","trusted","anchor"]).optional()}),timestamp:Q.number()}),nI=Q.object({pluginId:Q.string(),resource:Q.object({uri:Q.string(),name:Q.string(),description:Q.string().optional(),mimeType:Q.string().optional(),handler:Q.function()}),timestamp:Q.number()});var YA=Q.object({id:Q.string(),version:Q.string(),type:Q.enum(["core","entity","service","interface"]),description:Q.string().optional(),dependencies:Q.array(Q.string()).optional(),packageName:Q.string()});var qA=Q.object({toolName:Q.string(),args:Q.unknown(),progressToken:Q.union([Q.string(),Q.number()]).optional(),hasProgress:Q.boolean().optional(),...L5.shape}),JA=Q.object({resourceUri:Q.string()});class C2{id;version;description;packageName;config;context;get logger(){return this.context?.logger??B1.createFresh({context:this.id})}constructor($,X,G,Y){this.id=$,this.packageName=X.name,this.version=X.version,this.description=X.description??`${X.name} plugin`,this.config=Y.parse(G)}setupMessageHandlers($){$.messaging.subscribe(`plugin:${this.id}:tool:execute`,async(X)=>{try{let{toolName:G,args:Y,progressToken:q,hasProgress:J,interfaceType:V,userId:W,channelId:H}=qA.parse(X.payload),D=(await this.getTools()).find((O)=>O.name===G);if(!D)return{success:!1,error:`Tool not found: ${G}`};let M={interfaceType:V,userId:W,...H&&{channelId:H},...J&&q!==void 0&&{progressToken:q,sendProgress:async(O)=>{await $.messaging.send(`plugin:${this.id}:progress`,{progressToken:q,notification:O})}}};return{success:!0,data:await D.handler(Y,M)}}catch(G){if(G instanceof Q.ZodError)return{success:!1,error:"Invalid tool execution request format"};return this.logger.error("Tool execution error",G),{success:!1,error:x1(G)}}}),$.messaging.subscribe(`plugin:${this.id}:resource:get`,async(X)=>{try{let{resourceUri:G}=JA.parse(X.payload),q=(await this.getResources()).find((V)=>V.uri===G);if(!q)return{success:!1,error:`Resource not found: ${G}`};return{success:!0,data:await q.handler()}}catch(G){if(G instanceof Q.ZodError)return{success:!1,error:"Invalid resource get request format"};return this.logger.error("Resource fetch error",G),{success:!1,error:x1(G)}}})}async onRegister($){}async onReady($){}async ready(){await this.onReady(this.getContext())}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($){return"public"}createProgressBridge($){if(!$)return;let X=this.context;if(!X)return;let G=this.id;return i0.from(async(Y)=>{await X.messaging.send(`plugin:${G}:progress`,{progressToken:$,notification:{progress:Y.progress,total:Y.total,message:Y.message}})})}}var VA=Q.object({name:Q.string(),schema:Q.custom(($)=>$ instanceof Q.ZodType)});function Vq($,X){return{name:$,schema:X}}function Wq($){return VA.safeParse($).success}var b=Symbol.for("drizzle:entityKind");function y1($,X){if(!$||typeof $!=="object")return!1;if($ instanceof X)return!0;if(!Object.prototype.hasOwnProperty.call(X,b))throw Error(`Class "${X.name??"<unknown>"}" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`);let G=Object.getPrototypeOf($).constructor;if(G)while(G){if(b in G&&G[b]===X[b])return!0;G=Object.getPrototypeOf(G)}return!1}class a0{constructor($,X){this.table=$,this.config=X,this.name=X.name,this.keyAsName=X.keyAsName,this.notNull=X.notNull,this.default=X.default,this.defaultFn=X.defaultFn,this.onUpdateFn=X.onUpdateFn,this.hasDefault=X.hasDefault,this.primary=X.primaryKey,this.isUnique=X.isUnique,this.uniqueName=X.uniqueName,this.uniqueType=X.uniqueType,this.dataType=X.dataType,this.columnType=X.columnType,this.generated=X.generated,this.generatedIdentity=X.generatedIdentity}static[b]="Column";name;keyAsName;primary;notNull;default;defaultFn;onUpdateFn;hasDefault;isUnique;uniqueName;uniqueType;dataType;columnType;enumValues=void 0;generated=void 0;generatedIdentity=void 0;config;mapFromDriverValue($){return $}mapToDriverValue($){return $}shouldDisableInsert(){return this.config.generated!==void 0&&this.config.generated.type!=="byDefault"}}class p9{static[b]="ColumnBuilder";config;constructor($,X,G){this.config={name:$,keyAsName:$==="",notNull:!1,default:void 0,hasDefault:!1,primaryKey:!1,isUnique:!1,uniqueName:void 0,uniqueType:void 0,dataType:X,columnType:G,generated:void 0}}$type(){return this}notNull(){return this.config.notNull=!0,this}default($){return this.config.default=$,this.config.hasDefault=!0,this}$defaultFn($){return this.config.defaultFn=$,this.config.hasDefault=!0,this}$default=this.$defaultFn;$onUpdateFn($){return this.config.onUpdateFn=$,this.config.hasDefault=!0,this}$onUpdate=this.$onUpdateFn;primaryKey(){return this.config.primaryKey=!0,this.config.notNull=!0,this}setName($){if(this.config.name!=="")return;this.config.name=$}}var W0=Symbol.for("drizzle:Name");function Hq($,...X){return $(...X)}function Uq($,X){return`${$[W0]}_${X.join("_")}_unique`}class D6 extends a0{constructor($,X){if(!X.uniqueName)X.uniqueName=Uq($,[X.name]);super($,X);this.table=$}static[b]="PgColumn"}class WA extends D6{static[b]="ExtraConfigColumn";getSQLType(){return this.getSQLType()}indexConfig={order:this.config.order??"asc",nulls:this.config.nulls??"last",opClass:this.config.opClass};defaultConfig={order:"asc",nulls:"last",opClass:void 0};asc(){return this.indexConfig.order="asc",this}desc(){return this.indexConfig.order="desc",this}nullsFirst(){return this.indexConfig.nulls="first",this}nullsLast(){return this.indexConfig.nulls="last",this}op($){return this.indexConfig.opClass=$,this}}class HA extends D6{static[b]="PgEnumObjectColumn";enum;enumValues=this.config.enum.enumValues;constructor($,X){super($,X);this.enum=X.enum}getSQLType(){return this.enum.enumName}}var Dq=Symbol.for("drizzle:isPgEnum");function Qq($){return!!$&&typeof $==="function"&&Dq in $&&$[Dq]===!0}class UA extends D6{static[b]="PgEnumColumn";enum=this.config.enum;enumValues=this.config.enum.enumValues;constructor($,X){super($,X);this.enum=X.enum}getSQLType(){return this.enum.enumName}}class _5{static[b]="Subquery";constructor($,X,G,Y=!1,q=[]){this._={brand:"Subquery",sql:$,selectedFields:X,alias:G,isWith:Y,usedTables:q}}}var Mq="0.44.7";var l9,d9,Kq={startActiveSpan($,X){if(!l9)return X();if(!d9)d9=l9.trace.getTracer("drizzle-orm",Mq);return Hq((G,Y)=>Y.startActiveSpan($,(q)=>{try{return X(q)}catch(J){throw q.setStatus({code:G.SpanStatusCode.ERROR,message:J instanceof Error?J.message:"Unknown error"}),J}finally{q.end()}}),l9,d9)}};var B4=Symbol.for("drizzle:ViewBaseConfig");var c9=Symbol.for("drizzle:Schema"),Fq=Symbol.for("drizzle:Columns"),Rq=Symbol.for("drizzle:ExtraConfigColumns"),r9=Symbol.for("drizzle:OriginalName"),i9=Symbol.for("drizzle:BaseName"),Q6=Symbol.for("drizzle:IsAlias"),Oq=Symbol.for("drizzle:ExtraConfigBuilder"),DA=Symbol.for("drizzle:IsDrizzleTable");class F1{static[b]="Table";static Symbol={Name:W0,Schema:c9,OriginalName:r9,Columns:Fq,ExtraConfigColumns:Rq,BaseName:i9,IsAlias:Q6,ExtraConfigBuilder:Oq};[W0];[r9];[c9];[Fq];[Rq];[i9];[Q6]=!1;[DA]=!0;[Oq]=void 0;constructor($,X,G){this[W0]=this[r9]=$,this[c9]=X,this[i9]=G}}function QA($){return $!==null&&$!==void 0&&typeof $.getSQL==="function"}function MA($){let X={sql:"",params:[]};for(let G of $)if(X.sql+=G.sql,X.params.push(...G.params),G.typings?.length){if(!X.typings)X.typings=[];X.typings.push(...G.typings)}return X}class e1{static[b]="StringChunk";value;constructor($){this.value=Array.isArray($)?$:[$]}getSQL(){return new R1([this])}}class R1{constructor($){this.queryChunks=$;for(let X of $)if(y1(X,F1)){let G=X[F1.Symbol.Schema];this.usedTables.push(G===void 0?X[F1.Symbol.Name]:G+"."+X[F1.Symbol.Name])}}static[b]="SQL";decoder=Aq;shouldInlineParams=!1;usedTables=[];append($){return this.queryChunks.push(...$.queryChunks),this}toQuery($){return Kq.startActiveSpan("drizzle.buildSQL",(X)=>{let G=this.buildQueryFromSourceParams(this.queryChunks,$);return X?.setAttributes({"drizzle.query.text":G.sql,"drizzle.query.params":JSON.stringify(G.params)}),G})}buildQueryFromSourceParams($,X){let G=Object.assign({},X,{inlineParams:X.inlineParams||this.shouldInlineParams,paramStartIndex:X.paramStartIndex||{value:0}}),{casing:Y,escapeName:q,escapeParam:J,prepareTyping:V,inlineParams:W,paramStartIndex:H}=G;return MA($.map((U)=>{if(y1(U,e1))return{sql:U.value.join(""),params:[]};if(y1(U,P5))return{sql:q(U.value),params:[]};if(U===void 0)return{sql:"",params:[]};if(Array.isArray(U)){let D=[new e1("(")];for(let[M,R]of U.entries())if(D.push(R),M<U.length-1)D.push(new e1(", "));return D.push(new e1(")")),this.buildQueryFromSourceParams(D,G)}if(y1(U,R1))return this.buildQueryFromSourceParams(U.queryChunks,{...G,inlineParams:W||U.shouldInlineParams});if(y1(U,F1)){let D=U[F1.Symbol.Schema],M=U[F1.Symbol.Name];return{sql:D===void 0||U[Q6]?q(M):q(D)+"."+q(M),params:[]}}if(y1(U,a0)){let D=Y.getColumnCasing(U);if(X.invokeSource==="indexes")return{sql:q(D),params:[]};let M=U.table[F1.Symbol.Schema];return{sql:U.table[Q6]||M===void 0?q(U.table[F1.Symbol.Name])+"."+q(D):q(M)+"."+q(U.table[F1.Symbol.Name])+"."+q(D),params:[]}}if(y1(U,Zq)){let D=U[B4].schema,M=U[B4].name;return{sql:D===void 0||U[B4].isAlias?q(M):q(D)+"."+q(M),params:[]}}if(y1(U,o9)){if(y1(U.value,j5))return{sql:J(H.value++,U),params:[U],typings:["none"]};let D=U.value===null?null:U.encoder.mapToDriverValue(U.value);if(y1(D,R1))return this.buildQueryFromSourceParams([D],G);if(W)return{sql:this.mapInlineParam(D,G),params:[]};let M=["none"];if(V)M=[V(U.encoder)];return{sql:J(H.value++,D),params:[D],typings:M}}if(y1(U,j5))return{sql:J(H.value++,U),params:[U],typings:["none"]};if(y1(U,R1.Aliased)&&U.fieldAlias!==void 0)return{sql:q(U.fieldAlias),params:[]};if(y1(U,_5)){if(U._.isWith)return{sql:q(U._.alias),params:[]};return this.buildQueryFromSourceParams([new e1("("),U._.sql,new e1(") "),new P5(U._.alias)],G)}if(Qq(U)){if(U.schema)return{sql:q(U.schema)+"."+q(U.enumName),params:[]};return{sql:q(U.enumName),params:[]}}if(QA(U)){if(U.shouldOmitSQLParens?.())return this.buildQueryFromSourceParams([U.getSQL()],G);return this.buildQueryFromSourceParams([new e1("("),U.getSQL(),new e1(")")],G)}if(W)return{sql:this.mapInlineParam(U,G),params:[]};return{sql:J(H.value++,U),params:[U],typings:["none"]}}))}mapInlineParam($,{escapeString:X}){if($===null)return"null";if(typeof $==="number"||typeof $==="boolean")return $.toString();if(typeof $==="string")return X($);if(typeof $==="object"){let G=$.toString();if(G==="[object Object]")return X(JSON.stringify($));return X(G)}throw Error("Unexpected param value: "+$)}getSQL(){return this}as($){if($===void 0)return this;return new R1.Aliased(this,$)}mapWith($){return this.decoder=typeof $==="function"?{mapFromDriverValue:$}:$,this}inlineParams(){return this.shouldInlineParams=!0,this}if($){return $?this:void 0}}class P5{constructor($){this.value=$}static[b]="Name";brand;getSQL(){return new R1([this])}}var Aq={mapFromDriverValue:($)=>$},Bq={mapToDriverValue:($)=>$},gb={...Aq,...Bq};class o9{constructor($,X=Bq){this.value=$,this.encoder=X}static[b]="Param";brand;getSQL(){return new R1([this])}}function Z4($,...X){let G=[];if(X.length>0||$.length>0&&$[0]!=="")G.push(new e1($[0]));for(let[Y,q]of X.entries())G.push(q,new e1($[Y+1]));return new R1(G)}(($)=>{function X(){return new R1([])}$.empty=X;function G(H){return new R1(H)}$.fromList=G;function Y(H){return new R1([new e1(H)])}$.raw=Y;function q(H,U){let D=[];for(let[M,R]of H.entries()){if(M>0&&U!==void 0)D.push(U);D.push(R)}return new R1(D)}$.join=q;function J(H){return new P5(H)}$.identifier=J;function V(H){return new j5(H)}$.placeholder=V;function W(H,U){return new o9(H,U)}$.param=W})(Z4||(Z4={}));(($)=>{class X{constructor(G,Y){this.sql=G,this.fieldAlias=Y}static[b]="SQL.Aliased";isSelectionField=!1;getSQL(){return this.sql}clone(){return new X(this.sql,this.fieldAlias)}}$.Aliased=X})(R1||(R1={}));class j5{constructor($){this.name=$}static[b]="Placeholder";getSQL(){return new R1([this])}}var KA=Symbol.for("drizzle:IsDrizzleView");class Zq{static[b]="View";[B4];[KA]=!0;constructor({name:$,schema:X,selectedFields:G,query:Y}){this[B4]={name:$,originalName:$,schema:X,selectedFields:G,query:Y,isExisting:!Y,isAlias:!1}}getSQL(){return new R1([this])}}a0.prototype.getSQL=function(){return new R1([this])};F1.prototype.getSQL=function(){return new R1([this])};_5.prototype.getSQL=function(){return new R1([this])};function B0($,X){return{name:typeof $==="string"&&$.length>0?$:"",config:typeof $==="object"?$:X}}var n9=typeof TextDecoder>"u"?null:new TextDecoder;class s9{static[b]="SQLiteForeignKeyBuilder";reference;_onUpdate;_onDelete;constructor($,X){if(this.reference=()=>{let{name:G,columns:Y,foreignColumns:q}=$();return{name:G,columns:Y,foreignTable:q[0].table,foreignColumns:q}},X)this._onUpdate=X.onUpdate,this._onDelete=X.onDelete}onUpdate($){return this._onUpdate=$,this}onDelete($){return this._onDelete=$,this}build($){return new Nq($,this)}}class Nq{constructor($,X){this.table=$,this.reference=X.reference,this.onUpdate=X._onUpdate,this.onDelete=X._onDelete}static[b]="SQLiteForeignKey";reference;onUpdate;onDelete;getName(){let{name:$,columns:X,foreignColumns:G}=this.reference(),Y=X.map((V)=>V.name),q=G.map((V)=>V.name),J=[this.table[W0],...Y,G[0].table[W0],...q];return $??`${J.join("_")}_fk`}}function wq($,X){return`${$[W0]}_${X.join("_")}_unique`}class z1 extends p9{static[b]="SQLiteColumnBuilder";foreignKeyConfigs=[];references($,X={}){return this.foreignKeyConfigs.push({ref:$,actions:X}),this}unique($){return this.config.isUnique=!0,this.config.uniqueName=$,this}generatedAlwaysAs($,X){return this.config.generated={as:$,type:"always",mode:X?.mode??"virtual"},this}buildForeignKeys($,X){return this.foreignKeyConfigs.map(({ref:G,actions:Y})=>{return((q,J)=>{let V=new s9(()=>{let W=q();return{columns:[$],foreignColumns:[W]}});if(J.onUpdate)V.onUpdate(J.onUpdate);if(J.onDelete)V.onDelete(J.onDelete);return V.build(X)})(G,Y)})}}class L1 extends a0{constructor($,X){if(!X.uniqueName)X.uniqueName=wq($,[X.name]);super($,X);this.table=$}static[b]="SQLiteColumn"}class zq extends z1{static[b]="SQLiteBigIntBuilder";constructor($){super($,"bigint","SQLiteBigInt")}build($){return new Lq($,this.config)}}class Lq extends L1{static[b]="SQLiteBigInt";getSQLType(){return"blob"}mapFromDriverValue($){if(typeof Buffer<"u"&&Buffer.from){let X=Buffer.isBuffer($)?$:$ instanceof ArrayBuffer?Buffer.from($):$.buffer?Buffer.from($.buffer,$.byteOffset,$.byteLength):Buffer.from($);return BigInt(X.toString("utf8"))}return BigInt(n9.decode($))}mapToDriverValue($){return Buffer.from($.toString())}}class _q extends z1{static[b]="SQLiteBlobJsonBuilder";constructor($){super($,"json","SQLiteBlobJson")}build($){return new Pq($,this.config)}}class Pq extends L1{static[b]="SQLiteBlobJson";getSQLType(){return"blob"}mapFromDriverValue($){if(typeof Buffer<"u"&&Buffer.from){let X=Buffer.isBuffer($)?$:$ instanceof ArrayBuffer?Buffer.from($):$.buffer?Buffer.from($.buffer,$.byteOffset,$.byteLength):Buffer.from($);return JSON.parse(X.toString("utf8"))}return JSON.parse(n9.decode($))}mapToDriverValue($){return Buffer.from(JSON.stringify($))}}class jq extends z1{static[b]="SQLiteBlobBufferBuilder";constructor($){super($,"buffer","SQLiteBlobBuffer")}build($){return new Eq($,this.config)}}class Eq extends L1{static[b]="SQLiteBlobBuffer";mapFromDriverValue($){if(Buffer.isBuffer($))return $;return Buffer.from($)}getSQLType(){return"blob"}}function Cq($,X){let{name:G,config:Y}=B0($,X);if(Y?.mode==="json")return new _q(G);if(Y?.mode==="bigint")return new zq(G);return new jq(G)}class Tq extends z1{static[b]="SQLiteCustomColumnBuilder";constructor($,X,G){super($,"custom","SQLiteCustomColumn");this.config.fieldConfig=X,this.config.customTypeParams=G}build($){return new Sq($,this.config)}}class Sq extends L1{static[b]="SQLiteCustomColumn";sqlName;mapTo;mapFrom;constructor($,X){super($,X);this.sqlName=X.customTypeParams.dataType(X.fieldConfig),this.mapTo=X.customTypeParams.toDriver,this.mapFrom=X.customTypeParams.fromDriver}getSQLType(){return this.sqlName}mapFromDriverValue($){return typeof this.mapFrom==="function"?this.mapFrom($):$}mapToDriverValue($){return typeof this.mapTo==="function"?this.mapTo($):$}}function E5($){return(X,G)=>{let{name:Y,config:q}=B0(X,G);return new Tq(Y,q,$)}}class C5 extends z1{static[b]="SQLiteBaseIntegerBuilder";constructor($,X,G){super($,X,G);this.config.autoIncrement=!1}primaryKey($){if($?.autoIncrement)this.config.autoIncrement=!0;return this.config.hasDefault=!0,super.primaryKey()}}class T5 extends L1{static[b]="SQLiteBaseInteger";autoIncrement=this.config.autoIncrement;getSQLType(){return"integer"}}class Iq extends C5{static[b]="SQLiteIntegerBuilder";constructor($){super($,"number","SQLiteInteger")}build($){return new bq($,this.config)}}class bq extends T5{static[b]="SQLiteInteger"}class xq extends C5{static[b]="SQLiteTimestampBuilder";constructor($,X){super($,"date","SQLiteTimestamp");this.config.mode=X}defaultNow(){return this.default(Z4`(cast((julianday('now') - 2440587.5)*86400000 as integer))`)}build($){return new vq($,this.config)}}class vq extends T5{static[b]="SQLiteTimestamp";mode=this.config.mode;mapFromDriverValue($){if(this.config.mode==="timestamp")return new Date($*1000);return new Date($)}mapToDriverValue($){let X=$.getTime();if(this.config.mode==="timestamp")return Math.floor(X/1000);return X}}class kq extends C5{static[b]="SQLiteBooleanBuilder";constructor($,X){super($,"boolean","SQLiteBoolean");this.config.mode=X}build($){return new hq($,this.config)}}class hq extends T5{static[b]="SQLiteBoolean";mode=this.config.mode;mapFromDriverValue($){return Number($)===1}mapToDriverValue($){return $?1:0}}function g1($,X){let{name:G,config:Y}=B0($,X);if(Y?.mode==="timestamp"||Y?.mode==="timestamp_ms")return new xq(G,Y.mode);if(Y?.mode==="boolean")return new kq(G,Y.mode);return new Iq(G)}class yq extends z1{static[b]="SQLiteNumericBuilder";constructor($){super($,"string","SQLiteNumeric")}build($){return new gq($,this.config)}}class gq extends L1{static[b]="SQLiteNumeric";mapFromDriverValue($){if(typeof $==="string")return $;return String($)}getSQLType(){return"numeric"}}class fq extends z1{static[b]="SQLiteNumericNumberBuilder";constructor($){super($,"number","SQLiteNumericNumber")}build($){return new mq($,this.config)}}class mq extends L1{static[b]="SQLiteNumericNumber";mapFromDriverValue($){if(typeof $==="number")return $;return Number($)}mapToDriverValue=String;getSQLType(){return"numeric"}}class uq extends z1{static[b]="SQLiteNumericBigIntBuilder";constructor($){super($,"bigint","SQLiteNumericBigInt")}build($){return new pq($,this.config)}}class pq extends L1{static[b]="SQLiteNumericBigInt";mapFromDriverValue=BigInt;mapToDriverValue=String;getSQLType(){return"numeric"}}function lq($,X){let{name:G,config:Y}=B0($,X),q=Y?.mode;return q==="number"?new fq(G):q==="bigint"?new uq(G):new yq(G)}class dq extends z1{static[b]="SQLiteRealBuilder";constructor($){super($,"number","SQLiteReal")}build($){return new cq($,this.config)}}class cq extends L1{static[b]="SQLiteReal";getSQLType(){return"real"}}function rq($){return new dq($??"")}class iq extends z1{static[b]="SQLiteTextBuilder";constructor($,X){super($,"string","SQLiteText");this.config.enumValues=X.enum,this.config.length=X.length}build($){return new oq($,this.config)}}class oq extends L1{static[b]="SQLiteText";enumValues=this.config.enumValues;length=this.config.length;constructor($,X){super($,X)}getSQLType(){return`text${this.config.length?`(${this.config.length})`:""}`}}class nq extends z1{static[b]="SQLiteTextJsonBuilder";constructor($){super($,"json","SQLiteTextJson")}build($){return new sq($,this.config)}}class sq extends L1{static[b]="SQLiteTextJson";getSQLType(){return"text"}mapFromDriverValue($){return JSON.parse($)}mapToDriverValue($){return JSON.stringify($)}}function i($,X={}){let{name:G,config:Y}=B0($,X);if(Y.mode==="json")return new nq(G);return new iq(G,Y)}function aq(){return{blob:Cq,customType:E5,integer:g1,numeric:lq,real:rq,text:i}}var a9=Symbol.for("drizzle:SQLiteInlineForeignKeys");class M6 extends F1{static[b]="SQLiteTable";static Symbol=Object.assign({},F1.Symbol,{InlineForeignKeys:a9});[F1.Symbol.Columns];[a9]=[];[F1.Symbol.ExtraConfigBuilder]=void 0}function FA($,X,G,Y,q=$){let J=new M6($,Y,q),V=typeof X==="function"?X(aq()):X,W=Object.fromEntries(Object.entries(V).map(([U,D])=>{let M=D;M.setName(U);let R=M.build(J);return J[a9].push(...M.buildForeignKeys(R,J)),[U,R]})),H=Object.assign(J,W);if(H[F1.Symbol.Columns]=W,H[F1.Symbol.ExtraConfigColumns]=W,G)H[M6.Symbol.ExtraConfigBuilder]=G;return H}var Z0=($,X,G)=>{return FA($,X,G)};class tq{constructor($,X){this.name=$,this.unique=X}static[b]="SQLiteIndexBuilderOn";on(...$){return new eq(this.name,$,this.unique)}}class eq{static[b]="SQLiteIndexBuilder";config;constructor($,X,G){this.config={name:$,columns:X,unique:G,where:void 0}}where($){return this.config.where=$,this}build($){return new $J(this.config,$)}}class $J{static[b]="SQLiteIndex";config;constructor($,X){this.config={...$,table:X}}}function H0($){return new tq($,!1)}function S5(...$){if($[0].columns)return new t9($[0].columns,$[0].name);return new t9($)}class t9{static[b]="SQLitePrimaryKeyBuilder";columns;name;constructor($,X){this.columns=$,this.name=X}build($){return new XJ($,this.columns,this.name)}}class XJ{constructor($,X,G){this.table=$,this.columns=X,this.name=G}static[b]="SQLitePrimaryKey";columns;name;getName(){return this.name??`${this.table[M6.Symbol.Name]}_${this.columns.map(($)=>$.name).join("_")}_pk`}}var e9=Z0("job_queue",{id:i("id").primaryKey().$defaultFn(()=>I0()),type:i("type").notNull(),data:i("data").notNull(),result:i("result",{mode:"json"}),source:i("source"),metadata:i("metadata",{mode:"json"}).$type().notNull(),status:i("status",{enum:["pending","processing","completed","failed"]}).notNull().default("pending"),priority:g1("priority").notNull().default(0),retryCount:g1("retryCount").notNull().default(0),maxRetries:g1("maxRetries").notNull().default(3),lastError:i("lastError"),createdAt:g1("createdAt").notNull().$defaultFn(()=>Date.now()),scheduledFor:g1("scheduledFor").notNull().$defaultFn(()=>Date.now()),startedAt:g1("startedAt"),completedAt:g1("completedAt")},($)=>({queueReadyIdx:H0("idx_job_queue_ready").on($.status,$.priority,$.scheduledFor),jobTypeIdx:H0("idx_job_queue_type").on($.type,$.status),jobSourceIdx:H0("idx_job_queue_source").on($.source)}));var GJ=Q.enum(["file_operations","content_operations","data_processing","batch_processing"]),YJ=Q.object({pluginId:Q.string().optional(),progressToken:Q.union([Q.string(),Q.number()]).optional(),operationType:GJ,operationTarget:Q.string().optional(),interfaceType:Q.string().optional(),channelId:Q.string().optional()}),K6=YJ.extend({rootJobId:Q.string()}),px=Q.enum(["none","skip","replace","coalesce"]);var $7=Q.enum(["pending","processing","completed","failed"]),qJ=Q.enum(["completed","failed"]);var RA=Q.object({id:Q.string(),type:Q.string(),status:$7,data:Q.unknown(),result:Q.unknown().optional(),lastError:Q.string().optional().nullable(),attempts:Q.number(),maxRetries:Q.number(),priority:Q.number(),createdAt:Q.date(),updatedAt:Q.date(),processedAt:Q.date().optional().nullable(),completedAt:Q.date().optional().nullable(),failedAt:Q.date().optional().nullable()}),OA=Q.object({jobId:Q.string(),type:Q.string(),status:qJ,result:Q.unknown().optional(),error:Q.string().optional()}),I5=Q.object({id:Q.string(),type:Q.enum(["job","batch"]),status:$7,message:Q.string().optional(),progress:Q.object({current:Q.number(),total:Q.number(),percentage:Q.number()}).optional(),aggregationKey:Q.string().optional(),batchDetails:Q.object({totalOperations:Q.number(),completedOperations:Q.number(),failedOperations:Q.number(),currentOperation:Q.string().optional(),errors:Q.array(Q.string()).optional()}).optional(),jobDetails:Q.object({jobType:Q.string(),priority:Q.number(),retryCount:Q.number()}).optional(),metadata:K6});import{createClient as ox}from"@libsql/client";var Fv=Q.object({success:Q.literal(!1),error:Q.string().optional()});var AA=Q.object({id:Q.string(),type:Q.string(),data:Q.string(),status:Q.enum(["pending","processing","completed","failed"]),source:Q.string().nullable(),priority:Q.number(),retryCount:Q.number(),maxRetries:Q.number(),lastError:Q.string().nullable(),createdAt:Q.number(),scheduledFor:Q.number(),startedAt:Q.number().nullable(),completedAt:Q.number().nullable(),metadata:K6,result:Q.unknown().nullable().optional()});function X7($,X,G){return async(Y,q,J,V)=>{let{metadata:W,...H}=V??{},U={source:X,...V?.rootJobId&&{rootJobId:V.rootJobId},...H,metadata:{operationType:"data_processing",pluginId:X,...J&&{interfaceType:J.interfaceType,channelId:J.channelId},...W}},D=G&&!Y.includes(":")?`${X}:${Y}`:Y;return $.enqueue(D,q,U)}}function G7($,X){return async(G,Y)=>{let q=I0(),J=G.map((W)=>({...W,type:W.type.includes(":")?W.type:`${X}:${W.type}`})),V={...Y,source:X,rootJobId:q,metadata:{...Y?.metadata,operationType:"batch_processing",pluginId:X}};return await $.enqueueBatch(J,V,q,X),q}}function Y7($,X){return(G,Y)=>{let q=G.includes(":")?G:`${X}:${G}`;$.registerHandler(q,Y,X)}}function T2($,X,G){let Y=$.getMessageBus(),q=$.getEntityService(),J=$.getJobQueueService(),V=$.getLogger().child(X),W=$.getDomain(),H=async(U,D,M)=>{return Y.send(U,D,X,void 0,void 0,M?.broadcast)};return{pluginId:X,logger:V,entityService:q,identity:{get:()=>$.getIdentity(),getProfile:()=>$.getProfile(),getAppInfo:()=>$.getAppInfo()},appInfo:()=>$.getAppInfo(),domain:W,siteUrl:W?`https://${W}`:void 0,previewUrl:W?`https://${k9(W)}`:void 0,entityDisplay:G?.entityDisplay,messaging:{send:H,subscribe:(U,D)=>{if(Wq(U)){let M=U,R=D,O=async(N)=>{let z=M.schema.safeParse(N.payload);if(!z.success)return V.warn(`Invalid payload for channel ${M.name}`,{error:z.error.message}),{noop:!0};let{payload:P,..._}=N;return R(z.data,_)};return Y.subscribe(M.name,O)}return Y.subscribe(U,D)}},jobs:{...$.jobs,enqueue:X7(J,X,!0),enqueueBatch:G7($.jobs,X),registerHandler:Y7(J,X)},conversations:{get:async(U)=>{return $.getConversationService().getConversation(U)},search:async(U)=>{return $.getConversationService().searchConversations(U)},getMessages:async(U,D)=>{return $.getConversationService().getMessages(U,D)}},dataDir:$.getDataDir(),eval:{registerHandler:(U,D)=>{$.registerEvalHandler(X,U,D)}},insights:{register:(U,D)=>{$.getInsightsRegistry().register(U,D)}},endpoints:{register:({label:U,url:D,priority:M=100})=>{$.registerEndpoint({label:U,url:D,pluginId:X,priority:M})}}}}import{createClient as nv}from"@libsql/client";var x5=Z0("entities",{id:i("id").notNull(),entityType:i("entityType").notNull(),content:i("content").notNull(),contentHash:i("contentHash").notNull(),metadata:i("metadata",{mode:"json"}).$type().notNull().default(Z4`'{}'`),created:g1("created").notNull().$defaultFn(()=>Date.now()),updated:g1("updated").notNull().$defaultFn(()=>Date.now())},($)=>{return{pk:S5({columns:[$.id,$.entityType]})}});import{createClient as qk}from"@libsql/client";var VJ=E5({dataType(){return"F32_BLOB(1536)"},toDriver($){return Buffer.from($.buffer)},fromDriver($){return new Float32Array($.buffer,$.byteOffset,$.byteLength/4)}});var v5=Z0("embeddings",{entityId:i("entity_id").notNull(),entityType:i("entity_type").notNull(),embedding:VJ("embedding").notNull(),contentHash:i("content_hash").notNull()},($)=>{return{pk:S5({columns:[$.entityId,$.entityType]})}});var Uk=Q.object({id:Q.string().min(1,"Entity ID is required"),entityType:Q.string().min(1,"Entity type is required"),contentHash:Q.string().min(1,"Content hash is required"),operation:Q.enum(["create","update"])});var Kk=Q.object({limit:Q.number().int().positive().optional().default(20),offset:Q.number().int().min(0).optional().default(0),types:Q.array(Q.string()).optional().default([]),excludeTypes:Q.array(Q.string()).optional().default([]),weight:Q.record(Q.string(),Q.number()).optional()});var BA=Q.object({field:Q.string(),direction:Q.enum(["asc","desc"]),nullsFirst:Q.boolean().optional()}),Nk=Q.object({limit:Q.number().int().positive().optional(),offset:Q.number().int().min(0).optional().default(0),sortFields:Q.array(BA).optional(),filter:Q.object({metadata:Q.record(Q.string(),Q.unknown()).optional()}).optional(),publishedOnly:Q.boolean().optional()});var k5=Z6(R8(),1);function N4($,X){if(Object.keys(X).length===0)return $;let G=Object.fromEntries(Object.entries(X).filter(([,Y])=>Y!==void 0));return k5.default.stringify($,G)}function q7($){if($ instanceof Date)return $.toISOString();if(Array.isArray($))return $.map(q7);if($!==null&&typeof $==="object"){let X={};for(let[G,Y]of Object.entries($))X[G]=q7(Y);return X}return $}function $0($,X){let{content:G,data:Y}=k5.default($),q=q7(Y);return{content:G.trim(),metadata:X.parse(q)}}function J7($){if(Object.keys($).length===0)return"";let G=k5.default.stringify("",$).match(/^---\n[\s\S]*?\n---/);return G?G[0]:""}var EA={generateBodyTemplate:()=>""};class b0{entityType;schema;frontmatterSchema;isSingleton;hasBody;supportsCoverImage;fmSchema;bodyFormatter;constructor($){if(this.entityType=$.entityType,this.schema=$.schema,this.frontmatterSchema=$.frontmatterSchema,this.fmSchema=$.frontmatterSchema,this.bodyFormatter=$.bodyFormatter??EA,$.isSingleton!==void 0)this.isSingleton=$.isSingleton;if($.hasBody!==void 0)this.hasBody=$.hasBody;if($.supportsCoverImage!==void 0)this.supportsCoverImage=$.supportsCoverImage}toMarkdown($){let X=this.renderBody($),Y={...this.readExistingFrontmatter($.content)},q=Object.keys(this.frontmatterSchema.shape);for(let[J,V]of Object.entries($.metadata))if(q.includes(J))Y[J]=V;return this.buildMarkdown(X,Y)}renderBody($){return this.extractBody($.content)}readExistingFrontmatter($){try{return $0($,Q.record(Q.unknown())).metadata}catch{return{}}}extractMetadata($){return $.metadata}parseFrontMatter($,X){return $0($,X).metadata}getBodyTemplate(){return this.bodyFormatter.generateBodyTemplate()}generateFrontMatter($){let X=$.metadata;return J7(X)}extractBody($){try{return $0($,Q.record(Q.unknown())).content}catch{return $}}parseFrontmatter($){return $0($,this.fmSchema).metadata}buildMarkdown($,X){return N4($,X)}}var S2=Q.object({id:Q.string(),entityType:Q.string(),content:Q.string(),created:Q.string().datetime(),updated:Q.string().datetime(),metadata:Q.record(Q.string(),Q.unknown()),contentHash:Q.string()});class w4{cache=null;cacheParseError=null;logger;entityService;entityType;defaultBody;constructor($,X,G,Y){this.entityService=$,this.logger=X.child(this.constructor.name),this.entityType=G,this.defaultBody=Y}async initialize(){if(await this.load(),!this.cache){this.logger.info(`No ${this.entityType} found, creating default ${this.entityType}`);try{let $=this.createContent(this.defaultBody);await this.entityService.createEntity({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(this.entityType,this.entityType);if(this.cache=$,this.cacheParseError=null,$)try{this.parseBody($.content),this.logger.debug(`${this.entityType} loaded`)}catch(X){this.cacheParseError=X instanceof Error?X:Error(String(X)),this.logger.error(`Failed to parse ${this.entityType} \u2014 using default. Fix the entity content to clear this error.`,{error:this.cacheParseError.message})}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}}}var WJ=Q.object({currentPage:Q.number(),totalPages:Q.number(),totalItems:Q.number(),pageSize:Q.number(),hasNextPage:Q.boolean(),hasPrevPage:Q.boolean()});function SA($){return $.replace(/:/g,"-")}function IA($){return $.split(/[:.-]/).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}var V7=new Map;async function F6($,X,G){let Y=V7.get(X);if(Y!==void 0)return Y;let q=SA(X),J;try{J=await $.getEntity("prompt",q)}catch{return G}if(J?.content){let V=$0(J.content,Q.record(Q.unknown())).content;return V7.set(X,V),V}try{let V=IA(X),W=N4(G,{title:V,target:X});await $.createEntity({id:q,entityType:"prompt",content:W,metadata:{title:V,target:X,slug:q}})}catch{}return V7.set(X,G),G}function W7($,X,G){let Y=T2($,X,G),q=$.getEntityService(),J=$.getEntityRegistry(),V=$.getRenderService(),W=$.getDataSourceRegistry(),H=$.getContentService();return{...Y,entityService:q,entities:{register:(U,D,M,R)=>{J.registerEntityType(U,D,M,R)},getAdapter:(U)=>{try{return J.getAdapter(U)}catch{return}},extendFrontmatterSchema:(U,D)=>{J.extendFrontmatterSchema(U,D)},getEffectiveFrontmatterSchema:(U)=>{return J.getEffectiveFrontmatterSchema(U)},registerCreateInterceptor:(U,D)=>{J.registerCreateInterceptor(U,D)},update:async(U)=>{return q.updateEntity(U)},registerDataSource:(U)=>{W.register(U)}},templates:{register:(U,D)=>{$.registerTemplates(U,D??X)},format:(U,D)=>{return H.formatContent(U,D,{pluginId:X})},parse:(U,D)=>{return H.parseContent(U,D,X)},resolve:async(U,D)=>{return await H.resolveContent(U,D,X)},getCapabilities:(U)=>{let D=U.includes(":")?U:`${X}:${U}`,M=$.getTemplate(D);if(!M)return null;let R=U6.getCapabilities(M);return{canGenerate:R.canGenerate,canFetch:R.canFetch,canRender:R.canRender,isStaticOnly:R.isStaticOnly}}},views:{get:(U)=>{return V.get(U)??void 0},list:()=>{return V.list()},hasRenderer:(U)=>{return V.hasRenderer(U,"web")},getRenderer:(U)=>{return V.getRenderer(U,"web")},validate:(U,D)=>{return V.validate(U,D)}},prompts:{resolve:(U,D)=>{return F6(q,U,D)}},registerInstructions:(U)=>{$.registerInstructions(X,U)}}}class H7 extends C2{type="service";getApiRoutes(){return[]}getWebRoutes(){return[]}async register($,X){let G=W7($,this.id,X);this.context=G,this.setupMessageHandlers(G),await this.onRegister(G);let Y=await this.getInstructions();return{tools:await this.getTools(),resources:await this.getResources(),...Y&&{instructions:Y}}}get entityService(){return this.getContext().entityService}registerEntityType($,X,G,Y){this.getContext().entities.register($,X,G,Y)}async enqueueJob($,X,G,Y){return this.getContext().jobs.enqueue($,X,G,Y)}async enqueueBatch($,X){return this.getContext().jobs.enqueueBatch($,X)}async registerEntityTypes($){}async registerJobHandlers($){}async onRegister($){await this.registerEntityTypes($),await this.registerJobHandlers($)}}function U7($,X,G){let Y=T2($,X,G),q=$.getEntityService(),J=$.getEntityRegistry(),V=$.getDataSourceRegistry();return{...Y,entityService:q,entities:{register:(W,H,U,D)=>{J.registerEntityType(W,H,U,D)},getAdapter:(W)=>{try{return J.getAdapter(W)}catch{return}},extendFrontmatterSchema:(W,H)=>{J.extendFrontmatterSchema(W,H)},getEffectiveFrontmatterSchema:(W)=>{return J.getEffectiveFrontmatterSchema(W)},registerCreateInterceptor:(W,H)=>{J.registerCreateInterceptor(W,H)},update:async(W)=>{return q.updateEntity(W)},registerDataSource:(W)=>{V.register(W)}},ai:{query:(W,H)=>$.query(W,H),generate:async(W)=>{return $.generateContent(W)},generateObject:async(W,H)=>{return $.generateObject(W,H)},generateImage:async(W,H)=>{return $.generateImage(W,H)},canGenerateImages:()=>{return $.canGenerateImages()}},prompts:{resolve:(W,H)=>{return F6(q,W,H)}}}}var bA=Q.object({});class R6 extends C2{type="entity";constructor($,X,G={},Y=bA){super($,X,G,Y)}async register($,X){let G=U7($,this.id,X);if(this.context=G,this.setupMessageHandlers(G),G.entities.register(this.entityType,this.schema,this.adapter,this.getEntityTypeConfig()),this.interceptCreate!==R6.prototype.interceptCreate)G.entities.registerCreateInterceptor(this.entityType,(W,H)=>this.interceptCreate(W,H,G));let Y=this.createGenerationHandler(G);if(Y)G.jobs.registerHandler(`${this.entityType}:generation`,Y);if(this.hasDeriveHandler()){let W=this.createExtractHandler(G);G.jobs.registerHandler(`${this.entityType}:extract`,W)}let q=this.getTemplates();if(q&&Object.keys(q).length>0)$.registerTemplates(q,this.id);let J=this.getDataSources();for(let W of J)G.entities.registerDataSource(W);await this.onRegister(this.context);let V=await this.getInstructions();return{tools:[],resources:[],...V&&{instructions:V}}}async interceptCreate($,X,G){return{kind:"continue",input:$}}createGenerationHandler($){return null}getTemplates(){return null}getDataSources(){return[]}getEntityTypeConfig(){return}createExtractHandler($){let X=Q.object({sourceId:Q.string().optional(),sourceType:Q.string().optional(),mode:Q.enum(["derive","rebuild"]).optional()});return{process:async(G)=>{if(G.sourceId&&G.sourceType){let Y=await $.entityService.getEntity(G.sourceType,G.sourceId);if(Y)return await this.derive(Y,"extract",$),{extracted:1};return{extracted:0}}if(G.mode==="rebuild")await this.rebuildAll($);else await this.deriveAll($);return{extracted:0}},validateAndParse(G){let Y=X.safeParse(G??{});return Y.success?Y.data:null}}}async derive($,X,G){}async deriveAll($){}async rebuildAll($){await this.deriveAll($)}hasDeriveHandler(){return this.derive!==R6.prototype.derive}}function D7($,X,G){let Y=T2($,X,G),q=$.getMCPService(),J=$.getPermissionService(),V=$.getAgentService();return{...Y,mcpTransport:q,agentService:V,permissions:{getUserLevel:(W,H)=>{return J.determineUserLevel(W,H)}},daemons:{register:(W,H)=>{let U=`${X}:${W}`;$.registerDaemon(U,H,X),Y.logger.debug(`Registered daemon: ${U}`)}},conversations:{...Y.conversations,start:async(W,H,U,D)=>{return $.getConversationService().startConversation(W,H,U,D)},addMessage:async(W,H,U,D)=>{await $.getConversationService().addMessage(W,H,U,D)}},tools:{listForPermissionLevel:(W)=>{return $.listToolsForPermissionLevel(W)}},apiRoutes:{getRoutes:()=>{return $.getPluginApiRoutes()},getMessageBus:()=>{return $.getMessageBus()}},webRoutes:{getRoutes:()=>{return $.getPluginWebRoutes()}},plugins:{has:(W)=>$.hasPlugin(W)}}}var xA=3600000;class O6 extends C2{type="interface";daemon;jobTrackingEntries=new Map;jobTrackingTtlMs=xA;async register($,X){let G=D7($,this.id,X);if(this.context=G,this.initializeDaemon(),this.daemon)await this.registerDaemon(G);this.setupMessageHandlers(G),await this.onRegister(G);let Y=await this.getInstructions();return{tools:await this.getTools(),resources:await this.getResources(),...Y&&{instructions:Y}}}async onRegister($){}async registerDaemon($){if(!this.daemon)return;$.daemons.register(this.id,this.daemon),$.logger.debug(`Registered daemon for interface: ${this.id}`)}createDaemon(){return}requiresDaemonStartup(){return!1}getWebRoutes(){return[]}initializeDaemon(){let $=this.createDaemon();if($)this.daemon=$}async handleProgressEvent($,X){}cleanupExpiredEntries(){let $=Date.now(),X=[];for(let[G,Y]of this.jobTrackingEntries)if($-Y.createdAt>this.jobTrackingTtlMs)X.push(G);for(let G of X)this.jobTrackingEntries.delete(G)}ownsJob($,X){return this.jobTrackingEntries.has($)||X!==void 0&&this.jobTrackingEntries.has(X)}getJobTracking($,X){let G=this.jobTrackingEntries.get($);if(G)return G.info;if(X){let Y=this.jobTrackingEntries.get(X);if(Y)return Y.info}return}setJobTracking($,X){this.cleanupExpiredEntries(),this.jobTrackingEntries.set($,{info:X,createdAt:Date.now()})}removeJobTracking($){this.jobTrackingEntries.delete($)}async createJobWithTracking($,X,G,Y){let J=await this.getContext().jobs.enqueue($,X,null,Y);return this.setJobTracking(J,G),J}async createBatchWithTracking($,X,G){let q=await this.getContext().jobs.enqueueBatch($,G);return this.setJobTracking(q,X),q}}var HJ=Q.object({id:Q.string().optional(),limit:Q.number().optional(),page:Q.number().optional(),pageSize:Q.number().optional(),baseUrl:Q.string().optional()}).passthrough(),vA=Q.object({entityType:Q.string().optional(),query:HJ.optional()}).passthrough();import{createClient as Ay}from"@libsql/client";var h5=Z0("conversations",{id:i("id").primaryKey(),sessionId:i("session_id").notNull(),interfaceType:i("interface_type").notNull(),channelId:i("channel_id").notNull(),started:i("started").notNull(),lastActive:i("last_active").notNull(),metadata:i("metadata"),created:i("created").notNull(),updated:i("updated").notNull()},($)=>({sessionIdx:H0("idx_conversations_session").on($.sessionId),channelIdx:H0("idx_conversations_channel").on($.channelId),interfaceSessionIdx:H0("idx_conversations_interface_session").on($.interfaceType,$.sessionId),interfaceChannelIdx:H0("idx_conversations_interface_channel").on($.interfaceType,$.channelId)})),UJ=Z0("messages",{id:i("id").primaryKey(),conversationId:i("conversation_id").notNull().references(()=>h5.id,{onDelete:"cascade"}),role:i("role").notNull(),content:i("content").notNull(),timestamp:i("timestamp").notNull(),metadata:i("metadata")},($)=>({conversationIdx:H0("idx_messages_conversation").on($.conversationId),timestampIdx:H0("idx_messages_timestamp").on($.timestamp)})),DJ=Z0("summary_tracking",{conversationId:i("conversation_id").primaryKey().references(()=>h5.id,{onDelete:"cascade"}),lastSummarizedAt:i("last_summarized_at"),lastMessageId:i("last_message_id"),messagesSinceSummary:g1("messages_since_summary").default(0),updated:i("updated").notNull()});var kA=Q.object({id:Q.string(),conversationId:Q.string(),role:Q.string(),content:Q.string(),timestamp:Q.string(),metadata:Q.string().nullable()}),QJ=Q.object({conversationId:Q.string(),messageCount:Q.number(),messages:Q.array(kA),windowStart:Q.number(),windowEnd:Q.number(),windowSize:Q.number(),timestamp:Q.string()});function Q7($,X){$.messaging.subscribe("job-progress",async(G)=>{try{let Y=I5.safeParse(G.payload);if(!Y.success)return X.onInvalidSchema(),{success:!1};let q=Y.data;return await X.onProgress(q,q.metadata),{success:!0}}catch(Y){return X.onError(Y),{success:!1}}})}function M7($){let X=$.status==="completed"?"\u2705":"\u274C",G=$.status==="completed"?"completed":"failed",Y=$.metadata.operationType.replace(/_/g," "),q=$.metadata.operationTarget?`: ${$.metadata.operationTarget}`:"",J=`${X} **${Y}${q}** ${G}`;if($.message)J+=`
|
|
169
|
+
`)}}var iC=Q.object({slug:Q.string(),title:Q.string(),type:Q.string(),entityId:Q.string(),contentHash:Q.string()});import{webcrypto as aY}from"crypto";var sY="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var pO=128,E2,A4;function lO($){if(!E2||E2.length<$)E2=Buffer.allocUnsafe($*pO),aY.getRandomValues(E2),A4=0;else if(A4+$>E2.length)aY.getRandomValues(E2),A4=0;A4+=$}function tY($=21){lO($|=0);let X="";for(let G=A4-$;G<A4;G++)X+=sY[E2[G]&63];return X}function I0($=12){return tY($)}function k9($){let X=$.trim().replace(/^https?:\/\//,""),G=X.split(".").filter(Boolean);if(G.length>=3){let[Y,...q]=G;if(!Y||q.length===0)return`preview.${X}`;return`${Y}-preview.${q.join(".")}`}return`preview.${X}`}function x1($){return $ instanceof Error?$.message:String($)}function H6($){return $ instanceof Error?$:Error(String($))}var cO=Q.object({success:Q.boolean(),entityId:Q.string().optional(),error:Q.string().optional()});var nO=Q.object({status:Q.enum(["healthy","warning","error","unknown"]),message:Q.string().optional(),lastCheck:Q.date().optional(),details:Q.record(Q.string(),Q.unknown()).optional()}),eY=Q.object({name:Q.string(),pluginId:Q.string(),status:Q.string(),health:nO.optional()});import{McpServer as _I}from"@modelcontextprotocol/sdk/server/mcp.js";var h9=Q.enum(["anchor","trusted","public"]);var sO=Q.object({name:Q.string(),description:Q.string(),schema:Q.any(),basePrompt:Q.string().optional(),useKnowledgeContext:Q.boolean().optional(),requiredPermission:h9,formatter:Q.any().optional(),layout:Q.object({component:Q.any(),fullscreen:Q.boolean().optional()}).optional(),dataSourceId:Q.string().optional()});class U6{static canGenerate($){return!!$.basePrompt&&!!$.dataSourceId&&$.dataSourceId.includes("ai-content")}static canFetch($){return!!$.dataSourceId&&!this.canGenerate($)}static canRender($){return!!$.layout?.component}static isStaticOnly($){return!this.canGenerate($)&&!this.canFetch($)}static getCapabilities($){return{canGenerate:this.canGenerate($),canFetch:this.canFetch($),canRender:this.canRender($),isStaticOnly:this.isStaticOnly($)}}static validate($){let X=[];if($.dataSourceId?.includes("ai-content")&&!$.basePrompt)X.push(`Template "${$.name}" has AI-content dataSourceId but no basePrompt. AI generation requires a basePrompt.`);if($.basePrompt&&(!$.dataSourceId||!$.dataSourceId.includes("ai-content")))X.push(`Template "${$.name}" has basePrompt but no AI-content dataSourceId. The basePrompt won't be used.`);return X}static logCapabilities($,X){let G=this.getCapabilities($),Y=this.validate($);if(X)X.debug(`Template capabilities for "${$.name}":`,{...G,errors:Y.length>0?Y:void 0})}}var aO=Q.enum(["site-content-preview","site-content-production"]),tO=Q.object({name:Q.string(),schema:Q.any(),description:Q.string().optional(),pluginId:Q.string(),renderers:Q.object({web:Q.union([Q.function(),Q.string()]).optional()})}),eO=Q.object({enableContentGeneration:Q.boolean().default(!1),outputDir:Q.string(),workingDir:Q.string().optional(),environment:Q.enum(["preview","production"]).default("preview"),siteConfig:Q.object({title:Q.string(),description:Q.string(),url:Q.string().optional()}).optional()}),$A=Q.object({success:Q.boolean(),routesBuilt:Q.number(),errors:Q.array(Q.string()).optional(),warnings:Q.array(Q.string()).optional()});import{ResourceTemplate as EI}from"@modelcontextprotocol/sdk/server/mcp.js";var L5=Q.object({interfaceType:Q.string(),userId:Q.string(),channelId:Q.string().optional(),channelName:Q.string().optional()}),Xq=Q.object({success:Q.literal(!0),data:Q.unknown(),message:Q.string().optional()}),Gq=Q.object({success:Q.literal(!1),error:Q.string(),code:Q.string().optional()}),Yq=Q.object({needsConfirmation:Q.literal(!0),toolName:Q.string(),description:Q.string(),args:Q.unknown()}),y9=Q.union([Xq,Gq,Yq]);var qq=Q.union([Q.object({success:Q.literal(!0),data:Q.unknown(),message:Q.string().optional()}),Q.object({success:Q.literal(!1),error:Q.string(),code:Q.string().optional()})]);function g9($,X){return X?{success:!0,data:$,message:X}:{success:!0,data:$}}function f9($,X){return X?{success:!1,error:$,code:X}:{success:!1,error:$}}function m9($,X,G,Y,q,J={}){let{visibility:V="anchor",debug:W=!1,cli:H}=J,U=W?B1.createFresh({context:$}):null;return{name:`${$}_${X}`,description:G,inputSchema:Y.shape,handler:async(D,M)=>{U?.debug(`Tool ${X} started`);try{let R=Y.safeParse(D);if(!R.success){let N=R.error.errors.map((z)=>`${z.path.join(".")}: ${z.message}`).join(", ");return U?.debug(`Tool ${X} validation failed: ${N}`),{success:!1,error:`Invalid input: ${N}`}}let O=await q(R.data,M);return U?.debug(`Tool ${X} completed`),O}catch(R){return U?.error(`Tool ${X} failed`,R),{success:!1,error:x1(R)}}},visibility:V,...H?{cli:H}:{}}}function u9($,X,G,Y,q,J={}){let{mimeType:V="text/plain",debug:W=!1}=J,H=W?B1.createFresh({context:$}):null;return{uri:`${$}_${X}`,name:G,description:Y,mimeType:V,handler:async()=>{H?.debug(`Resource ${X} started`);try{let U=await q();return H?.debug(`Resource ${X} completed`),U}catch(U){throw H?.error(`Resource ${X} failed`,U),U}}}}var rI=Q.object({id:Q.string(),type:Q.string(),version:Q.string(),status:Q.string()}),iI=Q.object({name:Q.string(),description:Q.string()}),Jq=Q.object({label:Q.string(),url:Q.string(),pluginId:Q.string(),priority:Q.number().default(100)}),GA=Q.object({model:Q.string(),version:Q.string(),uptime:Q.number(),entities:Q.number(),embeddings:Q.number(),ai:Q.object({model:Q.string(),embeddingModel:Q.string()}),daemons:Q.array(eY),endpoints:Q.array(Jq)}),oI=Q.object({pluginId:Q.string(),tool:Q.object({name:Q.string(),description:Q.string(),inputSchema:Q.record(Q.string(),Q.unknown()),handler:Q.function(),visibility:Q.enum(["public","trusted","anchor"]).optional()}),timestamp:Q.number()}),nI=Q.object({pluginId:Q.string(),resource:Q.object({uri:Q.string(),name:Q.string(),description:Q.string().optional(),mimeType:Q.string().optional(),handler:Q.function()}),timestamp:Q.number()});var YA=Q.object({id:Q.string(),version:Q.string(),type:Q.enum(["core","entity","service","interface"]),description:Q.string().optional(),dependencies:Q.array(Q.string()).optional(),packageName:Q.string()});var qA=Q.object({toolName:Q.string(),args:Q.unknown(),progressToken:Q.union([Q.string(),Q.number()]).optional(),hasProgress:Q.boolean().optional(),...L5.shape}),JA=Q.object({resourceUri:Q.string()});class C2{id;version;description;packageName;config;context;get logger(){return this.context?.logger??B1.createFresh({context:this.id})}constructor($,X,G,Y){this.id=$,this.packageName=X.name,this.version=X.version,this.description=X.description??`${X.name} plugin`,this.config=Y.parse(G)}setupMessageHandlers($){$.messaging.subscribe(`plugin:${this.id}:tool:execute`,async(X)=>{try{let{toolName:G,args:Y,progressToken:q,hasProgress:J,interfaceType:V,userId:W,channelId:H}=qA.parse(X.payload),D=(await this.getTools()).find((O)=>O.name===G);if(!D)return{success:!1,error:`Tool not found: ${G}`};let M={interfaceType:V,userId:W,...H&&{channelId:H},...J&&q!==void 0&&{progressToken:q,sendProgress:async(O)=>{await $.messaging.send(`plugin:${this.id}:progress`,{progressToken:q,notification:O})}}};return{success:!0,data:await D.handler(Y,M)}}catch(G){if(G instanceof Q.ZodError)return{success:!1,error:"Invalid tool execution request format"};return this.logger.error("Tool execution error",G),{success:!1,error:x1(G)}}}),$.messaging.subscribe(`plugin:${this.id}:resource:get`,async(X)=>{try{let{resourceUri:G}=JA.parse(X.payload),q=(await this.getResources()).find((V)=>V.uri===G);if(!q)return{success:!1,error:`Resource not found: ${G}`};return{success:!0,data:await q.handler()}}catch(G){if(G instanceof Q.ZodError)return{success:!1,error:"Invalid resource get request format"};return this.logger.error("Resource fetch error",G),{success:!1,error:x1(G)}}})}async onRegister($){}async onReady($){}async ready(){await this.onReady(this.getContext())}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($){return"public"}createProgressBridge($){if(!$)return;let X=this.context;if(!X)return;let G=this.id;return i0.from(async(Y)=>{await X.messaging.send(`plugin:${G}:progress`,{progressToken:$,notification:{progress:Y.progress,total:Y.total,message:Y.message}})})}}var VA=Q.object({name:Q.string(),schema:Q.custom(($)=>$ instanceof Q.ZodType)});function Vq($,X){return{name:$,schema:X}}function Wq($){return VA.safeParse($).success}var b=Symbol.for("drizzle:entityKind");function y1($,X){if(!$||typeof $!=="object")return!1;if($ instanceof X)return!0;if(!Object.prototype.hasOwnProperty.call(X,b))throw Error(`Class "${X.name??"<unknown>"}" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`);let G=Object.getPrototypeOf($).constructor;if(G)while(G){if(b in G&&G[b]===X[b])return!0;G=Object.getPrototypeOf(G)}return!1}class a0{constructor($,X){this.table=$,this.config=X,this.name=X.name,this.keyAsName=X.keyAsName,this.notNull=X.notNull,this.default=X.default,this.defaultFn=X.defaultFn,this.onUpdateFn=X.onUpdateFn,this.hasDefault=X.hasDefault,this.primary=X.primaryKey,this.isUnique=X.isUnique,this.uniqueName=X.uniqueName,this.uniqueType=X.uniqueType,this.dataType=X.dataType,this.columnType=X.columnType,this.generated=X.generated,this.generatedIdentity=X.generatedIdentity}static[b]="Column";name;keyAsName;primary;notNull;default;defaultFn;onUpdateFn;hasDefault;isUnique;uniqueName;uniqueType;dataType;columnType;enumValues=void 0;generated=void 0;generatedIdentity=void 0;config;mapFromDriverValue($){return $}mapToDriverValue($){return $}shouldDisableInsert(){return this.config.generated!==void 0&&this.config.generated.type!=="byDefault"}}class p9{static[b]="ColumnBuilder";config;constructor($,X,G){this.config={name:$,keyAsName:$==="",notNull:!1,default:void 0,hasDefault:!1,primaryKey:!1,isUnique:!1,uniqueName:void 0,uniqueType:void 0,dataType:X,columnType:G,generated:void 0}}$type(){return this}notNull(){return this.config.notNull=!0,this}default($){return this.config.default=$,this.config.hasDefault=!0,this}$defaultFn($){return this.config.defaultFn=$,this.config.hasDefault=!0,this}$default=this.$defaultFn;$onUpdateFn($){return this.config.onUpdateFn=$,this.config.hasDefault=!0,this}$onUpdate=this.$onUpdateFn;primaryKey(){return this.config.primaryKey=!0,this.config.notNull=!0,this}setName($){if(this.config.name!=="")return;this.config.name=$}}var W0=Symbol.for("drizzle:Name");function Hq($,...X){return $(...X)}function Uq($,X){return`${$[W0]}_${X.join("_")}_unique`}class D6 extends a0{constructor($,X){if(!X.uniqueName)X.uniqueName=Uq($,[X.name]);super($,X);this.table=$}static[b]="PgColumn"}class WA extends D6{static[b]="ExtraConfigColumn";getSQLType(){return this.getSQLType()}indexConfig={order:this.config.order??"asc",nulls:this.config.nulls??"last",opClass:this.config.opClass};defaultConfig={order:"asc",nulls:"last",opClass:void 0};asc(){return this.indexConfig.order="asc",this}desc(){return this.indexConfig.order="desc",this}nullsFirst(){return this.indexConfig.nulls="first",this}nullsLast(){return this.indexConfig.nulls="last",this}op($){return this.indexConfig.opClass=$,this}}class HA extends D6{static[b]="PgEnumObjectColumn";enum;enumValues=this.config.enum.enumValues;constructor($,X){super($,X);this.enum=X.enum}getSQLType(){return this.enum.enumName}}var Dq=Symbol.for("drizzle:isPgEnum");function Qq($){return!!$&&typeof $==="function"&&Dq in $&&$[Dq]===!0}class UA extends D6{static[b]="PgEnumColumn";enum=this.config.enum;enumValues=this.config.enum.enumValues;constructor($,X){super($,X);this.enum=X.enum}getSQLType(){return this.enum.enumName}}class _5{static[b]="Subquery";constructor($,X,G,Y=!1,q=[]){this._={brand:"Subquery",sql:$,selectedFields:X,alias:G,isWith:Y,usedTables:q}}}var Mq="0.44.7";var l9,d9,Kq={startActiveSpan($,X){if(!l9)return X();if(!d9)d9=l9.trace.getTracer("drizzle-orm",Mq);return Hq((G,Y)=>Y.startActiveSpan($,(q)=>{try{return X(q)}catch(J){throw q.setStatus({code:G.SpanStatusCode.ERROR,message:J instanceof Error?J.message:"Unknown error"}),J}finally{q.end()}}),l9,d9)}};var B4=Symbol.for("drizzle:ViewBaseConfig");var c9=Symbol.for("drizzle:Schema"),Fq=Symbol.for("drizzle:Columns"),Rq=Symbol.for("drizzle:ExtraConfigColumns"),r9=Symbol.for("drizzle:OriginalName"),i9=Symbol.for("drizzle:BaseName"),Q6=Symbol.for("drizzle:IsAlias"),Oq=Symbol.for("drizzle:ExtraConfigBuilder"),DA=Symbol.for("drizzle:IsDrizzleTable");class F1{static[b]="Table";static Symbol={Name:W0,Schema:c9,OriginalName:r9,Columns:Fq,ExtraConfigColumns:Rq,BaseName:i9,IsAlias:Q6,ExtraConfigBuilder:Oq};[W0];[r9];[c9];[Fq];[Rq];[i9];[Q6]=!1;[DA]=!0;[Oq]=void 0;constructor($,X,G){this[W0]=this[r9]=$,this[c9]=X,this[i9]=G}}function QA($){return $!==null&&$!==void 0&&typeof $.getSQL==="function"}function MA($){let X={sql:"",params:[]};for(let G of $)if(X.sql+=G.sql,X.params.push(...G.params),G.typings?.length){if(!X.typings)X.typings=[];X.typings.push(...G.typings)}return X}class e1{static[b]="StringChunk";value;constructor($){this.value=Array.isArray($)?$:[$]}getSQL(){return new R1([this])}}class R1{constructor($){this.queryChunks=$;for(let X of $)if(y1(X,F1)){let G=X[F1.Symbol.Schema];this.usedTables.push(G===void 0?X[F1.Symbol.Name]:G+"."+X[F1.Symbol.Name])}}static[b]="SQL";decoder=Aq;shouldInlineParams=!1;usedTables=[];append($){return this.queryChunks.push(...$.queryChunks),this}toQuery($){return Kq.startActiveSpan("drizzle.buildSQL",(X)=>{let G=this.buildQueryFromSourceParams(this.queryChunks,$);return X?.setAttributes({"drizzle.query.text":G.sql,"drizzle.query.params":JSON.stringify(G.params)}),G})}buildQueryFromSourceParams($,X){let G=Object.assign({},X,{inlineParams:X.inlineParams||this.shouldInlineParams,paramStartIndex:X.paramStartIndex||{value:0}}),{casing:Y,escapeName:q,escapeParam:J,prepareTyping:V,inlineParams:W,paramStartIndex:H}=G;return MA($.map((U)=>{if(y1(U,e1))return{sql:U.value.join(""),params:[]};if(y1(U,P5))return{sql:q(U.value),params:[]};if(U===void 0)return{sql:"",params:[]};if(Array.isArray(U)){let D=[new e1("(")];for(let[M,R]of U.entries())if(D.push(R),M<U.length-1)D.push(new e1(", "));return D.push(new e1(")")),this.buildQueryFromSourceParams(D,G)}if(y1(U,R1))return this.buildQueryFromSourceParams(U.queryChunks,{...G,inlineParams:W||U.shouldInlineParams});if(y1(U,F1)){let D=U[F1.Symbol.Schema],M=U[F1.Symbol.Name];return{sql:D===void 0||U[Q6]?q(M):q(D)+"."+q(M),params:[]}}if(y1(U,a0)){let D=Y.getColumnCasing(U);if(X.invokeSource==="indexes")return{sql:q(D),params:[]};let M=U.table[F1.Symbol.Schema];return{sql:U.table[Q6]||M===void 0?q(U.table[F1.Symbol.Name])+"."+q(D):q(M)+"."+q(U.table[F1.Symbol.Name])+"."+q(D),params:[]}}if(y1(U,Zq)){let D=U[B4].schema,M=U[B4].name;return{sql:D===void 0||U[B4].isAlias?q(M):q(D)+"."+q(M),params:[]}}if(y1(U,o9)){if(y1(U.value,j5))return{sql:J(H.value++,U),params:[U],typings:["none"]};let D=U.value===null?null:U.encoder.mapToDriverValue(U.value);if(y1(D,R1))return this.buildQueryFromSourceParams([D],G);if(W)return{sql:this.mapInlineParam(D,G),params:[]};let M=["none"];if(V)M=[V(U.encoder)];return{sql:J(H.value++,D),params:[D],typings:M}}if(y1(U,j5))return{sql:J(H.value++,U),params:[U],typings:["none"]};if(y1(U,R1.Aliased)&&U.fieldAlias!==void 0)return{sql:q(U.fieldAlias),params:[]};if(y1(U,_5)){if(U._.isWith)return{sql:q(U._.alias),params:[]};return this.buildQueryFromSourceParams([new e1("("),U._.sql,new e1(") "),new P5(U._.alias)],G)}if(Qq(U)){if(U.schema)return{sql:q(U.schema)+"."+q(U.enumName),params:[]};return{sql:q(U.enumName),params:[]}}if(QA(U)){if(U.shouldOmitSQLParens?.())return this.buildQueryFromSourceParams([U.getSQL()],G);return this.buildQueryFromSourceParams([new e1("("),U.getSQL(),new e1(")")],G)}if(W)return{sql:this.mapInlineParam(U,G),params:[]};return{sql:J(H.value++,U),params:[U],typings:["none"]}}))}mapInlineParam($,{escapeString:X}){if($===null)return"null";if(typeof $==="number"||typeof $==="boolean")return $.toString();if(typeof $==="string")return X($);if(typeof $==="object"){let G=$.toString();if(G==="[object Object]")return X(JSON.stringify($));return X(G)}throw Error("Unexpected param value: "+$)}getSQL(){return this}as($){if($===void 0)return this;return new R1.Aliased(this,$)}mapWith($){return this.decoder=typeof $==="function"?{mapFromDriverValue:$}:$,this}inlineParams(){return this.shouldInlineParams=!0,this}if($){return $?this:void 0}}class P5{constructor($){this.value=$}static[b]="Name";brand;getSQL(){return new R1([this])}}var Aq={mapFromDriverValue:($)=>$},Bq={mapToDriverValue:($)=>$},gb={...Aq,...Bq};class o9{constructor($,X=Bq){this.value=$,this.encoder=X}static[b]="Param";brand;getSQL(){return new R1([this])}}function Z4($,...X){let G=[];if(X.length>0||$.length>0&&$[0]!=="")G.push(new e1($[0]));for(let[Y,q]of X.entries())G.push(q,new e1($[Y+1]));return new R1(G)}(($)=>{function X(){return new R1([])}$.empty=X;function G(H){return new R1(H)}$.fromList=G;function Y(H){return new R1([new e1(H)])}$.raw=Y;function q(H,U){let D=[];for(let[M,R]of H.entries()){if(M>0&&U!==void 0)D.push(U);D.push(R)}return new R1(D)}$.join=q;function J(H){return new P5(H)}$.identifier=J;function V(H){return new j5(H)}$.placeholder=V;function W(H,U){return new o9(H,U)}$.param=W})(Z4||(Z4={}));(($)=>{class X{constructor(G,Y){this.sql=G,this.fieldAlias=Y}static[b]="SQL.Aliased";isSelectionField=!1;getSQL(){return this.sql}clone(){return new X(this.sql,this.fieldAlias)}}$.Aliased=X})(R1||(R1={}));class j5{constructor($){this.name=$}static[b]="Placeholder";getSQL(){return new R1([this])}}var KA=Symbol.for("drizzle:IsDrizzleView");class Zq{static[b]="View";[B4];[KA]=!0;constructor({name:$,schema:X,selectedFields:G,query:Y}){this[B4]={name:$,originalName:$,schema:X,selectedFields:G,query:Y,isExisting:!Y,isAlias:!1}}getSQL(){return new R1([this])}}a0.prototype.getSQL=function(){return new R1([this])};F1.prototype.getSQL=function(){return new R1([this])};_5.prototype.getSQL=function(){return new R1([this])};function B0($,X){return{name:typeof $==="string"&&$.length>0?$:"",config:typeof $==="object"?$:X}}var n9=typeof TextDecoder>"u"?null:new TextDecoder;class s9{static[b]="SQLiteForeignKeyBuilder";reference;_onUpdate;_onDelete;constructor($,X){if(this.reference=()=>{let{name:G,columns:Y,foreignColumns:q}=$();return{name:G,columns:Y,foreignTable:q[0].table,foreignColumns:q}},X)this._onUpdate=X.onUpdate,this._onDelete=X.onDelete}onUpdate($){return this._onUpdate=$,this}onDelete($){return this._onDelete=$,this}build($){return new Nq($,this)}}class Nq{constructor($,X){this.table=$,this.reference=X.reference,this.onUpdate=X._onUpdate,this.onDelete=X._onDelete}static[b]="SQLiteForeignKey";reference;onUpdate;onDelete;getName(){let{name:$,columns:X,foreignColumns:G}=this.reference(),Y=X.map((V)=>V.name),q=G.map((V)=>V.name),J=[this.table[W0],...Y,G[0].table[W0],...q];return $??`${J.join("_")}_fk`}}function wq($,X){return`${$[W0]}_${X.join("_")}_unique`}class z1 extends p9{static[b]="SQLiteColumnBuilder";foreignKeyConfigs=[];references($,X={}){return this.foreignKeyConfigs.push({ref:$,actions:X}),this}unique($){return this.config.isUnique=!0,this.config.uniqueName=$,this}generatedAlwaysAs($,X){return this.config.generated={as:$,type:"always",mode:X?.mode??"virtual"},this}buildForeignKeys($,X){return this.foreignKeyConfigs.map(({ref:G,actions:Y})=>{return((q,J)=>{let V=new s9(()=>{let W=q();return{columns:[$],foreignColumns:[W]}});if(J.onUpdate)V.onUpdate(J.onUpdate);if(J.onDelete)V.onDelete(J.onDelete);return V.build(X)})(G,Y)})}}class L1 extends a0{constructor($,X){if(!X.uniqueName)X.uniqueName=wq($,[X.name]);super($,X);this.table=$}static[b]="SQLiteColumn"}class zq extends z1{static[b]="SQLiteBigIntBuilder";constructor($){super($,"bigint","SQLiteBigInt")}build($){return new Lq($,this.config)}}class Lq extends L1{static[b]="SQLiteBigInt";getSQLType(){return"blob"}mapFromDriverValue($){if(typeof Buffer<"u"&&Buffer.from){let X=Buffer.isBuffer($)?$:$ instanceof ArrayBuffer?Buffer.from($):$.buffer?Buffer.from($.buffer,$.byteOffset,$.byteLength):Buffer.from($);return BigInt(X.toString("utf8"))}return BigInt(n9.decode($))}mapToDriverValue($){return Buffer.from($.toString())}}class _q extends z1{static[b]="SQLiteBlobJsonBuilder";constructor($){super($,"json","SQLiteBlobJson")}build($){return new Pq($,this.config)}}class Pq extends L1{static[b]="SQLiteBlobJson";getSQLType(){return"blob"}mapFromDriverValue($){if(typeof Buffer<"u"&&Buffer.from){let X=Buffer.isBuffer($)?$:$ instanceof ArrayBuffer?Buffer.from($):$.buffer?Buffer.from($.buffer,$.byteOffset,$.byteLength):Buffer.from($);return JSON.parse(X.toString("utf8"))}return JSON.parse(n9.decode($))}mapToDriverValue($){return Buffer.from(JSON.stringify($))}}class jq extends z1{static[b]="SQLiteBlobBufferBuilder";constructor($){super($,"buffer","SQLiteBlobBuffer")}build($){return new Eq($,this.config)}}class Eq extends L1{static[b]="SQLiteBlobBuffer";mapFromDriverValue($){if(Buffer.isBuffer($))return $;return Buffer.from($)}getSQLType(){return"blob"}}function Cq($,X){let{name:G,config:Y}=B0($,X);if(Y?.mode==="json")return new _q(G);if(Y?.mode==="bigint")return new zq(G);return new jq(G)}class Tq extends z1{static[b]="SQLiteCustomColumnBuilder";constructor($,X,G){super($,"custom","SQLiteCustomColumn");this.config.fieldConfig=X,this.config.customTypeParams=G}build($){return new Sq($,this.config)}}class Sq extends L1{static[b]="SQLiteCustomColumn";sqlName;mapTo;mapFrom;constructor($,X){super($,X);this.sqlName=X.customTypeParams.dataType(X.fieldConfig),this.mapTo=X.customTypeParams.toDriver,this.mapFrom=X.customTypeParams.fromDriver}getSQLType(){return this.sqlName}mapFromDriverValue($){return typeof this.mapFrom==="function"?this.mapFrom($):$}mapToDriverValue($){return typeof this.mapTo==="function"?this.mapTo($):$}}function E5($){return(X,G)=>{let{name:Y,config:q}=B0(X,G);return new Tq(Y,q,$)}}class C5 extends z1{static[b]="SQLiteBaseIntegerBuilder";constructor($,X,G){super($,X,G);this.config.autoIncrement=!1}primaryKey($){if($?.autoIncrement)this.config.autoIncrement=!0;return this.config.hasDefault=!0,super.primaryKey()}}class T5 extends L1{static[b]="SQLiteBaseInteger";autoIncrement=this.config.autoIncrement;getSQLType(){return"integer"}}class Iq extends C5{static[b]="SQLiteIntegerBuilder";constructor($){super($,"number","SQLiteInteger")}build($){return new bq($,this.config)}}class bq extends T5{static[b]="SQLiteInteger"}class xq extends C5{static[b]="SQLiteTimestampBuilder";constructor($,X){super($,"date","SQLiteTimestamp");this.config.mode=X}defaultNow(){return this.default(Z4`(cast((julianday('now') - 2440587.5)*86400000 as integer))`)}build($){return new vq($,this.config)}}class vq extends T5{static[b]="SQLiteTimestamp";mode=this.config.mode;mapFromDriverValue($){if(this.config.mode==="timestamp")return new Date($*1000);return new Date($)}mapToDriverValue($){let X=$.getTime();if(this.config.mode==="timestamp")return Math.floor(X/1000);return X}}class kq extends C5{static[b]="SQLiteBooleanBuilder";constructor($,X){super($,"boolean","SQLiteBoolean");this.config.mode=X}build($){return new hq($,this.config)}}class hq extends T5{static[b]="SQLiteBoolean";mode=this.config.mode;mapFromDriverValue($){return Number($)===1}mapToDriverValue($){return $?1:0}}function g1($,X){let{name:G,config:Y}=B0($,X);if(Y?.mode==="timestamp"||Y?.mode==="timestamp_ms")return new xq(G,Y.mode);if(Y?.mode==="boolean")return new kq(G,Y.mode);return new Iq(G)}class yq extends z1{static[b]="SQLiteNumericBuilder";constructor($){super($,"string","SQLiteNumeric")}build($){return new gq($,this.config)}}class gq extends L1{static[b]="SQLiteNumeric";mapFromDriverValue($){if(typeof $==="string")return $;return String($)}getSQLType(){return"numeric"}}class fq extends z1{static[b]="SQLiteNumericNumberBuilder";constructor($){super($,"number","SQLiteNumericNumber")}build($){return new mq($,this.config)}}class mq extends L1{static[b]="SQLiteNumericNumber";mapFromDriverValue($){if(typeof $==="number")return $;return Number($)}mapToDriverValue=String;getSQLType(){return"numeric"}}class uq extends z1{static[b]="SQLiteNumericBigIntBuilder";constructor($){super($,"bigint","SQLiteNumericBigInt")}build($){return new pq($,this.config)}}class pq extends L1{static[b]="SQLiteNumericBigInt";mapFromDriverValue=BigInt;mapToDriverValue=String;getSQLType(){return"numeric"}}function lq($,X){let{name:G,config:Y}=B0($,X),q=Y?.mode;return q==="number"?new fq(G):q==="bigint"?new uq(G):new yq(G)}class dq extends z1{static[b]="SQLiteRealBuilder";constructor($){super($,"number","SQLiteReal")}build($){return new cq($,this.config)}}class cq extends L1{static[b]="SQLiteReal";getSQLType(){return"real"}}function rq($){return new dq($??"")}class iq extends z1{static[b]="SQLiteTextBuilder";constructor($,X){super($,"string","SQLiteText");this.config.enumValues=X.enum,this.config.length=X.length}build($){return new oq($,this.config)}}class oq extends L1{static[b]="SQLiteText";enumValues=this.config.enumValues;length=this.config.length;constructor($,X){super($,X)}getSQLType(){return`text${this.config.length?`(${this.config.length})`:""}`}}class nq extends z1{static[b]="SQLiteTextJsonBuilder";constructor($){super($,"json","SQLiteTextJson")}build($){return new sq($,this.config)}}class sq extends L1{static[b]="SQLiteTextJson";getSQLType(){return"text"}mapFromDriverValue($){return JSON.parse($)}mapToDriverValue($){return JSON.stringify($)}}function i($,X={}){let{name:G,config:Y}=B0($,X);if(Y.mode==="json")return new nq(G);return new iq(G,Y)}function aq(){return{blob:Cq,customType:E5,integer:g1,numeric:lq,real:rq,text:i}}var a9=Symbol.for("drizzle:SQLiteInlineForeignKeys");class M6 extends F1{static[b]="SQLiteTable";static Symbol=Object.assign({},F1.Symbol,{InlineForeignKeys:a9});[F1.Symbol.Columns];[a9]=[];[F1.Symbol.ExtraConfigBuilder]=void 0}function FA($,X,G,Y,q=$){let J=new M6($,Y,q),V=typeof X==="function"?X(aq()):X,W=Object.fromEntries(Object.entries(V).map(([U,D])=>{let M=D;M.setName(U);let R=M.build(J);return J[a9].push(...M.buildForeignKeys(R,J)),[U,R]})),H=Object.assign(J,W);if(H[F1.Symbol.Columns]=W,H[F1.Symbol.ExtraConfigColumns]=W,G)H[M6.Symbol.ExtraConfigBuilder]=G;return H}var Z0=($,X,G)=>{return FA($,X,G)};class tq{constructor($,X){this.name=$,this.unique=X}static[b]="SQLiteIndexBuilderOn";on(...$){return new eq(this.name,$,this.unique)}}class eq{static[b]="SQLiteIndexBuilder";config;constructor($,X,G){this.config={name:$,columns:X,unique:G,where:void 0}}where($){return this.config.where=$,this}build($){return new $J(this.config,$)}}class $J{static[b]="SQLiteIndex";config;constructor($,X){this.config={...$,table:X}}}function H0($){return new tq($,!1)}function S5(...$){if($[0].columns)return new t9($[0].columns,$[0].name);return new t9($)}class t9{static[b]="SQLitePrimaryKeyBuilder";columns;name;constructor($,X){this.columns=$,this.name=X}build($){return new XJ($,this.columns,this.name)}}class XJ{constructor($,X,G){this.table=$,this.columns=X,this.name=G}static[b]="SQLitePrimaryKey";columns;name;getName(){return this.name??`${this.table[M6.Symbol.Name]}_${this.columns.map(($)=>$.name).join("_")}_pk`}}var e9=Z0("job_queue",{id:i("id").primaryKey().$defaultFn(()=>I0()),type:i("type").notNull(),data:i("data").notNull(),result:i("result",{mode:"json"}),source:i("source"),metadata:i("metadata",{mode:"json"}).$type().notNull(),status:i("status",{enum:["pending","processing","completed","failed"]}).notNull().default("pending"),priority:g1("priority").notNull().default(0),retryCount:g1("retryCount").notNull().default(0),maxRetries:g1("maxRetries").notNull().default(3),lastError:i("lastError"),createdAt:g1("createdAt").notNull().$defaultFn(()=>Date.now()),scheduledFor:g1("scheduledFor").notNull().$defaultFn(()=>Date.now()),startedAt:g1("startedAt"),completedAt:g1("completedAt")},($)=>({queueReadyIdx:H0("idx_job_queue_ready").on($.status,$.priority,$.scheduledFor),jobTypeIdx:H0("idx_job_queue_type").on($.type,$.status),jobSourceIdx:H0("idx_job_queue_source").on($.source)}));var GJ=Q.enum(["file_operations","content_operations","data_processing","batch_processing"]),YJ=Q.object({pluginId:Q.string().optional(),progressToken:Q.union([Q.string(),Q.number()]).optional(),operationType:GJ,operationTarget:Q.string().optional(),interfaceType:Q.string().optional(),channelId:Q.string().optional()}),K6=YJ.extend({rootJobId:Q.string()}),px=Q.enum(["none","skip","replace","coalesce"]);var $7=Q.enum(["pending","processing","completed","failed"]),qJ=Q.enum(["completed","failed"]);var RA=Q.object({id:Q.string(),type:Q.string(),status:$7,data:Q.unknown(),result:Q.unknown().optional(),lastError:Q.string().optional().nullable(),attempts:Q.number(),maxRetries:Q.number(),priority:Q.number(),createdAt:Q.date(),updatedAt:Q.date(),processedAt:Q.date().optional().nullable(),completedAt:Q.date().optional().nullable(),failedAt:Q.date().optional().nullable()}),OA=Q.object({jobId:Q.string(),type:Q.string(),status:qJ,result:Q.unknown().optional(),error:Q.string().optional()}),I5=Q.object({id:Q.string(),type:Q.enum(["job","batch"]),status:$7,message:Q.string().optional(),progress:Q.object({current:Q.number(),total:Q.number(),percentage:Q.number()}).optional(),aggregationKey:Q.string().optional(),batchDetails:Q.object({totalOperations:Q.number(),completedOperations:Q.number(),failedOperations:Q.number(),currentOperation:Q.string().optional(),errors:Q.array(Q.string()).optional()}).optional(),jobDetails:Q.object({jobType:Q.string(),priority:Q.number(),retryCount:Q.number()}).optional(),metadata:K6});import{createClient as ox}from"@libsql/client";var Fv=Q.object({success:Q.literal(!1),error:Q.string().optional()});var AA=Q.object({id:Q.string(),type:Q.string(),data:Q.string(),status:Q.enum(["pending","processing","completed","failed"]),source:Q.string().nullable(),priority:Q.number(),retryCount:Q.number(),maxRetries:Q.number(),lastError:Q.string().nullable(),createdAt:Q.number(),scheduledFor:Q.number(),startedAt:Q.number().nullable(),completedAt:Q.number().nullable(),metadata:K6,result:Q.unknown().nullable().optional()});function X7($,X,G){return async(Y,q,J,V)=>{let{metadata:W,...H}=V??{},U={source:X,...V?.rootJobId&&{rootJobId:V.rootJobId},...H,metadata:{operationType:"data_processing",pluginId:X,...J&&{interfaceType:J.interfaceType,channelId:J.channelId},...W}},D=G&&!Y.includes(":")?`${X}:${Y}`:Y;return $.enqueue(D,q,U)}}function G7($,X){return async(G,Y)=>{let q=I0(),J=G.map((W)=>({...W,type:W.type.includes(":")?W.type:`${X}:${W.type}`})),V={...Y,source:X,rootJobId:q,metadata:{...Y?.metadata,operationType:"batch_processing",pluginId:X}};return await $.enqueueBatch(J,V,q,X),q}}function Y7($,X){return(G,Y)=>{let q=G.includes(":")?G:`${X}:${G}`;$.registerHandler(q,Y,X)}}function T2($,X,G){let Y=$.getMessageBus(),q=$.getEntityService(),J=$.getJobQueueService(),V=$.getLogger().child(X),W=$.getDomain(),H=async(U,D,M)=>{return Y.send(U,D,X,void 0,void 0,M?.broadcast)};return{pluginId:X,logger:V,entityService:q,identity:{get:()=>$.getIdentity(),getProfile:()=>$.getProfile(),getAppInfo:()=>$.getAppInfo()},appInfo:()=>$.getAppInfo(),domain:W,siteUrl:W?`https://${W}`:void 0,previewUrl:W?`https://${k9(W)}`:void 0,entityDisplay:G?.entityDisplay,messaging:{send:H,subscribe:(U,D)=>{if(Wq(U)){let M=U,R=D,O=async(N)=>{let z=M.schema.safeParse(N.payload);if(!z.success)return V.warn(`Invalid payload for channel ${M.name}`,{error:z.error.message}),{noop:!0};let{payload:P,..._}=N;return R(z.data,_)};return Y.subscribe(M.name,O)}return Y.subscribe(U,D)}},jobs:{...$.jobs,enqueue:X7(J,X,!0),enqueueBatch:G7($.jobs,X),registerHandler:Y7(J,X)},conversations:{get:async(U)=>{return $.getConversationService().getConversation(U)},search:async(U)=>{return $.getConversationService().searchConversations(U)},getMessages:async(U,D)=>{return $.getConversationService().getMessages(U,D)}},dataDir:$.getDataDir(),eval:{registerHandler:(U,D)=>{$.registerEvalHandler(X,U,D)}},insights:{register:(U,D)=>{$.getInsightsRegistry().register(U,D)}},endpoints:{register:({label:U,url:D,priority:M=100})=>{$.registerEndpoint({label:U,url:D,pluginId:X,priority:M})}}}}import{createClient as nv}from"@libsql/client";var x5=Z0("entities",{id:i("id").notNull(),entityType:i("entityType").notNull(),content:i("content").notNull(),contentHash:i("contentHash").notNull(),metadata:i("metadata",{mode:"json"}).$type().notNull().default(Z4`'{}'`),created:g1("created").notNull().$defaultFn(()=>Date.now()),updated:g1("updated").notNull().$defaultFn(()=>Date.now())},($)=>{return{pk:S5({columns:[$.id,$.entityType]})}});import{createClient as qk}from"@libsql/client";var VJ=E5({dataType(){return"F32_BLOB(1536)"},toDriver($){return Buffer.from($.buffer)},fromDriver($){return new Float32Array($.buffer,$.byteOffset,$.byteLength/4)}});var v5=Z0("embeddings",{entityId:i("entity_id").notNull(),entityType:i("entity_type").notNull(),embedding:VJ("embedding").notNull(),contentHash:i("content_hash").notNull()},($)=>{return{pk:S5({columns:[$.entityId,$.entityType]})}});var Uk=Q.object({id:Q.string().min(1,"Entity ID is required"),entityType:Q.string().min(1,"Entity type is required"),contentHash:Q.string().min(1,"Content hash is required"),operation:Q.enum(["create","update"])});var Kk=Q.object({limit:Q.number().int().positive().optional().default(20),offset:Q.number().int().min(0).optional().default(0),types:Q.array(Q.string()).optional().default([]),excludeTypes:Q.array(Q.string()).optional().default([]),weight:Q.record(Q.string(),Q.number()).optional()});var BA=Q.object({field:Q.string(),direction:Q.enum(["asc","desc"]),nullsFirst:Q.boolean().optional()}),Nk=Q.object({limit:Q.number().int().positive().optional(),offset:Q.number().int().min(0).optional().default(0),sortFields:Q.array(BA).optional(),filter:Q.object({metadata:Q.record(Q.string(),Q.unknown()).optional()}).optional(),publishedOnly:Q.boolean().optional()});var k5=Z6(R8(),1);function N4($,X){if(Object.keys(X).length===0)return $;let G=Object.fromEntries(Object.entries(X).filter(([,Y])=>Y!==void 0));return k5.default.stringify($,G)}function q7($){if($ instanceof Date)return $.toISOString();if(Array.isArray($))return $.map(q7);if($!==null&&typeof $==="object"){let X={};for(let[G,Y]of Object.entries($))X[G]=q7(Y);return X}return $}function $0($,X){let{content:G,data:Y}=k5.default($),q=q7(Y);return{content:G.trim(),metadata:X.parse(q)}}function J7($){if(Object.keys($).length===0)return"";let G=k5.default.stringify("",$).match(/^---\n[\s\S]*?\n---/);return G?G[0]:""}var EA={generateBodyTemplate:()=>""};class b0{entityType;schema;frontmatterSchema;isSingleton;hasBody;supportsCoverImage;fmSchema;bodyFormatter;constructor($){if(this.entityType=$.entityType,this.schema=$.schema,this.frontmatterSchema=$.frontmatterSchema,this.fmSchema=$.frontmatterSchema,this.bodyFormatter=$.bodyFormatter??EA,$.isSingleton!==void 0)this.isSingleton=$.isSingleton;if($.hasBody!==void 0)this.hasBody=$.hasBody;if($.supportsCoverImage!==void 0)this.supportsCoverImage=$.supportsCoverImage}toMarkdown($){let X=this.renderBody($),Y={...this.readExistingFrontmatter($.content)},q=Object.keys(this.frontmatterSchema.shape);for(let[J,V]of Object.entries($.metadata))if(q.includes(J))Y[J]=V;return this.buildMarkdown(X,Y)}renderBody($){return this.extractBody($.content)}readExistingFrontmatter($){try{return $0($,Q.record(Q.unknown())).metadata}catch{return{}}}extractMetadata($){return $.metadata}parseFrontMatter($,X){return $0($,X).metadata}getBodyTemplate(){return this.bodyFormatter.generateBodyTemplate()}generateFrontMatter($){let X=$.metadata;return J7(X)}extractBody($){try{return $0($,Q.record(Q.unknown())).content}catch{return $}}parseFrontmatter($){return $0($,this.fmSchema).metadata}buildMarkdown($,X){return N4($,X)}}var S2=Q.object({id:Q.string(),entityType:Q.string(),content:Q.string(),created:Q.string().datetime(),updated:Q.string().datetime(),metadata:Q.record(Q.string(),Q.unknown()),contentHash:Q.string()});class w4{cache=null;cacheParseError=null;logger;entityService;entityType;defaultBody;constructor($,X,G,Y){this.entityService=$,this.logger=X.child(this.constructor.name),this.entityType=G,this.defaultBody=Y}async initialize(){if(await this.load(),!this.cache){if(await this.load(),this.cache)return;this.logger.info(`No ${this.entityType} found, creating default ${this.entityType}`);try{let $=this.createContent(this.defaultBody);await this.entityService.createEntity({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(this.entityType,this.entityType);if(this.cache=$,this.cacheParseError=null,$)try{this.parseBody($.content),this.logger.debug(`${this.entityType} loaded`)}catch(X){this.cacheParseError=X instanceof Error?X:Error(String(X)),this.logger.error(`Failed to parse ${this.entityType} \u2014 using default. Fix the entity content to clear this error.`,{error:this.cacheParseError.message})}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}}}var WJ=Q.object({currentPage:Q.number(),totalPages:Q.number(),totalItems:Q.number(),pageSize:Q.number(),hasNextPage:Q.boolean(),hasPrevPage:Q.boolean()});function SA($){return $.replace(/:/g,"-")}function IA($){return $.split(/[:.-]/).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}var V7=new Map;async function F6($,X,G){let Y=V7.get(X);if(Y!==void 0)return Y;let q=SA(X),J;try{J=await $.getEntity("prompt",q)}catch{return G}if(J?.content){let V=$0(J.content,Q.record(Q.unknown())).content;return V7.set(X,V),V}try{let V=IA(X),W=N4(G,{title:V,target:X});await $.createEntity({id:q,entityType:"prompt",content:W,metadata:{title:V,target:X,slug:q}})}catch{}return V7.set(X,G),G}function W7($,X,G){let Y=T2($,X,G),q=$.getEntityService(),J=$.getEntityRegistry(),V=$.getRenderService(),W=$.getDataSourceRegistry(),H=$.getContentService();return{...Y,entityService:q,entities:{register:(U,D,M,R)=>{J.registerEntityType(U,D,M,R)},getAdapter:(U)=>{try{return J.getAdapter(U)}catch{return}},extendFrontmatterSchema:(U,D)=>{J.extendFrontmatterSchema(U,D)},getEffectiveFrontmatterSchema:(U)=>{return J.getEffectiveFrontmatterSchema(U)},registerCreateInterceptor:(U,D)=>{J.registerCreateInterceptor(U,D)},update:async(U)=>{return q.updateEntity(U)},registerDataSource:(U)=>{W.register(U)}},templates:{register:(U,D)=>{$.registerTemplates(U,D??X)},format:(U,D)=>{return H.formatContent(U,D,{pluginId:X})},parse:(U,D)=>{return H.parseContent(U,D,X)},resolve:async(U,D)=>{return await H.resolveContent(U,D,X)},getCapabilities:(U)=>{let D=U.includes(":")?U:`${X}:${U}`,M=$.getTemplate(D);if(!M)return null;let R=U6.getCapabilities(M);return{canGenerate:R.canGenerate,canFetch:R.canFetch,canRender:R.canRender,isStaticOnly:R.isStaticOnly}}},views:{get:(U)=>{return V.get(U)??void 0},list:()=>{return V.list()},hasRenderer:(U)=>{return V.hasRenderer(U,"web")},getRenderer:(U)=>{return V.getRenderer(U,"web")},validate:(U,D)=>{return V.validate(U,D)}},prompts:{resolve:(U,D)=>{return F6(q,U,D)}},registerInstructions:(U)=>{$.registerInstructions(X,U)}}}class H7 extends C2{type="service";getApiRoutes(){return[]}getWebRoutes(){return[]}async register($,X){let G=W7($,this.id,X);this.context=G,this.setupMessageHandlers(G),await this.onRegister(G);let Y=await this.getInstructions();return{tools:await this.getTools(),resources:await this.getResources(),...Y&&{instructions:Y}}}get entityService(){return this.getContext().entityService}registerEntityType($,X,G,Y){this.getContext().entities.register($,X,G,Y)}async enqueueJob($,X,G,Y){return this.getContext().jobs.enqueue($,X,G,Y)}async enqueueBatch($,X){return this.getContext().jobs.enqueueBatch($,X)}async registerEntityTypes($){}async registerJobHandlers($){}async onRegister($){await this.registerEntityTypes($),await this.registerJobHandlers($)}}function U7($,X,G){let Y=T2($,X,G),q=$.getEntityService(),J=$.getEntityRegistry(),V=$.getDataSourceRegistry();return{...Y,entityService:q,entities:{register:(W,H,U,D)=>{J.registerEntityType(W,H,U,D)},getAdapter:(W)=>{try{return J.getAdapter(W)}catch{return}},extendFrontmatterSchema:(W,H)=>{J.extendFrontmatterSchema(W,H)},getEffectiveFrontmatterSchema:(W)=>{return J.getEffectiveFrontmatterSchema(W)},registerCreateInterceptor:(W,H)=>{J.registerCreateInterceptor(W,H)},update:async(W)=>{return q.updateEntity(W)},registerDataSource:(W)=>{V.register(W)}},ai:{query:(W,H)=>$.query(W,H),generate:async(W)=>{return $.generateContent(W)},generateObject:async(W,H)=>{return $.generateObject(W,H)},generateImage:async(W,H)=>{return $.generateImage(W,H)},canGenerateImages:()=>{return $.canGenerateImages()}},prompts:{resolve:(W,H)=>{return F6(q,W,H)}}}}var bA=Q.object({});class R6 extends C2{type="entity";constructor($,X,G={},Y=bA){super($,X,G,Y)}async register($,X){let G=U7($,this.id,X);if(this.context=G,this.setupMessageHandlers(G),G.entities.register(this.entityType,this.schema,this.adapter,this.getEntityTypeConfig()),this.interceptCreate!==R6.prototype.interceptCreate)G.entities.registerCreateInterceptor(this.entityType,(W,H)=>this.interceptCreate(W,H,G));let Y=this.createGenerationHandler(G);if(Y)G.jobs.registerHandler(`${this.entityType}:generation`,Y);if(this.hasDeriveHandler()){let W=this.createExtractHandler(G);G.jobs.registerHandler(`${this.entityType}:extract`,W)}let q=this.getTemplates();if(q&&Object.keys(q).length>0)$.registerTemplates(q,this.id);let J=this.getDataSources();for(let W of J)G.entities.registerDataSource(W);await this.onRegister(this.context);let V=await this.getInstructions();return{tools:[],resources:[],...V&&{instructions:V}}}async interceptCreate($,X,G){return{kind:"continue",input:$}}createGenerationHandler($){return null}getTemplates(){return null}getDataSources(){return[]}getEntityTypeConfig(){return}createExtractHandler($){let X=Q.object({sourceId:Q.string().optional(),sourceType:Q.string().optional(),mode:Q.enum(["derive","rebuild"]).optional()});return{process:async(G)=>{if(G.sourceId&&G.sourceType){let Y=await $.entityService.getEntity(G.sourceType,G.sourceId);if(Y)return await this.derive(Y,"extract",$),{extracted:1};return{extracted:0}}if(G.mode==="rebuild")await this.rebuildAll($);else await this.deriveAll($);return{extracted:0}},validateAndParse(G){let Y=X.safeParse(G??{});return Y.success?Y.data:null}}}async derive($,X,G){}async deriveAll($){}async rebuildAll($){await this.deriveAll($)}hasDeriveHandler(){return this.derive!==R6.prototype.derive}}function D7($,X,G){let Y=T2($,X,G),q=$.getMCPService(),J=$.getPermissionService(),V=$.getAgentService();return{...Y,mcpTransport:q,agentService:V,permissions:{getUserLevel:(W,H)=>{return J.determineUserLevel(W,H)}},daemons:{register:(W,H)=>{let U=`${X}:${W}`;$.registerDaemon(U,H,X),Y.logger.debug(`Registered daemon: ${U}`)}},conversations:{...Y.conversations,start:async(W,H,U,D)=>{return $.getConversationService().startConversation(W,H,U,D)},addMessage:async(W,H,U,D)=>{await $.getConversationService().addMessage(W,H,U,D)}},tools:{listForPermissionLevel:(W)=>{return $.listToolsForPermissionLevel(W)}},apiRoutes:{getRoutes:()=>{return $.getPluginApiRoutes()},getMessageBus:()=>{return $.getMessageBus()}},webRoutes:{getRoutes:()=>{return $.getPluginWebRoutes()}},plugins:{has:(W)=>$.hasPlugin(W)}}}var xA=3600000;class O6 extends C2{type="interface";daemon;jobTrackingEntries=new Map;jobTrackingTtlMs=xA;async register($,X){let G=D7($,this.id,X);if(this.context=G,this.initializeDaemon(),this.daemon)await this.registerDaemon(G);this.setupMessageHandlers(G),await this.onRegister(G);let Y=await this.getInstructions();return{tools:await this.getTools(),resources:await this.getResources(),...Y&&{instructions:Y}}}async onRegister($){}async registerDaemon($){if(!this.daemon)return;$.daemons.register(this.id,this.daemon),$.logger.debug(`Registered daemon for interface: ${this.id}`)}createDaemon(){return}requiresDaemonStartup(){return!1}getWebRoutes(){return[]}initializeDaemon(){let $=this.createDaemon();if($)this.daemon=$}async handleProgressEvent($,X){}cleanupExpiredEntries(){let $=Date.now(),X=[];for(let[G,Y]of this.jobTrackingEntries)if($-Y.createdAt>this.jobTrackingTtlMs)X.push(G);for(let G of X)this.jobTrackingEntries.delete(G)}ownsJob($,X){return this.jobTrackingEntries.has($)||X!==void 0&&this.jobTrackingEntries.has(X)}getJobTracking($,X){let G=this.jobTrackingEntries.get($);if(G)return G.info;if(X){let Y=this.jobTrackingEntries.get(X);if(Y)return Y.info}return}setJobTracking($,X){this.cleanupExpiredEntries(),this.jobTrackingEntries.set($,{info:X,createdAt:Date.now()})}removeJobTracking($){this.jobTrackingEntries.delete($)}async createJobWithTracking($,X,G,Y){let J=await this.getContext().jobs.enqueue($,X,null,Y);return this.setJobTracking(J,G),J}async createBatchWithTracking($,X,G){let q=await this.getContext().jobs.enqueueBatch($,G);return this.setJobTracking(q,X),q}}var HJ=Q.object({id:Q.string().optional(),limit:Q.number().optional(),page:Q.number().optional(),pageSize:Q.number().optional(),baseUrl:Q.string().optional()}).passthrough(),vA=Q.object({entityType:Q.string().optional(),query:HJ.optional()}).passthrough();import{createClient as Ay}from"@libsql/client";var h5=Z0("conversations",{id:i("id").primaryKey(),sessionId:i("session_id").notNull(),interfaceType:i("interface_type").notNull(),channelId:i("channel_id").notNull(),started:i("started").notNull(),lastActive:i("last_active").notNull(),metadata:i("metadata"),created:i("created").notNull(),updated:i("updated").notNull()},($)=>({sessionIdx:H0("idx_conversations_session").on($.sessionId),channelIdx:H0("idx_conversations_channel").on($.channelId),interfaceSessionIdx:H0("idx_conversations_interface_session").on($.interfaceType,$.sessionId),interfaceChannelIdx:H0("idx_conversations_interface_channel").on($.interfaceType,$.channelId)})),UJ=Z0("messages",{id:i("id").primaryKey(),conversationId:i("conversation_id").notNull().references(()=>h5.id,{onDelete:"cascade"}),role:i("role").notNull(),content:i("content").notNull(),timestamp:i("timestamp").notNull(),metadata:i("metadata")},($)=>({conversationIdx:H0("idx_messages_conversation").on($.conversationId),timestampIdx:H0("idx_messages_timestamp").on($.timestamp)})),DJ=Z0("summary_tracking",{conversationId:i("conversation_id").primaryKey().references(()=>h5.id,{onDelete:"cascade"}),lastSummarizedAt:i("last_summarized_at"),lastMessageId:i("last_message_id"),messagesSinceSummary:g1("messages_since_summary").default(0),updated:i("updated").notNull()});var kA=Q.object({id:Q.string(),conversationId:Q.string(),role:Q.string(),content:Q.string(),timestamp:Q.string(),metadata:Q.string().nullable()}),QJ=Q.object({conversationId:Q.string(),messageCount:Q.number(),messages:Q.array(kA),windowStart:Q.number(),windowEnd:Q.number(),windowSize:Q.number(),timestamp:Q.string()});function Q7($,X){$.messaging.subscribe("job-progress",async(G)=>{try{let Y=I5.safeParse(G.payload);if(!Y.success)return X.onInvalidSchema(),{success:!1};let q=Y.data;return await X.onProgress(q,q.metadata),{success:!0}}catch(Y){return X.onError(Y),{success:!1}}})}function M7($){let X=$.status==="completed"?"\u2705":"\u274C",G=$.status==="completed"?"completed":"failed",Y=$.metadata.operationType.replace(/_/g," "),q=$.metadata.operationTarget?`: ${$.metadata.operationTarget}`:"",J=`${X} **${Y}${q}** ${G}`;if($.message)J+=`
|
|
170
170
|
${$.message}`;return J}function y5($){let X=$.metadata.operationType.replace(/_/g," "),G=$.metadata.operationTarget?`: ${$.metadata.operationTarget}`:"",Y=`\uD83D\uDD04 **${X}${G}**`;if($.progress&&$.progress.total>0)Y+=` ${$.progress.current}/${$.progress.total} (${$.progress.percentage}%)`;if($.message)Y+=`
|
|
171
171
|
${$.message}`;return Y}var K7=Q.object({captureUrls:Q.boolean().default(!1),blockedUrlDomains:Q.array(Q.string()).default(["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"])}),MJ=500;class t0 extends O6{static MAX_FILE_UPLOAD_SIZE=1e5;static TEXT_FILE_EXTENSIONS=[".md",".txt",".markdown"];static TEXT_MIME_TYPES=["text/plain","text/markdown","text/x-markdown"];isUploadableTextFile($,X){if(X&&t0.TEXT_MIME_TYPES.some((G)=>X.startsWith(G)))return!0;return t0.TEXT_FILE_EXTENSIONS.some((G)=>$.toLowerCase().endsWith(G))}isFileSizeAllowed($){return $<=t0.MAX_FILE_UPLOAD_SIZE}formatFileUploadMessage($,X){return`User uploaded a file "${$}":
|
|
172
172
|
|
|
@@ -174,5 +174,5 @@ ${X}`}static URL_PATTERN=/https?:\/\/[^\s<>"{}|\\^`[\]]+?(?=[,;:\s]|$)/gi;extrac
|
|
|
174
174
|
|
|
175
175
|
_Reply with **yes** to confirm or **no/cancel** to abort._`}var gA=Q.object({id:Q.string(),template:Q.string(),content:Q.unknown().optional(),dataQuery:Q.object({entityType:Q.string().optional(),template:Q.string().optional(),query:Q.object({id:Q.string().optional(),limit:Q.number().optional(),offset:Q.number().optional()}).passthrough().optional()}).passthrough().optional(),order:Q.number().optional()}),KJ=["primary","secondary"],fA=Q.object({show:Q.boolean().default(!1),label:Q.string().optional(),slot:Q.enum(KJ).default("primary"),priority:Q.number().min(0).max(100).default(50)}).optional(),FJ=Q.object({id:Q.string(),path:Q.string(),title:Q.string().default(""),description:Q.string().default(""),sections:Q.array(gA).default([]),layout:Q.string().default("default"),fullscreen:Q.boolean().optional(),pluginId:Q.string().optional(),sourceEntityType:Q.string().optional(),external:Q.boolean().optional(),navigation:fA}),mA=Q.object({routes:Q.array(FJ),pluginId:Q.string()}),uA=Q.object({paths:Q.array(Q.string()).optional(),pluginId:Q.string().optional()}),pA=Q.object({pluginId:Q.string().optional()}),lA=Q.object({path:Q.string()});var RJ=Q.object({enabled:Q.boolean().describe("Whether the plugin is enabled"),debug:Q.boolean().describe("Enable debug logging for this plugin")});var O7=S2.extend({id:Q.literal("brain-character"),entityType:Q.literal("brain-character")}),g5=Q.object({name:Q.string().describe("The brain's friendly display name"),role:Q.string().describe("The brain's primary role"),purpose:Q.string().describe("The brain's purpose and goals"),values:Q.array(Q.string()).describe("Core values that guide behavior")});class f5 extends b0{constructor(){super({entityType:"brain-character",schema:O7,frontmatterSchema:g5,isSingleton:!0,hasBody:!1})}createCharacterContent($){return this.buildMarkdown("",$)}parseCharacterBody($){return this.parseFrontmatter($)}toMarkdown($){let X=this.parseFrontmatter($.content);return this.buildMarkdown("",X)}fromMarkdown($){return{content:$,entityType:"brain-character"}}extractMetadata($){let X=this.parseFrontmatter($.content);return{role:X.role,values:X.values}}generateFrontMatter($){let X=this.parseFrontmatter($.content);return this.buildMarkdown("",X)}}class e0 extends w4{static instance=null;adapter=new f5;static getDefaultCharacter(){return{name:"Brain",role:"Knowledge assistant",purpose:"Help organize, understand, and retrieve information from your knowledge base",values:["clarity","accuracy","helpfulness"]}}static getInstance($,X,G){return e0.instance??=new e0($,X,G),e0.instance}static resetInstance(){e0.instance=null}static createFresh($,X,G){return new e0($,X,G)}constructor($,X,G){super($,X,"brain-character",G??e0.getDefaultCharacter())}parseBody($){return this.adapter.parseCharacterBody($)}createContent($){return this.adapter.createCharacterContent($)}getCharacter(){return this.get()}getCharacterContent(){return this.getContent()}}var OJ=Q.object({tagline:Q.string().optional().describe("Short, punchy one-liner for homepage"),intro:Q.string().optional().describe("Optional longer introduction for homepage"),story:Q.string().optional().describe("Extended bio/narrative (multi-paragraph markdown)")});var A7=S2.extend({id:Q.literal("anchor-profile"),entityType:Q.literal("anchor-profile")}),z4=Q.object({name:Q.string().describe("Name (person or organization)"),kind:Q.enum(["professional","team","collective"]).describe("Type of anchor: professional (individual), team, or collective"),organization:Q.string().optional().describe("Organization the anchor belongs to"),description:Q.string().optional().describe("Short description or biography"),avatar:Q.string().optional().describe("URL or asset path to avatar/logo"),website:Q.string().optional().describe("Primary website URL"),email:Q.string().optional().describe("Contact email"),socialLinks:Q.array(Q.object({platform:Q.enum(["github","instagram","linkedin","email","website"]).describe("Social media platform"),url:Q.string().describe("Profile or contact URL"),label:Q.string().optional().describe("Optional display label")})).optional().describe("Social media and contact links")});class m5 extends b0{constructor(){super({entityType:"anchor-profile",schema:A7,frontmatterSchema:z4,isSingleton:!0,hasBody:!0})}createProfileContent($){let X=z4.parse($);return this.buildMarkdown("",X)}parseProfileBody($,X){if(X){let{metadata:G,content:Y}=$0($,X);return Y?{...G,story:Y}:G}return this.parseFrontmatter($)}fromMarkdown($){return{content:$,entityType:"anchor-profile"}}extractMetadata($){let X=this.parseFrontmatter($.content);return{name:X.name,email:X.email,website:X.website}}generateFrontMatter($){let X=this.parseFrontmatter($.content);return this.buildMarkdown("",X)}}class x0 extends w4{static instance=null;adapter=new m5;static getDefaultProfile(){return{name:"Unknown",kind:"professional"}}static getInstance($,X,G){return x0.instance??=new x0($,X,G),x0.instance}static resetInstance(){x0.instance=null}static createFresh($,X,G){return new x0($,X,G)}constructor($,X,G){super($,X,"anchor-profile",G??x0.getDefaultProfile())}parseBody($){return this.adapter.parseProfileBody($)}createContent($){return this.adapter.createProfileContent($)}getProfile(){return this.get()}getProfileContent(){return this.getContent()}}var AJ=Q.object({id:Q.string(),description:Q.string(),name:Q.string().optional(),tags:Q.array(Q.string()).optional().default([])}).passthrough();var cA=Q.object({uri:Q.string(),params:Q.record(Q.unknown()).optional()}).passthrough(),rA=Q.object({name:Q.string(),url:Q.string(),description:Q.string().optional(),skills:Q.array(AJ).optional().default([]),capabilities:Q.object({extensions:Q.array(cA).optional().default([])}).passthrough().optional()}).passthrough();var iA=Q.object({name:Q.string(),description:Q.string(),tags:Q.array(Q.string()),examples:Q.array(Q.string())});import{EventEmitter as BJ}from"events";class U0 extends Error{pluginId;constructor($,X){super(`Plugin ${$}: ${X}`);this.name="PluginError",this.pluginId=$}}class B7{plugins;events;daemonRegistry;logger;constructor($,X,G,Y){this.plugins=$;this.events=X;this.daemonRegistry=G;this.logger=Y.child("PluginLifecycle")}async initializePlugin($,X,G){let Y=this.plugins.get($);if(!Y)throw new U0($,"Registration failed: Plugin is not registered");let q=Y.plugin;this.logger.debug(`Initializing plugin: ${$}`),this.events.emit("plugin:before_initialize",$,q);try{let J=await q.register(X,G);return Y.status="initialized",this.logger.debug(`Initialized plugin: ${$}`),this.events.emit("plugin:initialized",$,q),J}catch(J){let V=x1(J);throw this.logger.error(`Error initializing plugin ${$}: ${V}`),Y.status="error",Y.error=H6(J),this.events.emit("plugin:error",$,J),J}}async readyPlugin($){let X=this.plugins.get($);if(!X)throw new U0($,"Ready failed: Plugin is not registered");if(X.status!=="initialized"){this.logger.debug(`Skipping ready hook for non-initialized plugin: ${$}`);return}try{await X.plugin.ready?.(),this.logger.debug(`Ready hook completed for plugin: ${$}`)}catch(G){let Y=H6(G);throw X.status="error",X.error=Y,this.events.emit("plugin:error",$,Y),Y}}async startPluginDaemons($){let X=this.plugins.get($);if(X?.status!=="initialized")return;try{await this.daemonRegistry.startPlugin($),this.logger.debug(`Started daemons for plugin: ${$}`)}catch(G){if(X.plugin.requiresDaemonStartup?.())throw G;this.logger.warn(`Daemon ${$} failed to start: ${x1(G)}`)}}async disablePlugin($){let X=this.plugins.get($);if(!X){this.logger.warn(`Cannot disable plugin ${$}: not registered`);return}this.logger.debug(`Disabling plugin: ${$}`);try{await this.daemonRegistry.stopPlugin($),this.logger.debug(`Stopped daemons for plugin: ${$}`)}catch(G){this.logger.error(`Failed to stop daemons for plugin: ${$}`,G)}if(X.plugin.shutdown)try{await X.plugin.shutdown(),this.logger.debug(`Shutdown completed for plugin: ${$}`)}catch(G){this.logger.error(`Plugin shutdown failed for ${$}:`,G)}X.status="disabled",this.events.emit("plugin:disabled",$,X.plugin),this.logger.debug(`Disabled plugin: ${$}`)}async enablePlugin($){let X=this.plugins.get($);if(!X){this.logger.warn(`Cannot enable plugin ${$}: not registered`);return}if(X.status!=="disabled"){this.logger.warn(`Cannot enable plugin ${$}: not disabled`);return}this.logger.debug(`Enabling plugin: ${$}`),X.status="initialized";try{await this.daemonRegistry.startPlugin($),this.logger.debug(`Started daemons for plugin: ${$}`)}catch(G){this.logger.error(`Failed to start daemons for plugin: ${$}`,G)}this.events.emit("plugin:enabled",$,X.plugin),this.logger.debug(`Enabled plugin: ${$}`)}}class Z7{plugins;events;logger;constructor($,X,G){this.plugins=$;this.events=X;this.logger=G.child("DependencyResolver")}async resolveInitializationOrder($){this.logger.debug("Resolving plugin initialization order...");let X=Array.from(this.plugins.keys()),G=new Set,Y=!0;while(Y&&G.size<X.length){Y=!1;for(let V of X){if(G.has(V))continue;if(!this.plugins.get(V))continue;if(this.getUnmetDependencies(V).length===0)try{await $(V),G.add(V),Y=!0}catch(U){let D=x1(U);this.logger.error(`Failed to initialize plugin ${V}: ${D}`),G.add(V),Y=!0}}}let q=X.filter((V)=>!G.has(V));if(q.length>0){let V=q.join(", ");this.logger.error(`Failed to initialize plugins due to dependency issues: ${V}`);for(let W of q){let H=this.getUnmetDependencies(W);this.logger.error(`Plugin ${W} has unmet dependencies: ${H.join(", ")}`);let U=this.plugins.get(W);if(U)U.status="error",U.error=new U0(W,`Unmet dependencies: ${H.join(", ")}`);this.events.emit("plugin:error",W,U?.error)}}let J=new Set;for(let[V,W]of this.plugins)if(W.status==="initialized")J.add(V);return this.logger.debug(`Resolved ${J.size} of ${X.length} plugins`),{initialized:J,failed:q}}getUnmetDependencies($){let X=this.plugins.get($);if(!X)return[];let{dependencies:G}=X,Y=[];for(let q of G){let J=this.plugins.get(q);if(!J){Y.push(q);continue}if(J.status!=="initialized")Y.push(q)}return Y}}class N7{logger;constructor($){this.logger=$.child("CapabilityRegistrar")}async registerCapabilities($,X,G){if(G.tools.length>0)$.registerTools(X,G.tools),this.logger.debug(`Registered ${G.tools.length} tools from ${X}`);if(G.resources.length>0)$.registerResources(X,G.resources),this.logger.debug(`Registered ${G.resources.length} resources from ${X}`);if(G.instructions)$.registerInstructions(X,G.instructions),this.logger.debug(`Registered instructions from ${X}`)}}class $2{static instance=null;plugins=new Map;logger;events=new BJ;daemonRegistry;shell=null;initializedPluginIds=[];pluginLifecycle;dependencyResolver;capabilityRegistrar;static getInstance($,X){return $2.instance??=new $2($,X),$2.instance}static resetInstance(){$2.instance=null}static createFresh($,X){return new $2($,X)}setShell($){this.shell=$}constructor($,X){this.logger=$.child("PluginManager"),this.events=new BJ,this.daemonRegistry=X,this.pluginLifecycle=new B7(this.plugins,this.events,this.daemonRegistry,$),this.dependencyResolver=new Z7(this.plugins,this.events,$),this.capabilityRegistrar=new N7($)}registerPlugin($){if(!$.id)throw new U0("unknown","Registration failed: Plugin must have an id");if(this.logger.debug(`Registering plugin: ${$.id} (${$.version})`),this.plugins.has($.id)){let q=this.plugins.get($.id)?.plugin.version;throw new U0($.id,`Registration failed: Plugin is already registered with version ${q}`)}let X=$.dependencies??[],G={plugin:$,status:"registered",dependencies:X};this.plugins.set($.id,G),this.logger.debug(`Registered plugin: ${$.id} (${$.version})`),this.events.emit("plugin:registered",$.id,$)}async initializePlugins($){this.logger.debug("Initializing plugins..."),this.initializedPluginIds=[];let X=await this.dependencyResolver.resolveInitializationOrder(async(G)=>{await this.initializePlugin(G,$)});this.logger.debug(`Initialized ${X.initialized.size} of ${this.plugins.size} plugins`)}async initializePlugin($,X){if(!this.shell)throw new U0($,"Cannot initialize plugin: Shell not set. Call setShell() first.");let G=this.shell,Y=await this.pluginLifecycle.initializePlugin($,G,X);await this.capabilityRegistrar.registerCapabilities(G,$,Y),this.initializedPluginIds.push($)}async readyPlugins(){this.logger.debug("Dispatching plugin ready hooks..."),await Promise.all(this.initializedPluginIds.map(($)=>this.pluginLifecycle.readyPlugin($)))}async startPluginDaemons(){this.logger.debug("Starting plugin daemons..."),await Promise.all(this.initializedPluginIds.map(($)=>this.pluginLifecycle.startPluginDaemons($)))}getPlugin($){return this.plugins.get($)?.plugin}getPluginStatus($){return this.plugins.get($)?.status}hasPlugin($){return this.plugins.has($)}isPluginInitialized($){return this.plugins.get($)?.status==="initialized"}getAllPluginIds(){return Array.from(this.plugins.keys())}getAllPlugins(){return new Map(this.plugins)}getFailedPlugins(){return Array.from(this.plugins.entries()).filter(($)=>$[1].status==="error"&&$[1].error!==void 0).map(([$,X])=>({id:$,error:X.error}))}getPluginPackageName($){return this.plugins.get($)?.plugin.packageName}async disablePlugin($){await this.pluginLifecycle.disablePlugin($)}async enablePlugin($){await this.pluginLifecycle.enablePlugin($)}on($,X){this.events.on($,X)}once($,X){this.events.once($,X)}off($,X){this.events.off($,X)}getEventEmitter(){return this.events}}export{K7 as urlCaptureConfigSchema,g9 as toolSuccess,f9 as toolError,F7 as parseConfirmationResponse,R7 as formatConfirmationPrompt,Vq as defineChannel,m9 as createTool,u9 as createResource,RJ as basePluginConfigSchema,H7 as ServicePlugin,t0 as MessageInterfacePlugin,O6 as InterfacePlugin,R6 as EntityPlugin};
|
|
176
176
|
|
|
177
|
-
//# debugId=
|
|
177
|
+
//# debugId=C9624DF70E70B61764756E2164756E21
|
|
178
178
|
//# sourceMappingURL=plugins.js.map
|