@botpress/adk 1.7.8 → 1.7.9
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/agent-project/agent-project.d.ts.map +1 -1
- package/dist/agent-project/agent-resolver.d.ts +26 -0
- package/dist/agent-project/agent-resolver.d.ts.map +1 -0
- package/dist/agent-project/index.d.ts +2 -0
- package/dist/agent-project/index.d.ts.map +1 -1
- package/dist/agent-project/types.d.ts +5 -2
- package/dist/agent-project/types.d.ts.map +1 -1
- package/dist/agent-project/validation-errors.d.ts +7 -0
- package/dist/agent-project/validation-errors.d.ts.map +1 -1
- package/dist/auth/credentials.d.ts +8 -0
- package/dist/auth/credentials.d.ts.map +1 -1
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/bot-generator/dev-id-manager.d.ts.map +1 -1
- package/dist/constants.d.ts +5 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/index.js +2332 -2243
- package/dist/index.js.map +15 -13
- package/dist/integrations/manager.d.ts.map +1 -1
- package/dist/interfaces/manager.d.ts.map +1 -1
- package/dist/utils/json-ordering.d.ts +1 -1
- package/dist/utils/json-ordering.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/auth/credentials.ts", "../src/utils/fs.ts", "../src/generators/utils.ts", "../src/generators/action-types.ts", "../src/generators/integration-action-types.ts", "../src/auth/index.ts", "../src/auth/service.ts", "../src/auth/bp-cli-import.ts", "../src/commands/base-command.ts", "../src/commands/bp-add-command.ts", "../src/commands/bp-cli.ts", "../src/commands/bp-build-command.ts", "../src/utils/source-map-optimizer.ts", "../src/commands/bp-deploy-command.ts", "../src/commands/bp-dev-command.ts", "../src/commands/bp-chat-command.ts", "../src/workspace/workspace-cache.ts", "../src/utils/time.ts", "../src/utils/json-ordering.ts", "../src/agent-project/agent-project.ts", "../src/assets/manager.ts", "../src/assets/cache.ts", "../src/const.ts", "../src/assets/updater.ts", "../src/integrations/manager.ts", "../src/integrations/enhanced-cache.ts", "../src/agent-project/dependencies-parser.ts", "../src/
|
|
3
|
+
"sources": ["../src/agent-project/types.ts", "../src/agent-project/validation-errors.ts", "../src/constants.ts", "../src/agent-project/agent-resolver.ts", "../src/auth/credentials.ts", "../src/utils/fs.ts", "../src/generators/utils.ts", "../src/generators/action-types.ts", "../src/generators/integration-action-types.ts", "../src/auth/index.ts", "../src/auth/service.ts", "../src/auth/bp-cli-import.ts", "../src/commands/base-command.ts", "../src/commands/bp-add-command.ts", "../src/commands/bp-cli.ts", "../src/commands/bp-build-command.ts", "../src/utils/source-map-optimizer.ts", "../src/commands/bp-deploy-command.ts", "../src/commands/bp-dev-command.ts", "../src/commands/bp-chat-command.ts", "../src/workspace/workspace-cache.ts", "../src/utils/time.ts", "../src/utils/json-ordering.ts", "../src/agent-project/agent-project.ts", "../src/assets/manager.ts", "../src/assets/cache.ts", "../src/const.ts", "../src/assets/updater.ts", "../src/integrations/manager.ts", "../src/integrations/enhanced-cache.ts", "../src/agent-project/dependencies-parser.ts", "../src/integrations/cache.ts", "../src/integrations/operations.ts", "../src/integrations/hub-cache.ts", "../src/agent-project/config-writer.ts", "../src/integrations/checker.ts", "../src/interfaces/manager.ts", "../src/interfaces/enhanced-cache.ts", "../src/interfaces/parser.ts", "../src/interfaces/operations.ts", "../src/agent-project/expand-exports.ts", "../src/agent-project/file-watcher.ts", "../src/agent-project/index.ts", "../src/agent-init/agent-project-generator.ts", "../src/generators/assets.ts", "../src/generators/integration-types.ts", "../src/utils/strings.ts", "../src/utils/ids.ts", "../src/bot-generator/generator.ts", "../src/generators/interface-types.ts", "../src/generators/table-types.ts", "../src/generators/trigger-types.ts", "../src/generators/state-types.ts", "../src/generators/workflow-types.ts", "../src/generators/conversation-types.ts", "../src/generators/event-types.ts", "../src/bot-generator/dev-id-manager.ts", "../src/bot-generator/integration-sync.ts", "../src/bot-generator/interface-sync.ts", "../src/tables/manager.ts", "../src/file-watcher/watcher.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import
|
|
5
|
+
"import { z } from '@botpress/sdk'\nimport { defineConfig } from '@botpress/runtime'\nimport { ValidationErrors } from './validation-errors'\n\nexport type AgentConfig = ReturnType<typeof defineConfig>\n\n// Dependencies schema\nexport const dependenciesSchema = z.object({\n integrations: z\n .record(\n z.object({\n version: z.string(),\n enabled: z.boolean(), // Whether the integration is enabled\n configurationType: z.string().optional(), // Type of configuration (e.g., \"refreshToken\", \"apiKey\")\n connection: z.string().optional(), // e.g., \"adk://config/slack/ws/ws_123/default\"\n config: z.record(z.any()).optional(), // Local config overrides (non-secret)\n })\n )\n .optional(),\n})\n\nexport type Dependencies = z.infer<typeof dependenciesSchema>\n\n// Agent deployment info schema\nexport const agentInfoSchema = z.object({\n botId: z.string().describe('The bot ID from Botpress deployment'),\n workspaceId: z.string().describe('The workspace ID where the bot is deployed'),\n apiUrl: z.string().optional().describe('The Botpress API URL (e.g., https://api.botpress.cloud)'),\n devId: z.string().optional().describe('The development ID used during local development'),\n})\n\nexport type AgentInfo = z.infer<typeof agentInfoSchema>\n\n// File change event types\nexport enum FileChangeType {\n Added = 'added',\n Modified = 'modified',\n Deleted = 'deleted',\n}\n\nexport interface FileChangeEvent {\n type: FileChangeType\n path: string\n relativePath: string\n}\n\n// Build event types\nexport enum BuildEventType {\n Started = 'started',\n Progress = 'progress',\n Success = 'success',\n Error = 'error',\n Warning = 'warning',\n}\n\nexport interface BuildEvent {\n type: BuildEventType\n message?: string\n error?: Error\n warnings?: string[]\n}\n\n// Validation error codes\nexport enum ValidationErrorCode {\n // Project structure errors\n DIRECTORY_NOT_FOUND = 'DIRECTORY_NOT_FOUND',\n DIRECTORY_ACCESS_ERROR = 'DIRECTORY_ACCESS_ERROR',\n REQUIRED_FILE_MISSING = 'REQUIRED_FILE_MISSING',\n INVALID_STRUCTURE = 'INVALID_STRUCTURE',\n\n // Configuration errors\n INVALID_CONFIG_SYNTAX = 'INVALID_CONFIG_SYNTAX',\n INVALID_CONFIG_SCHEMA = 'INVALID_CONFIG_SCHEMA',\n MISSING_REQUIRED_FIELD = 'MISSING_REQUIRED_FIELD',\n AGENT_NOT_LINKED = 'AGENT_NOT_LINKED',\n\n // Dependencies errors\n INVALID_DEPENDENCIES_SYNTAX = 'INVALID_DEPENDENCIES_SYNTAX',\n INVALID_DEPENDENCIES_SCHEMA = 'INVALID_DEPENDENCIES_SCHEMA',\n INVALID_VERSION_FORMAT = 'INVALID_VERSION_FORMAT',\n UNKNOWN_INTEGRATION = 'UNKNOWN_INTEGRATION',\n INCOMPATIBLE_VERSION = 'INCOMPATIBLE_VERSION',\n CIRCULAR_DEPENDENCY = 'CIRCULAR_DEPENDENCY',\n\n // File errors\n FILE_TOO_LARGE = 'FILE_TOO_LARGE',\n INVALID_FILE_TYPE = 'INVALID_FILE_TYPE',\n INVALID_FILE_NAME = 'INVALID_FILE_NAME',\n DUPLICATE_FILE_NAME = 'DUPLICATE_FILE_NAME',\n DUPLICATE_PRIMITIVE = 'DUPLICATE_PRIMITIVE',\n INVALID_PRIMITIVE_DEFINITION = 'INVALID_PRIMITIVE_DEFINITION',\n\n // Runtime errors\n BUILD_FAILED = 'BUILD_FAILED',\n SYNTAX_ERROR = 'SYNTAX_ERROR',\n TYPE_ERROR = 'TYPE_ERROR',\n IMPORT_ERROR = 'IMPORT_ERROR',\n}\n\n// Validation severity levels\nexport enum ValidationSeverity {\n ERROR = 'error',\n WARNING = 'warning',\n INFO = 'info',\n}\n\n// Enhanced validation error interface\nexport interface ValidationError {\n $type: typeof ValidationErrors.$type\n code: ValidationErrorCode\n severity: ValidationSeverity\n message: string\n file?: string\n line?: number\n column?: number\n hint?: string\n documentation?: string\n context?: Record<string, any>\n}\n\n// Validation result with categorized errors\nexport interface ValidationResult {\n valid: boolean\n errors: ValidationError[]\n warnings: ValidationError[]\n info: ValidationError[]\n errorCount: number\n warningCount: number\n infoCount: number\n}\n\n// Agent project state\nexport enum ProjectState {\n Unloaded = 'unloaded',\n Loading = 'loading',\n Ready = 'ready',\n Building = 'building',\n Error = 'error',\n}\n\n// Build output types\nexport interface BuildOutput {\n files: Map<string, Buffer | string>\n metadata: {\n buildTime: Date\n version?: string\n checksum?: string\n }\n}\n\n// Watch options\nexport interface WatchOptions {\n ignore?: string[]\n debounce?: number\n autoBuild?: boolean\n}\n\n// Integration types\nexport interface Integration {\n name: string\n version: string\n workspace?: string // Optional workspace name\n connection?: string\n config?: Record<string, any>\n installed?: boolean\n installedVersion?: string\n hasChannels?: boolean\n}\n\nexport interface IntegrationChange {\n type: 'install' | 'update' | 'uninstall'\n integration: Integration\n from?: string // For updates: from version\n to?: string // For updates: to version\n}\n\nexport interface IntegrationSyncResult {\n changes: IntegrationChange[]\n applied: boolean\n errors?: Error[]\n}\n\n// Project info\nexport interface ProjectInfo {\n path: string\n config: AgentConfig\n dependencies: Dependencies\n agentInfo?: AgentInfo // Optional deployment information\n state: ProjectState\n lastBuildTime?: Date\n errors: ValidationError[]\n warnings: ValidationError[]\n errorCount: number\n warningCount: number\n infoCount: number\n integrations?: Integration[] // Parsed integrations from dependencies\n}\n\nexport type IntegrationDependency = {\n type: 'integration'\n integration: {\n name: string\n version: string\n enabled: boolean\n }\n}\n\nexport type InterfaceDependency = {\n type: 'interface'\n interface: {\n name: string\n version: string\n }\n}\n\nexport type PluginDependency = {\n type: 'plugin'\n plugin: {\n name: string\n version: string\n }\n}\n\nexport type Dependency = IntegrationDependency | InterfaceDependency | PluginDependency\n",
|
|
6
|
+
"import { ValidationError, ValidationErrorCode, ValidationSeverity } from './types.js'\n\n/**\n * Factory functions for creating consistent validation errors\n */\n\nexport class ValidationErrors {\n static $type = 'ValidationError' as const\n\n /**\n * Type guard to check if an error is a ValidationError\n */\n static isValidationError(error: unknown): error is ValidationError {\n return (\n error !== null &&\n typeof error === 'object' &&\n '$type' in error &&\n error.$type === 'ValidationError'\n )\n }\n\n // Project structure errors\n static directoryNotFound(path: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.DIRECTORY_NOT_FOUND,\n severity: ValidationSeverity.ERROR,\n message: `Project directory not found: ${path}`,\n hint: 'Ensure the directory exists and you have permission to access it',\n context: { path },\n }\n }\n\n static directoryAccessError(path: string, error: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.DIRECTORY_ACCESS_ERROR,\n severity: ValidationSeverity.ERROR,\n message: `Cannot access project directory: ${error}`,\n hint: 'Check file system permissions',\n context: { path, error },\n }\n }\n\n static requiredFileMissing(file: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.REQUIRED_FILE_MISSING,\n severity: ValidationSeverity.ERROR,\n message: `Required file '${file}' not found`,\n file,\n hint: `Create a ${file} file in your project root`,\n documentation: 'https://docs.botpress.com/adk/project-structure',\n }\n }\n\n static invalidStructure(directory: string, expected: 'directory' | 'file'): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_STRUCTURE,\n severity: ValidationSeverity.WARNING,\n message: `Expected '${directory}' to be a ${expected}`,\n file: directory,\n hint: `Ensure ${directory} is a ${expected}, not a ${expected === 'directory' ? 'file' : 'directory'}`,\n }\n }\n\n // Configuration errors\n static invalidConfigSyntax(file: string, error: string, line?: number, column?: number): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_CONFIG_SYNTAX,\n severity: ValidationSeverity.ERROR,\n message: `Invalid syntax in ${file}: ${error}`,\n file,\n line,\n column,\n hint: 'Check for syntax errors like missing commas, brackets, or quotes',\n }\n }\n\n static invalidConfigSchema(file: string, field: string, error: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_CONFIG_SCHEMA,\n severity: ValidationSeverity.ERROR,\n message: `Invalid configuration in ${file}: ${error}`,\n file,\n hint: `Check the '${field}' field matches the expected schema`,\n context: { field, error },\n }\n }\n\n static missingRequiredField(file: string, field: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.MISSING_REQUIRED_FIELD,\n severity: ValidationSeverity.ERROR,\n message: `Missing required field '${field}' in ${file}`,\n file,\n hint: `Add the '${field}' field to your configuration`,\n documentation: 'https://docs.botpress.com/adk/configuration',\n }\n }\n\n // Dependencies errors\n static invalidDependenciesSyntax(error: string, line?: number): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_DEPENDENCIES_SYNTAX,\n severity: ValidationSeverity.ERROR,\n message: `Invalid syntax in agent.config.ts dependencies: ${error}`,\n file: 'agent.config.ts',\n line,\n hint: 'Ensure agent.config.ts exports a valid dependencies object',\n }\n }\n\n static invalidVersionFormat(integration: string, version: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_VERSION_FORMAT,\n severity: ValidationSeverity.ERROR,\n message: `Invalid version format '${version}' for integration '${integration}'`,\n file: 'agent.config.ts',\n hint: 'Use exact versioning (e.g., \"1.2.3\", \"2.0.0\", \"1.5.0\")',\n context: { integration, version },\n }\n }\n\n static unknownIntegration(integration: string, source: string, detailedMessage?: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.UNKNOWN_INTEGRATION,\n severity: ValidationSeverity.ERROR,\n message: detailedMessage || `Unknown integration '${integration}' from source '${source}'`,\n file: 'agent.config.ts',\n hint: detailedMessage ? undefined : `Check if the integration name is correct or if it exists in ${source}`,\n context: { integration, source },\n }\n }\n\n static integrationVersionError(integration: string, errorMessage: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.UNKNOWN_INTEGRATION,\n severity: ValidationSeverity.ERROR,\n message: errorMessage,\n file: 'agent.config.ts',\n hint: `Update the version for \"${integration}\" in agent.config.ts dependencies`,\n }\n }\n\n static unknownInterface(errorMessage: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.UNKNOWN_INTEGRATION,\n severity: ValidationSeverity.ERROR,\n message: errorMessage,\n file: 'agent.config.ts',\n }\n }\n\n static incompatibleVersion(integration: string, required: string, available: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INCOMPATIBLE_VERSION,\n severity: ValidationSeverity.ERROR,\n message: `Integration '${integration}' requires version ${required}, but only ${available} is available`,\n file: 'agent.config.ts',\n hint: 'Update the version requirement or check for compatible versions',\n context: { integration, required, available },\n }\n }\n\n // File errors\n static fileTooLarge(file: string, size: number, maxSize: number): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.FILE_TOO_LARGE,\n severity: ValidationSeverity.ERROR,\n message: `File '${file}' is too large (${formatBytes(size)} > ${formatBytes(maxSize)})`,\n file,\n hint: 'Reduce file size or split into smaller files',\n context: { size, maxSize },\n }\n }\n\n static invalidFileType(file: string, type: string, allowedTypes: string[]): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_FILE_TYPE,\n severity: ValidationSeverity.ERROR,\n message: `Invalid file type '${type}' for file '${file}'`,\n file,\n hint: `Allowed file types: ${allowedTypes.join(', ')}`,\n context: { type, allowedTypes },\n }\n }\n\n static invalidFileName(file: string, reason: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_FILE_NAME,\n severity: ValidationSeverity.ERROR,\n message: `Invalid file name '${file}': ${reason}`,\n file,\n hint: 'Use lowercase letters, numbers, and hyphens only',\n }\n }\n\n static duplicateFileName(file: string, existingFile: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.DUPLICATE_FILE_NAME,\n severity: ValidationSeverity.ERROR,\n message: `Duplicate file name '${file}' conflicts with '${existingFile}'`,\n file,\n hint: 'Rename one of the files to avoid conflicts',\n context: { existingFile },\n }\n }\n\n // Runtime errors\n static buildFailed(error: string, file?: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.BUILD_FAILED,\n severity: ValidationSeverity.ERROR,\n message: `Build failed: ${error}`,\n file,\n hint: 'Check the error message and fix any issues in your code',\n }\n }\n\n static syntaxError(file: string, error: string, line?: number, column?: number): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.SYNTAX_ERROR,\n severity: ValidationSeverity.ERROR,\n message: `Syntax error: ${error}`,\n file,\n line,\n column,\n hint: 'Check for missing semicolons, brackets, or other syntax issues',\n }\n }\n\n static typeError(file: string, error: string, line?: number): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.TYPE_ERROR,\n severity: ValidationSeverity.ERROR,\n message: `Type error: ${error}`,\n file,\n line,\n hint: 'Ensure types match expected values and imports are correct',\n }\n }\n\n static importError(file: string, module: string, error: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.IMPORT_ERROR,\n severity: ValidationSeverity.ERROR,\n message: `Cannot import '${module}': ${error}`,\n file,\n hint: 'Check if the module exists and is properly installed',\n context: { module },\n }\n }\n\n // Knowledge errors\n static unsafeKnowledgePath(knowledgeBase: string, pattern: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_FILE_NAME,\n severity: ValidationSeverity.ERROR,\n message: `Knowledge base '${knowledgeBase}' contains unsafe path pattern '${pattern}'`,\n file: `src/knowledge/${knowledgeBase}.ts`,\n hint: 'Knowledge patterns must not reference files outside the agent directory (remove ../ or absolute paths)',\n context: { knowledgeBase, pattern },\n }\n }\n\n // Agent linking errors\n static agentNotLinked(): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.AGENT_NOT_LINKED,\n severity: ValidationSeverity.ERROR,\n message: 'Agent is not linked to a workspace',\n file: 'agent.json',\n hint: 'Please run \"adk link\" to link your agent to a workspace',\n }\n }\n\n static workspaceIdMissing(): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.AGENT_NOT_LINKED,\n severity: ValidationSeverity.ERROR,\n message: 'No workspaceId found in agent.json',\n file: 'agent.json',\n hint: 'Please run \"adk link\" to link your agent to a workspace',\n }\n }\n\n static botIdMissing(): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.AGENT_NOT_LINKED,\n severity: ValidationSeverity.ERROR,\n message: 'No botId found in agent.json',\n file: 'agent.json',\n hint: 'Please run \"adk link\" to link your agent to a bot',\n }\n }\n\n // Utility functions\n static info(message: string, file?: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_STRUCTURE, // Generic code for info\n severity: ValidationSeverity.INFO,\n message,\n file,\n }\n }\n\n static warning(message: string, file?: string, hint?: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_STRUCTURE, // Generic code for warnings\n severity: ValidationSeverity.WARNING,\n message,\n file,\n hint,\n }\n }\n}\n\n// Helper function to format bytes\nfunction formatBytes(bytes: number): string {\n if (bytes === 0) return '0 Bytes'\n const k = 1024\n const sizes = ['Bytes', 'KB', 'MB', 'GB']\n const i = Math.floor(Math.log(bytes) / Math.log(k))\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]\n}\n",
|
|
7
|
+
"/**\n * Default Botpress API URL\n * Used when agent.json doesn't specify an apiUrl (for backwards compatibility)\n */\nexport const DEFAULT_API_URL = 'https://api.botpress.cloud'\n\n/**\n * Built-in interfaces that are always included in ADK projects\n * These are constants and cannot be modified by users\n */\nexport const BUILTIN_INTERFACES = {\n 'typing-indicator': 'typing-indicator@0.0.3',\n llm: 'llm@9.0.0',\n listable: 'listable@0.0.2',\n} as const\n",
|
|
8
|
+
"import fs from 'fs/promises'\nimport path from 'path'\nimport { AgentInfo, agentInfoSchema } from './types.js'\nimport { ValidationErrors } from './validation-errors.js'\nimport { DEFAULT_API_URL } from '../constants.js'\n\nexport interface ResolveAgentOptions {\n /**\n * If true, throws an error if agent.json is missing or invalid.\n * If false, returns null when agent.json is not found.\n */\n required?: boolean\n /**\n * If true, validates that workspaceId exists in agent.json\n */\n requireWorkspace?: boolean\n /**\n * If true, validates that botId exists in agent.json\n */\n requireBot?: boolean\n}\n\n/**\n * Resolve agent information from agent.json file\n * This is the single source of truth for loading agent.json\n */\nexport async function resolveAgent(\n agentPath: string,\n options: ResolveAgentOptions = {}\n): Promise<AgentInfo | null> {\n const { required = false, requireWorkspace = false, requireBot = false } = options\n\n const agentJsonPath = path.join(agentPath, 'agent.json')\n\n try {\n // Read agent.json\n const agentJsonContent = await fs.readFile(agentJsonPath, 'utf-8')\n\n // Parse JSON\n let agentData: any\n try {\n agentData = JSON.parse(agentJsonContent)\n } catch (parseError) {\n throw ValidationErrors.invalidConfigSyntax('agent.json', (parseError as Error).message)\n }\n\n // Validate structure\n const validationResult = agentInfoSchema.safeParse(agentData)\n if (!validationResult.success) {\n const zodError = validationResult.error.errors[0]\n throw ValidationErrors.invalidConfigSchema(\n 'agent.json',\n zodError?.path.join('.') || 'unknown',\n zodError?.message || 'Invalid schema'\n )\n }\n\n const agentInfo = validationResult.data\n\n // Default apiUrl to .cloud if missing (for backwards compatibility)\n if (!agentInfo.apiUrl) {\n agentInfo.apiUrl = DEFAULT_API_URL\n }\n\n // Validate workspace requirement\n if (requireWorkspace && !agentInfo.workspaceId) {\n throw ValidationErrors.workspaceIdMissing()\n }\n\n // Validate bot requirement\n if (requireBot && !agentInfo.botId) {\n throw ValidationErrors.botIdMissing()\n }\n\n return agentInfo\n } catch (error) {\n // Handle file not found\n if ((error as NodeJS.ErrnoException).code === 'ENOENT') {\n if (required || requireWorkspace || requireBot) {\n throw ValidationErrors.requiredFileMissing('agent.json')\n }\n return null\n }\n\n // Re-throw if it's already a ValidationError\n if (ValidationErrors.isValidationError(error)) {\n throw error\n }\n\n // Wrap unknown errors\n throw ValidationErrors.warning(`Failed to read agent.json: ${(error as Error).message}`, 'agent.json')\n }\n}\n\n/**\n * Check if agent.json exists in the given path\n */\nexport async function hasAgentJson(agentPath: string): Promise<boolean> {\n const agentJsonPath = path.join(agentPath, 'agent.json')\n try {\n await fs.access(agentJsonPath)\n return true\n } catch {\n return false\n }\n}\n",
|
|
9
|
+
"import fs from 'fs/promises'\nimport path from 'path'\nimport os from 'os'\nimport { resolveAgent } from '../agent-project/agent-resolver.js'\n\nexport interface Credentials {\n token: string\n apiUrl: string\n workspaceId?: string\n workspaceName?: string\n botId?: string\n}\n\nexport interface Profile {\n name: string\n credentials: Credentials\n apiUrl: string\n lastUsed: string\n email?: string\n displayName?: string\n accountId?: string\n createdAt?: string\n}\n\nexport interface ProfileMetadata {\n lastUsed: string\n accountId?: string\n email?: string\n displayName?: string\n createdAt?: string\n}\n\nexport interface CredentialsStore {\n profiles: Record<string, Credentials>\n profileMetadata: Record<string, ProfileMetadata>\n currentProfile: string\n}\n\nexport class CredentialsManager {\n private credentialsPath: string\n private configDir: string\n\n constructor() {\n // Store credentials in ~/.adk/credentials\n this.configDir = path.join(os.homedir(), '.adk')\n this.credentialsPath = path.join(this.configDir, 'credentials')\n }\n\n private async ensureConfigDir(): Promise<void> {\n try {\n await fs.mkdir(this.configDir, { recursive: true })\n } catch {\n // Directory might already exist, that's fine\n }\n }\n\n private async readCredentials(): Promise<CredentialsStore> {\n try {\n const data = await fs.readFile(this.credentialsPath, 'utf-8')\n return JSON.parse(data)\n } catch {\n // If file doesn't exist or is invalid, return empty store\n return {\n profiles: {},\n profileMetadata: {},\n currentProfile: 'default',\n }\n }\n }\n\n private async writeCredentials(store: CredentialsStore): Promise<void> {\n await this.ensureConfigDir()\n await fs.writeFile(this.credentialsPath, JSON.stringify(store, null, 2))\n // Set restrictive permissions (read/write for owner only)\n await fs.chmod(this.credentialsPath, 0o600)\n }\n\n async saveCredentials(\n profileName: string,\n credentials: Credentials,\n userInfo?: Partial<ProfileMetadata>\n ): Promise<void> {\n const store = await this.readCredentials()\n store.profiles[profileName] = credentials\n\n // Initialize metadata if it doesn't exist\n if (!store.profileMetadata) {\n store.profileMetadata = {}\n }\n\n // Update metadata with user info\n store.profileMetadata[profileName] = {\n lastUsed: new Date().toISOString(),\n ...userInfo,\n }\n\n // If this is the first profile, make it current\n if (Object.keys(store.profiles).length === 1) {\n store.currentProfile = profileName\n }\n\n await this.writeCredentials(store)\n }\n\n async getCredentials(profileName?: string): Promise<Credentials | null> {\n const store = await this.readCredentials()\n const profile = profileName || store.currentProfile\n\n if (!store.profiles[profile]) {\n return null\n }\n\n return store.profiles[profile]\n }\n\n async listProfiles(): Promise<Profile[]> {\n const store = await this.readCredentials()\n\n // Initialize metadata if it doesn't exist\n if (!store.profileMetadata) {\n store.profileMetadata = {}\n }\n\n return Object.entries(store.profiles).map(([name, credentials]) => {\n const metadata = store.profileMetadata[name] || ({} as ProfileMetadata)\n return {\n name,\n credentials,\n apiUrl: credentials.apiUrl,\n lastUsed: metadata.lastUsed || new Date().toISOString(),\n email: metadata.email,\n displayName: metadata.displayName,\n accountId: metadata.accountId,\n createdAt: metadata.createdAt,\n }\n })\n }\n\n async getCurrentProfile(): Promise<string> {\n const store = await this.readCredentials()\n return store.currentProfile || 'default'\n }\n\n async getCurrentProfileDetails(): Promise<Profile | null> {\n const store = await this.readCredentials()\n const currentProfileName = store.currentProfile || 'default'\n\n if (!store.profiles[currentProfileName]) {\n return null\n }\n\n const credentials = store.profiles[currentProfileName]\n const metadata = store.profileMetadata?.[currentProfileName] || ({} as ProfileMetadata)\n\n return {\n name: currentProfileName,\n credentials,\n apiUrl: credentials.apiUrl,\n lastUsed: metadata.lastUsed || new Date().toISOString(),\n email: metadata.email,\n displayName: metadata.displayName,\n accountId: metadata.accountId,\n createdAt: metadata.createdAt,\n }\n }\n\n async setCurrentProfile(profileName: string): Promise<void> {\n const store = await this.readCredentials()\n\n if (!store.profiles[profileName]) {\n throw new Error(`Profile '${profileName}' not found`)\n }\n\n // Initialize metadata if it doesn't exist\n if (!store.profileMetadata) {\n store.profileMetadata = {}\n }\n\n // Update last used time while preserving other metadata\n store.profileMetadata[profileName] = {\n ...store.profileMetadata[profileName], // Preserve existing metadata\n lastUsed: new Date().toISOString(),\n }\n\n store.currentProfile = profileName\n await this.writeCredentials(store)\n }\n\n async deleteProfile(profileName: string): Promise<void> {\n const store = await this.readCredentials()\n\n if (!store.profiles[profileName]) {\n throw new Error(`Profile '${profileName}' not found`)\n }\n\n delete store.profiles[profileName]\n\n // If we deleted the current profile, switch to another one\n if (store.currentProfile === profileName) {\n const remainingProfiles = Object.keys(store.profiles)\n store.currentProfile = remainingProfiles.length > 0 ? remainingProfiles[0]! : 'default'\n }\n\n await this.writeCredentials(store)\n }\n\n async getActiveCredentials(): Promise<Credentials> {\n // Check environment variable first\n const envProfile = process.env.ADK_PROFILE\n\n const credentials = await this.getCredentials(envProfile)\n\n if (!credentials) {\n const profileName = envProfile || 'default'\n throw new Error(`No credentials found for profile '${profileName}'. ` + `Please run 'adk login' to authenticate.`)\n }\n\n return credentials\n }\n\n /**\n * Get credentials for agent-specific operations\n * This will prioritize workspaceId and apiUrl from agent.json over credentials file\n *\n * @param agentPath - Path to the agent project directory\n * @throws Error if agent.json is missing or doesn't contain workspaceId\n */\n async getAgentCredentials(agentPath: string): Promise<Credentials> {\n const baseCredentials = await this.getActiveCredentials()\n\n // Use the agent resolver to load and validate agent.json\n const agentInfo = await resolveAgent(agentPath, {\n required: true,\n requireWorkspace: true,\n })\n\n // agentInfo is guaranteed to be non-null and have workspaceId due to options above\n // apiUrl is also guaranteed to exist because the resolver defaults it to .cloud\n return {\n ...baseCredentials,\n apiUrl: agentInfo!.apiUrl || baseCredentials.apiUrl, // Prioritize apiUrl from agent.json (workspaceId is specific to apiUrl)\n workspaceId: agentInfo!.workspaceId,\n botId: agentInfo!.botId, // Also include botId if available\n }\n }\n}\n",
|
|
6
10
|
"import { mkdir, writeFile } from 'fs/promises'\nimport { parse } from 'path'\n\nexport const createFile = async (path: string, content: string) => {\n const file = parse(path)\n await mkdir(file.dir, { recursive: true })\n await writeFile(path, content)\n}\n",
|
|
7
11
|
"import path from 'path'\nimport { format, Options } from 'prettier'\n\nexport const PRETTIER_CONFIG = {\n semi: true,\n singleQuote: false,\n tabWidth: 2,\n trailingComma: 'es5',\n printWidth: 80,\n arrowParens: 'always',\n // Disable certain features that might cause issues\n requirePragma: false,\n insertPragma: false,\n proseWrap: 'preserve',\n} satisfies Partial<Options>\n\nexport const formatCode = async (code: string, filepath?: string): Promise<string> => {\n try {\n // Skip formatting if code is empty or too large\n if (!code || code.length > 1_000_000) {\n return code\n }\n\n // Try to format with Prettier\n return await format(code, {\n ...PRETTIER_CONFIG,\n filepath: filepath || 'file.ts',\n })\n } catch (err) {\n console.warn('Failed to format code with Prettier:', err)\n console.warn(\n code\n .slice(0, 1000)\n .split('\\n')\n .map((l, i) => `\\t${i.toString().padStart(2, '0')} | ${l}`)\n .join('\\n')\n )\n return code\n }\n}\n\n// This constant is injected at build time by esbuild's define\ndeclare const __RUNTIME_VERSION__: string\n\nexport const ADK_VERSION = __RUNTIME_VERSION__\n\nexport const relative = (from: string, to: string): string => {\n const fromDir = path.dirname(from)\n const relative = path.relative(fromDir, to)\n return relative.startsWith('.') ? relative : `./${relative}`\n}\n\nexport function toMultilineComment(comment: string): string {\n // Handle empty or null comments\n if (!comment || comment.trim() === '') {\n return ''\n }\n\n // Escape potentially dangerous characters in the comment\n // Replace */ with *\\/ to prevent premature comment closure\n let safeComment = comment.replace(/\\*\\//g, '*\\\\/')\n\n // Split by newlines to handle multi-line comments\n // Handle all line ending types: \\r\\n (Windows), \\n (Unix), \\r (old Mac)\n const lines = safeComment.split(/\\r\\n|\\r|\\n/)\n\n // If single line and short enough, return inline comment\n if (lines.length === 1 && lines[0] && lines[0].length <= 60) {\n return `/** ${lines[0]} */`\n }\n\n // For multi-line comments, format with proper indentation\n let result = '/**\\n'\n for (const line of lines) {\n // Trim trailing whitespace but preserve leading whitespace for formatting\n const trimmedLine = line.replace(/\\s+$/, '')\n result += ` * ${trimmedLine}\\n`\n }\n result += ' */'\n\n return result\n}\n",
|
|
8
12
|
"import { AgentProject } from '../agent-project/agent-project.js'\nimport { ADK_VERSION, formatCode } from './utils.js'\nimport { createFile } from '../utils/fs.js'\nimport path from 'path'\n\nexport async function generateActionTypes(project: AgentProject): Promise<void> {\n // Generate action definitions\n const actionDefs: string[] = []\n\n for (const action of project.actions) {\n // Skip actions with visibility: hidden from type generation\n if (action.definition.attributes?.visibility === 'hidden') {\n continue\n }\n\n try {\n // Skip built-in actions that don't have a real file path\n if (action.path === '<adk:builtin>') {\n // For built-in actions, use the definition directly since we can't import them\n // Built-in actions should already have proper input/output schemas in their definitions\n actionDefs.push(` \"${action.definition.name}\": {\n input: any;\n output: any;\n };`)\n continue\n }\n\n // Import the action module to get the actual instance\n const absolutePath = path.join(project.path, action.path)\n // Bust module cache to ensure fresh action on type generation\n const actionModule = await import(`${absolutePath}?t=${Date.now()}`)\n const actionInstance = actionModule[action.export] || actionModule.default\n\n if (actionInstance && actionInstance.input && actionInstance.output) {\n // Convert Zod schemas to TypeScript types\n const inputType = actionInstance.input.toTypescriptType ? actionInstance.input.toTypescriptType() : 'any'\n const outputType = actionInstance.output.toTypescriptType ? actionInstance.output.toTypescriptType() : 'any'\n\n actionDefs.push(` \"${action.definition.name}\": {\n input: ${inputType};\n output: ${outputType};\n };`)\n }\n } catch (error) {\n console.warn(`Warning: Could not process action ${action.definition.name}:`, error)\n actionDefs.push(` \"${action.definition.name}\": {\n input: any;\n output: any;\n };`)\n }\n }\n\n const content = `\n////////////////////////////////////////////////////////\n// DO NOT EDIT THIS FILE DIRECTLY\n// This file is auto-generated from the Botpress ADK\n// ADK Version: ${ADK_VERSION}\n// Generated at: ${new Date().toISOString()}\n////////////////////////////////////////////////////////\n\ndeclare module \"@botpress/runtime/_types/actions\" {\n\n export interface CallableAction<I, O> {\n (input: I): Promise<O>;\n asTool(): import(\"@botpress/runtime\").Autonomous.Tool;\n }\n\n export type BotActionDefinitions = {\n${actionDefs.join('\\n')}\n };\n \n export type BotActions = {\n [K in keyof BotActionDefinitions]:\n CallableAction<BotActionDefinitions[K][\"input\"], BotActionDefinitions[K][\"output\"]>\n };\n}\n`\n\n // Write to action-types.d.ts in the .adk folder\n const actionTypesPath = path.join(project.path, '.adk', 'action-types.d.ts')\n await createFile(actionTypesPath, await formatCode(content))\n}\n",
|
|
9
13
|
"import { AgentProject } from '../agent-project/agent-project.js'\nimport { ADK_VERSION, formatCode } from './utils.js'\nimport { createFile } from '../utils/fs.js'\nimport path from 'path'\n\nexport async function generateIntegrationActionTypes(project: AgentProject): Promise<void> {\n const content = `\n////////////////////////////////////////////////////////\n// DO NOT EDIT THIS FILE DIRECTLY\n// This file is auto-generated from the Botpress ADK\n// ADK Version: ${ADK_VERSION}\n// Generated at: ${new Date().toISOString()}\n////////////////////////////////////////////////////////\n\ntype Integrations = import(\"@botpress/runtime/_types/integrations\").Integrations;\n\ndeclare module \"@botpress/runtime/_types/integration-actions\" {\n\nexport interface CallableAction<I, O> {\n (input: I): Promise<O>;\n asTool(): import(\"@botpress/runtime\").Autonomous.Tool;\n}\n\ntype Callable<T> = T extends { input: infer I; output: infer O }\n ? CallableAction<I, O>\n : never;\n\ntype IntegrationsMap<T> = {\n [Integration in keyof T]: T[Integration] extends { actions: infer Actions }\n ? {\n [Action in keyof Actions]: Callable<Actions[Action]>;\n }\n : never;\n};\n\nexport type IntegrationActions = IntegrationsMap<Integrations>;\n}\n`\n\n // Write to integration-action-types.d.ts in the .adk folder\n const integrationActionTypesPath = path.join(project.path, '.adk', 'integration-action-types.d.ts')\n await createFile(integrationActionTypesPath, await formatCode(content))\n}\n",
|
|
10
|
-
"import { CredentialsManager, Credentials, Profile } from './credentials.js'\nimport { AuthService } from './service.js'\n\nexport interface LoginOptions {\n profile?: string\n apiUrl?: string\n}\n\nexport interface AuthAPI {\n login(token: string, options?: LoginOptions): Promise<void>\n logout(profile?: string): Promise<void>\n listProfiles(): Promise<Profile[]>\n getCurrentProfile(): Promise<string>\n getCurrentProfileDetails(): Promise<Profile | null>\n setCurrentProfile(profileName: string): Promise<void>\n getActiveCredentials(): Promise<Credentials>\n validateToken(token: string, apiUrl?: string): Promise<boolean>\n}\n\nclass Auth implements AuthAPI {\n private credentialsManager: CredentialsManager\n\n constructor() {\n this.credentialsManager = new CredentialsManager()\n }\n\n async login(token: string, options: LoginOptions = {}): Promise<void> {\n const { profile = 'default', apiUrl = 'https://api.botpress.cloud' } = options\n\n // Validate the token first\n const authService = new AuthService(apiUrl)\n const authResult = await authService.validateToken(token)\n\n // Save credentials with user info\n await this.credentialsManager.saveCredentials(\n profile,\n {\n token,\n apiUrl,\n workspaceId: authResult.workspaceId,\n workspaceName: authResult.workspaceName,\n botId: authResult.botId,\n },\n {\n email: authResult.email,\n displayName: authResult.displayName,\n accountId: authResult.accountId,\n createdAt: authResult.createdAt,\n }\n )\n }\n\n async logout(profile?: string): Promise<void> {\n if (profile) {\n await this.credentialsManager.deleteProfile(profile)\n } else {\n // Delete current profile\n const currentProfile = await this.credentialsManager.getCurrentProfile()\n await this.credentialsManager.deleteProfile(currentProfile)\n }\n }\n\n async listProfiles(): Promise<Profile[]> {\n return this.credentialsManager.listProfiles()\n }\n\n async getCurrentProfile(): Promise<string> {\n return this.credentialsManager.getCurrentProfile()\n }\n\n async getCurrentProfileDetails(): Promise<Profile | null> {\n return this.credentialsManager.getCurrentProfileDetails()\n }\n\n async setCurrentProfile(profileName: string): Promise<void> {\n return this.credentialsManager.setCurrentProfile(profileName)\n }\n\n async getActiveCredentials(): Promise<Credentials> {\n return this.credentialsManager.getActiveCredentials()\n }\n\n async validateToken(token: string, apiUrl?: string): Promise<boolean> {\n const authService = new AuthService(apiUrl)\n return authService.testConnection(token)\n }\n}\n\n// Export singleton instance\nexport const auth = new Auth()\n\n// Export types\nexport type { Credentials, Profile } from './credentials.js'\nexport type { AuthResult } from './service.js'\n\n// Export classes\nexport { CredentialsManager } from './credentials.js'\n\n// Export BP CLI importer\nexport { bpCliImporter } from './bp-cli-import.js'\n",
|
|
14
|
+
"import { CredentialsManager, Credentials, Profile } from './credentials.js'\nimport { AuthService } from './service.js'\n\nexport interface LoginOptions {\n profile?: string\n apiUrl?: string\n}\n\nexport interface AuthAPI {\n login(token: string, options?: LoginOptions): Promise<void>\n logout(profile?: string): Promise<void>\n listProfiles(): Promise<Profile[]>\n getCurrentProfile(): Promise<string>\n getCurrentProfileDetails(): Promise<Profile | null>\n setCurrentProfile(profileName: string): Promise<void>\n getActiveCredentials(): Promise<Credentials>\n getAgentCredentials(agentPath: string): Promise<Credentials>\n validateToken(token: string, apiUrl?: string): Promise<boolean>\n}\n\nclass Auth implements AuthAPI {\n private credentialsManager: CredentialsManager\n\n constructor() {\n this.credentialsManager = new CredentialsManager()\n }\n\n async login(token: string, options: LoginOptions = {}): Promise<void> {\n const { profile = 'default', apiUrl = 'https://api.botpress.cloud' } = options\n\n // Validate the token first\n const authService = new AuthService(apiUrl)\n const authResult = await authService.validateToken(token)\n\n // Save credentials with user info\n await this.credentialsManager.saveCredentials(\n profile,\n {\n token,\n apiUrl,\n workspaceId: authResult.workspaceId,\n workspaceName: authResult.workspaceName,\n botId: authResult.botId,\n },\n {\n email: authResult.email,\n displayName: authResult.displayName,\n accountId: authResult.accountId,\n createdAt: authResult.createdAt,\n }\n )\n }\n\n async logout(profile?: string): Promise<void> {\n if (profile) {\n await this.credentialsManager.deleteProfile(profile)\n } else {\n // Delete current profile\n const currentProfile = await this.credentialsManager.getCurrentProfile()\n await this.credentialsManager.deleteProfile(currentProfile)\n }\n }\n\n async listProfiles(): Promise<Profile[]> {\n return this.credentialsManager.listProfiles()\n }\n\n async getCurrentProfile(): Promise<string> {\n return this.credentialsManager.getCurrentProfile()\n }\n\n async getCurrentProfileDetails(): Promise<Profile | null> {\n return this.credentialsManager.getCurrentProfileDetails()\n }\n\n async setCurrentProfile(profileName: string): Promise<void> {\n return this.credentialsManager.setCurrentProfile(profileName)\n }\n\n async getActiveCredentials(): Promise<Credentials> {\n return this.credentialsManager.getActiveCredentials()\n }\n\n async getAgentCredentials(agentPath: string): Promise<Credentials> {\n return this.credentialsManager.getAgentCredentials(agentPath)\n }\n\n async validateToken(token: string, apiUrl?: string): Promise<boolean> {\n const authService = new AuthService(apiUrl)\n return authService.testConnection(token)\n }\n}\n\n// Export singleton instance\nexport const auth = new Auth()\n\n// Export types\nexport type { Credentials, Profile } from './credentials.js'\nexport type { AuthResult } from './service.js'\n\n// Export classes\nexport { CredentialsManager } from './credentials.js'\n\n// Export BP CLI importer\nexport { bpCliImporter } from './bp-cli-import.js'\n",
|
|
11
15
|
"import { Client } from '@botpress/client'\n\nexport interface AuthResult {\n workspaceId?: string\n workspaceName?: string\n botId?: string\n userId?: string\n email?: string\n displayName?: string\n accountId?: string\n createdAt?: string\n}\n\nexport class AuthService {\n private apiUrl: string\n\n constructor(apiUrl?: string) {\n this.apiUrl = apiUrl || 'https://api.botpress.cloud'\n }\n\n async validateToken(token: string): Promise<AuthResult> {\n if (!token || !token.startsWith('bp_')) {\n throw new Error('Invalid token format. Token should start with \"bp_\"')\n }\n\n try {\n // Create a Botpress client with the token\n const client = new Client({\n apiUrl: this.apiUrl,\n token,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n\n // Try to get account details to validate the token\n // This is a lightweight call that will fail if the token is invalid\n const accountResponse = await client.getAccount({})\n const { account } = accountResponse\n\n // Also get workspaces for additional context\n const workspaces = await client.list.workspaces({}).collect()\n\n // If we get here, the token is valid\n return {\n workspaceId: workspaces[0]?.id,\n workspaceName: workspaces[0]?.name,\n accountId: account.id,\n email: account.email,\n displayName: account.displayName,\n createdAt: account.createdAt,\n }\n } catch (error) {\n if (error instanceof Error) {\n // Check for common authentication errors\n if (error.message.includes('401') || error.message.includes('Unauthorized')) {\n throw new Error('Invalid token. Please check your API token and try again.')\n }\n if (error.message.includes('Network') || error.message.includes('ENOTFOUND')) {\n throw new Error(`Unable to connect to ${this.apiUrl}. Please check your internet connection and API URL.`)\n }\n }\n\n // Re-throw the original error if it's not a known authentication error\n throw error\n }\n }\n\n async testConnection(token: string): Promise<boolean> {\n try {\n await this.validateToken(token)\n return true\n } catch {\n return false\n }\n }\n}\n",
|
|
12
16
|
"import fs from 'fs/promises'\nimport path from 'path'\nimport os from 'os'\nimport { auth } from './index.js'\n\ninterface BpCliCredentials {\n token: string\n workspaceId: string\n apiUrl: string\n botId?: string\n}\n\nexport class BpCliImporter {\n private bpCachePath: string\n\n constructor() {\n // BP CLI stores credentials in ~/.botpress/global.cache.json\n this.bpCachePath = path.join(os.homedir(), '.botpress', 'global.cache.json')\n }\n\n async hasBpCliCredentials(): Promise<boolean> {\n try {\n await fs.access(this.bpCachePath)\n return true\n } catch {\n return false\n }\n }\n\n async getBpCliCredentials(): Promise<BpCliCredentials | null> {\n try {\n const data = await fs.readFile(this.bpCachePath, 'utf-8')\n const credentials = JSON.parse(data) as BpCliCredentials\n\n // Validate required fields\n if (!credentials.token || !credentials.workspaceId || !credentials.apiUrl) {\n return null\n }\n\n return credentials\n } catch {\n return null\n }\n }\n\n async importFromBpCli(profileName: string = 'default'): Promise<boolean> {\n const bpCredentials = await this.getBpCliCredentials()\n if (!bpCredentials) {\n return false\n }\n\n try {\n // Login with BP CLI credentials\n await auth.login(bpCredentials.token, {\n profile: profileName,\n apiUrl: bpCredentials.apiUrl,\n })\n\n // The login process will have saved basic credentials\n // Now we need to update them with the workspace ID from BP CLI\n // We'll do this by creating a new CredentialsManager instance\n const credentialsManager = new (await import('./credentials.js')).CredentialsManager()\n\n // Read current credentials\n const store = await credentialsManager['readCredentials']()\n\n if (store.profiles[profileName]) {\n store.profiles[profileName].workspaceId = bpCredentials.workspaceId\n if (bpCredentials.botId) {\n store.profiles[profileName].botId = bpCredentials.botId\n }\n await credentialsManager['writeCredentials'](store)\n }\n\n return true\n } catch {\n return false\n }\n }\n}\n\nexport const bpCliImporter = new BpCliImporter()\n",
|
|
13
17
|
"import { EventEmitter } from 'events'\n\nexport interface BaseProgressEvent {\n type: string\n startTime: number\n endTime?: number\n}\n\nexport interface BaseCommandEvents<TProgress extends BaseProgressEvent = BaseProgressEvent, TDone = never> {\n stdout: (data: string) => void\n stderr: (data: string) => void\n progress: (event: TProgress) => void\n error: (error: { exitCode: number; stderr: string; message: string }) => void\n done: TDone extends never ? never : (result: TDone) => void\n}\n\nexport abstract class BaseCommand<TProgress extends BaseProgressEvent = BaseProgressEvent, TDone = never> {\n protected events = new EventEmitter()\n private deferred = Promise.withResolvers<TDone>()\n\n on<K extends keyof BaseCommandEvents<TProgress, TDone>>(\n event: K,\n listener: BaseCommandEvents<TProgress, TDone>[K]\n ): void {\n this.events.on(event as string, listener)\n }\n\n protected emit<K extends keyof BaseCommandEvents<TProgress, TDone>>(\n event: K,\n ...args: Parameters<BaseCommandEvents<TProgress, TDone>[K]>\n ): void {\n if (event === 'done') {\n this.deferred.resolve(args[0] as TDone)\n } else if (event === 'error') {\n const error = args[0] as {\n exitCode: number\n stderr: string\n message: string\n }\n const err = new Error(error.message)\n ;(err as any).exitCode = error.exitCode\n ;(err as any).stderr = error.stderr\n this.deferred.reject(err)\n }\n\n this.events.emit(event as string, ...args)\n }\n\n output(): Promise<TDone> {\n return this.deferred.promise\n }\n\n abstract run(): Promise<void>\n abstract kill(signal?: NodeJS.Signals): void\n}\n",
|
|
@@ -20,29 +24,27 @@
|
|
|
20
24
|
"import { execa, type ResultPromise } from 'execa'\nimport { getBpCli } from './bp-cli.js'\nimport { BaseCommand } from './base-command.js'\n\nexport interface BpChatCommandOptions {\n botId: string\n workspaceId: string\n credentials: {\n token: string\n apiUrl: string\n }\n projectPath?: string\n}\n\nexport class BpChatCommand extends BaseCommand<never> {\n private childProcess: ResultPromise | null = null\n\n constructor(private options: BpChatCommandOptions) {\n super()\n }\n\n async run(): Promise<void> {\n const { botId, workspaceId, credentials, projectPath } = this.options\n\n // Get bp command path (uses bundled CLI)\n const { path: bpCommand } = await getBpCli(projectPath)\n\n const bpArgs = [\n 'chat',\n '--botId',\n botId,\n '--workspaceId',\n workspaceId,\n '--token',\n credentials.token,\n '--apiUrl',\n credentials.apiUrl,\n ]\n\n this.childProcess = execa(bpCommand, bpArgs, {\n stdio: 'inherit',\n })\n\n try {\n // Wait for the process to complete\n await this.childProcess\n } catch (error: any) {\n // Emit error in the expected format\n this.emit('error', {\n exitCode: error.exitCode || 1,\n stderr: error.stderr || '',\n message: error.message || 'Chat command failed',\n })\n throw error\n }\n }\n\n kill(signal?: NodeJS.Signals | number): void {\n if (this.childProcess) {\n this.childProcess.kill(signal)\n }\n }\n}\n",
|
|
21
25
|
"import { Client } from '@botpress/client'\nimport { auth } from '../auth/index.js'\n\ninterface WorkspaceInfo {\n id: string\n name: string\n fetchedAt: number\n}\n\nclass WorkspaceCache {\n private cache: Map<string, WorkspaceInfo> = new Map()\n private readonly CACHE_TTL = 60 * 60 * 1000 // 1 hour\n\n async getWorkspaceName(workspaceId: string): Promise<string | undefined> {\n // Check cache first\n const cached = this.cache.get(workspaceId)\n if (cached && Date.now() - cached.fetchedAt < this.CACHE_TTL) {\n return cached.name\n }\n\n try {\n // Get credentials to create client\n const credentials = await auth.getActiveCredentials()\n const client = new Client({\n apiUrl: credentials.apiUrl,\n token: credentials.token,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n\n // Fetch all workspaces and find the one with matching ID\n const { workspaces } = await client.listWorkspaces({})\n const workspace = workspaces.find((ws) => ws.id === workspaceId)\n\n if (!workspace) {\n return undefined\n }\n\n // Cache the result\n this.cache.set(workspaceId, {\n id: workspaceId,\n name: workspace.name,\n fetchedAt: Date.now(),\n })\n\n return workspace.name\n } catch (error) {\n console.error(`Failed to fetch workspace name for ${workspaceId}:`, error)\n return undefined\n }\n }\n\n clear(): void {\n this.cache.clear()\n }\n}\n\n// Export singleton instance\nexport const workspaceCache = new WorkspaceCache()\n",
|
|
22
26
|
"import { DateTime } from 'luxon'\n\nexport function getRelativeTime(date: string | Date): string {\n const dateTime = typeof date === 'string' ? DateTime.fromISO(date) : DateTime.fromJSDate(date)\n const now = DateTime.now()\n\n const diff = now.diff(dateTime, ['years', 'months', 'days', 'hours', 'minutes'])\n\n if (diff.years >= 1) {\n return `${Math.floor(diff.years)} year${Math.floor(diff.years) > 1 ? 's' : ''} ago`\n } else if (diff.months >= 1) {\n return `${Math.floor(diff.months)} month${Math.floor(diff.months) > 1 ? 's' : ''} ago`\n } else if (diff.days >= 1) {\n return `${Math.floor(diff.days)} day${Math.floor(diff.days) > 1 ? 's' : ''} ago`\n } else if (diff.hours >= 1) {\n return `${Math.floor(diff.hours)} hour${Math.floor(diff.hours) > 1 ? 's' : ''} ago`\n } else if (diff.minutes >= 1) {\n return `${Math.floor(diff.minutes)} minute${Math.floor(diff.minutes) > 1 ? 's' : ''} ago`\n } else {\n return 'just now'\n }\n}\n",
|
|
23
|
-
"/**\n * Utility for ensuring consistent key ordering in JSON files\n */\n\n// Key ordering arrays for different file types\nexport const agentInfoKeyOrder = ['botId', 'workspaceId', 'devId'] as const\nexport const dependenciesKeyOrder = ['integrations'] as const\nexport const integrationKeyOrder = ['version', 'enabled', 'configurationType', 'connection', 'config'] as const\n\n/**\n * Orders object keys according to a specified order, with unspecified keys at the end alphabetically\n */\nexport function orderKeys<T extends Record<string, any>>(obj: T, keyOrder?: readonly (keyof T)[]): T {\n const objKeys = Object.keys(obj)\n const orderedKeys: string[] = []\n const remainingKeys: string[] = []\n\n // Add keys in the specified order if they exist in the object\n if (keyOrder) {\n for (const key of keyOrder) {\n const keyStr = String(key)\n if (objKeys.includes(keyStr)) {\n orderedKeys.push(keyStr)\n }\n }\n }\n\n // Add remaining keys alphabetically\n for (const key of objKeys) {\n if (!orderedKeys.includes(key)) {\n remainingKeys.push(key)\n }\n }\n remainingKeys.sort()\n\n // Combine ordered keys with remaining keys\n const finalKeys = [...orderedKeys, ...remainingKeys]\n\n const result = {} as T\n for (const key of finalKeys) {\n result[key as keyof T] = obj[key]\n }\n\n return result\n}\n\n/**\n * Recursively orders keys in nested objects for integrations\n */\nexport function orderIntegrationKeys(integrations: Record<string, any>): Record<string, any> {\n const result: Record<string, any> = {}\n\n for (const [name, config] of Object.entries(integrations)) {\n if (typeof config === 'object' && config !== null && !Array.isArray(config)) {\n result[name] = orderKeys(config, integrationKeyOrder)\n } else {\n result[name] = config\n }\n }\n\n return result\n}\n\n/**\n * Stringifies JSON with consistent key ordering and formatting\n */\nexport function stringifyWithOrder<T extends Record<string, any>>(\n obj: T,\n keyOrder?: readonly (keyof T)[],\n space: number | string = 2\n): string {\n const orderedObj = orderKeys(obj, keyOrder)\n\n // Special handling for dependencies with nested integrations\n if ('integrations' in orderedObj) {\n const integrations = (orderedObj as any).integrations\n if (integrations && typeof integrations === 'object') {\n ;(orderedObj as any).integrations = orderIntegrationKeys(integrations)\n }\n }\n\n return JSON.stringify(orderedObj, null, space)\n}\n",
|
|
24
|
-
"import { BuiltInActions, BuiltInWorkflows, Errors, Primitives, setAdkCommand } from '@botpress/runtime/internal'\n\nimport fs from 'fs/promises'\nimport path from 'path'\nimport { AssetsManager, AssetSyncOptions, AssetSyncPlan, AssetSyncResult } from '../assets/index.js'\nimport { IntegrationManager } from '../integrations/index.js'\nimport { ParsedIntegration } from '../integrations/types.js'\nimport { InterfaceManager } from '../interfaces/index.js'\nimport { ParsedInterface } from '../interfaces/types.js'\n\nimport { agentInfoKeyOrder, stringifyWithOrder } from '../utils/json-ordering.js'\nimport { expandExports } from './expand-exports.js'\nimport {\n AgentConfig,\n AgentInfo,\n agentInfoSchema,\n Dependencies,\n dependenciesSchema,\n Integration,\n ProjectInfo,\n ProjectState,\n ValidationError,\n ValidationErrorCode,\n ValidationResult,\n ValidationSeverity,\n} from './types.js'\nimport { ValidationErrors } from './validation-errors.js'\n\nexport interface AgentProjectOptions {\n noCache?: boolean\n adkCommand?: 'adk-dev' | 'adk-build' | 'adk-deploy'\n}\n\ntype ConversationDefinition = Primitives.Definitions.ConversationDefinition\ntype KnowledgeDefinition = Primitives.Definitions.KnowledgeDefinition\ntype TriggerDefinition = Primitives.Definitions.TriggerDefinition\ntype WorkflowDefinition = Primitives.Definitions.WorkflowDefinition\ntype ActionDefinition = Primitives.Definitions.ActionDefinition\ntype TableDefinition = Primitives.Definitions.TableDefinition\ntype PrimitiveDefinition = Primitives.Definitions.PrimitiveDefinition\n\nexport type PrimitiveReference<T extends PrimitiveDefinition = PrimitiveDefinition> = {\n path: string\n export: string\n definition: T\n}\n\nexport class AgentProject {\n private static _projectCache = new Map<string, AgentProject>()\n\n private _options: AgentProjectOptions\n private _path: string\n private _config?: AgentConfig\n private _dependencies?: Dependencies\n private _agentInfo?: AgentInfo\n private _state: ProjectState = ProjectState.Unloaded\n private _errors: ValidationError[] = []\n private _warnings: ValidationError[] = []\n\n private _lastBuildTime?: Date\n private _integrations?: ParsedIntegration[]\n private _interfaces?: ParsedInterface[]\n private _integrationManager: IntegrationManager\n private _interfaceManager: InterfaceManager\n private _assetsManager: AssetsManager\n private _conversations: PrimitiveReference<ConversationDefinition>[] = []\n private _knowledge: PrimitiveReference<KnowledgeDefinition>[] = []\n private _triggers: PrimitiveReference<TriggerDefinition>[] = []\n private _workflows: PrimitiveReference<WorkflowDefinition>[] = []\n private _actions: PrimitiveReference<ActionDefinition>[] = []\n private _tables: PrimitiveReference<TableDefinition>[] = []\n\n constructor(projectPath: string, options: AgentProjectOptions = {}) {\n this._options = options\n this._path = path.resolve(projectPath)\n this._integrationManager = new IntegrationManager({\n noCache: options.noCache,\n })\n this._interfaceManager = new InterfaceManager({\n noCache: options.noCache,\n })\n this._assetsManager = new AssetsManager({\n projectPath: this._path,\n })\n }\n\n // Static factory methods\n static async load(projectPath: string, options: AgentProjectOptions = {}): Promise<AgentProject> {\n const resolvedPath = path.resolve(projectPath)\n\n // Check cache unless explicitly disabled\n if (!options.noCache) {\n const cached = AgentProject._projectCache.get(resolvedPath)\n if (cached) {\n return cached\n }\n }\n\n // Create and load new project\n const project = new AgentProject(resolvedPath, options)\n await project.reload()\n\n // Cache the project unless caching is disabled\n if (!options.noCache) {\n AgentProject._projectCache.set(resolvedPath, project)\n }\n\n return project\n }\n\n // Static method to clear the cache\n static clearCache(): void {\n AgentProject._projectCache.clear()\n }\n\n // Static method to remove a specific project from cache\n static clearCacheForPath(projectPath: string): void {\n const resolvedPath = path.resolve(projectPath)\n AgentProject._projectCache.delete(resolvedPath)\n }\n\n // Public properties\n get path(): string {\n return this._path\n }\n\n get conversations(): PrimitiveReference<ConversationDefinition>[] {\n return this._conversations\n }\n\n get knowledge(): PrimitiveReference<KnowledgeDefinition>[] {\n return this._knowledge\n }\n\n get triggers(): PrimitiveReference<TriggerDefinition>[] {\n return this._triggers\n }\n\n get workflows(): PrimitiveReference<WorkflowDefinition>[] {\n return this._workflows\n }\n\n get actions(): PrimitiveReference<ActionDefinition>[] {\n return this._actions\n }\n\n get tables(): PrimitiveReference<TableDefinition>[] {\n return this._tables\n }\n\n get config(): AgentConfig | undefined {\n return this._config\n }\n\n get dependencies(): Dependencies | undefined {\n return this._dependencies\n }\n\n get agentInfo(): AgentInfo | undefined {\n return this._agentInfo\n }\n\n get state(): ProjectState {\n return this._state\n }\n\n get info(): ProjectInfo {\n return {\n path: this._path,\n config: this._config!,\n dependencies: this._dependencies || {\n integrations: {},\n },\n agentInfo: this._agentInfo,\n state: this._state,\n lastBuildTime: this._lastBuildTime,\n errors: [...this._errors],\n warnings: [...this._warnings],\n errorCount: this._errors.filter((e) => e.severity === ValidationSeverity.ERROR).length,\n warningCount: this._warnings.filter((e) => e.severity === ValidationSeverity.WARNING).length,\n infoCount: [...this._errors, ...this._warnings].filter((e) => e.severity === ValidationSeverity.INFO).length,\n }\n }\n\n // Core methods\n async reload(): Promise<void> {\n this._state = ProjectState.Loading\n\n try {\n // Clear previous state\n this._conversations = []\n this._knowledge = []\n this._triggers = []\n this._workflows = []\n this._actions = []\n this._tables = []\n this._errors = []\n this._warnings = []\n\n // Validate project structure\n const validation = await this.validate()\n this._errors = validation.errors\n this._warnings = validation.warnings\n\n if (!validation.valid) {\n this._state = ProjectState.Error\n\n throw new Error(`Project validation failed: ${validation.errors[0]?.message}`)\n }\n\n // Load configuration\n await this.loadConfig()\n await this.loadAgentInfo()\n\n this._integrationManager = new IntegrationManager({\n noCache: this._options.noCache,\n workspaceId: this._agentInfo?.workspaceId,\n })\n\n this._interfaceManager = new InterfaceManager({\n noCache: this._options.noCache,\n workspaceId: this._agentInfo?.workspaceId,\n })\n\n this._assetsManager = new AssetsManager({\n projectPath: this._path,\n workspaceId: this._agentInfo?.workspaceId,\n botId: this._agentInfo?.botId,\n })\n\n await this.loadBuiltInWorkflows()\n await this.loadBuiltInActions()\n await this.loadAgentPrimitives()\n\n // Update assets manager with agent info if available\n if (this._agentInfo) {\n this._assetsManager = new AssetsManager({\n projectPath: this._path,\n botId: this._agentInfo.botId,\n workspaceId: this._agentInfo.workspaceId,\n })\n }\n\n if (this._errors.length > 0) {\n this._state = ProjectState.Error\n } else {\n this._state = ProjectState.Ready\n }\n } catch (error) {\n this._state = ProjectState.Error\n\n throw error\n }\n }\n\n async validate(): Promise<ValidationResult> {\n const errors: ValidationError[] = []\n const warnings: ValidationError[] = []\n const info: ValidationError[] = []\n\n try {\n // Check if directory exists\n await fs.access(this._path)\n\n // Check for required files\n const requiredFiles = ['agent.config.ts']\n for (const file of requiredFiles) {\n try {\n await fs.access(path.join(this._path, file))\n } catch {\n errors.push(ValidationErrors.requiredFileMissing(file))\n }\n }\n\n // Check for agent.json (optional, but warn if missing for deployed projects)\n try {\n await fs.access(path.join(this._path, 'agent.json'))\n } catch {\n // agent.json is optional, but we add an informational message\n info.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.MISSING_REQUIRED_FIELD,\n severity: ValidationSeverity.INFO,\n message: 'agent.json not found - this file will be required for deployment and remote operations',\n file: 'agent.json',\n hint: 'Create agent.json with botId and workspaceId after deploying your agent',\n })\n }\n\n // Check directory structure\n const expectedDirs = ['actions', 'workflows', 'conversations', 'assets']\n for (const dir of expectedDirs) {\n try {\n const stats = await fs.stat(path.join(this._path, dir))\n if (!stats.isDirectory()) {\n warnings.push(ValidationErrors.invalidStructure(dir, 'directory'))\n }\n } catch {\n // Directory doesn't exist, which is okay - they're optional\n }\n }\n } catch (error) {\n errors.push(ValidationErrors.directoryAccessError(this._path, String(error)))\n }\n\n // Filter by severity\n const errorsBySeverity = {\n errors: errors.filter((e) => e.severity === ValidationSeverity.ERROR),\n warnings: [...warnings, ...errors.filter((e) => e.severity === ValidationSeverity.WARNING)],\n info: [...info, ...errors.filter((e) => e.severity === ValidationSeverity.INFO)],\n }\n\n return {\n valid: errorsBySeverity.errors.length === 0,\n errors: errorsBySeverity.errors,\n warnings: errorsBySeverity.warnings,\n info: errorsBySeverity.info,\n errorCount: errorsBySeverity.errors.length,\n warningCount: errorsBySeverity.warnings.length,\n infoCount: errorsBySeverity.info.length,\n }\n }\n\n get integrations(): ParsedIntegration[] {\n if (!this._integrations) {\n throw new Error('Integrations not loaded')\n }\n\n return this._integrations!\n }\n\n get interfaces(): ParsedInterface[] {\n if (!this._interfaces) {\n throw new Error('Interfaces not loaded')\n }\n return this._interfaces!\n }\n\n // Integration management methods\n async getIntegrations(): Promise<Integration[]> {\n if (!this._dependencies || !this._integrations) {\n throw new Error('Project not loaded')\n }\n\n // Convert ParsedIntegration to Integration format\n return this._integrations.map((parsed) => ({\n name: parsed.alias,\n version: parsed.ref.version,\n workspace: parsed.ref.workspace,\n connection: parsed.connection,\n config: parsed.config,\n installed: false, // This would be determined by checking workspace\n installedVersion: undefined,\n hasChannels: parsed.definition?.channels && Object.keys(parsed.definition.channels).length > 0,\n }))\n }\n\n // Asset management methods\n async createAssetSyncPlan(): Promise<AssetSyncPlan> {\n if (this._state !== ProjectState.Ready) {\n throw new Error('Project must be in Ready state to create asset sync plan')\n }\n\n this.requiresAgentInfo('create asset sync plan')\n return await this._assetsManager.createSyncPlan()\n }\n\n async syncAssets(options?: AssetSyncOptions): Promise<AssetSyncResult> {\n if (this._state !== ProjectState.Ready) {\n throw new Error('Project must be in Ready state to sync assets')\n }\n\n this.requiresAgentInfo('sync assets')\n const plan = await this._assetsManager.createSyncPlan()\n return await this._assetsManager.executeSync(plan, options)\n }\n\n async hasAssetsDirectory(): Promise<boolean> {\n return await this._assetsManager.hasAssetsDirectory()\n }\n\n get assetsManager(): AssetsManager {\n return this._assetsManager\n }\n\n // Agent info management methods\n async createAgentInfo(info: AgentInfo): Promise<void> {\n const agentPath = path.join(this._path, 'agent.json')\n const agentContent = stringifyWithOrder(info, agentInfoKeyOrder)\n await fs.writeFile(agentPath, agentContent)\n this._agentInfo = info\n }\n\n async updateAgentInfo(updates: Partial<AgentInfo>): Promise<void> {\n if (!this._agentInfo) {\n throw new Error('No agent.json found. Use createAgentInfo() first.')\n }\n\n const updatedInfo = { ...this._agentInfo, ...updates }\n const agentPath = path.join(this._path, 'agent.json')\n const agentContent = stringifyWithOrder(updatedInfo, agentInfoKeyOrder)\n await fs.writeFile(agentPath, agentContent)\n this._agentInfo = updatedInfo\n }\n\n requiresAgentInfo(operation: string): void {\n if (!this._agentInfo?.botId) {\n throw new Error(\n `Operation \"${operation}\" requires a bot ID. ` +\n 'Please create agent.json with botId and workspaceId after deploying your agent.'\n )\n }\n }\n\n // Private helper methods\n private async loadConfig(): Promise<void> {\n try {\n // Bust module cache to ensure fresh config on reload\n const configPath = path.join(this._path, 'agent.config.ts')\n const configModule = await import(`${configPath}?t=${Date.now()}`)\n if (!configModule || !configModule.default) {\n this._errors.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_CONFIG_SCHEMA,\n severity: ValidationSeverity.ERROR,\n message: 'agent.config.ts does not export a default configuration object',\n file: 'agent.config.ts',\n })\n return\n }\n\n // Check if the config was created with defineConfig\n const { isAgentConfig } = await import('@botpress/runtime/internal')\n if (!isAgentConfig(configModule.default)) {\n this._errors.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_CONFIG_SCHEMA,\n severity: ValidationSeverity.ERROR,\n message:\n 'agent.config.ts must export the result of defineConfig(). ' +\n \"Example: export default defineConfig({ name: 'my-agent', ... })\",\n file: 'agent.config.ts',\n hint: 'Wrap your config object with defineConfig() from @botpress/runtime',\n })\n return\n }\n\n this._config = configModule.default as AgentConfig\n\n // Extract dependencies from config\n const config = configModule.default as any\n if (config.dependencies) {\n // Validate dependencies against schema\n const validationResult = dependenciesSchema.safeParse(config.dependencies)\n if (!validationResult.success) {\n const errors = validationResult.error.errors\n for (const error of errors) {\n this._errors.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_DEPENDENCIES_SCHEMA,\n severity: ValidationSeverity.ERROR,\n message: `Invalid dependencies in agent.config.ts: ${error.path.join('.')} - ${error.message}`,\n file: 'agent.config.ts',\n hint: error.code === 'invalid_type' ? `Expected ${error.expected}, but got ${error.received}` : undefined,\n })\n }\n this._dependencies = { integrations: {} }\n this._integrations = []\n this._interfaces = []\n return\n }\n\n this._dependencies = validationResult.data\n\n // Validate and load integrations and interfaces\n if (this._dependencies) {\n const [intRes, ifRes] = await Promise.all([\n this._integrationManager.loadIntegrations(this._dependencies),\n this._interfaceManager.loadInterfaces(this._dependencies),\n ])\n this._integrations = intRes.integrations\n this._interfaces = ifRes.interfaces\n\n // Add errors and warnings\n this._errors.push(...intRes.errors, ...ifRes.errors)\n this._warnings.push(...intRes.warnings, ...ifRes.warnings)\n }\n } else {\n // No dependencies in config\n this._errors.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.MISSING_REQUIRED_FIELD,\n severity: ValidationSeverity.ERROR,\n message: 'agent.config.ts must include a dependencies field',\n file: 'agent.config.ts',\n hint: 'Add dependencies: { integrations: {} } to your defineConfig() call',\n })\n this._dependencies = { integrations: {} }\n this._integrations = []\n this._interfaces = []\n }\n } catch (error) {\n this._errors.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_CONFIG_SYNTAX,\n severity: ValidationSeverity.ERROR,\n message: `Failed to load agent.config.ts: ${(error as Error).message}`,\n file: 'agent.config.ts',\n })\n }\n }\n\n private async loadAgentInfo(): Promise<void> {\n try {\n // Load agent.json\n const agentPath = path.join(this._path, 'agent.json')\n const agentContent = await fs.readFile(agentPath, 'utf-8')\n\n // Parse JSON\n let agentData: any\n try {\n agentData = JSON.parse(agentContent)\n } catch (parseError) {\n this._errors.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_CONFIG_SYNTAX,\n severity: ValidationSeverity.ERROR,\n message: `Invalid JSON syntax in agent.json: ${(parseError as Error).message}`,\n file: 'agent.json',\n })\n }\n\n // Validate agent.json structure\n const validationResult = agentInfoSchema.safeParse(agentData)\n if (!validationResult.success) {\n const errors = validationResult.error.errors\n for (const error of errors) {\n // Check if this is a missing botId or workspaceId error\n const isBotIdError = error.path.includes('botId')\n const isWorkspaceIdError = error.path.includes('workspaceId')\n const isLinkingError = (isBotIdError || isWorkspaceIdError) && error.code === 'invalid_type'\n\n this._errors.push({\n $type: 'ValidationError',\n code: isLinkingError ? ValidationErrorCode.AGENT_NOT_LINKED : ValidationErrorCode.INVALID_CONFIG_SCHEMA,\n severity: ValidationSeverity.ERROR,\n message: `Invalid agent.json: ${error.path.join('.')} - ${error.message}`,\n file: 'agent.json',\n hint:\n error.code === 'invalid_type'\n ? `Expected ${error.expected}, but got ${error.received}`\n : 'Ensure agent.json contains valid botId and workspaceId',\n })\n }\n }\n\n this._agentInfo = validationResult.data\n } catch (error) {\n // agent.json is optional, but may be required for certain operations\n this._agentInfo = undefined\n }\n }\n\n private async loadBuiltInWorkflows(): Promise<void> {\n for (const wf of Object.values(BuiltInWorkflows)) {\n const definition = Primitives.Definitions.getDefinition(wf)\n if (Primitives.Definitions.isWorkflowDefinition(definition)) {\n this._workflows.push({\n definition,\n export: 'default',\n path: '<adk:builtin>',\n })\n }\n }\n }\n\n private async loadBuiltInActions(): Promise<void> {\n for (const action of Object.values(BuiltInActions)) {\n const definition = Primitives.Definitions.getDefinition(action)\n if (Primitives.Definitions.isActionDefinition(definition)) {\n this._actions.push({\n definition,\n export: 'default',\n path: '<adk:builtin>',\n })\n }\n }\n }\n\n private async registerDataSourceWorkflows(knowledgeBase: any, kbPath: string, kbExport: string): Promise<void> {\n try {\n // Each knowledge base has data sources with sync workflows\n if (!knowledgeBase.sources || !Array.isArray(knowledgeBase.sources)) {\n return\n }\n\n for (const source of knowledgeBase.sources) {\n if (!source.syncWorkflow) {\n continue\n }\n\n const workflowDefinition = source.syncWorkflow.getDefinition()\n\n // Check if workflow already exists\n const existing = this._workflows.find((p) => p.definition.name === workflowDefinition.name)\n\n if (existing) {\n // Skip if already registered\n continue\n }\n\n // Register the data source's sync workflow\n this._workflows.push({\n definition: workflowDefinition,\n export: `${kbExport}.sources[${knowledgeBase.sources.indexOf(source)}].syncWorkflow`,\n path: kbPath,\n })\n }\n } catch (error) {\n console.warn(`Failed to register data source workflows for ${kbPath}:`, error)\n }\n }\n\n /**\n * Get list of channels from a channel specification (single, array, or glob)\n * For glob '*', we need to check against all integration channels - but for validation\n * we treat it as a special marker\n */\n private getChannelsList(channelSpec: string | string[]): string[] {\n if (channelSpec === '*') {\n return ['*'] // Glob marker - matches everything\n } else if (Array.isArray(channelSpec)) {\n return channelSpec\n } else {\n return [channelSpec]\n }\n }\n\n private async loadAgentPrimitives(): Promise<void> {\n // Set the ADK command in the runtime environment\n if (this._options.adkCommand) {\n setAdkCommand(this._options.adkCommand)\n }\n\n try {\n const src = path.join(this._path, 'src')\n\n if (!(await fs.stat(src).catch(() => false))) {\n this._errors.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_STRUCTURE,\n severity: ValidationSeverity.ERROR,\n message: `\\`src\\` directory not found at expected path: ${src}`,\n })\n return\n }\n\n const allFiles = await fs.readdir(src, {\n withFileTypes: true,\n recursive: true,\n })\n\n for (const file of allFiles.filter((x) => x.isFile())) {\n const filename = file.name\n const absolutePath = path.join(file.parentPath, file.name)\n const relPath = path.relative(this.path, absolutePath)\n\n if (filename.toLowerCase().endsWith('.d.ts')) {\n // Skip TypeScript declaration files\n continue\n }\n\n if (filename.toLowerCase().endsWith('.test.ts') || filename.toLowerCase().endsWith('.test.js')) {\n // Skip test files\n continue\n }\n\n if (!filename.toLowerCase().endsWith('.js') && !filename.toLowerCase().endsWith('.ts')) {\n continue // Only process .js or .ts files\n }\n\n if (file.isSymbolicLink()) {\n this._errors.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_FILE_TYPE,\n severity: ValidationSeverity.WARNING,\n message: `Skipping symbolic link in conversations directory: ${relPath}`,\n file: relPath,\n })\n continue\n }\n\n try {\n const expandedExports = await expandExports({\n absolutePath,\n relPath,\n filename,\n onWarning: (warning) => this._warnings.push(warning),\n })\n\n for (const key of Object.keys(expandedExports)) {\n let definition\n try {\n definition = Primitives.Definitions.getDefinition(expandedExports[key])\n } catch (error) {\n // This might catch errors from getDefinition itself\n if (Errors.isAdkError(error)) {\n this._warnings.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_PRIMITIVE_DEFINITION,\n severity: ValidationSeverity.WARNING,\n message: error.message,\n file: relPath,\n hint: `Check the primitive definition in ${filename} -> ${key}`,\n })\n continue\n }\n // Re-throw if it's not an ADK error\n throw error\n }\n\n if (Primitives.Definitions.isConversationDefinition(definition)) {\n // Check for overlapping channel definitions\n const overlapping = this._conversations.find((p) => {\n const existingChannels = this.getChannelsList(p.definition.channel)\n const newChannels = this.getChannelsList(definition.channel)\n\n // Check if any channel overlaps\n return existingChannels.some((ch) => newChannels.includes(ch))\n })\n\n if (overlapping) {\n this._warnings.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Overlapping conversation channels found: ${filename} -> ${key} overlaps with ${overlapping.path} -> ${overlapping.export}`,\n file: relPath,\n })\n continue\n }\n this._conversations.push({\n definition,\n export: key,\n path: relPath,\n })\n } else if (Primitives.Definitions.isKnowledgeDefinition(definition)) {\n const existing = this._knowledge.find((p) => p.definition.name === definition.name)\n\n if (existing) {\n this._warnings.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate knowledge definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n })\n continue\n }\n\n this._knowledge.push({\n definition,\n export: key,\n path: relPath,\n })\n\n // Register data source sync workflows\n await this.registerDataSourceWorkflows(expandedExports[key], relPath, key)\n } else if (Primitives.Definitions.isTriggerDefinition(definition)) {\n const existing = this._triggers.find((p) => p.definition.name === definition.name)\n if (existing) {\n this._warnings.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate trigger definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n })\n continue\n }\n this._triggers.push({\n definition,\n export: key,\n path: relPath,\n })\n } else if (Primitives.Definitions.isWorkflowDefinition(definition)) {\n const existing = this._workflows.find((p) => p.definition.name === definition.name)\n if (existing) {\n this._warnings.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate workflow definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n })\n continue\n }\n this._workflows.push({\n definition,\n export: key,\n path: relPath,\n })\n } else if (Primitives.Definitions.isActionDefinition(definition)) {\n const existing = this._actions.find((p) => p.definition.name === definition.name)\n if (existing) {\n this._warnings.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate action definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n })\n continue\n }\n this._actions.push({\n definition,\n export: key,\n path: relPath,\n })\n } else if (Primitives.Definitions.isTableDefinition(definition)) {\n const existing = this._tables.find((p) => p.definition.name === definition.name)\n if (existing) {\n this._warnings.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate table definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n })\n continue\n }\n this._tables.push({\n definition,\n export: key,\n path: relPath,\n })\n }\n }\n } catch (error) {\n // Check if it's an ADK error from expandExports\n if (Errors.isAdkError(error)) {\n // Error is already handled by expandExports, skip this file\n continue\n }\n\n // Log other import errors with context\n this._warnings.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.IMPORT_ERROR,\n severity: ValidationSeverity.WARNING,\n message: `Failed to import primitive from ${relPath}: ${error instanceof Error ? error.message : String(error)}`,\n file: relPath,\n hint: 'Ensure the file exports valid primitives and has no syntax errors',\n })\n }\n }\n } catch (error) {\n throw error\n }\n }\n}\n",
|
|
27
|
+
"/**\n * Utility for ensuring consistent key ordering in JSON files\n */\n\n// Key ordering arrays for different file types\nexport const agentInfoKeyOrder = ['botId', 'workspaceId', 'apiUrl', 'devId'] as const\nexport const dependenciesKeyOrder = ['integrations'] as const\nexport const integrationKeyOrder = ['version', 'enabled', 'configurationType', 'connection', 'config'] as const\n\n/**\n * Orders object keys according to a specified order, with unspecified keys at the end alphabetically\n */\nexport function orderKeys<T extends Record<string, any>>(obj: T, keyOrder?: readonly (keyof T)[]): T {\n const objKeys = Object.keys(obj)\n const orderedKeys: string[] = []\n const remainingKeys: string[] = []\n\n // Add keys in the specified order if they exist in the object\n if (keyOrder) {\n for (const key of keyOrder) {\n const keyStr = String(key)\n if (objKeys.includes(keyStr)) {\n orderedKeys.push(keyStr)\n }\n }\n }\n\n // Add remaining keys alphabetically\n for (const key of objKeys) {\n if (!orderedKeys.includes(key)) {\n remainingKeys.push(key)\n }\n }\n remainingKeys.sort()\n\n // Combine ordered keys with remaining keys\n const finalKeys = [...orderedKeys, ...remainingKeys]\n\n const result = {} as T\n for (const key of finalKeys) {\n result[key as keyof T] = obj[key]\n }\n\n return result\n}\n\n/**\n * Recursively orders keys in nested objects for integrations\n */\nexport function orderIntegrationKeys(integrations: Record<string, any>): Record<string, any> {\n const result: Record<string, any> = {}\n\n for (const [name, config] of Object.entries(integrations)) {\n if (typeof config === 'object' && config !== null && !Array.isArray(config)) {\n result[name] = orderKeys(config, integrationKeyOrder)\n } else {\n result[name] = config\n }\n }\n\n return result\n}\n\n/**\n * Stringifies JSON with consistent key ordering and formatting\n */\nexport function stringifyWithOrder<T extends Record<string, any>>(\n obj: T,\n keyOrder?: readonly (keyof T)[],\n space: number | string = 2\n): string {\n const orderedObj = orderKeys(obj, keyOrder)\n\n // Special handling for dependencies with nested integrations\n if ('integrations' in orderedObj) {\n const integrations = (orderedObj as any).integrations\n if (integrations && typeof integrations === 'object') {\n ;(orderedObj as any).integrations = orderIntegrationKeys(integrations)\n }\n }\n\n return JSON.stringify(orderedObj, null, space)\n}\n",
|
|
28
|
+
"import { BuiltInActions, BuiltInWorkflows, Errors, Primitives, setAdkCommand } from '@botpress/runtime/internal'\n\nimport fs from 'fs/promises'\nimport path from 'path'\nimport { AssetsManager, AssetSyncOptions, AssetSyncPlan, AssetSyncResult } from '../assets/index.js'\nimport { IntegrationManager } from '../integrations/index.js'\nimport { ParsedIntegration } from '../integrations/types.js'\nimport { InterfaceManager } from '../interfaces/index.js'\nimport { ParsedInterface } from '../interfaces/types.js'\n\nimport { agentInfoKeyOrder, stringifyWithOrder } from '../utils/json-ordering.js'\nimport { expandExports } from './expand-exports.js'\nimport { resolveAgent } from './agent-resolver.js'\nimport {\n AgentConfig,\n AgentInfo,\n Dependencies,\n dependenciesSchema,\n Integration,\n ProjectInfo,\n ProjectState,\n ValidationError,\n ValidationErrorCode,\n ValidationResult,\n ValidationSeverity,\n} from './types.js'\nimport { ValidationErrors } from './validation-errors.js'\n\nexport interface AgentProjectOptions {\n noCache?: boolean\n adkCommand?: 'adk-dev' | 'adk-build' | 'adk-deploy'\n}\n\ntype ConversationDefinition = Primitives.Definitions.ConversationDefinition\ntype KnowledgeDefinition = Primitives.Definitions.KnowledgeDefinition\ntype TriggerDefinition = Primitives.Definitions.TriggerDefinition\ntype WorkflowDefinition = Primitives.Definitions.WorkflowDefinition\ntype ActionDefinition = Primitives.Definitions.ActionDefinition\ntype TableDefinition = Primitives.Definitions.TableDefinition\ntype PrimitiveDefinition = Primitives.Definitions.PrimitiveDefinition\n\nexport type PrimitiveReference<T extends PrimitiveDefinition = PrimitiveDefinition> = {\n path: string\n export: string\n definition: T\n}\n\nexport class AgentProject {\n private static _projectCache = new Map<string, AgentProject>()\n\n private _options: AgentProjectOptions\n private _path: string\n private _config?: AgentConfig\n private _dependencies?: Dependencies\n private _agentInfo?: AgentInfo\n private _state: ProjectState = ProjectState.Unloaded\n private _errors: ValidationError[] = []\n private _warnings: ValidationError[] = []\n\n private _lastBuildTime?: Date\n private _integrations?: ParsedIntegration[]\n private _interfaces?: ParsedInterface[]\n private _integrationManager: IntegrationManager\n private _interfaceManager: InterfaceManager\n private _assetsManager: AssetsManager\n private _conversations: PrimitiveReference<ConversationDefinition>[] = []\n private _knowledge: PrimitiveReference<KnowledgeDefinition>[] = []\n private _triggers: PrimitiveReference<TriggerDefinition>[] = []\n private _workflows: PrimitiveReference<WorkflowDefinition>[] = []\n private _actions: PrimitiveReference<ActionDefinition>[] = []\n private _tables: PrimitiveReference<TableDefinition>[] = []\n\n constructor(projectPath: string, options: AgentProjectOptions = {}) {\n this._options = options\n this._path = path.resolve(projectPath)\n this._integrationManager = new IntegrationManager({\n noCache: options.noCache,\n })\n this._interfaceManager = new InterfaceManager({\n noCache: options.noCache,\n })\n this._assetsManager = new AssetsManager({\n projectPath: this._path,\n })\n }\n\n // Static factory methods\n static async load(projectPath: string, options: AgentProjectOptions = {}): Promise<AgentProject> {\n const resolvedPath = path.resolve(projectPath)\n\n // Check cache unless explicitly disabled\n if (!options.noCache) {\n const cached = AgentProject._projectCache.get(resolvedPath)\n if (cached) {\n return cached\n }\n }\n\n // Create and load new project\n const project = new AgentProject(resolvedPath, options)\n await project.reload()\n\n // Cache the project unless caching is disabled\n if (!options.noCache) {\n AgentProject._projectCache.set(resolvedPath, project)\n }\n\n return project\n }\n\n // Static method to clear the cache\n static clearCache(): void {\n AgentProject._projectCache.clear()\n }\n\n // Static method to remove a specific project from cache\n static clearCacheForPath(projectPath: string): void {\n const resolvedPath = path.resolve(projectPath)\n AgentProject._projectCache.delete(resolvedPath)\n }\n\n // Public properties\n get path(): string {\n return this._path\n }\n\n get conversations(): PrimitiveReference<ConversationDefinition>[] {\n return this._conversations\n }\n\n get knowledge(): PrimitiveReference<KnowledgeDefinition>[] {\n return this._knowledge\n }\n\n get triggers(): PrimitiveReference<TriggerDefinition>[] {\n return this._triggers\n }\n\n get workflows(): PrimitiveReference<WorkflowDefinition>[] {\n return this._workflows\n }\n\n get actions(): PrimitiveReference<ActionDefinition>[] {\n return this._actions\n }\n\n get tables(): PrimitiveReference<TableDefinition>[] {\n return this._tables\n }\n\n get config(): AgentConfig | undefined {\n return this._config\n }\n\n get dependencies(): Dependencies | undefined {\n return this._dependencies\n }\n\n get agentInfo(): AgentInfo | undefined {\n return this._agentInfo\n }\n\n get state(): ProjectState {\n return this._state\n }\n\n get info(): ProjectInfo {\n return {\n path: this._path,\n config: this._config!,\n dependencies: this._dependencies || {\n integrations: {},\n },\n agentInfo: this._agentInfo,\n state: this._state,\n lastBuildTime: this._lastBuildTime,\n errors: [...this._errors],\n warnings: [...this._warnings],\n errorCount: this._errors.filter((e) => e.severity === ValidationSeverity.ERROR).length,\n warningCount: this._warnings.filter((e) => e.severity === ValidationSeverity.WARNING).length,\n infoCount: [...this._errors, ...this._warnings].filter((e) => e.severity === ValidationSeverity.INFO).length,\n }\n }\n\n // Core methods\n async reload(): Promise<void> {\n this._state = ProjectState.Loading\n\n try {\n // Clear previous state\n this._conversations = []\n this._knowledge = []\n this._triggers = []\n this._workflows = []\n this._actions = []\n this._tables = []\n this._errors = []\n this._warnings = []\n\n // Validate project structure\n const validation = await this.validate()\n this._errors = validation.errors\n this._warnings = validation.warnings\n\n if (!validation.valid) {\n this._state = ProjectState.Error\n\n throw new Error(`Project validation failed: ${validation.errors[0]?.message}`)\n }\n\n // Load agent info FIRST so we have the workspaceId\n await this.loadAgentInfo()\n\n // Create managers with the correct workspaceId from agent.json\n this._integrationManager = new IntegrationManager({\n noCache: this._options.noCache,\n workspaceId: this._agentInfo?.workspaceId,\n })\n\n this._interfaceManager = new InterfaceManager({\n noCache: this._options.noCache,\n workspaceId: this._agentInfo?.workspaceId,\n })\n\n this._assetsManager = new AssetsManager({\n projectPath: this._path,\n workspaceId: this._agentInfo?.workspaceId,\n botId: this._agentInfo?.botId,\n })\n\n // Load configuration (which will use the managers with correct workspaceId)\n await this.loadConfig()\n\n await this.loadBuiltInWorkflows()\n await this.loadBuiltInActions()\n await this.loadAgentPrimitives()\n\n if (this._errors.length > 0) {\n this._state = ProjectState.Error\n } else {\n this._state = ProjectState.Ready\n }\n } catch (error) {\n this._state = ProjectState.Error\n\n throw error\n }\n }\n\n async validate(): Promise<ValidationResult> {\n const errors: ValidationError[] = []\n const warnings: ValidationError[] = []\n const info: ValidationError[] = []\n\n try {\n // Check if directory exists\n await fs.access(this._path)\n\n // Check for required files\n const requiredFiles = ['agent.config.ts']\n for (const file of requiredFiles) {\n try {\n await fs.access(path.join(this._path, file))\n } catch {\n errors.push(ValidationErrors.requiredFileMissing(file))\n }\n }\n\n // Check for agent.json (optional, but warn if missing for deployed projects)\n try {\n await fs.access(path.join(this._path, 'agent.json'))\n } catch {\n // agent.json is optional, but we add an informational message\n info.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.MISSING_REQUIRED_FIELD,\n severity: ValidationSeverity.INFO,\n message: 'agent.json not found - this file will be required for deployment and remote operations',\n file: 'agent.json',\n hint: 'Create agent.json with botId and workspaceId after deploying your agent',\n })\n }\n\n // Check directory structure\n const expectedDirs = ['actions', 'workflows', 'conversations', 'assets']\n for (const dir of expectedDirs) {\n try {\n const stats = await fs.stat(path.join(this._path, dir))\n if (!stats.isDirectory()) {\n warnings.push(ValidationErrors.invalidStructure(dir, 'directory'))\n }\n } catch {\n // Directory doesn't exist, which is okay - they're optional\n }\n }\n } catch (error) {\n errors.push(ValidationErrors.directoryAccessError(this._path, String(error)))\n }\n\n // Filter by severity\n const errorsBySeverity = {\n errors: errors.filter((e) => e.severity === ValidationSeverity.ERROR),\n warnings: [...warnings, ...errors.filter((e) => e.severity === ValidationSeverity.WARNING)],\n info: [...info, ...errors.filter((e) => e.severity === ValidationSeverity.INFO)],\n }\n\n return {\n valid: errorsBySeverity.errors.length === 0,\n errors: errorsBySeverity.errors,\n warnings: errorsBySeverity.warnings,\n info: errorsBySeverity.info,\n errorCount: errorsBySeverity.errors.length,\n warningCount: errorsBySeverity.warnings.length,\n infoCount: errorsBySeverity.info.length,\n }\n }\n\n get integrations(): ParsedIntegration[] {\n if (!this._integrations) {\n throw new Error('Integrations not loaded')\n }\n\n return this._integrations!\n }\n\n get interfaces(): ParsedInterface[] {\n if (!this._interfaces) {\n throw new Error('Interfaces not loaded')\n }\n return this._interfaces!\n }\n\n // Integration management methods\n async getIntegrations(): Promise<Integration[]> {\n if (!this._dependencies || !this._integrations) {\n throw new Error('Project not loaded')\n }\n\n // Convert ParsedIntegration to Integration format\n return this._integrations.map((parsed) => ({\n name: parsed.alias,\n version: parsed.ref.version,\n workspace: parsed.ref.workspace,\n connection: parsed.connection,\n config: parsed.config,\n installed: false, // This would be determined by checking workspace\n installedVersion: undefined,\n hasChannels: parsed.definition?.channels && Object.keys(parsed.definition.channels).length > 0,\n }))\n }\n\n // Asset management methods\n async createAssetSyncPlan(): Promise<AssetSyncPlan> {\n if (this._state !== ProjectState.Ready) {\n throw new Error('Project must be in Ready state to create asset sync plan')\n }\n\n this.requiresAgentInfo('create asset sync plan')\n return await this._assetsManager.createSyncPlan()\n }\n\n async syncAssets(options?: AssetSyncOptions): Promise<AssetSyncResult> {\n if (this._state !== ProjectState.Ready) {\n throw new Error('Project must be in Ready state to sync assets')\n }\n\n this.requiresAgentInfo('sync assets')\n const plan = await this._assetsManager.createSyncPlan()\n return await this._assetsManager.executeSync(plan, options)\n }\n\n async hasAssetsDirectory(): Promise<boolean> {\n return await this._assetsManager.hasAssetsDirectory()\n }\n\n get assetsManager(): AssetsManager {\n return this._assetsManager\n }\n\n // Agent info management methods\n async createAgentInfo(info: AgentInfo): Promise<void> {\n const agentPath = path.join(this._path, 'agent.json')\n const agentContent = stringifyWithOrder(info, agentInfoKeyOrder)\n await fs.writeFile(agentPath, agentContent)\n this._agentInfo = info\n }\n\n async updateAgentInfo(updates: Partial<AgentInfo>): Promise<void> {\n if (!this._agentInfo) {\n throw new Error('No agent.json found. Use createAgentInfo() first.')\n }\n\n const updatedInfo = { ...this._agentInfo, ...updates }\n const agentPath = path.join(this._path, 'agent.json')\n const agentContent = stringifyWithOrder(updatedInfo, agentInfoKeyOrder)\n await fs.writeFile(agentPath, agentContent)\n this._agentInfo = updatedInfo\n }\n\n requiresAgentInfo(operation: string): void {\n if (!this._agentInfo?.botId) {\n throw new Error(\n `Operation \"${operation}\" requires a bot ID. ` +\n 'Please create agent.json with botId and workspaceId after deploying your agent.'\n )\n }\n }\n\n // Private helper methods\n private async loadConfig(): Promise<void> {\n try {\n // Bust module cache to ensure fresh config on reload\n const configPath = path.join(this._path, 'agent.config.ts')\n const configModule = await import(`${configPath}?t=${Date.now()}`)\n if (!configModule || !configModule.default) {\n this._errors.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_CONFIG_SCHEMA,\n severity: ValidationSeverity.ERROR,\n message: 'agent.config.ts does not export a default configuration object',\n file: 'agent.config.ts',\n })\n return\n }\n\n // Check if the config was created with defineConfig\n const { isAgentConfig } = await import('@botpress/runtime/internal')\n if (!isAgentConfig(configModule.default)) {\n this._errors.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_CONFIG_SCHEMA,\n severity: ValidationSeverity.ERROR,\n message:\n 'agent.config.ts must export the result of defineConfig(). ' +\n \"Example: export default defineConfig({ name: 'my-agent', ... })\",\n file: 'agent.config.ts',\n hint: 'Wrap your config object with defineConfig() from @botpress/runtime',\n })\n return\n }\n\n this._config = configModule.default as AgentConfig\n\n // Extract dependencies from config\n const config = configModule.default as any\n if (config.dependencies) {\n // Validate dependencies against schema\n const validationResult = dependenciesSchema.safeParse(config.dependencies)\n if (!validationResult.success) {\n const errors = validationResult.error.errors\n for (const error of errors) {\n this._errors.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_DEPENDENCIES_SCHEMA,\n severity: ValidationSeverity.ERROR,\n message: `Invalid dependencies in agent.config.ts: ${error.path.join('.')} - ${error.message}`,\n file: 'agent.config.ts',\n hint: error.code === 'invalid_type' ? `Expected ${error.expected}, but got ${error.received}` : undefined,\n })\n }\n this._dependencies = { integrations: {} }\n this._integrations = []\n this._interfaces = []\n return\n }\n\n this._dependencies = validationResult.data\n\n // Validate and load integrations and interfaces\n if (this._dependencies) {\n const [intRes, ifRes] = await Promise.all([\n this._integrationManager.loadIntegrations(this._dependencies),\n this._interfaceManager.loadInterfaces(this._dependencies),\n ])\n this._integrations = intRes.integrations\n this._interfaces = ifRes.interfaces\n\n // Add errors and warnings\n this._errors.push(...intRes.errors, ...ifRes.errors)\n this._warnings.push(...intRes.warnings, ...ifRes.warnings)\n }\n } else {\n // No dependencies in config\n this._errors.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.MISSING_REQUIRED_FIELD,\n severity: ValidationSeverity.ERROR,\n message: 'agent.config.ts must include a dependencies field',\n file: 'agent.config.ts',\n hint: 'Add dependencies: { integrations: {} } to your defineConfig() call',\n })\n this._dependencies = { integrations: {} }\n this._integrations = []\n this._interfaces = []\n }\n } catch (error) {\n this._errors.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_CONFIG_SYNTAX,\n severity: ValidationSeverity.ERROR,\n message: `Failed to load agent.config.ts: ${(error as Error).message}`,\n file: 'agent.config.ts',\n })\n }\n }\n\n private async loadAgentInfo(): Promise<void> {\n try {\n // Use the agent resolver to load agent.json (not required for basic project loading)\n const agentInfo = await resolveAgent(this._path, { required: false })\n this._agentInfo = agentInfo ?? undefined\n } catch (error) {\n // Handle validation errors from resolver\n if (ValidationErrors.isValidationError(error)) {\n this._errors.push(error)\n } else if (error instanceof Error) {\n // Unexpected error - wrap it\n this._errors.push(\n ValidationErrors.warning(`Failed to load agent.json: ${error.message}`, 'agent.json')\n )\n }\n\n this._agentInfo = undefined\n }\n }\n\n private async loadBuiltInWorkflows(): Promise<void> {\n for (const wf of Object.values(BuiltInWorkflows)) {\n const definition = Primitives.Definitions.getDefinition(wf)\n if (Primitives.Definitions.isWorkflowDefinition(definition)) {\n this._workflows.push({\n definition,\n export: 'default',\n path: '<adk:builtin>',\n })\n }\n }\n }\n\n private async loadBuiltInActions(): Promise<void> {\n for (const action of Object.values(BuiltInActions)) {\n const definition = Primitives.Definitions.getDefinition(action)\n if (Primitives.Definitions.isActionDefinition(definition)) {\n this._actions.push({\n definition,\n export: 'default',\n path: '<adk:builtin>',\n })\n }\n }\n }\n\n private async registerDataSourceWorkflows(knowledgeBase: any, kbPath: string, kbExport: string): Promise<void> {\n try {\n // Each knowledge base has data sources with sync workflows\n if (!knowledgeBase.sources || !Array.isArray(knowledgeBase.sources)) {\n return\n }\n\n for (const source of knowledgeBase.sources) {\n if (!source.syncWorkflow) {\n continue\n }\n\n const workflowDefinition = source.syncWorkflow.getDefinition()\n\n // Check if workflow already exists\n const existing = this._workflows.find((p) => p.definition.name === workflowDefinition.name)\n\n if (existing) {\n // Skip if already registered\n continue\n }\n\n // Register the data source's sync workflow\n this._workflows.push({\n definition: workflowDefinition,\n export: `${kbExport}.sources[${knowledgeBase.sources.indexOf(source)}].syncWorkflow`,\n path: kbPath,\n })\n }\n } catch (error) {\n console.warn(`Failed to register data source workflows for ${kbPath}:`, error)\n }\n }\n\n /**\n * Get list of channels from a channel specification (single, array, or glob)\n * For glob '*', we need to check against all integration channels - but for validation\n * we treat it as a special marker\n */\n private getChannelsList(channelSpec: string | string[]): string[] {\n if (channelSpec === '*') {\n return ['*'] // Glob marker - matches everything\n } else if (Array.isArray(channelSpec)) {\n return channelSpec\n } else {\n return [channelSpec]\n }\n }\n\n private async loadAgentPrimitives(): Promise<void> {\n // Set the ADK command in the runtime environment\n if (this._options.adkCommand) {\n setAdkCommand(this._options.adkCommand)\n }\n\n const src = path.join(this._path, 'src')\n\n if (!(await fs.stat(src).catch(() => false))) {\n this._errors.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_STRUCTURE,\n severity: ValidationSeverity.ERROR,\n message: `\\`src\\` directory not found at expected path: ${src}`,\n })\n return\n }\n\n const allFiles = await fs.readdir(src, {\n withFileTypes: true,\n recursive: true,\n })\n\n for (const file of allFiles.filter((x) => x.isFile())) {\n const filename = file.name\n const absolutePath = path.join(file.parentPath, file.name)\n const relPath = path.relative(this.path, absolutePath)\n\n if (filename.toLowerCase().endsWith('.d.ts')) {\n // Skip TypeScript declaration files\n continue\n }\n\n if (filename.toLowerCase().endsWith('.test.ts') || filename.toLowerCase().endsWith('.test.js')) {\n // Skip test files\n continue\n }\n\n if (!filename.toLowerCase().endsWith('.js') && !filename.toLowerCase().endsWith('.ts')) {\n continue // Only process .js or .ts files\n }\n\n if (file.isSymbolicLink()) {\n this._errors.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_FILE_TYPE,\n severity: ValidationSeverity.WARNING,\n message: `Skipping symbolic link in conversations directory: ${relPath}`,\n file: relPath,\n })\n continue\n }\n\n try {\n const expandedExports = await expandExports({\n absolutePath,\n relPath,\n filename,\n onWarning: (warning) => this._warnings.push(warning),\n })\n\n for (const key of Object.keys(expandedExports)) {\n let definition\n try {\n definition = Primitives.Definitions.getDefinition(expandedExports[key])\n } catch (error) {\n // This might catch errors from getDefinition itself\n if (Errors.isAdkError(error)) {\n this._warnings.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_PRIMITIVE_DEFINITION,\n severity: ValidationSeverity.WARNING,\n message: error.message,\n file: relPath,\n hint: `Check the primitive definition in ${filename} -> ${key}`,\n })\n continue\n }\n // Re-throw if it's not an ADK error\n throw error\n }\n\n if (Primitives.Definitions.isConversationDefinition(definition)) {\n // Check for overlapping channel definitions\n const overlapping = this._conversations.find((p) => {\n const existingChannels = this.getChannelsList(p.definition.channel)\n const newChannels = this.getChannelsList(definition.channel)\n\n // Check if any channel overlaps\n return existingChannels.some((ch) => newChannels.includes(ch))\n })\n\n if (overlapping) {\n this._warnings.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Overlapping conversation channels found: ${filename} -> ${key} overlaps with ${overlapping.path} -> ${overlapping.export}`,\n file: relPath,\n })\n continue\n }\n this._conversations.push({\n definition,\n export: key,\n path: relPath,\n })\n } else if (Primitives.Definitions.isKnowledgeDefinition(definition)) {\n const existing = this._knowledge.find((p) => p.definition.name === definition.name)\n\n if (existing) {\n this._warnings.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate knowledge definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n })\n continue\n }\n\n this._knowledge.push({\n definition,\n export: key,\n path: relPath,\n })\n\n // Register data source sync workflows\n await this.registerDataSourceWorkflows(expandedExports[key], relPath, key)\n } else if (Primitives.Definitions.isTriggerDefinition(definition)) {\n const existing = this._triggers.find((p) => p.definition.name === definition.name)\n if (existing) {\n this._warnings.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate trigger definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n })\n continue\n }\n this._triggers.push({\n definition,\n export: key,\n path: relPath,\n })\n } else if (Primitives.Definitions.isWorkflowDefinition(definition)) {\n const existing = this._workflows.find((p) => p.definition.name === definition.name)\n if (existing) {\n this._warnings.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate workflow definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n })\n continue\n }\n this._workflows.push({\n definition,\n export: key,\n path: relPath,\n })\n } else if (Primitives.Definitions.isActionDefinition(definition)) {\n const existing = this._actions.find((p) => p.definition.name === definition.name)\n if (existing) {\n this._warnings.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate action definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n })\n continue\n }\n this._actions.push({\n definition,\n export: key,\n path: relPath,\n })\n } else if (Primitives.Definitions.isTableDefinition(definition)) {\n const existing = this._tables.find((p) => p.definition.name === definition.name)\n if (existing) {\n this._warnings.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate table definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n })\n continue\n }\n this._tables.push({\n definition,\n export: key,\n path: relPath,\n })\n }\n }\n } catch (error) {\n // Check if it's an ADK error from expandExports\n if (Errors.isAdkError(error)) {\n // Error is already handled by expandExports, skip this file\n continue\n }\n\n // Log other import errors with context\n this._warnings.push({\n $type: 'ValidationError',\n code: ValidationErrorCode.IMPORT_ERROR,\n severity: ValidationSeverity.WARNING,\n message: `Failed to import primitive from ${relPath}: ${error instanceof Error ? error.message : String(error)}`,\n file: relPath,\n hint: 'Ensure the file exports valid primitives and has no syntax errors',\n })\n }\n }\n }\n}\n",
|
|
25
29
|
"import fs from 'fs/promises'\nimport path from 'path'\nimport crypto from 'crypto'\nimport { Client } from '@botpress/client'\nimport { auth } from '../auth/index.js'\nimport {\n AssetFile,\n LocalAssetFile,\n AssetSyncPlan,\n AssetSyncResult,\n AssetSyncItem,\n AssetSyncOperation,\n AssetSyncOptions,\n AssetsIndex,\n} from './types.js'\nimport { AssetsCacheManager } from './cache.js'\n\nexport interface AssetManagerOptions {\n projectPath: string\n botId?: string\n workspaceId?: string\n}\n\nexport class AssetsManager {\n private projectPath: string\n private assetsPath: string\n private client?: Client\n private botId?: string\n private workspaceId?: string\n private cacheManager: AssetsCacheManager\n\n constructor(options: AssetManagerOptions) {\n this.projectPath = options.projectPath\n this.assetsPath = path.join(this.projectPath, 'assets')\n this.botId = options.botId\n this.workspaceId = options.workspaceId\n this.cacheManager = new AssetsCacheManager(this.projectPath)\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = await auth.getActiveCredentials()\n\n // Use provided workspaceId or fall back to credentials\n const workspaceId = this.workspaceId || credentials.workspaceId\n\n if (!workspaceId) {\n throw new Error('No workspace ID found. Please login again with \"adk login\" or deploy your agent first.')\n }\n\n if (!this.botId) {\n throw new Error(\n 'Bot ID is required for asset operations. Please deploy your agent first or create agent.json with botId and workspaceId.'\n )\n }\n\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId: workspaceId,\n botId: this.botId,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n }\n return this.client\n }\n\n private assertBotId(operation: string): void {\n if (!this.botId) {\n throw new Error(\n `Operation \"${operation}\" requires a bot ID. ` +\n 'Please deploy your agent first or create agent.json with botId and workspaceId.'\n )\n }\n }\n\n /**\n * Check if assets directory exists\n */\n async hasAssetsDirectory(): Promise<boolean> {\n try {\n const stats = await fs.stat(this.assetsPath)\n return stats.isDirectory()\n } catch {\n return false\n }\n }\n\n /**\n * Get all local asset files with their metadata\n */\n async getLocalAssets(): Promise<LocalAssetFile[]> {\n if (!(await this.hasAssetsDirectory())) {\n return []\n }\n\n const files = await this.scanDirectory(this.assetsPath)\n const assets: LocalAssetFile[] = []\n\n for (const filePath of files) {\n try {\n const stats = await fs.stat(filePath)\n if (stats.isFile()) {\n const relativePath = path.relative(this.assetsPath, filePath)\n const content = await fs.readFile(filePath)\n const hash = this.calculateHash(content)\n const mime = this.getMimeType(filePath)\n\n assets.push({\n relativePath,\n absolutePath: filePath,\n name: path.basename(filePath),\n size: stats.size,\n mime,\n hash,\n stats: {\n mtime: stats.mtime,\n size: stats.size,\n },\n })\n }\n } catch (error) {\n // Skip files that can't be read\n console.warn(`Warning: Could not read asset file ${filePath}:`, error)\n }\n }\n\n return assets\n }\n\n /**\n * Get all remote asset files from Botpress\n */\n async getRemoteAssets(): Promise<AssetFile[]> {\n this.assertBotId('get remote assets')\n\n const client = await this.getClient()\n\n try {\n // List files with ADK asset tags (botId is automatically scoped by client)\n const response = await client.listFiles({\n tags: {\n type: 'asset',\n adk: 'true',\n },\n })\n\n return response.files.map((file) => ({\n path: file.tags?.path || file.key,\n name: path.basename(file.tags?.path || file.key),\n size: file.size || 0,\n mime: file.contentType,\n hash: file.tags?.hash || '',\n createdAt: file.createdAt,\n updatedAt: file.updatedAt,\n fileId: file.id,\n url: file.url || '',\n }))\n } catch (error) {\n throw new Error(`Failed to fetch remote assets: ${error}`)\n }\n }\n\n /**\n * Create a sync plan comparing local and remote assets\n */\n async createSyncPlan(): Promise<AssetSyncPlan> {\n const [localAssets, remoteAssets] = await Promise.all([this.getLocalAssets(), this.getRemoteAssets()])\n\n const items: AssetSyncItem[] = []\n const remoteMap = new Map<string, AssetFile>()\n\n // Map remote assets by path\n for (const remote of remoteAssets) {\n remoteMap.set(remote.path, remote)\n }\n\n // Check local files against remote\n for (const local of localAssets) {\n const remote = remoteMap.get(local.relativePath)\n\n if (!remote) {\n // Local file doesn't exist remotely - needs to be created\n items.push({\n operation: AssetSyncOperation.Create,\n localFile: local,\n reason: 'New local file',\n })\n } else if (local.hash !== remote.hash) {\n // File exists but content is different - needs to be updated\n items.push({\n operation: AssetSyncOperation.Update,\n localFile: local,\n remoteFile: remote,\n reason: 'Content changed',\n })\n } else {\n // Files are identical - no operation needed\n items.push({\n operation: AssetSyncOperation.None,\n localFile: local,\n remoteFile: remote,\n reason: 'Up to date',\n })\n }\n\n // Remove from remote map so we can find orphaned remote files\n remoteMap.delete(local.relativePath)\n }\n\n // Remaining remote files don't have local counterparts - need to be deleted\n for (const [, remote] of remoteMap) {\n items.push({\n operation: AssetSyncOperation.Delete,\n remoteFile: remote,\n reason: 'Local file deleted',\n })\n }\n\n // Calculate totals\n const totalCreate = items.filter((i) => i.operation === AssetSyncOperation.Create).length\n const totalUpdate = items.filter((i) => i.operation === AssetSyncOperation.Update).length\n const totalDelete = items.filter((i) => i.operation === AssetSyncOperation.Delete).length\n const hasChanges = totalCreate > 0 || totalUpdate > 0 || totalDelete > 0\n\n return {\n items,\n totalCreate,\n totalUpdate,\n totalDelete,\n hasChanges,\n }\n }\n\n /**\n * Execute a sync plan\n */\n async executeSync(plan: AssetSyncPlan, options: AssetSyncOptions = {}): Promise<AssetSyncResult> {\n this.assertBotId('sync assets')\n\n if (options.dryRun) {\n return {\n applied: false,\n success: [],\n failed: [],\n summary: {\n created: 0,\n updated: 0,\n deleted: 0,\n failed: 0,\n },\n }\n }\n\n const client = await this.getClient()\n const success: AssetSyncItem[] = []\n const failed: Array<{ item: AssetSyncItem; error: Error }> = []\n\n for (const item of plan.items) {\n if (item.operation === AssetSyncOperation.None) {\n success.push(item)\n continue\n }\n\n try {\n switch (item.operation) {\n case AssetSyncOperation.Create:\n case AssetSyncOperation.Update:\n if (item.localFile) {\n await this.uploadAsset(client, item.localFile)\n success.push(item)\n }\n break\n\n case AssetSyncOperation.Delete:\n if (item.remoteFile?.fileId) {\n await client.deleteFile({ id: item.remoteFile.fileId })\n success.push(item)\n }\n break\n }\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error))\n failed.push({ item, error: err })\n\n if (options.bailOnFailure) {\n break\n }\n }\n }\n\n return {\n applied: true,\n success,\n failed,\n summary: {\n created: success.filter((i) => i.operation === AssetSyncOperation.Create).length,\n updated: success.filter((i) => i.operation === AssetSyncOperation.Update).length,\n deleted: success.filter((i) => i.operation === AssetSyncOperation.Delete).length,\n failed: failed.length,\n },\n }\n }\n\n /**\n * Upload a local asset to Botpress\n */\n private async uploadAsset(client: Client, localFile: LocalAssetFile): Promise<void> {\n const content = await fs.readFile(localFile.absolutePath)\n\n await client.uploadFile({\n key: localFile.relativePath,\n content,\n contentType: localFile.mime,\n tags: {\n type: 'asset',\n adk: 'true',\n path: localFile.relativePath,\n hash: localFile.hash,\n name: localFile.name,\n size: localFile.size.toString(),\n },\n index: true, // Make file searchable\n })\n }\n\n /**\n * Generate TypeScript types for assets\n */\n async generateTypes(): Promise<string> {\n const localAssets = await this.getLocalAssets()\n\n // Generate union type of all asset paths\n const pathUnion = localAssets.map((asset) => `\"${asset.relativePath}\"`).join(' | ')\n\n const paths = localAssets.map((asset) => ` \"${asset.relativePath}\": \"${asset.relativePath}\";`).join('\\n')\n\n return `// Auto-generated asset types\nimport { Asset } from '@botpress/runtime';\n\nexport type AssetPaths = ${pathUnion || 'never'};\n\nexport interface AssetPathMap {\n${paths}\n}\n\n// Runtime asset access\ndeclare global {\n const assets: {\n get<T extends AssetPaths>(path: T): Asset;\n list(): Asset[];\n getSyncStatus(): { \n synced: boolean; \n neverSynced: string[]; \n stale: string[];\n upToDate: string[];\n };\n };\n}\n`\n }\n\n /**\n * Create an assets index file\n */\n async createAssetsIndex(): Promise<AssetsIndex> {\n const remoteAssets = await this.getRemoteAssets()\n\n return {\n files: remoteAssets,\n generatedAt: new Date().toISOString(),\n totalFiles: remoteAssets.length,\n totalSize: remoteAssets.reduce((sum, asset) => sum + asset.size, 0),\n }\n }\n\n /**\n * Get enriched local assets with remote metadata when available\n * Uses cache to avoid unnecessary API calls\n */\n async getEnrichedLocalAssets(): Promise<AssetFile[]> {\n const localAssets = await this.getLocalAssets()\n const enrichedAssets: AssetFile[] = []\n\n // Try to get client if credentials are available\n let remoteAssetsMap: Map<string, AssetFile> = new Map()\n try {\n if (this.botId) {\n const remoteAssets = await this.getRemoteAssets()\n remoteAssetsMap = new Map(remoteAssets.map((asset) => [asset.path, asset]))\n }\n } catch (error) {\n // If we can't fetch remote assets, we'll use cache or placeholders\n console.debug('Could not fetch remote assets:', error)\n }\n\n for (const localAsset of localAssets) {\n const cachedEntry = await this.cacheManager.getEntry(localAsset.relativePath)\n const remoteAsset = remoteAssetsMap.get(localAsset.relativePath)\n\n if (cachedEntry) {\n // We have cached metadata - use it and update the cache with current hashes\n enrichedAssets.push(cachedEntry.metadata)\n await this.cacheManager.setEntry(\n localAsset.relativePath,\n localAsset.hash,\n cachedEntry.remoteHash,\n cachedEntry.metadata\n )\n } else if (remoteAsset) {\n // No cache but we have remote - use remote and cache it\n enrichedAssets.push(remoteAsset)\n await this.cacheManager.setEntry(localAsset.relativePath, localAsset.hash, remoteAsset.hash, remoteAsset)\n } else {\n // No cache and no remote - create placeholder\n const placeholderAsset: AssetFile = {\n url: `__PLACEHOLDER_URL_${localAsset.relativePath}__`,\n path: localAsset.relativePath,\n size: localAsset.size,\n name: localAsset.name,\n mime: localAsset.mime,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n fileId: `__PLACEHOLDER_ID_${localAsset.relativePath}__`,\n hash: localAsset.hash,\n }\n enrichedAssets.push(placeholderAsset)\n }\n }\n\n return enrichedAssets\n }\n\n // Private utility methods\n\n private async scanDirectory(dir: string, files: string[] = []): Promise<string[]> {\n const items = await fs.readdir(dir)\n\n for (const item of items) {\n const fullPath = path.join(dir, item)\n const stats = await fs.stat(fullPath)\n\n if (stats.isDirectory()) {\n await this.scanDirectory(fullPath, files)\n } else {\n files.push(fullPath)\n }\n }\n\n return files\n }\n\n private calculateHash(content: Buffer): string {\n return crypto.createHash('sha256').update(content).digest('hex')\n }\n\n private getMimeType(filePath: string): string {\n const ext = path.extname(filePath).toLowerCase()\n\n const mimeTypes: Record<string, string> = {\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.gif': 'image/gif',\n '.svg': 'image/svg+xml',\n '.webp': 'image/webp',\n '.pdf': 'application/pdf',\n '.txt': 'text/plain',\n '.md': 'text/markdown',\n '.html': 'text/html',\n '.css': 'text/css',\n '.js': 'application/javascript',\n '.json': 'application/json',\n '.xml': 'application/xml',\n '.zip': 'application/zip',\n '.mp4': 'video/mp4',\n '.webm': 'video/webm',\n '.mp3': 'audio/mpeg',\n '.wav': 'audio/wav',\n '.ogg': 'audio/ogg',\n }\n\n return mimeTypes[ext] || 'application/octet-stream'\n }\n}\n",
|
|
26
30
|
"import fs from 'fs/promises'\nimport path from 'path'\nimport { AssetFile } from './types.js'\nimport { defaultAdkFolder } from '../const.js'\n\nexport interface AssetsCacheEntry {\n path: string\n localHash: string\n remoteHash: string\n metadata: AssetFile\n lastUpdated: string\n}\n\nexport interface AssetsCache {\n version: string\n entries: Record<string, AssetsCacheEntry>\n}\n\nexport class AssetsCacheManager {\n private cachePath: string\n private cache: AssetsCache | null = null\n\n constructor(private projectPath: string) {\n this.cachePath = path.join(projectPath, defaultAdkFolder, 'assets-cache.json')\n }\n\n async load(): Promise<AssetsCache> {\n if (this.cache) {\n return this.cache\n }\n\n try {\n const content = await fs.readFile(this.cachePath, 'utf-8')\n this.cache = JSON.parse(content)\n return this.cache!\n } catch (error) {\n // Cache doesn't exist or is invalid, create new one\n this.cache = {\n version: '1.0',\n entries: {},\n }\n return this.cache\n }\n }\n\n async save(): Promise<void> {\n if (!this.cache) {\n return\n }\n\n const cacheDir = path.dirname(this.cachePath)\n await fs.mkdir(cacheDir, { recursive: true })\n await fs.writeFile(this.cachePath, JSON.stringify(this.cache, null, 2), 'utf-8')\n }\n\n async getEntry(assetPath: string): Promise<AssetsCacheEntry | null> {\n const cache = await this.load()\n return cache.entries[assetPath] || null\n }\n\n async setEntry(assetPath: string, localHash: string, remoteHash: string, metadata: AssetFile): Promise<void> {\n const cache = await this.load()\n cache.entries[assetPath] = {\n path: assetPath,\n localHash,\n remoteHash,\n metadata,\n lastUpdated: new Date().toISOString(),\n }\n await this.save()\n }\n\n async isStale(assetPath: string): Promise<boolean> {\n const entry = await this.getEntry(assetPath)\n if (!entry) return false\n return entry.localHash !== entry.remoteHash\n }\n\n async removeEntry(assetPath: string): Promise<void> {\n const cache = await this.load()\n delete cache.entries[assetPath]\n await this.save()\n }\n\n async clear(): Promise<void> {\n this.cache = {\n version: '1.0',\n entries: {},\n }\n await this.save()\n }\n\n async getAllEntries(): Promise<AssetsCacheEntry[]> {\n const cache = await this.load()\n return Object.values(cache.entries)\n }\n}\n",
|
|
27
31
|
"export const defaultAdkFolder = '.adk'\n//\n",
|
|
28
32
|
"import path from 'path'\nimport { createFile } from '../utils/fs.js'\nimport { defaultAdkFolder } from '../const.js'\nimport { AssetFile } from './types.js'\n\n/**\n * Updates the assets runtime file with actual deployed metadata\n * This is called after assets are uploaded to Botpress\n */\nexport async function updateAssetsRuntime(projectPath: string, deployedAssets: AssetFile[]): Promise<void> {\n // Create a map of deployed assets by path\n const assetsMap: Record<string, AssetFile> = {}\n for (const asset of deployedAssets) {\n assetsMap[asset.path] = asset\n }\n\n // Generate the updated runtime code with real metadata\n const runtimeCode = `\n// Auto-generated assets metadata\nimport { Asset, initAssets } from '@botpress/runtime/runtime';\n\n// Static asset metadata (populated at deploy time)\nexport const assetsMetadata: Record<string, Asset> = ${JSON.stringify(assetsMap, null, 2)};\n\n// Initialize the assets runtime with metadata\n// The global object should be passed by the agent initialization code\nexport function initializeAssets(globalObj: any = globalThis) {\n initAssets(globalObj, assetsMetadata);\n}\n\n// Auto-initialize if running in a supported environment\nif (typeof globalThis !== 'undefined') {\n initializeAssets(globalThis);\n} else if (typeof global !== 'undefined') {\n initializeAssets(global);\n}\n`\n\n const runtimePath = path.join(projectPath, defaultAdkFolder, 'assets-runtime.ts')\n await createFile(runtimePath, runtimeCode)\n}\n",
|
|
29
|
-
"import { Client } from '@botpress/client'\nimport { auth, Credentials } from '../auth/index.js'\nimport { Dependencies, ValidationError, ValidationErrorCode, ValidationSeverity } from '../agent-project/types.js'\nimport { IntegrationDefinition, ParsedIntegration, IntegrationValidationResult, IntegrationRef } from './types.js'\nimport { EnhancedIntegrationCache } from './enhanced-cache.js'\nimport { IntegrationParser } from '../agent-project/dependencies-parser.js'\nimport { ValidationErrors } from '../agent-project/validation-errors.js'\n\nexport interface IntegrationManagerOptions {\n noCache?: boolean\n workspaceId?: string\n credentials?: Credentials\n}\n\nexport class IntegrationManager {\n private cache: EnhancedIntegrationCache\n private options: IntegrationManagerOptions\n private client?: Client\n\n constructor(options: IntegrationManagerOptions = {}) {\n this.options = options\n this.cache = new EnhancedIntegrationCache(options.noCache || false)\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = this.options.credentials || (await auth.getActiveCredentials())\n\n // Ensure we have all required credentials\n if (!this.options.workspaceId && !credentials.workspaceId) {\n throw new Error('No workspace ID found in current profile. Please login again with \"adk login\"')\n }\n\n const workspaceId = this.options.workspaceId || credentials.workspaceId\n\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n }\n return this.client\n }\n\n /**\n * Load and validate all integrations from dependencies\n */\n async loadIntegrations(dependencies: Dependencies): Promise<{\n integrations: ParsedIntegration[]\n errors: ValidationError[]\n warnings: ValidationError[]\n }> {\n const errors: ValidationError[] = []\n const warnings: ValidationError[] = []\n\n // Parse integrations from dependencies\n const parseResult = IntegrationParser.parseIntegrations(dependencies)\n const integrations = parseResult.integrations\n errors.push(...parseResult.errors)\n\n // Check for duplicates\n const duplicateWarnings = IntegrationParser.checkDuplicates(integrations)\n warnings.push(...duplicateWarnings)\n\n // Fetch integration definitions in parallel\n const fetchPromises = integrations.map(async (integration) => {\n try {\n const definition = await this.fetchIntegration(integration.ref)\n integration.definition = definition\n\n // Validate the integration\n const validation = this.validateIntegration(integration)\n integration.validationResult = validation\n\n if (!validation.valid) {\n validation.errors.forEach(() => {\n errors.push(ValidationErrors.unknownIntegration(integration.alias, integration.ref.fullName))\n })\n }\n\n if (validation.warnings.length > 0) {\n validation.warnings.forEach((warn) => {\n warnings.push(ValidationErrors.warning(warn, 'agent.config.ts'))\n })\n }\n } catch (error) {\n // Use the specific error message if available\n if (error instanceof Error && error.message.includes('version')) {\n // Version-specific error\n errors.push(ValidationErrors.integrationVersionError(integration.alias, error.message))\n } else {\n // Integration not found - use detailed error message if available\n const errorMessage = error instanceof Error ? error.message : undefined\n errors.push(ValidationErrors.unknownIntegration(integration.alias, integration.ref.fullName, errorMessage))\n }\n }\n })\n\n await Promise.all(fetchPromises)\n\n // Check if any integration has channels\n const hasChannels = integrations.some(\n (i) => i.definition?.channels && Object.keys(i.definition.channels).length > 0\n )\n\n if (!hasChannels && integrations.length > 0) {\n warnings.push(\n ValidationErrors.warning(\n 'No integrations with channels found. Your agent may not be able to receive messages.',\n 'agent.config.ts',\n 'Add an integration with channels (e.g., slack, webchat) to enable conversations'\n )\n )\n }\n\n return { integrations, errors, warnings }\n }\n\n /**\n * Fetch integration definition from API or cache\n */\n public async fetchIntegration(ref: IntegrationRef): Promise<IntegrationDefinition> {\n // Level 1: Check version resolution cache (name@version → intver + updatedAt)\n const cachedResolution = await this.cache.getResolution(ref.name, ref.version, ref.workspace)\n\n if (cachedResolution) {\n // Level 2: Check definition cache (intver + updatedAt → definition)\n const cachedDefinition = await this.cache.getDefinition(\n cachedResolution.integrationId,\n cachedResolution.updatedAt\n )\n\n if (cachedDefinition) {\n return cachedDefinition\n }\n }\n\n // No cache hit, fetch from API\n const client = await this.getClient()\n\n // Try to find the integration (private first, then public)\n const integration = await this._findPrivateOrPublicIntegration(client, ref)\n if (!integration) {\n throw await this._buildIntegrationNotFoundError(client, ref)\n }\n\n // Cache Level 1: Version resolution (name@version → intver + updatedAt)\n await this.cache.setResolution(ref.name, ref.version, ref.workspace, integration.id, integration.updatedAt)\n\n // Cache Level 2: Definition (intver + updatedAt → definition)\n const definition: IntegrationDefinition = integration\n await this.cache.setDefinition(integration.id, integration.updatedAt, definition)\n\n return definition\n }\n\n /**\n * Find integration in private workspace first, then public hub\n * Similar to ApiClient.findPublicOrPrivateIntegration from @botpress/cli\n */\n private async _findPrivateOrPublicIntegration(\n client: Client,\n ref: IntegrationRef\n ): Promise<IntegrationDefinition | undefined> {\n // Try private/workspace integration first\n const privateIntegration = await this._findPrivateIntegration(client, ref)\n if (privateIntegration) {\n return privateIntegration\n }\n\n // Try public integration\n const publicIntegration = await this._findPublicIntegration(client, ref)\n if (publicIntegration) {\n return publicIntegration\n }\n\n return undefined\n }\n\n /**\n * Find private/workspace integration\n */\n private async _findPrivateIntegration(\n client: Client,\n ref: IntegrationRef\n ): Promise<IntegrationDefinition | undefined> {\n try {\n // For workspace integrations, always use \"latest\" as they don't support version pinning\n const version = ref.workspace && ref.version !== 'latest' ? 'latest' : ref.version\n\n const response = await client.getIntegrationByName({\n name: ref.fullName,\n version,\n })\n return response.integration\n } catch (error) {\n // Return undefined on ResourceNotFound, throw on other errors\n if (this._isResourceNotFoundError(error)) {\n return undefined\n }\n throw error\n }\n }\n\n /**\n * Find public integration\n */\n private async _findPublicIntegration(\n client: Client,\n ref: IntegrationRef\n ): Promise<IntegrationDefinition | undefined> {\n try {\n const response = await client.getPublicIntegration({\n name: ref.fullName,\n version: ref.version,\n })\n return response.integration\n } catch (error) {\n // Return undefined on ResourceNotFound, throw on other errors\n if (this._isResourceNotFoundError(error)) {\n return undefined\n }\n throw error\n }\n }\n\n /**\n * Check if error is a ResourceNotFound error\n */\n private _isResourceNotFoundError(error: unknown): boolean {\n if (error && typeof error === 'object' && 'type' in error) {\n return (error as any).type === 'ResourceNotFound'\n }\n return false\n }\n\n /**\n * Build a helpful error message when integration is not found\n */\n private async _buildIntegrationNotFoundError(client: Client, ref: IntegrationRef): Promise<Error> {\n // If no workspace prefix, simple error\n if (!ref.workspace) {\n return new Error(`Integration \"${ref.name}\" not found in the official Botpress hub`)\n }\n\n // Get current workspace info to compare handles\n let currentWorkspaceHandle: string | undefined\n try {\n const credentials = this.options.credentials || (await auth.getActiveCredentials())\n const workspaceId = this.options.workspaceId || credentials.workspaceId\n\n if (workspaceId) {\n // List workspaces to find current workspace and get its handle\n const currentWorkspace = await client.getWorkspace({ id: workspaceId })\n currentWorkspaceHandle = currentWorkspace?.handle\n }\n } catch {\n // If we can't get workspace info, use generic error\n return new Error(`Integration \"${ref.name}\" not found in workspace \"${ref.workspace}\"`)\n }\n\n // Case 1: Trying to install from the same workspace\n if (currentWorkspaceHandle === ref.workspace) {\n return new Error(\n `Integration \"${ref.name}\" not found in workspace \"${ref.workspace}\". ` +\n `Are you sure you published the integration? ` +\n `Run 'adk deploy' to publish it to your workspace.`\n )\n }\n\n // Case 2: Trying to install from a different workspace (likely private)\n return new Error(\n `Integration \"${ref.name}\" not found in workspace \"${ref.workspace}\". ` +\n `This integration may be private. Private integrations can only be installed in the same workspace. ` +\n `If you want to share this integration with other workspaces, deploy it with --visibility=\"unlisted\" or --visibility=\"public\".`\n )\n }\n\n /**\n * Validate an integration definition\n */\n private validateIntegration(integration: ParsedIntegration): IntegrationValidationResult {\n const errors: string[] = []\n const warnings: string[] = []\n\n if (!integration.definition) {\n errors.push(`Integration definition not found for ${integration.alias}`)\n return { valid: false, errors, warnings }\n }\n\n // Check if integration has channels\n const hasChannels = integration.definition.channels && Object.keys(integration.definition.channels).length > 0\n\n // Check if integration requires configuration\n if (!integration.connection) {\n let requiresConfig = false\n\n // Check modern configurations (plural)\n if (integration.definition.configurations) {\n requiresConfig = Object.values(integration.definition.configurations).some(\n (config) => config.identifier?.required === true\n )\n }\n\n // Check legacy configuration (singular) - if it has required fields in schema\n if (!requiresConfig && integration.definition.configuration) {\n const config = integration.definition.configuration\n const schema = config.schema\n requiresConfig = schema?.required && schema.required.length > 0\n }\n\n if (requiresConfig) {\n warnings.push(\n `Integration '${integration.alias}' requires configuration. Add a connection in agent.config.ts dependencies`\n )\n }\n }\n\n return {\n valid: errors.length === 0,\n errors,\n warnings,\n missingChannels: !hasChannels,\n }\n }\n\n /**\n * Get cache statistics\n */\n async getCacheStats(): Promise<{ count: number; sizeBytes: number }> {\n const stats = await this.cache.getStats()\n // Combine resolution and definition cache stats\n return {\n count: stats.resolutions.count + stats.definitions.count,\n sizeBytes: stats.resolutions.sizeBytes + stats.definitions.sizeBytes,\n }\n }\n\n /**\n * Clear integration cache\n */\n async clearCache(): Promise<void> {\n await this.cache.clear()\n }\n}\n",
|
|
33
|
+
"import { Client } from '@botpress/client'\nimport { auth, Credentials } from '../auth/index.js'\nimport { Dependencies, ValidationError } from '../agent-project/types.js'\nimport { IntegrationDefinition, ParsedIntegration, IntegrationValidationResult, IntegrationRef } from './types.js'\nimport { EnhancedIntegrationCache } from './enhanced-cache.js'\nimport { IntegrationParser } from '../agent-project/dependencies-parser.js'\nimport { ValidationErrors } from '../agent-project/validation-errors.js'\n\nexport interface IntegrationManagerOptions {\n noCache?: boolean\n workspaceId?: string\n credentials?: Credentials\n}\n\nexport class IntegrationManager {\n private cache: EnhancedIntegrationCache\n private options: IntegrationManagerOptions\n private client?: Client\n\n constructor(options: IntegrationManagerOptions = {}) {\n this.options = options\n this.cache = new EnhancedIntegrationCache(options.noCache || false)\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = this.options.credentials || (await auth.getActiveCredentials())\n\n // Ensure we have all required credentials\n if (!this.options.workspaceId && !credentials.workspaceId) {\n throw new Error('No workspace ID found in current profile. Please login again with \"adk login\"')\n }\n\n const workspaceId = this.options.workspaceId || credentials.workspaceId\n\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n }\n return this.client\n }\n\n /**\n * Load and validate all integrations from dependencies\n */\n async loadIntegrations(dependencies: Dependencies): Promise<{\n integrations: ParsedIntegration[]\n errors: ValidationError[]\n warnings: ValidationError[]\n }> {\n const errors: ValidationError[] = []\n const warnings: ValidationError[] = []\n\n // Parse integrations from dependencies\n const parseResult = IntegrationParser.parseIntegrations(dependencies)\n const integrations = parseResult.integrations\n errors.push(...parseResult.errors)\n\n // Check for duplicates\n const duplicateWarnings = IntegrationParser.checkDuplicates(integrations)\n warnings.push(...duplicateWarnings)\n\n // Fetch integration definitions in parallel\n const fetchPromises = integrations.map(async (integration) => {\n try {\n const definition = await this.fetchIntegration(integration.ref)\n integration.definition = definition\n\n // Validate the integration\n const validation = this.validateIntegration(integration)\n integration.validationResult = validation\n\n if (!validation.valid) {\n validation.errors.forEach(() => {\n errors.push(ValidationErrors.unknownIntegration(integration.alias, integration.ref.fullName))\n })\n }\n\n if (validation.warnings.length > 0) {\n validation.warnings.forEach((warn) => {\n warnings.push(ValidationErrors.warning(warn, 'agent.config.ts'))\n })\n }\n } catch (error) {\n // Use the specific error message if available\n if (error instanceof Error && error.message.includes('version')) {\n // Version-specific error\n errors.push(ValidationErrors.integrationVersionError(integration.alias, error.message))\n } else {\n // Integration not found - use detailed error message if available\n const errorMessage = error instanceof Error ? error.message : undefined\n errors.push(ValidationErrors.unknownIntegration(integration.alias, integration.ref.fullName, errorMessage))\n }\n }\n })\n\n await Promise.all(fetchPromises)\n\n // Check if any integration has channels\n const hasChannels = integrations.some(\n (i) => i.definition?.channels && Object.keys(i.definition.channels).length > 0\n )\n\n if (!hasChannels && integrations.length > 0) {\n warnings.push(\n ValidationErrors.warning(\n 'No integrations with channels found. Your agent may not be able to receive messages.',\n 'agent.config.ts',\n 'Add an integration with channels (e.g., slack, webchat) to enable conversations'\n )\n )\n }\n\n return { integrations, errors, warnings }\n }\n\n /**\n * Fetch integration definition from API or cache\n */\n public async fetchIntegration(ref: IntegrationRef): Promise<IntegrationDefinition> {\n // Level 1: Check version resolution cache (name@version → intver + updatedAt)\n const cachedResolution = await this.cache.getResolution(ref.name, ref.version, ref.workspace)\n\n if (cachedResolution) {\n // Level 2: Check definition cache (intver + updatedAt → definition)\n const cachedDefinition = await this.cache.getDefinition(\n cachedResolution.integrationId,\n cachedResolution.updatedAt\n )\n\n if (cachedDefinition) {\n return cachedDefinition\n }\n }\n\n // No cache hit, fetch from API\n const client = await this.getClient()\n\n // Try to find the integration (private first, then public)\n const integration = await this._findPrivateOrPublicIntegration(client, ref)\n if (!integration) {\n throw await this._buildIntegrationNotFoundError(client, ref)\n }\n\n // Cache Level 1: Version resolution (name@version → intver + updatedAt)\n await this.cache.setResolution(ref.name, ref.version, ref.workspace, integration.id, integration.updatedAt)\n\n // Cache Level 2: Definition (intver + updatedAt → definition)\n const definition: IntegrationDefinition = integration\n await this.cache.setDefinition(integration.id, integration.updatedAt, definition)\n\n return definition\n }\n\n /**\n * Find integration in private workspace first, then public hub\n * Similar to ApiClient.findPublicOrPrivateIntegration from @botpress/cli\n */\n private async _findPrivateOrPublicIntegration(\n client: Client,\n ref: IntegrationRef\n ): Promise<IntegrationDefinition | undefined> {\n // Try private/workspace integration first\n const privateIntegration = await this._findPrivateIntegration(client, ref)\n if (privateIntegration) {\n return privateIntegration\n }\n\n // Try public integration\n const publicIntegration = await this._findPublicIntegration(client, ref)\n if (publicIntegration) {\n return publicIntegration\n }\n\n return undefined\n }\n\n /**\n * Find private/workspace integration\n */\n private async _findPrivateIntegration(\n client: Client,\n ref: IntegrationRef\n ): Promise<IntegrationDefinition | undefined> {\n try {\n // For workspace integrations, always use \"latest\" as they don't support version pinning\n const version = ref.workspace && ref.version !== 'latest' ? 'latest' : ref.version\n\n const response = await client.getIntegrationByName({\n name: ref.fullName,\n version,\n })\n return response.integration\n } catch (error) {\n // Return undefined on ResourceNotFound, throw on other errors\n if (this._isResourceNotFoundError(error)) {\n return undefined\n }\n throw error\n }\n }\n\n /**\n * Find public integration\n */\n private async _findPublicIntegration(\n client: Client,\n ref: IntegrationRef\n ): Promise<IntegrationDefinition | undefined> {\n try {\n const response = await client.getPublicIntegration({\n name: ref.fullName,\n version: ref.version,\n })\n return response.integration\n } catch (error) {\n // Return undefined on ResourceNotFound, throw on other errors\n if (this._isResourceNotFoundError(error)) {\n return undefined\n }\n throw error\n }\n }\n\n /**\n * Check if error is a ResourceNotFound error\n */\n private _isResourceNotFoundError(error: unknown): boolean {\n if (error && typeof error === 'object' && 'type' in error) {\n return (error as any).type === 'ResourceNotFound'\n }\n return false\n }\n\n /**\n * Build a helpful error message when integration is not found\n */\n private async _buildIntegrationNotFoundError(client: Client, ref: IntegrationRef): Promise<Error> {\n // If no workspace prefix, simple error\n if (!ref.workspace) {\n return new Error(`Integration \"${ref.name}\" not found in the official Botpress hub`)\n }\n\n // Get current workspace info to compare handles\n let currentWorkspaceHandle: string | undefined\n let workspaceId: string | undefined\n try {\n const credentials = this.options.credentials || (await auth.getActiveCredentials())\n workspaceId = this.options.workspaceId || credentials.workspaceId\n\n if (workspaceId) {\n // List workspaces to find current workspace and get its handle\n const currentWorkspace = await client.getWorkspace({ id: workspaceId })\n currentWorkspaceHandle = currentWorkspace?.handle\n }\n } catch {\n // If we can't get workspace info, use generic error\n return new Error(`Integration \"${ref.name}\" not found in workspace \"${ref.workspace}\"`)\n }\n\n // Case 1: Trying to install from the same workspace\n if (currentWorkspaceHandle === ref.workspace) {\n return new Error(\n `Integration \"${ref.name}\" not found in workspace \"${ref.workspace}\" (workspaceId: ${workspaceId}). ` +\n `Are you sure you published the integration? ` +\n `Run 'adk deploy' to publish it to your workspace.`\n )\n }\n\n // Case 2: Trying to install from a different workspace (likely private)\n return new Error(\n `Integration \"${ref.name}\" not found in workspace \"${ref.workspace}\" (current workspaceId: ${workspaceId}). ` +\n `This integration may be private. Private integrations can only be installed in the same workspace. ` +\n `If you want to share this integration with other workspaces, deploy it with --visibility=\"unlisted\" or --visibility=\"public\".`\n )\n }\n\n /**\n * Validate an integration definition\n */\n private validateIntegration(integration: ParsedIntegration): IntegrationValidationResult {\n const errors: string[] = []\n const warnings: string[] = []\n\n if (!integration.definition) {\n errors.push(`Integration definition not found for ${integration.alias}`)\n return { valid: false, errors, warnings }\n }\n\n // Check if integration has channels\n const hasChannels = integration.definition.channels && Object.keys(integration.definition.channels).length > 0\n\n // Check if integration requires configuration\n if (!integration.connection) {\n let requiresConfig = false\n\n // Check modern configurations (plural)\n if (integration.definition.configurations) {\n requiresConfig = Object.values(integration.definition.configurations).some(\n (config) => config.identifier?.required === true\n )\n }\n\n // Check legacy configuration (singular) - if it has required fields in schema\n if (!requiresConfig && integration.definition.configuration) {\n const config = integration.definition.configuration\n const schema = config.schema\n requiresConfig = schema?.required && schema.required.length > 0\n }\n\n if (requiresConfig) {\n warnings.push(\n `Integration '${integration.alias}' requires configuration. Add a connection in agent.config.ts dependencies`\n )\n }\n }\n\n return {\n valid: errors.length === 0,\n errors,\n warnings,\n missingChannels: !hasChannels,\n }\n }\n\n /**\n * Get cache statistics\n */\n async getCacheStats(): Promise<{ count: number; sizeBytes: number }> {\n const stats = await this.cache.getStats()\n // Combine resolution and definition cache stats\n return {\n count: stats.resolutions.count + stats.definitions.count,\n sizeBytes: stats.resolutions.sizeBytes + stats.definitions.sizeBytes,\n }\n }\n\n /**\n * Clear integration cache\n */\n async clearCache(): Promise<void> {\n await this.cache.clear()\n }\n}\n",
|
|
30
34
|
"import fs from 'fs/promises'\nimport path from 'path'\nimport os from 'os'\nimport { IntegrationDefinition } from './types.js'\n\ninterface VersionResolution {\n integrationId: string\n updatedAt: string\n cachedAt: string\n}\n\ninterface CachedDefinition {\n definition: IntegrationDefinition\n cachedAt: string\n}\n\nexport class EnhancedIntegrationCache {\n private cacheDir: string\n private resolutionsDir: string\n private definitionsDir: string\n private noCache: boolean\n\n constructor(noCache: boolean = false) {\n this.noCache = noCache\n // Global cache in ~/.adk/cache\n this.cacheDir = path.join(os.homedir(), '.adk', 'cache', 'integrations')\n this.resolutionsDir = path.join(this.cacheDir, 'resolutions')\n this.definitionsDir = path.join(this.cacheDir, 'definitions')\n }\n\n private async ensureCacheDirs(): Promise<void> {\n await fs.mkdir(this.resolutionsDir, { recursive: true })\n await fs.mkdir(this.definitionsDir, { recursive: true })\n }\n\n /**\n * Get version resolution from cache (name@version → intver + updatedAt)\n * Returns null if cache miss or expired (5 minutes)\n */\n async getResolution(name: string, version: string, workspace?: string): Promise<VersionResolution | null> {\n if (this.noCache) {\n return null\n }\n\n try {\n const key = this.getResolutionKey(name, version, workspace)\n const cachePath = path.join(this.resolutionsDir, `${key}.json`)\n\n const data = await fs.readFile(cachePath, 'utf-8')\n const resolution: VersionResolution = JSON.parse(data)\n\n // Check if cache is expired (5 minutes)\n const cachedAt = new Date(resolution.cachedAt)\n const now = new Date()\n const ageMinutes = (now.getTime() - cachedAt.getTime()) / (1000 * 60)\n\n if (ageMinutes > 5) {\n // Cache expired\n return null\n }\n\n return resolution\n } catch {\n // Cache miss or error\n return null\n }\n }\n\n /**\n * Cache version resolution (name@version → intver + updatedAt)\n */\n async setResolution(\n name: string,\n version: string,\n workspace: string | undefined,\n integrationId: string,\n updatedAt: string\n ): Promise<void> {\n await this.ensureCacheDirs()\n\n const key = this.getResolutionKey(name, version, workspace)\n const cachePath = path.join(this.resolutionsDir, `${key}.json`)\n\n const resolution: VersionResolution = {\n integrationId,\n updatedAt,\n cachedAt: new Date().toISOString(),\n }\n\n await fs.writeFile(cachePath, JSON.stringify(resolution, null, 2))\n }\n\n /**\n * Get integration definition from cache (intver + updatedAt → definition)\n * Never expires for same intver + updatedAt (immutable)\n */\n async getDefinition(integrationId: string, updatedAt: string): Promise<IntegrationDefinition | null> {\n if (this.noCache) {\n return null\n }\n\n try {\n const key = this.getDefinitionKey(integrationId, updatedAt)\n const cachePath = path.join(this.definitionsDir, `${key}.json`)\n\n const data = await fs.readFile(cachePath, 'utf-8')\n const cached: CachedDefinition = JSON.parse(data)\n\n return cached.definition\n } catch {\n // Cache miss or error\n return null\n }\n }\n\n /**\n * Cache integration definition (intver + updatedAt → definition)\n */\n async setDefinition(integrationId: string, updatedAt: string, definition: IntegrationDefinition): Promise<void> {\n await this.ensureCacheDirs()\n\n const key = this.getDefinitionKey(integrationId, updatedAt)\n const cachePath = path.join(this.definitionsDir, `${key}.json`)\n\n const cached: CachedDefinition = {\n definition,\n cachedAt: new Date().toISOString(),\n }\n\n await fs.writeFile(cachePath, JSON.stringify(cached, null, 2))\n }\n\n /**\n * Clear all caches\n */\n async clear(): Promise<void> {\n try {\n // Clear resolutions\n const resolutionFiles = await fs.readdir(this.resolutionsDir)\n await Promise.all(resolutionFiles.map((file) => fs.unlink(path.join(this.resolutionsDir, file))))\n\n // Clear definitions\n const definitionFiles = await fs.readdir(this.definitionsDir)\n await Promise.all(definitionFiles.map((file) => fs.unlink(path.join(this.definitionsDir, file))))\n } catch {\n // Ignore errors if directories don't exist\n }\n }\n\n /**\n * Get cache statistics\n */\n async getStats(): Promise<{\n resolutions: { count: number; sizeBytes: number }\n definitions: { count: number; sizeBytes: number }\n }> {\n const getDirectoryStats = async (dir: string) => {\n try {\n const files = await fs.readdir(dir)\n let totalSize = 0\n\n for (const file of files) {\n const stats = await fs.stat(path.join(dir, file))\n totalSize += stats.size\n }\n\n return {\n count: files.length,\n sizeBytes: totalSize,\n }\n } catch {\n return { count: 0, sizeBytes: 0 }\n }\n }\n\n const [resolutions, definitions] = await Promise.all([\n getDirectoryStats(this.resolutionsDir),\n getDirectoryStats(this.definitionsDir),\n ])\n\n return { resolutions, definitions }\n }\n\n private getResolutionKey(name: string, version: string, workspace?: string): string {\n // Create a safe filesystem key from name@version\n const prefix = workspace ? `${workspace}_` : ''\n const key = `${prefix}${name}_${version}`\n return key.replace(/[^a-zA-Z0-9_-]/g, '_')\n }\n\n private getDefinitionKey(integrationId: string, updatedAt: string): string {\n // Create a safe filesystem key from intver_xxx + updatedAt\n const key = `${integrationId}_${updatedAt}`\n return key.replace(/[^a-zA-Z0-9_-]/g, '_')\n }\n}\n",
|
|
31
35
|
"import { z, ZodIssueCode } from '@botpress/sdk'\nimport { Dependencies } from './types.js'\nimport { IntegrationRef, ParsedIntegration } from '../integrations/types.js'\nimport { ValidationErrors } from './validation-errors.js'\nimport { ValidationError } from './types.js'\n\n// Integration reference schema\nconst integrationRefSchema = z.string().transform((val, ctx) => {\n // Match pattern: [workspace/]name@version\n const match = val.match(/^(?:([^/]+)\\/)?([^@]+)@(.+)$/)\n\n if (!match) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message: `Invalid integration version format: ${val}. Expected format: 'name@version' or 'workspace/name@version'`,\n })\n return z.NEVER\n }\n\n const [, workspace, name, version] = match\n\n return {\n workspace: workspace || undefined,\n name: name!,\n version: version!,\n fullName: workspace ? `${workspace}/${name}` : name!,\n }\n})\n\n// Version validation schema\nconst versionSchema = z.string().refine(\n (version) => {\n if (version === 'latest') return true\n const semverPattern = /^(\\d+)\\.(\\d+)\\.(\\d+)(-[\\w.]+)?(\\+[\\w.]+)?$/\n return semverPattern.test(version)\n },\n { message: \"Version must be exact semver (e.g., 1.2.3) or 'latest'\" }\n)\n\nexport class IntegrationParser {\n /**\n * Parse an integration version string into its components\n * Examples:\n * - \"slack@1.2.0\" -> { name: 'slack', version: '1.2.0', fullName: 'slack' }\n * - \"myworkspace/slack@latest\" -> { workspace: 'myworkspace', name: 'slack', version: 'latest', fullName: 'myworkspace/slack' }\n */\n static parseIntegrationRef(versionString: string): IntegrationRef {\n const result = integrationRefSchema.safeParse(versionString)\n if (!result.success) {\n throw new Error(result.error.errors[0]?.message || 'Invalid integration version format')\n }\n return result.data\n }\n\n /**\n * Parse integrations from dependencies object\n */\n static parseIntegrations(dependencies: Dependencies): {\n integrations: ParsedIntegration[]\n errors: ValidationError[]\n } {\n const integrations: ParsedIntegration[] = []\n const errors: ValidationError[] = []\n\n if (!dependencies.integrations) {\n return { integrations, errors }\n }\n\n for (const [alias, value] of Object.entries(dependencies.integrations)) {\n try {\n // Parse the integration reference\n const ref = this.parseIntegrationRef(value.version)\n\n // Validate version format\n const versionResult = versionSchema.safeParse(ref.version)\n if (!versionResult.success) {\n errors.push(ValidationErrors.invalidVersionFormat(alias, ref.version))\n }\n\n integrations.push({\n alias,\n ref,\n enabled: value.enabled,\n configurationType: value.configurationType,\n config: value.config,\n })\n } catch (error) {\n errors.push(\n ValidationErrors.invalidDependenciesSyntax(\n `Invalid integration '${alias}': ${error instanceof Error ? error.message : String(error)}`\n )\n )\n }\n }\n\n return { integrations, errors }\n }\n\n /**\n * Check for duplicate integration names (different aliases pointing to same integration)\n */\n static checkDuplicates(integrations: ParsedIntegration[]): ValidationError[] {\n const errors: ValidationError[] = []\n const seen = new Map<string, string[]>()\n\n for (const integration of integrations) {\n const key = integration.ref.fullName\n const aliases = seen.get(key) || []\n aliases.push(integration.alias)\n seen.set(key, aliases)\n }\n\n // Report duplicates\n for (const [integration, aliases] of seen.entries()) {\n if (aliases.length > 1) {\n errors.push(\n ValidationErrors.warning(\n `Integration '${integration}' is used with multiple aliases: ${aliases.join(', ')}. This is valid but ensure each has different configurations.`,\n 'agent.config.ts'\n )\n )\n }\n }\n\n return errors\n }\n}\n",
|
|
32
|
-
"import { z } from '@botpress/sdk'\nimport { defineConfig } from '@botpress/runtime'\nimport { ValidationErrors } from './validation-errors'\n\nexport type AgentConfig = ReturnType<typeof defineConfig>\n\n// Dependencies schema\nexport const dependenciesSchema = z.object({\n integrations: z\n .record(\n z.object({\n version: z.string(),\n enabled: z.boolean(), // Whether the integration is enabled\n configurationType: z.string().optional(), // Type of configuration (e.g., \"refreshToken\", \"apiKey\")\n connection: z.string().optional(), // e.g., \"adk://config/slack/ws/ws_123/default\"\n config: z.record(z.any()).optional(), // Local config overrides (non-secret)\n })\n )\n .optional(),\n})\n\nexport type Dependencies = z.infer<typeof dependenciesSchema>\n\n// Agent deployment info schema\nexport const agentInfoSchema = z.object({\n botId: z.string().describe('The bot ID from Botpress deployment'),\n workspaceId: z.string().describe('The workspace ID where the bot is deployed'),\n devId: z.string().optional().describe('The development ID used during local development'),\n})\n\nexport type AgentInfo = z.infer<typeof agentInfoSchema>\n\n// File change event types\nexport enum FileChangeType {\n Added = 'added',\n Modified = 'modified',\n Deleted = 'deleted',\n}\n\nexport interface FileChangeEvent {\n type: FileChangeType\n path: string\n relativePath: string\n}\n\n// Build event types\nexport enum BuildEventType {\n Started = 'started',\n Progress = 'progress',\n Success = 'success',\n Error = 'error',\n Warning = 'warning',\n}\n\nexport interface BuildEvent {\n type: BuildEventType\n message?: string\n error?: Error\n warnings?: string[]\n}\n\n// Validation error codes\nexport enum ValidationErrorCode {\n // Project structure errors\n DIRECTORY_NOT_FOUND = 'DIRECTORY_NOT_FOUND',\n DIRECTORY_ACCESS_ERROR = 'DIRECTORY_ACCESS_ERROR',\n REQUIRED_FILE_MISSING = 'REQUIRED_FILE_MISSING',\n INVALID_STRUCTURE = 'INVALID_STRUCTURE',\n\n // Configuration errors\n INVALID_CONFIG_SYNTAX = 'INVALID_CONFIG_SYNTAX',\n INVALID_CONFIG_SCHEMA = 'INVALID_CONFIG_SCHEMA',\n MISSING_REQUIRED_FIELD = 'MISSING_REQUIRED_FIELD',\n AGENT_NOT_LINKED = 'AGENT_NOT_LINKED',\n\n // Dependencies errors\n INVALID_DEPENDENCIES_SYNTAX = 'INVALID_DEPENDENCIES_SYNTAX',\n INVALID_DEPENDENCIES_SCHEMA = 'INVALID_DEPENDENCIES_SCHEMA',\n INVALID_VERSION_FORMAT = 'INVALID_VERSION_FORMAT',\n UNKNOWN_INTEGRATION = 'UNKNOWN_INTEGRATION',\n INCOMPATIBLE_VERSION = 'INCOMPATIBLE_VERSION',\n CIRCULAR_DEPENDENCY = 'CIRCULAR_DEPENDENCY',\n\n // File errors\n FILE_TOO_LARGE = 'FILE_TOO_LARGE',\n INVALID_FILE_TYPE = 'INVALID_FILE_TYPE',\n INVALID_FILE_NAME = 'INVALID_FILE_NAME',\n DUPLICATE_FILE_NAME = 'DUPLICATE_FILE_NAME',\n DUPLICATE_PRIMITIVE = 'DUPLICATE_PRIMITIVE',\n INVALID_PRIMITIVE_DEFINITION = 'INVALID_PRIMITIVE_DEFINITION',\n\n // Runtime errors\n BUILD_FAILED = 'BUILD_FAILED',\n SYNTAX_ERROR = 'SYNTAX_ERROR',\n TYPE_ERROR = 'TYPE_ERROR',\n IMPORT_ERROR = 'IMPORT_ERROR',\n}\n\n// Validation severity levels\nexport enum ValidationSeverity {\n ERROR = 'error',\n WARNING = 'warning',\n INFO = 'info',\n}\n\n// Enhanced validation error interface\nexport interface ValidationError {\n $type: typeof ValidationErrors.$type\n code: ValidationErrorCode\n severity: ValidationSeverity\n message: string\n file?: string\n line?: number\n column?: number\n hint?: string\n documentation?: string\n context?: Record<string, any>\n}\n\n// Validation result with categorized errors\nexport interface ValidationResult {\n valid: boolean\n errors: ValidationError[]\n warnings: ValidationError[]\n info: ValidationError[]\n errorCount: number\n warningCount: number\n infoCount: number\n}\n\n// Agent project state\nexport enum ProjectState {\n Unloaded = 'unloaded',\n Loading = 'loading',\n Ready = 'ready',\n Building = 'building',\n Error = 'error',\n}\n\n// Build output types\nexport interface BuildOutput {\n files: Map<string, Buffer | string>\n metadata: {\n buildTime: Date\n version?: string\n checksum?: string\n }\n}\n\n// Watch options\nexport interface WatchOptions {\n ignore?: string[]\n debounce?: number\n autoBuild?: boolean\n}\n\n// Integration types\nexport interface Integration {\n name: string\n version: string\n workspace?: string // Optional workspace name\n connection?: string\n config?: Record<string, any>\n installed?: boolean\n installedVersion?: string\n hasChannels?: boolean\n}\n\nexport interface IntegrationChange {\n type: 'install' | 'update' | 'uninstall'\n integration: Integration\n from?: string // For updates: from version\n to?: string // For updates: to version\n}\n\nexport interface IntegrationSyncResult {\n changes: IntegrationChange[]\n applied: boolean\n errors?: Error[]\n}\n\n// Project info\nexport interface ProjectInfo {\n path: string\n config: AgentConfig\n dependencies: Dependencies\n agentInfo?: AgentInfo // Optional deployment information\n state: ProjectState\n lastBuildTime?: Date\n errors: ValidationError[]\n warnings: ValidationError[]\n errorCount: number\n warningCount: number\n infoCount: number\n integrations?: Integration[] // Parsed integrations from dependencies\n}\n\nexport type IntegrationDependency = {\n type: 'integration'\n integration: {\n name: string\n version: string\n enabled: boolean\n }\n}\n\nexport type InterfaceDependency = {\n type: 'interface'\n interface: {\n name: string\n version: string\n }\n}\n\nexport type PluginDependency = {\n type: 'plugin'\n plugin: {\n name: string\n version: string\n }\n}\n\nexport type Dependency = IntegrationDependency | InterfaceDependency | PluginDependency\n",
|
|
33
|
-
"import { ValidationError, ValidationErrorCode, ValidationSeverity } from './types.js'\n\n/**\n * Factory functions for creating consistent validation errors\n */\n\nexport class ValidationErrors {\n static $type = 'ValidationError' as const\n\n // Project structure errors\n static directoryNotFound(path: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.DIRECTORY_NOT_FOUND,\n severity: ValidationSeverity.ERROR,\n message: `Project directory not found: ${path}`,\n hint: 'Ensure the directory exists and you have permission to access it',\n context: { path },\n }\n }\n\n static directoryAccessError(path: string, error: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.DIRECTORY_ACCESS_ERROR,\n severity: ValidationSeverity.ERROR,\n message: `Cannot access project directory: ${error}`,\n hint: 'Check file system permissions',\n context: { path, error },\n }\n }\n\n static requiredFileMissing(file: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.REQUIRED_FILE_MISSING,\n severity: ValidationSeverity.ERROR,\n message: `Required file '${file}' not found`,\n file,\n hint: `Create a ${file} file in your project root`,\n documentation: 'https://docs.botpress.com/adk/project-structure',\n }\n }\n\n static invalidStructure(directory: string, expected: 'directory' | 'file'): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_STRUCTURE,\n severity: ValidationSeverity.WARNING,\n message: `Expected '${directory}' to be a ${expected}`,\n file: directory,\n hint: `Ensure ${directory} is a ${expected}, not a ${expected === 'directory' ? 'file' : 'directory'}`,\n }\n }\n\n // Configuration errors\n static invalidConfigSyntax(file: string, error: string, line?: number, column?: number): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_CONFIG_SYNTAX,\n severity: ValidationSeverity.ERROR,\n message: `Invalid syntax in ${file}: ${error}`,\n file,\n line,\n column,\n hint: 'Check for syntax errors like missing commas, brackets, or quotes',\n }\n }\n\n static invalidConfigSchema(file: string, field: string, error: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_CONFIG_SCHEMA,\n severity: ValidationSeverity.ERROR,\n message: `Invalid configuration in ${file}: ${error}`,\n file,\n hint: `Check the '${field}' field matches the expected schema`,\n context: { field, error },\n }\n }\n\n static missingRequiredField(file: string, field: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.MISSING_REQUIRED_FIELD,\n severity: ValidationSeverity.ERROR,\n message: `Missing required field '${field}' in ${file}`,\n file,\n hint: `Add the '${field}' field to your configuration`,\n documentation: 'https://docs.botpress.com/adk/configuration',\n }\n }\n\n // Dependencies errors\n static invalidDependenciesSyntax(error: string, line?: number): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_DEPENDENCIES_SYNTAX,\n severity: ValidationSeverity.ERROR,\n message: `Invalid syntax in agent.config.ts dependencies: ${error}`,\n file: 'agent.config.ts',\n line,\n hint: 'Ensure agent.config.ts exports a valid dependencies object',\n }\n }\n\n static invalidVersionFormat(integration: string, version: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_VERSION_FORMAT,\n severity: ValidationSeverity.ERROR,\n message: `Invalid version format '${version}' for integration '${integration}'`,\n file: 'agent.config.ts',\n hint: 'Use exact versioning (e.g., \"1.2.3\", \"2.0.0\", \"1.5.0\")',\n context: { integration, version },\n }\n }\n\n static unknownIntegration(integration: string, source: string, detailedMessage?: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.UNKNOWN_INTEGRATION,\n severity: ValidationSeverity.ERROR,\n message: detailedMessage || `Unknown integration '${integration}' from source '${source}'`,\n file: 'agent.config.ts',\n hint: detailedMessage ? undefined : `Check if the integration name is correct or if it exists in ${source}`,\n context: { integration, source },\n }\n }\n\n static integrationVersionError(integration: string, errorMessage: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.UNKNOWN_INTEGRATION,\n severity: ValidationSeverity.ERROR,\n message: errorMessage,\n file: 'agent.config.ts',\n hint: `Update the version for \"${integration}\" in agent.config.ts dependencies`,\n }\n }\n\n static unknownInterface(errorMessage: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.UNKNOWN_INTEGRATION,\n severity: ValidationSeverity.ERROR,\n message: errorMessage,\n file: 'agent.config.ts',\n }\n }\n\n static incompatibleVersion(integration: string, required: string, available: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INCOMPATIBLE_VERSION,\n severity: ValidationSeverity.ERROR,\n message: `Integration '${integration}' requires version ${required}, but only ${available} is available`,\n file: 'agent.config.ts',\n hint: 'Update the version requirement or check for compatible versions',\n context: { integration, required, available },\n }\n }\n\n // File errors\n static fileTooLarge(file: string, size: number, maxSize: number): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.FILE_TOO_LARGE,\n severity: ValidationSeverity.ERROR,\n message: `File '${file}' is too large (${formatBytes(size)} > ${formatBytes(maxSize)})`,\n file,\n hint: 'Reduce file size or split into smaller files',\n context: { size, maxSize },\n }\n }\n\n static invalidFileType(file: string, type: string, allowedTypes: string[]): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_FILE_TYPE,\n severity: ValidationSeverity.ERROR,\n message: `Invalid file type '${type}' for file '${file}'`,\n file,\n hint: `Allowed file types: ${allowedTypes.join(', ')}`,\n context: { type, allowedTypes },\n }\n }\n\n static invalidFileName(file: string, reason: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_FILE_NAME,\n severity: ValidationSeverity.ERROR,\n message: `Invalid file name '${file}': ${reason}`,\n file,\n hint: 'Use lowercase letters, numbers, and hyphens only',\n }\n }\n\n static duplicateFileName(file: string, existingFile: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.DUPLICATE_FILE_NAME,\n severity: ValidationSeverity.ERROR,\n message: `Duplicate file name '${file}' conflicts with '${existingFile}'`,\n file,\n hint: 'Rename one of the files to avoid conflicts',\n context: { existingFile },\n }\n }\n\n // Runtime errors\n static buildFailed(error: string, file?: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.BUILD_FAILED,\n severity: ValidationSeverity.ERROR,\n message: `Build failed: ${error}`,\n file,\n hint: 'Check the error message and fix any issues in your code',\n }\n }\n\n static syntaxError(file: string, error: string, line?: number, column?: number): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.SYNTAX_ERROR,\n severity: ValidationSeverity.ERROR,\n message: `Syntax error: ${error}`,\n file,\n line,\n column,\n hint: 'Check for missing semicolons, brackets, or other syntax issues',\n }\n }\n\n static typeError(file: string, error: string, line?: number): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.TYPE_ERROR,\n severity: ValidationSeverity.ERROR,\n message: `Type error: ${error}`,\n file,\n line,\n hint: 'Ensure types match expected values and imports are correct',\n }\n }\n\n static importError(file: string, module: string, error: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.IMPORT_ERROR,\n severity: ValidationSeverity.ERROR,\n message: `Cannot import '${module}': ${error}`,\n file,\n hint: 'Check if the module exists and is properly installed',\n context: { module },\n }\n }\n\n // Knowledge errors\n static unsafeKnowledgePath(knowledgeBase: string, pattern: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_FILE_NAME,\n severity: ValidationSeverity.ERROR,\n message: `Knowledge base '${knowledgeBase}' contains unsafe path pattern '${pattern}'`,\n file: `src/knowledge/${knowledgeBase}.ts`,\n hint: 'Knowledge patterns must not reference files outside the agent directory (remove ../ or absolute paths)',\n context: { knowledgeBase, pattern },\n }\n }\n\n // Utility functions\n static info(message: string, file?: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_STRUCTURE, // Generic code for info\n severity: ValidationSeverity.INFO,\n message,\n file,\n }\n }\n\n static warning(message: string, file?: string, hint?: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_STRUCTURE, // Generic code for warnings\n severity: ValidationSeverity.WARNING,\n message,\n file,\n hint,\n }\n }\n}\n\n// Helper function to format bytes\nfunction formatBytes(bytes: number): string {\n if (bytes === 0) return '0 Bytes'\n const k = 1024\n const sizes = ['Bytes', 'KB', 'MB', 'GB']\n const i = Math.floor(Math.log(bytes) / Math.log(k))\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]\n}\n",
|
|
34
36
|
"import fs from 'fs/promises'\nimport path from 'path'\nimport os from 'os'\nimport { IntegrationDefinition, CachedIntegration } from './types.js'\n\nexport class IntegrationCache {\n private cacheDir: string\n private integrationsDir: string\n\n constructor() {\n // Global cache in ~/.adk/cache\n this.cacheDir = path.join(os.homedir(), '.adk', 'cache')\n this.integrationsDir = path.join(this.cacheDir, 'integrations')\n }\n\n private async ensureCacheDir(): Promise<void> {\n await fs.mkdir(this.integrationsDir, { recursive: true })\n }\n\n private getCacheKey(integrationId: string, updatedAt: string): string {\n // Cache key format: integrationId@updatedAt\n // Remove any special characters that might cause filesystem issues\n const sanitizedId = integrationId.replace(/[^a-zA-Z0-9_-]/g, '_')\n const sanitizedDate = updatedAt.replace(/[^a-zA-Z0-9_-]/g, '_')\n return `${sanitizedId}@${sanitizedDate}.json`\n }\n\n async get(integrationId: string, updatedAt: string): Promise<IntegrationDefinition | null> {\n try {\n const cacheKey = this.getCacheKey(integrationId, updatedAt)\n const cachePath = path.join(this.integrationsDir, cacheKey)\n\n const data = await fs.readFile(cachePath, 'utf-8')\n const cached: CachedIntegration = JSON.parse(data)\n\n // Check if cache is expired\n if (cached.expiresAt) {\n const expiryDate = new Date(cached.expiresAt)\n if (expiryDate < new Date()) {\n // Cache expired, remove it\n await this.remove(integrationId, updatedAt)\n return null\n }\n }\n\n return cached.definition\n } catch (error) {\n // Cache miss or error\n return null\n }\n }\n\n async set(\n integrationId: string,\n updatedAt: string,\n definition: IntegrationDefinition,\n ttlHours: number = 24 * 7 // Default 1 week\n ): Promise<void> {\n await this.ensureCacheDir()\n\n const cacheKey = this.getCacheKey(integrationId, updatedAt)\n const cachePath = path.join(this.integrationsDir, cacheKey)\n\n const expiresAt = new Date()\n expiresAt.setHours(expiresAt.getHours() + ttlHours)\n\n const cacheEntry: CachedIntegration = {\n definition,\n cachedAt: new Date().toISOString(),\n expiresAt: expiresAt.toISOString(),\n }\n\n await fs.writeFile(cachePath, JSON.stringify(cacheEntry, null, 2))\n }\n\n async remove(integrationId: string, updatedAt: string): Promise<void> {\n try {\n const cacheKey = this.getCacheKey(integrationId, updatedAt)\n const cachePath = path.join(this.integrationsDir, cacheKey)\n await fs.unlink(cachePath)\n } catch {\n // Ignore errors if file doesn't exist\n }\n }\n\n async clear(): Promise<void> {\n try {\n const files = await fs.readdir(this.integrationsDir)\n await Promise.all(files.map((file) => fs.unlink(path.join(this.integrationsDir, file))))\n } catch {\n // Ignore errors if directory doesn't exist\n }\n }\n\n async getStats(): Promise<{ count: number; sizeBytes: number }> {\n try {\n const files = await fs.readdir(this.integrationsDir)\n let totalSize = 0\n\n for (const file of files) {\n const stats = await fs.stat(path.join(this.integrationsDir, file))\n totalSize += stats.size\n }\n\n return {\n count: files.length,\n sizeBytes: totalSize,\n }\n } catch {\n return { count: 0, sizeBytes: 0 }\n }\n }\n}\n",
|
|
35
37
|
"import { Client } from '@botpress/client'\nimport * as process from 'process'\nimport { auth } from '../auth/index.js'\nimport { AgentProject } from '../agent-project/agent-project.js'\nimport { IntegrationManager } from './manager.js'\nimport { IntegrationRef, IntegrationDefinition } from './types.js'\nimport { HubCache } from './hub-cache.js'\nimport { ConfigWriter } from '../agent-project/config-writer.js'\n\nexport interface IntegrationVersionInfo {\n name: string\n version: string\n latestVersion?: string\n availableVersions?: string[]\n}\n\nexport interface AddIntegrationOptions {\n name: string\n version?: string\n alias?: string\n}\n\nexport interface AddIntegrationResult {\n success: boolean\n message?: string\n requiresConfiguration?: boolean\n existingVersion?: string\n newVersion?: string\n}\n\nexport interface UpgradeIntegrationOptions {\n name?: string\n interactive?: boolean\n}\n\nexport interface RemoveIntegrationOptions {\n name?: string\n interactive?: boolean\n}\n\nexport class IntegrationOperations {\n private hubCache: HubCache\n private client?: Client\n private projectPath?: string\n\n constructor(options: { noCache?: boolean; projectPath?: string } = {}) {\n this.hubCache = new HubCache()\n this.projectPath = options.projectPath\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = await auth.getActiveCredentials()\n\n let workspaceId = credentials.workspaceId\n\n try {\n // If projectPath is provided, try to get workspaceId from there\n if (this.projectPath) {\n const project = await AgentProject.load(this.projectPath)\n if (project.agentInfo?.workspaceId) {\n workspaceId = project.agentInfo.workspaceId\n }\n }\n } catch {\n // Ignore errors and fallback to credentials\n }\n\n if (!workspaceId) {\n throw new Error('No workspace ID found in current profile. Please login again with \"adk login\"')\n }\n\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId: workspaceId,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n }\n return this.client\n }\n\n /**\n * Parse integration reference from string (e.g., \"slack@latest\", \"slack@1.0.0\")\n */\n private parseIntegrationRef(input: string): IntegrationRef {\n const parts = input.split('@')\n const name = parts[0] || ''\n const version = parts[1] || 'latest'\n\n if (!name) {\n throw new Error('Invalid integration reference: missing name')\n }\n\n // Check if it's a workspace integration (contains /)\n const workspaceParts = name.split('/')\n if (workspaceParts.length === 2 && workspaceParts[0] && workspaceParts[1]) {\n return {\n fullName: name,\n workspace: workspaceParts[0],\n name: workspaceParts[1],\n version,\n }\n }\n\n return { name, version, fullName: name }\n }\n\n /**\n * Get available versions for an integration\n */\n async getIntegrationVersions(name: string): Promise<IntegrationVersionInfo> {\n const client = await this.getClient()\n const ref = this.parseIntegrationRef(name)\n\n try {\n // Try to get private/workspace integration first\n const latestResponse = await client.getIntegrationByName({\n name: ref.fullName,\n version: 'latest',\n })\n\n return {\n name: ref.fullName,\n version: latestResponse.integration.version,\n latestVersion: latestResponse.integration.version,\n availableVersions: [latestResponse.integration.version],\n }\n } catch {\n // Try public integration\n try {\n const latestResponse = await client.getPublicIntegration({\n name: ref.name,\n version: 'latest',\n })\n\n return {\n name: ref.fullName,\n version: latestResponse.integration.version,\n latestVersion: latestResponse.integration.version,\n availableVersions: [latestResponse.integration.version],\n }\n } catch {\n throw new Error(`Integration \"${ref.fullName}\" not found`)\n }\n }\n }\n\n /**\n * Add an integration to agent.config.ts dependencies\n */\n async addIntegration(options: AddIntegrationOptions): Promise<AddIntegrationResult> {\n const project = await AgentProject.load(this.projectPath || process.cwd())\n\n const { name, version = 'latest' } = options\n\n // Check if integration exists and parse reference\n const ref = this.parseIntegrationRef(`${name}@${version}`)\n\n // Default alias to the base integration name (without workspace prefix)\n // e.g., \"sly/intercom\" -> alias is \"intercom\" by default\n const alias = options.alias || ref.name\n\n // Load current dependencies from project\n const dependencies = project.dependencies || { integrations: {} }\n\n if (!dependencies.integrations) {\n dependencies.integrations = {}\n }\n\n // Check if integration already exists\n const existingIntegration = dependencies.integrations[alias]\n if (existingIntegration) {\n let existingVersion: string\n if (typeof existingIntegration === 'string') {\n const existingRef = this.parseIntegrationRef(existingIntegration)\n existingVersion = existingRef.version\n } else if (typeof existingIntegration === 'object' && existingIntegration.version) {\n const existingRef = this.parseIntegrationRef(existingIntegration.version)\n existingVersion = existingRef.version\n } else {\n existingVersion = 'unknown'\n }\n\n // If version is not specified or same as existing, do nothing\n if (!version || version === 'latest' || version === existingVersion) {\n return {\n success: false,\n message: `Integration '${alias}' already exists with version ${existingVersion}. Use 'adk upgrade ${alias}' to upgrade to the latest version.`,\n existingVersion,\n }\n }\n }\n\n // Verify integration exists and get its definition\n let integrationDefinition: IntegrationDefinition\n try {\n const tempManager = new IntegrationManager({\n workspaceId: project.agentInfo?.workspaceId,\n })\n const loadResult = await tempManager.loadIntegrations({\n integrations: {\n [alias]: {\n version: `${ref.fullName}@${ref.version}`,\n enabled: true,\n },\n },\n })\n\n if (loadResult.errors.length > 0) {\n const firstError = loadResult.errors[0]\n throw new Error(firstError?.message || 'Unknown error')\n }\n\n // Get the integration definition\n const loadedIntegration = loadResult.integrations[0]\n if (!loadedIntegration?.definition) {\n throw new Error('Failed to load integration definition')\n }\n integrationDefinition = loadedIntegration.definition\n } catch (error) {\n throw new Error(`Failed to add integration: ${error instanceof Error ? error.message : String(error)}`)\n }\n\n // Check if integration requires configuration\n let requiresConfiguration = false\n\n // Check modern configurations (plural)\n requiresConfiguration = Object.values(integrationDefinition.configurations).some(\n (config: any) => config.identifier?.required === true\n )\n\n // Check legacy configuration (singular) - if it has required fields in schema\n if (!requiresConfiguration && integrationDefinition.configuration) {\n const config = integrationDefinition.configuration\n const schema = config.schema\n requiresConfiguration = schema?.required && schema.required.length > 0\n }\n\n // Get the actual version from the loaded integration definition\n const actualVersion = integrationDefinition.version\n const integrationVersion = `${ref.fullName}@${actualVersion}`\n\n // Get existing entry to check for existing config\n const existingEntry = dependencies.integrations[alias]\n const existingConfig = existingEntry && typeof existingEntry === 'object' ? existingEntry.config : undefined\n\n // Get or generate config (preserves existing if present)\n const config = requiresConfiguration && !existingConfig\n ? this.getPlaceholderConfig(integrationDefinition)\n : existingConfig\n\n // Preserve existing configuration if it's an object\n if (existingEntry && typeof existingEntry === 'object' && 'version' in existingEntry) {\n // Update only the version, preserving other fields like connection and config\n dependencies.integrations[alias] = {\n ...existingEntry,\n version: integrationVersion,\n }\n } else {\n // New integration - enable by default if no configuration is required\n const newEntry = {\n version: integrationVersion,\n enabled: !requiresConfiguration,\n config: config,\n }\n\n dependencies.integrations[alias] = newEntry\n }\n\n // Write back to agent.config.ts using ConfigWriter\n const configWriter = new ConfigWriter(project.path)\n await configWriter.updateDependencies(dependencies)\n\n return {\n success: true,\n requiresConfiguration,\n newVersion: actualVersion,\n }\n }\n\n /**\n * Generate placeholder config values from integration schema\n */\n private getPlaceholderConfig(\n integrationDefinition: IntegrationDefinition\n ): Record<string, any> | undefined {\n // Generate config placeholders from schema\n const configPlaceholder: Record<string, any> = {}\n\n // Check legacy configuration (singular)\n if (integrationDefinition.configuration) {\n const config = integrationDefinition.configuration\n const schema = config.schema\n\n if (schema?.required && schema.required.length > 0) {\n const properties = schema.properties || {}\n for (const fieldName of schema.required) {\n const fieldDef = properties[fieldName]\n // Generate placeholder based on type\n if (fieldDef?.type === 'string') {\n configPlaceholder[fieldName] = `YOUR_${fieldName.toUpperCase()}_HERE`\n } else if (fieldDef?.type === 'number' || fieldDef?.type === 'integer') {\n configPlaceholder[fieldName] = 0\n } else if (fieldDef?.type === 'boolean') {\n configPlaceholder[fieldName] = false\n } else {\n configPlaceholder[fieldName] = null\n }\n }\n\n if (Object.keys(configPlaceholder).length > 0) {\n console.log('Generated config placeholders:', configPlaceholder)\n return configPlaceholder\n }\n }\n }\n\n return undefined\n }\n\n /**\n * Remove an integration from agent.config.ts dependencies\n */\n async removeIntegration(name: string): Promise<void> {\n const project = await AgentProject.load(this.projectPath || process.cwd())\n\n // Load current dependencies from project\n const dependencies = project.dependencies\n\n if (!dependencies || !dependencies.integrations || !dependencies.integrations[name]) {\n throw new Error(`Integration \"${name}\" not found in dependencies`)\n }\n\n // Remove integration\n delete dependencies.integrations[name]\n\n // Write back to agent.config.ts using ConfigWriter\n const configWriter = new ConfigWriter(project.path)\n await configWriter.updateDependencies(dependencies)\n }\n\n /**\n * Upgrade integration(s) to latest version\n */\n async upgradeIntegration(name?: string): Promise<{ upgraded: string[]; failed: string[] }> {\n const project = await AgentProject.load(this.projectPath || process.cwd())\n\n // Load current dependencies from project\n const dependencies = project.dependencies\n\n if (!dependencies || !dependencies.integrations) {\n throw new Error('No integrations found in dependencies')\n }\n\n const upgraded: string[] = []\n const failed: string[] = []\n\n // Get integrations to upgrade\n const integrationsToUpgrade = name ? { [name]: dependencies.integrations[name] } : dependencies.integrations\n\n if (name && !integrationsToUpgrade[name]) {\n throw new Error(`Integration \"${name}\" not found in dependencies`)\n }\n\n // Upgrade each integration\n for (const [alias, value] of Object.entries(integrationsToUpgrade)) {\n try {\n let ref: IntegrationRef\n let currentVersion: string\n\n if (typeof value === 'string') {\n ref = this.parseIntegrationRef(value)\n currentVersion = ref.version\n } else if (typeof value === 'object' && value.version) {\n ref = this.parseIntegrationRef(value.version)\n currentVersion = ref.version\n } else {\n failed.push(alias)\n continue\n }\n\n // Get latest version (using fullName to preserve workspace prefix)\n const versionInfo = await this.getIntegrationVersions(ref.fullName)\n\n if (versionInfo.latestVersion && versionInfo.latestVersion !== currentVersion) {\n // Update to latest (value is always an object now)\n // Use ref.fullName to preserve workspace prefix (e.g., \"sly/intercom\")\n dependencies.integrations[alias] = {\n ...value,\n version: `${ref.fullName}@${versionInfo.latestVersion}`,\n }\n upgraded.push(`${alias} (${currentVersion} → ${versionInfo.latestVersion})`)\n }\n } catch {\n failed.push(alias)\n }\n }\n\n // Write back if any upgrades\n if (upgraded.length > 0) {\n const configWriter = new ConfigWriter(project.path)\n await configWriter.updateDependencies(dependencies)\n }\n\n return { upgraded, failed }\n }\n\n /**\n * Get list of current integrations\n */\n async listIntegrations(): Promise<Array<{ alias: string; name: string; version: string }>> {\n const project = await AgentProject.load(this.projectPath || process.cwd())\n\n // Read dependencies from project\n const dependencies = project.dependencies\n\n if (!dependencies || !dependencies.integrations) {\n return []\n }\n\n const integrations: Array<{\n alias: string\n name: string\n version: string\n }> = []\n\n for (const [alias, value] of Object.entries(dependencies.integrations)) {\n if (typeof value === 'string') {\n const ref = this.parseIntegrationRef(value)\n // Use fullName to preserve workspace prefix (e.g., \"sly/intercom\")\n integrations.push({ alias, name: ref.fullName, version: ref.version })\n } else if (typeof value === 'object' && value.version) {\n const ref = this.parseIntegrationRef(value.version)\n // Use fullName to preserve workspace prefix (e.g., \"sly/intercom\")\n integrations.push({ alias, name: ref.fullName, version: ref.version })\n }\n }\n\n return integrations\n }\n\n /**\n * Search for integrations in the hub cache\n */\n async searchIntegrations(query: string): Promise<\n Array<{\n name: string\n version: string\n title?: string\n description?: string\n }>\n > {\n const results = await this.hubCache.searchIntegrations(query)\n\n // Group by name and get latest version for each\n const latestByName = new Map<string, (typeof results)[0]>()\n for (const integration of results) {\n const existing = latestByName.get(integration.name)\n if (\n !existing ||\n integration.version.localeCompare(existing.version, undefined, {\n numeric: true,\n }) > 0\n ) {\n latestByName.set(integration.name, integration)\n }\n }\n\n return Array.from(latestByName.values()).map((i) => ({\n name: i.name,\n version: i.version,\n title: i.title,\n description: i.description,\n }))\n }\n\n /**\n * Get all available integrations from hub\n */\n async getAllAvailableIntegrations(): Promise<Array<{ name: string; version: string; title?: string }>> {\n const all = await this.hubCache.getAllIntegrations()\n\n // Group by name and get latest version for each\n const latestByName = new Map<string, (typeof all)[0]>()\n for (const integration of all) {\n const existing = latestByName.get(integration.name)\n if (\n !existing ||\n integration.version.localeCompare(existing.version, undefined, {\n numeric: true,\n }) > 0\n ) {\n latestByName.set(integration.name, integration)\n }\n }\n\n return Array.from(latestByName.values()).map((i) => ({\n name: i.name,\n version: i.version,\n title: i.title,\n }))\n }\n}\n",
|
|
36
38
|
"import { Client } from '@botpress/client'\nimport * as fs from 'fs/promises'\nimport * as path from 'path'\nimport * as os from 'os'\nimport { auth } from '../auth/index.js'\n\nexport interface HubCacheEntry {\n id: string\n name: string\n version: string\n updatedAt: string\n createdAt: string\n title?: string\n description?: string\n iconUrl?: string\n public: boolean\n visibility: 'public' | 'private' | 'unlisted'\n ownerWorkspace?: {\n id: string\n name: string\n }\n verificationStatus?: 'unapproved' | 'approved' | 'pending' | 'rejected'\n}\n\nexport interface HubCacheData {\n lastUpdated: string\n integrations: HubCacheEntry[]\n}\n\nexport class HubCache {\n private static readonly CACHE_FILE = 'botpress-hub-cache.json'\n private static readonly CACHE_DIR = path.join(os.homedir(), '.adk', 'cache')\n private static readonly CACHE_PATH = path.join(HubCache.CACHE_DIR, HubCache.CACHE_FILE)\n private static readonly CACHE_DURATION = 30 * 60 * 1000 // 30 minutes in milliseconds\n\n private client?: Client\n\n constructor() {}\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = await auth.getActiveCredentials()\n\n if (!credentials.workspaceId) {\n throw new Error('No workspace ID found in current profile. Please login again with \"adk login\"')\n }\n\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId: credentials.workspaceId,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n }\n return this.client\n }\n\n /**\n * Ensure cache directory exists\n */\n private async ensureCacheDir(): Promise<void> {\n try {\n await fs.mkdir(HubCache.CACHE_DIR, { recursive: true })\n } catch {\n // Directory might already exist, that's fine\n }\n }\n\n /**\n * Load cache from disk\n */\n private async loadCache(): Promise<HubCacheData | null> {\n try {\n const data = await fs.readFile(HubCache.CACHE_PATH, 'utf-8')\n return JSON.parse(data) as HubCacheData\n } catch {\n return null\n }\n }\n\n /**\n * Save cache to disk\n */\n private async saveCache(data: HubCacheData): Promise<void> {\n await this.ensureCacheDir()\n await fs.writeFile(HubCache.CACHE_PATH, JSON.stringify(data, null, 2))\n }\n\n /**\n * Check if cache needs refresh\n */\n private async needsRefresh(): Promise<boolean> {\n const cache = await this.loadCache()\n if (!cache) return true\n\n const lastUpdated = new Date(cache.lastUpdated)\n const now = new Date()\n const diff = now.getTime() - lastUpdated.getTime()\n\n return diff > HubCache.CACHE_DURATION\n }\n\n /**\n * Refresh the hub cache\n */\n async refresh(force: boolean = false): Promise<void> {\n // Check if refresh is needed\n if (!force && !(await this.needsRefresh())) {\n return\n }\n\n const client = await this.getClient()\n const cache = await this.loadCache()\n const latestByName = new Map<string, HubCacheEntry>()\n\n // Load existing cache into map (keyed by name for latest version tracking)\n if (cache) {\n for (const entry of cache.integrations) {\n latestByName.set(entry.name, entry)\n }\n }\n\n try {\n // Fetch integrations sorted by updatedAt descending\n for await (const integration of client.list.publicIntegrations({\n sortBy: 'updatedAt',\n direction: 'desc',\n })) {\n // Check if we have a newer version of this integration\n const existing = latestByName.get(integration.name)\n\n // If we've reached an integration with the same id and updatedAt we already have, stop\n if (existing && integration.id === existing.id && integration.updatedAt === existing.updatedAt) {\n break\n }\n\n if (\n !existing ||\n integration.version.localeCompare(existing.version, undefined, {\n numeric: true,\n }) > 0\n ) {\n // Add or update to latest version\n latestByName.set(integration.name, {\n id: integration.id,\n name: integration.name,\n version: integration.version,\n updatedAt: integration.updatedAt,\n createdAt: integration.createdAt,\n title: integration.title,\n description: integration.description,\n iconUrl: integration.iconUrl,\n public: integration.public,\n visibility: integration.visibility,\n ownerWorkspace: integration.ownerWorkspace\n ? {\n id: integration.ownerWorkspace.id,\n name: integration.ownerWorkspace.name,\n }\n : undefined,\n verificationStatus: integration.verificationStatus,\n })\n }\n }\n\n // Convert map back to array, sorted by updatedAt descending\n const integrations = Array.from(latestByName.values()).sort((a, b) => b.updatedAt.localeCompare(a.updatedAt))\n\n // If we fetched all integrations (didn't break early), we have a complete list\n // Otherwise, merge with existing cache as done above\n\n // Save the updated cache\n const newCache: HubCacheData = {\n lastUpdated: new Date().toISOString(),\n integrations,\n }\n\n await this.saveCache(newCache)\n } catch (error) {\n throw new Error(`Failed to refresh hub cache: ${error instanceof Error ? error.message : String(error)}`)\n }\n }\n\n /**\n * Get all integrations from cache\n */\n async getAllIntegrations(): Promise<HubCacheEntry[]> {\n // Ensure cache is fresh\n await this.refresh()\n\n const cache = await this.loadCache()\n return cache?.integrations || []\n }\n\n /**\n * Search integrations by name\n */\n async searchIntegrations(query: string): Promise<HubCacheEntry[]> {\n const integrations = await this.getAllIntegrations()\n const lowerQuery = query.toLowerCase()\n\n return integrations.filter(\n (integration) =>\n integration.name.toLowerCase().includes(lowerQuery) ||\n integration.title?.toLowerCase().includes(lowerQuery) ||\n integration.description?.toLowerCase().includes(lowerQuery)\n )\n }\n\n /**\n * Get integration by name (latest version)\n */\n async getIntegrationByName(name: string): Promise<HubCacheEntry | null> {\n const integrations = await this.getAllIntegrations()\n\n // Since we only keep latest versions, just find by name\n return integrations.find((i) => i.name === name) || null\n }\n\n /**\n * Get all versions of an integration\n * Note: Since we only cache latest versions, this returns only the latest\n */\n async getIntegrationVersions(name: string): Promise<string[]> {\n const integration = await this.getIntegrationByName(name)\n return integration ? [integration.version] : []\n }\n\n /**\n * Get cache statistics\n */\n async getStats(): Promise<{\n lastUpdated: Date | null\n integrationCount: number\n cacheSize: number\n }> {\n const cache = await this.loadCache()\n\n try {\n const stats = await fs.stat(HubCache.CACHE_PATH)\n return {\n lastUpdated: cache ? new Date(cache.lastUpdated) : null,\n integrationCount: cache?.integrations.length || 0,\n cacheSize: stats.size,\n }\n } catch {\n return {\n lastUpdated: null,\n integrationCount: 0,\n cacheSize: 0,\n }\n }\n }\n\n /**\n * Clear the cache\n */\n async clear(): Promise<void> {\n try {\n await fs.unlink(HubCache.CACHE_PATH)\n } catch {\n // File might not exist, that's fine\n }\n }\n}\n",
|
|
37
39
|
"import { Project, SyntaxKind, PropertyAssignment } from 'ts-morph'\nimport * as path from 'path'\nimport type { Dependencies } from './types'\nimport { formatCode } from '../generators/utils'\n\n/**\n * ConfigWriter handles writing updates to agent.config.ts\n *\n * Note: For reading dependencies, use AgentProject.dependencies instead.\n * This class is only for surgical updates to the dependencies field.\n */\nexport class ConfigWriter {\n private configPath: string\n\n constructor(projectPath: string) {\n this.configPath = path.join(projectPath, 'agent.config.ts')\n }\n\n /**\n * Updates the dependencies field in agent.config.ts\n * Uses ts-morph to surgically update only the dependencies property\n * while preserving all other config fields (name, models, state, etc.)\n */\n async updateDependencies(dependencies: Dependencies): Promise<void> {\n const project = new Project()\n const sourceFile = project.addSourceFileAtPath(this.configPath)\n\n // Find the defineConfig() call\n const defineConfigCall = sourceFile.getDescendantsOfKind(SyntaxKind.CallExpression).find((call) => {\n const expression = call.getExpression()\n return expression.getText() === 'defineConfig'\n })\n\n if (!defineConfigCall) {\n throw new Error('Could not find defineConfig() call in agent.config.ts')\n }\n\n // Get the first argument (config object)\n const configArg = defineConfigCall.getArguments()[0]\n if (!configArg || !configArg.isKind(SyntaxKind.ObjectLiteralExpression)) {\n throw new Error('defineConfig() must have an object literal as its first argument')\n }\n\n const configObject = configArg.asKind(SyntaxKind.ObjectLiteralExpression)\n if (!configObject) {\n throw new Error('Could not find dependencies property in agent.config.ts')\n }\n\n // Find or create the dependencies property\n let dependenciesProperty = configObject.getProperty('dependencies') as PropertyAssignment | undefined\n\n if (dependenciesProperty) {\n // Update existing property\n dependenciesProperty.setInitializer(JSON.stringify(dependencies))\n } else {\n // Add new property at the end\n dependenciesProperty = configObject.addPropertyAssignment({\n name: 'dependencies',\n initializer: JSON.stringify(dependencies),\n })\n }\n\n // Format the entire source file to ensure consistent indentation\n sourceFile.formatText()\n\n // Apply Prettier formatting to respect project .prettierrc\n const content = sourceFile.getFullText()\n const formatted = await formatCode(content, this.configPath)\n sourceFile.replaceWithText(formatted)\n\n // Save the file\n await sourceFile.save()\n }\n}\n",
|
|
38
40
|
"import { Client, type Integration, type Bot } from '@botpress/client'\nimport { AgentProject } from '../agent-project/agent-project.js'\nimport { auth } from '../auth/index.js'\nimport { IntegrationManager } from './manager.js'\nimport type { ParsedIntegration } from './types.js'\n\nexport type IntegrationInstallStatus = 'enabled' | 'not_installed' | 'disabled'\nexport type IntegrationRegistrationStatus =\n | 'registered'\n | 'registration_pending'\n | 'registration_failed'\n | 'unregistration_pending'\n | 'unregistered'\n | 'unregistration_failed'\n\nexport interface IntegrationCheckResult {\n alias: string\n name: string\n\n // Current state (from bot)\n installStatus: IntegrationInstallStatus\n registrationStatus?: IntegrationRegistrationStatus\n installedVersion?: string\n currentConfigurationType?: string | null\n currentConfiguration?: Record<string, any>\n\n // Desired state (from agent.config.ts dependencies)\n desiredInstallStatus: IntegrationInstallStatus\n desiredVersion: string\n desiredIntegrationId?: string // The integration ID for the desired version\n desiredConfigurationType?: string | null\n desiredConfiguration?: Record<string, any>\n\n // Integration definition\n definition: Integration\n\n // Flags for easy checking\n needsInstall: boolean\n needsUpdate: boolean\n needsRemoval: boolean\n needsConfiguration: boolean\n hasError: boolean\n errorMessage?: string\n}\n\nexport class IntegrationChecker {\n private projectPath: string\n private client?: Client\n\n constructor(projectPath: string) {\n this.projectPath = projectPath\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = await auth.getActiveCredentials()\n const project = await AgentProject.load(this.projectPath)\n\n const workspaceId = project.agentInfo?.workspaceId || credentials.workspaceId\n\n if (!workspaceId) {\n throw new Error('No workspace ID found. Please login with \"adk login\"')\n }\n\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n }\n return this.client\n }\n\n /**\n * Fetch integration definition from Botpress API\n * Try private first, then public\n */\n private async fetchIntegrationDefinition(name: string, version: string): Promise<Integration> {\n const client = await this.getClient()\n\n // Try both private and public in parallel, prefer private\n const [privateResult, publicResult] = await Promise.allSettled([\n client.getIntegrationByName({ name, version }).then(({ integration }) => integration as Integration),\n client.getPublicIntegration({ name, version }).then(({ integration }) => integration as Integration),\n ])\n\n // Prefer private integration\n if (privateResult.status === 'fulfilled') {\n return privateResult.value\n }\n\n if (publicResult.status === 'fulfilled') {\n return publicResult.value\n }\n\n // Both failed\n throw new Error(\n `Failed to fetch integration ${name}@${version}: ${\n privateResult.status === 'rejected' ? privateResult.reason : 'Unknown error'\n }`\n )\n }\n\n /**\n * Check integration status for a specific bot\n */\n async checkIntegrations(botId: string): Promise<IntegrationCheckResult[]> {\n const client = await this.getClient()\n const project = await AgentProject.load(this.projectPath)\n\n // Load desired state from agent.config.ts dependencies\n const integrationManager = new IntegrationManager({\n workspaceId: project.agentInfo?.workspaceId,\n })\n const loadResult = await integrationManager.loadIntegrations(project.dependencies || { integrations: {} })\n\n if (loadResult.errors.length > 0) {\n throw new Error(`Failed to load integrations: ${loadResult.errors.map((e) => e.message).join(', ')}`)\n }\n\n // Get current bot state\n let bot: Bot\n try {\n const response = await client.getBot({ id: botId })\n bot = response.bot\n } catch (error) {\n throw new Error(`Failed to get bot: ${error instanceof Error ? error.message : String(error)}`)\n }\n\n const results: IntegrationCheckResult[] = []\n const installedIntegrations = bot.integrations || {}\n\n // Track which installed integrations we've processed\n const processedIntegrationIds = new Set<string>()\n\n // Process each integration from agent.config.ts dependencies\n for (const parsedIntegration of loadResult.integrations) {\n const result = await this.checkIntegration(parsedIntegration, installedIntegrations, processedIntegrationIds)\n results.push(result)\n }\n\n // Check for extra integrations that are installed but not in dependencies\n for (const [key, installedIntegration] of Object.entries(installedIntegrations)) {\n if (!processedIntegrationIds.has(installedIntegration.id)) {\n // This integration is installed but not in dependencies - should be removed\n // We need to fetch the full integration definition\n try {\n const integrationDef = await this.fetchIntegrationDefinition(\n installedIntegration.name,\n installedIntegration.version\n )\n\n results.push({\n alias: key,\n name: installedIntegration.name,\n installStatus: installedIntegration.enabled ? 'enabled' : 'disabled',\n registrationStatus: installedIntegration.status,\n installedVersion: installedIntegration.version,\n currentConfigurationType: installedIntegration.configurationType,\n currentConfiguration: installedIntegration.configuration,\n desiredInstallStatus: 'not_installed',\n desiredVersion: installedIntegration.version,\n definition: integrationDef,\n needsInstall: false,\n needsUpdate: false,\n needsRemoval: true,\n needsConfiguration: false,\n hasError: false,\n })\n } catch {\n // If we can't fetch the definition, skip this integration\n continue\n }\n }\n }\n\n return results\n }\n\n private async checkIntegration(\n parsedIntegration: ParsedIntegration,\n installedIntegrations: Record<string, any>,\n processedIntegrationIds: Set<string>\n ): Promise<IntegrationCheckResult> {\n const { alias, ref, enabled, configurationType, config, definition } = parsedIntegration\n\n if (!definition) {\n throw new Error(`Integration definition not found for ${alias}`)\n }\n\n // Find matching installed integration by name (regardless of version)\n let installedIntegration: any = null\n\n for (const [_key, installed] of Object.entries(installedIntegrations)) {\n // Compare by name, handling both workspace-scoped and public integrations\n // installed.name from API might be \"intercom\" while ref.fullName is \"sly/intercom\"\n // So we need to check both the full name and just the base name\n const matches =\n installed.name === ref.fullName || // Exact match (e.g., \"sly/intercom\" === \"sly/intercom\")\n installed.name === ref.name // Base name match (e.g., \"intercom\" === \"intercom\")\n\n if (matches) {\n installedIntegration = installed\n processedIntegrationIds.add(installed.id)\n break\n }\n }\n\n // Determine desired install status\n const desiredInstallStatus: IntegrationInstallStatus = enabled === false ? 'disabled' : 'enabled'\n\n // Build result\n const result: IntegrationCheckResult = {\n alias,\n name: ref.fullName,\n installStatus: installedIntegration ? (installedIntegration.enabled ? 'enabled' : 'disabled') : 'not_installed',\n desiredInstallStatus,\n installedVersion: installedIntegration?.version,\n desiredVersion: ref.version,\n desiredIntegrationId: definition.id, // The integration ID for the desired version\n currentConfigurationType: installedIntegration?.configurationType,\n currentConfiguration: installedIntegration?.configuration,\n desiredConfigurationType: configurationType ?? null,\n desiredConfiguration: config,\n definition,\n needsInstall: false,\n needsUpdate: false,\n needsRemoval: false,\n needsConfiguration: false,\n hasError: false,\n }\n\n // Set registration status if installed\n if (installedIntegration) {\n result.registrationStatus = installedIntegration.status\n\n // Check for registration errors\n if (installedIntegration.status === 'registration_failed' && installedIntegration.statusReason) {\n result.hasError = true\n result.errorMessage = installedIntegration.statusReason\n }\n }\n\n // Determine what needs to be done\n if (!installedIntegration) {\n // Not installed - needs installation\n result.needsInstall = true\n if (config) {\n result.needsConfiguration = true\n }\n } else {\n // Already installed - check if update needed\n if (installedIntegration.version !== ref.version) {\n result.needsUpdate = true\n }\n\n // Check if configuration type changed (only if explicitly specified in dependencies)\n if (configurationType !== undefined && configurationType !== installedIntegration.configurationType) {\n result.needsConfiguration = true\n }\n\n // Check if configuration changed (only if explicitly specified in dependencies)\n if (config !== undefined) {\n // Get the schema for the configuration type to know which fields to compare\n const configType = configurationType ?? installedIntegration.configurationType ?? 'default'\n const schema =\n configType === 'default' ? definition.configuration?.schema : definition.configurations?.[configType]?.schema\n\n // Get schema properties (fields that should be compared)\n const schemaProperties = schema?.properties || {}\n const propertyKeys = Object.keys(schemaProperties)\n\n // Filter both configs to only include properties defined in the schema\n const filterConfig = (cfg: Record<string, any>) => {\n const filtered: Record<string, any> = {}\n for (const key of propertyKeys) {\n if (key in cfg) {\n filtered[key] = cfg[key]\n }\n }\n return filtered\n }\n\n const currentConfig = filterConfig(installedIntegration.configuration || {})\n const desiredConfig = filterConfig(config || {})\n\n // Only flag as needing configuration if the schema-defined configs are different\n if (JSON.stringify(currentConfig) !== JSON.stringify(desiredConfig)) {\n result.needsConfiguration = true\n }\n }\n\n // Check if enabled status changed (only if explicitly specified in dependencies)\n if (enabled !== undefined) {\n if (\n (enabled === false && installedIntegration.enabled) ||\n (enabled === true && !installedIntegration.enabled)\n ) {\n result.needsConfiguration = true\n }\n }\n }\n\n return result\n }\n}\n",
|
|
39
|
-
"import { Client } from '@botpress/client'\nimport { auth, Credentials } from '../auth/index.js'\nimport { Dependencies, ValidationError, ValidationErrorCode, ValidationSeverity } from '../agent-project/types.js'\nimport { InterfaceDefinition, ParsedInterface, InterfaceRef, InterfaceValidationResult } from './types.js'\nimport { EnhancedInterfaceCache } from './enhanced-cache.js'\nimport { InterfaceParser } from './parser.js'\nimport { ValidationErrors } from '../agent-project/validation-errors.js'\n\nexport interface InterfaceManagerOptions {\n noCache?: boolean\n workspaceId?: string\n credentials?: Credentials\n}\n\nexport class InterfaceManager {\n private cache: EnhancedInterfaceCache\n private options: InterfaceManagerOptions\n private client?: Client\n\n constructor(options: InterfaceManagerOptions = {}) {\n this.options = options\n this.cache = new EnhancedInterfaceCache(options.noCache || false)\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = this.options.credentials || (await auth.getActiveCredentials())\n\n if (!this.options.workspaceId && !credentials.workspaceId) {\n throw new Error('No workspace ID found in current profile. Please login again with \"adk login\"')\n }\n\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId: this.options.workspaceId || credentials.workspaceId,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n }\n return this.client\n }\n\n async loadInterfaces(dependencies: Dependencies): Promise<{\n interfaces: ParsedInterface[]\n errors: ValidationError[]\n warnings: ValidationError[]\n }> {\n const errors: ValidationError[] = []\n const warnings: ValidationError[] = []\n\n // Parse interfaces from dependencies\n const parseResult = InterfaceParser.parseInterfaces(dependencies)\n const interfaces = parseResult.interfaces\n errors.push(...parseResult.errors)\n\n // Fetch interface definitions in parallel\n const fetchPromises = interfaces.map(async (intf) => {\n try {\n const definition = await this.fetchInterface(intf.ref)\n intf.definition = definition\n\n // Validate\n const validation = this.validateInterface(intf)\n intf.validationResult = validation\n\n if (!validation.valid) {\n validation.errors.forEach((msg) => {\n errors.push(ValidationErrors.warning(msg, 'agent.config.ts'))\n })\n }\n } catch (error) {\n if (error instanceof Error && error.message.includes('version')) {\n errors.push(ValidationErrors.unknownInterface(error.message))\n } else {\n errors.push(\n ValidationErrors.invalidDependenciesSyntax(`Unknown interface '${intf.alias}' (${intf.ref.fullName})`)\n )\n }\n }\n })\n\n await Promise.all(fetchPromises)\n\n return { interfaces, errors, warnings }\n }\n\n /**\n * Fetch interface definition from API or cache\n */\n public async fetchInterface(ref: InterfaceRef): Promise<InterfaceDefinition> {\n // Level 1: version resolution cache (name@version -> id + updatedAt)\n const cachedResolution = await this.cache.getResolution(ref.name, ref.version, ref.workspace)\n if (cachedResolution) {\n const cachedDefinition = await this.cache.getDefinition(cachedResolution.interfaceId, cachedResolution.updatedAt)\n if (cachedDefinition) {\n return cachedDefinition\n }\n }\n\n const client = await this.getClient()\n let interfaceResponse: { interface: InterfaceDefinition } | undefined\n let versionError: Error | null = null\n\n try {\n interfaceResponse = await client.getInterfaceByName({\n name: ref.name,\n version: ref.version,\n })\n } catch {\n try {\n interfaceResponse = await client.getPublicInterface({\n name: ref.name,\n version: ref.version,\n })\n } catch (publicError) {\n versionError = publicError as Error\n }\n }\n\n if (!interfaceResponse && versionError) {\n let latestVersion: string | null = null\n try {\n const latestPrivate = await client.getInterfaceByName({\n name: ref.name,\n version: 'latest',\n })\n latestVersion = latestPrivate.interface.version\n } catch {\n try {\n const latestPublic = await client.getPublicInterface({\n name: ref.name,\n version: 'latest',\n })\n latestVersion = latestPublic.interface.version\n } catch {\n const location = ref.workspace ? `workspace \"${ref.workspace}\"` : 'the official Botpress hub'\n throw new Error(`Interface \"${ref.name}\" does not exist in ${location}`)\n }\n }\n const location = ref.workspace ? `workspace \"${ref.workspace}\"` : 'Botpress'\n throw new Error(\n `Interface \"${ref.name}\" version \"${ref.version}\" not found in ${location}. Latest available version is \"${latestVersion}\"`\n )\n }\n\n const intf = interfaceResponse!.interface\n\n await this.cache.setResolution(ref.name, ref.version, ref.workspace, intf.id, intf.updatedAt)\n await this.cache.setDefinition(intf.id, intf.updatedAt, intf)\n return intf\n }\n\n /**\n * Convenience: parse and fetch from a dependency string like \"name@1.2.3\" or \"workspace/name@latest\"\n */\n public async getByDependencyString(dep: string): Promise<InterfaceDefinition> {\n // Reuse parser regex logic without duplicating\n const match = dep.match(/^(?:([^/]+)\\/)?([^@]+)@(.+)$/)\n if (!match) {\n throw new Error(\n `Invalid interface dependency string: ${dep}. Expected 'name@version' or 'workspace/name@version'`\n )\n }\n const [, workspace, name, version] = match\n return this.fetchInterface({\n workspace: workspace || undefined,\n name: name!,\n version: version!,\n fullName: workspace ? `${workspace}/${name}` : name!,\n })\n }\n\n private validateInterface(intf: ParsedInterface): InterfaceValidationResult {\n const errors: string[] = []\n const warnings: string[] = []\n\n if (!intf.definition) {\n errors.push(`Interface definition not found for ${intf.alias}`)\n return { valid: false, errors, warnings }\n }\n\n return { valid: errors.length === 0, errors, warnings }\n }\n\n async getCacheStats(): Promise<{ count: number; sizeBytes: number }> {\n const stats = await this.cache.getStats()\n return {\n count: stats.resolutions.count + stats.definitions.count,\n sizeBytes: stats.resolutions.sizeBytes + stats.definitions.sizeBytes,\n }\n }\n\n async clearCache(): Promise<void> {\n await this.cache.clear()\n }\n}\n",
|
|
41
|
+
"import { Client } from '@botpress/client'\nimport { auth, Credentials } from '../auth/index.js'\nimport { Dependencies, ValidationError, ValidationErrorCode, ValidationSeverity } from '../agent-project/types.js'\nimport { InterfaceDefinition, ParsedInterface, InterfaceRef, InterfaceValidationResult } from './types.js'\nimport { EnhancedInterfaceCache } from './enhanced-cache.js'\nimport { InterfaceParser } from './parser.js'\nimport { ValidationErrors } from '../agent-project/validation-errors.js'\n\nexport interface InterfaceManagerOptions {\n noCache?: boolean\n workspaceId?: string\n credentials?: Credentials\n}\n\nexport class InterfaceManager {\n private cache: EnhancedInterfaceCache\n private options: InterfaceManagerOptions\n private client?: Client\n\n constructor(options: InterfaceManagerOptions = {}) {\n this.options = options\n this.cache = new EnhancedInterfaceCache(options.noCache || false)\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = this.options.credentials || (await auth.getActiveCredentials())\n\n if (!this.options.workspaceId && !credentials.workspaceId) {\n throw new Error('No workspace ID found in current profile. Please login again with \"adk login\"')\n }\n\n // Use apiUrl from credentials (which may come from agent.json via getAgentCredentials)\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId: this.options.workspaceId || credentials.workspaceId,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n }\n return this.client\n }\n\n async loadInterfaces(dependencies: Dependencies): Promise<{\n interfaces: ParsedInterface[]\n errors: ValidationError[]\n warnings: ValidationError[]\n }> {\n const errors: ValidationError[] = []\n const warnings: ValidationError[] = []\n\n // Parse interfaces from dependencies\n const parseResult = InterfaceParser.parseInterfaces(dependencies)\n const interfaces = parseResult.interfaces\n errors.push(...parseResult.errors)\n\n // Fetch interface definitions in parallel\n const fetchPromises = interfaces.map(async (intf) => {\n try {\n const definition = await this.fetchInterface(intf.ref)\n intf.definition = definition\n\n // Validate\n const validation = this.validateInterface(intf)\n intf.validationResult = validation\n\n if (!validation.valid) {\n validation.errors.forEach((msg) => {\n errors.push(ValidationErrors.warning(msg, 'agent.config.ts'))\n })\n }\n } catch (error) {\n if (error instanceof Error && error.message.includes('version')) {\n errors.push(ValidationErrors.unknownInterface(error.message))\n } else {\n errors.push(\n ValidationErrors.invalidDependenciesSyntax(`Unknown interface '${intf.alias}' (${intf.ref.fullName})`)\n )\n }\n }\n })\n\n await Promise.all(fetchPromises)\n\n return { interfaces, errors, warnings }\n }\n\n /**\n * Fetch interface definition from API or cache\n */\n public async fetchInterface(ref: InterfaceRef): Promise<InterfaceDefinition> {\n // Level 1: version resolution cache (name@version -> id + updatedAt)\n const cachedResolution = await this.cache.getResolution(ref.name, ref.version, ref.workspace)\n if (cachedResolution) {\n const cachedDefinition = await this.cache.getDefinition(cachedResolution.interfaceId, cachedResolution.updatedAt)\n if (cachedDefinition) {\n return cachedDefinition\n }\n }\n\n const client = await this.getClient()\n let interfaceResponse: { interface: InterfaceDefinition } | undefined\n let versionError: Error | null = null\n\n try {\n interfaceResponse = await client.getInterfaceByName({\n name: ref.name,\n version: ref.version,\n })\n } catch {\n try {\n interfaceResponse = await client.getPublicInterface({\n name: ref.name,\n version: ref.version,\n })\n } catch (publicError) {\n versionError = publicError as Error\n }\n }\n\n if (!interfaceResponse && versionError) {\n let latestVersion: string | null = null\n try {\n const latestPrivate = await client.getInterfaceByName({\n name: ref.name,\n version: 'latest',\n })\n latestVersion = latestPrivate.interface.version\n } catch {\n try {\n const latestPublic = await client.getPublicInterface({\n name: ref.name,\n version: 'latest',\n })\n latestVersion = latestPublic.interface.version\n } catch {\n const location = ref.workspace ? `workspace \"${ref.workspace}\"` : 'the official Botpress hub'\n throw new Error(`Interface \"${ref.name}\" does not exist in ${location}`)\n }\n }\n const location = ref.workspace ? `workspace \"${ref.workspace}\"` : 'Botpress'\n throw new Error(\n `Interface \"${ref.name}\" version \"${ref.version}\" not found in ${location}. Latest available version is \"${latestVersion}\"`\n )\n }\n\n const intf = interfaceResponse!.interface\n\n await this.cache.setResolution(ref.name, ref.version, ref.workspace, intf.id, intf.updatedAt)\n await this.cache.setDefinition(intf.id, intf.updatedAt, intf)\n return intf\n }\n\n /**\n * Convenience: parse and fetch from a dependency string like \"name@1.2.3\" or \"workspace/name@latest\"\n */\n public async getByDependencyString(dep: string): Promise<InterfaceDefinition> {\n // Reuse parser regex logic without duplicating\n const match = dep.match(/^(?:([^/]+)\\/)?([^@]+)@(.+)$/)\n if (!match) {\n throw new Error(\n `Invalid interface dependency string: ${dep}. Expected 'name@version' or 'workspace/name@version'`\n )\n }\n const [, workspace, name, version] = match\n return this.fetchInterface({\n workspace: workspace || undefined,\n name: name!,\n version: version!,\n fullName: workspace ? `${workspace}/${name}` : name!,\n })\n }\n\n private validateInterface(intf: ParsedInterface): InterfaceValidationResult {\n const errors: string[] = []\n const warnings: string[] = []\n\n if (!intf.definition) {\n errors.push(`Interface definition not found for ${intf.alias}`)\n return { valid: false, errors, warnings }\n }\n\n return { valid: errors.length === 0, errors, warnings }\n }\n\n async getCacheStats(): Promise<{ count: number; sizeBytes: number }> {\n const stats = await this.cache.getStats()\n return {\n count: stats.resolutions.count + stats.definitions.count,\n sizeBytes: stats.resolutions.sizeBytes + stats.definitions.sizeBytes,\n }\n }\n\n async clearCache(): Promise<void> {\n await this.cache.clear()\n }\n}\n",
|
|
40
42
|
"import fs from 'fs/promises'\nimport path from 'path'\nimport os from 'os'\nimport { InterfaceDefinition } from './types.js'\n\ninterface VersionResolution {\n interfaceId: string\n updatedAt: string\n cachedAt: string\n}\n\ninterface CachedDefinition {\n definition: InterfaceDefinition\n cachedAt: string\n}\n\nexport class EnhancedInterfaceCache {\n private cacheDir: string\n private resolutionsDir: string\n private definitionsDir: string\n private noCache: boolean\n\n constructor(noCache: boolean = false) {\n this.noCache = noCache\n this.cacheDir = path.join(os.homedir(), '.adk', 'cache', 'interfaces')\n this.resolutionsDir = path.join(this.cacheDir, 'resolutions')\n this.definitionsDir = path.join(this.cacheDir, 'definitions')\n }\n\n private async ensureCacheDirs(): Promise<void> {\n await fs.mkdir(this.resolutionsDir, { recursive: true })\n await fs.mkdir(this.definitionsDir, { recursive: true })\n }\n\n async getResolution(name: string, version: string, workspace?: string): Promise<VersionResolution | null> {\n if (this.noCache) return null\n try {\n const key = this.getResolutionKey(name, version, workspace)\n const cachePath = path.join(this.resolutionsDir, `${key}.json`)\n const data = await fs.readFile(cachePath, 'utf-8')\n const resolution: VersionResolution = JSON.parse(data)\n const cachedAt = new Date(resolution.cachedAt)\n const ageMinutes = (Date.now() - cachedAt.getTime()) / (1000 * 60)\n if (ageMinutes > 5) return null\n return resolution\n } catch {\n return null\n }\n }\n\n async setResolution(\n name: string,\n version: string,\n workspace: string | undefined,\n interfaceId: string,\n updatedAt: string\n ): Promise<void> {\n await this.ensureCacheDirs()\n const key = this.getResolutionKey(name, version, workspace)\n const cachePath = path.join(this.resolutionsDir, `${key}.json`)\n const resolution: VersionResolution = {\n interfaceId,\n updatedAt,\n cachedAt: new Date().toISOString(),\n }\n await fs.writeFile(cachePath, JSON.stringify(resolution, null, 2))\n }\n\n async getDefinition(interfaceId: string, updatedAt: string): Promise<InterfaceDefinition | null> {\n if (this.noCache) return null\n try {\n const key = this.getDefinitionKey(interfaceId, updatedAt)\n const cachePath = path.join(this.definitionsDir, `${key}.json`)\n const data = await fs.readFile(cachePath, 'utf-8')\n const cached: CachedDefinition = JSON.parse(data)\n return cached.definition\n } catch {\n return null\n }\n }\n\n async setDefinition(interfaceId: string, updatedAt: string, definition: InterfaceDefinition): Promise<void> {\n await this.ensureCacheDirs()\n const key = this.getDefinitionKey(interfaceId, updatedAt)\n const cachePath = path.join(this.definitionsDir, `${key}.json`)\n const cached: CachedDefinition = {\n definition,\n cachedAt: new Date().toISOString(),\n }\n await fs.writeFile(cachePath, JSON.stringify(cached, null, 2))\n }\n\n async clear(): Promise<void> {\n try {\n const resolutionFiles = await fs.readdir(this.resolutionsDir)\n await Promise.all(resolutionFiles.map((f) => fs.unlink(path.join(this.resolutionsDir, f))))\n const definitionFiles = await fs.readdir(this.definitionsDir)\n await Promise.all(definitionFiles.map((f) => fs.unlink(path.join(this.definitionsDir, f))))\n } catch {\n // ignore\n }\n }\n\n async getStats(): Promise<{\n resolutions: { count: number; sizeBytes: number }\n definitions: { count: number; sizeBytes: number }\n }> {\n const getDirectoryStats = async (dir: string) => {\n try {\n const files = await fs.readdir(dir)\n let totalSize = 0\n for (const file of files) {\n const stats = await fs.stat(path.join(dir, file))\n totalSize += stats.size\n }\n return { count: files.length, sizeBytes: totalSize }\n } catch {\n return { count: 0, sizeBytes: 0 }\n }\n }\n const [resolutions, definitions] = await Promise.all([\n getDirectoryStats(this.resolutionsDir),\n getDirectoryStats(this.definitionsDir),\n ])\n return { resolutions, definitions }\n }\n\n private getResolutionKey(name: string, version: string, workspace?: string): string {\n const prefix = workspace ? `${workspace}_` : ''\n const key = `${prefix}${name}_${version}`\n return key.replace(/[^a-zA-Z0-9_-]/g, '_')\n }\n\n private getDefinitionKey(interfaceId: string, updatedAt: string): string {\n const key = `${interfaceId}_${updatedAt}`\n return key.replace(/[^a-zA-Z0-9_-]/g, '_')\n }\n}\n",
|
|
41
|
-
"/**\n * Built-in interfaces that are always included in ADK projects\n * These are constants and cannot be modified by users\n */\nexport const BUILTIN_INTERFACES = {\n 'typing-indicator': 'typing-indicator@0.0.3',\n llm: 'llm@9.0.0',\n listable: 'listable@0.0.2',\n} as const\n",
|
|
42
43
|
"import { Dependencies, ValidationError } from '../agent-project/types.js'\nimport { ValidationErrors } from '../agent-project/validation-errors.js'\nimport { InterfaceRef, ParsedInterface } from './types.js'\nimport { BUILTIN_INTERFACES } from '../constants.js'\n\nexport class InterfaceParser {\n /**\n * Parse an interface version string into its components\n * Examples:\n * - \"translator@1.2.0\" -> { name: 'translator', version: '1.2.0', fullName: 'translator' }\n * - \"myworkspace/translator@latest\" -> { workspace: 'myworkspace', name: 'translator', version: 'latest', fullName: 'myworkspace/translator' }\n */\n static parseInterfaceRef(versionString: string): InterfaceRef {\n // Match pattern: [workspace/]name@version\n const match = versionString.match(/^(?:([^/]+)\\/)?([^@]+)@(.+)$/)\n\n if (!match) {\n throw new Error(\n `Invalid interface version format: ${versionString}. Expected format: 'name@version' or 'workspace/name@version'`\n )\n }\n\n const [, workspace, name, version] = match\n\n return {\n workspace: workspace || undefined,\n name: name!,\n version: version!,\n fullName: workspace ? `${workspace}/${name}` : name!,\n }\n }\n\n /**\n * Get built-in interfaces (hard-coded constants)\n * The dependencies parameter is kept for API compatibility but not used\n */\n static parseInterfaces(_dependencies: Dependencies): {\n interfaces: ParsedInterface[]\n errors: ValidationError[]\n } {\n const interfaces: ParsedInterface[] = []\n const errors: ValidationError[] = []\n\n for (const [alias, versionString] of Object.entries(BUILTIN_INTERFACES)) {\n try {\n // Parse the interface reference\n const ref = this.parseInterfaceRef(versionString)\n\n // Validate version format\n if (!this.isValidVersion(ref.version)) {\n errors.push(ValidationErrors.invalidVersionFormat(alias, ref.version))\n }\n\n interfaces.push({ alias, ref, config: undefined })\n } catch (error) {\n errors.push(\n ValidationErrors.invalidDependenciesSyntax(\n `Invalid interface '${alias}': ${error instanceof Error ? error.message : String(error)}`\n )\n )\n }\n }\n\n return { interfaces, errors }\n }\n\n /**\n * Validate version format (must be exact semver or \"latest\")\n */\n private static isValidVersion(version: string): boolean {\n if (version === 'latest') return true\n const semverPattern = /^(\\d+)\\.(\\d+)\\.(\\d+)(-[\\w.]+)?(\\+[\\w.]+)?$/\n return semverPattern.test(version)\n }\n}\n",
|
|
43
44
|
"import { InterfaceManager } from './manager.js'\nimport { BUILTIN_INTERFACES } from '../constants.js'\n\nexport interface AddInterfaceResult {\n success: boolean\n alias: string\n name: string\n newVersion?: string\n previousVersion?: string\n message?: string\n}\n\nexport interface InterfaceOperationsOptions {\n projectPath: string\n}\n\nexport class InterfaceOperations {\n private projectPath: string\n private manager: InterfaceManager\n\n constructor(options: InterfaceOperationsOptions) {\n this.projectPath = options.projectPath\n this.manager = new InterfaceManager()\n }\n\n async addInterface(_options: {\n name: string // may include workspace prefix (e.g., \"ws/name\")\n version?: string // optional, defaults to latest\n alias?: string\n }): Promise<AddInterfaceResult> {\n throw new Error(\n 'Interfaces are built-in constants and cannot be added. The following interfaces are always available: ' +\n Object.keys(BUILTIN_INTERFACES).join(', ')\n )\n }\n\n async updateInterface(_options: {\n alias: string\n name: string // may include workspace prefix\n version: string // desired version (or 'latest')\n previousVersion: string\n }): Promise<AddInterfaceResult> {\n throw new Error(\n 'Interfaces are built-in constants and cannot be updated. The following interfaces are always available: ' +\n Object.keys(BUILTIN_INTERFACES).join(', ')\n )\n }\n\n async removeInterface(_alias: string): Promise<boolean> {\n throw new Error(\n 'Interfaces are built-in constants and cannot be removed. The following interfaces are always available: ' +\n Object.keys(BUILTIN_INTERFACES).join(', ')\n )\n }\n\n async listInterfaces(): Promise<\n Array<{\n alias: string\n name: string\n version: string\n }>\n > {\n return Object.entries(BUILTIN_INTERFACES).map(([alias, versionString]) => {\n const [name, version] = versionString.split('@')\n return { alias, name: name || '', version: version || 'latest' }\n })\n }\n\n /**\n * Get latest version info for an interface by name\n */\n async getInterfaceLatestVersion(name: string): Promise<{ name: string; latestVersion: string }> {\n // Resolve latest via manager and return version\n const latest = await this.manager.getByDependencyString(`${name}@latest`)\n return { name, latestVersion: latest.version }\n }\n\n /**\n * Upgrade interface(s) to latest version\n */\n async upgradeInterface(_alias?: string): Promise<{ upgraded: string[]; failed: string[] }> {\n throw new Error(\n 'Interfaces are built-in constants and cannot be upgraded. The following interfaces are always available: ' +\n Object.keys(BUILTIN_INTERFACES).join(', ')\n )\n }\n}\n",
|
|
44
45
|
"import { Primitives, Errors } from '@botpress/runtime/internal'\nimport { ValidationError, ValidationErrorCode, ValidationSeverity } from './types.js'\n\nexport interface ExpandExportsOptions {\n absolutePath: string\n relPath: string\n filename: string\n onWarning: (warning: ValidationError) => void\n}\n\n/**\n * Expands the exports of a module to include all properties,\n * including those on the default export if it is an object or array.\n * For example, exports of type `{ default: { a: 1, b: 2 } }`\n * will be expanded to `{ \"default.a\": 1, \"default.b\": 2 }`.\n *\n * @param options - Options for expanding exports\n * @returns A record of expanded exports\n */\nexport async function expandExports(options: ExpandExportsOptions): Promise<Record<string, unknown>> {\n const { absolutePath, relPath, filename, onWarning } = options\n let result: Record<string, unknown> = {}\n\n try {\n // Bust module cache by adding timestamp query parameter\n // This ensures we always get fresh imports on reload\n const importPath = `${absolutePath}?t=${Date.now()}`\n const exports = await import(importPath)\n\n if (typeof exports === 'object' && exports !== null) {\n for (const key of Object.keys(exports)) {\n try {\n result[key] = exports[key]\n } catch (error) {\n // Skip exports that throw on access\n if (Errors.isAdkError(error)) {\n onWarning({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_PRIMITIVE_DEFINITION,\n severity: ValidationSeverity.WARNING,\n message: error.message,\n file: relPath,\n hint: `Invalid primitive instantiation in ${filename} -> ${key}`,\n })\n }\n }\n }\n\n // Handle default exports\n if (typeof exports.default === 'object' && exports.default !== null) {\n try {\n const definition = Primitives.Definitions.getDefinition(exports.default)\n if (!definition) {\n // If not a primitive, expand the default export\n for (const key of Object.keys(exports.default)) {\n try {\n result[`default.${key}`] = exports.default[key]\n } catch (error) {\n if (Errors.isAdkError(error)) {\n onWarning({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_PRIMITIVE_DEFINITION,\n severity: ValidationSeverity.WARNING,\n message: error.message,\n file: relPath,\n hint: `Invalid primitive instantiation in ${filename} -> default.${key}`,\n })\n }\n }\n }\n }\n } catch (error) {\n // If accessing default throws, check if it's an ADK error\n if (Errors.isAdkError(error)) {\n onWarning({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_PRIMITIVE_DEFINITION,\n severity: ValidationSeverity.WARNING,\n message: error.message,\n file: relPath,\n hint: `Invalid primitive instantiation in ${filename} -> default`,\n })\n }\n }\n }\n }\n\n return result\n } catch (importError: any) {\n // Check if it's an ADK error thrown during primitive instantiation\n if (Errors.isAdkError(importError)) {\n onWarning({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_PRIMITIVE_DEFINITION,\n severity: ValidationSeverity.WARNING,\n message: importError.message,\n file: relPath,\n hint: `Invalid primitive instantiation in ${filename}`,\n })\n return {}\n }\n\n // Check error cause chain for ADK errors (handles module initialization errors)\n let currentError = importError\n while (currentError) {\n if (Errors.isAdkError(currentError)) {\n onWarning({\n $type: 'ValidationError',\n code: ValidationErrorCode.INVALID_PRIMITIVE_DEFINITION,\n severity: ValidationSeverity.WARNING,\n message: currentError.message,\n file: relPath,\n hint: `Invalid primitive instantiation in ${filename}`,\n })\n return {}\n }\n currentError = currentError.cause\n }\n\n // Re-throw other import errors\n throw importError\n }\n}\n",
|
|
45
46
|
"import { watch, FSWatcher } from 'fs'\nimport { EventEmitter } from 'events'\nimport path from 'path'\nimport { FileChangeEvent, FileChangeType } from './types.js'\n\nexport interface FileWatcherOptions {\n ignore?: string[]\n debounce?: number\n}\n\nexport class FileWatcher extends EventEmitter {\n private watcher?: FSWatcher\n private debounceTimers: Map<string, ReturnType<typeof setTimeout>> = new Map()\n private ignoredPatterns: RegExp[]\n private debounceMs: number\n\n constructor(\n private basePath: string,\n options: FileWatcherOptions = {}\n ) {\n super()\n this.ignoredPatterns = (options.ignore || []).map((pattern) => {\n // Convert glob-like patterns to regex\n const regexPattern = pattern.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*').replace(/\\?/g, '.')\n return new RegExp(`^${regexPattern}$`)\n })\n this.debounceMs = options.debounce || 100\n }\n\n start(): void {\n if (this.watcher) {\n throw new Error('Watcher already started')\n }\n\n this.watcher = watch(this.basePath, { recursive: true }, (eventType, filename) => {\n if (!filename) return\n\n const fullPath = path.join(this.basePath, filename)\n const relativePath = filename\n\n // Check if file should be ignored\n if (this.shouldIgnore(relativePath)) {\n return\n }\n\n // Debounce file changes\n const existingTimer = this.debounceTimers.get(fullPath)\n if (existingTimer) {\n clearTimeout(existingTimer)\n }\n\n const timer = setTimeout(() => {\n this.debounceTimers.delete(fullPath)\n\n let changeType: FileChangeType\n if (eventType === 'rename') {\n // In many cases, 'rename' means the file was added or deleted\n // We'd need to check if the file exists to determine which\n changeType = FileChangeType.Modified\n } else {\n changeType = FileChangeType.Modified\n }\n\n const event: FileChangeEvent = {\n type: changeType,\n path: fullPath,\n relativePath,\n }\n\n this.emit('change', event)\n }, this.debounceMs)\n\n this.debounceTimers.set(fullPath, timer)\n })\n\n this.watcher.on('error', (error) => {\n this.emit('error', error)\n })\n }\n\n stop(): void {\n if (!this.watcher) {\n return\n }\n\n // Clear all pending timers\n for (const timer of this.debounceTimers.values()) {\n clearTimeout(timer)\n }\n this.debounceTimers.clear()\n\n // Close the watcher\n this.watcher.close()\n this.watcher = undefined\n }\n\n private shouldIgnore(relativePath: string): boolean {\n // Always ignore some common patterns\n const defaultIgnored = [/^\\.git\\//, /^node_modules\\//, /^dist\\//, /^\\.adk\\//, /\\.DS_Store$/]\n\n const allPatterns = [...defaultIgnored, ...this.ignoredPatterns]\n return allPatterns.some((pattern) => pattern.test(relativePath))\n }\n}\n",
|
|
47
|
+
"export { AgentProject } from './agent-project.js'\nexport type { AgentProjectOptions } from './agent-project.js'\nexport { FileWatcher } from './file-watcher.js'\nexport { ValidationErrors } from './validation-errors.js'\nexport { resolveAgent, hasAgentJson } from './agent-resolver.js'\nexport type { ResolveAgentOptions } from './agent-resolver.js'\nexport * from './types.js'\n",
|
|
46
48
|
"import * as fs from 'fs'\nimport * as path from 'path'\nimport { formatCode } from '../generators/utils.js'\nimport { Dependencies } from '../agent-project/types.js'\n\n// This constant is injected at build time by esbuild's define\ndeclare const __RUNTIME_VERSION__: string\n\nexport class AgentProjectGenerator {\n private projectPath: string\n private projectName: string\n private packageManager: string\n private template: string\n\n constructor(projectPath: string, packageManager: string = 'bun', template: string = 'blank') {\n this.projectPath = path.resolve(projectPath)\n this.projectName = path.basename(this.projectPath)\n this.packageManager = packageManager\n this.template = template\n }\n\n async generate(): Promise<void> {\n this.ensureEmptyDirectory()\n this.createPackageJson()\n await this.createAgentConfig()\n this.createTsConfig()\n this.createAgentJson()\n this.createGitIgnore()\n await this.createReadme()\n await this.createSourceStructure()\n }\n\n private ensureEmptyDirectory(): void {\n // Ensure directory exists\n if (!fs.existsSync(this.projectPath)) {\n fs.mkdirSync(this.projectPath, { recursive: true })\n }\n\n // Check if directory is empty\n const files = fs.readdirSync(this.projectPath)\n if (files.length > 0) {\n throw new Error(`Directory ${this.projectPath} is not empty. Please use an empty directory.`)\n }\n }\n\n private createPackageJson(): void {\n const packageJson = {\n name: this.projectName,\n version: '1.0.0',\n description: `A Botpress Agent built with the ADK`,\n type: 'module',\n packageManager: this.packageManager === 'npm' ? undefined : `${this.packageManager}@latest`,\n scripts: {\n dev: 'adk dev',\n build: 'adk build',\n deploy: 'adk deploy',\n },\n dependencies: {\n '@botpress/runtime': `^${__RUNTIME_VERSION__}`,\n },\n devDependencies: {\n typescript: '^5.9.3',\n },\n }\n\n // Remove packageManager field if undefined (for npm)\n if (packageJson.packageManager === undefined) {\n delete (packageJson as any).packageManager\n }\n\n this.writeJsonFile('package.json', packageJson)\n }\n\n private getDefaultDependencies(): Dependencies {\n const dependencies: Dependencies = {\n integrations: {},\n }\n\n // Add default integrations for hello-world template\n if (this.template === 'hello-world') {\n dependencies.integrations = {\n chat: {\n version: 'chat@latest',\n enabled: true,\n },\n webchat: {\n version: 'webchat@latest',\n enabled: true,\n },\n }\n }\n\n return dependencies\n }\n\n private async createAgentConfig(): Promise<void> {\n const dependencies = this.getDefaultDependencies()\n const integrationsJson = JSON.stringify(dependencies.integrations, null, 4).replace(/\\n/g, '\\n ')\n\n const defaultModels =\n this.template === 'hello-world'\n ? `\\n defaultModels: {\n autonomous: \"cerebras:gpt-oss-120b\",\n zai: \"cerebras:gpt-oss-120b\",\n },\\n`\n : ''\n\n const agentConfig = `import { z, defineConfig } from '@botpress/runtime';\n\nexport default defineConfig({\n name: '${this.projectName}',\n description: 'An AI agent built with Botpress ADK',\n${defaultModels}\n bot: {\n state: z.object({}),\n },\n\n user: {\n state: z.object({}),\n },\n\n dependencies: {\n integrations: ${integrationsJson},\n },\n});\n`\n\n await this.writeFormattedFile('agent.config.ts', agentConfig)\n }\n\n private createTsConfig(): void {\n const tsConfig = {\n compilerOptions: {\n target: 'ES2022',\n module: 'ES2022',\n moduleResolution: 'Bundler',\n lib: ['ES2022'],\n outDir: './dist',\n rootDir: '.',\n strict: true,\n esModuleInterop: true,\n allowSyntheticDefaultImports: true,\n skipLibCheck: true,\n forceConsistentCasingInFileNames: true,\n moduleDetection: 'force',\n resolveJsonModule: true,\n paths: {\n '@botpress/runtime/_types/*': ['./.adk/*-types'],\n },\n },\n include: ['src/**/*', '.adk/**/*'],\n exclude: ['node_modules', 'dist'],\n }\n\n this.writeJsonFile('tsconfig.json', tsConfig)\n }\n\n private createAgentJson(): void {\n const agentJson = {}\n this.writeJsonFile('agent.json', agentJson)\n }\n\n private createGitIgnore(): void {\n const gitIgnore = `# Dependencies\nnode_modules/\n.pnpm-store/\n\n# Build outputs\ndist/\n.adk/\n\n# Environment files\n.env\n.env.local\n.env.production\n\n# IDE files\n.vscode/\n.idea/\n*.swp\n*.swo\n\n# OS files\n.DS_Store\nThumbs.db\n\n# Logs\n*.log\nlogs/\n\n# Runtime files\n*.pid\n*.seed\n*.pid.lock\n`\n\n this.writeFile('.gitignore', gitIgnore)\n }\n\n private async createReadme(): Promise<void> {\n const installCommand =\n this.packageManager === 'npm'\n ? 'npm install'\n : this.packageManager === 'yarn'\n ? 'yarn install'\n : `${this.packageManager} install`\n\n const readme = `# ${this.projectName}\n\nA Botpress Agent built with the ADK.\n\n## Getting Started\n\n1. Install dependencies:\n \\`\\`\\`bash\n ${installCommand}\n \\`\\`\\`\n\n2. Start development server:\n \\`\\`\\`bash\n adk dev\n \\`\\`\\`\n\n3. Deploy your agent:\n \\`\\`\\`bash\n adk deploy\n \\`\\`\\`\n\n## Project Structure\n\n- \\`src/actions/\\` - Define callable functions\n- \\`src/workflows/\\` - Define long-running processes\n- \\`src/conversations/\\` - Define conversation handlers\n- \\`src/tables/\\` - Define data storage schemas\n- \\`src/triggers/\\` - Define event subscriptions\n- \\`src/knowledge/\\` - Add knowledge base files\n\n## Learn More\n\n- [ADK Documentation](https://botpress.com/docs/adk)\n- [Botpress Platform](https://botpress.com)\n`\n\n await this.writeFormattedFile('README.md', readme)\n }\n\n private async createSourceStructure(): Promise<void> {\n const srcPath = path.join(this.projectPath, 'src')\n fs.mkdirSync(srcPath)\n\n const subdirectories = ['actions', 'conversations', 'knowledge', 'tables', 'triggers', 'workflows']\n\n for (const subdir of subdirectories) {\n const subdirPath = path.join(srcPath, subdir)\n fs.mkdirSync(subdirPath)\n\n // Special handling for conversations directory in hello-world template\n if (subdir === 'conversations' && this.template === 'hello-world') {\n const conversationContent = `import { Conversation } from \"@botpress/runtime\";\n\nexport default new Conversation({\n channel: \"*\",\n handler: async ({ execute }) => {\n await execute({\n instructions: \\`You are a helpful AI assistant built with Botpress ADK. You can assist users with their questions and tasks.\\`,\n });\n },\n});\n`\n await this.writeFormattedFile(path.join('src', subdir, 'index.ts'), conversationContent)\n } else {\n const placeholderContent = `/**\n * TODO: Add your ${subdir} here\n *\n * This is a placeholder file to initialize the ${subdir} directory.\n * You can delete this file once you add your own ${subdir}.\n */\n\nexport default {};\n`\n\n await this.writeFormattedFile(path.join('src', subdir, 'index.ts'), placeholderContent)\n }\n }\n }\n\n private writeFile(relativePath: string, content: string): void {\n const filePath = path.join(this.projectPath, relativePath)\n fs.writeFileSync(filePath, content)\n }\n\n private async writeFormattedFile(relativePath: string, content: string): Promise<void> {\n const formatted = await formatCode(content, relativePath)\n this.writeFile(relativePath, formatted)\n }\n\n private writeJsonFile(relativePath: string, data: any): void {\n this.writeFile(relativePath, JSON.stringify(data, null, 2) + '\\n')\n }\n}\n",
|
|
47
49
|
"import { createFile } from '../utils/fs.js'\nimport { defaultAdkFolder } from '../const.js'\nimport path from 'path'\nimport { AssetsManager, AssetsCacheManager } from '../assets/index.js'\n\nexport async function generateAssetsTypes(projectPath: string): Promise<void> {\n const assetsManager = new AssetsManager({ projectPath })\n\n // Generate TypeScript types for assets\n const typesCode = await assetsManager.generateTypes()\n\n // Write to the types directory\n const typesPath = path.join(projectPath, defaultAdkFolder, 'assets.d.ts')\n await createFile(typesPath, typesCode)\n}\n\nexport async function generateAssetsRuntime(projectPath: string, botId?: string, workspaceId?: string): Promise<void> {\n const assetsManager = new AssetsManager({ projectPath, botId, workspaceId })\n\n // Get enriched assets with remote metadata when available\n const enrichedAssets = await assetsManager.getEnrichedLocalAssets()\n\n // Generate hardcoded asset metadata\n const assetsMap: Record<string, any> = {}\n const localHashesMap: Record<string, string> = {}\n\n // Read cache to get local hashes\n const cacheManager = new AssetsCacheManager(projectPath)\n const cache = await cacheManager.load()\n\n for (const asset of enrichedAssets) {\n assetsMap[asset.path] = asset\n const cacheEntry = cache.entries[asset.path]\n if (cacheEntry) {\n localHashesMap[asset.path] = cacheEntry.localHash\n }\n }\n\n // Generate minimal runtime code that only exports metadata\n const runtimeCode = `\n// Auto-generated assets metadata\nimport { Asset, initAssets } from '@botpress/runtime/runtime';\n\n// Static asset metadata (populated at build time)\nexport const assetsMetadata: Record<string, Asset> = ${JSON.stringify(assetsMap, null, 2)};\n\n// Local hashes from cache\nexport const localHashes: Record<string, string> = ${JSON.stringify(localHashesMap, null, 2)};\n\n// Initialize the assets runtime with metadata and local hashes\n// The global object should be passed by the agent initialization code\nexport function initializeAssets(globalObj: any = globalThis) {\n initAssets(globalObj, assetsMetadata, localHashes);\n}\n\n// Auto-initialize if running in a supported environment\nif (typeof globalThis !== 'undefined') {\n initializeAssets(globalThis);\n} else if (typeof global !== 'undefined') {\n initializeAssets(global);\n}\n`\n\n const runtimePath = path.join(projectPath, defaultAdkFolder, 'assets-runtime.ts')\n await createFile(runtimePath, runtimeCode)\n}\n\nexport async function initAssets(projectPath: string, botId?: string, workspaceId?: string): Promise<void> {\n const assetsManager = new AssetsManager({ projectPath, botId, workspaceId })\n\n if (await assetsManager.hasAssetsDirectory()) {\n await generateAssetsTypes(projectPath)\n await generateAssetsRuntime(projectPath, botId, workspaceId)\n } else {\n // Generate empty types if no assets directory exists\n const emptyTypesCode = `// No assets directory found\nimport { Asset } from '@botpress/runtime';\n\nexport type AssetPaths = never;\n\nexport interface AssetPathMap {}\n\n// Runtime asset access\ndeclare global {\n const assets: {\n get<T extends AssetPaths>(path: T): Asset;\n list(): Asset[];\n getSyncStatus(): { \n synced: boolean; \n neverSynced: string[]; \n stale: string[];\n upToDate: string[];\n };\n };\n}\n`\n\n const typesPath = path.join(projectPath, defaultAdkFolder, 'assets.d.ts')\n await createFile(typesPath, emptyTypesCode)\n\n // Generate empty runtime\n const emptyRuntimeCode = `\n// No assets available\nimport { Asset, initAssets } from '@botpress/runtime';\n\n// Empty asset metadata\nexport const assetsMetadata: Record<string, Asset> = {};\n\n// Initialize with empty metadata\nexport function initializeAssets(globalObj: any = globalThis) {\n initAssets(globalObj, assetsMetadata);\n}\n\n// Auto-initialize if running in a supported environment\nif (typeof globalThis !== 'undefined') {\n initializeAssets(globalThis);\n} else if (typeof global !== 'undefined') {\n initializeAssets(global);\n}\n`\n\n const runtimePath = path.join(projectPath, defaultAdkFolder, 'assets-runtime.ts')\n await createFile(runtimePath, emptyRuntimeCode)\n }\n}\n",
|
|
48
50
|
"import { transforms } from '@botpress/sdk'\nimport crypto from 'crypto'\nimport path from 'path'\n\nimport { ParsedIntegration } from '../integrations/types.js'\nimport { pascalCase, snakeCase } from '../utils/strings.js'\nimport { ADK_VERSION, relative, toMultilineComment, formatCode } from './utils.js'\nimport { getIntegrationAlias } from '../utils/ids.js'\n\nconst getIntegrationHash = (integration: ParsedIntegration): string => {\n return crypto\n .createHash('sha256')\n .update(\n `${integration.alias}|${integration.definition?.id}|${integration.definition?.version}|${integration.definition?.updatedAt}`\n )\n .digest('hex')\n}\n\nconst getPascalAlias = (integration: ParsedIntegration) => pascalCase(getIntegrationAlias(integration.alias))\n\nconst getIntegrationNames = (integration: ParsedIntegration) => ({\n typings: {\n index: `Integration_All_${getPascalAlias(integration)}`,\n actions: `Integration_Actions_${getPascalAlias(integration)}`,\n channels: `Integration_Channels_${getPascalAlias(integration)}`,\n events: `Integration_Events_${getPascalAlias(integration)}`,\n users: `Integration_Users_${getPascalAlias(integration)}`,\n config: `Integration_Config_${getPascalAlias(integration)}`,\n },\n paths: {\n index: path.join(snakeCase(getPascalAlias(integration)), `index.ts`),\n actions: path.join(snakeCase(getPascalAlias(integration)), `actions.ts`),\n channels: path.join(snakeCase(getPascalAlias(integration)), `channels.ts`),\n events: path.join(snakeCase(getPascalAlias(integration)), `events.ts`),\n users: path.join(snakeCase(getPascalAlias(integration)), `users.ts`),\n config: path.join(snakeCase(getPascalAlias(integration)), `config.ts`),\n },\n})\n\nexport async function generateIntegrationTypes(integration: ParsedIntegration): Promise<{\n names: ReturnType<typeof getIntegrationNames>\n files: Record<string, string>\n}> {\n const names = getIntegrationNames(integration)\n const hash = getIntegrationHash(integration)\n\n const rel = (to: string): string => {\n const from = names.paths.index\n return relative(from, to).replace(/\\.ts$/i, '')\n }\n\n let tIndex = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // ADK Version: ${ADK_VERSION}\n // Integration: ${integration.definition?.name}\n // Version: ${integration.definition?.version}\n // File: ${names.paths.index}\n // Hash: ${hash}\n // Updated at: ${integration.definition?.updatedAt}\n ////////////////////////////////////////////////////////\n\n import { Integration_Actions_${getPascalAlias(integration)} } from \"${rel(names.paths.actions)}\";\n import { Integration_Channels_${getPascalAlias(integration)} } from \"${rel(names.paths.channels)}\";\n import { Integration_Events_${getPascalAlias(integration)} } from \"${rel(names.paths.events)}\";\n import { Integration_Users_${getPascalAlias(integration)} } from \"${rel(names.paths.users)}\";\n import { Integration_Config_${getPascalAlias(integration)} } from \"${rel(names.paths.config)}\";\n\n export * from \"${rel(names.paths.actions)}\";\n export * from \"${rel(names.paths.channels)}\";\n export * from \"${rel(names.paths.events)}\";\n export * from \"${rel(names.paths.users)}\";\n export * from \"${rel(names.paths.config)}\";\n\n export type Integration_All_${getPascalAlias(integration)} = {\n actions: Integration_Actions_${getPascalAlias(integration)};\n channels: Integration_Channels_${getPascalAlias(integration)};\n events: Integration_Events_${getPascalAlias(integration)};\n users: Integration_Users_${getPascalAlias(integration)};\n config: Integration_Config_${getPascalAlias(integration)};\n };\n `\n\n let tActions = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // ADK Version: ${ADK_VERSION}\n // Integration: ${integration.definition?.name}\n // Version: ${integration.definition?.version}\n // File: ${names.paths.actions}\n // Hash: ${hash}\n // Updated at: ${integration.definition?.updatedAt}\n ////////////////////////////////////////////////////////\n\n export type Integration_Actions_${getPascalAlias(integration)} = {`\n\n for (const [name, action] of Object.entries(integration.definition!.actions)) {\n const input = transforms.fromJSONSchema(action.input.schema).toTypescriptType()\n const output = transforms.fromJSONSchema(action.output.schema).toTypescriptType()\n\n tActions += `\n ${toMultilineComment(`Title: ${action.title || name}\\nDescription: ${action.description || 'No description'}`)}\n \"${name}\": {\n input: ${input};\n output: ${output};\n },\\n`\n }\n\n tActions += `};`\n\n let tChannels = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // ADK Version: ${ADK_VERSION}\n // Integration: ${integration.definition?.name}\n // Version: ${integration.definition?.version}\n // File: ${names.paths.channels}\n // Hash: ${hash}\n // Updated at: ${integration.definition?.updatedAt}\n ////////////////////////////////////////////////////////\n\n export type Integration_Channels_${getPascalAlias(integration)} = {`\n\n for (const [channelName, channelDef] of Object.entries(integration.definition?.channels || {})) {\n const convoTagsRecord =\n '{' +\n Object.keys(channelDef.conversation?.tags || {}).reduce((acc, t) => {\n const tag = channelDef.conversation.tags[t]!\n const comment = toMultilineComment(`Title: ${tag?.title}\\nDescription: ${tag.description}`)\n // Use ref.fullName to preserve workspace prefix (e.g., \"sly/intercom\")\n acc += `${comment}\\n[\"${integration.ref.fullName}:${t}\"]?: string,\\n`\n return acc\n }, '') +\n '}'\n\n const msgTagsUnion =\n '{' +\n Object.keys(channelDef.message?.tags || {}).reduce((acc, t) => {\n const tag = channelDef.message.tags[t]!\n const comment = toMultilineComment(`Title: ${tag?.title}\\nDescription: ${tag.description}`)\n // Use ref.fullName to preserve workspace prefix (e.g., \"sly/intercom\")\n acc += `${comment}\\n[\"${integration.ref.fullName}:${t}\"]?: string,\\n`\n return acc\n }, '') +\n '}'\n\n let messagesBlock = ''\n for (const [messageName, messageDef] of Object.entries(channelDef.messages || {})) {\n const messageType = transforms.fromJSONSchema(messageDef.schema).toTypescriptType()\n messagesBlock += `\\n\"${messageName}\": ${messageType};\\n`\n }\n\n tChannels += `\n ${toMultilineComment(\n `Title: ${channelDef.title || channelName}\\nDescription: ${channelDef.description || 'No description'}`\n )}\n \"${channelName}\": {\n conversation: {\n tags: ${convoTagsRecord};\n };\n message: {\n tags: ${msgTagsUnion};\n };\n messages: {${messagesBlock}\n };\n },`\n }\n\n tChannels += `\n };\n `\n\n let tEvents = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // ADK Version: ${ADK_VERSION}\n // Integration: ${integration.definition!.name}\n // Version: ${integration.definition!.version}\n // File: ${names.paths.events}\n // Hash: ${hash}\n // Updated at: ${integration.definition!.updatedAt}\n ////////////////////////////////////////////////////////\n\n export type Integration_Events_${getPascalAlias(integration)} = {`\n\n for (const [eventName, event] of Object.entries(integration.definition!.events || {})) {\n const payloadType = transforms.fromJSONSchema(event.schema).toTypescriptType()\n const attributesComment = Object.keys(event.attributes || {}).length\n ? `\\nAttributes:\\n${Object.entries(event.attributes!)\n .map(([k, v]) => ` - ${k}: ${v}`)\n .join('\\n')}`.trim()\n : ''\n\n tEvents += `\n ${toMultilineComment(\n `Title: ${event.title || eventName}\\nDescription: ${event.description || 'No description'}${attributesComment}`\n )}\n \"${eventName}\": ${payloadType};\n `\n }\n\n tEvents += `\n };\n `\n\n let tUsers = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // ADK Version: ${ADK_VERSION}\n // Integration: ${integration.definition?.name}\n // Version: ${integration.definition?.version}\n // File: ${names.paths.users}\n // Hash: ${hash}\n // Updated at: ${integration.definition?.updatedAt}\n ////////////////////////////////////////////////////////\n\n export type Integration_Users_${getPascalAlias(integration)} = {`\n\n const userTagKeys = Object.keys(integration.definition?.user?.tags || {})\n const userTagsUnion = userTagKeys.length\n ? userTagKeys\n .map((t) => {\n const tag = (integration.definition?.user!.tags ?? ({} as any))[t]!\n const comment = toMultilineComment(`Title: ${tag?.title}\\nDescription: ${tag?.description}`)\n // Use ref.fullName to preserve workspace prefix (e.g., \"sly/intercom\")\n return `${comment}\\n\"${integration.ref.fullName}:${t}\"\\n`\n })\n .join(' | ')\n : 'never'\n\n tUsers += `\n tags: ${userTagsUnion};\n };\n `\n\n // Generate configuration types\n let tConfig = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // ADK Version: ${ADK_VERSION}\n // Integration: ${integration.definition?.name}\n // Version: ${integration.definition?.version}\n // File: ${names.paths.config}\n // Hash: ${hash}\n // Updated at: ${integration.definition?.updatedAt}\n ////////////////////////////////////////////////////////\n\n export type Integration_Config_${getPascalAlias(integration)} = `\n\n // Determine which configuration type to use\n const configurationType = integration.configurationType || 'default'\n\n // Try to get configuration schema from modern .configurations format first\n let configType = '{}'\n if (integration.definition?.configurations && integration.definition.configurations[configurationType]) {\n const configSchema = integration.definition.configurations[configurationType].schema\n if (configSchema) {\n configType = transforms.fromJSONSchema(configSchema).toTypescriptType()\n }\n } else if (integration.definition?.configuration) {\n // Fall back to legacy .configuration format\n const configSchema = integration.definition.configuration.schema\n if (configSchema) {\n configType = transforms.fromJSONSchema(configSchema).toTypescriptType()\n }\n }\n\n tConfig += `${configType};\n `\n\n return {\n names,\n files: {\n [names.paths.index]: await formatCode(tIndex),\n [names.paths.actions]: await formatCode(tActions),\n [names.paths.channels]: await formatCode(tChannels),\n [names.paths.events]: await formatCode(tEvents),\n [names.paths.users]: await formatCode(tUsers),\n [names.paths.config]: await formatCode(tConfig),\n },\n }\n}\n",
|
|
@@ -56,13 +58,13 @@
|
|
|
56
58
|
"import * as path from 'path'\nimport { AgentProject } from '../agent-project/index.js'\nimport { formatCode } from '../generators/utils.js'\nimport { createFile } from '../utils/fs.js'\nimport { BuiltInWorkflows } from '@botpress/runtime/internal'\n\nexport type WorkflowTypeInfo = {\n name: string\n input: string\n output: string\n state: string\n requests: string\n}\n\nfunction isBuiltinWorkflow(name: string): boolean {\n return !!Object.values(BuiltInWorkflows).find((x) => x.name === name)\n}\n\nexport async function generateWorkflowTypes(project: AgentProject): Promise<void> {\n const workflows: WorkflowTypeInfo[] = []\n\n // Load and process each workflow\n for (const workflowRef of project.workflows) {\n try {\n if (isBuiltinWorkflow(workflowRef.definition.name)) {\n // Skip built-in workflows - they're not importable from file paths\n continue\n }\n\n const workflowPath = path.join(project.path, workflowRef.path)\n // Bust module cache to ensure fresh workflow on type generation\n const workflowModule = await import(`${workflowPath}?t=${Date.now()}`)\n\n const workflowInstance = workflowModule[workflowRef.export] || workflowModule.default\n\n if (!workflowInstance) {\n continue\n }\n\n // Extract schemas and convert to TypeScript types\n const inputType = workflowInstance.inputSchema\n ? (workflowInstance.inputSchema as any).toTypescriptType?.() || 'any'\n : '{}'\n\n const outputType = workflowInstance.outputSchema\n ? (workflowInstance.outputSchema as any).toTypescriptType?.() || 'any'\n : '{}'\n\n const stateType = workflowInstance.stateSchema\n ? (workflowInstance.stateSchema as any).toTypescriptType?.() || 'any'\n : '{}'\n\n // Extract requests schemas\n let requestsType = '{}'\n const requestsSchemas = workflowInstance._requestsSchemas\n if (requestsSchemas && Object.keys(requestsSchemas).length > 0) {\n const requestTypes = Object.entries(requestsSchemas)\n .map(([key, schema]) => {\n const type = (schema as any).toTypescriptType?.() || 'any'\n return `${key}: ${type}`\n })\n .join('; ')\n requestsType = `{ ${requestTypes} }`\n }\n\n workflows.push({\n name: workflowRef.definition.name,\n input: inputType,\n output: outputType,\n state: stateType,\n requests: requestsType,\n })\n } catch (error) {\n console.error(`Failed to process workflow ${workflowRef.definition.name}:`, error)\n }\n }\n\n // Generate the type definitions file\n const typeDefinitions = workflows\n .map(\n (workflow) =>\n ` ${workflow.name}: {\n input: ${workflow.input};\n output: ${workflow.output};\n state: ${workflow.state};\n requests: ${workflow.requests};\n };`\n )\n .join('\\n')\n\n const content = `// Generated workflow type definitions\n// Do not edit this file directly - it will be overwritten\n\ndeclare module \"@botpress/runtime/_types/workflows\" {\n export type WorkflowDefinitions = {\n${typeDefinitions || ' // No workflows defined yet'}\n };\n}`\n\n // Write the workflow types file\n const workflowTypesPath = path.join(project.path, '.adk', 'workflow-types.d.ts')\n await createFile(workflowTypesPath, await formatCode(content))\n}\n",
|
|
57
59
|
"import { AgentProject } from '../agent-project/agent-project.js'\nimport { ADK_VERSION, formatCode } from './utils.js'\nimport { createFile } from '../utils/fs.js'\nimport path from 'path'\n\nexport async function generateConversationTypes(project: AgentProject): Promise<void> {\n // Map conversation definitions to their channel types\n const conversationTypes: Record<string, { channel: string | string[]; state: string }> = {}\n\n for (const conversationRef of project.conversations) {\n try {\n const conversationPath = path.join(project.path, conversationRef.path)\n // Bust module cache to ensure fresh conversation on type generation\n const conversationModule = await import(`${conversationPath}?t=${Date.now()}`)\n\n const conversationInstance = conversationModule[conversationRef.export] || conversationModule.default\n\n if (!conversationInstance) {\n continue\n }\n\n // Get the channel specification\n const channel = conversationInstance.channel\n\n // Extract state schema and convert to TypeScript type\n const stateType = conversationInstance.schema\n ? (conversationInstance.schema as any).toTypescriptType?.() || 'any'\n : '{}'\n\n // Determine the channel key(s)\n let channels: string[]\n if (channel === '*') {\n // Glob - we'll need to handle this specially\n channels = ['*']\n } else if (Array.isArray(channel)) {\n channels = channel as string[]\n } else {\n channels = [channel as string]\n }\n\n // Store conversation info for each channel\n for (const ch of channels) {\n conversationTypes[ch] = {\n channel: ch,\n state: stateType,\n }\n }\n } catch (error) {\n console.error(`Failed to process conversation ${conversationRef.export}:`, error)\n }\n }\n\n // Generate type definitions for each channel\n const channelDefinitions = Object.entries(conversationTypes)\n .filter(([channel]) => channel !== '*') // Filter out glob for now\n .map(([channel, info]) => {\n const [integration, channelName] = channel.split('.')\n return ` \"${channel}\": {\n channel: \"${channel}\";\n integration: \"${integration}\";\n state: ${info.state};\n tags: Integrations[\"${integration}\"][\"channels\"][\"${channelName}\"][\"conversation\"][\"tags\"];\n messageTags: Integrations[\"${integration}\"][\"channels\"][\"${channelName}\"][\"message\"][\"tags\"];\n messages: Integrations[\"${integration}\"][\"channels\"][\"${channelName}\"][\"messages\"];\n events: Integrations[\"${integration}\"][\"events\"];\n };`\n })\n .join('\\n')\n\n const content = `\n////////////////////////////////////////////////////////\n// DO NOT EDIT THIS FILE DIRECTLY\n// This file is auto-generated from the Botpress ADK\n// ADK Version: ${ADK_VERSION}\n// Generated at: ${new Date().toISOString()}\n////////////////////////////////////////////////////////\n\ntype Integrations = import(\"@botpress/runtime/_types/integrations\").Integrations;\n\ndeclare module \"@botpress/runtime/_types/conversations\" {\n export type ConversationDefinitions = {\n${channelDefinitions || ' // No conversations defined yet'}\n };\n}\n`\n\n // Write to conversation-types.d.ts in the .adk folder\n const conversationTypesPath = path.join(project.path, '.adk', 'conversation-types.d.ts')\n await createFile(conversationTypesPath, await formatCode(content))\n}\n",
|
|
58
60
|
"import { AgentProject } from '../agent-project/agent-project.js'\nimport { ADK_VERSION, formatCode } from './utils.js'\nimport { createFile } from '../utils/fs.js'\nimport path from 'path'\n\nexport async function generateEventTypes(project: AgentProject): Promise<void> {\n // Collect all integration events\n const integrationEvents: string[] = []\n\n for (const int of project.integrations) {\n // const intf = project.integrations.find(x => x.definition.)\n\n for (const event in int.definition?.events || []) {\n integrationEvents.push(` \"${int.alias}:${event}\": Integrations[\"${int.alias}\"][\"events\"][\"${event}\"];`)\n }\n }\n\n const content = `\n////////////////////////////////////////////////////////\n// DO NOT EDIT THIS FILE DIRECTLY\n// This file is auto-generated from the Botpress ADK\n// ADK Version: ${ADK_VERSION}\n// Generated at: ${new Date().toISOString()}\n////////////////////////////////////////////////////////\n\ntype Integrations = import(\"@botpress/runtime/_types/integrations\").Integrations;\n\ndeclare module \"@botpress/runtime/_types/events\" {\n /**\n * Global Events type that includes all integration events.\n * Use this type to reference any event that can occur in the system.\n * \n * Events are namespaced by their source:\n * - Integration events: \"<integration>:<eventName>\" (e.g., \"linear:issueCreated\")\n * - Built-in events: Will be added in format \"workflow:<name>:finished\", \"agent:deployed\", etc.\n */\n export type Events = {\n${integrationEvents.join('\\n')}\n };\n\n // Export helper type for event names\n export type EventName = keyof Events;\n\n // Export helper to get event payload type\n export type EventPayload<T extends EventName> = Events[T];\n}\n`\n\n // Write to event-types.d.ts in the .adk folder\n const eventTypesPath = path.join(project.path, '.adk', 'event-types.d.ts')\n await createFile(eventTypesPath, await formatCode(content))\n}\n",
|
|
59
|
-
"import path from 'path'\nimport fs from 'fs/promises'\nimport { existsSync } from 'fs'\nimport { Client } from '@botpress/client'\nimport { auth } from '../auth/index.js'\nimport { AgentProject } from '../agent-project/index.js'\n\nexport interface ProjectCache {\n devId?: string\n botId?: string\n}\n\nexport class DevIdManager {\n private projectPath: string\n private botProjectPath: string\n private projectCachePath: string\n private client?: Client\n\n constructor(projectPath: string, botProjectPath: string) {\n this.projectPath = projectPath\n this.botProjectPath = botProjectPath\n this.projectCachePath = path.join(botProjectPath, '.botpress', 'project.cache.json')\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = await auth.getActiveCredentials()\n const project = await this.getProject()\n\n // Use workspaceId from agent.json if available, otherwise fall back to profile\n const workspaceId = project.agentInfo?.workspaceId || credentials.workspaceId\n\n if (!workspaceId) {\n throw new Error('No workspace ID found in agent.json or current profile. Please login again with \"adk login\"')\n }\n\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId: workspaceId,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n }\n return this.client\n }\n\n async getProject(): Promise<AgentProject> {\n return await AgentProject.load(this.projectPath)\n }\n\n async readProjectCache(): Promise<ProjectCache> {\n try {\n if (existsSync(this.projectCachePath)) {\n const content = await fs.readFile(this.projectCachePath, 'utf-8')\n return JSON.parse(content)\n }\n } catch (error) {\n console.error('Error reading project.cache.json:', error)\n }\n return {}\n }\n\n async saveProjectCache(cache: ProjectCache): Promise<void> {\n try {\n // Ensure directory exists\n await fs.mkdir(path.dirname(this.projectCachePath), { recursive: true })\n\n await fs.writeFile(this.projectCachePath, JSON.stringify(cache, null, 2))\n } catch (error) {\n console.error('Error saving project.cache.json:', error)\n }\n }\n\n async preserveDevId(): Promise<void> {\n // Read devId from project cache after bp dev creates it\n const projectCache = await this.readProjectCache()\n if (projectCache.devId) {\n // Save it to agent.json using AgentProject methods\n const project = await this.getProject()\n\n if (project.agentInfo) {\n //
|
|
61
|
+
"import path from 'path'\nimport fs from 'fs/promises'\nimport { existsSync } from 'fs'\nimport { Client } from '@botpress/client'\nimport { auth } from '../auth/index.js'\nimport { AgentProject, ValidationErrors } from '../agent-project/index.js'\n\nexport interface ProjectCache {\n devId?: string\n botId?: string\n}\n\nexport class DevIdManager {\n private projectPath: string\n private botProjectPath: string\n private projectCachePath: string\n private client?: Client\n\n constructor(projectPath: string, botProjectPath: string) {\n this.projectPath = projectPath\n this.botProjectPath = botProjectPath\n this.projectCachePath = path.join(botProjectPath, '.botpress', 'project.cache.json')\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = await auth.getActiveCredentials()\n const project = await this.getProject()\n\n // Use workspaceId from agent.json if available, otherwise fall back to profile\n const workspaceId = project.agentInfo?.workspaceId || credentials.workspaceId\n\n if (!workspaceId) {\n throw new Error('No workspace ID found in agent.json or current profile. Please login again with \"adk login\"')\n }\n\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId: workspaceId,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n }\n return this.client\n }\n\n async getProject(): Promise<AgentProject> {\n return await AgentProject.load(this.projectPath)\n }\n\n async readProjectCache(): Promise<ProjectCache> {\n try {\n if (existsSync(this.projectCachePath)) {\n const content = await fs.readFile(this.projectCachePath, 'utf-8')\n return JSON.parse(content)\n }\n } catch (error) {\n console.error('Error reading project.cache.json:', error)\n }\n return {}\n }\n\n async saveProjectCache(cache: ProjectCache): Promise<void> {\n try {\n // Ensure directory exists\n await fs.mkdir(path.dirname(this.projectCachePath), { recursive: true })\n\n await fs.writeFile(this.projectCachePath, JSON.stringify(cache, null, 2))\n } catch (error) {\n console.error('Error saving project.cache.json:', error)\n }\n }\n\n async preserveDevId(): Promise<void> {\n // Read devId from project cache after bp dev creates it\n const projectCache = await this.readProjectCache()\n if (projectCache.devId) {\n // Save it to agent.json using AgentProject methods\n const project = await this.getProject()\n\n if (!project.agentInfo) {\n // Agent must be linked before running dev mode\n throw ValidationErrors.agentNotLinked()\n }\n\n // Update existing agent info with devId\n await project.updateAgentInfo({\n devId: projectCache.devId,\n })\n }\n }\n\n async restoreDevId(): Promise<void> {\n // Read from agent.json using AgentProject\n const project = await this.getProject()\n const agentInfo = project.agentInfo\n\n if (agentInfo?.devId || agentInfo?.botId) {\n // Create project cache with the saved IDs\n const cache: ProjectCache = {}\n\n if (agentInfo.devId) {\n cache.devId = agentInfo.devId\n }\n\n if (agentInfo.botId) {\n cache.botId = agentInfo.botId\n }\n\n await this.saveProjectCache(cache)\n }\n }\n\n async checkDevBotExists(): Promise<boolean> {\n const project = await this.getProject()\n const agentInfo = project.agentInfo\n\n // If we have a devId, check if the bot still exists\n if (agentInfo?.devId) {\n try {\n const client = await this.getClient()\n await client.getBot({ id: agentInfo.devId })\n // Bot exists\n return true\n } catch (error) {\n // Bot doesn't exist or error getting it\n return false\n }\n }\n\n // No devId set\n return false\n }\n}\n",
|
|
60
62
|
"import path from 'path'\nimport fs from 'fs/promises'\nimport { existsSync } from 'fs'\nimport { AgentProject } from '../agent-project/agent-project.js'\nimport { auth } from '../auth/index.js'\nimport { getIntegrationAlias } from '../utils/ids.js'\nimport { BpAddCommand } from '../commands/bp-add-command.js'\n\nexport interface IntegrationInfo {\n alias: string\n name: string\n version: string\n fullVersion: string // e.g., \"slack@2.5.5\"\n}\n\nexport interface SyncResult {\n synced: IntegrationInfo[]\n errors: Array<{ alias: string; error: string }>\n}\n\nexport class IntegrationSync {\n private projectPath: string\n private botProjectPath: string\n private bpModulesPath: string\n\n constructor(projectPath: string, botProjectPath: string) {\n this.projectPath = projectPath\n this.botProjectPath = botProjectPath\n this.bpModulesPath = path.join(botProjectPath, 'bp_modules')\n }\n\n /**\n * Parse agent.config.ts dependencies integrations into IntegrationInfo objects\n */\n private async parseIntegrations(): Promise<IntegrationInfo[]> {\n const project = await AgentProject.load(this.projectPath)\n const dependencies = project.dependencies\n\n if (!dependencies?.integrations) {\n return []\n }\n\n const integrations: IntegrationInfo[] = []\n\n for (const [alias, config] of Object.entries(dependencies.integrations)) {\n let version: string\n let name: string\n\n if (typeof config === 'string') {\n // Simple format: \"openai@15.0.4\"\n version = config\n const parts = version.split('@')\n name = parts[0] || ''\n } else {\n // Object format: { version: \"slack@2.5.5\", ... }\n version = config.version\n const parts = version.split('@')\n name = parts[0] || ''\n }\n\n integrations.push({\n alias: getIntegrationAlias(alias),\n name,\n version: version.split('@')[1] || 'latest',\n fullVersion: version,\n })\n }\n\n return integrations\n }\n\n /**\n * Check if an integration is already installed with the correct version\n */\n private async isIntegrationSynced(integration: IntegrationInfo): Promise<boolean> {\n const targetFolder = path.join(this.bpModulesPath, `integration_${integration.alias}`)\n\n if (!existsSync(targetFolder)) {\n return false\n }\n\n // Check if the index.ts has the correct version\n try {\n const indexPath = path.join(targetFolder, 'index.ts')\n if (!existsSync(indexPath)) {\n return false\n }\n\n const indexContent = await fs.readFile(indexPath, 'utf-8')\n\n // Look for version in the format: version: \"2.5.5\",\n const versionMatch = indexContent.match(/version:\\s*[\"']([^\"']+)[\"']/)\n if (!versionMatch) {\n return false\n }\n\n const installedVersion = versionMatch[1]\n return installedVersion === integration.version\n } catch {\n return false\n }\n }\n\n /**\n * Install an integration using bp CLI\n */\n private async installIntegration(integration: IntegrationInfo): Promise<void> {\n // Get credentials\n const credentials = await auth.getActiveCredentials()\n const project = await AgentProject.load(this.projectPath)\n const workspaceId = project.agentInfo?.workspaceId || credentials.workspaceId\n\n if (!workspaceId) {\n throw new Error('No workspace ID found. Please login with \"adk login\"')\n }\n\n const command = new BpAddCommand({\n integration: integration.fullVersion,\n botPath: this.botProjectPath,\n workspaceId,\n credentials,\n })\n\n await command.run()\n await command.output()\n }\n\n /**\n * Rename integration folder from bp_modules/{name} to bp_modules/integration_{alias}\n */\n private async renameIntegrationFolder(integration: IntegrationInfo): Promise<void> {\n console.log(integration.name, integration.alias)\n const sourceFolder = path.join(this.bpModulesPath, integration.name.replace('/', '-'))\n\n const targetFolder = path.join(this.bpModulesPath, `integration_${integration.alias}`)\n\n if (!existsSync(sourceFolder)) {\n throw new Error(`Integration folder not found: ${sourceFolder}`)\n }\n\n // Remove target folder if it exists\n if (existsSync(targetFolder)) {\n await fs.rm(targetFolder, { recursive: true, force: true })\n }\n\n // Rename source to target\n await fs.rename(sourceFolder, targetFolder)\n }\n\n /**\n * Remove existing integration folder\n */\n private async removeIntegrationFolder(alias: string): Promise<void> {\n const targetFolder = path.join(this.bpModulesPath, `integration_${alias}`)\n\n if (existsSync(targetFolder)) {\n await fs.rm(targetFolder, { recursive: true, force: true })\n }\n }\n\n /**\n * Sync all integrations\n */\n async syncIntegrations(): Promise<SyncResult> {\n const integrations = await this.parseIntegrations()\n const synced: IntegrationInfo[] = []\n const errors: Array<{ alias: string; error: string }> = []\n\n if (integrations.length === 0) {\n return { synced, errors }\n }\n\n // Ensure bp_modules directory exists\n await fs.mkdir(this.bpModulesPath, { recursive: true })\n\n for (const integration of integrations) {\n try {\n const isAlreadySynced = await this.isIntegrationSynced(integration)\n\n if (isAlreadySynced) {\n synced.push(integration)\n continue\n }\n\n // Remove existing folder if version mismatch\n await this.removeIntegrationFolder(integration.alias)\n\n // Install the integration\n await this.installIntegration(integration)\n\n // Rename to our controlled name\n await this.renameIntegrationFolder(integration)\n\n synced.push(integration)\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error)\n errors.push({ alias: integration.alias, error: errorMsg })\n }\n }\n\n return { synced, errors }\n }\n}\n",
|
|
61
63
|
"import path from 'path'\nimport fs from 'fs/promises'\nimport { existsSync } from 'fs'\nimport { spawn } from 'child_process'\nimport { AgentProject } from '../agent-project/agent-project.js'\nimport { auth } from '../auth/index.js'\nimport { pascalCase } from '../utils/strings.js'\nimport { BUILTIN_INTERFACES } from '../constants.js'\nimport { getBpCli } from '../commands/bp-cli.js'\n\nexport interface InterfaceInfo {\n alias: string\n name: string\n version: string\n fullVersion: string // e.g., \"translator@1.0.0\"\n}\n\nexport interface InterfaceSyncResult {\n synced: InterfaceInfo[]\n errors: Array<{ alias: string; error: string }>\n}\n\nexport class InterfaceSync {\n private projectPath: string\n private botProjectPath: string\n private bpModulesPath: string\n\n constructor(projectPath: string, botProjectPath: string) {\n this.projectPath = projectPath\n this.botProjectPath = botProjectPath\n this.bpModulesPath = path.join(botProjectPath, 'bp_modules')\n }\n\n /**\n * Get built-in interfaces (hard-coded constants)\n */\n private async parseInterfaces(): Promise<InterfaceInfo[]> {\n const interfaces: InterfaceInfo[] = []\n\n for (const [alias, fullVersion] of Object.entries(BUILTIN_INTERFACES)) {\n const parts = fullVersion.split('@')\n const name = parts[0] || ''\n const version = parts[1] || 'latest'\n\n interfaces.push({\n alias,\n name,\n version,\n fullVersion,\n })\n }\n\n return interfaces\n }\n\n /**\n * Check if an interface is already installed with the correct version\n */\n private async isInterfaceSynced(interfaceInfo: InterfaceInfo): Promise<boolean> {\n const targetFolder = path.join(this.bpModulesPath, `interface_${pascalCase(interfaceInfo.alias)}`)\n\n if (!existsSync(targetFolder)) {\n return false\n }\n\n // Check if the index.ts has the correct version\n try {\n const indexPath = path.join(targetFolder, 'index.ts')\n if (!existsSync(indexPath)) {\n return false\n }\n\n const indexContent = await fs.readFile(indexPath, 'utf-8')\n\n // Look for version in the format: version: \"1.0.0\",\n const versionMatch = indexContent.match(/version:\\s*[\"']([^\"']+)[\"']/)\n if (!versionMatch) {\n return false\n }\n\n const installedVersion = versionMatch[1]\n return installedVersion === interfaceInfo.version\n } catch {\n return false\n }\n }\n\n /**\n * Install an interface using bp CLI\n */\n private async installInterface(interfaceInfo: InterfaceInfo): Promise<void> {\n // Get credentials\n const credentials = await auth.getActiveCredentials()\n const project = await AgentProject.load(this.projectPath)\n const workspaceId = project.agentInfo?.workspaceId || credentials.workspaceId\n\n if (!workspaceId) {\n throw new Error('No workspace ID found. Please login with \"adk login\"')\n }\n\n // Get the bp CLI path (bundled with ADK)\n const bpCli = await getBpCli(this.projectPath)\n const bpPath = bpCli.path\n\n return new Promise((resolve, reject) => {\n const args = [\n 'add',\n `interface:${interfaceInfo.fullVersion}`,\n '-y',\n '--installPath',\n this.botProjectPath,\n '--token',\n credentials.token,\n '--workspaceId',\n workspaceId,\n '--apiUrl',\n credentials.apiUrl,\n ]\n\n // On Windows, .js files need to be executed with node explicitly\n const isJsFile = bpPath.endsWith('.js')\n const command = isJsFile ? 'node' : bpPath\n const commandArgs = isJsFile ? [bpPath, ...args] : args\n\n const child = spawn(command, commandArgs, {\n cwd: this.projectPath,\n stdio: 'pipe',\n })\n\n let stdout = ''\n let stderr = ''\n\n child.stdout?.on('data', (data) => {\n stdout += data.toString()\n })\n\n child.stderr?.on('data', (data) => {\n stderr += data.toString()\n })\n\n child.on('close', (code) => {\n if (code === 0) {\n resolve()\n } else {\n reject(new Error(`Failed to install interface ${interfaceInfo.fullVersion}: ${stderr || stdout}`))\n }\n })\n\n child.on('error', (error) => {\n reject(new Error(`Failed to spawn bp command: ${error.message}`))\n })\n })\n }\n\n /**\n * Rename interface folder from bp_modules/{name} to bp_modules/interface_{PascalCaseAlias}\n */\n private async renameInterfaceFolder(interfaceInfo: InterfaceInfo): Promise<void> {\n const sourceFolder = path.join(this.bpModulesPath, interfaceInfo.name)\n const targetFolder = path.join(this.bpModulesPath, `interface_${pascalCase(interfaceInfo.alias)}`)\n\n if (!existsSync(sourceFolder)) {\n throw new Error(`Interface folder not found: ${sourceFolder}`)\n }\n\n // Remove target folder if it exists\n if (existsSync(targetFolder)) {\n await fs.rm(targetFolder, { recursive: true, force: true })\n }\n\n // Rename source to target\n await fs.rename(sourceFolder, targetFolder)\n }\n\n /**\n * Remove existing interface folder\n */\n private async removeInterfaceFolder(alias: string): Promise<void> {\n const targetFolder = path.join(this.bpModulesPath, `interface_${pascalCase(alias)}`)\n\n if (existsSync(targetFolder)) {\n await fs.rm(targetFolder, { recursive: true, force: true })\n }\n }\n\n /**\n * Sync all interfaces\n */\n async syncInterfaces(): Promise<InterfaceSyncResult> {\n const interfaces = await this.parseInterfaces()\n const synced: InterfaceInfo[] = []\n const errors: Array<{ alias: string; error: string }> = []\n\n if (interfaces.length === 0) {\n return { synced, errors }\n }\n\n // Ensure bp_modules directory exists\n await fs.mkdir(this.bpModulesPath, { recursive: true })\n\n for (const interfaceInfo of interfaces) {\n try {\n const isAlreadySynced = await this.isInterfaceSynced(interfaceInfo)\n\n if (isAlreadySynced) {\n synced.push(interfaceInfo)\n continue\n }\n\n // Remove existing folder if version mismatch\n await this.removeInterfaceFolder(interfaceInfo.alias)\n\n // Install the interface\n await this.installInterface(interfaceInfo)\n\n // Rename to our controlled name\n await this.renameInterfaceFolder(interfaceInfo)\n\n synced.push(interfaceInfo)\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error)\n errors.push({ alias: interfaceInfo.alias, error: errorMsg })\n }\n }\n\n return { synced, errors }\n }\n}\n",
|
|
62
64
|
"import { Client } from '@botpress/client'\nimport { transforms } from '@botpress/sdk'\n\nimport { auth } from '../auth/index.js'\nimport { AgentProject } from '../agent-project/agent-project.js'\nimport {\n LocalTable,\n RemoteTable,\n TableSyncPlan,\n TableSyncResult,\n TableSyncItem,\n TableSyncOperation,\n TableSyncOptions,\n} from './types.js'\n\nexport interface TableManagerOptions {\n project: AgentProject\n botId?: string\n}\n\nexport class TableManager {\n private client?: Client\n private botId?: string\n private project: AgentProject\n\n constructor(options: TableManagerOptions) {\n this.botId = options.botId\n this.project = options.project\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = await auth.getActiveCredentials()\n\n this.assertBotId('initialize client')\n\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n botId: this.botId,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n }\n return this.client\n }\n\n private assertBotId(operation: string): void {\n if (!this.botId) {\n throw new Error(\n `Operation \"${operation}\" requires a bot ID. ` +\n 'Please deploy your agent first or create agent.json with botId and workspaceId.'\n )\n }\n }\n\n async getLocalTables(): Promise<LocalTable[]> {\n const tables: LocalTable[] = []\n\n for (const tableRef of this.project.tables) {\n try {\n // Load the actual table module to get the full definition\n\n tables.push({\n name: tableRef.definition.name,\n factor: tableRef.definition.factor,\n schema: tableRef.definition.schema,\n })\n } catch (error) {}\n }\n\n return tables\n }\n\n async getRemoteTables(): Promise<RemoteTable[]> {\n this.assertBotId('get remote tables')\n\n const client = await this.getClient()\n\n try {\n // List tables from Botpress API\n const response = await client.listTables({})\n\n return response.tables.map((table) => ({\n id: table.id,\n name: table.name,\n createdAt: table.createdAt || new Date().toISOString(),\n updatedAt: table.updatedAt || new Date().toISOString(),\n schema: table.schema,\n }))\n } catch (error) {\n console.error('Failed to list remote tables:', error)\n return []\n }\n }\n\n async createSyncPlan(): Promise<TableSyncPlan> {\n const localTables = await this.getLocalTables()\n const remoteTables = await this.getRemoteTables()\n\n const items: TableSyncItem[] = []\n const remoteMap = new Map(remoteTables.map((t) => [t.name, t]))\n\n // Check each local table\n for (const local of localTables) {\n const remote = remoteMap.get(local.name)\n\n if (!remote) {\n // Table doesn't exist remotely - need to create\n items.push({\n operation: TableSyncOperation.Create,\n localTable: local,\n reason: 'Table does not exist remotely',\n })\n } else {\n // Table exists - check if schema matches\n try {\n const localSchema = transforms.fromJSONSchema(local.schema)\n const remoteSchema = transforms.fromJSONSchema(remote.schema)\n\n if (!localSchema.isEqual(remoteSchema)) {\n // Schema has changed - need to update\n items.push({\n operation: TableSyncOperation.Update,\n localTable: local,\n remoteTable: remote,\n reason: 'Table schema has changed',\n })\n } else {\n // Schema matches - no update needed\n items.push({\n operation: TableSyncOperation.None,\n localTable: local,\n remoteTable: remote,\n reason: 'Table schema is up to date',\n })\n }\n } catch (error) {\n // If we can't compare schemas, assume they need updating\n items.push({\n operation: TableSyncOperation.Update,\n localTable: local,\n remoteTable: remote,\n reason: 'Unable to compare schemas - assuming update needed',\n })\n }\n\n // Remove from map so we can find orphaned tables\n remoteMap.delete(local.name)\n }\n }\n\n // Remaining remote tables don't have local counterparts\n for (const [, remote] of remoteMap) {\n items.push({\n operation: TableSyncOperation.Delete,\n remoteTable: remote,\n reason: 'Table no longer defined locally',\n })\n }\n\n // Calculate totals\n const totalCreate = items.filter((i) => i.operation === TableSyncOperation.Create).length\n const totalUpdate = items.filter((i) => i.operation === TableSyncOperation.Update).length\n const totalDelete = items.filter((i) => i.operation === TableSyncOperation.Delete).length\n const hasChanges = totalCreate > 0 || totalUpdate > 0 || totalDelete > 0\n\n return {\n items,\n totalCreate,\n totalUpdate,\n totalDelete,\n hasChanges,\n }\n }\n\n async executeSync(plan: TableSyncPlan, options: TableSyncOptions = {}): Promise<TableSyncResult> {\n this.assertBotId('sync tables')\n\n if (options.dryRun) {\n return {\n applied: false,\n success: [],\n failed: [],\n summary: {\n created: 0,\n updated: 0,\n deleted: 0,\n failed: 0,\n },\n }\n }\n\n const client = await this.getClient()\n const success: TableSyncItem[] = []\n const failed: Array<{ item: TableSyncItem; error: Error }> = []\n\n for (const item of plan.items) {\n if (item.operation === TableSyncOperation.None) {\n success.push(item)\n continue\n }\n\n try {\n switch (item.operation) {\n case TableSyncOperation.Create:\n if (item.localTable) {\n await client.createTable({\n name: item.localTable.name,\n factor: item.localTable.factor || 1,\n schema: item.localTable.schema,\n isComputeEnabled: true,\n })\n success.push(item)\n }\n break\n\n case TableSyncOperation.Update:\n if (item.localTable && item.remoteTable) {\n // Update table schema\n await client.updateTable({\n table: item.localTable.name,\n schema: item.localTable.schema,\n })\n success.push(item)\n }\n break\n\n case TableSyncOperation.Delete:\n if (item.remoteTable) {\n // Require explicit confirmation for deletion\n if (!options.autoConfirm) {\n console.warn(`Skipping deletion of table \"${item.remoteTable.name}\" - requires confirmation`)\n continue\n }\n await client.deleteTable({ table: item.remoteTable.name })\n success.push(item)\n }\n break\n }\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error))\n failed.push({ item, error: err })\n\n if (options.bailOnFailure) {\n break\n }\n }\n }\n\n return {\n applied: true,\n success,\n failed,\n summary: {\n created: success.filter((i) => i.operation === TableSyncOperation.Create).length,\n updated: success.filter((i) => i.operation === TableSyncOperation.Update).length,\n deleted: success.filter((i) => i.operation === TableSyncOperation.Delete).length,\n failed: failed.length,\n },\n }\n }\n}\n",
|
|
63
65
|
"import { watch, readdirSync } from 'fs'\nimport { EventEmitter } from 'events'\nimport { join, relative } from 'path'\nimport { existsSync } from 'fs'\n\nexport type WatchChangeType = 'added' | 'modified' | 'deleted'\n\nexport interface FileChange {\n path: string\n type: WatchChangeType\n}\n\nexport interface FileChangeEvent {\n changes: FileChange[]\n timestamp: number\n}\n\nexport interface FileWatcherOptions {\n projectPath: string\n debounceMs?: number\n}\n\n/**\n * File watcher for ADK agent projects\n *\n * Watches the following patterns:\n * - src/**\\/*\n * - agent.config.ts\n * - package.json\n * - agent.json\n */\nexport class FileWatcher extends EventEmitter {\n private projectPath: string\n private watchers: Map<string, ReturnType<typeof watch>> = new Map()\n private fileStates: Map<string, number> = new Map()\n private debounceMs: number\n private debounceTimer: NodeJS.Timeout | null = null\n private pendingChanges: Map<string, FileChange> = new Map()\n\n constructor(options: FileWatcherOptions) {\n super()\n this.projectPath = options.projectPath\n this.debounceMs = options.debounceMs ?? 100\n }\n\n /**\n * Start watching files\n */\n start(): void {\n // Watch individual files at project root\n const rootFiles = ['package.json', 'agent.json', 'agent.config.ts']\n\n for (const file of rootFiles) {\n const filePath = join(this.projectPath, file)\n if (existsSync(filePath)) {\n this.watchFile(filePath)\n }\n }\n\n // Watch src directory recursively\n const srcPath = join(this.projectPath, 'src')\n if (existsSync(srcPath)) {\n // Initialize state for all existing files BEFORE setting up watchers\n this.initializeDirectoryState(srcPath)\n // Now set up the watcher\n this.watchDirectory(srcPath)\n }\n }\n\n /**\n * Initialize state for all files in a directory (recursive)\n */\n private initializeDirectoryState(dirPath: string): void {\n try {\n const entries = readdirSync(dirPath, { withFileTypes: true })\n\n for (const entry of entries) {\n const fullPath = join(dirPath, entry.name)\n if (entry.isDirectory()) {\n this.initializeDirectoryState(fullPath)\n } else if (entry.isFile()) {\n this.updateFileState(fullPath)\n }\n }\n } catch (error) {\n // Ignore errors during initialization\n }\n }\n\n /**\n * Watch a single file\n */\n private watchFile(filePath: string): void {\n if (this.watchers.has(filePath)) {\n return\n }\n\n try {\n // Initialize file state BEFORE setting up watcher to avoid triggering events\n this.updateFileState(filePath)\n\n const watcher = watch(filePath, { persistent: true }, () => {\n this.handleFileChange(filePath)\n })\n\n this.watchers.set(filePath, watcher)\n } catch (error) {\n console.warn(`Failed to watch file ${filePath}:`, error)\n }\n }\n\n /**\n * Watch a directory recursively\n */\n private watchDirectory(dirPath: string): void {\n if (this.watchers.has(dirPath)) {\n return\n }\n\n try {\n const watcher = watch(dirPath, { recursive: true, persistent: true }, (_eventType, filename) => {\n if (filename) {\n const fullPath = join(dirPath, filename)\n this.handleFileChange(fullPath)\n }\n })\n\n this.watchers.set(dirPath, watcher)\n } catch (error) {\n console.warn(`Failed to watch directory ${dirPath}:`, error)\n }\n }\n\n /**\n * Handle file change events - accumulates changes for batch emission\n */\n private handleFileChange(filePath: string): void {\n const fileExists = existsSync(filePath)\n const previousState = this.fileStates.get(filePath)\n\n let changeType: WatchChangeType\n\n if (!fileExists && previousState !== undefined) {\n // File was deleted\n changeType = 'deleted'\n this.fileStates.delete(filePath)\n } else if (fileExists && previousState === undefined) {\n // File was added\n changeType = 'added'\n this.updateFileState(filePath)\n } else if (fileExists) {\n // File was modified\n changeType = 'modified'\n this.updateFileState(filePath)\n } else {\n // Unknown state, skip\n return\n }\n\n const relativePath = relative(this.projectPath, filePath)\n\n // Add to pending changes (overwrites previous change for same file)\n this.pendingChanges.set(relativePath, {\n path: relativePath,\n type: changeType,\n })\n\n // Reset debounce timer\n if (this.debounceTimer) {\n clearTimeout(this.debounceTimer)\n }\n\n this.debounceTimer = setTimeout(() => {\n this.emitPendingChanges()\n }, this.debounceMs)\n }\n\n /**\n * Emit all pending changes as a single event\n */\n private emitPendingChanges(): void {\n if (this.pendingChanges.size === 0) {\n return\n }\n\n const changes = Array.from(this.pendingChanges.values())\n this.pendingChanges.clear()\n\n const event: FileChangeEvent = {\n changes,\n timestamp: Date.now(),\n }\n\n this.emit('change', event)\n }\n\n /**\n * Update internal file state tracking\n */\n private updateFileState(filePath: string): void {\n if (existsSync(filePath)) {\n this.fileStates.set(filePath, Date.now())\n }\n }\n\n /**\n * Stop watching all files\n */\n stop(): void {\n // Clear debounce timer\n if (this.debounceTimer) {\n clearTimeout(this.debounceTimer)\n this.debounceTimer = null\n }\n\n // Close all watchers\n for (const watcher of this.watchers.values()) {\n watcher.close()\n }\n this.watchers.clear()\n this.fileStates.clear()\n this.pendingChanges.clear()\n }\n\n /**\n * Type-safe event listener\n */\n on(event: 'change', listener: (event: FileChangeEvent) => void): this {\n return super.on(event, listener)\n }\n\n /**\n * Type-safe event emitter\n */\n emit(event: 'change', data: FileChangeEvent): boolean {\n return super.emit(event, data)\n }\n}\n"
|
|
64
66
|
],
|
|
65
|
-
"mappings": "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",
|
|
66
|
-
"debugId": "
|
|
67
|
+
"mappings": "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",
|
|
68
|
+
"debugId": "EE9331649819EE4E64756E2164756E21",
|
|
67
69
|
"names": []
|
|
68
70
|
}
|