@rizom/brain 0.2.0-alpha.179 → 0.2.0-alpha.180
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 +1149 -1282
- package/dist/chunks/blog-post-adapter-yjmhep1h.js +5 -0
- package/dist/chunks/{index-rt5tcayx.js → index-1hvq9kyt.js} +3 -3
- package/dist/chunks/{index-rt5tcayx.js.map → index-1hvq9kyt.js.map} +4 -4
- package/dist/chunks/{index-7xd8xdzz.js → index-2x2cw3f4.js} +38 -38
- package/dist/chunks/{index-7xd8xdzz.js.map → index-2x2cw3f4.js.map} +4 -4
- package/dist/chunks/{index-0ddyhcj5.js → index-6ar5xerk.js} +2 -2
- package/dist/chunks/{index-mexsb6fq.js → index-f7href49.js} +2 -2
- package/dist/chunks/{index-tgy6sxfz.js → index-t6eyd566.js} +2 -2
- package/dist/chunks/{rss-datasource-y1wnwfe1.js → rss-datasource-wpssyma9.js} +2 -2
- package/dist/entities.js +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/plugins.js +1 -1
- package/dist/services.js +1 -1
- package/dist/site.js +6 -6
- package/dist/site.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/blog-post-adapter-ghky7chd.js +0 -5
- /package/dist/chunks/{blog-post-adapter-ghky7chd.js.map → blog-post-adapter-yjmhep1h.js.map} +0 -0
- /package/dist/chunks/{index-0ddyhcj5.js.map → index-6ar5xerk.js.map} +0 -0
- /package/dist/chunks/{index-mexsb6fq.js.map → index-f7href49.js.map} +0 -0
- /package/dist/chunks/{index-tgy6sxfz.js.map → index-t6eyd566.js.map} +0 -0
- /package/dist/chunks/{rss-datasource-y1wnwfe1.js.map → rss-datasource-wpssyma9.js.map} +0 -0
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport type { ToolAnnotations } from \"@modelcontextprotocol/sdk/types.js\";\nimport { type ProgressNotification } from \"@brains/utils/progress\";\nimport { z, type ZodRawShape } from \"@brains/utils/zod\";\nimport type { UserPermissionLevel } from \"@brains/templates\";\n\n/**\n * Tool visibility levels for permission control\n * Uses the same levels as UserPermissionLevel for consistency\n */\nexport type ToolVisibility = UserPermissionLevel;\n\n/**\n * Tool execution context\n * Provides progress reporting and routing metadata\n */\nexport interface ToolContext {\n // Progress reporting\n progressToken?: string | number;\n sendProgress?: (notification: ProgressNotification) => Promise<void>;\n /** Cancellation for the active request; handlers may opt in. */\n signal?: AbortSignal;\n\n // Routing metadata for job creation (required for proper context propagation)\n interfaceType: string; // Which interface called the tool (e.g., \"mcp\", \"cli\", \"matrix\")\n userId: string; // User who invoked the tool\n conversationId?: string; // Durable conversation/session id for conversation-scoped tools when available\n channelId?: string; // Transport channel/room context (for Matrix, etc.)\n channelName?: string; // Human-readable channel name (for display)\n runId?: string; // Runtime workflow/playbook run context when available\n toolCallId?: string; // AI SDK tool call id when invoked by an agent\n /** Caller's permission level. Tools that read/write entities use this to derive\n * the content-visibility scope they are allowed to see. */\n userPermissionLevel?: UserPermissionLevel;\n}\n\nexport interface ToolContextRouting {\n interfaceType: string;\n userId: string;\n conversationId?: string | undefined;\n channelId?: string | undefined;\n channelName?: string | undefined;\n runId?: string | undefined;\n toolCallId?: string | undefined;\n userPermissionLevel?: UserPermissionLevel | undefined;\n}\n\ninterface ToolContextRoutingSchemaShape extends ZodRawShape {\n interfaceType: z.ZodString;\n userId: z.ZodString;\n conversationId: z.ZodOptional<z.ZodString>;\n channelId: z.ZodOptional<z.ZodString>;\n channelName: z.ZodOptional<z.ZodString>;\n runId: z.ZodOptional<z.ZodString>;\n toolCallId: z.ZodOptional<z.ZodString>;\n userPermissionLevel: z.ZodOptional<\n z.ZodEnum<{\n anchor: \"anchor\";\n trusted: \"trusted\";\n public: \"public\";\n }>\n >;\n}\n\n/**\n * Schema for ToolContext routing metadata\n * Used to validate routing information in tool execution requests\n */\nexport const ToolContextRoutingSchema: z.ZodObject<ToolContextRoutingSchemaShape> =\n z.object({\n interfaceType: z.string(),\n userId: z.string(),\n conversationId: z.string().optional(),\n channelId: z.string().optional(),\n channelName: z.string().optional(),\n runId: z.string().optional(),\n toolCallId: z.string().optional(),\n userPermissionLevel: z.enum([\"anchor\", \"trusted\", \"public\"]).optional(),\n });\n\nexport interface ToolSuccessResponse {\n success: true;\n data?: unknown;\n message?: string | undefined;\n cached?: true | undefined;\n}\n\n/**\n * Success response schema\n */\nexport const toolSuccessSchema: z.ZodType<ToolSuccessResponse> = z.strictObject(\n {\n success: z.literal(true),\n data: z.unknown().optional(),\n message: z.string().optional(),\n cached: z.literal(true).optional(),\n },\n);\n\nexport interface ToolErrorResponse {\n success: false;\n error: string;\n code?: string | undefined;\n}\n\n/**\n * Error response schema\n */\nexport const toolErrorSchema: z.ZodType<ToolErrorResponse> = z.strictObject({\n success: z.literal(false),\n error: z.string(),\n code: z.string().optional(),\n});\n\n/**\n * Confirmation response schema\n * Tools return this when an operation needs user approval.\n * The agent service detects this shape and enters the confirmation flow.\n */\nexport interface ToolConfirmation {\n needsConfirmation: true;\n toolName: string;\n summary: string;\n completionSummary?: string | undefined;\n preview?: string | undefined;\n args: unknown;\n}\n\nexport const toolConfirmationSchema: z.ZodType<ToolConfirmation> =\n z.strictObject({\n needsConfirmation: z.literal(true),\n toolName: z.string(),\n summary: z.string(),\n completionSummary: z.string().optional(),\n preview: z.string().optional(),\n args: z.unknown(),\n });\n\n/**\n * Standardized tool response schema\n * All tools return one of: success, error, or confirmation request.\n */\nexport type ToolResponse =\n ToolSuccessResponse | ToolErrorResponse | ToolConfirmation;\n\nexport const toolResponseSchema: z.ZodType<ToolResponse> = z.union([\n toolSuccessSchema,\n toolErrorSchema,\n toolConfirmationSchema,\n]);\n\nexport type ToolSideEffects = \"none\" | \"writes\" | \"external\";\nexport type ToolInputSchema = ZodRawShape;\nexport type ToolOutputSchema = z.ZodType;\nexport type MCPProtocolMode = \"basic\" | \"debug\";\n\n/**\n * Tool definition\n * @template TOutput - The output type, defaults to ToolResponse for backward compatibility\n */\nexport interface Tool<TOutput = ToolResponse> {\n name: string;\n description: string;\n inputSchema: ToolInputSchema;\n outputSchema?: ToolOutputSchema; // Optional: Zod schema for type-safe outputs\n handler: (input: unknown, context: ToolContext) => Promise<TOutput>;\n visibility?: ToolVisibility; // Default: \"anchor\" for safety - only explicitly marked tools are public\n /** Declares whether this tool is safe to repeat/cache within one model turn. Undefined defaults to not cacheable. */\n sideEffects?: ToolSideEffects;\n /** MCP protocol annotations advertised to external clients. Derived from sideEffects when omitted. */\n annotations?: ToolAnnotations;\n /** Optional CLI metadata — makes this tool invocable as a brain CLI command */\n cli?: {\n /** CLI command name (e.g. \"list\", \"sync\", \"build\") */\n name: string;\n };\n}\n\n/**\n * Resource definition\n */\nexport interface Resource {\n uri: string;\n name: string;\n description?: string;\n mimeType?: string;\n handler: () => Promise<{\n contents: Array<{\n text: string;\n uri: string;\n mimeType?: string;\n }>;\n }>;\n}\n\n/**\n * Variables extracted from a URI template.\n * Generic parameter ensures handlers receive typed vars, not loose index signatures.\n */\nexport type ResourceVars<K extends string = string> = { [P in K]: string };\n\n/**\n * A parameterized resource with URI template (e.g. \"entity://{type}/{id}\")\n */\nexport interface ResourceTemplate<K extends string = string> {\n name: string;\n uriTemplate: string;\n description?: string;\n mimeType?: string;\n /** List all concrete resources matching this template (for resources/list) */\n list?: () => Promise<Array<{ uri: string; name: string }>>;\n /** Autocomplete values for template variables (populates client selectors) */\n complete?: Record<\n K,\n (\n value: string,\n context?: { arguments?: Partial<ResourceVars<K>> },\n ) => string[] | Promise<string[]>\n >;\n /** Read a single resource by resolved template variables */\n handler: (vars: ResourceVars<K>) => Promise<{\n contents: Array<{ text: string; uri: string; mimeType?: string }>;\n }>;\n}\n\n/**\n * An MCP prompt — parameterized message template for client prompt pickers\n */\nexport interface Prompt {\n name: string;\n description?: string;\n args: Record<string, { description: string; required?: boolean }>;\n handler: (args: Record<string, string>) => Promise<{\n messages: Array<{\n role: \"user\" | \"assistant\";\n content: { type: \"text\"; text: string };\n }>;\n }>;\n /** Default: \"anchor\" — prompt bodies can reference restricted workflows,\n * so they ship as anchor-only unless explicitly marked. */\n visibility?: ToolVisibility;\n}\n\n/**\n * Minimal interface exposed to transport layers\n * Only provides what's needed to connect transports to the MCP server\n */\nexport interface IMCPTransport {\n /**\n * Get the underlying MCP server for transport layers to connect to\n * Transport layers should import McpServer type from @modelcontextprotocol/sdk directly\n */\n getMcpServer(): McpServer;\n\n /**\n * Create a fresh MCP server instance with all registered tools/resources.\n * Required for Streamable HTTP where each session needs its own server.\n */\n createMcpServer(permissionLevel?: UserPermissionLevel): McpServer;\n\n /**\n * Set the permission level for this transport\n */\n setPermissionLevel(level: UserPermissionLevel): void;\n\n /** Select which registered tools are exposed on the external MCP protocol server. */\n setProtocolMode(mode: MCPProtocolMode): void;\n}\n\n/**\n * Full MCP Service interface for managing tool and resource registration\n * Extends the transport interface with registration capabilities\n */\nexport interface IMCPService extends IMCPTransport {\n /**\n * Register a tool with the MCP server\n */\n registerTool(pluginId: string, tool: Tool): void;\n\n /**\n * Register a resource with the MCP server\n */\n registerResource(pluginId: string, resource: Resource): void;\n\n /**\n * Register a resource template with parameterized URI\n */\n registerResourceTemplate<K extends string = string>(\n pluginId: string,\n template: ResourceTemplate<K>,\n ): void;\n\n /**\n * Register an MCP prompt\n */\n registerPrompt(pluginId: string, prompt: Prompt): void;\n\n /**\n * List all registered tools\n */\n listTools(): Array<{ pluginId: string; tool: Tool }>;\n\n /**\n * List tools that have CLI metadata (invocable as brain CLI commands)\n */\n getCliTools(): Array<{ pluginId: string; tool: Tool }>;\n\n /**\n * List tools filtered by user permission level\n */\n listToolsForPermissionLevel(\n userLevel: UserPermissionLevel,\n ): Array<{ pluginId: string; tool: Tool }>;\n\n /**\n * List all registered resources\n */\n listResources(): Array<{ pluginId: string; resource: Resource }>;\n\n /**\n * Register behavioral instructions from a plugin for the agent system prompt\n */\n registerInstructions(pluginId: string, instructions: string): void;\n\n /** Remove every tool, resource, prompt, and instruction owned by a plugin. */\n unregisterPlugin?(pluginId: string): void;\n\n /**\n * Get all registered plugin instructions\n */\n getInstructions(): string[];\n}\n\n/**\n * Tool registration info\n */\nexport interface ToolInfo {\n name: string;\n description: string;\n pluginId: string;\n}\n",
|
|
16
16
|
"import type { MessageResponse } from \"@brains/messaging-service\";\nimport { type Logger } from \"@brains/utils/logger\";\nimport { z } from \"@brains/utils/zod\";\nimport { toolResponseSchema, type Tool, type ToolResponse } from \"./types\";\n\ninterface ToolResponseValidationContext {\n pluginId: string;\n toolName: string;\n logger: Logger;\n}\n\nfunction invalidToolResponse(toolName: string): ToolResponse {\n return {\n success: false,\n error: `Tool ${toolName} returned an invalid response shape`,\n };\n}\n\nfunction invalidEnvelopeResponse(\n toolName: string,\n): MessageResponse<ToolResponse> {\n return {\n success: false,\n error: `Tool ${toolName} returned an invalid message response envelope`,\n };\n}\n\n/**\n * Envelope shape returned by message-bus handlers for `plugin:*:tool:execute`.\n * Success branch carries the raw tool response in `data`; error branch is the\n * bus-level failure (e.g. tool not found, payload invalid). Anything else\n * (missing `success`, `noop`, wrong types) is rejected by the union.\n */\nconst toolExecutionEnvelopeSchema = z.union([\n z.looseObject({ success: z.literal(true) }),\n z.object({ success: z.literal(false), error: z.string() }),\n]);\n\nfunction hasEnvelopeData(value: {\n success: true;\n}): value is { success: true; data: unknown } {\n return Object.prototype.hasOwnProperty.call(value, \"data\");\n}\n\nexport function normalizeToolResponse(\n raw: unknown,\n context: ToolResponseValidationContext,\n): ToolResponse {\n const parsed = toolResponseSchema.safeParse(raw);\n\n if (\n parsed.success &&\n \"success\" in parsed.data &&\n parsed.data.success === true &&\n !Object.prototype.hasOwnProperty.call(parsed.data, \"data\")\n ) {\n context.logger.error(\"Tool returned non-compliant response\", {\n pluginId: context.pluginId,\n toolName: context.toolName,\n issues: [{ path: [\"data\"], message: \"Required\" }],\n });\n return invalidToolResponse(context.toolName);\n }\n\n if (parsed.success) {\n return parsed.data;\n }\n\n context.logger.error(\"Tool returned non-compliant response\", {\n pluginId: context.pluginId,\n toolName: context.toolName,\n issues: parsed.error.issues,\n });\n\n return invalidToolResponse(context.toolName);\n}\n\nexport function normalizeToolExecutionMessageResponse(\n response: unknown,\n context: ToolResponseValidationContext,\n): MessageResponse<ToolResponse> {\n const parsed = toolExecutionEnvelopeSchema.safeParse(response);\n\n if (!parsed.success) {\n context.logger.error(\"Tool returned non-compliant message response\", {\n pluginId: context.pluginId,\n toolName: context.toolName,\n response,\n });\n return invalidEnvelopeResponse(context.toolName);\n }\n\n if (!parsed.data.success) {\n return { success: false, error: parsed.data.error };\n }\n\n if (!hasEnvelopeData(parsed.data)) {\n context.logger.error(\"Tool returned non-compliant message response\", {\n pluginId: context.pluginId,\n toolName: context.toolName,\n response,\n });\n return invalidEnvelopeResponse(context.toolName);\n }\n\n return {\n success: true,\n data: normalizeToolResponse(parsed.data.data, context),\n };\n}\n\nexport function wrapToolWithResponseValidation(\n pluginId: string,\n tool: Tool,\n logger: Logger,\n): Tool {\n return {\n ...tool,\n handler: async (input, context): Promise<ToolResponse> => {\n const raw = await tool.handler(input, context);\n return normalizeToolResponse(raw, {\n pluginId,\n toolName: tool.name,\n logger,\n });\n },\n };\n}\n",
|
|
17
17
|
"import type { Tool, Resource, ToolResponse, ToolContext } from \"./types\";\nimport { getErrorMessage } from \"@brains/utils/error\";\nimport { Logger } from \"@brains/utils/logger\";\nimport { z, type ZodRawShape } from \"@brains/utils/zod\";\n\nexport interface ToolSuccessResult<T = unknown> {\n success: true;\n data: T;\n message?: string | undefined;\n}\n\nexport interface ToolErrorResult {\n success: false;\n error: string;\n code?: string | undefined;\n}\n\n/**\n * Zod schema for tool result validation\n * Use this to parse/validate tool results at runtime\n */\nexport const toolResultSchema: z.ZodType<ToolSuccessResult | ToolErrorResult> =\n z.union([\n z.object({\n success: z.literal(true),\n data: z.unknown(),\n message: z.string().optional(),\n }),\n z.object({\n success: z.literal(false),\n error: z.string(),\n code: z.string().optional(),\n }),\n ]);\n\n/**\n * Standardized tool result type derived from schema\n * All tools should return this format for consistent handling\n *\n * @template T - The type of data returned on success (defaults to unknown)\n */\nexport type ToolResult<T = unknown> = ToolSuccessResult<T> | ToolErrorResult;\n\n/**\n * Helper to create a success result\n */\nexport function toolSuccess<T>(data: T, message?: string): ToolResult<T> {\n return message ? { success: true, data, message } : { success: true, data };\n}\n\n/**\n * Helper to create an error result\n */\nexport function toolError(error: string, code?: string): ToolResult<never> {\n return code ? { success: false, error, code } : { success: false, error };\n}\n\n/**\n * Create a tool with auto-validation and consistent response format.\n *\n * - Input is automatically validated against the schema\n * - Handler receives typed input (no manual parsing needed)\n * - Must return `ToolResult<T>` for consistent response format\n * - Validation errors are automatically caught and formatted\n *\n * @example\n * ```typescript\n * const captureSchema = z.object({\n * url: z.string().url(),\n * title: z.string().optional(),\n * });\n *\n * createTool(\n * pluginId,\n * \"capture\",\n * \"Capture a link\",\n * captureSchema,\n * async (input, ctx) => {\n * // input is typed as { url: string; title?: string }\n * const link = await captureLink(input.url);\n * return toolSuccess({ linkId: link.id });\n * }\n * );\n * ```\n */\nfunction formatZodError(error: z.ZodError): string {\n return error.issues\n .map((issue) => {\n const path = issue.path.length > 0 ? issue.path.join(\".\") : \"(root)\";\n return `${path}: ${issue.message}`;\n })\n .join(\", \");\n}\n\nexport function createTool<\n TSchema extends z.ZodObject<ZodRawShape>,\n TOutput = unknown,\n>(\n pluginId: string,\n name: string,\n description: string,\n inputSchema: TSchema,\n handler: (\n input: z.output<TSchema>,\n context: ToolContext,\n ) => Promise<ToolResult<TOutput>>,\n options: {\n visibility?: Tool[\"visibility\"];\n sideEffects?: Tool[\"sideEffects\"];\n annotations?: Tool[\"annotations\"];\n debug?: boolean;\n cli?: Tool[\"cli\"];\n } = {},\n): Tool {\n const {\n visibility = \"anchor\",\n sideEffects,\n annotations,\n debug = false,\n cli,\n } = options;\n const logger = debug ? Logger.createFresh({ context: pluginId }) : null;\n const inputShape = inputSchema.shape;\n\n return {\n name: `${pluginId}_${name}`,\n description,\n inputSchema: inputShape,\n handler: async (input, context): Promise<ToolResponse> => {\n logger?.debug(`Tool ${name} started`);\n try {\n // Auto-validate input\n const parseResult = inputSchema.safeParse(input);\n if (!parseResult.success) {\n const errorMessage = formatZodError(parseResult.error);\n logger?.debug(`Tool ${name} validation failed: ${errorMessage}`);\n return {\n success: false,\n error: `Invalid input: ${errorMessage}`,\n };\n }\n\n // Call handler with validated, typed input\n const result = await handler(parseResult.data, context);\n logger?.debug(`Tool ${name} completed`);\n return result;\n } catch (error) {\n logger?.error(`Tool ${name} failed`, error);\n const errorMessage = getErrorMessage(error);\n return {\n success: false,\n error: errorMessage,\n };\n }\n },\n visibility,\n ...(sideEffects ? { sideEffects } : {}),\n ...(annotations ? { annotations } : {}),\n ...(cli ? { cli } : {}),\n };\n}\n\n/**\n * Create a resource with consistent structure and optional debug logging.\n *\n * Use this in resource factory functions instead of building resource objects manually.\n */\nexport function createResource(\n pluginId: string,\n uri: string,\n name: string,\n description: string,\n handler: Resource[\"handler\"],\n options: {\n mimeType?: string;\n debug?: boolean;\n } = {},\n): Resource {\n const { mimeType = \"text/plain\", debug = false } = options;\n const logger = debug ? Logger.createFresh({ context: pluginId }) : null;\n\n return {\n uri: `${pluginId}_${uri}`,\n name,\n description,\n mimeType,\n handler: async (): Promise<{\n contents: Array<{\n text: string;\n uri: string;\n mimeType?: string;\n }>;\n }> => {\n logger?.debug(`Resource ${uri} started`);\n try {\n const result = await handler();\n logger?.debug(`Resource ${uri} completed`);\n return result;\n } catch (error) {\n logger?.error(`Resource ${uri} failed`, error);\n throw error;\n }\n },\n };\n}\n",
|
|
18
|
-
"import { z } from \"@brains/utils/zod\";\nimport type {\n EntityActionPolicyConfig,\n UserPermissionLevel,\n} from \"@brains/templates\";\nimport {\n defaultQueryResponseSchema,\n simpleTextResponseSchema,\n createEntityResponseSchema,\n updateEntityResponseSchema,\n type DefaultQueryResponse,\n type SimpleTextResponse,\n type CreateEntityResponse,\n type UpdateEntityResponse,\n} from \"@brains/contracts\";\nimport type { IMessageBus } from \"@brains/messaging-service\";\nimport { DaemonStatusInfoSchema, type Daemon } from \"./manager/daemon-types\";\nimport type { IContentService } from \"@brains/content-service\";\nimport type { Template } from \"@brains/templates\";\nimport type { Logger } from \"@brains/utils/logger\";\nimport type {\n ContentVisibility,\n IEntityService,\n IEntityRegistry,\n ICoreEntityService,\n} from \"@brains/entity-service\";\nimport type {\n Tool,\n Resource,\n ResourceTemplate,\n Prompt,\n ToolInfo,\n} from \"@brains/mcp-service\";\nexport type {\n ToolVisibility,\n ToolContext,\n ToolResponse,\n ToolConfirmation,\n Tool,\n Resource,\n ResourceTemplate,\n Prompt,\n ToolInfo,\n} from \"@brains/mcp-service\";\nexport {\n toolResponseSchema,\n ToolContextRoutingSchema,\n} from \"@brains/mcp-service\";\nimport type { IJobQueueService, IJobsNamespace } from \"@brains/job-queue\";\nimport type { RenderService } from \"@brains/templates\";\nimport type { IConversationService } from \"@brains/conversation-service\";\nimport type { IMCPTransport } from \"@brains/mcp-service\";\nimport type { PermissionService } from \"@brains/templates\";\nimport type { DataSourceRegistry } from \"@brains/entity-service\";\nimport type { BrainCharacter } from \"@brains/identity-service\";\nimport type { AnchorProfile } from \"@brains/identity-service\";\nimport type { IAgentService } from \"@brains/ai-service\";\nimport type { IAttachmentsNamespace } from \"./service/attachment-registry\";\nimport type { IRuntimeStateNamespace } from \"@brains/runtime-state\";\nimport type { IRuntimeUploadsNamespace } from \"./service/upload-registry\";\nimport type {\n AIGenerationSchema,\n ImageGenerationOptions,\n ImageGenerationResult,\n} from \"@brains/ai-service\";\nimport type { RegisteredApiRoute } from \"./types/api-routes\";\nimport type { RegisteredWebRoute } from \"./types/web-routes\";\nimport type { EntityDisplayEntry } from \"@brains/site-composition\";\n\n/**\n * Handler function for plugin evaluations\n * Plugins register these to enable direct (non-chat) testing\n */\nexport type EvalHandler<TInput = unknown, TOutput = unknown> = (\n input: TInput,\n) => Promise<TOutput>;\n\n/**\n * Registry interface for plugin eval handlers\n * Abstraction that allows dependency inversion - implementation lives in ai-evaluation\n */\nexport interface IEvalHandlerRegistry {\n register(pluginId: string, handlerId: string, handler: EvalHandler): void;\n get(pluginId: string, handlerId: string): EvalHandler | undefined;\n has(pluginId: string, handlerId: string): boolean;\n list(): Array<{ pluginId: string; handlerId: string }>;\n unregister(pluginId: string, handlerId: string): boolean;\n}\n\n/**\n * Plugin info for status display\n */\nexport const pluginInfoSchema: z.ZodObject<{\n id: z.ZodString;\n type: z.ZodString;\n version: z.ZodString;\n status: z.ZodString;\n}> = z.object({\n id: z.string(),\n type: z.string(),\n version: z.string(),\n status: z.string(),\n});\n\n/**\n * Tool info for status display\n */\nexport const toolInfoSchema: z.ZodObject<{\n name: z.ZodString;\n description: z.ZodString;\n}> = z.object({\n name: z.string(),\n description: z.string(),\n});\n\n/**\n * Endpoint info — plugins advertise their user-facing URLs via\n * `context.endpoints.register({...})`. Shell collects and exposes\n * through `appInfo.endpoints` so the dashboard (and anything else)\n * can render them without knowing about individual plugins.\n */\nconst userPermissionLevelSchema: z.ZodEnum<{\n anchor: \"anchor\";\n trusted: \"trusted\";\n public: \"public\";\n}> = z.enum([\"anchor\", \"trusted\", \"public\"]);\n\nexport const endpointInfoSchema: z.ZodObject<{\n label: z.ZodString;\n url: z.ZodString;\n pluginId: z.ZodString;\n priority: z.ZodDefault<z.ZodNumber>;\n visibility: z.ZodDefault<typeof userPermissionLevelSchema>;\n}> = z.object({\n label: z.string(),\n url: z.string(),\n pluginId: z.string(),\n priority: z.number().default(100),\n visibility: userPermissionLevelSchema.default(\"public\"),\n});\n\nexport type EndpointInfo = z.output<typeof endpointInfoSchema>;\nexport type EndpointInfoInput = z.input<typeof endpointInfoSchema>;\n\nexport const interactionKindSchema: z.ZodEnum<{\n human: \"human\";\n agent: \"agent\";\n admin: \"admin\";\n protocol: \"protocol\";\n}> = z.enum([\"human\", \"agent\", \"admin\", \"protocol\"]);\n\nexport const interactionStatusSchema: z.ZodEnum<{\n available: \"available\";\n \"coming-soon\": \"coming-soon\";\n disabled: \"disabled\";\n}> = z.enum([\"available\", \"coming-soon\", \"disabled\"]);\n\nexport const interactionInfoSchema: z.ZodObject<{\n id: z.ZodString;\n label: z.ZodString;\n description: z.ZodOptional<z.ZodString>;\n href: z.ZodString;\n kind: typeof interactionKindSchema;\n pluginId: z.ZodString;\n priority: z.ZodDefault<z.ZodNumber>;\n visibility: z.ZodDefault<typeof userPermissionLevelSchema>;\n status: z.ZodDefault<typeof interactionStatusSchema>;\n}> = z.object({\n id: z.string(),\n label: z.string(),\n description: z.string().optional(),\n href: z.string(),\n kind: interactionKindSchema,\n pluginId: z.string(),\n priority: z.number().default(100),\n visibility: userPermissionLevelSchema.default(\"public\"),\n status: interactionStatusSchema.default(\"available\"),\n});\n\nexport type InteractionInfo = z.output<typeof interactionInfoSchema>;\nexport type InteractionInfoInput = z.input<typeof interactionInfoSchema>;\n\nexport const entityCountSchema: z.ZodObject<{\n entityType: z.ZodString;\n count: z.ZodNumber;\n}> = z.object({\n entityType: z.string(),\n count: z.number(),\n});\n\nexport type EntityCount = z.output<typeof entityCountSchema>;\n\n/**\n * App info schema for validation\n */\nexport const appInfoSchema: z.ZodObject<{\n model: z.ZodString;\n version: z.ZodString;\n uptime: z.ZodNumber;\n entities: z.ZodNumber;\n entityCounts: z.ZodArray<typeof entityCountSchema>;\n embeddings: z.ZodNumber;\n ai: z.ZodObject<{\n model: z.ZodString;\n embeddingModel: z.ZodString;\n }>;\n daemons: z.ZodArray<typeof DaemonStatusInfoSchema>;\n endpoints: z.ZodArray<typeof endpointInfoSchema>;\n interactions: z.ZodArray<typeof interactionInfoSchema>;\n}> = z.object({\n model: z.string(),\n version: z.string(),\n uptime: z.number(),\n entities: z.number(),\n entityCounts: z.array(entityCountSchema),\n embeddings: z.number(),\n ai: z.object({\n model: z.string(),\n embeddingModel: z.string(),\n }),\n daemons: z.array(DaemonStatusInfoSchema),\n endpoints: z.array(endpointInfoSchema),\n interactions: z.array(interactionInfoSchema),\n});\n\nexport type RuntimeAppInfo = z.output<typeof appInfoSchema>;\n\n/**\n * Query context for shell queries\n */\nexport interface QueryContext {\n userId?: string;\n conversationHistory?: string;\n messageId?: string;\n threadId?: string;\n timestamp?: string;\n [key: string]: unknown; // Allow additional properties\n}\n\n/**\n * Bounded model-as-judge request exposed to plugins.\n * Kept structural here so public plugin declarations do not import ai-service internals.\n */\nexport interface JudgeInput<T> {\n instruction: string;\n material: string;\n schema: AIGenerationSchema<T>;\n}\n\n/**\n * Shell interface that plugins use to access core services\n * This avoids circular dependencies between core and plugin-context\n */\n/**\n * Handler for a registered insight type.\n * Receives the entity service for data queries plus the caller's visibility\n * scope so aggregate insights can be filtered to what the caller is allowed\n * to see. Returns structured data.\n */\nexport type InsightHandler = (\n entityService: ICoreEntityService,\n visibilityScope: ContentVisibility,\n) => Promise<Record<string, unknown>>;\n\n/**\n * Registry for insight types.\n * Core registers generic insights; plugins register domain-specific ones.\n */\nexport interface IInsightsRegistry {\n register(type: string, handler: InsightHandler): void;\n unregister(type: string): void;\n getTypes(): string[];\n get(\n type: string,\n entityService: ICoreEntityService,\n visibilityScope: ContentVisibility,\n ): Promise<Record<string, unknown>>;\n}\n\nexport interface PluginRegistrationContext {\n /** Site/entity display metadata derived from the active site package. */\n entityDisplay?: Record<string, EntityDisplayEntry>;\n}\n\nexport interface IShell {\n // Core service accessors\n getMessageBus(): IMessageBus;\n getContentService(): IContentService;\n getLogger(): Logger;\n getEntityService(): IEntityService;\n getEntityRegistry(): IEntityRegistry;\n getJobQueueService(): IJobQueueService;\n getRenderService(): RenderService;\n getConversationService(): IConversationService;\n getMCPService(): IMCPTransport;\n listToolsForPermissionLevel(level: UserPermissionLevel): ToolInfo[];\n getPermissionService(): PermissionService;\n getDataSourceRegistry(): DataSourceRegistry;\n getAgentService(): IAgentService;\n getAttachmentRegistry(): IAttachmentsNamespace;\n getRuntimeUploadRegistry(): IRuntimeUploadsNamespace;\n getRuntimeState(): IRuntimeStateNamespace;\n\n // Identity and Profile\n getIdentity(): BrainCharacter;\n getProfile(): AnchorProfile;\n\n // Domain — bare domain string (e.g. \"yeehaa.io\"), undefined for local dev\n getDomain(): string | undefined;\n getLocalSiteUrl(): string | undefined;\n shouldPreferLocalUrls(): boolean;\n getThemeCSS(): string;\n\n // Shared conversation spaces for this brain/team\n getSpaces(): string[];\n\n // Data directory - where plugins should store entity files\n // Default: ./brain-data, can be overridden for evals or custom deployments\n getDataDir(): string;\n\n // App metadata\n getAppInfo(): Promise<RuntimeAppInfo>;\n\n // High-level operations\n generateContent<T = unknown>(config: ContentGenerationConfig): Promise<T>;\n generateObject<T>(\n prompt: string,\n schema: AIGenerationSchema<T>,\n signal?: AbortSignal,\n ): Promise<{ object: T }>;\n judge<T>(input: JudgeInput<T>): Promise<{\n verdict: T;\n usage: {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n };\n }>;\n query(prompt: string, context?: QueryContext): Promise<DefaultQueryResponse>;\n\n // Image generation (requires AI_API_KEY)\n generateImage(\n prompt: string,\n options?: ImageGenerationOptions,\n ): Promise<ImageGenerationResult>;\n canGenerateImages(): boolean;\n\n registerTemplates(\n templates: Record<string, Template>,\n pluginId?: string,\n ): void;\n getTemplate(name: string): Template | undefined;\n\n // Plugin capability registration\n registerTools(pluginId: string, tools: Tool[]): void;\n registerResources(pluginId: string, resources: Resource[]): void;\n registerResourceTemplate<K extends string = string>(\n pluginId: string,\n template: ResourceTemplate<K>,\n ): void;\n registerPrompt(pluginId: string, prompt: Prompt): void;\n registerInstructions(pluginId: string, instructions: string): void;\n /** @internal Release capabilities owned by a terminally stopped plugin. */\n unregisterPluginCapabilities?(pluginId: string): void;\n\n // Plugin information\n getPluginPackageName(pluginId: string): string | undefined;\n hasPlugin(id: string): boolean;\n\n // Job operations namespace\n readonly jobs: IJobsNamespace;\n\n // Daemon registration\n registerDaemon(name: string, daemon: Daemon, pluginId: string): void;\n\n // Endpoint advertisement — plugins advertise user-facing URLs\n registerEndpoint(endpoint: EndpointInfoInput): void;\n listEndpoints(): EndpointInfo[];\n\n // Interaction advertisement — plugins advertise user/agent entry points\n registerInteraction(interaction: InteractionInfoInput): void;\n listInteractions(): InteractionInfo[];\n\n // Eval handler registration for plugin testing\n registerEvalHandler(\n pluginId: string,\n handlerId: string,\n handler: EvalHandler,\n ): void;\n\n // Insights registry for plugin-contributed insights\n getInsightsRegistry(): IInsightsRegistry;\n\n // API routes from plugins\n getPluginApiRoutes(): RegisteredApiRoute[];\n\n // Web routes from plugins\n getPluginWebRoutes(): RegisteredWebRoute[];\n}\n\n// Re-export response schemas for backward compatibility\nexport {\n defaultQueryResponseSchema,\n simpleTextResponseSchema,\n createEntityResponseSchema,\n updateEntityResponseSchema,\n type DefaultQueryResponse,\n type SimpleTextResponse,\n type CreateEntityResponse,\n type UpdateEntityResponse,\n};\n\n// Re-export MCP transport interface\nexport type { IMCPTransport } from \"@brains/mcp-service\";\n\n/**\n * Plugin type enumeration\n */\nexport type PluginType = \"core\" | \"entity\" | \"service\" | \"interface\";\n\n/**\n * Base tracking info that all interface plugins must have\n * Contains the essential rootJobId for job inheritance tracking\n */\nexport interface BaseJobTrackingInfo {\n rootJobId: string; // For inheritance tracking (required)\n}\n\n/**\n * Plugin metadata schema - validates the data portion of a plugin\n */\nexport const pluginMetadataSchema: z.ZodObject<{\n id: z.ZodString;\n version: z.ZodString;\n type: z.ZodEnum<{\n core: \"core\";\n entity: \"entity\";\n service: \"service\";\n interface: \"interface\";\n }>;\n description: z.ZodOptional<z.ZodString>;\n dependencies: z.ZodOptional<z.ZodArray<z.ZodString>>;\n packageName: z.ZodString;\n}> = z.object({\n id: z.string(),\n version: z.string(),\n type: z.enum([\"core\", \"entity\", \"service\", \"interface\"] as const), // Required field for plugin type\n description: z.string().optional(),\n dependencies: z.array(z.string()).optional(),\n packageName: z.string(), // Package name for import resolution (e.g., \"@brains/site-builder-plugin\")\n});\n\n/**\n * Plugin capabilities that can be exposed\n */\nexport interface PluginCapabilities {\n tools: Tool[];\n resources: Resource[];\n instructions?: string;\n}\n\n/**\n * Plugin interface - combines validated metadata with the register function\n */\nexport type Plugin = z.output<typeof pluginMetadataSchema> & {\n entityActionPolicy?: EntityActionPolicyConfig;\n register(\n shell: IShell,\n context?: PluginRegistrationContext,\n ): Promise<PluginCapabilities>;\n ready?(): Promise<void>;\n shutdown?(): Promise<void>;\n requiresDaemonStartup?(): boolean;\n};\n\n/**\n * Content generation configuration - unified config object\n */\nexport interface ContentGenerationConfig {\n prompt: string;\n templateName: string;\n conversationHistory?: string;\n data?: Record<string, unknown>;\n interfacePermissionGrant?: UserPermissionLevel;\n}\n\n/**\n * Content generation function signature - used by both PluginContext and Shell\n */\nexport type GenerateContentFunction = <T = unknown>(\n config: ContentGenerationConfig,\n) => Promise<T>;\n",
|
|
18
|
+
"import { z } from \"@brains/utils/zod\";\nimport type {\n EntityActionPolicyConfig,\n UserPermissionLevel,\n} from \"@brains/templates\";\nimport {\n defaultQueryResponseSchema,\n simpleTextResponseSchema,\n createEntityResponseSchema,\n updateEntityResponseSchema,\n type DefaultQueryResponse,\n type SimpleTextResponse,\n type CreateEntityResponse,\n type UpdateEntityResponse,\n} from \"@brains/contracts\";\nimport type { IMessageBus } from \"@brains/messaging-service\";\nimport { DaemonStatusInfoSchema, type Daemon } from \"./manager/daemon-types\";\nimport type { IContentService } from \"@brains/content-service\";\nimport type { Template } from \"@brains/templates\";\nimport type { Logger } from \"@brains/utils/logger\";\nimport type {\n ContentVisibility,\n IEntityService,\n IEntityRegistry,\n ICoreEntityService,\n} from \"@brains/entity-service\";\nimport type {\n Tool,\n Resource,\n ResourceTemplate,\n Prompt,\n ToolInfo,\n} from \"@brains/mcp-service\";\nexport type {\n ToolVisibility,\n ToolContext,\n ToolResponse,\n ToolConfirmation,\n Tool,\n Resource,\n ResourceTemplate,\n Prompt,\n ToolInfo,\n} from \"@brains/mcp-service\";\nexport {\n toolResponseSchema,\n ToolContextRoutingSchema,\n} from \"@brains/mcp-service\";\nimport type { IJobQueueService, IJobsNamespace } from \"@brains/job-queue\";\nimport type { RenderService } from \"@brains/templates\";\nimport type { IConversationService } from \"@brains/conversation-service\";\nimport type { IMCPTransport } from \"@brains/mcp-service\";\nimport type { PermissionService } from \"@brains/templates\";\nimport type { DataSourceRegistry } from \"@brains/entity-service\";\nimport type { BrainCharacter } from \"@brains/identity-service\";\nimport type { AnchorProfile } from \"@brains/identity-service\";\nimport type { IAgentService } from \"@brains/ai-service\";\nimport type { IAttachmentsNamespace } from \"./service/attachment-registry\";\nimport type { IRecurringChecksNamespace } from \"@brains/recurring-checks\";\nimport type { IRuntimeStateNamespace } from \"@brains/runtime-state\";\nimport type { IRuntimeUploadsNamespace } from \"./service/upload-registry\";\nimport type {\n AIGenerationSchema,\n ImageGenerationOptions,\n ImageGenerationResult,\n} from \"@brains/ai-service\";\nimport type { RegisteredApiRoute } from \"./types/api-routes\";\nimport type { RegisteredWebRoute } from \"./types/web-routes\";\nimport type { EntityDisplayEntry } from \"@brains/site-composition\";\n\n/**\n * Handler function for plugin evaluations\n * Plugins register these to enable direct (non-chat) testing\n */\nexport type EvalHandler<TInput = unknown, TOutput = unknown> = (\n input: TInput,\n) => Promise<TOutput>;\n\n/**\n * Registry interface for plugin eval handlers\n * Abstraction that allows dependency inversion - implementation lives in ai-evaluation\n */\nexport interface IEvalHandlerRegistry {\n register(pluginId: string, handlerId: string, handler: EvalHandler): void;\n get(pluginId: string, handlerId: string): EvalHandler | undefined;\n has(pluginId: string, handlerId: string): boolean;\n list(): Array<{ pluginId: string; handlerId: string }>;\n unregister(pluginId: string, handlerId: string): boolean;\n}\n\n/**\n * Plugin info for status display\n */\nexport const pluginInfoSchema: z.ZodObject<{\n id: z.ZodString;\n type: z.ZodString;\n version: z.ZodString;\n status: z.ZodString;\n}> = z.object({\n id: z.string(),\n type: z.string(),\n version: z.string(),\n status: z.string(),\n});\n\n/**\n * Tool info for status display\n */\nexport const toolInfoSchema: z.ZodObject<{\n name: z.ZodString;\n description: z.ZodString;\n}> = z.object({\n name: z.string(),\n description: z.string(),\n});\n\n/**\n * Endpoint info — plugins advertise their user-facing URLs via\n * `context.endpoints.register({...})`. Shell collects and exposes\n * through `appInfo.endpoints` so the dashboard (and anything else)\n * can render them without knowing about individual plugins.\n */\nconst userPermissionLevelSchema: z.ZodEnum<{\n anchor: \"anchor\";\n trusted: \"trusted\";\n public: \"public\";\n}> = z.enum([\"anchor\", \"trusted\", \"public\"]);\n\nexport const endpointInfoSchema: z.ZodObject<{\n label: z.ZodString;\n url: z.ZodString;\n pluginId: z.ZodString;\n priority: z.ZodDefault<z.ZodNumber>;\n visibility: z.ZodDefault<typeof userPermissionLevelSchema>;\n}> = z.object({\n label: z.string(),\n url: z.string(),\n pluginId: z.string(),\n priority: z.number().default(100),\n visibility: userPermissionLevelSchema.default(\"public\"),\n});\n\nexport type EndpointInfo = z.output<typeof endpointInfoSchema>;\nexport type EndpointInfoInput = z.input<typeof endpointInfoSchema>;\n\nexport const interactionKindSchema: z.ZodEnum<{\n human: \"human\";\n agent: \"agent\";\n admin: \"admin\";\n protocol: \"protocol\";\n}> = z.enum([\"human\", \"agent\", \"admin\", \"protocol\"]);\n\nexport const interactionStatusSchema: z.ZodEnum<{\n available: \"available\";\n \"coming-soon\": \"coming-soon\";\n disabled: \"disabled\";\n}> = z.enum([\"available\", \"coming-soon\", \"disabled\"]);\n\nexport const interactionInfoSchema: z.ZodObject<{\n id: z.ZodString;\n label: z.ZodString;\n description: z.ZodOptional<z.ZodString>;\n href: z.ZodString;\n kind: typeof interactionKindSchema;\n pluginId: z.ZodString;\n priority: z.ZodDefault<z.ZodNumber>;\n visibility: z.ZodDefault<typeof userPermissionLevelSchema>;\n status: z.ZodDefault<typeof interactionStatusSchema>;\n}> = z.object({\n id: z.string(),\n label: z.string(),\n description: z.string().optional(),\n href: z.string(),\n kind: interactionKindSchema,\n pluginId: z.string(),\n priority: z.number().default(100),\n visibility: userPermissionLevelSchema.default(\"public\"),\n status: interactionStatusSchema.default(\"available\"),\n});\n\nexport type InteractionInfo = z.output<typeof interactionInfoSchema>;\nexport type InteractionInfoInput = z.input<typeof interactionInfoSchema>;\n\nexport const entityCountSchema: z.ZodObject<{\n entityType: z.ZodString;\n count: z.ZodNumber;\n}> = z.object({\n entityType: z.string(),\n count: z.number(),\n});\n\nexport type EntityCount = z.output<typeof entityCountSchema>;\n\n/**\n * App info schema for validation\n */\nexport const appInfoSchema: z.ZodObject<{\n model: z.ZodString;\n version: z.ZodString;\n uptime: z.ZodNumber;\n entities: z.ZodNumber;\n entityCounts: z.ZodArray<typeof entityCountSchema>;\n embeddings: z.ZodNumber;\n ai: z.ZodObject<{\n model: z.ZodString;\n embeddingModel: z.ZodString;\n }>;\n daemons: z.ZodArray<typeof DaemonStatusInfoSchema>;\n endpoints: z.ZodArray<typeof endpointInfoSchema>;\n interactions: z.ZodArray<typeof interactionInfoSchema>;\n}> = z.object({\n model: z.string(),\n version: z.string(),\n uptime: z.number(),\n entities: z.number(),\n entityCounts: z.array(entityCountSchema),\n embeddings: z.number(),\n ai: z.object({\n model: z.string(),\n embeddingModel: z.string(),\n }),\n daemons: z.array(DaemonStatusInfoSchema),\n endpoints: z.array(endpointInfoSchema),\n interactions: z.array(interactionInfoSchema),\n});\n\nexport type RuntimeAppInfo = z.output<typeof appInfoSchema>;\n\n/**\n * Query context for shell queries\n */\nexport interface QueryContext {\n userId?: string;\n conversationHistory?: string;\n messageId?: string;\n threadId?: string;\n timestamp?: string;\n [key: string]: unknown; // Allow additional properties\n}\n\n/**\n * Bounded model-as-judge request exposed to plugins.\n * Kept structural here so public plugin declarations do not import ai-service internals.\n */\nexport interface JudgeInput<T> {\n instruction: string;\n material: string;\n schema: AIGenerationSchema<T>;\n}\n\n/**\n * Shell interface that plugins use to access core services\n * This avoids circular dependencies between core and plugin-context\n */\n/**\n * Handler for a registered insight type.\n * Receives the entity service for data queries plus the caller's visibility\n * scope so aggregate insights can be filtered to what the caller is allowed\n * to see. Returns structured data.\n */\nexport type InsightHandler = (\n entityService: ICoreEntityService,\n visibilityScope: ContentVisibility,\n) => Promise<Record<string, unknown>>;\n\n/**\n * Registry for insight types.\n * Core registers generic insights; plugins register domain-specific ones.\n */\nexport interface IInsightsRegistry {\n register(type: string, handler: InsightHandler): void;\n unregister(type: string): void;\n getTypes(): string[];\n get(\n type: string,\n entityService: ICoreEntityService,\n visibilityScope: ContentVisibility,\n ): Promise<Record<string, unknown>>;\n}\n\nexport interface PluginRegistrationContext {\n /** Site/entity display metadata derived from the active site package. */\n entityDisplay?: Record<string, EntityDisplayEntry>;\n}\n\nexport interface IShell {\n // Core service accessors\n getMessageBus(): IMessageBus;\n getContentService(): IContentService;\n getLogger(): Logger;\n getEntityService(): IEntityService;\n getEntityRegistry(): IEntityRegistry;\n getJobQueueService(): IJobQueueService;\n getRenderService(): RenderService;\n getConversationService(): IConversationService;\n getMCPService(): IMCPTransport;\n listToolsForPermissionLevel(level: UserPermissionLevel): ToolInfo[];\n getPermissionService(): PermissionService;\n getDataSourceRegistry(): DataSourceRegistry;\n getAgentService(): IAgentService;\n getAttachmentRegistry(): IAttachmentsNamespace;\n getRuntimeUploadRegistry(): IRuntimeUploadsNamespace;\n getRuntimeState(): IRuntimeStateNamespace;\n getRecurringChecks(pluginId: string): IRecurringChecksNamespace;\n\n // Identity and Profile\n getIdentity(): BrainCharacter;\n getProfile(): AnchorProfile;\n\n // Domain — bare domain string (e.g. \"yeehaa.io\"), undefined for local dev\n getDomain(): string | undefined;\n getLocalSiteUrl(): string | undefined;\n shouldPreferLocalUrls(): boolean;\n getThemeCSS(): string;\n\n // Shared conversation spaces for this brain/team\n getSpaces(): string[];\n\n // Data directory - where plugins should store entity files\n // Default: ./brain-data, can be overridden for evals or custom deployments\n getDataDir(): string;\n\n // App metadata\n getAppInfo(): Promise<RuntimeAppInfo>;\n\n // High-level operations\n generateContent<T = unknown>(config: ContentGenerationConfig): Promise<T>;\n generateObject<T>(\n prompt: string,\n schema: AIGenerationSchema<T>,\n signal?: AbortSignal,\n ): Promise<{ object: T }>;\n judge<T>(input: JudgeInput<T>): Promise<{\n verdict: T;\n usage: {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n };\n }>;\n query(prompt: string, context?: QueryContext): Promise<DefaultQueryResponse>;\n\n // Image generation (requires AI_API_KEY)\n generateImage(\n prompt: string,\n options?: ImageGenerationOptions,\n ): Promise<ImageGenerationResult>;\n canGenerateImages(): boolean;\n\n registerTemplates(\n templates: Record<string, Template>,\n pluginId?: string,\n ): void;\n getTemplate(name: string): Template | undefined;\n\n // Plugin capability registration\n registerTools(pluginId: string, tools: Tool[]): void;\n registerResources(pluginId: string, resources: Resource[]): void;\n registerResourceTemplate<K extends string = string>(\n pluginId: string,\n template: ResourceTemplate<K>,\n ): void;\n registerPrompt(pluginId: string, prompt: Prompt): void;\n registerInstructions(pluginId: string, instructions: string): void;\n /** @internal Release capabilities owned by a terminally stopped plugin. */\n unregisterPluginCapabilities?(pluginId: string): void;\n\n // Plugin information\n getPluginPackageName(pluginId: string): string | undefined;\n hasPlugin(id: string): boolean;\n\n // Job operations namespace\n readonly jobs: IJobsNamespace;\n\n // Daemon registration\n registerDaemon(name: string, daemon: Daemon, pluginId: string): void;\n\n // Endpoint advertisement — plugins advertise user-facing URLs\n registerEndpoint(endpoint: EndpointInfoInput): void;\n listEndpoints(): EndpointInfo[];\n\n // Interaction advertisement — plugins advertise user/agent entry points\n registerInteraction(interaction: InteractionInfoInput): void;\n listInteractions(): InteractionInfo[];\n\n // Eval handler registration for plugin testing\n registerEvalHandler(\n pluginId: string,\n handlerId: string,\n handler: EvalHandler,\n ): void;\n\n // Insights registry for plugin-contributed insights\n getInsightsRegistry(): IInsightsRegistry;\n\n // API routes from plugins\n getPluginApiRoutes(): RegisteredApiRoute[];\n\n // Web routes from plugins\n getPluginWebRoutes(): RegisteredWebRoute[];\n}\n\n// Re-export response schemas for backward compatibility\nexport {\n defaultQueryResponseSchema,\n simpleTextResponseSchema,\n createEntityResponseSchema,\n updateEntityResponseSchema,\n type DefaultQueryResponse,\n type SimpleTextResponse,\n type CreateEntityResponse,\n type UpdateEntityResponse,\n};\n\n// Re-export MCP transport interface\nexport type { IMCPTransport } from \"@brains/mcp-service\";\n\n/**\n * Plugin type enumeration\n */\nexport type PluginType = \"core\" | \"entity\" | \"service\" | \"interface\";\n\n/**\n * Base tracking info that all interface plugins must have\n * Contains the essential rootJobId for job inheritance tracking\n */\nexport interface BaseJobTrackingInfo {\n rootJobId: string; // For inheritance tracking (required)\n}\n\n/**\n * Plugin metadata schema - validates the data portion of a plugin\n */\nexport const pluginMetadataSchema: z.ZodObject<{\n id: z.ZodString;\n version: z.ZodString;\n type: z.ZodEnum<{\n core: \"core\";\n entity: \"entity\";\n service: \"service\";\n interface: \"interface\";\n }>;\n description: z.ZodOptional<z.ZodString>;\n dependencies: z.ZodOptional<z.ZodArray<z.ZodString>>;\n packageName: z.ZodString;\n}> = z.object({\n id: z.string(),\n version: z.string(),\n type: z.enum([\"core\", \"entity\", \"service\", \"interface\"] as const), // Required field for plugin type\n description: z.string().optional(),\n dependencies: z.array(z.string()).optional(),\n packageName: z.string(), // Package name for import resolution (e.g., \"@brains/site-builder-plugin\")\n});\n\n/**\n * Plugin capabilities that can be exposed\n */\nexport interface PluginCapabilities {\n tools: Tool[];\n resources: Resource[];\n instructions?: string;\n}\n\n/**\n * Plugin interface - combines validated metadata with the register function\n */\nexport type Plugin = z.output<typeof pluginMetadataSchema> & {\n entityActionPolicy?: EntityActionPolicyConfig;\n register(\n shell: IShell,\n context?: PluginRegistrationContext,\n ): Promise<PluginCapabilities>;\n ready?(): Promise<void>;\n shutdown?(): Promise<void>;\n requiresDaemonStartup?(): boolean;\n};\n\n/**\n * Content generation configuration - unified config object\n */\nexport interface ContentGenerationConfig {\n prompt: string;\n templateName: string;\n conversationHistory?: string;\n data?: Record<string, unknown>;\n interfacePermissionGrant?: UserPermissionLevel;\n}\n\n/**\n * Content generation function signature - used by both PluginContext and Shell\n */\nexport type GenerateContentFunction = <T = unknown>(\n config: ContentGenerationConfig,\n) => Promise<T>;\n",
|
|
19
19
|
"import { z } from \"@brains/utils/zod\";\nimport {\n endpointInfoSchema,\n entityCountSchema,\n interactionInfoSchema,\n} from \"../interfaces\";\n\n// Public daemon health uses a stringified lastCheck (Date → ISO string);\n// the runtime variant in manager/daemon-types.ts uses z.date().\nconst DaemonHealthSchema: z.ZodObject<{\n status: z.ZodEnum<{\n healthy: \"healthy\";\n warning: \"warning\";\n error: \"error\";\n unknown: \"unknown\";\n }>;\n message: z.ZodOptional<z.ZodString>;\n lastCheck: z.ZodOptional<z.ZodString>;\n details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;\n}> = z.object({\n status: z.enum([\"healthy\", \"warning\", \"error\", \"unknown\"]),\n message: z.string().optional(),\n lastCheck: z.string().optional(),\n details: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst DaemonStatusSchema: z.ZodObject<{\n name: z.ZodString;\n pluginId: z.ZodString;\n status: z.ZodString;\n health: z.ZodOptional<typeof DaemonHealthSchema>;\n}> = z.object({\n name: z.string(),\n pluginId: z.string(),\n status: z.string(),\n health: DaemonHealthSchema.optional(),\n});\n\nexport const AppInfoSchema: z.ZodObject<{\n model: z.ZodString;\n version: z.ZodString;\n uptime: z.ZodNumber;\n entities: z.ZodNumber;\n entityCounts: z.ZodArray<typeof entityCountSchema>;\n embeddings: z.ZodNumber;\n ai: z.ZodObject<{\n model: z.ZodString;\n embeddingModel: z.ZodString;\n }>;\n daemons: z.ZodArray<typeof DaemonStatusSchema>;\n endpoints: z.ZodArray<typeof endpointInfoSchema>;\n interactions: z.ZodArray<typeof interactionInfoSchema>;\n}> = z.object({\n model: z.string(),\n version: z.string(),\n uptime: z.number(),\n entities: z.number(),\n entityCounts: z.array(entityCountSchema),\n embeddings: z.number(),\n ai: z.object({\n model: z.string(),\n embeddingModel: z.string(),\n }),\n daemons: z.array(DaemonStatusSchema),\n endpoints: z.array(endpointInfoSchema),\n interactions: z.array(interactionInfoSchema),\n});\n\nexport type AppInfo = z.output<typeof AppInfoSchema>;\n",
|
|
20
20
|
"import { z, type ZodType } from \"@brains/utils/zod\";\n\n/**\n * Base configuration schema that all plugins should extend\n * Provides common fields like enabled, debug, etc.\n */\nexport const basePluginConfigSchema: z.ZodObject<{\n enabled: z.ZodBoolean;\n debug: z.ZodBoolean;\n}> = z.object({\n enabled: z.boolean().describe(\"Whether the plugin is enabled\"),\n debug: z.boolean().describe(\"Enable debug logging for this plugin\"),\n});\n\n/**\n * Type helpers for plugin configuration\n */\nexport type PluginConfigSchema<TConfig> = ZodType<TConfig, unknown>;\nexport type PluginConfigInput<T extends ZodType> = z.input<T>;\nexport type PluginConfig<T extends ZodType> = z.output<T>;\n\nexport interface PluginConfigValidationIssue {\n path: string;\n code: string;\n message: string;\n}\n\nexport class PluginConfigValidationError extends Error {\n public readonly pluginId: string;\n public readonly issues: readonly PluginConfigValidationIssue[];\n\n constructor(\n pluginId: string,\n issues: readonly PluginConfigValidationIssue[],\n ) {\n super(`Invalid plugin config for ${pluginId}`);\n this.name = \"PluginConfigValidationError\";\n this.pluginId = pluginId;\n this.issues = issues;\n }\n}\n",
|
|
21
21
|
"import { z } from \"@brains/utils/zod\";\n\nexport type OperationType =\n | \"file_operations\"\n | \"content_operations\"\n | \"data_processing\"\n | \"batch_processing\";\n\nexport interface JobContextInput {\n [key: string]: unknown;\n pluginId?: string | undefined;\n progressToken?: string | number | undefined;\n operationType: OperationType;\n operationTarget?: string | undefined;\n interfaceType?: string | undefined;\n conversationId?: string | undefined;\n channelId?: string | undefined;\n silent?: boolean | undefined;\n}\n\nexport interface JobContext extends JobContextInput {\n rootJobId: string;\n}\n\n/**\n * Operation type enum for structured progress tracking and aggregation\n * Using generic categories to accommodate various plugin operations\n */\nexport const OperationTypeEnum: z.ZodEnum<{\n file_operations: \"file_operations\";\n content_operations: \"content_operations\";\n data_processing: \"data_processing\";\n batch_processing: \"batch_processing\";\n}> = z.enum([\n \"file_operations\", // directory sync, file processing, import/export\n \"content_operations\", // content generation, promotion, rollback, site building\n \"data_processing\", // entity processing, embedding generation, search indexing\n \"batch_processing\", // batch operations\n]);\n\n/**\n * Job context input schema - what callers provide when creating jobs\n * Note: rootJobId is not included here - it's managed internally by the job queue service\n * and defaults to the job's own ID for standalone jobs, or the batch ID for batch children.\n */\nexport const JobContextInputSchema: z.ZodType<JobContextInput, unknown> =\n z.object({\n pluginId: z.string().optional(),\n progressToken: z.union([z.string(), z.number()]).optional(),\n operationType: OperationTypeEnum,\n operationTarget: z.string().optional(),\n // Routing context for progress message delivery\n interfaceType: z.string().optional(), // Which interface triggered the job (e.g., \"matrix\", \"cli\")\n conversationId: z.string().optional(), // Durable conversation/session to route progress messages to\n channelId: z.string().optional(), // Transport channel/room to route progress messages to\n // Suppress all progress/completion events for this job (e.g. background\n // embedding jobs that would otherwise spam every subscriber)\n silent: z.boolean().optional(),\n });\n\n/**\n * Full job context schema - includes rootJobId for stored/transmitted metadata\n * This is what gets stored in the database and sent in progress events.\n */\nexport const JobContextSchema: z.ZodType<JobContext, unknown> = z.object({\n pluginId: z.string().optional(),\n progressToken: z.union([z.string(), z.number()]).optional(),\n operationType: OperationTypeEnum,\n operationTarget: z.string().optional(),\n interfaceType: z.string().optional(),\n conversationId: z.string().optional(),\n channelId: z.string().optional(),\n silent: z.boolean().optional(),\n rootJobId: z.string(), // Added by job queue service when job is created\n});\n\n/**\n * Deduplication strategy for job queue\n */\nexport const DeduplicationStrategyEnum: z.ZodEnum<{\n none: \"none\";\n skip: \"skip\";\n replace: \"replace\";\n coalesce: \"coalesce\";\n}> = z.enum([\n \"none\", // No deduplication (default behavior)\n \"skip\", // Skip if PENDING job exists (allows queueing if only PROCESSING)\n \"replace\", // Cancel pending job and create new one\n \"coalesce\", // Update existing job's timestamp\n]);\n\nexport type DeduplicationStrategy = z.output<typeof DeduplicationStrategyEnum>;\n\n/**\n * Job options for job creation\n */\nexport interface JobOptions {\n priority?: number; // Job priority (lower = higher priority, 0 = default)\n maxRetries?: number; // Override default retry count\n delayMs?: number; // Initial delay before processing\n source: string; // Source identifier for job progress events\n metadata: JobContextInput; // Caller-provided metadata (rootJobId is added by job queue service)\n deduplication?: DeduplicationStrategy; // Deduplication strategy (default: \"none\")\n deduplicationKey?: string; // Optional key for fine-grained deduplication\n /**\n * Override rootJobId for batch child jobs\n * External callers should not use this - it's set automatically by the job queue service\n * Batch jobs use this to link child jobs to the parent batch\n */\n rootJobId?: string;\n}\n\n/**\n * Job statistics\n */\nexport interface JobStats {\n pending: number;\n processing: number;\n failed: number;\n completed: number;\n total: number;\n}\n",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"import {\n coerceConversationMetadata,\n type Conversation as RuntimeConversation,\n type Message as RuntimeMessage,\n} from \"@brains/conversation-service\";\nimport {\n messageRoleSchema,\n type Conversation,\n type Message,\n type MessageRole,\n} from \"../contracts/conversations\";\n\nfunction toPublicRole(role: string): MessageRole {\n const result = messageRoleSchema.safeParse(role);\n return result.success ? result.data : \"user\";\n}\n\nexport function toPublicConversation(\n conversation: RuntimeConversation,\n): Conversation {\n const metadata = coerceConversationMetadata(conversation.metadata);\n const channelName =\n typeof metadata[\"channelName\"] === \"string\"\n ? metadata[\"channelName\"]\n : undefined;\n\n return {\n id: conversation.id,\n sessionId: conversation.sessionId,\n interfaceType: conversation.interfaceType,\n channelId: conversation.channelId,\n channelName,\n startedAt: conversation.started,\n lastActiveAt: conversation.lastActive,\n createdAt: conversation.created,\n updatedAt: conversation.updated,\n metadata,\n };\n}\n\nexport function toPublicMessage(message: RuntimeMessage): Message {\n return {\n id: message.id,\n conversationId: message.conversationId,\n role: toPublicRole(message.role),\n content: message.content,\n timestamp: message.timestamp,\n metadata: coerceConversationMetadata(message.metadata),\n };\n}\n",
|
|
34
34
|
"import type {\n AnchorProfile as RuntimeAnchorProfile,\n BrainCharacter as RuntimeBrainCharacter,\n} from \"@brains/identity-service\";\nimport {\n AnchorProfileSchema,\n BrainCharacterSchema,\n type AnchorProfile,\n type BrainCharacter,\n} from \"../contracts/identity\";\n\nexport function toPublicBrainCharacter(\n character: RuntimeBrainCharacter,\n): BrainCharacter {\n return BrainCharacterSchema.parse(character);\n}\n\nexport function toPublicAnchorProfile(\n profile: RuntimeAnchorProfile,\n): AnchorProfile {\n return AnchorProfileSchema.parse(profile);\n}\n",
|
|
35
35
|
"import type { GetMessagesOptions } from \"@brains/conversation-service\";\nimport type { JobsNamespace } from \"@brains/job-queue\";\nimport {\n createEnqueueBatchFn,\n createEnqueueJobFn,\n createRegisterHandlerFn,\n} from \"@brains/job-queue\";\nimport type { MessageHandler, MessageSender } from \"@brains/messaging-service\";\nimport type { Logger } from \"@brains/utils/logger\";\nimport type { AppInfo } from \"../contracts/app-info\";\nimport type { Conversation, Message } from \"../contracts/conversations\";\nimport type { EvalHandler, InsightHandler, IShell } from \"../interfaces\";\nimport type { Channel } from \"../utils/channels\";\nimport { isChannel } from \"../utils/channels\";\nimport { toPublicAppInfo } from \"./public-app-info\";\nimport { toPublicConversation, toPublicMessage } from \"./public-conversations\";\nimport {\n toPublicAnchorProfile,\n toPublicBrainCharacter,\n} from \"./public-identity\";\nimport type {\n IConversationsNamespace,\n IEndpointsNamespace,\n IEvalNamespace,\n IIdentityNamespace,\n IInsightsNamespace,\n IInteractionsNamespace,\n IMessagingNamespace,\n IPermissionsNamespace,\n TypedMessageHandler,\n} from \"./context-types\";\n\nexport function createAppInfoGetter(shell: IShell): () => Promise<AppInfo> {\n return async (): Promise<AppInfo> => {\n return toPublicAppInfo(await shell.getAppInfo());\n };\n}\n\nexport function createIdentityNamespace(\n shell: IShell,\n getAppInfo: () => Promise<AppInfo>,\n): IIdentityNamespace {\n return {\n get: () => toPublicBrainCharacter(shell.getIdentity()),\n getProfile: () => toPublicAnchorProfile(shell.getProfile()),\n getAppInfo,\n };\n}\n\nexport function createMessagingNamespace(\n shell: IShell,\n pluginId: string,\n logger: Logger,\n): IMessagingNamespace {\n const messageBus = shell.getMessageBus();\n const sendMessage: MessageSender = async (request) => {\n return messageBus.send({\n ...request,\n sender: pluginId,\n });\n };\n\n return {\n send: sendMessage,\n subscribe: <T = unknown, R = unknown>(\n channelOrName: string | Channel<T, R>,\n handler: MessageHandler<T, R> | TypedMessageHandler<T, R>,\n ): (() => void) => {\n if (isChannel(channelOrName)) {\n const channel = channelOrName;\n const typedHandler = handler as TypedMessageHandler<T, R>;\n\n const wrappedHandler: MessageHandler<unknown, R> = async (message) => {\n const parseResult = channel.schema.safeParse(message.payload);\n if (!parseResult.success) {\n logger.warn(`Invalid payload for channel ${channel.name}`, {\n error: parseResult.error.message,\n });\n return { noop: true };\n }\n\n const { payload: _payload, ...baseMessage } = message;\n return typedHandler(parseResult.data as T, baseMessage);\n };\n\n return messageBus.subscribe(channel.name, wrappedHandler);\n }\n\n return messageBus.subscribe(\n channelOrName,\n handler as MessageHandler<T, R>,\n );\n },\n };\n}\n\nexport function createJobsNamespace(\n shell: IShell,\n pluginId: string,\n): JobsNamespace {\n const jobQueueService = shell.getJobQueueService();\n return {\n ...shell.jobs,\n enqueue: createEnqueueJobFn(jobQueueService, pluginId, true),\n enqueueBatch: createEnqueueBatchFn(shell.jobs, pluginId),\n registerHandler: createRegisterHandlerFn(jobQueueService, pluginId),\n };\n}\n\nexport function createPermissionsNamespace(\n shell: IShell,\n): IPermissionsNamespace {\n const permissionService = shell.getPermissionService();\n return {\n assertEntityActionAllowed: (entityType, action, context): void => {\n permissionService.assertEntityActionAllowed(\n entityType,\n action,\n context.userPermissionLevel,\n );\n },\n };\n}\n\nexport function createConversationsNamespace(\n shell: IShell,\n): IConversationsNamespace {\n return {\n get: async (conversationId: string): Promise<Conversation | null> => {\n const conversationService = shell.getConversationService();\n const conversation =\n await conversationService.getConversation(conversationId);\n return conversation ? toPublicConversation(conversation) : null;\n },\n search: async (query: string): Promise<Conversation[]> => {\n const conversationService = shell.getConversationService();\n const conversations =\n await conversationService.searchConversations(query);\n return conversations.map(toPublicConversation);\n },\n list: async (options): Promise<Conversation[]> => {\n const conversationService = shell.getConversationService();\n const conversations =\n await conversationService.listConversations(options);\n return conversations.map(toPublicConversation);\n },\n getMessages: async (\n conversationId: string,\n options?: GetMessagesOptions,\n ): Promise<Message[]> => {\n const conversationService = shell.getConversationService();\n const messages = await conversationService.getMessages(\n conversationId,\n options,\n );\n return messages.map(toPublicMessage);\n },\n countMessages: async (conversationId: string): Promise<number> => {\n return shell.getConversationService().countMessages(conversationId);\n },\n };\n}\n\nexport function createEvalNamespace(\n shell: IShell,\n pluginId: string,\n): IEvalNamespace {\n return {\n registerHandler: (handlerId: string, handler: EvalHandler): void => {\n shell.registerEvalHandler(pluginId, handlerId, handler);\n },\n };\n}\n\nexport function createInsightsNamespace(shell: IShell): IInsightsNamespace {\n return {\n register: (type: string, handler: InsightHandler): void => {\n shell.getInsightsRegistry().register(type, handler);\n },\n };\n}\n\nexport function createEndpointsNamespace(\n shell: IShell,\n pluginId: string,\n): IEndpointsNamespace {\n return {\n register: (endpoint): void => {\n shell.registerEndpoint({ ...endpoint, pluginId });\n },\n };\n}\n\nexport function createInteractionsNamespace(\n shell: IShell,\n pluginId: string,\n): IInteractionsNamespace {\n return {\n register: (interaction): void => {\n shell.registerInteraction({ ...interaction, pluginId });\n },\n };\n}\n",
|
|
36
|
-
"import type { IShell } from \"../interfaces\";\nimport { type Logger } from \"@brains/utils/logger\";\nimport { derivePreviewDomain } from \"@brains/site-composition\";\nimport type {\n ICoreEntityService,\n ProjectSemanticSpaceRequest,\n SemanticSpaceProjection,\n} from \"@brains/entity-service\";\nimport type { JudgeInput, PluginRegistrationContext } from \"../interfaces\";\nimport type { AppInfo } from \"../contracts/app-info\";\nimport type { EntityDisplayEntry } from \"@brains/site-composition\";\nimport type { JobsNamespace } from \"@brains/job-queue\";\nimport type { IRuntimeStateNamespace } from \"@brains/runtime-state\";\nimport type { IAttachmentsNamespace } from \"../service/attachment-registry\";\nimport type { IRuntimeUploadsNamespace } from \"../service/upload-registry\";\nimport {\n createAppInfoGetter,\n createConversationsNamespace,\n createEndpointsNamespace,\n createEvalNamespace,\n createIdentityNamespace,\n createInsightsNamespace,\n createInteractionsNamespace,\n createJobsNamespace,\n createMessagingNamespace,\n createPermissionsNamespace,\n} from \"./namespaces\";\nimport type {\n IConversationsNamespace,\n IEndpointsNamespace,\n IEvalNamespace,\n IIdentityNamespace,\n IInsightsNamespace,\n IInteractionsNamespace,\n IMessagingNamespace,\n IPermissionsNamespace,\n} from \"./context-types\";\n\nexport interface ISemanticNamespace {\n project(\n request: ProjectSemanticSpaceRequest,\n ): Promise<SemanticSpaceProjection>;\n}\n\nexport type {\n IConversationsNamespace,\n IEndpointsNamespace,\n IEvalNamespace,\n IIdentityNamespace,\n IInsightsNamespace,\n IInteractionsNamespace,\n IMessagingNamespace,\n IPermissionsNamespace,\n TypedMessageHandler,\n} from \"./context-types\";\n\n/**\n * Base plugin context — shared by all plugin types (Entity, Service, Interface).\n *\n * Contains only capabilities that every plugin needs.\n * AI, templates, views, and transport are on sibling contexts.\n */\nexport interface BasePluginContext {\n // ============================================================================\n // Plugin Identity\n // ============================================================================\n\n /** Unique plugin identifier */\n readonly pluginId: string;\n\n /** Logger instance for this plugin */\n readonly logger: Logger;\n\n /** Data directory for storing entity files */\n readonly dataDir: string;\n\n /** Bare domain string (e.g. \"yeehaa.io\"), undefined for local dev */\n readonly domain: string | undefined;\n\n /** Production site URL derived from domain (e.g. \"https://yeehaa.io\"), undefined if no domain */\n readonly siteUrl: string | undefined;\n\n /** Local runtime site URL (e.g. \"http://localhost:8080\"), undefined when unavailable */\n readonly localSiteUrl: string | undefined;\n\n /** Preview site URL derived from domain (e.g. \"https://preview.yeehaa.io\" or \"https://preview.recall.rizom.ai\"), undefined if no domain */\n readonly previewUrl: string | undefined;\n\n /** Prefer local runtime URLs over public domain URLs when both exist. */\n readonly preferLocalUrls: boolean;\n\n /** Active resolved theme CSS for site, dashboard, and media rendering. */\n readonly themeCSS: string;\n\n /** Entity display metadata from the active site package, if any */\n readonly entityDisplay: Record<string, EntityDisplayEntry> | undefined;\n\n /** Shared conversation spaces for this brain/team */\n readonly spaces: string[];\n\n /** Entity action policy assertions for plugin-owned tools and handlers. */\n readonly permissions: IPermissionsNamespace;\n\n /** App metadata (version, model, plugins) */\n readonly appInfo: () => Promise<AppInfo>;\n\n /** Bounded model-as-judge capability; schema-constrained verdicts only. */\n readonly judge: <T>(input: JudgeInput<T>) => Promise<{\n verdict: T;\n usage: {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n };\n }>;\n\n // ============================================================================\n // Entity Service (Read-Only)\n // ============================================================================\n\n /** Core entity service with read-only operations */\n readonly entityService: ICoreEntityService;\n\n /** Provider-independent semantic indexing operations. */\n readonly semantic: ISemanticNamespace;\n\n // ============================================================================\n // Brain Identity & Profile\n // ============================================================================\n\n /**\n * Identity namespace\n * - `identity.get()` - Get the brain's identity configuration\n * - `identity.getProfile()` - Get the owner's profile\n * - `identity.getAppInfo()` - Get app metadata\n */\n readonly identity: IIdentityNamespace;\n\n // ============================================================================\n // Inter-Plugin Messaging\n // ============================================================================\n\n /**\n * Messaging namespace\n * - `messaging.send()` - Send a message to other plugins\n * - `messaging.subscribe()` - Subscribe to messages on a channel\n */\n readonly messaging: IMessagingNamespace;\n\n // ============================================================================\n // Job Queue (monitoring + scoped write)\n // ============================================================================\n\n /** Job operations — monitoring + plugin-scoped enqueue/registerHandler */\n readonly jobs: JobsNamespace;\n\n // ============================================================================\n // Source-derived Attachments\n // ============================================================================\n\n /** Source-derived publish attachment resolution namespace */\n readonly attachments: IAttachmentsNamespace;\n\n // ============================================================================\n // Runtime Uploads\n // ============================================================================\n\n /** Ephemeral runtime upload storage namespace. */\n readonly uploads: IRuntimeUploadsNamespace;\n\n // ============================================================================\n // Runtime State\n // ============================================================================\n\n /** Disposable, secret-free operational state namespace. */\n readonly runtimeState: IRuntimeStateNamespace;\n\n // ============================================================================\n // Conversations (Read-Only)\n // ============================================================================\n\n /**\n * Conversations namespace\n * - `conversations.get()` - Get a conversation by ID\n * - `conversations.search()` - Search conversations by query\n * - `conversations.getMessages()` - Get messages from a conversation\n */\n readonly conversations: IConversationsNamespace;\n\n // ============================================================================\n // Evaluation\n // ============================================================================\n\n /**\n * Eval namespace for plugin testing\n * - `eval.registerHandler()` - Register an eval handler\n */\n readonly eval: IEvalNamespace;\n\n // ============================================================================\n // Insights\n // ============================================================================\n\n /**\n * Insights namespace\n * - `insights.register()` - Register a domain-specific insight handler\n */\n readonly insights: IInsightsNamespace;\n\n // ============================================================================\n // Endpoint Advertisement\n // ============================================================================\n\n /**\n * Endpoints namespace — advertise this plugin's user-facing URLs\n * so they surface in `appInfo.endpoints` for the dashboard and\n * other operator-facing consumers.\n */\n readonly endpoints: IEndpointsNamespace;\n\n /**\n * Interactions namespace — advertise user/agent entry points for this brain.\n */\n readonly interactions: IInteractionsNamespace;\n}\n\n/**\n * Create a BasePluginContext from the shell.\n *\n * Used by all three sibling context factories (entity, service, interface).\n */\nexport function createBasePluginContext(\n shell: IShell,\n pluginId: string,\n registrationContext?: PluginRegistrationContext,\n): BasePluginContext {\n const entityService = shell.getEntityService();\n const logger = shell.getLogger().child(pluginId);\n const domain = shell.getDomain();\n const localSiteUrl = shell.getLocalSiteUrl();\n const preferLocalUrls = shell.shouldPreferLocalUrls();\n const themeCSS = shell.getThemeCSS();\n const getAppInfo = createAppInfoGetter(shell);\n const attachments = shell.getAttachmentRegistry();\n const uploads = shell.getRuntimeUploadRegistry();\n const runtimeState = shell.getRuntimeState();\n\n return {\n pluginId,\n logger,\n entityService,\n\n semantic: {\n project: (request) => entityService.projectSemanticSpace(request),\n },\n\n identity: createIdentityNamespace(shell, getAppInfo),\n\n appInfo: getAppInfo,\n judge: (input) => shell.judge(input),\n\n domain,\n siteUrl: domain ? `https://${domain}` : undefined,\n localSiteUrl,\n previewUrl: domain ? `https://${derivePreviewDomain(domain)}` : undefined,\n preferLocalUrls,\n themeCSS,\n entityDisplay: registrationContext?.entityDisplay,\n spaces: shell.getSpaces(),\n\n permissions: createPermissionsNamespace(shell),\n\n messaging: createMessagingNamespace(shell, pluginId, logger),\n\n jobs: createJobsNamespace(shell, pluginId),\n\n attachments,\n\n uploads,\n\n runtimeState,\n\n conversations: createConversationsNamespace(shell),\n\n dataDir: shell.getDataDir(),\n\n eval: createEvalNamespace(shell, pluginId),\n\n insights: createInsightsNamespace(shell),\n\n endpoints: createEndpointsNamespace(shell, pluginId),\n interactions: createInteractionsNamespace(shell, pluginId),\n };\n}\n",
|
|
36
|
+
"import type { IShell } from \"../interfaces\";\nimport { type Logger } from \"@brains/utils/logger\";\nimport { derivePreviewDomain } from \"@brains/site-composition\";\nimport type {\n ICoreEntityService,\n ProjectSemanticSpaceRequest,\n SemanticSpaceProjection,\n} from \"@brains/entity-service\";\nimport type { JudgeInput, PluginRegistrationContext } from \"../interfaces\";\nimport type { AppInfo } from \"../contracts/app-info\";\nimport type { EntityDisplayEntry } from \"@brains/site-composition\";\nimport type { JobsNamespace } from \"@brains/job-queue\";\nimport type { IRecurringChecksNamespace } from \"@brains/recurring-checks\";\nimport type { IRuntimeStateNamespace } from \"@brains/runtime-state\";\nimport type { IAttachmentsNamespace } from \"../service/attachment-registry\";\nimport type { IRuntimeUploadsNamespace } from \"../service/upload-registry\";\nimport {\n createAppInfoGetter,\n createConversationsNamespace,\n createEndpointsNamespace,\n createEvalNamespace,\n createIdentityNamespace,\n createInsightsNamespace,\n createInteractionsNamespace,\n createJobsNamespace,\n createMessagingNamespace,\n createPermissionsNamespace,\n} from \"./namespaces\";\nimport type {\n IConversationsNamespace,\n IEndpointsNamespace,\n IEvalNamespace,\n IIdentityNamespace,\n IInsightsNamespace,\n IInteractionsNamespace,\n IMessagingNamespace,\n IPermissionsNamespace,\n} from \"./context-types\";\n\nexport interface ISemanticNamespace {\n project(\n request: ProjectSemanticSpaceRequest,\n ): Promise<SemanticSpaceProjection>;\n}\n\nexport type {\n IConversationsNamespace,\n IEndpointsNamespace,\n IEvalNamespace,\n IIdentityNamespace,\n IInsightsNamespace,\n IInteractionsNamespace,\n IMessagingNamespace,\n IPermissionsNamespace,\n TypedMessageHandler,\n} from \"./context-types\";\n\n/**\n * Base plugin context — shared by all plugin types (Entity, Service, Interface).\n *\n * Contains only capabilities that every plugin needs.\n * AI, templates, views, and transport are on sibling contexts.\n */\nexport interface BasePluginContext {\n // ============================================================================\n // Plugin Identity\n // ============================================================================\n\n /** Unique plugin identifier */\n readonly pluginId: string;\n\n /** Logger instance for this plugin */\n readonly logger: Logger;\n\n /** Data directory for storing entity files */\n readonly dataDir: string;\n\n /** Bare domain string (e.g. \"yeehaa.io\"), undefined for local dev */\n readonly domain: string | undefined;\n\n /** Production site URL derived from domain (e.g. \"https://yeehaa.io\"), undefined if no domain */\n readonly siteUrl: string | undefined;\n\n /** Local runtime site URL (e.g. \"http://localhost:8080\"), undefined when unavailable */\n readonly localSiteUrl: string | undefined;\n\n /** Preview site URL derived from domain (e.g. \"https://preview.yeehaa.io\" or \"https://preview.recall.rizom.ai\"), undefined if no domain */\n readonly previewUrl: string | undefined;\n\n /** Prefer local runtime URLs over public domain URLs when both exist. */\n readonly preferLocalUrls: boolean;\n\n /** Active resolved theme CSS for site, dashboard, and media rendering. */\n readonly themeCSS: string;\n\n /** Entity display metadata from the active site package, if any */\n readonly entityDisplay: Record<string, EntityDisplayEntry> | undefined;\n\n /** Shared conversation spaces for this brain/team */\n readonly spaces: string[];\n\n /** Entity action policy assertions for plugin-owned tools and handlers. */\n readonly permissions: IPermissionsNamespace;\n\n /** App metadata (version, model, plugins) */\n readonly appInfo: () => Promise<AppInfo>;\n\n /** Bounded model-as-judge capability; schema-constrained verdicts only. */\n readonly judge: <T>(input: JudgeInput<T>) => Promise<{\n verdict: T;\n usage: {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n };\n }>;\n\n // ============================================================================\n // Entity Service (Read-Only)\n // ============================================================================\n\n /** Core entity service with read-only operations */\n readonly entityService: ICoreEntityService;\n\n /** Provider-independent semantic indexing operations. */\n readonly semantic: ISemanticNamespace;\n\n // ============================================================================\n // Brain Identity & Profile\n // ============================================================================\n\n /**\n * Identity namespace\n * - `identity.get()` - Get the brain's identity configuration\n * - `identity.getProfile()` - Get the owner's profile\n * - `identity.getAppInfo()` - Get app metadata\n */\n readonly identity: IIdentityNamespace;\n\n // ============================================================================\n // Inter-Plugin Messaging\n // ============================================================================\n\n /**\n * Messaging namespace\n * - `messaging.send()` - Send a message to other plugins\n * - `messaging.subscribe()` - Subscribe to messages on a channel\n */\n readonly messaging: IMessagingNamespace;\n\n // ============================================================================\n // Job Queue (monitoring + scoped write)\n // ============================================================================\n\n /** Job operations — monitoring + plugin-scoped enqueue/registerHandler */\n readonly jobs: JobsNamespace;\n\n // ============================================================================\n // Source-derived Attachments\n // ============================================================================\n\n /** Source-derived publish attachment resolution namespace */\n readonly attachments: IAttachmentsNamespace;\n\n // ============================================================================\n // Runtime Uploads\n // ============================================================================\n\n /** Ephemeral runtime upload storage namespace. */\n readonly uploads: IRuntimeUploadsNamespace;\n\n // ============================================================================\n // Runtime State\n // ============================================================================\n\n /** Disposable, secret-free operational state namespace. */\n readonly runtimeState: IRuntimeStateNamespace;\n\n /** Shell-owned recurring checks registered by this plugin. */\n readonly recurringChecks: IRecurringChecksNamespace;\n\n // ============================================================================\n // Conversations (Read-Only)\n // ============================================================================\n\n /**\n * Conversations namespace\n * - `conversations.get()` - Get a conversation by ID\n * - `conversations.search()` - Search conversations by query\n * - `conversations.getMessages()` - Get messages from a conversation\n */\n readonly conversations: IConversationsNamespace;\n\n // ============================================================================\n // Evaluation\n // ============================================================================\n\n /**\n * Eval namespace for plugin testing\n * - `eval.registerHandler()` - Register an eval handler\n */\n readonly eval: IEvalNamespace;\n\n // ============================================================================\n // Insights\n // ============================================================================\n\n /**\n * Insights namespace\n * - `insights.register()` - Register a domain-specific insight handler\n */\n readonly insights: IInsightsNamespace;\n\n // ============================================================================\n // Endpoint Advertisement\n // ============================================================================\n\n /**\n * Endpoints namespace — advertise this plugin's user-facing URLs\n * so they surface in `appInfo.endpoints` for the dashboard and\n * other operator-facing consumers.\n */\n readonly endpoints: IEndpointsNamespace;\n\n /**\n * Interactions namespace — advertise user/agent entry points for this brain.\n */\n readonly interactions: IInteractionsNamespace;\n}\n\n/**\n * Create a BasePluginContext from the shell.\n *\n * Used by all three sibling context factories (entity, service, interface).\n */\nexport function createBasePluginContext(\n shell: IShell,\n pluginId: string,\n registrationContext?: PluginRegistrationContext,\n): BasePluginContext {\n const entityService = shell.getEntityService();\n const logger = shell.getLogger().child(pluginId);\n const domain = shell.getDomain();\n const localSiteUrl = shell.getLocalSiteUrl();\n const preferLocalUrls = shell.shouldPreferLocalUrls();\n const themeCSS = shell.getThemeCSS();\n const getAppInfo = createAppInfoGetter(shell);\n const attachments = shell.getAttachmentRegistry();\n const uploads = shell.getRuntimeUploadRegistry();\n const runtimeState = shell.getRuntimeState();\n\n return {\n pluginId,\n logger,\n entityService,\n\n semantic: {\n project: (request) => entityService.projectSemanticSpace(request),\n },\n\n identity: createIdentityNamespace(shell, getAppInfo),\n\n appInfo: getAppInfo,\n judge: (input) => shell.judge(input),\n\n domain,\n siteUrl: domain ? `https://${domain}` : undefined,\n localSiteUrl,\n previewUrl: domain ? `https://${derivePreviewDomain(domain)}` : undefined,\n preferLocalUrls,\n themeCSS,\n entityDisplay: registrationContext?.entityDisplay,\n spaces: shell.getSpaces(),\n\n permissions: createPermissionsNamespace(shell),\n\n messaging: createMessagingNamespace(shell, pluginId, logger),\n\n jobs: createJobsNamespace(shell, pluginId),\n\n attachments,\n\n uploads,\n\n runtimeState,\n recurringChecks: shell.getRecurringChecks(pluginId),\n\n conversations: createConversationsNamespace(shell),\n\n dataDir: shell.getDataDir(),\n\n eval: createEvalNamespace(shell, pluginId),\n\n insights: createInsightsNamespace(shell),\n\n endpoints: createEndpointsNamespace(shell, pluginId),\n interactions: createInteractionsNamespace(shell, pluginId),\n };\n}\n",
|
|
37
37
|
"import type { IEntityService } from \"@brains/entity-service\";\nimport {\n generateMarkdownWithFrontmatter,\n parseMarkdownWithFrontmatter,\n} from \"@brains/entity-service\";\nimport type { TemplateRegistry } from \"@brains/templates\";\nimport { z } from \"@brains/utils/zod\";\n\nfunction targetToEntityId(target: string): string {\n return target.replace(/:/g, \"-\");\n}\n\nfunction targetToTitle(target: string): string {\n return target\n .split(/[:.-]/)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n\n/** Caches resolved prompt bodies and tracks materialization */\nconst promptCache = new Map<string, string>();\n\n/**\n * Resolve a prompt by target name.\n *\n * Looks up a prompt entity in the database. If found, returns the body\n * (markdown content stripped of frontmatter). If not found, creates the\n * entity from the fallback default (materializing it in DB + on disk via\n * directory-sync auto-export), then returns the fallback.\n *\n * Results are cached — subsequent calls for the same target skip the DB.\n */\nexport async function resolvePrompt(\n entityService: IEntityService,\n target: string,\n fallback: string,\n): Promise<string> {\n const cached = promptCache.get(target);\n if (cached !== undefined) return cached;\n\n const entityId = targetToEntityId(target);\n\n let entity;\n try {\n entity = await entityService.getEntity({\n entityType: \"prompt\",\n id: entityId,\n });\n } catch {\n // DB error — return fallback without caching so next call retries\n return fallback;\n }\n\n if (entity?.content) {\n const body = parseMarkdownWithFrontmatter(\n entity.content,\n z.record(z.string(), z.unknown()),\n ).content;\n promptCache.set(target, body);\n return body;\n }\n\n // Entity doesn't exist — materialize the default prompt\n try {\n const title = targetToTitle(target);\n const content = generateMarkdownWithFrontmatter(fallback, {\n title,\n target,\n });\n await entityService.createEntity({\n entity: {\n id: entityId,\n entityType: \"prompt\",\n content,\n metadata: { title, target, slug: entityId },\n },\n });\n } catch {\n // Creation failed (e.g. entity type not registered yet) — silent fallback\n }\n\n promptCache.set(target, fallback);\n return fallback;\n}\n\n/**\n * Reset the prompt cache (for testing).\n */\nexport function resetPromptCache(): void {\n promptCache.clear();\n}\n\n/**\n * Materialize prompt entities for every registered template that carries a\n * basePrompt. Returns the number of templates materialized.\n */\nexport async function materializePrompts(\n templateRegistry: TemplateRegistry,\n entityService: IEntityService,\n): Promise<number> {\n const promptTemplates = templateRegistry\n .list()\n .filter((t): t is typeof t & { basePrompt: string } => !!t.basePrompt);\n\n await Promise.all(\n promptTemplates.map((t) =>\n resolvePrompt(entityService, t.name, t.basePrompt),\n ),\n );\n\n return promptTemplates.length;\n}\n",
|
|
38
38
|
"import type {\n BaseEntity,\n CreateInterceptor,\n DataSource,\n UploadSaveHandlerRegistration,\n EntityAdapter,\n EntityTypeConfig,\n IEntitiesNamespace,\n IEntityService,\n} from \"@brains/entity-service\";\nimport type { IShell } from \"../interfaces\";\nimport { resolvePrompt } from \"./prompt-resolver\";\n\n/**\n * Prompts namespace — resolves AI prompts from prompt entities\n */\nexport interface IPromptsNamespace {\n /** Resolve a prompt by target name. Returns entity content if found, fallback otherwise. */\n resolve: (target: string, fallback: string) => Promise<string>;\n}\n\ntype EntitySchema<TEntity extends BaseEntity> =\n EntityAdapter<TEntity>[\"schema\"];\ntype FrontmatterSchema = NonNullable<\n EntityAdapter<BaseEntity>[\"frontmatterSchema\"]\n>;\n\n/**\n * Create the shared entity-management namespace used by entity and service\n * plugin contexts.\n */\nexport function createEntitiesNamespace(shell: IShell): IEntitiesNamespace {\n const entityService = shell.getEntityService();\n const entityRegistry = shell.getEntityRegistry();\n const dataSourceRegistry = shell.getDataSourceRegistry();\n\n return {\n register: <T extends BaseEntity>(\n entityType: string,\n schema: EntitySchema<T>,\n adapter: EntityAdapter<T>,\n config?: EntityTypeConfig,\n ): void => {\n entityRegistry.registerEntityType(entityType, schema, adapter, config);\n },\n getAdapter: (entityType: string): EntityAdapter<BaseEntity> | undefined => {\n try {\n return entityRegistry.getAdapter(entityType);\n } catch {\n return undefined;\n }\n },\n extendFrontmatterSchema: (\n type: string,\n extension: FrontmatterSchema,\n ): void => {\n entityRegistry.extendFrontmatterSchema(type, extension);\n },\n getEffectiveFrontmatterSchema: (\n type: string,\n ): FrontmatterSchema | undefined => {\n return entityRegistry.getEffectiveFrontmatterSchema(type);\n },\n registerCreateInterceptor: (\n entityType: string,\n interceptor: CreateInterceptor,\n ): void => {\n entityRegistry.registerCreateInterceptor(entityType, interceptor);\n },\n registerUploadSaveHandler: (\n registration: UploadSaveHandlerRegistration,\n ): void => {\n entityRegistry.registerUploadSaveHandler(registration);\n },\n getUploadSaveHandler: (\n mediaType: string,\n ): UploadSaveHandlerRegistration | undefined => {\n return entityRegistry.getUploadSaveHandler(mediaType);\n },\n update: async <T extends BaseEntity>(\n entity: T,\n ): Promise<{ entityId: string; jobId: string }> => {\n return entityService.updateEntity({ entity: entity });\n },\n registerDataSource: (dataSource: DataSource): void => {\n dataSourceRegistry.register(dataSource);\n },\n };\n}\n\n/** Create the shared prompt-resolution namespace. */\nexport function createPromptsNamespace(\n entityService: IEntityService,\n): IPromptsNamespace {\n return {\n resolve: (target: string, fallback: string): Promise<string> => {\n return resolvePrompt(entityService, target, fallback);\n },\n };\n}\n",
|
|
39
39
|
"import type { BasePluginContext, IPermissionsNamespace } from \"../base/context\";\nimport { createBasePluginContext } from \"../base/context\";\nimport type {\n IShell,\n ContentGenerationConfig,\n PluginRegistrationContext,\n} from \"../interfaces\";\nimport type {\n IEntityService,\n IEntitiesNamespace,\n} from \"@brains/entity-service\";\nimport { createEntitiesNamespace, createPromptsNamespace } from \"./namespaces\";\nimport type { IPromptsNamespace } from \"./namespaces\";\nimport type { DefaultQueryResponse } from \"@brains/contracts\";\nimport type { ZodType } from \"@brains/utils/zod\";\n\nexport type { IEntitiesNamespace };\nexport type { IPromptsNamespace };\n\nexport type AIGenerationSchema<T> = ZodType<T>;\n\nexport type AspectRatio = \"1:1\" | \"16:9\" | \"9:16\" | \"4:3\" | \"3:4\";\n\nexport interface ImageGenerationOptions {\n aspectRatio?: AspectRatio;\n signal?: AbortSignal;\n}\n\nexport interface ImageGenerationResult {\n base64: string;\n dataUrl: string;\n}\n\nexport interface FrontmatterSchemaParser {\n parse(data: unknown): unknown;\n}\n\nexport interface EntityPluginEntitiesNamespace extends Omit<\n IEntitiesNamespace,\n \"getEffectiveFrontmatterSchema\"\n> {\n getEffectiveFrontmatterSchema(\n type: string,\n ): FrontmatterSchemaParser | undefined;\n}\n\n/**\n * AI namespace for entity plugins — includes generation capabilities\n */\nexport interface IEntityAINamespace {\n /** Query the AI with optional context */\n query: (\n prompt: string,\n context?: Record<string, unknown>,\n ) => Promise<DefaultQueryResponse>;\n\n /** Generate content using AI with template */\n generate: <T = unknown>(config: ContentGenerationConfig) => Promise<T>;\n\n /** Generate a structured object using AI with a schema parser */\n generateObject: <T>(\n prompt: string,\n schema: AIGenerationSchema<T>,\n signal?: AbortSignal,\n ) => Promise<{ object: T }>;\n\n /** Generate an image using AI (requires AI_API_KEY) */\n generateImage: (\n prompt: string,\n options?: ImageGenerationOptions,\n ) => Promise<ImageGenerationResult>;\n\n /** Check if image generation is available */\n canGenerateImages: () => boolean;\n}\n\n/**\n * Context for entity plugins.\n *\n * Includes: entity registration, AI generation, prompt resolution, messaging, jobs.\n * Excludes: templates, views, MCP registration, transport.\n */\nexport interface EntityPluginContext extends BasePluginContext {\n readonly entityService: IEntityService;\n readonly entities: EntityPluginEntitiesNamespace;\n readonly ai: IEntityAINamespace;\n readonly prompts: IPromptsNamespace;\n readonly permissions: IPermissionsNamespace;\n}\n\n/**\n * Create an EntityPluginContext from the shell.\n */\nexport function createEntityPluginContext(\n shell: IShell,\n pluginId: string,\n registrationContext?: PluginRegistrationContext,\n): EntityPluginContext {\n const baseContext = createBasePluginContext(\n shell,\n pluginId,\n registrationContext,\n );\n const entityService = shell.getEntityService();\n\n return {\n ...baseContext,\n\n entityService,\n\n entities: createEntitiesNamespace(shell),\n\n ai: {\n query: (prompt, context) => shell.query(prompt, context),\n generate: async <T = unknown>(\n config: ContentGenerationConfig,\n ): Promise<T> => {\n return shell.generateContent<T>(config);\n },\n generateObject: async <T>(\n prompt: string,\n schema: AIGenerationSchema<T>,\n signal?: AbortSignal,\n ): Promise<{ object: T }> => {\n return shell.generateObject(prompt, schema, signal);\n },\n generateImage: async (\n prompt: string,\n options?: ImageGenerationOptions,\n ): Promise<ImageGenerationResult> => {\n return shell.generateImage(prompt, options);\n },\n canGenerateImages: (): boolean => {\n return shell.canGenerateImages();\n },\n },\n\n prompts: createPromptsNamespace(entityService),\n\n permissions: baseContext.permissions,\n };\n}\n",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"import type { BasePluginContext } from \"../base/context\";\nimport { createBasePluginContext } from \"../base/context\";\nimport type {\n ContentGenerationConfig,\n IShell,\n PluginRegistrationContext,\n} from \"../interfaces\";\nimport type { IWebRoutesNamespace } from \"../interface/context\";\nimport type {\n AIGenerationSchema,\n IEntitiesNamespace,\n IEntityAINamespace,\n ImageGenerationOptions,\n ImageGenerationResult,\n IPromptsNamespace,\n} from \"../entity/context\";\nimport {\n createEntitiesNamespace,\n createPromptsNamespace,\n} from \"../entity/namespaces\";\nimport type { IEntityService } from \"@brains/entity-service\";\nimport type { ResolutionOptions } from \"@brains/content-service\";\nimport { TemplateCapabilities } from \"@brains/templates\";\nimport type {\n OutputFormat,\n Renderer,\n Template,\n ViewTemplate,\n} from \"@brains/templates\";\n\n/**\n * Template operations namespace for ServicePluginContext\n * Includes registration, formatting, parsing, resolution, and capability checking\n */\nexport interface IServiceTemplatesNamespace {\n /** Register templates for this plugin or an explicit template namespace */\n register: (templates: Record<string, Template>, namespace?: string) => void;\n\n /** Format data using a template formatter */\n format: <T = unknown>(templateName: string, data: T) => string;\n\n /** Parse content using a template parser */\n parse: <T = unknown>(templateName: string, content: string) => T;\n\n /** Resolve content from a template (may fetch or generate) */\n resolve: <T = unknown>(\n templateName: string,\n options?: ResolutionOptions,\n ) => Promise<T | null>;\n\n /** Get capabilities of a template */\n getCapabilities: (templateName: string) => {\n canGenerate: boolean;\n canFetch: boolean;\n canRender: boolean;\n isStaticOnly: boolean;\n } | null;\n}\n\n/**\n * Views namespace — view template access and rendering utilities\n */\nexport interface IViewsNamespace {\n /** Get a view template by name */\n get: (name: string) => ViewTemplate<unknown> | undefined;\n\n /** List all registered view templates */\n list: () => ViewTemplate<unknown>[];\n\n /** Check if a template has a renderer for the requested format (defaults to web). */\n hasRenderer: (templateName: string, format?: OutputFormat) => boolean;\n\n /** Get the renderer for a template and format (defaults to web). */\n getRenderer: (\n templateName: string,\n format?: OutputFormat,\n ) => Renderer | undefined;\n\n /** Validate content against a template's schema */\n validate: (templateName: string, content: unknown) => boolean;\n}\n\n/**\n * Context for service plugins.\n *\n * Includes: entity management, templates, views, prompt resolution, AI, messaging, jobs.\n * Excludes: MCP protocol registration, transport.\n */\nexport interface ServicePluginContext extends BasePluginContext {\n /** Full entity service with write operations */\n readonly entityService: IEntityService;\n\n /** Entity management namespace */\n readonly entities: IEntitiesNamespace;\n\n /** Template operations namespace (register, format, parse, resolve, getCapabilities) */\n readonly templates: IServiceTemplatesNamespace;\n\n /** Views namespace for view template access and rendering */\n readonly views: IViewsNamespace;\n\n /** Prompt resolution namespace */\n readonly prompts: IPromptsNamespace;\n\n /**\n * Read-only view of plugin-contributed web routes. Service plugins already\n * contribute routes via getWebRoutes(); this is the symmetric read side\n * (e.g. the dashboard deriving console surface links from what is mounted).\n */\n readonly webRoutes: IWebRoutesNamespace;\n\n /** AI generation namespace */\n readonly ai: IEntityAINamespace;\n\n /** Register or update plugin instructions for the agent system prompt */\n registerInstructions: (instructions: string) => void;\n}\n\n/**\n * Create a ServicePluginContext from the shell.\n */\nexport function createServicePluginContext(\n shell: IShell,\n pluginId: string,\n registrationContext?: PluginRegistrationContext,\n): ServicePluginContext {\n const baseContext = createBasePluginContext(\n shell,\n pluginId,\n registrationContext,\n );\n const entityService = shell.getEntityService();\n const renderService = shell.getRenderService();\n const contentService = shell.getContentService();\n\n return {\n ...baseContext,\n\n entityService,\n\n entities: createEntitiesNamespace(shell),\n\n webRoutes: {\n getRoutes: () => shell.getPluginWebRoutes(),\n },\n\n templates: {\n register: (\n templates: Record<string, Template>,\n namespace?: string,\n ): void => {\n shell.registerTemplates(templates, namespace ?? pluginId);\n },\n format: <T = unknown>(templateName: string, data: T): string => {\n return contentService.formatContent(templateName, data, { pluginId });\n },\n parse: <T = unknown>(templateName: string, content: string): T => {\n return contentService.parseContent(templateName, content, pluginId);\n },\n resolve: async <T = unknown>(\n templateName: string,\n options?: ResolutionOptions,\n ): Promise<T | null> => {\n const result = await contentService.resolveContent(\n templateName,\n options,\n pluginId,\n );\n return result as T;\n },\n getCapabilities: (\n templateName: string,\n ): {\n canGenerate: boolean;\n canFetch: boolean;\n canRender: boolean;\n isStaticOnly: boolean;\n } | null => {\n const scopedTemplateName = templateName.includes(\":\")\n ? templateName\n : `${pluginId}:${templateName}`;\n const template = shell.getTemplate(scopedTemplateName);\n if (!template) return null;\n const capabilities = TemplateCapabilities.getCapabilities(template);\n return {\n canGenerate: capabilities.canGenerate,\n canFetch: capabilities.canFetch,\n canRender: capabilities.canRender,\n isStaticOnly: capabilities.isStaticOnly,\n };\n },\n },\n\n views: {\n get: (name: string): ViewTemplate<unknown> | undefined => {\n return renderService.get(name) ?? undefined;\n },\n list: (): ViewTemplate<unknown>[] => {\n return renderService.list();\n },\n hasRenderer: (\n templateName: string,\n format: OutputFormat = \"web\",\n ): boolean => {\n return renderService.hasRenderer(templateName, format);\n },\n getRenderer: (\n templateName: string,\n format: OutputFormat = \"web\",\n ): Renderer | undefined => {\n return renderService.getRenderer(templateName, format);\n },\n validate: (templateName: string, content: unknown): boolean => {\n return renderService.validate(templateName, content);\n },\n },\n\n prompts: createPromptsNamespace(entityService),\n\n ai: {\n query: (prompt, context) => shell.query(prompt, context),\n generate: async <T = unknown>(\n config: ContentGenerationConfig,\n ): Promise<T> => {\n return shell.generateContent<T>(config);\n },\n generateObject: async <T>(\n prompt: string,\n schema: AIGenerationSchema<T>,\n signal?: AbortSignal,\n ): Promise<{ object: T }> => {\n return shell.generateObject(prompt, schema, signal);\n },\n generateImage: async (\n prompt: string,\n options?: ImageGenerationOptions,\n ): Promise<ImageGenerationResult> => {\n return shell.generateImage(prompt, options);\n },\n canGenerateImages: (): boolean => {\n return shell.canGenerateImages();\n },\n },\n\n registerInstructions: (instructions: string): void => {\n shell.registerInstructions(pluginId, instructions);\n },\n };\n}\n",
|
|
55
55
|
"import { BasePlugin } from \"../base-plugin\";\nimport type {\n PluginCapabilities,\n IShell,\n PluginRegistrationContext,\n} from \"../interfaces\";\nimport type {\n IEntityService,\n BaseEntity,\n EntityAdapter,\n EntityTypeConfig,\n} from \"@brains/entity-service\";\nimport type {\n BatchOperation,\n EnqueueJobRequest,\n JobOptions,\n} from \"@brains/job-queue\";\nimport type { ServicePluginContext } from \"./context\";\nimport { createServicePluginContext } from \"./context\";\nimport type { ApiRouteDefinition } from \"../types/api-routes\";\nimport type { WebRouteDefinition } from \"../types/web-routes\";\n\n/**\n * Base class for service plugins\n * Service plugins extend core functionality with entity management, job queuing, and AI generation\n */\nexport abstract class ServicePlugin<TConfig, TConfigInput> extends BasePlugin<\n TConfig,\n TConfigInput,\n ServicePluginContext\n> {\n public readonly type = \"service\" as const;\n\n /** Get API routes for this plugin (override in subclass) */\n getApiRoutes(): ApiRouteDefinition[] {\n return [];\n }\n\n /** Get web routes for this plugin (override in subclass) */\n getWebRoutes(): WebRouteDefinition[] {\n return [];\n }\n\n /**\n * Register the plugin with shell - creates ServicePluginContext internally\n */\n override async register(\n shell: IShell,\n registrationContext?: PluginRegistrationContext,\n ): Promise<PluginCapabilities> {\n // Create typed context from shell\n const context = createServicePluginContext(\n shell,\n this.id,\n registrationContext,\n );\n this.context = context;\n\n // Set up message handlers\n this.setupMessageHandlers(context);\n\n // Call lifecycle hook with typed context\n await this.onRegister(context);\n\n return this.getCapabilities();\n }\n\n /**\n * Get the entity service for direct access\n */\n protected get entityService(): IEntityService {\n const context = this.getContext();\n return context.entityService;\n }\n\n /**\n * Helper method to register an entity type\n */\n protected registerEntityType<T extends BaseEntity>(\n entityType: string,\n schema: EntityAdapter<T>[\"schema\"],\n adapter: EntityAdapter<T>,\n config?: EntityTypeConfig,\n ): void {\n const context = this.getContext();\n context.entities.register(entityType, schema, adapter, config);\n }\n\n /**\n * Helper method to enqueue a job\n * Pass toolContext in the request for tool-routed jobs, or omit it for background jobs.\n */\n protected async enqueueJob(request: EnqueueJobRequest): Promise<string> {\n const context = this.getContext();\n return context.jobs.enqueue(request);\n }\n\n /**\n * Helper method to enqueue a batch of operations\n */\n protected async enqueueBatch(\n operations: BatchOperation[],\n options?: JobOptions,\n ): Promise<string> {\n const context = this.getContext();\n return context.jobs.enqueueBatch(operations, options);\n }\n\n /**\n * Override to register entity types during initialization\n */\n protected async registerEntityTypes(\n _context: ServicePluginContext,\n ): Promise<void> {\n // Default implementation does nothing\n // Override in subclasses to register entity types\n }\n\n /**\n * Override to register job handlers during initialization\n */\n protected async registerJobHandlers(\n _context: ServicePluginContext,\n ): Promise<void> {\n // Default implementation does nothing\n // Override in subclasses to register job handlers\n }\n\n /**\n * Override onRegister to add service-specific initialization\n */\n protected override async onRegister(\n context: ServicePluginContext,\n ): Promise<void> {\n // Register entity types first\n await this.registerEntityTypes(context);\n\n // Register job handlers\n await this.registerJobHandlers(context);\n }\n}\n"
|
|
56
56
|
],
|
|
57
|
-
"mappings": "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",
|
|
58
|
-
"debugId": "
|
|
57
|
+
"mappings": "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",
|
|
58
|
+
"debugId": "DB6C1C8CA5BC846C64756E2164756E21",
|
|
59
59
|
"names": []
|
|
60
60
|
}
|