@botpress/adk 1.15.3 → 1.15.4

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/index.js.map CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "version": 3,
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/integrations/config-utils.ts", "../src/integrations/sync-manager.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/config/manager.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/generators/client-wrapper.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/tag-types.ts", "../src/generators/configuration-types.ts", "../src/generators/workflow-types.ts", "../src/generators/conversation-types.ts", "../src/generators/event-types.ts", "../src/utils/link-sdk.ts", "../src/bot-generator/dev-id-manager.ts", "../src/bot-generator/integration-sync.ts", "../src/bot-generator/interface-sync.ts", "../src/tables/table-manager.ts", "../src/knowledge/manager.ts", "../src/knowledge/types.ts", "../src/knowledge/sync-formatter.ts", "../src/file-watcher/watcher.ts", "../src/preflight/checker.ts", "../src/preflight/types.ts", "../src/preflight/agent-config-sync.ts", "../src/preflight/formatter.ts", "../src/runner/script-runner.ts"],
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/integrations/config-utils.ts", "../src/integrations/sync-manager.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/config/manager.ts", "../src/agent-init/agent-project-generator.ts", "../src/plugins/enhanced-cache.ts", "../src/plugins/manager.ts", "../src/generators/assets.ts", "../src/generators/integration-types.ts", "../src/utils/strings.ts", "../src/utils/ids.ts", "../src/generators/client-wrapper.ts", "../src/bot-generator/generator.ts", "../src/generators/plugin-types.ts", "../src/generators/plugin-action-types.ts", "../src/generators/interface-types.ts", "../src/generators/table-types.ts", "../src/generators/trigger-types.ts", "../src/generators/state-types.ts", "../src/generators/tag-types.ts", "../src/generators/configuration-types.ts", "../src/generators/workflow-types.ts", "../src/generators/conversation-types.ts", "../src/generators/event-types.ts", "../src/utils/link-sdk.ts", "../src/bot-generator/dev-id-manager.ts", "../src/bot-generator/integration-sync.ts", "../src/bot-generator/interface-sync.ts", "../src/bot-generator/plugin-sync.ts", "../src/tables/table-manager.ts", "../src/knowledge/manager.ts", "../src/knowledge/types.ts", "../src/knowledge/sync-formatter.ts", "../src/file-watcher/watcher.ts", "../src/preflight/checker.ts", "../src/preflight/types.ts", "../src/preflight/agent-config-sync.ts", "../src/preflight/formatter.ts", "../src/runner/script-runner.ts"],
4
4
  "sourcesContent": [
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 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 INVALID_INTEGRATION_ALIAS = 'INVALID_INTEGRATION_ALIAS',\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 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 invalidIntegrationAlias(alias: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_INTEGRATION_ALIAS,\n severity: ValidationSeverity.ERROR,\n message: `Invalid integration alias '${alias}'`,\n file: 'agent.config.ts',\n hint: 'Integration aliases must be 2-100 characters and contain only lowercase letters, numbers, underscores, and hyphens (e.g., \"slack\", \"my-slack\", \"slack_prod\")',\n context: { alias },\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",
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// Plugin dependency mapping schema (matches SDK's PluginConfigInstance.dependencies)\nconst pluginDependencyMappingSchema = z.object({\n integrationAlias: z.string(),\n integrationInterfaceAlias: z.string().optional(), // present for interface deps, absent for integration deps\n})\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 config: z.record(z.any()).optional(), // Local config overrides (non-secret)\n })\n )\n .optional(),\n plugins: z\n .record(\n z.object({\n version: z.string(),\n config: z.record(z.any()).optional(),\n dependencies: z.record(pluginDependencyMappingSchema).optional(),\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 INVALID_INTEGRATION_ALIAS = 'INVALID_INTEGRATION_ALIAS',\n INVALID_PLUGIN_ALIAS = 'INVALID_PLUGIN_ALIAS',\n UNKNOWN_INTEGRATION = 'UNKNOWN_INTEGRATION',\n UNKNOWN_PLUGIN = 'UNKNOWN_PLUGIN',\n INVALID_PLUGIN_DEPENDENCY = 'INVALID_PLUGIN_DEPENDENCY',\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 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 invalidIntegrationAlias(alias: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_INTEGRATION_ALIAS,\n severity: ValidationSeverity.ERROR,\n message: `Invalid integration alias '${alias}'`,\n file: 'agent.config.ts',\n hint: 'Integration aliases must be 2-100 characters and contain only lowercase letters, numbers, underscores, and hyphens (e.g., \"slack\", \"my-slack\", \"slack_prod\")',\n context: { alias },\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 // Plugin errors\n static invalidPluginAlias(alias: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_PLUGIN_ALIAS,\n severity: ValidationSeverity.ERROR,\n message: `Invalid plugin alias '${alias}'`,\n file: 'agent.config.ts',\n hint: 'Plugin aliases must be 2-100 characters and contain only lowercase letters, numbers, underscores, and hyphens (e.g., \"hitl\", \"my-plugin\")',\n context: { alias },\n }\n }\n\n static invalidPluginVersionFormat(plugin: 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 plugin '${plugin}'`,\n file: 'agent.config.ts',\n hint: 'Use exact versioning (e.g., \"1.2.3\", \"2.0.0\", \"1.5.0\")',\n context: { plugin, version },\n }\n }\n\n static unknownPlugin(plugin: string, source: string, detailedMessage?: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.UNKNOWN_PLUGIN,\n severity: ValidationSeverity.ERROR,\n message: detailedMessage || `Unknown plugin '${plugin}' from source '${source}'`,\n file: 'agent.config.ts',\n hint: detailedMessage ? undefined : `Check if the plugin name is correct or if it exists on the Botpress Hub`,\n context: { plugin, source },\n }\n }\n\n static invalidPluginDependency(plugin: string, integrationAlias: string, availableIntegrations: string[]): ValidationError {\n const available = availableIntegrations.length > 0 ? availableIntegrations.join(', ') : '(none)'\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.INVALID_PLUGIN_DEPENDENCY,\n severity: ValidationSeverity.ERROR,\n message: `Plugin \"${plugin}\" references integration \"${integrationAlias}\" in its dependencies, but \"${integrationAlias}\" is not declared in dependencies.integrations`,\n file: 'agent.config.ts',\n hint: `Add \"${integrationAlias}\" to dependencies.integrations, or update the plugin dependency to reference one of: ${available}`,\n context: { plugin, integrationAlias, availableIntegrations },\n }\n }\n\n static pluginVersionError(plugin: string, errorMessage: string): ValidationError {\n return {\n $type: ValidationErrors.$type,\n code: ValidationErrorCode.UNKNOWN_PLUGIN,\n severity: ValidationSeverity.ERROR,\n message: errorMessage,\n file: 'agent.config.ts',\n hint: `Update the version for \"${plugin}\" in agent.config.ts dependencies`,\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
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
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
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",
@@ -32,7 +32,7 @@
32
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",
33
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.config) {\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 config object 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",
34
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",
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 alias validation constants (matching Botpress API requirements)\nconst INTEGRATION_ALIAS_MIN_LENGTH = 2\nconst INTEGRATION_ALIAS_MAX_LENGTH = 100\n\n// Regex for valid integration alias: lowercase alphanumeric with optional workspace prefix\n// Matches: \"slack\", \"my-slack\", \"slack_prod\", \"workspace/slack\", \"my-workspace/my-integration\"\nconst INTEGRATION_ALIAS_REGEX = /^(?:[a-z][a-z0-9_-]*\\/)?[a-z][a-z0-9_-]*$/\n\n/**\n * Validates an integration alias according to Botpress API requirements\n */\nfunction isIntegrationAliasValid(alias: string): boolean {\n return (\n alias.length >= INTEGRATION_ALIAS_MIN_LENGTH &&\n alias.length <= INTEGRATION_ALIAS_MAX_LENGTH &&\n INTEGRATION_ALIAS_REGEX.test(alias)\n )\n}\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 // Validate alias format\n if (!isIntegrationAliasValid(alias)) {\n errors.push(ValidationErrors.invalidIntegrationAlias(alias))\n continue // Skip this integration, alias is invalid\n }\n\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 with identical configs (different aliases pointing to same integration)\n */\n static checkDuplicates(integrations: ParsedIntegration[]): ValidationError[] {\n const errors: ValidationError[] = []\n const seen = new Map<string, ParsedIntegration[]>()\n\n for (const integration of integrations) {\n const key = integration.ref.fullName\n const group = seen.get(key) || []\n group.push(integration)\n seen.set(key, group)\n }\n\n // Report duplicates only if they have the same configuration\n for (const [integrationName, group] of seen.entries()) {\n if (group.length > 1) {\n // Check if any two have identical configs\n const duplicateConfigs: string[] = []\n for (let i = 0; i < group.length; i++) {\n for (let j = i + 1; j < group.length; j++) {\n const configA = JSON.stringify(group[i]!.config ?? {})\n const configB = JSON.stringify(group[j]!.config ?? {})\n if (configA === configB) {\n // Add both aliases if not already in the list\n if (!duplicateConfigs.includes(group[i]!.alias)) {\n duplicateConfigs.push(group[i]!.alias)\n }\n if (!duplicateConfigs.includes(group[j]!.alias)) {\n duplicateConfigs.push(group[j]!.alias)\n }\n }\n }\n }\n\n if (duplicateConfigs.length > 0) {\n errors.push(\n ValidationErrors.warning(\n `Integration '${integrationName}' has aliases with identical configurations: ${duplicateConfigs.join(', ')}. Consider using different configs or removing duplicates.`,\n 'agent.config.ts'\n )\n )\n }\n }\n }\n\n return errors\n }\n}\n",
35
+ "import { z, ZodIssueCode } from '@botpress/sdk'\nimport { Dependencies } from './types.js'\nimport { IntegrationRef, ParsedIntegration } from '../integrations/types.js'\nimport { PluginRef, ParsedPlugin } from '../plugins/types.js'\nimport { ValidationErrors } from './validation-errors.js'\nimport { ValidationError } from './types.js'\n\n// Integration alias validation constants (matching Botpress API requirements)\nconst INTEGRATION_ALIAS_MIN_LENGTH = 2\nconst INTEGRATION_ALIAS_MAX_LENGTH = 100\n\n// Regex for valid integration alias: lowercase alphanumeric with optional workspace prefix\n// Matches: \"slack\", \"my-slack\", \"slack_prod\", \"workspace/slack\", \"my-workspace/my-integration\"\nconst INTEGRATION_ALIAS_REGEX = /^(?:[a-z][a-z0-9_-]*\\/)?[a-z][a-z0-9_-]*$/\n\n/**\n * Validates an integration alias according to Botpress API requirements\n */\nfunction isIntegrationAliasValid(alias: string): boolean {\n return (\n alias.length >= INTEGRATION_ALIAS_MIN_LENGTH &&\n alias.length <= INTEGRATION_ALIAS_MAX_LENGTH &&\n INTEGRATION_ALIAS_REGEX.test(alias)\n )\n}\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 // Validate alias format\n if (!isIntegrationAliasValid(alias)) {\n errors.push(ValidationErrors.invalidIntegrationAlias(alias))\n continue // Skip this integration, alias is invalid\n }\n\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 with identical configs (different aliases pointing to same integration)\n */\n static checkDuplicates(integrations: ParsedIntegration[]): ValidationError[] {\n const errors: ValidationError[] = []\n const seen = new Map<string, ParsedIntegration[]>()\n\n for (const integration of integrations) {\n const key = integration.ref.fullName\n const group = seen.get(key) || []\n group.push(integration)\n seen.set(key, group)\n }\n\n // Report duplicates only if they have the same configuration\n for (const [integrationName, group] of seen.entries()) {\n if (group.length > 1) {\n // Check if any two have identical configs\n const duplicateConfigs: string[] = []\n for (let i = 0; i < group.length; i++) {\n for (let j = i + 1; j < group.length; j++) {\n const configA = JSON.stringify(group[i]!.config ?? {})\n const configB = JSON.stringify(group[j]!.config ?? {})\n if (configA === configB) {\n // Add both aliases if not already in the list\n if (!duplicateConfigs.includes(group[i]!.alias)) {\n duplicateConfigs.push(group[i]!.alias)\n }\n if (!duplicateConfigs.includes(group[j]!.alias)) {\n duplicateConfigs.push(group[j]!.alias)\n }\n }\n }\n }\n\n if (duplicateConfigs.length > 0) {\n errors.push(\n ValidationErrors.warning(\n `Integration '${integrationName}' has aliases with identical configurations: ${duplicateConfigs.join(', ')}. Consider using different configs or removing duplicates.`,\n 'agent.config.ts'\n )\n )\n }\n }\n }\n\n return errors\n }\n}\n\n// Plugin alias validation constants\nconst PLUGIN_ALIAS_MIN_LENGTH = 2\nconst PLUGIN_ALIAS_MAX_LENGTH = 100\n\n// Regex for valid plugin alias: lowercase alphanumeric, no workspace prefix\n// Matches: \"hitl\", \"my-plugin\", \"some_plugin\"\nconst PLUGIN_ALIAS_REGEX = /^[a-z][a-z0-9_-]*$/\n\n/**\n * Validates a plugin alias (same rules as integrations, but no workspace prefix allowed)\n */\nfunction isPluginAliasValid(alias: string): boolean {\n return (\n alias.length >= PLUGIN_ALIAS_MIN_LENGTH &&\n alias.length <= PLUGIN_ALIAS_MAX_LENGTH &&\n PLUGIN_ALIAS_REGEX.test(alias)\n )\n}\n\n// Plugin reference schema: name@version only, no workspace prefix\nconst pluginRefSchema = z.string().transform((val, ctx) => {\n // Match pattern: name@version (no workspace prefix allowed)\n const match = val.match(/^([^/@]+)@(.+)$/)\n\n if (!match) {\n ctx.addIssue({\n code: ZodIssueCode.custom,\n message: `Invalid plugin version format: ${val}. Expected format: 'name@version' (no workspace prefix)`,\n })\n return z.NEVER\n }\n\n const [, name, version] = match\n\n return {\n name: name!,\n version: version!,\n fullName: name!,\n }\n})\n\nexport class PluginParser {\n /**\n * Parse a plugin version string into its components\n * Examples:\n * - \"hitl@1.3.0\" -> { name: 'hitl', version: '1.3.0', fullName: 'hitl' }\n * - \"myworkspace/hitl@1.0.0\" -> error (no workspace prefix)\n */\n static parsePluginRef(versionString: string): PluginRef {\n const result = pluginRefSchema.safeParse(versionString)\n if (!result.success) {\n throw new Error(result.error.errors[0]?.message || 'Invalid plugin version format')\n }\n return result.data\n }\n\n /**\n * Parse plugins from dependencies object\n */\n static parsePlugins(dependencies: Dependencies): {\n plugins: ParsedPlugin[]\n errors: ValidationError[]\n } {\n const plugins: ParsedPlugin[] = []\n const errors: ValidationError[] = []\n\n if (!dependencies.plugins) {\n return { plugins, errors }\n }\n\n for (const [alias, value] of Object.entries(dependencies.plugins)) {\n try {\n if (!isPluginAliasValid(alias)) {\n errors.push(ValidationErrors.invalidPluginAlias(alias))\n continue\n }\n\n const ref = this.parsePluginRef(value.version)\n\n const versionResult = versionSchema.safeParse(ref.version)\n if (!versionResult.success) {\n errors.push(ValidationErrors.invalidPluginVersionFormat(alias, ref.version))\n }\n\n plugins.push({\n alias,\n ref,\n config: value.config,\n dependencies: value.dependencies,\n })\n } catch (error) {\n errors.push(\n ValidationErrors.invalidDependenciesSyntax(\n `Invalid plugin '${alias}': ${error instanceof Error ? error.message : String(error)}`\n )\n )\n }\n }\n\n return { plugins, errors }\n }\n\n /**\n * Validate that plugin dependency integrationAlias values reference integrations\n * that are actually declared in dependencies.integrations\n */\n static validateDependencyReferences(dependencies: Dependencies): ValidationError[] {\n const errors: ValidationError[] = []\n\n if (!dependencies.plugins) {\n return errors\n }\n\n const integrationAliases = Object.keys(dependencies.integrations || {})\n\n for (const [alias, pluginConfig] of Object.entries(dependencies.plugins)) {\n if (!pluginConfig.dependencies) {\n continue\n }\n\n for (const [depAlias, depMapping] of Object.entries(pluginConfig.dependencies)) {\n if (!integrationAliases.includes(depMapping.integrationAlias)) {\n errors.push(\n ValidationErrors.invalidPluginDependency(alias, depMapping.integrationAlias, integrationAliases)\n )\n }\n }\n }\n\n return errors\n }\n\n /**\n * Check for duplicate plugin names (different aliases pointing to same plugin)\n */\n static checkDuplicates(plugins: ParsedPlugin[]): ValidationError[] {\n const errors: ValidationError[] = []\n const seen = new Map<string, ParsedPlugin[]>()\n\n for (const plugin of plugins) {\n const key = plugin.ref.fullName\n const group = seen.get(key) || []\n group.push(plugin)\n seen.set(key, group)\n }\n\n for (const [pluginName, group] of seen.entries()) {\n if (group.length > 1) {\n const duplicateConfigs: string[] = []\n for (let i = 0; i < group.length; i++) {\n for (let j = i + 1; j < group.length; j++) {\n const configA = JSON.stringify(group[i]!.config ?? {})\n const configB = JSON.stringify(group[j]!.config ?? {})\n if (configA === configB) {\n if (!duplicateConfigs.includes(group[i]!.alias)) {\n duplicateConfigs.push(group[i]!.alias)\n }\n if (!duplicateConfigs.includes(group[j]!.alias)) {\n duplicateConfigs.push(group[j]!.alias)\n }\n }\n }\n }\n\n if (duplicateConfigs.length > 0) {\n errors.push(\n ValidationErrors.warning(\n `Plugin '${pluginName}' has aliases with identical configurations: ${duplicateConfigs.join(', ')}. Consider using different configs or removing duplicates.`,\n 'agent.config.ts'\n )\n )\n }\n }\n }\n\n return errors\n }\n}\n",
36
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",
37
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 // 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 const existingConfigurationType =\n existingEntry && typeof existingEntry === 'object' ? existingEntry.configurationType : undefined\n\n const configurationType =\n existingConfigurationType || this.selectBestConfigurationType(integrationDefinition.configurations)\n\n let requiresConfiguration = false\n const selectedConfigDef =\n (configurationType && integrationDefinition.configurations?.[configurationType]) ||\n integrationDefinition.configurations?.['default'] ||\n integrationDefinition.configuration\n\n if (selectedConfigDef) {\n if (selectedConfigDef.identifier?.required === true) {\n requiresConfiguration = true\n }\n if (selectedConfigDef.schema?.required && selectedConfigDef.schema.required.length > 0) {\n requiresConfiguration = true\n }\n }\n\n // Get or generate config (preserves existing if present)\n const config =\n requiresConfiguration && !existingConfig\n ? this.getPlaceholderConfig(integrationDefinition, configurationType)\n : existingConfig\n\n // Preserve existing configuration if it's an object\n if (existingEntry && typeof existingEntry === 'object' && 'version' in existingEntry) {\n const resolvedConfigType = existingEntry.configurationType || configurationType\n dependencies.integrations[alias] = {\n version: integrationVersion,\n enabled: existingEntry.enabled,\n ...(resolvedConfigType ? { configurationType: resolvedConfigType } : {}),\n config: existingEntry.config,\n }\n } else {\n // Order: version, enabled, configurationType (if modern), config\n dependencies.integrations[alias] = {\n version: integrationVersion,\n enabled: !requiresConfiguration,\n ...(configurationType ? { configurationType } : {}),\n config: config,\n }\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 // Select the 'easiest' configuration type from available options.\n private selectBestConfigurationType(configurations: Record<string, any> | undefined): string | undefined {\n if (!configurations || Object.keys(configurations).length === 0) {\n return undefined\n }\n\n const keys = Object.keys(configurations)\n\n if (keys.length === 1) {\n return keys[0]!\n }\n\n const priority = ['apiKey', 'api', 'api_key', 'token', 'default', 'refreshToken', 'oauth', 'oauth2']\n\n for (const preferred of priority) {\n const match = keys.find((k) => k.toLowerCase() === preferred.toLowerCase())\n if (match) return match\n }\n\n return keys[0]!\n }\n\n /**\n * Generate placeholder config values from integration schema\n */\n private getPlaceholderConfig(\n integrationDefinition: IntegrationDefinition,\n configurationType?: string\n ): Record<string, any> | undefined {\n // Generate config placeholders from schema\n const configPlaceholder: Record<string, any> = {}\n\n // Try modern configurations format first (using selected configuration type)\n const configDef =\n (configurationType && integrationDefinition.configurations?.[configurationType]) ||\n integrationDefinition.configurations?.['default'] ||\n integrationDefinition.configuration\n\n if (configDef) {\n const schema = configDef.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 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",
38
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",
@@ -49,12 +49,16 @@
49
49
  "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 { ConfigWriter } from './config-writer.js'\nexport * from './types.js'\n",
50
50
  "import { Client } from '@botpress/client'\nimport { z } from '@botpress/sdk'\nimport { sync as jex } from '@bpinternal/jex'\nimport { auth } from '../auth'\n\nexport interface StoredConfig {\n [key: string]: any\n}\n\nexport class ConfigManager {\n private botId: string\n private client: Client | undefined\n\n constructor(botId: string) {\n this.botId = botId\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = await auth.getActiveCredentials()\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 /**\n * Load stored configuration from bot.configuration.data\n */\n async load(): Promise<StoredConfig> {\n try {\n const client = await this.getClient()\n const { bot } = await client.getBot({ id: this.botId })\n return (bot.configuration?.data as StoredConfig) || {}\n } catch (error) {\n console.warn(`Failed to load configuration from bot ${this.botId}:`, error)\n return {}\n }\n }\n\n /**\n * Save configuration to bot.configuration\n */\n async save(config: StoredConfig, schema?: z.ZodObject<any>): Promise<void> {\n try {\n const client = await this.getClient()\n const { bot } = await client.getBot({ id: this.botId })\n\n // Update schema if provided and different\n const updates: any = {\n id: this.botId,\n configuration: {\n data: config,\n },\n }\n\n if (schema) {\n const schemaJson = schema.toJSONSchema()\n const currentSchema = bot.configuration?.schema || {}\n\n // Use jex to compare schemas (synchronous comparison)\n if (!jex.jsonSchemaEquals(currentSchema, schemaJson)) {\n updates.configuration.schema = schemaJson\n }\n }\n\n await client.updateBot(updates)\n } catch (error) {\n throw new Error(`Failed to save configuration to bot ${this.botId}: ${error}`)\n }\n }\n\n /**\n * Get a configuration value\n */\n async get(key: string): Promise<any | undefined> {\n const config = await this.load()\n return config[key]\n }\n\n /**\n * Set a configuration value\n */\n async set(key: string, value: any, schema?: z.ZodObject<any>): Promise<void> {\n const config = await this.load()\n config[key] = value\n await this.save(config, schema)\n }\n\n /**\n * Get all configuration values\n */\n async getAll(): Promise<Record<string, any>> {\n return await this.load()\n }\n\n /**\n * Validate configuration against a schema\n * Returns { valid: boolean, errors: string[], missing: string[] }\n */\n async validate(schema: z.ZodObject<any>): Promise<{\n valid: boolean\n errors: string[]\n missing: string[]\n }> {\n const config = await this.getAll()\n const result = schema.safeParse(config)\n\n if (result.success) {\n return { valid: true, errors: [], missing: [] }\n }\n\n const errors: string[] = []\n const missing: string[] = []\n\n for (const issue of result.error.issues) {\n const key = issue.path.join('.')\n if (issue.code === 'invalid_type' && issue.received === 'undefined') {\n missing.push(key)\n }\n errors.push(`${key}: ${issue.message}`)\n }\n\n return { valid: false, errors, missing }\n }\n\n /**\n * Get missing required configuration keys\n */\n async getMissingKeys(schema: z.ZodObject<any>): Promise<string[]> {\n const validation = await this.validate(schema)\n return validation.missing\n }\n\n /**\n * Check if configuration is valid\n */\n async isValid(schema: z.ZodObject<any>): Promise<boolean> {\n const validation = await this.validate(schema)\n return validation.valid\n }\n}\n",
51
51
  "import * as fs from 'fs'\nimport * as path from 'path'\nimport { formatCode } from '../generators/utils.js'\nimport { Dependencies } from '../agent-project/types.js'\n// @ts-expect-error - Bun import attribute for text\nimport claudeTemplateContent from './CLAUDE.template.md' with { type: 'text' }\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 this.createClaudeMd()\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 createClaudeMd(): void {\n this.writeFile('CLAUDE.md', claudeTemplateContent as string)\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",
52
+ "import fs from 'fs/promises'\nimport path from 'path'\nimport os from 'os'\nimport { PluginDefinition } from './types.js'\n\ninterface VersionResolution {\n pluginId: string\n updatedAt: string\n cachedAt: string\n}\n\ninterface CachedDefinition {\n definition: PluginDefinition\n cachedAt: string\n}\n\nexport class EnhancedPluginCache {\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', 'plugins')\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 → pluginId + updatedAt)\n * Returns null if cache miss or expired (5 minutes)\n */\n async getResolution(name: string, version: string): Promise<VersionResolution | null> {\n if (this.noCache) {\n return null\n }\n\n try {\n const key = this.getResolutionKey(name, version)\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 return null\n }\n\n return resolution\n } catch {\n return null\n }\n }\n\n /**\n * Cache version resolution (name@version → pluginId + updatedAt)\n */\n async setResolution(name: string, version: string, pluginId: string, updatedAt: string): Promise<void> {\n await this.ensureCacheDirs()\n\n const key = this.getResolutionKey(name, version)\n const cachePath = path.join(this.resolutionsDir, `${key}.json`)\n\n const resolution: VersionResolution = {\n pluginId,\n updatedAt,\n cachedAt: new Date().toISOString(),\n }\n\n await fs.writeFile(cachePath, JSON.stringify(resolution, null, 2))\n }\n\n /**\n * Get plugin definition from cache (pluginId + updatedAt → definition)\n * Never expires for same pluginId + updatedAt (immutable)\n */\n async getDefinition(pluginId: string, updatedAt: string): Promise<PluginDefinition | null> {\n if (this.noCache) {\n return null\n }\n\n try {\n const key = this.getDefinitionKey(pluginId, 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 return null\n }\n }\n\n /**\n * Cache plugin definition (pluginId + updatedAt → definition)\n */\n async setDefinition(pluginId: string, updatedAt: string, definition: PluginDefinition): Promise<void> {\n await this.ensureCacheDirs()\n\n const key = this.getDefinitionKey(pluginId, 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 const resolutionFiles = await fs.readdir(this.resolutionsDir)\n await Promise.all(resolutionFiles.map((file) => fs.unlink(path.join(this.resolutionsDir, file))))\n\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): string {\n const key = `${name}_${version}`\n return key.replace(/[^a-zA-Z0-9_-]/g, '_')\n }\n\n private getDefinitionKey(pluginId: string, updatedAt: string): string {\n const key = `${pluginId}_${updatedAt}`\n return key.replace(/[^a-zA-Z0-9_-]/g, '_')\n }\n}\n",
53
+ "import { Client } from '@botpress/client'\nimport { auth, Credentials } from '../auth/index.js'\nimport { Dependencies, ValidationError } from '../agent-project/types.js'\nimport { PluginDefinition, PluginRef, ParsedPlugin } from './types.js'\nimport { EnhancedPluginCache } from './enhanced-cache.js'\nimport { PluginParser } from '../agent-project/dependencies-parser.js'\nimport { ValidationErrors } from '../agent-project/validation-errors.js'\n\nexport interface PluginManagerOptions {\n noCache?: boolean\n workspaceId?: string\n credentials?: Credentials\n}\n\nexport class PluginManager {\n private cache: EnhancedPluginCache\n private options: PluginManagerOptions\n private client?: Client\n\n constructor(options: PluginManagerOptions = {}) {\n this.options = options\n this.cache = new EnhancedPluginCache(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 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 plugins from dependencies\n */\n async loadPlugins(dependencies: Dependencies): Promise<{\n plugins: ParsedPlugin[]\n errors: ValidationError[]\n warnings: ValidationError[]\n }> {\n const errors: ValidationError[] = []\n const warnings: ValidationError[] = []\n\n // Parse plugins from dependencies\n const parseResult = PluginParser.parsePlugins(dependencies)\n const plugins = parseResult.plugins\n errors.push(...parseResult.errors)\n\n // Check for duplicates\n const duplicateWarnings = PluginParser.checkDuplicates(plugins)\n warnings.push(...duplicateWarnings)\n\n // Fetch plugin definitions in parallel\n const fetchPromises = plugins.map(async (plugin) => {\n try {\n plugin.definition = await this.fetchPlugin(plugin.ref)\n } catch (error) {\n if (error instanceof Error && error.message.includes('version')) {\n errors.push(ValidationErrors.pluginVersionError(plugin.alias, error.message))\n } else {\n const errorMessage = error instanceof Error ? error.message : undefined\n errors.push(ValidationErrors.unknownPlugin(plugin.alias, plugin.ref.fullName, errorMessage))\n }\n }\n })\n\n await Promise.all(fetchPromises)\n\n return { plugins, errors, warnings }\n }\n\n /**\n * Fetch plugin definition from API or cache (public Hub only)\n */\n public async fetchPlugin(ref: PluginRef): Promise<PluginDefinition> {\n // Level 1: Check version resolution cache\n const cachedResolution = await this.cache.getResolution(ref.name, ref.version)\n\n if (cachedResolution) {\n // Level 2: Check definition cache\n const cachedDefinition = await this.cache.getDefinition(cachedResolution.pluginId, cachedResolution.updatedAt)\n\n if (cachedDefinition) {\n return cachedDefinition\n }\n }\n\n // No cache hit, fetch from API\n const client = await this.getClient()\n const plugin = await this._findPublicPlugin(client, ref)\n\n if (!plugin) {\n throw new Error(`Plugin \"${ref.name}\" not found on the Botpress Hub`)\n }\n\n // Cache Level 1: Version resolution\n await this.cache.setResolution(ref.name, ref.version, plugin.id, plugin.updatedAt)\n\n // Cache Level 2: Definition\n await this.cache.setDefinition(plugin.id, plugin.updatedAt, plugin)\n\n return plugin\n }\n\n /**\n * Find public plugin on the Botpress Hub\n */\n private async _findPublicPlugin(client: Client, ref: PluginRef): Promise<PluginDefinition | undefined> {\n try {\n const response = await client.getPublicPlugin({\n name: ref.name,\n version: ref.version,\n })\n return response.plugin\n } catch (error) {\n if (this._isResourceNotFoundError(error)) {\n return undefined\n }\n throw error\n }\n }\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 * Get cache statistics\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 /**\n * Clear plugin cache\n */\n async clearCache(): Promise<void> {\n await this.cache.clear()\n }\n}\n",
52
54
  "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",
53
55
  "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 configurations: `Integration_Configurations_${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 configurations: path.join(snakeCase(getPascalAlias(integration)), `configurations.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_Configurations_${getPascalAlias(integration)} } from \"${rel(names.paths.configurations)}\";\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.configurations)}\";\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 configurations: Integration_Configurations_${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 alias instead of ref.fullName since the API returns tags with the alias prefix\n acc += `${comment}\\n[\"${integration.alias}:${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 alias instead of ref.fullName since the API returns tags with the alias prefix\n acc += `${comment}\\n[\"${integration.alias}:${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 alias instead of ref.fullName since the API returns tags with the alias prefix\n return `${comment}\\n\"${integration.alias}:${t}\"\\n`\n })\n .join(' | ')\n : 'never'\n\n tUsers += `\n tags: ${userTagsUnion};\n };\n `\n\n // Generate configurations map type with JSDoc comments\n let tConfigurations = `\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.configurations}\n // Hash: ${hash}\n // Updated at: ${integration.definition?.updatedAt}\n ////////////////////////////////////////////////////////\n\n export type Integration_Configurations_${getPascalAlias(integration)} = `\n\n const configEntries: string[] = []\n\n // Add \"default\" configuration from .configuration if it exists\n if (integration.definition?.configuration) {\n const defaultConfig = integration.definition.configuration as any\n const title = defaultConfig.title || 'Default'\n const description = defaultConfig.description || 'Default configuration'\n const schema = defaultConfig.schema\n\n let tsType = '{}'\n if (schema) {\n tsType = transforms.fromJSONSchema(schema).toTypescriptType()\n }\n\n // Build JSDoc comment\n const jsdocLines: string[] = ['/**']\n jsdocLines.push(` * @title ${title}`)\n if (description) {\n jsdocLines.push(` * ${description}`)\n }\n jsdocLines.push(' */')\n\n configEntries.push(`${jsdocLines.join('\\n ')}\\n default: ${tsType}`)\n }\n\n // Add configurations from .configurations\n if (integration.definition?.configurations) {\n for (const [key, config] of Object.entries(integration.definition.configurations)) {\n const title = (config as any).title || key\n const description = (config as any).description || ''\n const schema = (config as any).schema\n\n let tsType = '{}'\n if (schema) {\n tsType = transforms.fromJSONSchema(schema).toTypescriptType()\n }\n\n // Build JSDoc comment\n const jsdocLines: string[] = ['/**']\n jsdocLines.push(` * @title ${title}`)\n if (description) {\n jsdocLines.push(` * ${description}`)\n }\n jsdocLines.push(' */')\n\n configEntries.push(`${jsdocLines.join('\\n ')}\\n ${key}: ${tsType}`)\n }\n }\n\n if (configEntries.length > 0) {\n tConfigurations += `{\n ${configEntries.join(';\\n ')};\n};`\n } else {\n tConfigurations += `Record<string, never>;`\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.configurations]: await formatCode(tConfigurations),\n },\n }\n}\n",
54
56
  "export function pascalCase(str: string): string {\n return str\n .split(/[-_\\s]+/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join('')\n}\n\nexport function camelCase(str: string): string {\n const pascal = pascalCase(str)\n return pascal.charAt(0).toLowerCase() + pascal.slice(1)\n}\n\nexport function kebabCase(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_]+/g, '-')\n .toLowerCase()\n}\n\nexport function snakeCase(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, '$1_$2')\n .replace(/[\\s-]+/g, '_')\n .toLowerCase()\n}\n",
55
- "export function getIntegrationAlias(integrationName: string) {\n return integrationName.replace(/\\//g, '__').replace(/-/g, '_').toLowerCase()\n}\n",
57
+ "export function getIntegrationAlias(integrationName: string) {\n return integrationName.replace(/\\//g, '__').replace(/-/g, '_').toLowerCase()\n}\n\nexport function getPluginAlias(pluginName: string) {\n return pluginName.replace(/-/g, '_').toLowerCase()\n}\n",
56
58
  "import path from 'path'\nimport crypto from 'crypto'\nimport { readFile } from 'fs/promises'\nimport { AgentProject } from '../agent-project/agent-project.js'\nimport { ADK_VERSION, formatCode } from './utils.js'\nimport { createFile } from '../utils/fs.js'\nimport { BuiltInWorkflows } from '@botpress/runtime/internal'\n\nfunction isBuiltinWorkflow(name: string): boolean {\n return !!Object.values(BuiltInWorkflows).find((x) => x.name === name)\n}\n\nexport async function generateClientWrapper(project: AgentProject): Promise<void> {\n // Extract action types\n const actionTypes: Array<{ name: string; inputType: string; outputType: string }> = []\n\n for (const action of project.actions) {\n // Skip hidden actions\n if (action.definition.attributes?.visibility === 'hidden') {\n continue\n }\n\n try {\n // Skip built-in actions\n if (action.path === '<adk:builtin>') {\n actionTypes.push({\n name: action.definition.name,\n inputType: 'any',\n outputType: 'any',\n })\n continue\n }\n\n // Import the action module to get types\n const absolutePath = path.join(project.path, action.path)\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 const inputType = actionInstance.input.toTypescriptType\n ? actionInstance.input.toTypescriptType({ treatDefaultAsOptional: true })\n : 'any'\n const outputType = actionInstance.output.toTypescriptType\n ? actionInstance.output.toTypescriptType()\n : 'any'\n\n actionTypes.push({\n name: action.definition.name,\n inputType,\n outputType,\n })\n }\n } catch (error) {\n console.warn(`Warning: Could not process action ${action.definition.name}:`, error)\n actionTypes.push({\n name: action.definition.name,\n inputType: 'any',\n outputType: 'any',\n })\n }\n }\n\n // Extract workflow types\n const workflowTypes: Array<{ name: string; inputType: string; outputType: string }> = []\n\n for (const workflow of project.workflows) {\n try {\n if (isBuiltinWorkflow(workflow.definition.name)) {\n continue\n }\n\n const workflowPath = path.join(project.path, workflow.path)\n const workflowModule = await import(`${workflowPath}?t=${Date.now()}`)\n const workflowInstance = workflowModule[workflow.export] || workflowModule.default\n\n if (workflowInstance) {\n const inputType = workflowInstance.inputSchema\n ? (workflowInstance.inputSchema as any).toTypescriptType?.({ treatDefaultAsOptional: true }) || 'any'\n : '{}'\n\n const outputType = workflowInstance.outputSchema\n ? (workflowInstance.outputSchema as any).toTypescriptType?.() || 'any'\n : '{}'\n\n workflowTypes.push({\n name: workflow.definition.name,\n inputType,\n outputType,\n })\n }\n } catch (error) {\n console.warn(`Warning: Could not process workflow ${workflow.definition.name}:`, error)\n }\n }\n\n // Extract table types\n const tableTypes: Array<{\n name: string\n inputType: string\n outputType: string\n }> = []\n\n for (const table of project.tables) {\n try {\n const tablePath = path.join(project.path, table.path)\n const tableModule = await import(`${tablePath}?t=${Date.now()}`)\n const tableInstance = tableModule.default || tableModule[table.export]\n\n if (tableInstance && tableInstance.columns) {\n const inputColumns: string[] = []\n const outputColumns: string[] = ['id: number', 'createdAt: string', 'updatedAt: string']\n\n for (const [colName, colDef] of Object.entries(tableInstance.columns)) {\n let schema: any\n let computed = false\n\n if (typeof colDef === 'object' && colDef !== null && 'schema' in colDef) {\n schema = (colDef as any).schema\n computed = (colDef as any).computed || false\n } else {\n schema = colDef\n }\n\n const tsType = schema.toTypescriptType ? schema.toTypescriptType({ treatDefaultAsOptional: true }) : 'any'\n\n if (!computed) {\n inputColumns.push(`${colName}: ${tsType}`)\n }\n outputColumns.push(`${colName}: ${tsType}`)\n }\n\n tableTypes.push({\n name: table.definition.name,\n inputType: `{ ${inputColumns.join('; ')} }`,\n outputType: `{ ${outputColumns.join('; ')} }`,\n })\n }\n } catch (error) {\n console.warn(`Warning: Could not process table ${table.definition.name}:`, error)\n }\n }\n\n // Generate the client wrapper code\n const content = `\n// @ts-nocheck\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\nimport type { Client, Workflow } from '@botpress/client'\n\n// Utility type to simplify complex types\ntype Simplify<T> = T extends (...args: infer A) => infer R\n ? (...args: SimplifyTuple<A>) => Simplify<R>\n : T extends Array<infer E>\n ? Array<Simplify<E>>\n : T extends ReadonlyArray<infer E>\n ? ReadonlyArray<Simplify<E>>\n : T extends Promise<infer R>\n ? Promise<Simplify<R>>\n : T extends Buffer\n ? Buffer\n : T extends object\n ? SimplifyObject<T>\n : T\n\ntype SimplifyTuple<T> = T extends [...infer A] ? { [K in keyof A]: Simplify<A[K]> } : never\ntype SimplifyObject<T extends object> = T extends infer O ? { [K in keyof O]: Simplify<O[K]> } : never\n\ntype GenericWorkflowInput = Record<string, any>\ntype GenericWorkflowOutput = Record<string, any>\n\ntype TypedWorkflow<TInput = GenericWorkflowInput, TOutput = GenericWorkflowOutput> = Simplify<\n Omit<Workflow, 'input' | 'output'> & {\n input: TInput\n output: TOutput\n }\n>\n\n// Extract response types from Client methods\ntype CreateWorkflowResponse = Simplify<Awaited<ReturnType<Client['createWorkflow']>>>\ntype GetWorkflowResponse = Simplify<Awaited<ReturnType<Client['getWorkflow']>>>\ntype UpdateWorkflowResponse = Simplify<Awaited<ReturnType<Client['updateWorkflow']>>>\ntype DeleteWorkflowResponse = Simplify<Awaited<ReturnType<Client['deleteWorkflow']>>>\ntype GetOrCreateWorkflowResponse = Simplify<Awaited<ReturnType<Client['getOrCreateWorkflow']>>>\n\ntype CreateTableRowsResponse = Simplify<Awaited<ReturnType<Client['createTableRows']>>>\ntype UpdateTableRowsResponse = Simplify<Awaited<ReturnType<Client['updateTableRows']>>>\ntype UpsertTableRowsResponse = Simplify<Awaited<ReturnType<Client['upsertTableRows']>>>\ntype DeleteTableRowsResponse = Simplify<Awaited<ReturnType<Client['deleteTableRows']>>>\ntype FindTableRowsResponse = Simplify<Awaited<ReturnType<Client['findTableRows']>>>\ntype GetTableRowResponse = Simplify<Awaited<ReturnType<Client['getTableRow']>>>\n\n// Extract parameter types from Client methods\ntype ParamCreateWorkflow = Simplify<Parameters<Client['createWorkflow']>[0]>\ntype ParamGetWorkflow = Simplify<Parameters<Client['getWorkflow']>[0]>\ntype ParamUpdateWorkflow = Simplify<Parameters<Client['updateWorkflow']>[0]>\ntype ParamDeleteWorkflow = Simplify<Parameters<Client['deleteWorkflow']>[0]>\ntype ParamGetOrCreateWorkflow = Simplify<Parameters<Client['getOrCreateWorkflow']>[0]>\n\ntype ParamCreateTableRows = Simplify<Parameters<Client['createTableRows']>[0]>\ntype ParamUpdateTableRows = Simplify<Parameters<Client['updateTableRows']>[0]>\ntype ParamUpsertTableRows = Simplify<Parameters<Client['upsertTableRows']>[0]>\ntype ParamDeleteTableRows = Simplify<Parameters<Client['deleteTableRows']>[0]>\ntype ParamFindTableRows = Simplify<Parameters<Client['findTableRows']>[0]>\ntype ParamGetTableRow = Simplify<Parameters<Client['getTableRow']>[0]>\n\n/**\n * Typed ADK Client\n *\n * Provides strongly-typed wrappers around the Botpress Client for actions, workflows, and tables.\n */\nexport interface AdkClient {\n /**\n * Typed action calls\n */\n actions: {\n ${actionTypes\n .map(\n (action) => `\n /**\n * Call action: ${action.name}\n */\n '${action.name}': (input: ${action.inputType}) => Promise<${action.outputType}>\n `\n )\n .join('\\n')}\n }\n\n /**\n * Typed workflow operations\n */\n workflows: {\n ${workflowTypes\n .map(\n (workflow) => `\n '${workflow.name}': {\n /**\n * Create workflow: ${workflow.name}\n */\n createWorkflow: (params: Omit<ParamCreateWorkflow, 'name' | 'input'> & { input?: ${workflow.inputType} }) => Promise<Omit<CreateWorkflowResponse, 'workflow'> & { workflow: TypedWorkflow<${workflow.inputType}, ${workflow.outputType}> }>\n /**\n * Get workflow by ID\n */\n getWorkflow: (params: ParamGetWorkflow) => Promise<Omit<GetWorkflowResponse, 'workflow'> & { workflow: TypedWorkflow<${workflow.inputType}, ${workflow.outputType}> }>\n /**\n * Update workflow\n */\n updateWorkflow: (params: Omit<ParamUpdateWorkflow, 'output'> & { output?: ${workflow.outputType} }) => Promise<Omit<UpdateWorkflowResponse, 'workflow'> & { workflow: TypedWorkflow<${workflow.inputType}, ${workflow.outputType}> }>\n /**\n * Delete workflow\n */\n deleteWorkflow: (params: ParamDeleteWorkflow) => Promise<DeleteWorkflowResponse>\n /**\n * Get or create workflow with deduplication key\n */\n getOrCreateWorkflow: (params: Omit<ParamGetOrCreateWorkflow, 'name' | 'input'> & { input?: ${workflow.inputType} }) => Promise<Omit<GetOrCreateWorkflowResponse, 'workflow'> & { workflow: TypedWorkflow<${workflow.inputType}, ${workflow.outputType}> }>\n }\n `\n )\n .join('\\n')}\n }\n\n /**\n * Typed table operations\n */\n tables: {\n ${tableTypes\n .map(\n (table) => `\n '${table.name}': {\n /**\n * Find rows in table: ${table.name}\n */\n findTableRows: (params?: Omit<ParamFindTableRows, 'table'>) => Promise<Omit<FindTableRowsResponse, 'rows'> & { rows: Array<${table.outputType}> }>\n /**\n * Get a single row by ID\n */\n getTableRow: (params: Omit<ParamGetTableRow, 'table'>) => Promise<Omit<GetTableRowResponse, 'row'> & { row: ${table.outputType} }>\n /**\n * Create rows in table: ${table.name}\n */\n createTableRows: (params: Omit<ParamCreateTableRows, 'table'>) => Promise<Omit<CreateTableRowsResponse, 'rows'> & { rows: Array<${table.outputType}> }>\n /**\n * Update rows in table: ${table.name}\n */\n updateTableRows: (params: Omit<ParamUpdateTableRows, 'table'>) => Promise<Omit<UpdateTableRowsResponse, 'rows'> & { rows: Array<${table.outputType}> }>\n /**\n * Upsert rows in table: ${table.name}\n */\n upsertTableRows: (params: Omit<ParamUpsertTableRows, 'table'>) => Promise<Omit<UpsertTableRowsResponse, 'rows'> & { rows: Array<${table.outputType}> }>\n /**\n * Delete rows by IDs\n */\n deleteTableRows: (params: Omit<ParamDeleteTableRows, 'table'>) => Promise<Omit<DeleteTableRowsResponse, 'rows'> & { rows: Array<${table.outputType}> }>\n }\n `\n )\n .join('\\n')}\n }\n\n /**\n * Raw Botpress client (no additional typing)\n */\n client: Client\n}\n\n/**\n * Create a typed ADK client wrapper around a Botpress Client\n *\n * @example\n * \\`\\`\\`typescript\n * import { Client } from '@botpress/client'\n * import { createAdkClient } from './.adk/client'\n *\n * const client = new Client({ token: 'xxx', botId: 'yyy' })\n * const adk = createAdkClient(client)\n *\n * // Typed action calls\n * const result = await adk.actions.myAction({ foo: 'bar' })\n *\n * // Typed workflow operations\n * const wf = await adk.workflows.myWorkflow.createWorkflow({ input: { data: 'value' } })\n * const workflow = await adk.workflows.myWorkflow.getWorkflow({ id: wf.workflow.id })\n * await adk.workflows.myWorkflow.updateWorkflow({ id: wf.workflow.id, status: 'completed' })\n * await adk.workflows.myWorkflow.deleteWorkflow({ id: wf.workflow.id })\n * await adk.workflows.myWorkflow.getOrCreateWorkflow({ key: 'unique-key', input: { data: 'value' } })\n *\n * // Typed table operations\n * const rows = await adk.tables.myTable.findTableRows({ filter: { name: 'John' } })\n * const row = await adk.tables.myTable.getTableRow({ id: 123 })\n * await adk.tables.myTable.createTableRows({ rows: [{ name: 'Jane', age: 30 }] })\n * await adk.tables.myTable.updateTableRows({ rows: [{ id: 123, name: 'Jane' }] })\n * await adk.tables.myTable.upsertTableRows({ rows: [{ name: 'Bob', age: 25 }] })\n * await adk.tables.myTable.deleteTableRows({ ids: [123, 456] })\n * \\`\\`\\`\n */\nexport function createAdkClient(client: Client): AdkClient {\n return {\n actions: {\n ${actionTypes\n .map(\n (action) => `\n '${action.name}': async (input: ${action.inputType}) => {\n const response = await client.callAction({\n type: '${action.name}',\n input,\n })\n return response.output as ${action.outputType}\n }\n `\n )\n .join(',\\n')}\n },\n\n workflows: {\n ${workflowTypes\n .map(\n (workflow) => `\n '${workflow.name}': {\n createWorkflow: async (params) => {\n return client.createWorkflow({\n name: '${workflow.name}',\n ...params,\n }) as any\n },\n getWorkflow: async (params) => {\n return client.getWorkflow(params) as any\n },\n updateWorkflow: async (params) => {\n return client.updateWorkflow(params) as any\n },\n deleteWorkflow: async (params) => {\n return client.deleteWorkflow(params) as any\n },\n getOrCreateWorkflow: async (params) => {\n return client.getOrCreateWorkflow({\n name: '${workflow.name}',\n ...params,\n }) as any\n },\n }\n `\n )\n .join(',\\n')}\n },\n\n tables: {\n ${tableTypes\n .map(\n (table) => `\n '${table.name}': {\n findTableRows: async (params) => {\n return client.findTableRows({\n table: '${table.name}',\n ...params,\n }) as any\n },\n getTableRow: async (params) => {\n return client.getTableRow({\n table: '${table.name}',\n ...params,\n }) as any\n },\n createTableRows: async (params) => {\n return client.createTableRows({\n table: '${table.name}',\n ...params,\n }) as any\n },\n updateTableRows: async (params) => {\n return client.updateTableRows({\n table: '${table.name}',\n ...params,\n }) as any\n },\n upsertTableRows: async (params) => {\n return client.upsertTableRows({\n table: '${table.name}',\n ...params,\n }) as any\n },\n deleteTableRows: async (params) => {\n return client.deleteTableRows({\n table: '${table.name}',\n ...params,\n }) as any\n },\n }\n `\n )\n .join(',\\n')}\n },\n\n client,\n }\n}\n`\n\n // Write the client wrapper to .adk/client.ts\n const clientWrapperPath = path.join(project.path, '.adk', 'client.ts')\n const formattedContent = await formatCode(content)\n\n // Calculate hash of content without timestamp to detect actual changes\n const contentHash = crypto\n .createHash('sha256')\n .update(\n formattedContent\n // Remove the timestamp line for hash calculation\n .replace(/\\/\\/ Generated at: .+\\n/, '')\n )\n .digest('hex')\n\n // Check if file exists and has the same content hash\n try {\n const existingContent = await readFile(clientWrapperPath, 'utf-8')\n const existingHash = crypto\n .createHash('sha256')\n .update(\n existingContent\n // Remove the timestamp line for hash calculation\n .replace(/\\/\\/ Generated at: .+\\n/, '')\n )\n .digest('hex')\n\n // If content hasn't changed (ignoring timestamp), skip writing\n if (contentHash === existingHash) {\n return\n }\n } catch {\n // File doesn't exist or can't be read, proceed with writing\n }\n\n // Content has changed, write the file\n await createFile(clientWrapperPath, formattedContent)\n}\n",
57
- "import dedent from 'dedent'\nimport { existsSync } from 'fs'\nimport fs from 'fs/promises'\nimport path from 'path'\nimport { AgentProject } from '../agent-project/index.js'\nimport { fetchServerIntegrationConfigs, mergeIntegrationConfig, type FetchServerConfigsResult } from '../integrations/config-utils.js'\nimport type { SyncCallbacks } from '../preflight/types.js'\nimport { generateIntegrationTypes } from '../generators/integration-types.js'\nimport { generateInterfaceTypes } from '../generators/interface-types.js'\nimport { generateTableTypes } from '../generators/table-types.js'\nimport { generateTriggerTypes } from '../generators/trigger-types.js'\nimport { generateStateTypes } from '../generators/state-types.js'\nimport { generateTagTypes } from '../generators/tag-types.js'\nimport { generateConfigurationTypes } from '../generators/configuration-types.js'\nimport { generateWorkflowTypes } from '../generators/workflow-types.js'\nimport { generateConversationTypes } from '../generators/conversation-types.js'\nimport { generateEventTypes } from '../generators/event-types.js'\nimport { generateClientWrapper } from '../generators/client-wrapper.js'\nimport { IntegrationManager } from '../integrations/manager.js'\nimport { InterfaceManager } from '../interfaces/manager.js'\nimport { createFile } from '../utils/fs.js'\nimport { linkSdk } from '../utils/link-sdk.js'\nimport { pascalCase } from '../utils/strings.js'\nimport { DevIdManager } from './dev-id-manager.js'\nimport { IntegrationSync } from './integration-sync.js'\nimport { InterfaceSync } from './interface-sync.js'\nimport { formatCode, ADK_VERSION } from '../generators/utils.js'\nimport { transforms, z } from '@botpress/sdk'\nimport { getIntegrationAlias } from '../utils/ids.js'\nimport { BUILTIN_INTERFACES } from '../constants.js'\nimport { BuiltInActions, BuiltInWorkflows, Primitives, Workflow } from '@botpress/runtime/internal'\nimport { BUILT_IN_TAGS } from '@botpress/runtime/definition'\n\nexport interface BotGeneratorOptions {\n projectPath: string\n outputPath?: string\n adkCommand?: 'adk-dev' | 'adk-build' | 'adk-deploy'\n callbacks?: SyncCallbacks\n}\n\nconst plural = (n: number, word: string): string => `${n} ${word}${n === 1 ? '' : 's'}`\n\nfunction isBuiltinWorkflow(name: string): boolean {\n return !!Object.values(BuiltInWorkflows).find((x) => x.name === name)\n}\n\nfunction isBuiltinAction(name: string): boolean {\n return !!Object.values(BuiltInActions).find((x) => x.name === name)\n}\n\n/**\n * Generate a normalized import path for use in import statements\n * Converts Windows backslashes to forward slashes and removes .ts extension\n */\nfunction getImportPath(from: string, to: string): string {\n return path.relative(path.dirname(from), to).replace(/\\.ts$/, '').replace(/\\\\/g, '/')\n}\n\nexport class BotGenerator {\n private projectPath: string\n private outputPath: string\n private adkCommand?: 'adk-dev' | 'adk-build' | 'adk-deploy'\n private callbacks?: SyncCallbacks\n\n constructor(options: BotGeneratorOptions) {\n this.projectPath = path.resolve(options.projectPath)\n this.outputPath = path.resolve(options.outputPath || path.join(this.projectPath, '.adk'))\n this.adkCommand = options.adkCommand\n this.callbacks = options.callbacks\n }\n\n private async listFilesRecursive(rootDir: string): Promise<string[]> {\n try {\n if (!existsSync(rootDir)) return []\n const result: string[] = []\n const walk = async (dir: string, relativeBase: string) => {\n const entries = await fs.readdir(dir, { withFileTypes: true })\n for (const entry of entries) {\n const abs = path.join(dir, entry.name)\n const rel = path.join(relativeBase, entry.name)\n if (entry.isDirectory()) {\n await walk(abs, rel)\n } else {\n result.push(rel)\n }\n }\n }\n await walk(rootDir, '')\n return result.sort()\n } catch {\n return []\n }\n }\n\n private async removeEmptyDirectories(rootDir: string): Promise<void> {\n if (!existsSync(rootDir)) return\n const removeIfEmpty = async (dir: string) => {\n const entries = await fs.readdir(dir, { withFileTypes: true })\n for (const entry of entries) {\n if (entry.isDirectory()) {\n const subdir = path.join(dir, entry.name)\n await removeIfEmpty(subdir)\n }\n }\n\n // Re-read after potential removals\n const after = await fs.readdir(dir)\n if (after.length === 0 && dir !== rootDir) {\n try {\n await fs.rmdir(dir, { recursive: false })\n } catch {}\n }\n }\n await removeIfEmpty(rootDir)\n }\n\n async generate(): Promise<void> {\n // Load the agent project\n const project = await AgentProject.load(this.projectPath)\n\n // Create output directory\n await fs.mkdir(this.outputPath, { recursive: true })\n\n // Generate bot files\n await this.generateBotDefinition()\n await this.generateIntegrationsDefinition()\n await this.generateInterfacesDefinition()\n await this.generateIntegrationsTypes()\n await this.generateInterfacesTypes()\n await this.generateTableTypes()\n await this.generateTriggerTypes()\n await this.generateTagTypes()\n await this.generateStateTypes()\n await this.generateConfigurationTypes()\n await this.generateWorkflowTypes()\n await this.generateConversationTypes()\n await this.generateActionTypes()\n await this.generateEventTypes()\n await this.generateIntegrationActionTypes()\n await this.generateRuntimeTypes()\n await this.generateClientWrapper()\n await this.generateBotIndex()\n await this.generatePackageJson(project)\n await this.generateTsConfig()\n await this.generateGlobalTypes()\n await this.copyAssets()\n }\n\n private async generateIntegrationsTypes(): Promise<void> {\n // Load the project to get interfaces\n const project = await AgentProject.load(this.projectPath)\n const manager = new IntegrationManager({\n workspaceId: project.agentInfo?.workspaceId,\n })\n const integrations = await manager.loadIntegrations(project.dependencies || {})\n\n // List existing files before generation (.adk/integrations)\n const integrationsDir = path.join(this.projectPath, '.adk', 'integrations')\n const existingIntegrationFiles = await this.listFilesRecursive(integrationsDir)\n\n let aliases = new Set<string>()\n let files = new Set<string>() // tracks all files created in this run (relative to .adk/integrations)\n\n // Generate imports for each integration\n for (const integration of integrations.integrations) {\n if (integration.definition) {\n const types = await generateIntegrationTypes(integration)\n\n // Use dynamic import for type\n const importPath = `./${path.join('integrations', types.names.paths.index).replace(/\\\\/g, '/')}`\n aliases.add(`\"${integration.alias}\": import(\"${importPath}\").${types.names.typings.index}`)\n\n for (const [filePath, content] of Object.entries(types.files)) {\n const fullPath = path.join(this.projectPath, '.adk', 'integrations', filePath)\n\n const dir = path.dirname(fullPath)\n await fs.mkdir(dir, { recursive: true })\n await createFile(fullPath, content)\n files.add(filePath)\n }\n }\n }\n\n const types = `\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\n declare module \"@botpress/runtime/_types/integrations\" {\n export type Integrations = {\n ${Array.from(aliases).join(`, `)}\n };\n }\n `\n\n await createFile(path.join(this.projectPath, '.adk', 'integrations-types.d.ts'), await formatCode(types))\n\n // Cleanup stale integration files\n const staleIntegrationFiles = existingIntegrationFiles.filter((f) => !files.has(f))\n if (staleIntegrationFiles.length > 0) {\n for (const rel of staleIntegrationFiles) {\n const abs = path.join(integrationsDir, rel)\n try {\n await fs.rm(abs, { force: true })\n } catch {}\n }\n }\n // remove empty folders after deletion\n await this.removeEmptyDirectories(integrationsDir)\n }\n\n private async generateTableTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateTableTypes(project)\n }\n\n private async generateTriggerTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateTriggerTypes(project)\n }\n\n private async generateTagTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateTagTypes(project)\n }\n\n private async generateStateTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateStateTypes(project)\n }\n\n private async generateConfigurationTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateConfigurationTypes(project)\n }\n\n private async generateEventTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateEventTypes(project)\n }\n\n private async generateWorkflowTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateWorkflowTypes(project)\n }\n\n private async generateConversationTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateConversationTypes(project)\n }\n\n private async generateActionTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n const { generateActionTypes } = await import('../generators/action-types.js')\n await generateActionTypes(project)\n }\n\n private async generateIntegrationActionTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n const { generateIntegrationActionTypes } = await import('../generators/integration-action-types.js')\n await generateIntegrationActionTypes(project)\n }\n\n private async generateClientWrapper(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateClientWrapper(project)\n }\n\n private async generateRuntimeTypes(): Promise<void> {\n // Load the project for conditional imports\n const project = await AgentProject.load(this.projectPath)\n\n // Load integrations to generate channel types\n const manager = new IntegrationManager({\n workspaceId: project.agentInfo?.workspaceId,\n })\n const integrations = await manager.loadIntegrations(project.dependencies || {})\n\n // Collect all channel names from integrations\n const channels: string[] = []\n for (const integration of integrations.integrations) {\n if (integration.enabled && integration.definition) {\n const alias = integration.alias\n for (const channelName of Object.keys(integration.definition.channels || {})) {\n channels.push(`\"${alias}.${channelName}\"`)\n }\n }\n }\n\n // Generate channel union type\n const channelsType = channels.length > 0 ? channels.join(' | ') : 'never'\n\n // Get state types from agent config\n let botStateType = '{}'\n let userStateType = '{}'\n\n try {\n const configPath = path.join(project.path, 'agent.config.ts')\n // Bust module cache to ensure fresh config on regeneration\n const configModule = await import(`${configPath}?t=${Date.now()}`)\n const config = configModule.default\n\n if (config?.bot?.state) {\n const botSchema = config.bot.state as z.ZodTypeAny\n if (botSchema.toTypescriptType) {\n botStateType = botSchema.toTypescriptType()\n }\n }\n\n if (config?.user?.state) {\n const userSchema = config.user.state as z.ZodTypeAny\n if (userSchema.toTypescriptType) {\n userStateType = userSchema.toTypescriptType()\n }\n }\n } catch (error) {\n console.warn('Failed to load agent config for state types:', error)\n }\n\n const types = `\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/channels\" {\n export type Channels = ${channelsType};\n export type ChannelSpec = Channels | readonly Channels[] | '*';\n}\n\ndeclare module \"@botpress/runtime/_types/state\" {\n export type BotState = ${botStateType};\n export type UserState = ${userStateType};\n}\n`\n\n await createFile(path.join(this.projectPath, '.adk', 'runtime.d.ts'), await formatCode(types))\n }\n\n private async generateInterfacesTypes(): Promise<void> {\n // Load the project to get interfaces\n const project = await AgentProject.load(this.projectPath)\n const integrationManager = new IntegrationManager({\n workspaceId: project.agentInfo?.workspaceId,\n })\n const manager = new InterfaceManager()\n\n // List existing files before generation (.adk/interfaces)\n const interfacesDir = path.join(this.projectPath, '.adk', 'interfaces')\n const existingInterfaceFiles = await this.listFilesRecursive(interfacesDir)\n\n const interfaces = await manager\n .loadInterfaces(project.dependencies || {})\n .then((result) => result.interfaces.filter((int) => int.definition).map((x) => x.definition!))\n\n const integrationsWithAlias = await integrationManager\n .loadIntegrations(project.dependencies || {})\n .then((result) =>\n result.integrations\n .filter((int) => int.enabled && int.definition)\n .map((x) => ({ alias: x.alias, definition: x.definition! }))\n )\n\n let imports = new Set<string>()\n let aliases = new Set<string>()\n let files = new Set<string>() // tracks all files created in this run (relative to .adk/interfaces)\n\n // Generate imports for each integration\n for (const int of interfaces) {\n const types = await generateInterfaceTypes(int, integrationsWithAlias)\n\n imports.add(\n `import { ${types.names.typings.index} } from \"./${path.join('interfaces', types.names.paths.index).replace(/\\\\/g, '/')}\";`\n )\n\n aliases.add(`\"${types.names.name}\": ${types.names.typings.index}`)\n\n for (const [filePath, content] of Object.entries(types.files)) {\n const fullPath = path.join(this.projectPath, '.adk', 'interfaces', filePath)\n\n const dir = path.dirname(fullPath)\n await fs.mkdir(dir, { recursive: true })\n await createFile(fullPath, content)\n files.add(filePath)\n }\n }\n\n const types = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // File: interfaces.d.ts\n ////////////////////////////////////////////////////////\n\n ${Array.from(imports).join('\\n')}\n\n declare global {\n export type Interfaces = {\n ${Array.from(aliases).join(`, `)}\n };\n }\n `\n\n const consts = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // File: interfaces.ts\n ////////////////////////////////////////////////////////\n\n ${Array.from(imports)\n .map((x) => x.replace('.ts\"', '\"'))\n .join('\\n')}\n\n export const Interfaces = {\n ${Array.from(aliases).join(',\\n')}\n };\n `\n\n await createFile(path.join(this.projectPath, '.adk', 'interfaces.d.ts'), await formatCode(types))\n\n await createFile(path.join(this.projectPath, '.adk', 'interfaces.ts'), await formatCode(consts))\n\n // Cleanup stale interface files\n const staleInterfaceFiles = existingInterfaceFiles.filter((f) => !files.has(f))\n if (staleInterfaceFiles.length > 0) {\n for (const rel of staleInterfaceFiles) {\n const abs = path.join(interfacesDir, rel)\n try {\n await fs.rm(abs, { force: true })\n } catch {}\n }\n }\n // remove empty folders after deletion\n await this.removeEmptyDirectories(interfacesDir)\n }\n\n private async generateIntegrationsDefinition(): Promise<void> {\n // Load the project to get integrations\n const project = await AgentProject.load(this.projectPath)\n const integrations = project.dependencies?.integrations || {}\n\n // Generate imports for each integration\n const imports: string[] = []\n const integrationDefs: string[] = []\n\n // Filter out disabled integrations (enabled: false)\n for (const [alias, config] of Object.entries(integrations)) {\n if (config.enabled === false) {\n continue\n }\n\n const normalizedAlias = getIntegrationAlias(alias)\n imports.push(`import integration_${normalizedAlias} from \"../bp_modules/integration_${normalizedAlias}\";`)\n integrationDefs.push(`${normalizedAlias}: integration_${normalizedAlias}`)\n }\n\n const content = dedent`\n import { IntegrationPackage } from \"@botpress/sdk\";\n\n ${imports.length > 0 ? '\\n' + imports.join('\\n') : ''}\n\n export const IntegrationDefinitions = {\n ${integrationDefs.length > 0 ? integrationDefs.join(',\\n') : ''}\n } as Record<string, IntegrationPackage>;\n `\n\n await createFile(path.join(this.outputPath, 'src', 'integrations.ts'), content)\n }\n\n private async generateInterfacesDefinition(): Promise<void> {\n // Use hard-coded built-in interfaces\n const interfaces = BUILTIN_INTERFACES\n\n // Generate imports for each interface\n const imports: string[] = []\n const interfaceDefs: string[] = []\n\n for (const alias of Object.keys(interfaces)) {\n const pascalAlias = pascalCase(alias)\n imports.push(`import interface_${pascalAlias} from \"../bp_modules/interface_${pascalAlias}\";`)\n interfaceDefs.push(`${pascalAlias}: interface_${pascalAlias}`)\n }\n\n const content = dedent`\n import { InterfacePackage } from \"@botpress/sdk\";\n\n ${imports.length > 0 ? '\\n' + imports.join('\\n') : ''}\n\n export const InterfaceDefinitions = {\n ${interfaceDefs.length > 0 ? interfaceDefs.join(',\\n') : ''}\n } as Record<string, InterfacePackage>;\n `\n\n await createFile(path.join(this.outputPath, 'src', 'interfaces.ts'), await formatCode(content))\n }\n\n /**\n * Report the result of fetching and merging server-side integration configs.\n * Only emits messages when there's something meaningful to report.\n */\n private reportServerConfigSync(\n serverConfigResult: FetchServerConfigsResult,\n integrations: Array<{ alias: string; config?: Record<string, any> }>\n ): void {\n if (!this.callbacks) {\n return\n }\n\n if (serverConfigResult.error) {\n this.callbacks.onError?.(\n `Failed to fetch remote configs: ${serverConfigResult.error}. Server-only config values may be overwritten.`\n )\n return\n }\n\n if (!serverConfigResult.fetched) {\n return\n }\n\n const configCount = Object.keys(serverConfigResult.configs).length\n if (configCount === 0) {\n return\n }\n\n this.callbacks.onSuccess?.(`Preserved remote configs for ${plural(configCount, 'integration')}`)\n\n for (const { alias, config: localConfig } of integrations) {\n const serverConfig = serverConfigResult.configs[alias]\n if (!serverConfig || Object.keys(serverConfig).length === 0) {\n continue\n }\n\n const preserved = Object.keys(serverConfig).filter((key) => !localConfig || !(key in localConfig))\n if (preserved.length > 0) {\n this.callbacks.onProgress?.(` ${alias}: preserved ${plural(preserved.length, 'remote field')} (${preserved.join(', ')})`)\n }\n\n if (localConfig) {\n const overridden = Object.keys(localConfig).filter((key) => key in serverConfig && localConfig[key] !== serverConfig[key])\n if (overridden.length > 0) {\n this.callbacks.onProgress?.(` ${alias}: local overrides ${plural(overridden.length, 'field')} (${overridden.join(', ')})`)\n }\n }\n }\n }\n\n private async generateBotDefinition(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n const integrations = project.integrations\n const enabledIntegrations = integrations.filter((i) => i.enabled)\n\n // Fetch server-side configs to preserve values (e.g. auth tokens) not in agent.config.ts\n // During deploy/build, fetch from the production bot (botId) to avoid leaking dev config\n const isDeployOrBuild = this.adkCommand === 'adk-deploy' || this.adkCommand === 'adk-build'\n const configTargetBotId = isDeployOrBuild ? project.agentInfo?.botId : undefined\n const serverConfigResult = await fetchServerIntegrationConfigs(project, configTargetBotId)\n this.reportServerConfigSync(serverConfigResult, enabledIntegrations)\n\n const imports: string[] = []\n const addIntegrations: string[] = []\n\n for (const integration of enabledIntegrations) {\n const { alias, configurationType, config } = integration\n const importName = `integration_${getIntegrationAlias(alias)}`\n imports.push(`import ${importName} from \"./bp_modules/${importName}\";`)\n\n // \"default\" is not a real configuration type - omit it (API will reject it)\n const configType =\n configurationType && configurationType !== 'default' ? `, configurationType: \"${configurationType}\"` : ''\n\n const mergedConfig = mergeIntegrationConfig(serverConfigResult.configs[alias], config)\n const configData = Object.keys(mergedConfig).length > 0 ? `, configuration: ${JSON.stringify(mergedConfig)}` : ''\n\n addIntegrations.push(\n `bot.addIntegration(${importName}, { alias: \"${alias}\", enabled: true${configType}${configData} });`\n )\n }\n\n // Load user-defined tags from agent.config.ts\n const botTags: Record<string, any> = {}\n const userTags: Record<string, any> = {}\n const conversationTags: Record<string, any> = {}\n const messageTags: Record<string, any> = {}\n const workflowTags: Record<string, any> = {}\n\n if (project.config?.bot?.tags) {\n Object.assign(botTags, project.config.bot.tags)\n }\n\n if (project.config?.user?.tags) {\n Object.assign(userTags, project.config.user.tags)\n }\n\n if (project.config?.conversation?.tags) {\n Object.assign(conversationTags, project.config.conversation.tags)\n }\n\n if (project.config?.message?.tags) {\n Object.assign(messageTags, project.config.message.tags)\n }\n\n if (project.config?.workflow?.tags) {\n Object.assign(workflowTags, project.config.workflow.tags)\n }\n\n // Helper to hash strings - creates short uppercase hashes\n const crypto = require('crypto')\n const hashString = (str: string) => {\n return crypto.createHash('md5').update(str).digest('hex').substring(0, 5).toUpperCase()\n }\n\n // For each trigger, we need to add possible tags\n for (const trigger of project.triggers) {\n const triggerName = trigger.definition.name\n\n // Add tag for this trigger - the tag name is based on trigger name\n // The value can be \"*\" for wildcard or a specific match result\n const tagName = `trigger${hashString(triggerName)}`\n conversationTags[tagName] = {\n title: `Trigger: ${triggerName}`,\n description: `Subscribe to events from trigger \"${triggerName}\" (use \"*\" for all events or specific values)`,\n }\n\n // TODO: Only add workflow tags when workflows exist\n // Currently we don't support workflow definitions yet\n // When implemented, check if project.workflows.length > 0\n // workflowTags[tagName] = {\n // title: `Trigger: ${triggerName}`,\n // description: `Subscribe to events from trigger \"${triggerName}\" (use \"*\" for all events or specific values)`\n // };\n }\n\n // Load workflow definitions at build time and generate their schemas\n const workflowDefs: string[] = []\n const recurringWorkflows: Array<{ name: string; schedule: string }> = []\n\n const workflowInstances: Workflow<any>[] = []\n\n for (const workflow of project.workflows) {\n try {\n if (isBuiltinWorkflow(workflow.definition.name)) {\n // Built-in workflow - already handled in runtime\n continue\n }\n\n // User-defined workflow - import from project\n const workflowPath = path.join(project.path, workflow.path)\n // Bust module cache to ensure fresh workflow on regeneration\n const workflowModule = await import(`${workflowPath}?t=${Date.now()}`)\n const workflowInstance = (workflowModule.default || workflowModule[workflow.export]) as Workflow | undefined\n\n if (workflowInstance) {\n workflowInstances.push(workflowInstance)\n }\n } catch (error) {\n console.error(`Failed to load workflow ${workflow.definition.name}:`, error)\n }\n }\n\n for (const workflow of Object.values(BuiltInWorkflows)) {\n workflowInstances.push(workflow)\n }\n\n for (const workflow of workflowInstances) {\n const definition = Primitives.Definitions.getDefinition(workflow)\n if (!Primitives.Definitions.isWorkflowDefinition(definition)) {\n continue\n }\n\n // Check if workflow has a schedule property for recurring execution\n if (definition.schedule) {\n recurringWorkflows.push({\n name: definition.name,\n schedule: definition.schedule,\n })\n }\n\n // Generate the workflow definition as inline code\n const inputSchema = definition.input\n ? transforms.fromJSONSchema(definition.input).naked().toTypescriptSchema()\n : 'z.object({})'\n\n const outputSchema = definition.output\n ? transforms.fromJSONSchema(definition.output).naked().toTypescriptSchema()\n : 'z.object({})'\n\n const parts = []\n if (definition.description) {\n parts.push(`title: ${JSON.stringify(definition.name)}`)\n parts.push(`description: ${JSON.stringify(definition.description)}`)\n }\n parts.push(`input: { schema: ${inputSchema} }`)\n parts.push(`output: { schema: ${outputSchema} }`)\n\n // Add workflow tags with built-in tags spread\n parts.push(`tags: {\n ...BUILT_IN_TAGS.workflow,\n key: {\n title: \"Workflow Key\",\n description: \"Unique key for workflow deduplication\"\n },\n }`)\n\n workflowDefs.push(`\"${definition.name}\": {\\n ${parts.join(',\\n ')}\\n }`)\n }\n\n const actionDefs: Record<string, any> = {}\n for (const action of project.actions) {\n const def = action.definition\n // Include ALL actions in bot.definition.ts (even hidden ones)\n actionDefs[def.name] = {\n title: def.title,\n description: def.description,\n attributes: def.attributes,\n input: def.input,\n output: def.output,\n cached: def.cached,\n }\n }\n\n const toEventName = (ename: string) => ename.replaceAll(/[^a-zA-Z0-9]/g, '').toLowerCase()\n\n // Load custom events from agent.config.ts\n const customEventDefs: string[] = []\n const configForEvents = project.config as Record<string, unknown> | undefined\n const customEvents = (configForEvents?.events || {}) as Record<\n string,\n { schema?: z.ZodTypeAny; description?: string }\n >\n\n for (const [eventName, eventDef] of Object.entries(customEvents)) {\n const schema = eventDef.schema\n let schemaCode = 'z.object({})'\n\n if (schema && typeof schema.toJSONSchema === 'function') {\n schemaCode = transforms.fromJSONSchema(schema.toJSONSchema()).toTypescriptSchema()\n }\n\n const parts = [`schema: ${schemaCode}`]\n if (eventDef.description) {\n parts.unshift(`description: ${JSON.stringify(eventDef.description)}`)\n }\n\n customEventDefs.push(`\"${eventName}\": {\\n ${parts.join(',\\n ')}\\n }`)\n }\n\n // Get configuration schema if defined\n const configSchema = project.config?.configuration?.schema\n const configSchemaCode = configSchema\n ? transforms.fromJSONSchema(configSchema.toJSONSchema()).toTypescriptSchema()\n : undefined\n\n const content = dedent`\n import { BotDefinition, z } from \"@botpress/sdk\";\n import {\n BUILT_IN_STATES,\n BUILT_IN_TAGS,\n TranscriptSchema,\n TrackedStateSchema,\n WorkflowCallbackEvent,\n WorkflowScheduleEvent,\n WorkflowContinueEvent,\n SubworkflowFinished,\n WorkflowDataRequestEvent,\n } from \"@botpress/runtime/definition\";\n ${imports.length > 0 ? '\\n' + imports.join('\\n') : ''}\n\n const bot = new BotDefinition({\n\n attributes: {\n runtime: \"adk\",\n runtimeVersion: \"${ADK_VERSION}\",\n ${\n Object.keys(botTags).length > 0\n ? Object.entries(botTags)\n .map(\n ([tag, meta]) =>\n `${meta.description ? `// ${meta.description}\\n ` : ''}\"${tag}\": ${JSON.stringify(meta.title)}`\n )\n .join(',\\n ')\n : ''\n }\n },\n ${configSchemaCode ? `\\nconfiguration: {\\n schema: ${configSchemaCode}\\n},\\n` : ''}\n user: {\n tags: {\n ...BUILT_IN_TAGS.user,\n ${Object.entries(userTags)\n .filter(([tag]) => !Object.keys(BUILT_IN_TAGS.user).includes(tag))\n .map(\n ([tag, meta]) =>\n `// ${meta.title}\\n ${meta.description ? `// ${meta.description}\\n ` : ''}\"${tag}\": ${JSON.stringify(meta)}`\n )\n .join(',\\n ')}${Object.entries(userTags).filter(([tag]) => !Object.keys(BUILT_IN_TAGS.user).includes(tag)).length > 0 ? ',' : ''}\n },\n },\n message: {\n tags: {\n ...BUILT_IN_TAGS.message,\n ${Object.entries(messageTags)\n .filter(([tag]) => !Object.keys(BUILT_IN_TAGS.message).includes(tag))\n .map(\n ([tag, meta]) =>\n `// ${meta.title}\\n ${meta.description ? `// ${meta.description}\\n ` : ''}\"${tag}\": ${JSON.stringify(meta)}`\n )\n .join(',\\n ')}${Object.entries(messageTags).filter(([tag]) => !Object.keys(BUILT_IN_TAGS.message).includes(tag)).length > 0 ? ',' : ''}\n },\n },\n conversation: {\n tags: {\n ...BUILT_IN_TAGS.conversation,\n ${Object.entries(conversationTags)\n .filter(([tag]) => !Object.keys(BUILT_IN_TAGS.conversation).includes(tag))\n .map(\n ([tag, meta]) =>\n `// ${meta.title}\\n ${meta.description ? `// ${meta.description}\\n ` : ''}\"${tag}\": ${JSON.stringify(meta)}`\n )\n .join(\n ',\\n '\n )}${Object.entries(conversationTags).filter(([tag]) => !Object.keys(BUILT_IN_TAGS.conversation).includes(tag)).length > 0 ? ',' : ''}\n },\n },\n ${\n workflowDefs.length > 0\n ? `workflows: {\n ${workflowDefs.join(',\\n ')}\n },`\n : ''\n }\n ${\n Object.keys(actionDefs).length > 0\n ? `actions: {\n ${Object.entries(actionDefs)\n .map(([name, def]) => {\n const parts = []\n if (def.title) parts.push(`title: ${JSON.stringify(def.title)}`)\n if (def.description) parts.push(`description: ${JSON.stringify(def.description)}`)\n if (def.attributes) parts.push(`attributes: ${JSON.stringify(def.attributes)}`)\n parts.push(`input: { schema: ${transforms.fromJSONSchema(def.input).toTypescriptSchema()} }`)\n parts.push(`output: { schema: ${transforms.fromJSONSchema(def.output).toTypescriptSchema()} }`)\n return `\"${name}\": {\\n ${parts.join(',\\n ')}\\n }`\n })\n .join(',\\n ')}\n },`\n : ''\n }\n ${\n recurringWorkflows.length > 0\n ? `recurringEvents: {\n ${recurringWorkflows\n .map(\n (wf) => `\"${toEventName(wf.name + 'Schedule')}\": {\n type: WorkflowScheduleEvent.name,\n schedule: { cron: \"${wf.schedule}\" },\n payload: { workflow: \"${wf.name}\" },\n }`\n )\n .join(',\\n ')}\n },`\n : ''\n }\n\n events: {\n [WorkflowScheduleEvent.name]: {\n schema: WorkflowScheduleEvent.schema,\n },\n [WorkflowCallbackEvent.name]: {\n schema: WorkflowCallbackEvent.schema,\n },\n [WorkflowContinueEvent.name]: {\n schema: WorkflowContinueEvent.schema,\n },\n [SubworkflowFinished.name]: {\n schema: SubworkflowFinished.schema,\n },\n [WorkflowDataRequestEvent.name]: {\n schema: WorkflowDataRequestEvent.schema,\n },\n ${customEventDefs.length > 0 ? customEventDefs.join(',\\n ') + ',' : ''}\n },\n\n states: {\n /**\n * This is the ADK-native conversation state that contains the\n * necessary data to run the conversation and its handlers.\n */\n conversation: {\n type: \"conversation\",\n schema: z.object({ transcript: TranscriptSchema }),\n },\n\n /**\n * This is a generic state to store the conversation-specific state.\n * This is defined by the users at build-time when they define conversations.\n * Because each conversation can have its own state schema, we use \\`z.any()\\`\n */\n [BUILT_IN_STATES.conversation]: {\n type: \"conversation\",\n schema: TrackedStateSchema,\n },\n\n /**\n * Bot-wide global state that persists across all conversations\n */\n [BUILT_IN_STATES.bot]: {\n type: \"bot\",\n schema: TrackedStateSchema,\n },\n\n /**\n * User-specific state that persists across conversations for each user\n */\n [BUILT_IN_STATES.user]: {\n type: \"user\",\n schema: TrackedStateSchema,\n },\n\n /**\n * Workflow-specific state that persists across workflow executions\n */\n [BUILT_IN_STATES.workflowState]: {\n type: \"workflow\",\n schema: TrackedStateSchema,\n },\n\n /**\n * Workflow cached steps executions\n */\n [BUILT_IN_STATES.workflowSteps]: {\n type: \"workflow\",\n schema: TrackedStateSchema,\n },\n\n /**\n * Data source metadata for dashboard visibility (knowledge base sources)\n */\n [BUILT_IN_STATES.dsData]: {\n type: \"bot\",\n schema: z.record(z.any()),\n },\n },\n });\n `\n\n // This is done so dedent doesn't unescape newlines in multiline integration config inputs\n const integrationsSection = addIntegrations.length > 0 ? '\\n' + addIntegrations.join('\\n') : ''\n const fullContent = content + integrationsSection + '\\n\\nexport default bot;'\n\n await createFile(path.join(this.outputPath, 'bot.definition.ts'), await formatCode(fullContent))\n }\n\n private async generateBotIndex(): Promise<void> {\n const content = dedent`\n import * as bp from '.botpress'\n import { setupAdkRuntime } from './adk-runtime'\n import { Actions } from './actions'\n import {isMainThread, isWorkerMode, initializeParentWorker, runWorker, BuiltInActions} from '@botpress/runtime/internal'\n import { handlers } from \"@botpress/runtime/runtime\";\n\n const bot = new bp.Bot({\n actions: {},\n register: async (props) => {\n handlers.trigger.triggerRegisterEvent(props)\n }\n })\n\n\n // ============================================================================\n // WORKER INITIALIZATION\n // ============================================================================\n\n if (isWorkerMode() && isMainThread) {\n // Branch 1: Main thread in worker mode - initialize parent with pool\n if (process.env.BP_DEBUG) console.log(\"[Main] Initializing parent worker with pool...\");\n initializeParentWorker(bot);\n } else if (isWorkerMode() && process.env.IS_DEV_WORKER === \"true\") {\n // Branch 2: Worker thread - run child worker\n if (process.env.BP_DEBUG) console.log(\"[Worker] Initializing child worker...\");\n runWorker(bot);\n setupAdkRuntime(bot);\n } else {\n // Branch 3: Worker mode disabled - single-thread mode\n if (process.env.BP_DEBUG) console.log(\"[Bot] Running in single-thread mode\");\n setupAdkRuntime(bot);\n }\n\n export default bot\n `\n\n await createFile(path.join(this.outputPath, 'src', 'index.ts'), await formatCode(content))\n }\n\n private async generatePackageJson(project: AgentProject): Promise<void> {\n const packageJson = {\n name: `@bp-templates/${project.config?.name || 'agent'}-bot`,\n scripts: {\n 'check:type': 'tsc --noEmit',\n },\n private: true,\n dependencies: {},\n devDependencies: {\n typescript: '^5.9.3',\n },\n }\n\n await createFile(path.join(this.outputPath, 'package.json'), JSON.stringify(packageJson, null, 2))\n }\n\n private async generateTsConfig(): Promise<void> {\n const tsConfig = {\n compilerOptions: {\n lib: ['es2022'],\n module: 'es2022',\n strict: true,\n esModuleInterop: true,\n skipLibCheck: true,\n forceConsistentCasingInFileNames: true,\n moduleResolution: 'bundler',\n allowUnusedLabels: false,\n allowUnreachableCode: false,\n noFallthroughCasesInSwitch: true,\n noImplicitOverride: true,\n noImplicitReturns: true,\n noUncheckedIndexedAccess: true,\n noUnusedParameters: true,\n target: 'es2017',\n baseUrl: '.',\n outDir: 'dist',\n checkJs: false,\n incremental: true,\n exactOptionalPropertyTypes: false,\n resolveJsonModule: true,\n noPropertyAccessFromIndexSignature: false,\n noUnusedLocals: false,\n },\n include: ['.botpress/**/*', 'src/**/*', 'bp_modules/**/*', './*.ts', './*.json', '../*.d.ts'],\n }\n\n await createFile(path.join(this.outputPath, 'tsconfig.json'), JSON.stringify(tsConfig, null, 2))\n }\n\n private async generateGlobalTypes(): Promise<void> {\n const content = dedent`\n // Global types for ADK assets\n declare global {\n const assets: {\n get(path: string): Promise<{\n url: string;\n path: string;\n name: string;\n size: number;\n mime: string;\n hash: string;\n createdAt: string;\n updatedAt: string;\n fileId: string;\n }>;\n };\n }\n\n export {};\n `\n\n await createFile(path.join(this.outputPath, 'global.d.ts'), await formatCode(content))\n }\n\n private async copyAssets(): Promise<void> {\n const assetsPath = path.join(this.projectPath, 'assets')\n const targetPath = path.join(this.outputPath, 'assets')\n\n if (existsSync(assetsPath)) {\n await fs.mkdir(targetPath, { recursive: true })\n // Copy assets recursively\n await this.copyDirectory(assetsPath, targetPath)\n }\n }\n\n private async copyDirectory(src: string, dest: string): Promise<void> {\n const entries = await fs.readdir(src, { withFileTypes: true })\n\n for (const entry of entries) {\n const srcPath = path.join(src, entry.name)\n const destPath = path.join(dest, entry.name)\n\n if (entry.isDirectory()) {\n await fs.mkdir(destPath, { recursive: true })\n await this.copyDirectory(srcPath, destPath)\n } else {\n await fs.copyFile(srcPath, destPath)\n }\n }\n }\n\n async generateAdkRuntime(): Promise<void> {\n const project = new AgentProject(this.projectPath)\n await project.reload()\n\n const srcDir = path.join(this.outputPath, 'src')\n\n /* <conversations.ts> */ {\n const dest = path.join(srcDir, 'conversations.ts')\n const imports = new Map<\n string,\n {\n statement: string\n name: string\n }\n >()\n const exports = new Set<string>()\n let index = 1\n\n for (const conversation of project.conversations) {\n if (!imports.has(conversation.path)) {\n const name = `conversations_${index++}`\n const importPath = getImportPath(dest, path.join(project.path, conversation.path))\n\n imports.set(conversation.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n })\n }\n\n exports.add(\n `\"${conversation.definition.channel}\": ${imports.get(conversation.path)!.name}.${conversation.export}`\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 // File: conversations.ts\n ////////////////////////////////////////////////////////\n\n ${Array.from(imports)\n .map(([, { statement }]) => `${statement}`)\n .join('\\n')}\n\n export const Conversations = {\n ${Array.from(exports).join(',\\n')}\n };\n `\n\n await createFile(dest, await formatCode(content))\n } /* </conversations.ts> */\n\n /* <knowledge.ts> */ {\n const dest = path.join(srcDir, 'knowledge.ts')\n const imports = new Map<\n string,\n {\n statement: string\n name: string\n }\n >()\n const exports = new Set<string>()\n let index = 1\n\n for (const knowledge of project.knowledge) {\n if (!imports.has(knowledge.path)) {\n const name = `knowledge_${index++}`\n const importPath = getImportPath(dest, path.join(project.path, knowledge.path))\n\n imports.set(knowledge.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n })\n }\n\n exports.add(`\"${knowledge.definition.name}\": ${imports.get(knowledge.path)!.name}.${knowledge.export}`)\n }\n\n const content = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // File: knowledge.ts\n ////////////////////////////////////////////////////////\n\n ${Array.from(imports)\n .map(([, { statement }]) => `${statement}`)\n .join('\\n')}\n\n export const Knowledge = {\n ${Array.from(exports).join(',\\n')}\n };\n `\n\n await createFile(dest, await formatCode(content))\n } /* </knowledge.ts> */\n\n /* <triggers.ts> */ {\n const dest = path.join(srcDir, 'triggers.ts')\n const { transforms } = await import('@botpress/sdk')\n const imports = new Map<\n string,\n {\n statement: string\n name: string\n }\n >()\n const exports = new Set<string>()\n const payloadTypes: Record<string, string> = {}\n let index = 1\n\n // First pass: collect imports and exports\n for (const trigger of project.triggers) {\n if (!imports.has(trigger.path)) {\n const name = `triggers_${index++}`\n const importPath = getImportPath(dest, path.join(project.path, trigger.path))\n\n imports.set(trigger.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n })\n }\n\n exports.add(`\"${trigger.definition.name}\": ${imports.get(trigger.path)!.name}.${trigger.export}`)\n }\n\n // Second pass: extract payload schemas and compile to TypeScript types\n for (const trigger of project.triggers) {\n try {\n // Import the trigger module to get the actual instance\n const absolutePath = path.join(project.path, trigger.path)\n // Bust module cache to ensure fresh trigger on regeneration\n const triggerModule = await import(`${absolutePath}?t=${Date.now()}`)\n const triggerInstance = triggerModule[trigger.export] || triggerModule.default\n\n if (triggerInstance && triggerInstance.payload) {\n // Convert Zod schema to JSON Schema, then to TypeScript type\n const jsonSchema = transforms.toJSONSchema(triggerInstance.payload)\n const payloadType = transforms.fromJSONSchema(jsonSchema).toTypescriptType()\n payloadTypes[trigger.definition.name] = payloadType\n } else {\n payloadTypes[trigger.definition.name] = '{}'\n }\n } catch (error) {\n console.warn(`Warning: Could not process trigger ${trigger.definition.name}:`, error)\n payloadTypes[trigger.definition.name] = '{}'\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 // File: triggers.ts\n ////////////////////////////////////////////////////////\n\n ${Array.from(imports)\n .map(([, { statement }]) => `${statement}`)\n .join('\\n')}\n\n export const Triggers = {\n ${Array.from(exports).join(',\\n')}\n };\n\n // Extract trigger payload types with compiled TypeScript types\n type _TriggerPayloads = {\n ${Object.entries(payloadTypes)\n .map(([name, type]) => `\"${name}\": ${type}`)\n .join(';\\n ')}\n };\n\n declare global {\n export type TriggerPayloads = _TriggerPayloads;\n }\n `\n\n await createFile(dest, await formatCode(content))\n } /* </triggers.ts> */\n\n /* <workflows.ts> */ {\n const dest = path.join(srcDir, 'workflows.ts')\n const imports = new Map<\n string,\n {\n statement: string\n name: string\n }\n >()\n const exports = new Set<string>()\n let index = 1\n\n for (const workflow of project.workflows) {\n if (isBuiltinWorkflow(workflow.definition.name)) {\n // Built-in workflow - already handled in runtime\n continue\n }\n\n if (!imports.has(workflow.path)) {\n // User-defined workflow - import from project\n const name = `workflows_${index++}`\n const importPath = getImportPath(dest, path.join(project.path, workflow.path))\n\n const statement = `import * as ${name} from \"${importPath}\";`\n imports.set(workflow.path, {\n name,\n statement,\n })\n }\n }\n\n // Generate exports\n for (const workflow of project.workflows) {\n if (isBuiltinWorkflow(workflow.definition.name)) {\n // Built-in workflow - already handled in runtime\n continue\n }\n\n const importEntry = imports.get(workflow.path)!\n const exportStatement = workflow.export.replace('].', ']!.')\n\n exports.add(`\"${workflow.definition.name}\": ${importEntry.name}.${exportStatement}`)\n }\n\n const content = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // File: workflows.ts\n ////////////////////////////////////////////////////////\n\n ${Array.from(imports)\n .map(([, { statement }]) => `${statement}`)\n .join('\\n')}\n\n export const Workflows = {\n ${Array.from(exports).join(',\\n')}\n };\n `\n\n await createFile(dest, await formatCode(content))\n } /* </workflows.ts> */\n\n /* <actions.ts> */ {\n const dest = path.join(srcDir, 'actions.ts')\n const imports = new Map<\n string,\n {\n statement: string\n name: string\n }\n >()\n const exports = new Set<string>()\n let index = 1\n\n for (const action of project.actions) {\n if (isBuiltinAction(action.definition.name)) {\n // Built-in action - already handled in runtime\n continue\n }\n\n if (!imports.has(action.path)) {\n const name = `actions_${index++}`\n const importPath = getImportPath(dest, path.join(project.path, action.path))\n\n imports.set(action.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n })\n }\n\n exports.add(`\"${action.definition.name}\": ${imports.get(action.path)!.name}.${action.export}`)\n }\n\n const content = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // File: actions.ts\n ////////////////////////////////////////////////////////\n\n ${Array.from(imports)\n .map(([, { statement }]) => `${statement}`)\n .join('\\n')}\n\n export const Actions = {\n ${Array.from(exports).join(',\\n')}\n };\n `\n\n await createFile(dest, await formatCode(content))\n } /* </actions.ts> */\n\n /* <tables.ts> */ {\n const dest = path.join(srcDir, 'tables.ts')\n const imports = new Map<\n string,\n {\n statement: string\n name: string\n }\n >()\n const exports = new Set<string>()\n let index = 1\n\n for (const table of project.tables) {\n if (!imports.has(table.path)) {\n const name = `tables_${index++}`\n const importPath = getImportPath(dest, path.join(project.path, table.path))\n\n imports.set(table.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n })\n }\n\n exports.add(`\"${table.definition.name}\": ${imports.get(table.path)!.name}.${table.export}`)\n }\n\n const content = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // File: tables.ts\n ////////////////////////////////////////////////////////\n\n ${Array.from(imports)\n .map(([, { statement }]) => `${statement}`)\n .join('\\n')}\n\n export const Tables = {\n ${Array.from(exports).join(',\\n')}\n };\n `\n\n await createFile(dest, await formatCode(content))\n } /* </tables.ts> */\n\n /* <config.ts> */ {\n const dest = path.join(srcDir, 'config.ts')\n const importPath = getImportPath(dest, path.join(project.path, 'agent.config.ts'))\n\n const content = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // File: config.ts\n ////////////////////////////////////////////////////////\n\n import AgentConfigImport from \"${importPath}\";\n\n export const AgentConfig = AgentConfigImport;\n `\n\n await createFile(dest, await formatCode(content))\n } /* </config.ts> */\n\n const content = dedent`\n import * as bp from \".botpress\";\n import { IntegrationDefinitions } from \"./integrations\";\n import { InterfaceDefinitions } from \"./interfaces\";\n import { initializeAssets } from \"./assets-runtime\";\n import { handlers, patchHandlers, agentRegistry, z, initialize, register, registerIntegration } from \"@botpress/runtime/runtime\";\n import { AgentConfig } from \"./config\";\n import { Conversations } from \"./conversations\";\n import { Knowledge } from \"./knowledge\";\n import { Triggers } from \"./triggers\";\n import { Workflows } from \"./workflows\";\n import { Actions } from \"./actions\";\n import { Tables } from \"./tables\";\n import { Interfaces } from \"../../interfaces\";\n\n export function setupAdkRuntime(bot: bp.Bot) {\n // Initialize global error handlers for the runtime\n\n initialize({ config: AgentConfig })\n\n register(...Object.values(Conversations));\n register(...Object.values(Workflows));\n register(...Object.values(Triggers));\n register(...Object.values(Actions));\n register(...Object.values(Tables));\n register(...Object.values(Knowledge));\n\n for (const [alias, { definition }] of Object.entries(IntegrationDefinitions)) {\n registerIntegration({ alias, definition });\n }\n\n // Initialize the global agent registry\n agentRegistry.initialize({\n integrations: Object.entries(IntegrationDefinitions).map(([alias, def]) => ({ ...def, alias })),\n interfaces: Object.entries(InterfaceDefinitions).map(([alias, def]) => ({ ...def, alias })),\n interfacesMapping: Interfaces as Record<string, any>\n });\n\n // Patch bot handlers to add runtime context\n patchHandlers(bot);\n\n // Initialize assets system\n initializeAssets();\n\n // Setup conversation, trigger, and workflow handlers\n handlers.conversation.setup(bot);\n handlers.event.setup(bot);\n handlers.trigger.setup(bot);\n handlers.workflow.setup(bot);\n handlers.actions.setup(bot);\n }\n `\n\n await createFile(path.join(this.outputPath, 'src', 'adk-runtime.ts'), await formatCode(content))\n }\n\n async copyAssetsRuntime(): Promise<void> {\n const assetsRuntimePath = path.join(this.projectPath, '.adk', 'assets-runtime.ts')\n if (existsSync(assetsRuntimePath)) {\n const content = await fs.readFile(assetsRuntimePath, 'utf-8')\n await createFile(path.join(this.outputPath, 'src', 'assets-runtime.ts'), await formatCode(content))\n }\n }\n}\n\nexport async function generateBotProject(options: BotGeneratorOptions): Promise<void> {\n const generator = new BotGenerator(options)\n await generator.generate()\n await generator.generateAdkRuntime()\n await generator.copyAssetsRuntime()\n\n // Link @botpress/sdk from agent's node_modules to .adk/bot/node_modules\n const botPath = options.outputPath || path.join(options.projectPath, '.adk', 'bot')\n await linkSdk(options.projectPath, botPath)\n\n // Handle devId/botId management\n const devIdManager = new DevIdManager(\n options.projectPath,\n options.outputPath || path.join(options.projectPath, '.adk', 'bot')\n )\n\n // Restore any saved devId/botId from agent.json to project cache\n await devIdManager.restoreDevId()\n\n // Sync integrations\n const integrationSync = new IntegrationSync(\n options.projectPath,\n options.outputPath || path.join(options.projectPath, '.adk', 'bot')\n )\n const integrationSyncResult = await integrationSync.syncIntegrations()\n\n if (integrationSyncResult.errors.length > 0) {\n console.warn(`⚠️ Some integrations failed to sync:`)\n integrationSyncResult.errors.forEach(({ alias, error }) => {\n console.warn(` - ${alias}: ${error}`)\n })\n }\n\n // Sync interfaces\n const interfaceSync = new InterfaceSync(\n options.projectPath,\n options.outputPath || path.join(options.projectPath, '.adk', 'bot')\n )\n const interfaceSyncResult = await interfaceSync.syncInterfaces()\n\n if (interfaceSyncResult.errors.length > 0) {\n console.warn(`⚠️ Some interfaces failed to sync:`)\n interfaceSyncResult.errors.forEach(({ alias, error }) => {\n console.warn(` - ${alias}: ${error}`)\n })\n }\n}\n",
59
+ "import dedent from 'dedent'\nimport { existsSync } from 'fs'\nimport fs from 'fs/promises'\nimport path from 'path'\nimport { AgentProject } from '../agent-project/index.js'\nimport { fetchServerIntegrationConfigs, mergeIntegrationConfig, type FetchServerConfigsResult } from '../integrations/config-utils.js'\nimport type { SyncCallbacks } from '../preflight/types.js'\nimport { generateIntegrationTypes } from '../generators/integration-types.js'\nimport { generatePluginTypes } from '../generators/plugin-types.js'\nimport { generatePluginActionTypes } from '../generators/plugin-action-types.js'\nimport { generateInterfaceTypes } from '../generators/interface-types.js'\nimport { generateTableTypes } from '../generators/table-types.js'\nimport { generateTriggerTypes } from '../generators/trigger-types.js'\nimport { generateStateTypes } from '../generators/state-types.js'\nimport { generateTagTypes } from '../generators/tag-types.js'\nimport { generateConfigurationTypes } from '../generators/configuration-types.js'\nimport { generateWorkflowTypes } from '../generators/workflow-types.js'\nimport { generateConversationTypes } from '../generators/conversation-types.js'\nimport { generateEventTypes } from '../generators/event-types.js'\nimport { generateClientWrapper } from '../generators/client-wrapper.js'\nimport { IntegrationManager } from '../integrations/manager.js'\nimport { PluginManager } from '../plugins/manager.js'\nimport { InterfaceManager } from '../interfaces/manager.js'\nimport { createFile } from '../utils/fs.js'\nimport { linkSdk } from '../utils/link-sdk.js'\nimport { pascalCase } from '../utils/strings.js'\nimport { DevIdManager } from './dev-id-manager.js'\nimport { IntegrationSync } from './integration-sync.js'\nimport { InterfaceSync } from './interface-sync.js'\nimport { PluginSync } from './plugin-sync.js'\nimport { formatCode, ADK_VERSION } from '../generators/utils.js'\nimport { transforms, z } from '@botpress/sdk'\nimport { getIntegrationAlias, getPluginAlias } from '../utils/ids.js'\nimport { PluginParser } from '../agent-project/dependencies-parser.js'\nimport { BUILTIN_INTERFACES } from '../constants.js'\nimport { BuiltInActions, BuiltInWorkflows, Primitives, Workflow } from '@botpress/runtime/internal'\nimport { BUILT_IN_TAGS } from '@botpress/runtime/definition'\n\nexport interface BotGeneratorOptions {\n projectPath: string\n outputPath?: string\n adkCommand?: 'adk-dev' | 'adk-build' | 'adk-deploy'\n callbacks?: SyncCallbacks\n}\n\nconst plural = (n: number, word: string): string => `${n} ${word}${n === 1 ? '' : 's'}`\n\nfunction isBuiltinWorkflow(name: string): boolean {\n return !!Object.values(BuiltInWorkflows).find((x) => x.name === name)\n}\n\nfunction isBuiltinAction(name: string): boolean {\n return !!Object.values(BuiltInActions).find((x) => x.name === name)\n}\n\n/**\n * Generate a normalized import path for use in import statements\n * Converts Windows backslashes to forward slashes and removes .ts extension\n */\nfunction getImportPath(from: string, to: string): string {\n return path.relative(path.dirname(from), to).replace(/\\.ts$/, '').replace(/\\\\/g, '/')\n}\n\nexport class BotGenerator {\n private projectPath: string\n private outputPath: string\n private adkCommand?: 'adk-dev' | 'adk-build' | 'adk-deploy'\n private callbacks?: SyncCallbacks\n\n constructor(options: BotGeneratorOptions) {\n this.projectPath = path.resolve(options.projectPath)\n this.outputPath = path.resolve(options.outputPath || path.join(this.projectPath, '.adk'))\n this.adkCommand = options.adkCommand\n this.callbacks = options.callbacks\n }\n\n private async listFilesRecursive(rootDir: string): Promise<string[]> {\n try {\n if (!existsSync(rootDir)) return []\n const result: string[] = []\n const walk = async (dir: string, relativeBase: string) => {\n const entries = await fs.readdir(dir, { withFileTypes: true })\n for (const entry of entries) {\n const abs = path.join(dir, entry.name)\n const rel = path.join(relativeBase, entry.name)\n if (entry.isDirectory()) {\n await walk(abs, rel)\n } else {\n result.push(rel)\n }\n }\n }\n await walk(rootDir, '')\n return result.sort()\n } catch {\n return []\n }\n }\n\n private async removeEmptyDirectories(rootDir: string): Promise<void> {\n if (!existsSync(rootDir)) return\n const removeIfEmpty = async (dir: string) => {\n const entries = await fs.readdir(dir, { withFileTypes: true })\n for (const entry of entries) {\n if (entry.isDirectory()) {\n const subdir = path.join(dir, entry.name)\n await removeIfEmpty(subdir)\n }\n }\n\n // Re-read after potential removals\n const after = await fs.readdir(dir)\n if (after.length === 0 && dir !== rootDir) {\n try {\n await fs.rmdir(dir, { recursive: false })\n } catch {}\n }\n }\n await removeIfEmpty(rootDir)\n }\n\n async generate(): Promise<void> {\n // Load the agent project\n const project = await AgentProject.load(this.projectPath)\n\n // Create output directory\n await fs.mkdir(this.outputPath, { recursive: true })\n\n // Generate bot files\n await this.generateBotDefinition()\n await this.generateIntegrationsDefinition()\n await this.generatePluginsDefinition()\n await this.generateInterfacesDefinition()\n await this.generateIntegrationsTypes()\n await this.generatePluginsTypes()\n await this.generateInterfacesTypes()\n await this.generateTableTypes()\n await this.generateTriggerTypes()\n await this.generateTagTypes()\n await this.generateStateTypes()\n await this.generateConfigurationTypes()\n await this.generateWorkflowTypes()\n await this.generateConversationTypes()\n await this.generateActionTypes()\n await this.generateEventTypes()\n await this.generateIntegrationActionTypes()\n await this.generatePluginActionTypes()\n await this.generateRuntimeTypes()\n await this.generateClientWrapper()\n await this.generateBotIndex()\n await this.generatePackageJson(project)\n await this.generateTsConfig()\n await this.generateGlobalTypes()\n await this.copyAssets()\n }\n\n private async generateIntegrationsTypes(): Promise<void> {\n // Load the project to get interfaces\n const project = await AgentProject.load(this.projectPath)\n const manager = new IntegrationManager({\n workspaceId: project.agentInfo?.workspaceId,\n })\n const integrations = await manager.loadIntegrations(project.dependencies || {})\n\n // List existing files before generation (.adk/integrations)\n const integrationsDir = path.join(this.projectPath, '.adk', 'integrations')\n const existingIntegrationFiles = await this.listFilesRecursive(integrationsDir)\n\n let aliases = new Set<string>()\n let files = new Set<string>() // tracks all files created in this run (relative to .adk/integrations)\n\n // Generate imports for each integration\n for (const integration of integrations.integrations) {\n if (integration.definition) {\n const types = await generateIntegrationTypes(integration)\n\n // Use dynamic import for type\n const importPath = `./${path.join('integrations', types.names.paths.index).replace(/\\\\/g, '/')}`\n aliases.add(`\"${integration.alias}\": import(\"${importPath}\").${types.names.typings.index}`)\n\n for (const [filePath, content] of Object.entries(types.files)) {\n const fullPath = path.join(this.projectPath, '.adk', 'integrations', filePath)\n\n const dir = path.dirname(fullPath)\n await fs.mkdir(dir, { recursive: true })\n await createFile(fullPath, content)\n files.add(filePath)\n }\n }\n }\n\n const types = `\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\n declare module \"@botpress/runtime/_types/integrations\" {\n export type Integrations = {\n ${Array.from(aliases).join(`, `)}\n };\n }\n `\n\n await createFile(path.join(this.projectPath, '.adk', 'integrations-types.d.ts'), await formatCode(types))\n\n // Cleanup stale integration files\n const staleIntegrationFiles = existingIntegrationFiles.filter((f) => !files.has(f))\n if (staleIntegrationFiles.length > 0) {\n for (const rel of staleIntegrationFiles) {\n const abs = path.join(integrationsDir, rel)\n try {\n await fs.rm(abs, { force: true })\n } catch {}\n }\n }\n // remove empty folders after deletion\n await this.removeEmptyDirectories(integrationsDir)\n }\n\n private async generatePluginsTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n const manager = new PluginManager({\n workspaceId: project.agentInfo?.workspaceId,\n })\n const result = await manager.loadPlugins(project.dependencies || {})\n\n // List existing files before generation (.adk/plugins)\n const pluginsDir = path.join(this.projectPath, '.adk', 'plugins')\n const existingPluginFiles = await this.listFilesRecursive(pluginsDir)\n\n let aliases = new Set<string>()\n let files = new Set<string>()\n\n for (const plugin of result.plugins) {\n if (plugin.definition) {\n const types = await generatePluginTypes(plugin)\n\n const importPath = `./${path.join('plugins', types.names.paths.index).replace(/\\\\/g, '/')}`\n aliases.add(`\"${plugin.alias}\": import(\"${importPath}\").${types.names.typings.index}`)\n\n for (const [filePath, content] of Object.entries(types.files)) {\n const fullPath = path.join(this.projectPath, '.adk', 'plugins', filePath)\n\n const dir = path.dirname(fullPath)\n await fs.mkdir(dir, { recursive: true })\n await createFile(fullPath, content)\n files.add(filePath)\n }\n }\n }\n\n const types = `\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\n declare module \"@botpress/runtime/_types/plugins\" {\n export type Plugins = {\n ${Array.from(aliases).join(`, `)}\n };\n }\n `\n\n await createFile(path.join(this.projectPath, '.adk', 'plugins-types.d.ts'), await formatCode(types))\n\n // Cleanup stale plugin files\n const stalePluginFiles = existingPluginFiles.filter((f) => !files.has(f))\n if (stalePluginFiles.length > 0) {\n for (const rel of stalePluginFiles) {\n const abs = path.join(pluginsDir, rel)\n try {\n await fs.rm(abs, { force: true })\n } catch {}\n }\n }\n await this.removeEmptyDirectories(pluginsDir)\n }\n\n private async generateTableTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateTableTypes(project)\n }\n\n private async generateTriggerTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateTriggerTypes(project)\n }\n\n private async generateTagTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateTagTypes(project)\n }\n\n private async generateStateTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateStateTypes(project)\n }\n\n private async generateConfigurationTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateConfigurationTypes(project)\n }\n\n private async generateEventTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateEventTypes(project)\n }\n\n private async generateWorkflowTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateWorkflowTypes(project)\n }\n\n private async generateConversationTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateConversationTypes(project)\n }\n\n private async generateActionTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n const { generateActionTypes } = await import('../generators/action-types.js')\n await generateActionTypes(project)\n }\n\n private async generateIntegrationActionTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n const { generateIntegrationActionTypes } = await import('../generators/integration-action-types.js')\n await generateIntegrationActionTypes(project)\n }\n\n private async generatePluginActionTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generatePluginActionTypes(project)\n }\n\n private async generateClientWrapper(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n await generateClientWrapper(project)\n }\n\n private async generateRuntimeTypes(): Promise<void> {\n // Load the project for conditional imports\n const project = await AgentProject.load(this.projectPath)\n\n // Load integrations to generate channel types\n const manager = new IntegrationManager({\n workspaceId: project.agentInfo?.workspaceId,\n })\n const integrations = await manager.loadIntegrations(project.dependencies || {})\n\n // Collect all channel names from integrations\n const channels: string[] = []\n for (const integration of integrations.integrations) {\n if (integration.enabled && integration.definition) {\n const alias = integration.alias\n for (const channelName of Object.keys(integration.definition.channels || {})) {\n channels.push(`\"${alias}.${channelName}\"`)\n }\n }\n }\n\n // Generate channel union type\n const channelsType = channels.length > 0 ? channels.join(' | ') : 'never'\n\n // Get state types from agent config\n let botStateType = '{}'\n let userStateType = '{}'\n\n try {\n const configPath = path.join(project.path, 'agent.config.ts')\n // Bust module cache to ensure fresh config on regeneration\n const configModule = await import(`${configPath}?t=${Date.now()}`)\n const config = configModule.default\n\n if (config?.bot?.state) {\n const botSchema = config.bot.state as z.ZodTypeAny\n if (botSchema.toTypescriptType) {\n botStateType = botSchema.toTypescriptType()\n }\n }\n\n if (config?.user?.state) {\n const userSchema = config.user.state as z.ZodTypeAny\n if (userSchema.toTypescriptType) {\n userStateType = userSchema.toTypescriptType()\n }\n }\n } catch (error) {\n console.warn('Failed to load agent config for state types:', error)\n }\n\n const types = `\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/channels\" {\n export type Channels = ${channelsType};\n export type ChannelSpec = Channels | readonly Channels[] | '*';\n}\n\ndeclare module \"@botpress/runtime/_types/state\" {\n export type BotState = ${botStateType};\n export type UserState = ${userStateType};\n}\n`\n\n await createFile(path.join(this.projectPath, '.adk', 'runtime.d.ts'), await formatCode(types))\n }\n\n private async generateInterfacesTypes(): Promise<void> {\n // Load the project to get interfaces\n const project = await AgentProject.load(this.projectPath)\n const integrationManager = new IntegrationManager({\n workspaceId: project.agentInfo?.workspaceId,\n })\n const manager = new InterfaceManager()\n\n // List existing files before generation (.adk/interfaces)\n const interfacesDir = path.join(this.projectPath, '.adk', 'interfaces')\n const existingInterfaceFiles = await this.listFilesRecursive(interfacesDir)\n\n const interfaces = await manager\n .loadInterfaces(project.dependencies || {})\n .then((result) => result.interfaces.filter((int) => int.definition).map((x) => x.definition!))\n\n const integrationsWithAlias = await integrationManager\n .loadIntegrations(project.dependencies || {})\n .then((result) =>\n result.integrations\n .filter((int) => int.enabled && int.definition)\n .map((x) => ({ alias: x.alias, definition: x.definition! }))\n )\n\n let imports = new Set<string>()\n let aliases = new Set<string>()\n let files = new Set<string>() // tracks all files created in this run (relative to .adk/interfaces)\n\n // Generate imports for each integration\n for (const int of interfaces) {\n const types = await generateInterfaceTypes(int, integrationsWithAlias)\n\n imports.add(\n `import { ${types.names.typings.index} } from \"./${path.join('interfaces', types.names.paths.index).replace(/\\\\/g, '/')}\";`\n )\n\n aliases.add(`\"${types.names.name}\": ${types.names.typings.index}`)\n\n for (const [filePath, content] of Object.entries(types.files)) {\n const fullPath = path.join(this.projectPath, '.adk', 'interfaces', filePath)\n\n const dir = path.dirname(fullPath)\n await fs.mkdir(dir, { recursive: true })\n await createFile(fullPath, content)\n files.add(filePath)\n }\n }\n\n const types = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // File: interfaces.d.ts\n ////////////////////////////////////////////////////////\n\n ${Array.from(imports).join('\\n')}\n\n declare global {\n export type Interfaces = {\n ${Array.from(aliases).join(`, `)}\n };\n }\n `\n\n const consts = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // File: interfaces.ts\n ////////////////////////////////////////////////////////\n\n ${Array.from(imports)\n .map((x) => x.replace('.ts\"', '\"'))\n .join('\\n')}\n\n export const Interfaces = {\n ${Array.from(aliases).join(',\\n')}\n };\n `\n\n await createFile(path.join(this.projectPath, '.adk', 'interfaces.d.ts'), await formatCode(types))\n\n await createFile(path.join(this.projectPath, '.adk', 'interfaces.ts'), await formatCode(consts))\n\n // Cleanup stale interface files\n const staleInterfaceFiles = existingInterfaceFiles.filter((f) => !files.has(f))\n if (staleInterfaceFiles.length > 0) {\n for (const rel of staleInterfaceFiles) {\n const abs = path.join(interfacesDir, rel)\n try {\n await fs.rm(abs, { force: true })\n } catch {}\n }\n }\n // remove empty folders after deletion\n await this.removeEmptyDirectories(interfacesDir)\n }\n\n private async generateIntegrationsDefinition(): Promise<void> {\n // Load the project to get integrations\n const project = await AgentProject.load(this.projectPath)\n const integrations = project.dependencies?.integrations || {}\n\n // Generate imports for each integration\n const imports: string[] = []\n const integrationDefs: string[] = []\n\n // Filter out disabled integrations (enabled: false)\n for (const [alias, config] of Object.entries(integrations)) {\n if (config.enabled === false) {\n continue\n }\n\n const normalizedAlias = getIntegrationAlias(alias)\n imports.push(`import integration_${normalizedAlias} from \"../bp_modules/integration_${normalizedAlias}\";`)\n integrationDefs.push(`${normalizedAlias}: integration_${normalizedAlias}`)\n }\n\n const content = dedent`\n import { IntegrationPackage } from \"@botpress/sdk\";\n\n ${imports.length > 0 ? '\\n' + imports.join('\\n') : ''}\n\n export const IntegrationDefinitions = {\n ${integrationDefs.length > 0 ? integrationDefs.join(',\\n') : ''}\n } as Record<string, IntegrationPackage>;\n `\n\n await createFile(path.join(this.outputPath, 'src', 'integrations.ts'), content)\n }\n\n private async generatePluginsDefinition(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n const plugins = project.dependencies?.plugins || {}\n\n const imports: string[] = []\n const pluginDefs: string[] = []\n\n for (const [alias] of Object.entries(plugins)) {\n const normalizedAlias = getPluginAlias(alias)\n imports.push(`import plugin_${normalizedAlias} from \"../bp_modules/plugin_${alias}\";`)\n pluginDefs.push(`\"${alias}\": plugin_${normalizedAlias}`)\n }\n\n const content = dedent`\n import { PluginPackage } from \"@botpress/sdk\";\n\n ${imports.length > 0 ? '\\n' + imports.join('\\n') : ''}\n\n export const PluginDefinitions = {\n ${pluginDefs.length > 0 ? pluginDefs.join(',\\n') : ''}\n } as Record<string, PluginPackage>;\n `\n\n await createFile(path.join(this.outputPath, 'src', 'plugins.ts'), content)\n }\n\n private async generateInterfacesDefinition(): Promise<void> {\n // Use hard-coded built-in interfaces\n const interfaces = BUILTIN_INTERFACES\n\n // Generate imports for each interface\n const imports: string[] = []\n const interfaceDefs: string[] = []\n\n for (const alias of Object.keys(interfaces)) {\n const pascalAlias = pascalCase(alias)\n imports.push(`import interface_${pascalAlias} from \"../bp_modules/interface_${pascalAlias}\";`)\n interfaceDefs.push(`${pascalAlias}: interface_${pascalAlias}`)\n }\n\n const content = dedent`\n import { InterfacePackage } from \"@botpress/sdk\";\n\n ${imports.length > 0 ? '\\n' + imports.join('\\n') : ''}\n\n export const InterfaceDefinitions = {\n ${interfaceDefs.length > 0 ? interfaceDefs.join(',\\n') : ''}\n } as Record<string, InterfacePackage>;\n `\n\n await createFile(path.join(this.outputPath, 'src', 'interfaces.ts'), await formatCode(content))\n }\n\n /**\n * Report the result of fetching and merging server-side integration configs.\n * Only emits messages when there's something meaningful to report.\n */\n private reportServerConfigSync(\n serverConfigResult: FetchServerConfigsResult,\n integrations: Array<{ alias: string; config?: Record<string, any> }>\n ): void {\n if (!this.callbacks) {\n return\n }\n\n if (serverConfigResult.error) {\n this.callbacks.onError?.(\n `Failed to fetch remote configs: ${serverConfigResult.error}. Server-only config values may be overwritten.`\n )\n return\n }\n\n if (!serverConfigResult.fetched) {\n return\n }\n\n const configCount = Object.keys(serverConfigResult.configs).length\n if (configCount === 0) {\n return\n }\n\n this.callbacks.onSuccess?.(`Preserved remote configs for ${plural(configCount, 'integration')}`)\n\n for (const { alias, config: localConfig } of integrations) {\n const serverConfig = serverConfigResult.configs[alias]\n if (!serverConfig || Object.keys(serverConfig).length === 0) {\n continue\n }\n\n const preserved = Object.keys(serverConfig).filter((key) => !localConfig || !(key in localConfig))\n if (preserved.length > 0) {\n this.callbacks.onProgress?.(` ${alias}: preserved ${plural(preserved.length, 'remote field')} (${preserved.join(', ')})`)\n }\n\n if (localConfig) {\n const overridden = Object.keys(localConfig).filter((key) => key in serverConfig && localConfig[key] !== serverConfig[key])\n if (overridden.length > 0) {\n this.callbacks.onProgress?.(` ${alias}: local overrides ${plural(overridden.length, 'field')} (${overridden.join(', ')})`)\n }\n }\n }\n }\n\n private async generateBotDefinition(): Promise<void> {\n const project = await AgentProject.load(this.projectPath)\n const integrations = project.integrations\n const enabledIntegrations = integrations.filter((i) => i.enabled)\n\n // Fetch server-side configs to preserve values (e.g. auth tokens) not in agent.config.ts\n // During deploy/build, fetch from the production bot (botId) to avoid leaking dev config\n const isDeployOrBuild = this.adkCommand === 'adk-deploy' || this.adkCommand === 'adk-build'\n const configTargetBotId = isDeployOrBuild ? project.agentInfo?.botId : undefined\n const serverConfigResult = await fetchServerIntegrationConfigs(project, configTargetBotId)\n this.reportServerConfigSync(serverConfigResult, enabledIntegrations)\n\n const imports: string[] = []\n const addIntegrations: string[] = []\n\n for (const integration of enabledIntegrations) {\n const { alias, configurationType, config } = integration\n const importName = `integration_${getIntegrationAlias(alias)}`\n imports.push(`import ${importName} from \"./bp_modules/${importName}\";`)\n\n // \"default\" is not a real configuration type - omit it (API will reject it)\n const configType =\n configurationType && configurationType !== 'default' ? `, configurationType: \"${configurationType}\"` : ''\n\n const mergedConfig = mergeIntegrationConfig(serverConfigResult.configs[alias], config)\n const configData = Object.keys(mergedConfig).length > 0 ? `, configuration: ${JSON.stringify(mergedConfig)}` : ''\n\n addIntegrations.push(\n `bot.addIntegration(${importName}, { alias: \"${alias}\", enabled: true${configType}${configData} });`\n )\n }\n\n // Validate plugin dependency references before generating\n const depRefErrors = PluginParser.validateDependencyReferences(project.dependencies || {})\n if (depRefErrors.length > 0) {\n const messages = depRefErrors.map((e) => e.message).join('\\n ')\n throw new Error(`Plugin dependency validation failed:\\n ${messages}`)\n }\n\n // Parse plugins and generate addPlugin() calls (must come AFTER addIntegration)\n const plugins = project.dependencies?.plugins || {}\n const addPlugins: string[] = []\n\n for (const [alias, pluginConfig] of Object.entries(plugins)) {\n const normalizedAlias = getPluginAlias(alias)\n const importName = `plugin_${normalizedAlias}`\n imports.push(`import ${importName} from \"./bp_modules/plugin_${alias}\";`)\n\n const configData = pluginConfig.config && Object.keys(pluginConfig.config).length > 0\n ? `, configuration: ${JSON.stringify(pluginConfig.config)}` : ''\n const depsData = pluginConfig.dependencies && Object.keys(pluginConfig.dependencies).length > 0\n ? `, dependencies: ${JSON.stringify(pluginConfig.dependencies)}` : ''\n\n addPlugins.push(\n `bot.addPlugin(${importName}, { alias: \"${alias}\"${configData}${depsData} });`\n )\n }\n\n // Load user-defined tags from agent.config.ts\n const botTags: Record<string, any> = {}\n const userTags: Record<string, any> = {}\n const conversationTags: Record<string, any> = {}\n const messageTags: Record<string, any> = {}\n const workflowTags: Record<string, any> = {}\n\n if (project.config?.bot?.tags) {\n Object.assign(botTags, project.config.bot.tags)\n }\n\n if (project.config?.user?.tags) {\n Object.assign(userTags, project.config.user.tags)\n }\n\n if (project.config?.conversation?.tags) {\n Object.assign(conversationTags, project.config.conversation.tags)\n }\n\n if (project.config?.message?.tags) {\n Object.assign(messageTags, project.config.message.tags)\n }\n\n if (project.config?.workflow?.tags) {\n Object.assign(workflowTags, project.config.workflow.tags)\n }\n\n // Helper to hash strings - creates short uppercase hashes\n const crypto = require('crypto')\n const hashString = (str: string) => {\n return crypto.createHash('md5').update(str).digest('hex').substring(0, 5).toUpperCase()\n }\n\n // For each trigger, we need to add possible tags\n for (const trigger of project.triggers) {\n const triggerName = trigger.definition.name\n\n // Add tag for this trigger - the tag name is based on trigger name\n // The value can be \"*\" for wildcard or a specific match result\n const tagName = `trigger${hashString(triggerName)}`\n conversationTags[tagName] = {\n title: `Trigger: ${triggerName}`,\n description: `Subscribe to events from trigger \"${triggerName}\" (use \"*\" for all events or specific values)`,\n }\n\n // TODO: Only add workflow tags when workflows exist\n // Currently we don't support workflow definitions yet\n // When implemented, check if project.workflows.length > 0\n // workflowTags[tagName] = {\n // title: `Trigger: ${triggerName}`,\n // description: `Subscribe to events from trigger \"${triggerName}\" (use \"*\" for all events or specific values)`\n // };\n }\n\n // Load workflow definitions at build time and generate their schemas\n const workflowDefs: string[] = []\n const recurringWorkflows: Array<{ name: string; schedule: string }> = []\n\n const workflowInstances: Workflow<any>[] = []\n\n for (const workflow of project.workflows) {\n try {\n if (isBuiltinWorkflow(workflow.definition.name)) {\n // Built-in workflow - already handled in runtime\n continue\n }\n\n // User-defined workflow - import from project\n const workflowPath = path.join(project.path, workflow.path)\n // Bust module cache to ensure fresh workflow on regeneration\n const workflowModule = await import(`${workflowPath}?t=${Date.now()}`)\n const workflowInstance = (workflowModule.default || workflowModule[workflow.export]) as Workflow | undefined\n\n if (workflowInstance) {\n workflowInstances.push(workflowInstance)\n }\n } catch (error) {\n console.error(`Failed to load workflow ${workflow.definition.name}:`, error)\n }\n }\n\n for (const workflow of Object.values(BuiltInWorkflows)) {\n workflowInstances.push(workflow)\n }\n\n for (const workflow of workflowInstances) {\n const definition = Primitives.Definitions.getDefinition(workflow)\n if (!Primitives.Definitions.isWorkflowDefinition(definition)) {\n continue\n }\n\n // Check if workflow has a schedule property for recurring execution\n if (definition.schedule) {\n recurringWorkflows.push({\n name: definition.name,\n schedule: definition.schedule,\n })\n }\n\n // Generate the workflow definition as inline code\n const inputSchema = definition.input\n ? transforms.fromJSONSchema(definition.input).naked().toTypescriptSchema()\n : 'z.object({})'\n\n const outputSchema = definition.output\n ? transforms.fromJSONSchema(definition.output).naked().toTypescriptSchema()\n : 'z.object({})'\n\n const parts = []\n if (definition.description) {\n parts.push(`title: ${JSON.stringify(definition.name)}`)\n parts.push(`description: ${JSON.stringify(definition.description)}`)\n }\n parts.push(`input: { schema: ${inputSchema} }`)\n parts.push(`output: { schema: ${outputSchema} }`)\n\n // Add workflow tags with built-in tags spread\n parts.push(`tags: {\n ...BUILT_IN_TAGS.workflow,\n key: {\n title: \"Workflow Key\",\n description: \"Unique key for workflow deduplication\"\n },\n }`)\n\n workflowDefs.push(`\"${definition.name}\": {\\n ${parts.join(',\\n ')}\\n }`)\n }\n\n const actionDefs: Record<string, any> = {}\n for (const action of project.actions) {\n const def = action.definition\n // Include ALL actions in bot.definition.ts (even hidden ones)\n actionDefs[def.name] = {\n title: def.title,\n description: def.description,\n attributes: def.attributes,\n input: def.input,\n output: def.output,\n cached: def.cached,\n }\n }\n\n const toEventName = (ename: string) => ename.replaceAll(/[^a-zA-Z0-9]/g, '').toLowerCase()\n\n // Load custom events from agent.config.ts\n const customEventDefs: string[] = []\n const configForEvents = project.config as Record<string, unknown> | undefined\n const customEvents = (configForEvents?.events || {}) as Record<\n string,\n { schema?: z.ZodTypeAny; description?: string }\n >\n\n for (const [eventName, eventDef] of Object.entries(customEvents)) {\n const schema = eventDef.schema\n let schemaCode = 'z.object({})'\n\n if (schema && typeof schema.toJSONSchema === 'function') {\n schemaCode = transforms.fromJSONSchema(schema.toJSONSchema()).toTypescriptSchema()\n }\n\n const parts = [`schema: ${schemaCode}`]\n if (eventDef.description) {\n parts.unshift(`description: ${JSON.stringify(eventDef.description)}`)\n }\n\n customEventDefs.push(`\"${eventName}\": {\\n ${parts.join(',\\n ')}\\n }`)\n }\n\n // Get configuration schema if defined\n const configSchema = project.config?.configuration?.schema\n const configSchemaCode = configSchema\n ? transforms.fromJSONSchema(configSchema.toJSONSchema()).toTypescriptSchema()\n : undefined\n\n const content = dedent`\n import { BotDefinition, z } from \"@botpress/sdk\";\n import {\n BUILT_IN_STATES,\n BUILT_IN_TAGS,\n TranscriptSchema,\n TrackedStateSchema,\n WorkflowCallbackEvent,\n WorkflowScheduleEvent,\n WorkflowContinueEvent,\n SubworkflowFinished,\n WorkflowDataRequestEvent,\n } from \"@botpress/runtime/definition\";\n ${imports.length > 0 ? '\\n' + imports.join('\\n') : ''}\n\n const bot = new BotDefinition({\n\n attributes: {\n runtime: \"adk\",\n runtimeVersion: \"${ADK_VERSION}\",\n ${\n Object.keys(botTags).length > 0\n ? Object.entries(botTags)\n .map(\n ([tag, meta]) =>\n `${meta.description ? `// ${meta.description}\\n ` : ''}\"${tag}\": ${JSON.stringify(meta.title)}`\n )\n .join(',\\n ')\n : ''\n }\n },\n ${configSchemaCode ? `\\nconfiguration: {\\n schema: ${configSchemaCode}\\n},\\n` : ''}\n user: {\n tags: {\n ...BUILT_IN_TAGS.user,\n ${Object.entries(userTags)\n .filter(([tag]) => !Object.keys(BUILT_IN_TAGS.user).includes(tag))\n .map(\n ([tag, meta]) =>\n `// ${meta.title}\\n ${meta.description ? `// ${meta.description}\\n ` : ''}\"${tag}\": ${JSON.stringify(meta)}`\n )\n .join(',\\n ')}${Object.entries(userTags).filter(([tag]) => !Object.keys(BUILT_IN_TAGS.user).includes(tag)).length > 0 ? ',' : ''}\n },\n },\n message: {\n tags: {\n ...BUILT_IN_TAGS.message,\n ${Object.entries(messageTags)\n .filter(([tag]) => !Object.keys(BUILT_IN_TAGS.message).includes(tag))\n .map(\n ([tag, meta]) =>\n `// ${meta.title}\\n ${meta.description ? `// ${meta.description}\\n ` : ''}\"${tag}\": ${JSON.stringify(meta)}`\n )\n .join(',\\n ')}${Object.entries(messageTags).filter(([tag]) => !Object.keys(BUILT_IN_TAGS.message).includes(tag)).length > 0 ? ',' : ''}\n },\n },\n conversation: {\n tags: {\n ...BUILT_IN_TAGS.conversation,\n ${Object.entries(conversationTags)\n .filter(([tag]) => !Object.keys(BUILT_IN_TAGS.conversation).includes(tag))\n .map(\n ([tag, meta]) =>\n `// ${meta.title}\\n ${meta.description ? `// ${meta.description}\\n ` : ''}\"${tag}\": ${JSON.stringify(meta)}`\n )\n .join(\n ',\\n '\n )}${Object.entries(conversationTags).filter(([tag]) => !Object.keys(BUILT_IN_TAGS.conversation).includes(tag)).length > 0 ? ',' : ''}\n },\n },\n ${\n workflowDefs.length > 0\n ? `workflows: {\n ${workflowDefs.join(',\\n ')}\n },`\n : ''\n }\n ${\n Object.keys(actionDefs).length > 0\n ? `actions: {\n ${Object.entries(actionDefs)\n .map(([name, def]) => {\n const parts = []\n if (def.title) parts.push(`title: ${JSON.stringify(def.title)}`)\n if (def.description) parts.push(`description: ${JSON.stringify(def.description)}`)\n if (def.attributes) parts.push(`attributes: ${JSON.stringify(def.attributes)}`)\n parts.push(`input: { schema: ${transforms.fromJSONSchema(def.input).toTypescriptSchema()} }`)\n parts.push(`output: { schema: ${transforms.fromJSONSchema(def.output).toTypescriptSchema()} }`)\n return `\"${name}\": {\\n ${parts.join(',\\n ')}\\n }`\n })\n .join(',\\n ')}\n },`\n : ''\n }\n ${\n recurringWorkflows.length > 0\n ? `recurringEvents: {\n ${recurringWorkflows\n .map(\n (wf) => `\"${toEventName(wf.name + 'Schedule')}\": {\n type: WorkflowScheduleEvent.name,\n schedule: { cron: \"${wf.schedule}\" },\n payload: { workflow: \"${wf.name}\" },\n }`\n )\n .join(',\\n ')}\n },`\n : ''\n }\n\n events: {\n [WorkflowScheduleEvent.name]: {\n schema: WorkflowScheduleEvent.schema,\n },\n [WorkflowCallbackEvent.name]: {\n schema: WorkflowCallbackEvent.schema,\n },\n [WorkflowContinueEvent.name]: {\n schema: WorkflowContinueEvent.schema,\n },\n [SubworkflowFinished.name]: {\n schema: SubworkflowFinished.schema,\n },\n [WorkflowDataRequestEvent.name]: {\n schema: WorkflowDataRequestEvent.schema,\n },\n ${customEventDefs.length > 0 ? customEventDefs.join(',\\n ') + ',' : ''}\n },\n\n states: {\n /**\n * This is the ADK-native conversation state that contains the\n * necessary data to run the conversation and its handlers.\n */\n conversation: {\n type: \"conversation\",\n schema: z.object({ transcript: TranscriptSchema }),\n },\n\n /**\n * This is a generic state to store the conversation-specific state.\n * This is defined by the users at build-time when they define conversations.\n * Because each conversation can have its own state schema, we use \\`z.any()\\`\n */\n [BUILT_IN_STATES.conversation]: {\n type: \"conversation\",\n schema: TrackedStateSchema,\n },\n\n /**\n * Bot-wide global state that persists across all conversations\n */\n [BUILT_IN_STATES.bot]: {\n type: \"bot\",\n schema: TrackedStateSchema,\n },\n\n /**\n * User-specific state that persists across conversations for each user\n */\n [BUILT_IN_STATES.user]: {\n type: \"user\",\n schema: TrackedStateSchema,\n },\n\n /**\n * Workflow-specific state that persists across workflow executions\n */\n [BUILT_IN_STATES.workflowState]: {\n type: \"workflow\",\n schema: TrackedStateSchema,\n },\n\n /**\n * Workflow cached steps executions\n */\n [BUILT_IN_STATES.workflowSteps]: {\n type: \"workflow\",\n schema: TrackedStateSchema,\n },\n\n /**\n * Data source metadata for dashboard visibility (knowledge base sources)\n */\n [BUILT_IN_STATES.dsData]: {\n type: \"bot\",\n schema: z.record(z.any()),\n },\n },\n });\n `\n\n // This is done so dedent doesn't unescape newlines in multiline integration config inputs\n const integrationsSection = addIntegrations.length > 0 ? '\\n' + addIntegrations.join('\\n') : ''\n const pluginsSection = addPlugins.length > 0 ? '\\n' + addPlugins.join('\\n') : ''\n const fullContent = content + integrationsSection + pluginsSection + '\\n\\nexport default bot;'\n\n await createFile(path.join(this.outputPath, 'bot.definition.ts'), await formatCode(fullContent))\n }\n\n private async generateBotIndex(): Promise<void> {\n const content = dedent`\n import * as bp from '.botpress'\n import { setupAdkRuntime } from './adk-runtime'\n import { Actions } from './actions'\n import {isMainThread, isWorkerMode, initializeParentWorker, runWorker, BuiltInActions} from '@botpress/runtime/internal'\n import { handlers } from \"@botpress/runtime/runtime\";\n\n const bot = new bp.Bot({\n actions: {},\n register: async (props) => {\n handlers.trigger.triggerRegisterEvent(props)\n }\n })\n\n\n // ============================================================================\n // WORKER INITIALIZATION\n // ============================================================================\n\n if (isWorkerMode() && isMainThread) {\n // Branch 1: Main thread in worker mode - initialize parent with pool\n if (process.env.BP_DEBUG) console.log(\"[Main] Initializing parent worker with pool...\");\n initializeParentWorker(bot);\n } else if (isWorkerMode() && process.env.IS_DEV_WORKER === \"true\") {\n // Branch 2: Worker thread - run child worker\n if (process.env.BP_DEBUG) console.log(\"[Worker] Initializing child worker...\");\n runWorker(bot);\n setupAdkRuntime(bot);\n } else {\n // Branch 3: Worker mode disabled - single-thread mode\n if (process.env.BP_DEBUG) console.log(\"[Bot] Running in single-thread mode\");\n setupAdkRuntime(bot);\n }\n\n export default bot\n `\n\n await createFile(path.join(this.outputPath, 'src', 'index.ts'), await formatCode(content))\n }\n\n private async generatePackageJson(project: AgentProject): Promise<void> {\n const packageJson = {\n name: `@bp-templates/${project.config?.name || 'agent'}-bot`,\n scripts: {\n 'check:type': 'tsc --noEmit',\n },\n private: true,\n dependencies: {},\n devDependencies: {\n typescript: '^5.9.3',\n },\n }\n\n await createFile(path.join(this.outputPath, 'package.json'), JSON.stringify(packageJson, null, 2))\n }\n\n private async generateTsConfig(): Promise<void> {\n const tsConfig = {\n compilerOptions: {\n lib: ['es2022'],\n module: 'es2022',\n strict: true,\n esModuleInterop: true,\n skipLibCheck: true,\n forceConsistentCasingInFileNames: true,\n moduleResolution: 'bundler',\n allowUnusedLabels: false,\n allowUnreachableCode: false,\n noFallthroughCasesInSwitch: true,\n noImplicitOverride: true,\n noImplicitReturns: true,\n noUncheckedIndexedAccess: true,\n noUnusedParameters: true,\n target: 'es2017',\n baseUrl: '.',\n outDir: 'dist',\n checkJs: false,\n incremental: true,\n exactOptionalPropertyTypes: false,\n resolveJsonModule: true,\n noPropertyAccessFromIndexSignature: false,\n noUnusedLocals: false,\n },\n include: ['.botpress/**/*', 'src/**/*', 'bp_modules/**/*', './*.ts', './*.json', '../*.d.ts'],\n }\n\n await createFile(path.join(this.outputPath, 'tsconfig.json'), JSON.stringify(tsConfig, null, 2))\n }\n\n private async generateGlobalTypes(): Promise<void> {\n const content = dedent`\n // Global types for ADK assets\n declare global {\n const assets: {\n get(path: string): Promise<{\n url: string;\n path: string;\n name: string;\n size: number;\n mime: string;\n hash: string;\n createdAt: string;\n updatedAt: string;\n fileId: string;\n }>;\n };\n }\n\n export {};\n `\n\n await createFile(path.join(this.outputPath, 'global.d.ts'), await formatCode(content))\n }\n\n private async copyAssets(): Promise<void> {\n const assetsPath = path.join(this.projectPath, 'assets')\n const targetPath = path.join(this.outputPath, 'assets')\n\n if (existsSync(assetsPath)) {\n await fs.mkdir(targetPath, { recursive: true })\n // Copy assets recursively\n await this.copyDirectory(assetsPath, targetPath)\n }\n }\n\n private async copyDirectory(src: string, dest: string): Promise<void> {\n const entries = await fs.readdir(src, { withFileTypes: true })\n\n for (const entry of entries) {\n const srcPath = path.join(src, entry.name)\n const destPath = path.join(dest, entry.name)\n\n if (entry.isDirectory()) {\n await fs.mkdir(destPath, { recursive: true })\n await this.copyDirectory(srcPath, destPath)\n } else {\n await fs.copyFile(srcPath, destPath)\n }\n }\n }\n\n async generateAdkRuntime(): Promise<void> {\n const project = new AgentProject(this.projectPath)\n await project.reload()\n\n const srcDir = path.join(this.outputPath, 'src')\n\n /* <conversations.ts> */ {\n const dest = path.join(srcDir, 'conversations.ts')\n const imports = new Map<\n string,\n {\n statement: string\n name: string\n }\n >()\n const exports = new Set<string>()\n let index = 1\n\n for (const conversation of project.conversations) {\n if (!imports.has(conversation.path)) {\n const name = `conversations_${index++}`\n const importPath = getImportPath(dest, path.join(project.path, conversation.path))\n\n imports.set(conversation.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n })\n }\n\n exports.add(\n `\"${conversation.definition.channel}\": ${imports.get(conversation.path)!.name}.${conversation.export}`\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 // File: conversations.ts\n ////////////////////////////////////////////////////////\n\n ${Array.from(imports)\n .map(([, { statement }]) => `${statement}`)\n .join('\\n')}\n\n export const Conversations = {\n ${Array.from(exports).join(',\\n')}\n };\n `\n\n await createFile(dest, await formatCode(content))\n } /* </conversations.ts> */\n\n /* <knowledge.ts> */ {\n const dest = path.join(srcDir, 'knowledge.ts')\n const imports = new Map<\n string,\n {\n statement: string\n name: string\n }\n >()\n const exports = new Set<string>()\n let index = 1\n\n for (const knowledge of project.knowledge) {\n if (!imports.has(knowledge.path)) {\n const name = `knowledge_${index++}`\n const importPath = getImportPath(dest, path.join(project.path, knowledge.path))\n\n imports.set(knowledge.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n })\n }\n\n exports.add(`\"${knowledge.definition.name}\": ${imports.get(knowledge.path)!.name}.${knowledge.export}`)\n }\n\n const content = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // File: knowledge.ts\n ////////////////////////////////////////////////////////\n\n ${Array.from(imports)\n .map(([, { statement }]) => `${statement}`)\n .join('\\n')}\n\n export const Knowledge = {\n ${Array.from(exports).join(',\\n')}\n };\n `\n\n await createFile(dest, await formatCode(content))\n } /* </knowledge.ts> */\n\n /* <triggers.ts> */ {\n const dest = path.join(srcDir, 'triggers.ts')\n const { transforms } = await import('@botpress/sdk')\n const imports = new Map<\n string,\n {\n statement: string\n name: string\n }\n >()\n const exports = new Set<string>()\n const payloadTypes: Record<string, string> = {}\n let index = 1\n\n // First pass: collect imports and exports\n for (const trigger of project.triggers) {\n if (!imports.has(trigger.path)) {\n const name = `triggers_${index++}`\n const importPath = getImportPath(dest, path.join(project.path, trigger.path))\n\n imports.set(trigger.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n })\n }\n\n exports.add(`\"${trigger.definition.name}\": ${imports.get(trigger.path)!.name}.${trigger.export}`)\n }\n\n // Second pass: extract payload schemas and compile to TypeScript types\n for (const trigger of project.triggers) {\n try {\n // Import the trigger module to get the actual instance\n const absolutePath = path.join(project.path, trigger.path)\n // Bust module cache to ensure fresh trigger on regeneration\n const triggerModule = await import(`${absolutePath}?t=${Date.now()}`)\n const triggerInstance = triggerModule[trigger.export] || triggerModule.default\n\n if (triggerInstance && triggerInstance.payload) {\n // Convert Zod schema to JSON Schema, then to TypeScript type\n const jsonSchema = transforms.toJSONSchema(triggerInstance.payload)\n const payloadType = transforms.fromJSONSchema(jsonSchema).toTypescriptType()\n payloadTypes[trigger.definition.name] = payloadType\n } else {\n payloadTypes[trigger.definition.name] = '{}'\n }\n } catch (error) {\n console.warn(`Warning: Could not process trigger ${trigger.definition.name}:`, error)\n payloadTypes[trigger.definition.name] = '{}'\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 // File: triggers.ts\n ////////////////////////////////////////////////////////\n\n ${Array.from(imports)\n .map(([, { statement }]) => `${statement}`)\n .join('\\n')}\n\n export const Triggers = {\n ${Array.from(exports).join(',\\n')}\n };\n\n // Extract trigger payload types with compiled TypeScript types\n type _TriggerPayloads = {\n ${Object.entries(payloadTypes)\n .map(([name, type]) => `\"${name}\": ${type}`)\n .join(';\\n ')}\n };\n\n declare global {\n export type TriggerPayloads = _TriggerPayloads;\n }\n `\n\n await createFile(dest, await formatCode(content))\n } /* </triggers.ts> */\n\n /* <workflows.ts> */ {\n const dest = path.join(srcDir, 'workflows.ts')\n const imports = new Map<\n string,\n {\n statement: string\n name: string\n }\n >()\n const exports = new Set<string>()\n let index = 1\n\n for (const workflow of project.workflows) {\n if (isBuiltinWorkflow(workflow.definition.name)) {\n // Built-in workflow - already handled in runtime\n continue\n }\n\n if (!imports.has(workflow.path)) {\n // User-defined workflow - import from project\n const name = `workflows_${index++}`\n const importPath = getImportPath(dest, path.join(project.path, workflow.path))\n\n const statement = `import * as ${name} from \"${importPath}\";`\n imports.set(workflow.path, {\n name,\n statement,\n })\n }\n }\n\n // Generate exports\n for (const workflow of project.workflows) {\n if (isBuiltinWorkflow(workflow.definition.name)) {\n // Built-in workflow - already handled in runtime\n continue\n }\n\n const importEntry = imports.get(workflow.path)!\n const exportStatement = workflow.export.replace('].', ']!.')\n\n exports.add(`\"${workflow.definition.name}\": ${importEntry.name}.${exportStatement}`)\n }\n\n const content = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // File: workflows.ts\n ////////////////////////////////////////////////////////\n\n ${Array.from(imports)\n .map(([, { statement }]) => `${statement}`)\n .join('\\n')}\n\n export const Workflows = {\n ${Array.from(exports).join(',\\n')}\n };\n `\n\n await createFile(dest, await formatCode(content))\n } /* </workflows.ts> */\n\n /* <actions.ts> */ {\n const dest = path.join(srcDir, 'actions.ts')\n const imports = new Map<\n string,\n {\n statement: string\n name: string\n }\n >()\n const exports = new Set<string>()\n let index = 1\n\n for (const action of project.actions) {\n if (isBuiltinAction(action.definition.name)) {\n // Built-in action - already handled in runtime\n continue\n }\n\n if (!imports.has(action.path)) {\n const name = `actions_${index++}`\n const importPath = getImportPath(dest, path.join(project.path, action.path))\n\n imports.set(action.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n })\n }\n\n exports.add(`\"${action.definition.name}\": ${imports.get(action.path)!.name}.${action.export}`)\n }\n\n const content = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // File: actions.ts\n ////////////////////////////////////////////////////////\n\n ${Array.from(imports)\n .map(([, { statement }]) => `${statement}`)\n .join('\\n')}\n\n export const Actions = {\n ${Array.from(exports).join(',\\n')}\n };\n `\n\n await createFile(dest, await formatCode(content))\n } /* </actions.ts> */\n\n /* <tables.ts> */ {\n const dest = path.join(srcDir, 'tables.ts')\n const imports = new Map<\n string,\n {\n statement: string\n name: string\n }\n >()\n const exports = new Set<string>()\n let index = 1\n\n for (const table of project.tables) {\n if (!imports.has(table.path)) {\n const name = `tables_${index++}`\n const importPath = getImportPath(dest, path.join(project.path, table.path))\n\n imports.set(table.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n })\n }\n\n exports.add(`\"${table.definition.name}\": ${imports.get(table.path)!.name}.${table.export}`)\n }\n\n const content = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // File: tables.ts\n ////////////////////////////////////////////////////////\n\n ${Array.from(imports)\n .map(([, { statement }]) => `${statement}`)\n .join('\\n')}\n\n export const Tables = {\n ${Array.from(exports).join(',\\n')}\n };\n `\n\n await createFile(dest, await formatCode(content))\n } /* </tables.ts> */\n\n /* <config.ts> */ {\n const dest = path.join(srcDir, 'config.ts')\n const importPath = getImportPath(dest, path.join(project.path, 'agent.config.ts'))\n\n const content = `\n ////////////////////////////////////////////////////////\n // DO NOT EDIT THIS FILE DIRECTLY\n // This file is auto-generated from the Botpress ADK\n // File: config.ts\n ////////////////////////////////////////////////////////\n\n import AgentConfigImport from \"${importPath}\";\n\n export const AgentConfig = AgentConfigImport;\n `\n\n await createFile(dest, await formatCode(content))\n } /* </config.ts> */\n\n const content = dedent`\n import * as bp from \".botpress\";\n import { IntegrationDefinitions } from \"./integrations\";\n import { InterfaceDefinitions } from \"./interfaces\";\n import { initializeAssets } from \"./assets-runtime\";\n import { handlers, patchHandlers, agentRegistry, z, initialize, register, registerIntegration } from \"@botpress/runtime/runtime\";\n import { AgentConfig } from \"./config\";\n import { Conversations } from \"./conversations\";\n import { Knowledge } from \"./knowledge\";\n import { Triggers } from \"./triggers\";\n import { Workflows } from \"./workflows\";\n import { Actions } from \"./actions\";\n import { Tables } from \"./tables\";\n import { Interfaces } from \"../../interfaces\";\n\n export function setupAdkRuntime(bot: bp.Bot) {\n // Initialize global error handlers for the runtime\n\n initialize({ config: AgentConfig })\n\n register(...Object.values(Conversations));\n register(...Object.values(Workflows));\n register(...Object.values(Triggers));\n register(...Object.values(Actions));\n register(...Object.values(Tables));\n register(...Object.values(Knowledge));\n\n for (const [alias, { definition }] of Object.entries(IntegrationDefinitions)) {\n registerIntegration({ alias, definition });\n }\n\n // Initialize the global agent registry\n agentRegistry.initialize({\n integrations: Object.entries(IntegrationDefinitions).map(([alias, def]) => ({ ...def, alias })),\n interfaces: Object.entries(InterfaceDefinitions).map(([alias, def]) => ({ ...def, alias })),\n interfacesMapping: Interfaces as Record<string, any>\n });\n\n // Patch bot handlers to add runtime context\n patchHandlers(bot);\n\n // Initialize assets system\n initializeAssets();\n\n // Setup conversation, trigger, and workflow handlers\n handlers.conversation.setup(bot);\n handlers.event.setup(bot);\n handlers.trigger.setup(bot);\n handlers.workflow.setup(bot);\n handlers.actions.setup(bot);\n handlers.plugins.setup(bot);\n }\n `\n\n await createFile(path.join(this.outputPath, 'src', 'adk-runtime.ts'), await formatCode(content))\n }\n\n async copyAssetsRuntime(): Promise<void> {\n const assetsRuntimePath = path.join(this.projectPath, '.adk', 'assets-runtime.ts')\n if (existsSync(assetsRuntimePath)) {\n const content = await fs.readFile(assetsRuntimePath, 'utf-8')\n await createFile(path.join(this.outputPath, 'src', 'assets-runtime.ts'), await formatCode(content))\n }\n }\n}\n\nexport async function generateBotProject(options: BotGeneratorOptions): Promise<void> {\n const generator = new BotGenerator(options)\n await generator.generate()\n await generator.generateAdkRuntime()\n await generator.copyAssetsRuntime()\n\n // Link @botpress/sdk from agent's node_modules to .adk/bot/node_modules\n const botPath = options.outputPath || path.join(options.projectPath, '.adk', 'bot')\n await linkSdk(options.projectPath, botPath)\n\n // Handle devId/botId management\n const devIdManager = new DevIdManager(\n options.projectPath,\n options.outputPath || path.join(options.projectPath, '.adk', 'bot')\n )\n\n // Restore any saved devId/botId from agent.json to project cache\n await devIdManager.restoreDevId()\n\n // Sync integrations\n const integrationSync = new IntegrationSync(\n options.projectPath,\n options.outputPath || path.join(options.projectPath, '.adk', 'bot')\n )\n const integrationSyncResult = await integrationSync.syncIntegrations()\n\n if (integrationSyncResult.errors.length > 0) {\n console.warn(`⚠️ Some integrations failed to sync:`)\n integrationSyncResult.errors.forEach(({ alias, error }) => {\n console.warn(` - ${alias}: ${error}`)\n })\n }\n\n // Sync interfaces\n const interfaceSync = new InterfaceSync(\n options.projectPath,\n options.outputPath || path.join(options.projectPath, '.adk', 'bot')\n )\n const interfaceSyncResult = await interfaceSync.syncInterfaces()\n\n if (interfaceSyncResult.errors.length > 0) {\n console.warn(`⚠️ Some interfaces failed to sync:`)\n interfaceSyncResult.errors.forEach(({ alias, error }) => {\n console.warn(` - ${alias}: ${error}`)\n })\n }\n\n // Sync plugins\n const pluginSync = new PluginSync(\n options.projectPath,\n options.outputPath || path.join(options.projectPath, '.adk', 'bot')\n )\n const pluginSyncResult = await pluginSync.syncPlugins()\n\n if (pluginSyncResult.errors.length > 0) {\n console.warn(`⚠️ Some plugins failed to sync:`)\n pluginSyncResult.errors.forEach(({ alias, error }) => {\n console.warn(` - ${alias}: ${error}`)\n })\n }\n}\n",
60
+ "import { transforms } from '@botpress/sdk'\nimport crypto from 'crypto'\nimport path from 'path'\n\nimport { ParsedPlugin } from '../plugins/types.js'\nimport { pascalCase, snakeCase } from '../utils/strings.js'\nimport { ADK_VERSION, relative, toMultilineComment, formatCode } from './utils.js'\nimport { getPluginAlias } from '../utils/ids.js'\n\n/**\n * Recursively strip $ref entries from a JSON Schema, replacing them with\n * a permissive object type. Plugin schemas may contain interface entity\n * refs (e.g. \"interface:hitl/entities/hitlSession\") that can't be resolved\n * without fetching the full interface definition. Rather than losing all\n * type info, we replace just the ref'd properties with Record<string, any>.\n */\nfunction stripRefs(schema: Record<string, any>): Record<string, any> {\n if (typeof schema !== 'object' || schema === null) {\n return schema\n }\n\n if (schema.$ref) {\n return { type: 'object', additionalProperties: true, 'x-stripped-ref': schema.$ref }\n }\n\n const result: Record<string, any> = {}\n for (const [key, value] of Object.entries(schema)) {\n if (key === '$defs' || key === 'definitions') {\n // Drop local defs since we're stripping all refs\n continue\n }\n if (Array.isArray(value)) {\n result[key] = value.map((item) => (typeof item === 'object' && item !== null ? stripRefs(item) : item))\n } else if (typeof value === 'object' && value !== null) {\n result[key] = stripRefs(value)\n } else {\n result[key] = value\n }\n }\n return result\n}\n\n/**\n * Convert a JSON Schema to a TypeScript type string.\n * Strips $ref entries that can't be locally resolved before conversion.\n */\nfunction jsonSchemaToTypescript(schema: Record<string, any>): string {\n const cleaned = stripRefs(schema)\n return transforms.fromJSONSchema(cleaned).toTypescriptType()\n}\n\nconst getPluginHash = (plugin: ParsedPlugin): string => {\n return crypto\n .createHash('sha256')\n .update(\n `${plugin.alias}|${plugin.definition?.id}|${plugin.definition?.version}|${plugin.definition?.updatedAt}`\n )\n .digest('hex')\n}\n\nconst getPascalAlias = (plugin: ParsedPlugin) => pascalCase(getPluginAlias(plugin.alias))\n\nconst getPluginNames = (plugin: ParsedPlugin) => ({\n typings: {\n index: `Plugin_All_${getPascalAlias(plugin)}`,\n actions: `Plugin_Actions_${getPascalAlias(plugin)}`,\n },\n paths: {\n index: path.join(snakeCase(getPascalAlias(plugin)), `index.ts`),\n actions: path.join(snakeCase(getPascalAlias(plugin)), `actions.ts`),\n },\n})\n\nexport async function generatePluginTypes(plugin: ParsedPlugin): Promise<{\n names: ReturnType<typeof getPluginNames>\n files: Record<string, string>\n}> {\n const names = getPluginNames(plugin)\n const hash = getPluginHash(plugin)\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 // Plugin: ${plugin.definition?.name}\n // Version: ${plugin.definition?.version}\n // File: ${names.paths.index}\n // Hash: ${hash}\n // Updated at: ${plugin.definition?.updatedAt}\n ////////////////////////////////////////////////////////\n\n import { Plugin_Actions_${getPascalAlias(plugin)} } from \"${rel(names.paths.actions)}\";\n\n export * from \"${rel(names.paths.actions)}\";\n\n export type Plugin_All_${getPascalAlias(plugin)} = {\n actions: Plugin_Actions_${getPascalAlias(plugin)};\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 // Plugin: ${plugin.definition?.name}\n // Version: ${plugin.definition?.version}\n // File: ${names.paths.actions}\n // Hash: ${hash}\n // Updated at: ${plugin.definition?.updatedAt}\n ////////////////////////////////////////////////////////\n\n export type Plugin_Actions_${getPascalAlias(plugin)} = {`\n\n for (const [name, action] of Object.entries(plugin.definition!.actions)) {\n const input = jsonSchemaToTypescript(action.input.schema)\n const output = jsonSchemaToTypescript(action.output.schema)\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 return {\n names,\n files: {\n [names.paths.index]: await formatCode(tIndex),\n [names.paths.actions]: await formatCode(tActions),\n },\n }\n}\n",
61
+ "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 generatePluginActionTypes(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 Plugins = import(\"@botpress/runtime/_types/plugins\").Plugins;\n\ndeclare module \"@botpress/runtime/_types/plugin-actions\" {\n\nexport interface CallableAction<I, O> {\n (input: I): Promise<O>;\n}\n\ntype Callable<T> = T extends { input: infer I; output: infer O }\n ? CallableAction<I, O>\n : never;\n\ntype PluginsMap<T> = {\n [Plugin in keyof T]: T[Plugin] extends { actions: infer Actions }\n ? {\n actions: {\n [Action in keyof Actions]: Callable<Actions[Action]>;\n };\n }\n : never;\n};\n\nexport type PluginActions = PluginsMap<Plugins>;\n}\n`\n\n const pluginActionTypesPath = path.join(project.path, '.adk', 'plugin-action-types.d.ts')\n await createFile(pluginActionTypesPath, await formatCode(content))\n}\n",
58
62
  "import { Integration, Interface } from '@botpress/client'\nimport { transforms, ZodType } from '@botpress/sdk'\nimport crypto from 'crypto'\nimport path from 'path'\n\nimport { camelCase, pascalCase, snakeCase } from '../utils/strings.js'\nimport { ADK_VERSION, formatCode, relative, toMultilineComment } from './utils.js'\n\nexport const sameMajorVersion = (a: string, b: string): boolean => {\n const majorA = a.split('.')[0]\n const majorB = b.split('.')[0]\n return majorA === majorB\n}\n\nconst getIntegrationInterface = (\n integration: Integration,\n int: Interface\n): Integration['interfaces']['string'] | undefined => {\n return Object.values(integration.interfaces || {}).find(\n (x) => x.name === int.name && sameMajorVersion(x.version, int.version)\n )\n}\n\ntype IntegrationWithAlias = { alias: string; definition: Integration }\n\nconst getInterfaceHash = (int: Interface, integrations: IntegrationWithAlias[]): string => {\n const versions = integrations\n .filter((x) => !!getIntegrationInterface(x.definition, int))\n .map((x) => `${x.definition.id}|${x.definition.version}|${x.definition.updatedAt}|${x.alias}`)\n .sort()\n .join('|')\n\n return crypto.createHash('sha256').update(`${int.id}|${int.version}|${int.updatedAt}|${versions}`).digest('hex')\n}\n\nconst getInterfaceNames = (int: Interface) => ({\n name: camelCase(int.name),\n typings: {\n index: `Interface_All_${pascalCase(int.name)}`,\n actions: `Interface_Actions_${pascalCase(int.name)}`,\n },\n paths: {\n index: path.join(snakeCase(int.name), `index.ts`),\n actions: path.join(snakeCase(int.name), `actions.ts`),\n },\n})\n\nexport async function generateInterfaceTypes(\n int: Interface,\n integrations: IntegrationWithAlias[]\n): Promise<{\n names: ReturnType<typeof getInterfaceNames>\n files: Record<string, string>\n}> {\n const names = getInterfaceNames(int)\n const hash = getInterfaceHash(int, integrations)\n\n const implementors = integrations\n .filter((x) => !!getIntegrationInterface(x.definition, int))\n .sort((a, b) => a.alias.localeCompare(b.alias))\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 // Interface: ${int.name}\n // Integrations: ${implementors.map((x) => x.alias).join(', ')}\n // Version: ${int.version}\n // File: ${names.paths.index}\n // Hash: ${hash}\n // Updated at: ${int.updatedAt}\n ////////////////////////////////////////////////////////\n\n import { ${names.typings.actions} } from \"${rel(names.paths.actions)}\";\n\n export * from \"${rel(names.paths.actions)}\";\n\n export type ${names.typings.index} = {\n actions: ${names.typings.actions};\n };\n\n export const ${names.typings.index} = {\n actions: ${names.typings.actions},\n }\n `\n\n let iActions = ``\n let cActions = new Set<string>()\n\n for (const { alias, definition: integration } of implementors) {\n iActions += `\n // Integration: ${alias} (${integration.name}@${integration.version})\n // Updated at: ${integration.updatedAt}\n \"${alias}\": {`\n\n for (const [name, action] of Object.entries(int.actions)) {\n const integrationInt = getIntegrationInterface(integration, int)\n const mapping = integrationInt?.actions[name]?.name\n\n if (!mapping) {\n continue\n }\n\n const entities = Object.entries(integrationInt.entities).reduce(\n (acc, [entityName, value]) => {\n const entity = integration.entities[value.name]\n\n if (entity) {\n acc[entityName] = transforms\n .fromJSONSchema(entity.schema)\n .title(entity.title || entityName)\n .describe(entity.description || 'No description')\n }\n return acc\n },\n {} as Record<string, ZodType>\n )\n\n const input = transforms.fromJSONSchema(action.input.schema).dereference(entities).toTypescriptType()\n\n const output = transforms.fromJSONSchema(action.output.schema).dereference(entities).toTypescriptType()\n\n // Use alias for mapping key, integration name for the actual action call\n cActions.add(`\"${alias}:${name}\": \"${alias}:${mapping}\"`)\n\n iActions += `\n ${toMultilineComment(`Title: ${action.title || name}\\nDescription: ${action.description || 'No description'}`)}\n \"${name}\": {\n input: ${input};\n output: ${output};\n },\\n`\n }\n\n iActions += `};`\n }\n\n const 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 // Interface: ${int.name}\n // Integrations: ${implementors.map((x) => x.alias).join(', ')}\n // Version: ${int.version}\n // File: ${names.paths.index}\n // Hash: ${hash}\n // Updated at: ${int.updatedAt}\n ////////////////////////////////////////////////////////\n\n export type ${names.typings.actions} = {\n ${iActions}\n };\n\n export const ${names.typings.actions} = {\n ${Array.from(cActions).join(',\\n ')}\n };\n\n `\n\n return {\n names,\n files: {\n [names.paths.index]: await formatCode(tIndex),\n [names.paths.actions]: await formatCode(tActions),\n },\n }\n}\n",
59
63
  "import { z } from '@botpress/sdk'\nimport { 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 interface TableTypeInfo {\n name: string\n columns: Record<string, { type: string; computed?: boolean; searchable?: boolean }>\n}\n\nexport async function generateTableTypes(project: AgentProject): Promise<void> {\n const tables: TableTypeInfo[] = []\n\n // Load each table file to get the actual column definitions\n for (const tableRef of project.tables) {\n try {\n const tablePath = path.join(project.path, tableRef.path)\n // Bust module cache to ensure fresh table on type generation\n const tableModule = await import(`${tablePath}?t=${Date.now()}`)\n const tableInstance = tableModule.default || tableModule[tableRef.export]\n\n if (tableInstance && tableInstance.columns) {\n const columns: Record<string, { type: string; computed?: boolean; searchable?: boolean }> = {}\n\n for (const [colName, colDef] of Object.entries(tableInstance.columns)) {\n let schema: z.ZodTypeAny\n let computed = false\n let searchable = false\n\n if (typeof colDef === 'object' && colDef !== null && 'schema' in colDef) {\n // Long form\n schema = (colDef as any).schema\n computed = (colDef as any).computed || false\n searchable = (colDef as any).searchable || false\n } else {\n // Short form\n schema = colDef as z.ZodTypeAny\n }\n\n // Convert Zod schema to TypeScript type\n const tsType = schema.toTypescriptType ? schema.toTypescriptType() : 'any' // Fallback if toTypescriptType is not available\n\n columns[colName] = { type: tsType, computed, searchable }\n }\n\n tables.push({\n name: tableRef.definition.name,\n columns,\n })\n }\n } catch (error) {\n console.warn(`Failed to load table ${tableRef.definition.name}:`, error)\n }\n }\n\n // Generate the type definitions\n let 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/tables\" {\n export type TableDefinitions = {\n`\n\n if (tables.length === 0) {\n content += ' [key: string]: {\\n'\n content += ' Input: any;\\n'\n content += ' Output: {\\n'\n content += ' id: number;\\n'\n content += ' createdAt: string;\\n'\n content += ' updatedAt: string;\\n'\n content += ' } & any;\\n'\n content += ' };\\n'\n } else {\n for (const table of tables) {\n // Generate the input type without computed columns\n const inputColumns = Object.entries(table.columns)\n .filter(([_, col]) => !col.computed)\n .map(([name, col]) => ` ${name}: ${col.type};`)\n .join('\\n')\n\n // Generate the output type with all columns plus system fields\n const outputColumns = [\n ' id: number;',\n ' createdAt: string;',\n ' updatedAt: string;',\n ...Object.entries(table.columns).map(([name, col]) => ` ${name}: ${col.type};`),\n ].join('\\n')\n\n content += ` // Table: ${table.name}\\n`\n content += ` ${table.name}: {\\n`\n content += ` Input: {\\n${inputColumns}\\n };\\n`\n content += ` Output: {\\n${outputColumns}\\n };\\n`\n content += ` };\\n`\n }\n }\n\n content += ` };\n}\n`\n\n // Write to table-types.d.ts in the .adk folder\n const tableTypesPath = path.join(project.path, '.adk', 'table-types.d.ts')\n await createFile(tableTypesPath, await formatCode(content))\n}\n",
60
64
  "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 generateTriggerTypes(project: AgentProject): Promise<void> {\n // Get trigger event subscriptions from definitions\n const triggerEvents: Record<string, string[]> = {}\n\n for (const trigger of project.triggers) {\n // The trigger definition should already contain the events array\n triggerEvents[trigger.definition.name] = trigger.definition.events || []\n }\n\n // Generate Triggers type that maps trigger names to their properties\n const triggersType = Object.entries(triggerEvents)\n .map(([triggerName, events]) => {\n let eventType = 'never'\n if (events.length > 0) {\n eventType = events.map((event) => `Event<\"${event}\">`).join(' | ')\n }\n return ` \"${triggerName}\": {\n events: [${events.map((e) => `\"${e}\"`).join(', ')}];\n event: ${eventType};\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 SDKEvent = import(\"@botpress/client\").Event;\ntype Events = import(\"@botpress/runtime/_types/events\").Events;\n\ntype Event<TName extends keyof Events> = Omit<SDKEvent, \"payload\" | \"type\"> & {\n type: TName;\n payload: Events[TName];\n};\n\ndeclare module \"@botpress/runtime/_types/triggers\" {\n // Map of trigger names to their properties\n export type Triggers = {\n${triggersType}\n };\n}\n`\n\n // Write to trigger-types.d.ts in the .adk folder\n const triggerTypesPath = path.join(project.path, '.adk', 'trigger-types.d.ts')\n await createFile(triggerTypesPath, await formatCode(content))\n}\n",
@@ -68,6 +72,7 @@
68
72
  "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",
69
73
  "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 resource: `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 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",
70
74
  "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 { pascalCase } from '../utils/strings.js'\nimport { BUILTIN_INTERFACES } from '../constants.js'\nimport { BpAddCommand } from '../commands/bp-add-command.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 return new Promise((resolve, reject) => {\n const command = new BpAddCommand({\n resource: `interface:${interfaceInfo.fullVersion}`,\n botPath: this.botProjectPath,\n workspaceId,\n credentials: {\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n },\n })\n\n let stderr = ''\n\n command.on('stderr', (data: string) => {\n stderr += data\n })\n\n command.on('error', (error: { message: string; stderr?: string }) => {\n reject(new Error(`Failed to install interface ${interfaceInfo.fullVersion}: ${error.stderr || error.message}`))\n })\n\n command.on('done', () => {\n resolve()\n })\n\n command.run().catch(reject)\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",
75
+ "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 { BpAddCommand } from '../commands/bp-add-command.js'\n\nexport interface PluginInfo {\n alias: string\n name: string\n version: string\n fullVersion: string // e.g., \"hitl@1.3.0\"\n}\n\nexport interface PluginSyncResult {\n synced: PluginInfo[]\n errors: Array<{ alias: string; error: string }>\n}\n\nexport class PluginSync {\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 plugins into PluginInfo objects\n */\n private async parsePlugins(): Promise<PluginInfo[]> {\n const project = await AgentProject.load(this.projectPath)\n const dependencies = project.dependencies\n\n if (!dependencies?.plugins) {\n return []\n }\n\n const plugins: PluginInfo[] = []\n\n for (const [alias, config] of Object.entries(dependencies.plugins)) {\n const version = config.version\n const parts = version.split('@')\n const name = parts[0] || ''\n\n plugins.push({\n alias,\n name,\n version: parts[1] || 'latest',\n fullVersion: version,\n })\n }\n\n return plugins\n }\n\n /**\n * Check if a plugin is already installed with the correct version\n */\n private async isPluginSynced(plugin: PluginInfo): Promise<boolean> {\n const targetFolder = path.join(this.bpModulesPath, `plugin_${plugin.alias}`)\n\n if (!existsSync(targetFolder)) {\n return false\n }\n\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.3.0\",\n const versionMatch = indexContent.match(/version:\\s*[\"']([^\"']+)[\"']/)\n if (!versionMatch) {\n return false\n }\n\n const installedVersion = versionMatch[1]\n return installedVersion === plugin.version\n } catch {\n return false\n }\n }\n\n /**\n * Install a plugin using bp CLI\n */\n private async installPlugin(plugin: PluginInfo): Promise<void> {\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 resource: `plugin:${plugin.fullVersion}`,\n botPath: this.botProjectPath,\n workspaceId,\n credentials,\n })\n\n await command.run()\n await command.output()\n }\n\n /**\n * Rename plugin folder from bp_modules/{name} to bp_modules/plugin_{alias}\n */\n private async renamePluginFolder(plugin: PluginInfo): Promise<void> {\n const sourceFolder = path.join(this.bpModulesPath, plugin.name.replace('/', '-'))\n const targetFolder = path.join(this.bpModulesPath, `plugin_${plugin.alias}`)\n\n if (!existsSync(sourceFolder)) {\n throw new Error(`Plugin folder not found: ${sourceFolder}`)\n }\n\n if (existsSync(targetFolder)) {\n await fs.rm(targetFolder, { recursive: true, force: true })\n }\n\n await fs.rename(sourceFolder, targetFolder)\n }\n\n /**\n * Remove existing plugin folder\n */\n private async removePluginFolder(alias: string): Promise<void> {\n const targetFolder = path.join(this.bpModulesPath, `plugin_${alias}`)\n\n if (existsSync(targetFolder)) {\n await fs.rm(targetFolder, { recursive: true, force: true })\n }\n }\n\n /**\n * Sync all plugins\n */\n async syncPlugins(): Promise<PluginSyncResult> {\n const plugins = await this.parsePlugins()\n const synced: PluginInfo[] = []\n const errors: Array<{ alias: string; error: string }> = []\n\n if (plugins.length === 0) {\n return { synced, errors }\n }\n\n await fs.mkdir(this.bpModulesPath, { recursive: true })\n\n for (const plugin of plugins) {\n try {\n const isAlreadySynced = await this.isPluginSynced(plugin)\n\n if (isAlreadySynced) {\n synced.push(plugin)\n continue\n }\n\n // Remove existing folder if version mismatch\n await this.removePluginFolder(plugin.alias)\n\n // Install the plugin\n await this.installPlugin(plugin)\n\n // Rename to our controlled name\n await this.renamePluginFolder(plugin)\n\n synced.push(plugin)\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error)\n errors.push({ alias: plugin.alias, error: errorMsg })\n }\n }\n\n return { synced, errors }\n }\n}\n",
71
76
  "import { Client } from '@botpress/client'\nimport { JSONSchema7, transforms } from '@botpress/sdk'\n\nimport { AgentProject } from '../agent-project/agent-project.js'\nimport { auth } from '../auth/index.js'\nimport {\n ColumnChange,\n LocalTable,\n RemoteTable,\n TableSyncItem,\n TableSyncOperation,\n TableSyncOptions,\n TableSyncPlan,\n TableSyncResult,\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 private getSchemaType(schema: any): string {\n if (schema.type) {\n if (schema.type === 'array' && schema.items?.type) {\n return `array<${schema.items.type}>`\n }\n return schema.type\n }\n if (schema.$ref) {\n return schema.$ref.split('/').pop() || 'unknown'\n }\n return 'unknown'\n }\n\n /** Remove automatically generated properties that we can ignore when comparing changes */\n private calculateRenameScore(\n oldName: string,\n newName: string,\n oldSchema: any,\n newSchema: any,\n oldPosition: number,\n newPosition: number\n ): number {\n let score = 0\n\n // Same position in schema (strong signal) +3\n if (oldPosition === newPosition) {\n score += 3\n } else if (Math.abs(oldPosition - newPosition) <= 1) {\n // Adjacent position +1\n score += 1\n }\n\n // Compare descriptions\n const oldDesc = (oldSchema?.description || '').toLowerCase()\n const newDesc = (newSchema?.description || '').toLowerCase()\n\n if (oldDesc && newDesc && oldDesc === newDesc) {\n // Exact description match (very strong signal) +5\n score += 5\n } else if (oldDesc && newDesc && oldDesc.length > 5 && newDesc.length > 5) {\n // Partial description match +2\n if (oldDesc.includes(newDesc) || newDesc.includes(oldDesc)) {\n score += 2\n } else {\n // Check for word overlap\n const oldWords = oldDesc.split(/\\s+/)\n const newWords = newDesc.split(/\\s+/)\n const commonWords = oldWords.filter((w: string) => newWords.includes(w) && w.length > 3)\n if (commonWords.length >= 2) {\n score += 1\n }\n }\n }\n\n // Same required/optional status +1\n const oldOptional = oldSchema?.type?.includes('null') || oldSchema?.nullable === true\n const newOptional = newSchema?.type?.includes('null') || newSchema?.nullable === true\n if (oldOptional === newOptional) {\n score += 1\n }\n\n // Same searchable status +1\n const oldSearchable = oldSchema?.['x-zui']?.searchable\n const newSearchable = newSchema?.['x-zui']?.searchable\n if (oldSearchable === newSearchable) {\n score += 1\n }\n\n return score\n }\n\n private cleanSchemaForComparison(schema: any): any {\n if (!schema || typeof schema !== 'object') {\n return schema\n }\n\n const cleaned = Array.isArray(schema) ? [...schema] : { ...schema }\n\n if (cleaned['x-zui']) {\n const xZui = { ...cleaned['x-zui'] }\n delete xZui.index\n if (Object.keys(xZui).length === 0) {\n delete cleaned['x-zui']\n } else {\n cleaned['x-zui'] = xZui\n }\n }\n\n if (cleaned.properties) {\n const cleanedProps: any = {}\n for (const [key, value] of Object.entries(cleaned.properties)) {\n cleanedProps[key] = this.cleanSchemaForComparison(value)\n }\n cleaned.properties = cleanedProps\n }\n\n if (cleaned.items) {\n cleaned.items = this.cleanSchemaForComparison(cleaned.items)\n }\n\n delete cleaned.additionalProperties\n\n return cleaned\n }\n\n private analyzeColumnChanges(\n local: any,\n remote: any\n ): {\n differences: string[]\n columnChanges: ColumnChange[]\n } {\n const differences: string[] = []\n const columnChanges: ColumnChange[] = []\n\n if (!local || !remote) {\n return { differences, columnChanges }\n }\n\n const cleanedLocal = this.cleanSchemaForComparison(local)\n const cleanedRemote = this.cleanSchemaForComparison(remote)\n\n const localProps = cleanedLocal.properties || {}\n const remoteProps = cleanedRemote.properties || {}\n\n const localKeys = Object.keys(localProps)\n const remoteKeys = Object.keys(remoteProps)\n\n const addedKeys = localKeys.filter((k) => !remoteKeys.includes(k))\n const removedKeys = remoteKeys.filter((k) => !localKeys.includes(k))\n const commonKeys = localKeys.filter((k) => remoteKeys.includes(k))\n\n const addedByType: Map<string, string[]> = new Map()\n const removedByType: Map<string, string[]> = new Map()\n\n for (const key of addedKeys) {\n const localType = this.getSchemaType(localProps[key])\n if (!addedByType.has(localType)) {\n addedByType.set(localType, [])\n }\n addedByType.get(localType)!.push(key)\n }\n\n for (const key of removedKeys) {\n const remoteType = this.getSchemaType(remoteProps[key])\n if (!removedByType.has(remoteType)) {\n removedByType.set(remoteType, [])\n }\n removedByType.get(remoteType)!.push(key)\n }\n\n const renamedColumns = new Set<string>()\n\n // Smart rename detection using multiple heuristics\n for (const [type, removedCols] of removedByType.entries()) {\n const addedCols = addedByType.get(type) || []\n if (removedCols.length === 0 || addedCols.length === 0) {\n continue\n }\n\n // Calculate match scores for each removed-added pair\n const matches: Array<{ removed: string; added: string; score: number }> = []\n\n for (const removed of removedCols) {\n for (const added of addedCols) {\n const score = this.calculateRenameScore(\n removed,\n added,\n remoteProps[removed],\n localProps[added],\n remoteKeys.indexOf(removed),\n localKeys.indexOf(added)\n )\n\n if (score > 0) {\n matches.push({ removed, added, score })\n }\n }\n }\n\n // Sort by score descending\n matches.sort((a, b) => b.score - a.score)\n\n // Greedily match highest scores, ensuring 1:1 mapping\n const usedRemoved = new Set<string>()\n const usedAdded = new Set<string>()\n\n for (const match of matches) {\n if (usedRemoved.has(match.removed) || usedAdded.has(match.added)) {\n continue\n }\n\n // Only consider it a rename if score is high enough\n if (match.score >= 2) {\n columnChanges.push({\n type: 'rename',\n columnName: match.added,\n oldColumnName: match.removed,\n oldType: type,\n newType: type,\n details: `Column \"${match.removed}\" → \"${match.added}\"`,\n })\n\n differences.push(`↔️ Renamed column \"${match.removed}\" → \"${match.added}\" (${type})`)\n\n renamedColumns.add(match.removed)\n renamedColumns.add(match.added)\n usedRemoved.add(match.removed)\n usedAdded.add(match.added)\n }\n }\n }\n\n const localRequired = cleanedLocal.required || []\n const remoteRequired = cleanedRemote.required || []\n\n for (const key of addedKeys) {\n if (!renamedColumns.has(key)) {\n const localType = this.getSchemaType(localProps[key])\n const isRequired = localRequired.includes(key)\n columnChanges.push({\n type: 'add',\n columnName: key,\n newType: localType,\n })\n const requiredSuffix = isRequired ? ' - required' : ''\n differences.push(`➕ Added column \"${key}\" (${localType})${requiredSuffix}`)\n }\n }\n\n for (const key of removedKeys) {\n if (!renamedColumns.has(key)) {\n const remoteType = this.getSchemaType(remoteProps[key])\n const wasRequired = remoteRequired.includes(key)\n columnChanges.push({\n type: 'remove',\n columnName: key,\n oldType: remoteType,\n })\n const requiredSuffix = wasRequired ? ' - was required' : ''\n differences.push(`➖ Removed column \"${key}\" (${remoteType})${requiredSuffix}`)\n }\n }\n\n for (const key of commonKeys) {\n const localCol = localProps[key]\n const remoteCol = remoteProps[key]\n\n const localType = this.getSchemaType(localCol)\n const remoteType = this.getSchemaType(remoteCol)\n\n if (localType !== remoteType) {\n columnChanges.push({\n type: 'modify',\n columnName: key,\n oldType: remoteType,\n newType: localType,\n details: `Type changed from ${remoteType} to ${localType}`,\n })\n differences.push(`🔀 Column \"${key}\": type changed from ${remoteType} to ${localType}`)\n }\n\n const localSearchable = localCol?.['x-zui']?.searchable\n const remoteSearchable = remoteCol?.['x-zui']?.searchable\n if (localSearchable !== remoteSearchable) {\n differences.push(\n `🔍 Column \"${key}\": searchable ${remoteSearchable ? 'disabled' : 'enabled'} (was ${remoteSearchable ? 'enabled' : 'disabled'})`\n )\n }\n\n const localRequired = cleanedLocal.required?.includes(key) || false\n const remoteRequired = cleanedRemote.required?.includes(key) || false\n if (localRequired !== remoteRequired) {\n differences.push(\n `${localRequired ? '🔒' : '🔓'} Column \"${key}\": ${localRequired ? 'now required' : 'now optional'}`\n )\n }\n\n const cleanedLocalCol = this.cleanSchemaForComparison(localCol)\n const cleanedRemoteCol = this.cleanSchemaForComparison(remoteCol)\n\n if (JSON.stringify(cleanedLocalCol) !== JSON.stringify(cleanedRemoteCol) && localType === remoteType) {\n const localDesc = localCol?.description\n const remoteDesc = remoteCol?.description\n if (localDesc !== remoteDesc) {\n differences.push(`💬 Column \"${key}\": description updated`)\n }\n }\n }\n\n return { differences, columnChanges }\n }\n\n private createSchemaForUpdate(localSchema: JSONSchema7, columnChanges: ColumnChange[]): JSONSchema7 {\n const updatedSchema = JSON.parse(JSON.stringify(localSchema)) as JSONSchema7\n\n if (!updatedSchema.properties) {\n updatedSchema.properties = {}\n }\n\n // Ensure required array exists (even if empty) to properly update optional/required status\n if (!updatedSchema.required) {\n updatedSchema.required = []\n }\n\n // Only handle actual removals in the schema\n // Renames are handled separately via renameTableColumn API\n for (const change of columnChanges) {\n if (change.type === 'remove') {\n // Mark column for removal by setting to null\n updatedSchema.properties[change.columnName] = { type: 'null' }\n\n if (updatedSchema.required && updatedSchema.required.includes(change.columnName)) {\n updatedSchema.required = updatedSchema.required.filter((req: string) => req !== change.columnName)\n }\n }\n }\n\n return updatedSchema\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 keyColumn: tableRef.definition.keyColumn,\n tags: tableRef.definition.tags,\n } satisfies LocalTable)\n } catch {}\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 const response = await client.listTables({})\n\n const tablesWithCounts = await Promise.all(\n response.tables.map(async (table) => {\n let rowCount = 0\n try {\n const tableInfo = await client.getTable({ table: table.name })\n rowCount = tableInfo.rows || 0\n } catch (error) {\n console.warn(`Failed to get row count for table ${table.name}:`, error)\n }\n\n return {\n id: table.id,\n name: table.name,\n createdAt: table.createdAt || new Date().toISOString(),\n updatedAt: table.updatedAt || new Date().toISOString(),\n factor: table.factor || 1,\n schema: table.schema,\n rowCount,\n keyColumn: table.keyColumn || '',\n tags: table.tags || {},\n } satisfies RemoteTable\n })\n )\n\n return tablesWithCounts\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 cleanedLocalSchema = this.cleanSchemaForComparison(local.schema)\n const cleanedRemoteSchema = this.cleanSchemaForComparison(remote.schema)\n\n const { differences, columnChanges } = this.analyzeColumnChanges(local.schema, remote.schema)\n const factorMatches = (local.factor || 1) === (remote.factor || 1)\n const keyColumnMatches = (local.keyColumn || '') === (remote.keyColumn || '')\n const tagsMatch = JSON.stringify(local.tags || {}) === JSON.stringify(remote.tags || {})\n\n const localSchema = transforms.fromJSONSchema(cleanedLocalSchema)\n const remoteSchema = transforms.fromJSONSchema(cleanedRemoteSchema)\n const schemasEqual = localSchema.isEqual(remoteSchema)\n const hasMetadataChanges = differences.length > 0\n\n if (!schemasEqual || !factorMatches || hasMetadataChanges || !keyColumnMatches || !tagsMatch) {\n const reasons: string[] = []\n if (differences.length > 0) {\n reasons.push('schema changes detected')\n } else if (!schemasEqual) {\n reasons.push('schema metadata changed')\n }\n if (!factorMatches) {\n differences.push(`⚡ Factor: ${remote.factor || 1} → ${local.factor || 1}`)\n reasons.push('factor changed')\n }\n\n if (!keyColumnMatches) {\n differences.push(`🔑 Key Column: \"${remote.keyColumn || ''}\" → \"${local.keyColumn || ''}\"`)\n reasons.push('key column changed')\n }\n\n if (!tagsMatch) {\n differences.push(\n `🏷️ Tags updated: ${JSON.stringify(remote.tags || {})} → ${JSON.stringify(local.tags || {})}`\n )\n reasons.push('tags changed')\n }\n\n const schemaForUpdate = this.createSchemaForUpdate(local.schema, columnChanges)\n\n items.push({\n operation: TableSyncOperation.Update,\n localTable: local,\n remoteTable: remote,\n reason: `Table ${reasons.join(' and ')}`,\n differences: differences.length > 0 ? differences : undefined,\n columnChanges: columnChanges.length > 0 ? columnChanges : undefined,\n schemaForUpdate,\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 {\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 keyColumn: item.localTable.keyColumn || '',\n tags: item.localTable.tags || {},\n })\n success.push(item)\n }\n break\n\n case TableSyncOperation.Update:\n if (item.localTable && item.remoteTable) {\n // Step 1: Handle column renames first (must be done before schema update)\n if (item.columnChanges) {\n const renames = item.columnChanges.filter((c) => c.type === 'rename')\n for (const rename of renames) {\n if (rename.oldColumnName && rename.columnName) {\n await client.renameTableColumn({\n table: item.localTable.name,\n name: rename.oldColumnName,\n newName: rename.columnName,\n })\n }\n }\n }\n\n // Step 2: Apply schema updates (after renames are done)\n let schemaToUse = item.schemaForUpdate || item.localTable.schema\n const localFactor = item.localTable.factor || 1\n const localKeyColumn = item.localTable.keyColumn || ''\n const localTags = item.localTable.tags || {}\n // Ensure schema has a required array (even if empty) to properly clear required fields\n if (!schemaToUse.required) {\n schemaToUse = { ...schemaToUse, required: [] }\n }\n\n await client.updateTable({\n table: item.localTable.name,\n factor: localFactor,\n schema: schemaToUse,\n tags: localTags,\n keyColumn: localKeyColumn,\n isComputeEnabled: true,\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: any) {\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",
72
77
  "import crypto from 'crypto'\nimport path from 'path'\nimport fs from 'fs/promises'\nimport { glob } from 'glob'\nimport { Client } from '@botpress/client'\nimport { DataSource } from '@botpress/runtime'\n\nimport { auth } from '../auth/index.js'\nimport { AgentProject } from '../agent-project/agent-project.js'\nimport {\n LocalKnowledgeBase,\n KBSyncPlan,\n KBSyncResult,\n KBSyncItem,\n KBSyncOperation,\n KBSyncOptions,\n SyncOutput,\n FileChanges,\n WebsiteSyncInfo,\n SourceSyncStatus,\n OrphanedSource,\n OrphanedSourceStatus,\n} from './types.js'\n\ntype RemoteKnowledgeBase = Pick<\n Awaited<ReturnType<Client['listKnowledgeBases']>>['knowledgeBases'][number],\n 'id' | 'name' | 'tags'\n>\n\nexport interface KnowledgeManagerOptions {\n project: AgentProject\n botId?: string\n}\n\n// Well-known tags for KB files (must match runtime constants)\nconst WellKnownTags = {\n KNOWLEDGE: 'source',\n KNOWLEDGE_BASE_ID: 'kbId',\n KNOWLEDGE_BASE_NAME: 'kbName',\n KNOWLEDGE_SOURCE_ID: 'dsId',\n KNOWLEDGE_SOURCE_TYPE: 'dsType',\n}\n\n// Per-source sync tracking stored in KB tags\n// Format: source<dsId><field> (alphanumeric only, must start with lowercase letter)\nfunction sourceTag(dsId: string, field: 'hash' | 'lastupdatedat'): string {\n // Sanitize dsId to be alphanumeric only (remove underscores, dashes, etc.)\n const sanitizedId = dsId.replace(/[^a-zA-Z0-9]/g, '').toLowerCase()\n return `source${sanitizedId}${field}`\n}\n\nconst WellKnownMetadata = {\n TITLE: 'title',\n}\n\ntype FileMetadata = {\n hash: string\n dsId: string\n dsType: string\n relPath: string\n [key: string]: string\n}\n\n/**\n * Type guard for FileMetadata - validates metadata from API responses\n */\nfunction isFileMetadata(metadata: unknown): metadata is FileMetadata {\n return (\n typeof metadata === 'object' &&\n metadata !== null &&\n 'hash' in metadata &&\n typeof metadata.hash === 'string' &&\n 'relPath' in metadata &&\n typeof metadata.relPath === 'string'\n )\n}\n\ntype LocalFile = {\n abs: string\n rel: string\n name: string\n}\n\n/**\n * Manages knowledge base synchronization for ADK projects\n */\nexport class KnowledgeManager {\n private client?: Client\n private botId?: string\n private project: AgentProject\n /** Cache of file hashes by directory path to avoid recalculating */\n private fileHashCache: Map<string, Record<string, string>> = new Map()\n\n constructor(options: KnowledgeManagerOptions) {\n this.botId = options.botId\n this.project = options.project\n }\n\n /**\n * Clear the file hash cache (call before a new sync operation)\n */\n clearHashCache(): void {\n this.fileHashCache.clear()\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 /**\n * Format an error for display, including API response data if available\n */\n private formatError(error: unknown): string {\n if (!(error instanceof Error)) {\n return String(error)\n }\n\n let message = error.message\n\n // Check for axios-style API errors with response data\n if (\n 'response' in error &&\n error.response !== null &&\n typeof error.response === 'object' &&\n 'data' in error.response\n ) {\n message += ` - API: ${JSON.stringify(error.response.data)}`\n }\n\n return message\n }\n\n /**\n * Get all knowledge bases from the project\n */\n getLocalKnowledgeBases(): LocalKnowledgeBase[] {\n const kbs: LocalKnowledgeBase[] = []\n\n for (const kbRef of this.project.knowledge) {\n const definition = kbRef.definition\n\n kbs.push({\n name: definition.name,\n description: definition.description,\n sourceCount: definition.sources?.length || 0,\n })\n }\n\n return kbs\n }\n\n /**\n * Calculate content hash from individual file hashes\n * This creates a deterministic hash of all file contents\n */\n private computeContentHash(fileHashes: Record<string, string>): string {\n // Sort keys for deterministic ordering\n const sortedEntries = Object.entries(fileHashes).sort(([a], [b]) => a.localeCompare(b))\n const combined = sortedEntries.map(([filePath, hash]) => `${filePath}:${hash}`).join('\\n')\n return crypto.createHash('sha256').update(combined).digest('hex')\n }\n\n /**\n * List all remote knowledge bases\n */\n private async listRemoteKnowledgeBases(): Promise<RemoteKnowledgeBase[]> {\n const client = await this.getClient()\n const kbs: RemoteKnowledgeBase[] = []\n let nextToken: string | undefined\n\n do {\n const response = await client.listKnowledgeBases({ nextToken })\n kbs.push(...response.knowledgeBases)\n nextToken = response.meta.nextToken\n } while (nextToken)\n\n return kbs\n }\n\n /**\n * Find remote KB by name\n */\n private async findRemoteKB(name: string): Promise<RemoteKnowledgeBase | undefined> {\n const kbs = await this.listRemoteKnowledgeBases()\n return kbs.find((kb) => kb.name === name)\n }\n\n /**\n * Create a new knowledge base\n */\n async createKnowledgeBase(name: string): Promise<RemoteKnowledgeBase> {\n const client = await this.getClient()\n await client.createKnowledgeBase({ name })\n // createKnowledgeBase response doesn't include createdAt, so fetch the full KB\n const created = await this.findRemoteKB(name)\n if (!created) {\n throw new Error(`Failed to find KB \"${name}\" after creation`)\n }\n return created\n }\n\n /**\n * Get remote KBs that don't exist locally (orphaned)\n */\n async getOrphanedKBs(): Promise<RemoteKnowledgeBase[]> {\n const localKbNames = this.getLocalKnowledgeBases().map((kb) => kb.name)\n const remoteKbs = await this.listRemoteKnowledgeBases()\n return remoteKbs.filter((kb) => !localKbNames.includes(kb.name))\n }\n\n /**\n * Get orphaned sources for a KB by listing files and extracting unique dsIds from tags\n * Returns sources that exist in remote files but not in local definition\n */\n async getOrphanedSources(\n kbName: string,\n localDsIds: string[]\n ): Promise<OrphanedSource[]> {\n const client = await this.getClient()\n\n // List ALL files for this KB using raw client to get full file data including tags\n const tags = {\n [WellKnownTags.KNOWLEDGE]: 'knowledge-base',\n [WellKnownTags.KNOWLEDGE_BASE_NAME]: kbName,\n }\n\n const files: Array<{ tags?: Record<string, string>; metadata?: Record<string, unknown> }> = []\n let nextToken: string | undefined\n do {\n const response = await client.listFiles({ tags, nextToken })\n files.push(...response.files)\n nextToken = response.meta.nextToken\n } while (nextToken)\n\n // Group files by dsId from tags (more reliable than metadata for website sources)\n const filesByDsId = new Map<string, number>()\n for (const file of files) {\n // Try to get dsId from tags first (works for all source types)\n const dsId = file.tags?.[WellKnownTags.KNOWLEDGE_SOURCE_ID] ||\n (file.metadata?.dsId as string | undefined)\n if (dsId) {\n filesByDsId.set(dsId, (filesByDsId.get(dsId) || 0) + 1)\n }\n }\n\n // Find orphaned sources (exist in remote but not in local)\n const orphaned: OrphanedSource[] = []\n for (const [dsId, fileCount] of filesByDsId) {\n if (!localDsIds.includes(dsId)) {\n orphaned.push({ dsId, fileCount })\n }\n }\n\n return orphaned\n }\n\n /**\n * Delete all files belonging to an orphaned source using direct dsId tag query\n */\n async deleteOrphanedSource(\n kbName: string,\n dsId: string\n ): Promise<{ deletedFiles: number; errors: string[] }> {\n const client = await this.getClient()\n\n // Query files directly by dsId tag\n const tags = {\n [WellKnownTags.KNOWLEDGE]: 'knowledge-base',\n [WellKnownTags.KNOWLEDGE_BASE_NAME]: kbName,\n [WellKnownTags.KNOWLEDGE_SOURCE_ID]: dsId,\n }\n const files = await this.listExistingFiles(client, tags)\n\n console.log(` Deleting ${files.length} files from orphaned source \"${dsId}\"...`)\n\n // Delete all files in parallel\n const results = await Promise.allSettled(\n files.map((f) => client.deleteFile({ id: f.id }))\n )\n\n const deletedFiles = results.filter((r) => r.status === 'fulfilled').length\n const errors = results\n .filter((r): r is PromiseRejectedResult => r.status === 'rejected')\n .map((r) => String(r.reason))\n\n return { deletedFiles, errors }\n }\n\n /**\n * Clean up source tags from KB after deleting orphaned source\n * Note: Botpress API merges tags, so we set to empty string to \"delete\" them\n */\n private async cleanupSourceTags(\n kbId: string,\n kbName: string,\n dsIds: string[],\n existingTags: Record<string, string>\n ): Promise<void> {\n const client = await this.getClient()\n const newTags = { ...existingTags }\n\n for (const dsId of dsIds) {\n // Sanitize dsId the same way sourceTag() does\n const sanitizedId = dsId.replace(/[^a-zA-Z0-9]/g, '').toLowerCase()\n // Set to empty string to clear (API merges tags, delete doesn't work)\n newTags[`source${sanitizedId}hash`] = ''\n newTags[`source${sanitizedId}lastupdatedat`] = ''\n }\n\n await client.updateKnowledgeBase({ id: kbId, name: kbName, tags: newTags })\n }\n\n /**\n * Delete a KB and all its associated files\n */\n async deleteKnowledgeBase(kbId: string, kbName: string): Promise<{ deletedFiles: number }> {\n const client = await this.getClient()\n\n // First delete all files associated with this KB\n const tags = {\n [WellKnownTags.KNOWLEDGE]: 'knowledge-base',\n [WellKnownTags.KNOWLEDGE_BASE_NAME]: kbName,\n }\n console.log(` Listing files for KB \"${kbName}\"...`)\n const files = await this.listExistingFiles(client, tags)\n console.log(` Found ${files.length} files to delete`)\n\n // Delete all files in parallel\n const results = await Promise.allSettled(\n files.map((file) => client.deleteFile({ id: file.id }))\n )\n const deletedFiles = results.filter((r) => r.status === 'fulfilled').length\n\n // Then delete the KB itself\n console.log(` Deleting KB \"${kbName}\"...`)\n await client.deleteKnowledgeBase({ id: kbId })\n\n return { deletedFiles }\n }\n\n /**\n * Get stored hash for a specific source from KB tags\n */\n private getRemoteSourceHash(kb: RemoteKnowledgeBase, dsId: string): string | undefined {\n return kb.tags?.[sourceTag(dsId, 'hash')]\n }\n\n /**\n * Update source hash in KB tags after sync\n */\n private async updateSourceHash(kbId: string, kbName: string, dsId: string, hash: string, existingTags?: Record<string, string>): Promise<void> {\n const client = await this.getClient()\n\n await client.updateKnowledgeBase({\n id: kbId,\n name: kbName,\n tags: {\n ...existingTags,\n [sourceTag(dsId, 'hash')]: hash,\n [sourceTag(dsId, 'lastupdatedat')]: new Date().toISOString(),\n },\n })\n }\n\n /**\n * Compute config hash for a data source (used for website sources)\n */\n private computeConfigHash(config: Record<string, unknown>): string {\n // Sort keys for deterministic ordering\n const sortedConfig = JSON.stringify(config, Object.keys(config).sort())\n return crypto.createHash('sha256').update(sortedConfig).digest('hex')\n }\n\n /**\n * Trigger website source sync by creating the builtin_knowledge_indexing workflow.\n * For dev bots, this requires adk dev to be running. For prod bots, runs in Botpress Cloud.\n */\n async syncWebsiteSource(kbName: string, kbId: string, force: boolean): Promise<{ workflowId: string }> {\n const client = await this.getClient()\n\n const response = await client.createWorkflow({\n name: 'builtin_knowledge_indexing',\n input: { kbName, kbId, force },\n status: 'pending',\n timeoutAt: new Date(Date.now() + 180 * 60 * 1000).toISOString(), // 180 minutes (matches workflow timeout)\n })\n\n return { workflowId: response.workflow.id }\n }\n\n /**\n * Detect legacy website source files (old tag format)\n * Legacy files have: knowledge: 'true' (old format)\n * Returns count of legacy files found\n */\n async detectLegacyWebsiteFiles(kbName: string, sourceId: string): Promise<number> {\n const client = await this.getClient()\n\n // Legacy tag format used before migration\n const legacyTags = {\n knowledge: 'true',\n sourceId: sourceId,\n kbName: kbName,\n }\n\n const legacyFiles = await this.listExistingFiles(client, legacyTags)\n return legacyFiles.length\n }\n\n /**\n * Delete legacy website source files (old tag format)\n * Called during executeSync when legacy files were detected\n */\n async deleteLegacyWebsiteFiles(kbName: string, sourceId: string): Promise<{ deletedFiles: number }> {\n const client = await this.getClient()\n\n // Legacy tag format used before migration\n const legacyTags = {\n knowledge: 'true',\n sourceId: sourceId,\n kbName: kbName,\n }\n\n const legacyFiles = await this.listExistingFiles(client, legacyTags)\n if (legacyFiles.length === 0) {\n return { deletedFiles: 0 }\n }\n\n console.log(` Found ${legacyFiles.length} legacy website files to migrate`)\n\n const results = await Promise.allSettled(\n legacyFiles.map((f) => client.deleteFile({ id: f.id }))\n )\n\n const deletedFiles = results.filter((r) => r.status === 'fulfilled').length\n console.log(` ✅ Deleted ${deletedFiles} legacy website files`)\n\n return { deletedFiles }\n }\n\n /**\n * Check if a KB has any website sources\n */\n hasWebsiteSources(kbName: string): boolean {\n const kbRef = this.project.knowledge.find((k) => k.definition.name === kbName)\n if (!kbRef) return false\n return kbRef.definition.sources?.some((s) => DataSource.isWebsite(s)) || false\n }\n\n /**\n * Get list of KB names that have website sources\n */\n getKBsWithWebsiteSources(): string[] {\n return this.project.knowledge\n .filter((k) => k.definition.sources?.some((s) => DataSource.isWebsite(s)))\n .map((k) => k.definition.name)\n }\n\n /**\n * Compute content hash for a single directory source\n */\n private async computeDirectorySourceHash(\n directoryPath: string,\n filterFn?: (filePath: string) => boolean\n ): Promise<string> {\n const fileHashes = await this.scanLocalFileHashes(directoryPath, filterFn)\n return this.computeContentHash(fileHashes)\n }\n\n /**\n * Create a sync plan comparing local sources vs remote KB tags\n * Uses per-source hashes stored in KB tags\n */\n async createSyncPlan(): Promise<KBSyncPlan> {\n const localKbs = this.getLocalKnowledgeBases()\n const remoteKbs = await this.listRemoteKnowledgeBases()\n const items: KBSyncItem[] = []\n\n for (const kb of localKbs) {\n const kbRef = this.project.knowledge.find((k) => k.definition.name === kb.name)\n if (!kbRef) continue\n\n // Find matching remote KB by name\n const remoteKb = remoteKbs.find((r) => r.name === kb.name)\n\n if (!remoteKb) {\n // KB doesn't exist remotely yet - needs creation and sync of all sources\n const sources: SourceSyncStatus[] = (kbRef.definition.sources || []).map((source) => ({\n dsId: source.id,\n dsType: DataSource.isDirectory(source) ? 'document' as const : 'web-page' as const,\n needsSync: true,\n reason: 'New KB',\n }))\n\n items.push({\n operation: KBSyncOperation.Sync,\n kb,\n reason: 'Knowledge base not found remotely',\n needsCreation: true,\n sources,\n })\n continue\n }\n\n // Check each source individually\n const sources: SourceSyncStatus[] = []\n let hasChanges = false\n\n for (const source of kbRef.definition.sources || []) {\n const remoteHash = this.getRemoteSourceHash(remoteKb, source.id)\n\n if (DataSource.isDirectory(source)) {\n // Directory source: compute content hash\n const localHash = await this.computeDirectorySourceHash(source.directoryPath, source.filterFn)\n\n if (!remoteHash) {\n sources.push({\n dsId: source.id,\n dsType: 'document',\n needsSync: true,\n reason: 'First-time sync',\n })\n hasChanges = true\n } else if (localHash !== remoteHash) {\n // Get detailed file changes for this source\n const fileChanges = await this.detectDirectorySourceChanges(kb.name, source)\n sources.push({\n dsId: source.id,\n dsType: 'document',\n needsSync: true,\n reason: 'Content changed',\n fileChanges,\n })\n hasChanges = true\n } else {\n sources.push({\n dsId: source.id,\n dsType: 'document',\n needsSync: false,\n reason: 'No changes',\n })\n }\n } else if (DataSource.isWebsite(source)) {\n // Website source: compute config hash\n const config = source.getConfig()\n const localHash = this.computeConfigHash(config)\n\n if (!remoteHash) {\n sources.push({\n dsId: source.id,\n dsType: 'web-page',\n needsSync: true,\n reason: 'First-time crawl',\n })\n hasChanges = true\n } else if (localHash !== remoteHash) {\n sources.push({\n dsId: source.id,\n dsType: 'web-page',\n needsSync: true,\n reason: 'Config changed - needs recrawl',\n })\n hasChanges = true\n } else {\n // Config unchanged - check if legacy files need migration\n const legacyFileCount = await this.detectLegacyWebsiteFiles(kb.name, source.id)\n if (legacyFileCount > 0) {\n sources.push({\n dsId: source.id,\n dsType: 'web-page',\n needsSync: true,\n reason: `${legacyFileCount} legacy files to migrate`,\n legacyFileCount,\n })\n hasChanges = true\n } else {\n sources.push({\n dsId: source.id,\n dsType: 'web-page',\n needsSync: false,\n reason: 'No config changes',\n })\n }\n }\n }\n }\n\n // Detect orphaned sources (exist remotely but not in local definition)\n const localDsIds = (kbRef.definition.sources || []).map((s) => s.id)\n const orphaned = await this.getOrphanedSources(kb.name, localDsIds)\n const orphanedSourceStatuses: OrphanedSourceStatus[] = orphaned.map((o) => ({\n dsId: o.dsId,\n fileCount: o.fileCount,\n willDelete: true,\n }))\n const hasOrphanedSources = orphanedSourceStatuses.length > 0\n\n items.push({\n operation: (hasChanges || hasOrphanedSources) ? KBSyncOperation.Sync : KBSyncOperation.Skip,\n kb,\n reason: hasOrphanedSources\n ? (hasChanges ? 'Sources need sync and orphaned sources to remove' : 'Orphaned sources to remove')\n : (hasChanges ? 'Sources need sync' : 'No changes'),\n sources,\n orphanedSources: hasOrphanedSources ? orphanedSourceStatuses : undefined,\n })\n }\n\n const toSync = items.filter((i) => i.operation === KBSyncOperation.Sync).length\n const toSkip = items.filter((i) => i.operation === KBSyncOperation.Skip).length\n\n // Count sources\n let sourcesToSync = 0\n let sourcesToSkip = 0\n let orphanedSourcesToDelete = 0\n for (const item of items) {\n for (const source of item.sources || []) {\n if (source.needsSync) {\n sourcesToSync++\n } else {\n sourcesToSkip++\n }\n }\n orphanedSourcesToDelete += item.orphanedSources?.length || 0\n }\n\n return {\n items,\n toSync,\n toSkip,\n hasChanges: toSync > 0,\n sourcesToSync,\n sourcesToSkip,\n orphanedSourcesToDelete,\n }\n }\n\n /**\n * Detect file changes for a single directory source\n */\n private async detectDirectorySourceChanges(\n kbName: string,\n source: DataSource.DirectorySource\n ): Promise<FileChanges> {\n const client = await this.getClient()\n\n const added: string[] = []\n const deleted: string[] = []\n const modified: string[] = []\n\n // Get remote files for this source (new tag format)\n const tags = {\n [WellKnownTags.KNOWLEDGE]: 'knowledge-base',\n [WellKnownTags.KNOWLEDGE_SOURCE_ID]: source.id,\n [WellKnownTags.KNOWLEDGE_BASE_NAME]: kbName,\n }\n const remoteFiles = await this.listExistingFiles(client, tags)\n\n // Also check for legacy files (old tag format) that need migration\n const legacyTags = {\n knowledge: 'true', // Old tag format\n sourceId: source.id, // Old tag name\n kbName: kbName,\n }\n const legacyFiles = await this.listExistingFiles(client, legacyTags)\n\n // Build map of remote file hashes by relPath (new format only)\n const remoteHashes: Record<string, string> = {}\n for (const file of remoteFiles) {\n if (isFileMetadata(file.metadata)) {\n remoteHashes[file.metadata.relPath] = file.metadata.hash\n }\n }\n\n // Get local file hashes\n const localHashes = await this.scanLocalFileHashes(source.directoryPath, source.filterFn)\n\n // Check for added/modified files\n for (const [relPath, hash] of Object.entries(localHashes)) {\n if (!remoteHashes[relPath]) {\n added.push(relPath)\n } else if (remoteHashes[relPath] !== hash) {\n modified.push(relPath)\n }\n }\n\n // Check for deleted files\n for (const relPath of Object.keys(remoteHashes)) {\n if (!localHashes[relPath]) {\n deleted.push(relPath)\n }\n }\n\n // If there are legacy files, they need to be migrated (deleted and re-uploaded)\n if (legacyFiles.length > 0) {\n for (const file of legacyFiles) {\n const meta = file.metadata as FileMetadata | undefined\n const relPath = meta?.relPath\n if (relPath) {\n // Mark legacy file for deletion\n if (!deleted.includes(`${relPath} (legacy)`)) {\n deleted.push(`${relPath} (legacy)`)\n }\n // Mark corresponding local file for re-upload if it exists and isn't already in new format\n if (localHashes[relPath] && !added.includes(relPath) && !remoteHashes[relPath]) {\n added.push(relPath)\n }\n }\n }\n }\n\n return { added, deleted, modified }\n }\n\n /**\n * Scan local files for a directory source and return their hashes\n */\n private async scanLocalFileHashes(\n directoryPath: string,\n filterFn?: (filePath: string) => boolean\n ): Promise<Record<string, string>> {\n const projectDir = this.project.path\n const directory = path.resolve(projectDir, directoryPath)\n\n // Check cache first\n if (this.fileHashCache.has(directory)) {\n return this.fileHashCache.get(directory)!\n }\n\n const files = glob.sync(directory + '/**/*.*', { absolute: true, nodir: true })\n .filter((file) => !filterFn || filterFn(file))\n\n const hashes: Record<string, string> = {}\n for (const file of files) {\n const relPath = path.relative(directory, file)\n const content = await fs.readFile(file)\n hashes[relPath] = crypto.createHash('sha256').update(content).digest('hex')\n }\n\n // Store in cache\n this.fileHashCache.set(directory, hashes)\n\n return hashes\n }\n\n /**\n * Execute KB sync based on plan\n * Directly uploads files to Botpress without requiring a running bot.\n * For website sources that need sync, triggers the builtin_knowledge_indexing workflow.\n */\n async executeSync(plan: KBSyncPlan, options: KBSyncOptions = {}): Promise<KBSyncResult> {\n this.assertBotId('sync knowledge bases')\n\n const client = await this.getClient()\n const result: KBSyncResult = {\n synced: [],\n skipped: [],\n failed: [],\n websiteSyncs: [],\n }\n\n for (const item of plan.items) {\n if (item.operation === KBSyncOperation.Skip && !options.force) {\n result.skipped.push({ name: item.kb.name, reason: item.reason })\n continue\n }\n\n try {\n console.log(`Syncing KB \"${item.kb.name}\"...`)\n\n // Find the KB definition in the project\n const kbRef = this.project.knowledge.find((k) => k.definition.name === item.kb.name)\n if (!kbRef) {\n throw new Error(`KB \"${item.kb.name}\" not found in project`)\n }\n\n // Find or create the remote KB\n let remoteKb = await this.findRemoteKB(item.kb.name)\n if (!remoteKb) {\n console.log(` Creating KB \"${item.kb.name}\"...`)\n remoteKb = await this.createKnowledgeBase(item.kb.name)\n }\n\n // Delete orphaned sources first (if any)\n if (item.orphanedSources && item.orphanedSources.length > 0) {\n console.log(` Removing ${item.orphanedSources.length} orphaned source(s)...`)\n\n const deletedSourceIds: string[] = []\n for (const orphaned of item.orphanedSources) {\n const { deletedFiles, errors } = await this.deleteOrphanedSource(item.kb.name, orphaned.dsId)\n console.log(` ✕ ${orphaned.dsId}: ${deletedFiles} files deleted`)\n\n if (errors.length === 0) {\n deletedSourceIds.push(orphaned.dsId)\n } else {\n console.warn(` Warning: ${errors.length} errors during deletion`)\n }\n }\n\n // Clean up KB tags for successfully deleted sources\n if (deletedSourceIds.length > 0) {\n // Fetch fresh KB tags to avoid overwriting with stale data\n const freshKb = await this.findRemoteKB(item.kb.name)\n if (freshKb) {\n await this.cleanupSourceTags(\n freshKb.id,\n item.kb.name,\n deletedSourceIds,\n freshKb.tags || {}\n )\n // Update remoteKb reference with fresh tags for subsequent operations\n remoteKb = freshKb\n }\n }\n }\n\n const syncOutput: SyncOutput = {\n processed: 0,\n added: [],\n updated: [],\n deleted: [],\n errors: [],\n }\n\n // Get sources that need syncing from the plan\n const sourcesToSync = options.force\n ? (item.sources || [])\n : (item.sources || []).filter((s) => s.needsSync)\n\n // Separate document and web-page sources\n const directorySourcesToSync = sourcesToSync.filter((s) => s.dsType === 'document')\n const websiteSourcesToSync = sourcesToSync.filter((s) => s.dsType === 'web-page')\n\n // Sync directory sources directly (CLI uploads files)\n for (const sourceStatus of directorySourcesToSync) {\n const source = kbRef.definition.sources?.find((s) => s.id === sourceStatus.dsId)\n if (!source || !DataSource.isDirectory(source)) continue\n\n console.log(` Syncing directory source \"${source.id}\"...`)\n const sourceOutput = await this.syncDirectorySource(\n client,\n item.kb.name,\n remoteKb.id,\n source.id,\n source.directoryPath,\n source.filterFn,\n options.force || false\n )\n\n // Merge output\n syncOutput.processed += sourceOutput.processed\n syncOutput.added.push(...sourceOutput.added)\n syncOutput.updated.push(...sourceOutput.updated)\n syncOutput.deleted.push(...sourceOutput.deleted)\n syncOutput.errors.push(...sourceOutput.errors)\n\n // Update source hash after successful sync\n const sourceHash = await this.computeDirectorySourceHash(source.directoryPath, source.filterFn)\n await this.updateSourceHash(remoteKb.id, item.kb.name, source.id, sourceHash, remoteKb.tags)\n }\n\n // Trigger workflow ONCE for all website sources (if any need syncing)\n if (websiteSourcesToSync.length > 0) {\n try {\n // Delete legacy files for each source before syncing\n // (always check, not just when legacyFileCount is set - handles config change case)\n for (const sourceStatus of websiteSourcesToSync) {\n await this.deleteLegacyWebsiteFiles(item.kb.name, sourceStatus.dsId)\n }\n\n console.log(` Triggering website sync workflow for ${websiteSourcesToSync.length} source(s)...`)\n const { workflowId } = await this.syncWebsiteSource(item.kb.name, remoteKb.id, options.force || false)\n result.websiteSyncs!.push({ kbName: item.kb.name, workflowId })\n\n // Update config hashes for all website sources\n for (const sourceStatus of websiteSourcesToSync) {\n const source = kbRef.definition.sources?.find((s) => s.id === sourceStatus.dsId)\n if (!source || !DataSource.isWebsite(source)) continue\n\n const config = source.getConfig()\n const configHash = this.computeConfigHash(config)\n await this.updateSourceHash(remoteKb.id, item.kb.name, source.id, configHash, remoteKb.tags)\n }\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error)\n console.warn(` Warning: Could not trigger website sync: ${errorMsg}`)\n }\n }\n\n result.synced.push({ name: item.kb.name, result: syncOutput })\n } catch (error) {\n const errorMessage = this.formatError(error)\n console.error(`Failed to sync KB \"${item.kb.name}\": ${errorMessage}`)\n result.failed.push({ name: item.kb.name, error: errorMessage })\n }\n }\n\n return result\n }\n\n /**\n * Sync a directory data source by uploading files directly\n */\n private async syncDirectorySource(\n client: Client,\n kbName: string,\n kbId: string,\n dsId: string,\n directoryPath: string,\n filterFn: ((filePath: string) => boolean) | undefined,\n force: boolean\n ): Promise<SyncOutput> {\n const projectDir = this.project.path\n const directory = path.resolve(projectDir, directoryPath)\n\n // Validate directory is within project\n if (!directory.startsWith(projectDir)) {\n throw new Error(\"Directory path must be within the agent's directory\")\n }\n\n const tags = {\n [WellKnownTags.KNOWLEDGE]: 'knowledge-base',\n [WellKnownTags.KNOWLEDGE_BASE_ID]: kbId,\n [WellKnownTags.KNOWLEDGE_SOURCE_ID]: dsId,\n [WellKnownTags.KNOWLEDGE_SOURCE_TYPE]: 'document',\n [WellKnownTags.KNOWLEDGE_BASE_NAME]: kbName,\n }\n\n // List local files\n let allFiles = glob\n .sync(directory + '/**/*.*', { absolute: true, nodir: true })\n .filter((file) => {\n if (filterFn) {\n try {\n return filterFn(file)\n } catch {\n return false\n }\n }\n return true\n })\n .map<LocalFile>((f) => ({\n abs: f,\n rel: path.relative(directory, f),\n name: path.basename(f),\n }))\n\n console.log(` Found ${allFiles.length} files in ${directoryPath}`)\n\n // Get cached file hashes (computed earlier during sync plan)\n const cachedHashes = await this.scanLocalFileHashes(directoryPath, filterFn)\n\n // List existing files in Botpress (new tag format)\n const existingFiles = await this.listExistingFiles(client, tags)\n console.log(` Found ${existingFiles.length} existing files in Botpress`)\n\n // Also check for legacy files (old tag format) that need migration\n const legacyTags = {\n knowledge: 'true', // Old tag format\n sourceId: dsId, // Old tag name\n kbName: kbName,\n }\n const legacyFiles = await this.listExistingFiles(client, legacyTags)\n if (legacyFiles.length > 0) {\n console.log(` Found ${legacyFiles.length} legacy files to migrate`)\n }\n\n // Calculate diff (only comparing against new-format files)\n const toRemove = existingFiles.filter(\n (f) => !allFiles.find((af) => af.rel === f.metadata?.relPath)\n )\n // Add ALL legacy files to toRemove - they'll be deleted and re-uploaded with new format\n toRemove.push(...legacyFiles)\n\n const toAdd = allFiles.filter(\n (af) => !existingFiles.find((f) => f.metadata?.relPath === af.rel)\n )\n const toUpdate = allFiles.filter((af) =>\n existingFiles.find((f) => f.metadata?.relPath === af.rel)\n )\n\n const output: SyncOutput = {\n processed: allFiles.length,\n added: [],\n updated: [],\n deleted: [],\n errors: [],\n }\n\n // Delete removed files\n for (const file of toRemove) {\n try {\n await client.deleteFile({ id: file.id })\n output.deleted.push({\n file: file.id,\n name: file.key,\n hash: file.metadata?.hash ?? '',\n size: file.size ?? -1,\n })\n } catch (error) {\n output.errors.push({\n file: file.id,\n error: error instanceof Error ? error.message : String(error),\n })\n }\n }\n\n // Upload new files\n for (const local of toAdd) {\n const result = await this.upsertFile(client, local, dsId, tags, force, cachedHashes[local.rel])\n if (result) {\n output.added.push(result)\n }\n }\n\n // Update existing files (check hash)\n for (const local of toUpdate) {\n const result = await this.upsertFile(client, local, dsId, tags, force, cachedHashes[local.rel])\n if (result) {\n output.updated.push(result)\n }\n }\n\n console.log(` Synced: ${output.added.length} added, ${output.updated.length} updated, ${output.deleted.length} deleted`)\n\n return output\n }\n\n /**\n * List existing files in Botpress with given tags\n */\n private async listExistingFiles(\n client: Client,\n tags: Record<string, string>\n ): Promise<Array<{ id: string; key: string; size: number | null; metadata?: FileMetadata }>> {\n const files: Array<{ id: string; key: string; size: number | null; metadata?: FileMetadata }> = []\n let nextToken: string | undefined\n\n do {\n const response = await client.listFiles({ tags, nextToken })\n files.push(...response.files.map((f) => ({\n id: f.id,\n key: f.key,\n size: f.size,\n metadata: isFileMetadata(f.metadata) ? f.metadata : undefined,\n })))\n nextToken = response.meta.nextToken\n } while (nextToken)\n\n return files\n }\n\n /**\n * Upload or update a file\n */\n private async upsertFile(\n client: Client,\n local: LocalFile,\n dsId: string,\n tags: Record<string, string>,\n force: boolean,\n cachedHash?: string\n ): Promise<{ file: string; hash: string; name: string; size: number } | null> {\n const key = `data_source://document/${dsId}/${local.rel}`\n\n const content = await fs.readFile(local.abs)\n // Use cached hash if available, otherwise compute\n const hash = cachedHash ?? crypto.createHash('sha256').update(content).digest('hex')\n\n // Check if file exists and has same hash\n try {\n const { file } = await client.getFile({ id: key })\n if (!force && isFileMetadata(file.metadata) && file.metadata.hash === hash) {\n // File unchanged, skip\n return null\n }\n } catch {\n // File doesn't exist, will be created\n }\n\n // Extract title from filename\n const title = path.basename(local.name, path.extname(local.name))\n\n const metadata: FileMetadata = {\n hash,\n dsId: dsId,\n dsType: 'document',\n relPath: local.rel,\n [WellKnownMetadata.TITLE]: title,\n }\n\n const uploaded = await client.uploadFile({\n key,\n content,\n accessPolicies: [],\n tags,\n index: true,\n metadata,\n })\n\n return {\n file: uploaded.file.id,\n hash,\n name: key,\n size: uploaded.file.size ?? -1,\n }\n }\n\n}\n",
73
78
  "/**\n * Sync output from KB indexing workflow\n * Mirrors the SyncOutput from runtime\n */\nexport interface SyncOutputItem {\n file: string\n name: string\n hash: string\n size: number\n}\n\nexport interface SyncErrorItem {\n file: string\n error: string\n}\n\nexport interface SyncOutput {\n processed: number\n added: SyncOutputItem[]\n updated: SyncOutputItem[]\n deleted: SyncOutputItem[]\n errors: SyncErrorItem[]\n}\n\n/**\n * Local knowledge base representation from project\n */\nexport interface LocalKnowledgeBase {\n name: string\n description?: string\n sourceCount: number\n}\n\n/**\n * Sync operation type for knowledge bases\n */\nexport enum KBSyncOperation {\n Sync = 'sync',\n Skip = 'skip',\n}\n\n/**\n * File changes detected during sync planning\n */\nexport interface FileChanges {\n added: string[]\n modified: string[]\n deleted: string[]\n}\n\n/**\n * Sync status for a single data source\n */\nexport interface SourceSyncStatus {\n dsId: string\n dsType: 'document' | 'web-page'\n needsSync: boolean\n reason: string\n /** For document sources, detailed file changes */\n fileChanges?: FileChanges\n /** For web-page sources, count of legacy files needing migration */\n legacyFileCount?: number\n}\n\n/**\n * Represents an orphaned source (exists remotely but not in local definition)\n */\nexport interface OrphanedSource {\n dsId: string\n fileCount: number\n}\n\n/**\n * Status for orphaned sources in the sync plan\n */\nexport interface OrphanedSourceStatus {\n dsId: string\n fileCount: number\n willDelete: boolean\n}\n\n/**\n * Individual KB sync plan item\n */\nexport interface KBSyncItem {\n operation: KBSyncOperation\n kb: LocalKnowledgeBase\n reason: string\n /** Whether the KB needs to be created remotely first */\n needsCreation?: boolean\n /** Per-source sync status */\n sources?: SourceSyncStatus[]\n /** Orphaned sources that exist remotely but not in local definition */\n orphanedSources?: OrphanedSourceStatus[]\n}\n\n/**\n * Sync plan for all knowledge bases\n */\nexport interface KBSyncPlan {\n items: KBSyncItem[]\n toSync: number\n toSkip: number\n hasChanges: boolean\n /** Source-level counts */\n sourcesToSync: number\n sourcesToSkip: number\n /** Number of orphaned sources to delete */\n orphanedSourcesToDelete: number\n}\n\n/**\n * Options for KB sync execution\n */\nexport interface KBSyncOptions {\n /** Force sync even if config hash matches */\n force?: boolean\n /** Timeout in ms for waiting for workflow completion (default: 300000 = 5 min) */\n timeout?: number\n /** Auto-confirm operations without prompting */\n autoConfirm?: boolean\n}\n\n/**\n * Website sync workflow info\n */\nexport interface WebsiteSyncInfo {\n kbName: string\n workflowId: string\n}\n\n/**\n * Result of KB sync execution\n */\nexport interface KBSyncResult {\n synced: Array<{ name: string; result: SyncOutput }>\n skipped: Array<{ name: string; reason: string }>\n failed: Array<{ name: string; error: string }>\n /** Website sync workflows triggered (run asynchronously in bot runtime) */\n websiteSyncs?: WebsiteSyncInfo[]\n}\n",
@@ -79,7 +84,7 @@
79
84
  "import { readFileSync } from 'fs'\nimport { join } from 'path'\nimport type { PreflightCheckResult } from './types.js'\nimport { hasIntegrationChanges, pluralize } from './types.js'\n\nconst getAdkVersion = (): string => {\n try {\n const packageJson = require('@botpress/adk/package.json')\n return packageJson.version\n } catch {\n try {\n const adkPackagePath = join(process.cwd(), 'node_modules/@botpress/adk/package.json')\n const pkg = JSON.parse(readFileSync(adkPackagePath, 'utf-8'))\n return pkg.version\n } catch {\n return 'unknown'\n }\n }\n}\n\n/**\n * Plain text formatter for preflight check results\n * CLI-agnostic - the CLI should apply colors/styling\n */\nexport class PreflightFormatter {\n static format(result: PreflightCheckResult): string {\n const sections: string[] = []\n\n sections.push('')\n sections.push(' ▄▀█ █▀▄ █▄▀ Botpress ADK')\n sections.push(` █▀█ █▄▀ █░█ v${getAdkVersion()}`)\n sections.push('')\n sections.push('Running preflight checks...')\n sections.push('')\n\n const allIntegrations = [\n ...result.integrations.toRemove,\n ...result.integrations.toInstall,\n ...result.integrations.toUpdate,\n ]\n const maxWidth = Math.max(...allIntegrations.map((i) => `${i.alias} (v${i.version})`.length), 30)\n\n if (hasIntegrationChanges(result.integrations)) {\n sections.push('Integrations:\\n')\n\n if (result.integrations.toRemove.length > 0) {\n sections.push('Installed Remotely but NOT in agent.config.ts')\n sections.push('(these will be DISABLED or REMOVED)\\n')\n\n for (const integration of result.integrations.toRemove) {\n const name = `${integration.alias} (v${integration.version})`\n const padding = ' '.repeat(maxWidth - name.length + 4)\n sections.push(` — ${name}${padding}✗ Not present locally`)\n sections.push(` Action: Remove\\n`)\n }\n }\n\n if (result.integrations.toInstall.length > 0) {\n sections.push('Present Locally but NOT Installed Remotely')\n sections.push('(these will be INSTALLED)\\n')\n\n for (const integration of result.integrations.toInstall) {\n const name = `${integration.alias} (v${integration.version})`\n const padding = ' '.repeat(maxWidth - name.length + 4)\n sections.push(` — ${name}${padding}+ Missing remotely`)\n sections.push(` Action: Install\\n`)\n }\n }\n\n if (result.integrations.toUpdate.length > 0) {\n sections.push('Present on both, but config DIFFERS')\n sections.push('(these will be UPDATED)\\n')\n\n for (const integration of result.integrations.toUpdate) {\n sections.push(` — ${integration.alias} (v${integration.version})`)\n\n if (integration.configChanges && integration.configChanges.length > 0) {\n sections.push(' Configuration differences:\\n')\n\n for (const change of integration.configChanges) {\n sections.push(` ${change.field}:`)\n sections.push(` - Remote: ${this.formatValue(change.oldValue)}`)\n sections.push(` + Local: ${this.formatValue(change.newValue)}\\n`)\n }\n }\n }\n }\n }\n\n if (result.agentConfig.length > 0) {\n sections.push('Agent Configuration Differences')\n sections.push('(These are top-level agent settings, not integration settings)\\n')\n\n for (const diff of result.agentConfig) {\n sections.push(` agent.${diff.field}:`)\n sections.push(` - Remote: ${this.formatValue(diff.oldValue)}`)\n sections.push(` + Local: ${this.formatValue(diff.newValue)}\\n`)\n }\n }\n\n sections.push('Summary of Actions\\n')\n const install = result.integrations.toInstall.length\n const remove = result.integrations.toRemove.length\n const update = result.integrations.toUpdate.length\n const agentConfig = result.agentConfig.length\n\n if (install > 0) {\n sections.push(` • Install: ${pluralize(install, 'integration')}`)\n }\n if (remove > 0) {\n sections.push(` • Remove: ${pluralize(remove, 'integration')}`)\n }\n if (update > 0) {\n sections.push(` • Update: ${pluralize(update, 'integration')}`)\n }\n if (agentConfig > 0) {\n sections.push(` • Agent config: ${pluralize(agentConfig, 'change')}`)\n }\n\n sections.push('')\n\n return sections.join('\\n')\n }\n\n static formatPrompt(): string {\n return '❓ Apply these changes before continuing?\\nProceed? [y/N] '\n }\n\n private static formatValue(value: any): string {\n if (value === undefined || value === null) {\n return '(not set)'\n }\n if (typeof value === 'string') {\n return `\"${value}\"`\n }\n if (typeof value === 'boolean') {\n return value ? 'true' : 'false'\n }\n if (Array.isArray(value)) {\n return `[${value.map((v) => this.formatValue(v)).join(', ')}]`\n }\n if (typeof value === 'object') {\n return JSON.stringify(value)\n }\n return String(value)\n }\n}\n",
80
85
  "import dedent from 'dedent'\nimport { existsSync } from 'fs'\nimport fs from 'fs/promises'\nimport path from 'path'\nimport { spawn } from 'child_process'\nimport { AgentProject } from '../agent-project/index.js'\nimport { generateBotProject } from '../bot-generator/index.js'\nimport { generateAssetsTypes, generateAssetsRuntime } from '../generators/assets.js'\nimport { formatCode } from '../generators/utils.js'\nimport { BpBuildCommand } from '../commands/bp-build-command.js'\nimport { ConfigManager } from '../config/manager.js'\nimport { CredentialsManager } from '../auth/credentials.js'\n\n/**\n * Find the agent project root by walking up from startPath looking for agent.config.ts\n */\nasync function findAgentRoot(startPath: string): Promise<string | null> {\n let currentPath = path.resolve(startPath)\n const root = path.parse(currentPath).root\n\n while (currentPath !== root) {\n try {\n await fs.access(path.join(currentPath, 'agent.config.ts'))\n return currentPath\n } catch {\n currentPath = path.dirname(currentPath)\n }\n }\n\n return null\n}\n\nexport interface ScriptRunnerCredentials {\n /** Authentication token */\n token: string\n /** API URL */\n apiUrl: string\n}\n\nexport interface ScriptRunnerOptions {\n /** Path to the agent project root */\n projectPath: string\n /** Credentials for API access */\n credentials: ScriptRunnerCredentials\n /** Whether to regenerate the bot project even if it exists */\n forceRegenerate?: boolean\n /** Use production bot ID instead of dev bot ID (default: false, uses devId) */\n prod?: boolean\n}\n\nexport interface RunScriptOptions extends ScriptRunnerOptions {\n /** Path to the script file to run (relative to project or absolute) */\n scriptPath: string\n /** Additional arguments to pass to the script */\n args?: string[]\n /** Environment variables to set */\n env?: Record<string, string>\n /** Whether to inherit stdio */\n inheritStdio?: boolean\n}\n\nexport interface RunOptions {\n /** Additional arguments to pass to the script */\n args?: string[]\n /** Environment variables to set */\n env?: Record<string, string>\n /** Whether to inherit stdio */\n inheritStdio?: boolean\n}\n\nexport interface TestRuntimeResult {\n /** Path to the bot project */\n botPath: string\n /** Path to the adk-runtime module that can be imported */\n runtimePath: string\n /** Bot ID being used */\n botId: string\n /** Workspace ID */\n workspaceId: string\n /** Whether using production bot */\n isProd: boolean\n /** The prepared project instance */\n project: AgentProject\n /**\n * Import and initialize the ADK runtime in the current process.\n * Call this once before running tests that need the runtime.\n * Returns the bot instance.\n */\n initialize: () => Promise<unknown>\n}\n\nexport class ScriptRunner {\n private projectPath: string\n private forceRegenerate: boolean\n private prod: boolean\n private credentials: ScriptRunnerCredentials\n\n constructor(options: ScriptRunnerOptions) {\n this.projectPath = path.resolve(options.projectPath)\n this.forceRegenerate = options.forceRegenerate ?? false\n this.prod = options.prod ?? false\n this.credentials = options.credentials\n }\n\n /**\n * Ensure the bot project is generated and ready for script execution\n */\n async prepare(): Promise<{ botPath: string; runnerPath: string; project: AgentProject }> {\n const project = await AgentProject.load(this.projectPath, {\n adkCommand: 'adk-build',\n })\n\n const botPath = path.join(this.projectPath, '.adk', 'bot')\n const runnerPath = path.join(botPath, 'src', 'script-runner.ts')\n const botpressTypesPath = path.join(botPath, '.botpress', 'implementation', 'index.ts')\n\n // Check if we need to regenerate\n const needsRegenerate = this.forceRegenerate || !existsSync(runnerPath) || !existsSync(botpressTypesPath)\n\n if (needsRegenerate) {\n // Generate assets types first\n try {\n await generateAssetsTypes(project.path)\n await generateAssetsRuntime(project.path, project.agentInfo?.botId, project.agentInfo?.workspaceId)\n } catch {\n // Assets directory might not exist\n }\n\n // Generate the bot project\n await generateBotProject({\n projectPath: project.path,\n outputPath: botPath,\n })\n\n // Generate the script runner entry point\n await this.generateScriptRunner(botPath)\n\n // Run bp build to generate .botpress types\n await this.runBpBuild(botPath)\n }\n\n return { botPath, runnerPath, project }\n }\n\n /**\n * Run bp build to generate .botpress types needed for the script runner\n */\n private async runBpBuild(botPath: string): Promise<void> {\n const buildCommand = new BpBuildCommand({ botPath })\n\n return new Promise((resolve, reject) => {\n buildCommand.on('done', () => resolve())\n buildCommand.on('error', (err) => reject(new Error(err.message)))\n buildCommand.run()\n })\n }\n\n /**\n * Generate the script runner entry point that bootstraps the ADK runtime\n */\n private async generateScriptRunner(botPath: string): Promise<void> {\n const content = dedent`\n /**\n * ADK Script Runner Entry Point\n *\n * This file bootstraps the ADK runtime and then executes a user script.\n * It's auto-generated by the ADK CLI.\n */\n import * as bp from '.botpress'\n import { setupAdkRuntime } from './adk-runtime'\n import { context, agentRegistry } from '@botpress/runtime/runtime'\n import { Autonomous } from '@botpress/runtime'\n import { Client } from '@botpress/client'\n import { BotSpecificClient, BotLogger } from '@botpress/sdk'\n import { Cognitive } from '@botpress/cognitive'\n\n // Create a minimal bot instance for runtime initialization\n const bot = new bp.Bot({\n actions: {}\n })\n\n // Initialize the ADK runtime\n setupAdkRuntime(bot)\n\n // Set up default context for script execution (outside of request handlers)\n const botId = process.env.ADK_BOT_ID!\n const token = process.env.ADK_TOKEN!\n const apiUrl = process.env.ADK_API_URL || 'https://api.botpress.cloud'\n const configuration = process.env.ADK_CONFIGURATION ? JSON.parse(process.env.ADK_CONFIGURATION) : {}\n\n const vanillaClient = new Client({ token, apiUrl, botId })\n const client = new BotSpecificClient(vanillaClient as any)\n const cognitive = new Cognitive({ client: client as any, __experimental_beta: true })\n const logger = new BotLogger({})\n\n context.setDefaultContext({\n executionId: 'script-execution',\n executionFinished: false,\n botId,\n client: client as any,\n cognitive: cognitive as any,\n citations: new Autonomous.CitationsManager(),\n logger: logger as any,\n configuration,\n integrations: agentRegistry.integrations,\n interfaces: agentRegistry.interfaces,\n states: [],\n tags: [],\n scheduledHeavyImports: new Set<string>(),\n })\n\n // Export runtime utilities for scripts to use\n export { bot }\n\n // Get the script path from command line arguments\n const scriptPath = process.argv[2]\n\n if (!scriptPath) {\n console.error('Error: No script path provided')\n console.error('Usage: bun run script-runner.ts <script-path> [args...]')\n process.exit(1)\n }\n\n // Import and run the user script\n async function runScript() {\n try {\n // Dynamic import of the user script\n const scriptModule = await import(scriptPath)\n\n // If the script exports a default function, call it\n if (typeof scriptModule.default === 'function') {\n const args = process.argv.slice(3)\n await scriptModule.default(...args)\n }\n // If it exports a 'run' function, call it\n else if (typeof scriptModule.run === 'function') {\n const args = process.argv.slice(3)\n await scriptModule.run(...args)\n }\n // If it exports a 'main' function, call it\n else if (typeof scriptModule.main === 'function') {\n const args = process.argv.slice(3)\n await scriptModule.main(...args)\n }\n // Otherwise, the script should have run on import (top-level code)\n } catch (error) {\n console.error('Script execution failed:', error)\n process.exit(1)\n }\n }\n\n runScript()\n `\n\n await fs.writeFile(path.join(botPath, 'src', 'script-runner.ts'), await formatCode(content), 'utf-8')\n }\n\n /**\n * Setup the ADK runtime for use in tests (vitest, bun test, etc.)\n *\n * Unlike `run()`, this doesn't spawn a child process. Instead, it:\n * 1. Prepares the bot project (generates types, etc.)\n * 2. Sets up environment variables in the current process\n * 3. Returns paths and an initialize() function to import the runtime\n *\n * Usage in tests:\n * ```typescript\n * import { ScriptRunner } from '@botpress/adk'\n *\n * const runner = new ScriptRunner({ projectPath: '.', credentials: {...} })\n * const runtime = await runner.setupTestRuntime()\n * await runtime.initialize()\n *\n * // Now you can import and use your actions, tools, etc.\n * ```\n */\n async setupTestRuntime(options: { env?: Record<string, string> } = {}): Promise<TestRuntimeResult> {\n const { botPath, project } = await this.prepare()\n\n // Determine which bot ID to use\n const botId = this.prod ? project.agentInfo?.botId : project.agentInfo?.devId || project.agentInfo?.botId\n const workspaceId = project.agentInfo?.workspaceId || ''\n\n if (!botId) {\n const idType = this.prod ? 'botId' : 'devId'\n throw new Error(\n `No ${idType} found in agent.json. ` +\n (this.prod\n ? 'Please deploy your agent first with \"adk deploy\".'\n : 'Please run \"adk dev\" first to create a development bot, or use --prod to use the production bot.')\n )\n }\n\n // Fetch configuration if bot ID is available\n let configuration: Record<string, unknown> | undefined\n try {\n const manager = new ConfigManager(botId)\n configuration = await manager.getAll()\n } catch {\n // Configuration fetch failed - will only be available during request handling\n }\n\n // Set environment variables in the current process\n const envVars: Record<string, string> = {\n ADK_PROJECT_PATH: this.projectPath,\n ADK_BOT_PATH: botPath,\n ADK_BOT_ID: botId,\n ADK_WORKSPACE_ID: workspaceId,\n ADK_IS_PROD: this.prod ? 'true' : 'false',\n BP_DISABLE_WORKER_MODE: 'true',\n ADK_SCRIPT_MODE: 'true',\n ADK_TOKEN: this.credentials.token,\n ADK_API_URL: this.credentials.apiUrl,\n ...(configuration && { ADK_CONFIGURATION: JSON.stringify(configuration) }),\n ...options.env,\n }\n\n // Apply environment variables to current process\n for (const [key, value] of Object.entries(envVars)) {\n process.env[key] = value\n }\n\n const runtimePath = path.join(botPath, 'src', 'index.ts')\n\n return {\n botPath,\n runtimePath,\n botId,\n workspaceId,\n isProd: this.prod,\n project,\n initialize: async () => {\n // Dynamic import of the generated bot index which sets up the runtime\n const botModule = await import(runtimePath)\n\n // After the runtime is initialized, we need to set up a default context\n // that includes integrations from the agentRegistry\n const runtimeModule = await import('@botpress/runtime/runtime')\n const { Autonomous } = await import('@botpress/runtime')\n const { context, agentRegistry } = runtimeModule\n\n // Create a client for making API calls\n const { Client } = await import('@botpress/client')\n const { BotSpecificClient, BotLogger } = await import('@botpress/sdk')\n const { Cognitive } = await import('@botpress/cognitive')\n\n const vanillaClient = new Client({\n token: this.credentials.token,\n apiUrl: this.credentials.apiUrl,\n botId,\n })\n\n const client = new BotSpecificClient(vanillaClient as any)\n\n const cognitive = new Cognitive({\n client: client as any,\n __experimental_beta: true,\n })\n\n const logger = new BotLogger({})\n\n // Set a default context that will be used as fallback when no AsyncLocalStorage context is active\n // This allows actions/integrations to work in tests without wrapping every call\n context.setDefaultContext({\n executionId: 'test-execution',\n executionFinished: false,\n botId,\n client: client as any,\n cognitive: cognitive as any,\n citations: new Autonomous.CitationsManager(),\n logger: logger as any,\n configuration: configuration ?? {},\n integrations: agentRegistry.integrations,\n interfaces: agentRegistry.interfaces,\n states: [],\n tags: [],\n scheduledHeavyImports: new Set<string>(),\n })\n\n return botModule.default\n },\n }\n }\n\n /**\n * Run a script with the ADK runtime initialized\n */\n async run(scriptPath: string, options: RunOptions = {}): Promise<number> {\n const { botPath, runnerPath, project } = await this.prepare()\n\n // Resolve the script path\n const absoluteScriptPath = path.isAbsolute(scriptPath) ? scriptPath : path.resolve(this.projectPath, scriptPath)\n\n if (!existsSync(absoluteScriptPath)) {\n throw new Error(`Script not found: ${absoluteScriptPath}`)\n }\n\n // Determine which bot ID to use\n const botId = this.prod ? project.agentInfo?.botId : project.agentInfo?.devId || project.agentInfo?.botId\n const workspaceId = project.agentInfo?.workspaceId\n\n if (!botId) {\n const idType = this.prod ? 'botId' : 'devId'\n throw new Error(\n `No ${idType} found in agent.json. ` +\n (this.prod\n ? 'Please deploy your agent first with \"adk deploy\".'\n : 'Please run \"adk dev\" first to create a development bot, or use --prod to use the production bot.')\n )\n }\n\n // Build the command arguments\n const args = ['run', runnerPath, absoluteScriptPath, ...(options.args || [])]\n\n // Fetch configuration if bot ID is available\n let configuration: Record<string, unknown> | undefined\n try {\n const manager = new ConfigManager(botId)\n configuration = await manager.getAll()\n } catch {\n // Configuration fetch failed - will only be available during request handling\n }\n\n // Merge environment variables\n const env: Record<string, string> = {\n ...(process.env as Record<string, string>),\n\n // Set the project path so scripts can reference it\n ADK_PROJECT_PATH: this.projectPath,\n ADK_BOT_PATH: botPath,\n // Set bot context\n ADK_BOT_ID: botId,\n ADK_WORKSPACE_ID: workspaceId || '',\n ADK_IS_PROD: this.prod ? 'true' : 'false',\n // Disable worker mode for scripts\n BP_DISABLE_WORKER_MODE: 'true',\n ...options.env,\n ADK_SCRIPT_MODE: 'true',\n ADK_SCRIPT_PATH: absoluteScriptPath,\n ADK_TOKEN: this.credentials.token,\n ADK_API_URL: this.credentials.apiUrl,\n // Inject configuration so it's available at module load time\n ...(configuration && { ADK_CONFIGURATION: JSON.stringify(configuration) }),\n }\n\n return new Promise((resolve, reject) => {\n const child = spawn('bun', args, {\n cwd: botPath,\n env,\n stdio: options.inheritStdio !== false ? 'inherit' : 'pipe',\n })\n\n child.on('error', (error) => {\n reject(error)\n })\n\n child.on('close', (code) => {\n resolve(code ?? 0)\n })\n })\n }\n}\n\n/**\n * Convenience function to run a script with the ADK runtime\n */\nexport async function runScript(options: RunScriptOptions): Promise<number> {\n const runner = new ScriptRunner({\n projectPath: options.projectPath,\n forceRegenerate: options.forceRegenerate,\n prod: options.prod,\n credentials: options.credentials,\n })\n\n return runner.run(options.scriptPath, {\n args: options.args,\n env: options.env,\n inheritStdio: options.inheritStdio,\n })\n}\n\nexport interface SetupTestRuntimeOptions {\n /**\n * Path to the agent project root.\n * If not provided, auto-detects by walking up from CWD looking for agent.config.ts\n */\n projectPath?: string\n /**\n * Credentials for API access.\n * If not provided, loads from the current ADK profile (~/.adk/credentials)\n */\n credentials?: ScriptRunnerCredentials\n /** Whether to regenerate the bot project even if it exists */\n forceRegenerate?: boolean\n /** Use production bot ID instead of dev bot ID (default: false, uses devId) */\n prod?: boolean\n /** Additional environment variables to set */\n env?: Record<string, string>\n}\n\n/**\n * Convenience function to setup the ADK runtime for tests.\n *\n * This is designed to be called from test setup (beforeAll, globalSetup, etc.)\n * to prepare the ADK runtime environment without spawning a child process.\n *\n * Features:\n * - Auto-detects project path by walking up from CWD looking for agent.config.ts\n * - Auto-loads credentials from the current ADK profile (~/.adk/credentials)\n * - Both can be overridden via options\n *\n * @example\n * ```typescript\n * // Minimal usage - auto-detects everything\n * import { setupTestRuntime } from '@botpress/adk'\n *\n * beforeAll(async () => {\n * const runtime = await setupTestRuntime()\n * await runtime.initialize()\n * })\n *\n * // With explicit options\n * beforeAll(async () => {\n * const runtime = await setupTestRuntime({\n * projectPath: '/path/to/agent',\n * credentials: { token: 'custom-token', apiUrl: 'https://api.botpress.cloud' },\n * prod: true,\n * })\n * await runtime.initialize()\n * })\n * ```\n */\nexport async function setupTestRuntime(options: SetupTestRuntimeOptions = {}): Promise<TestRuntimeResult> {\n // Auto-detect project path if not provided\n let projectPath = options.projectPath\n if (!projectPath) {\n const detected = await findAgentRoot(process.cwd())\n if (!detected) {\n throw new Error(\n 'Could not find ADK agent project. No agent.config.ts found in current directory or parents.\\n' +\n 'Either run from within an agent project directory, or provide projectPath explicitly.'\n )\n }\n projectPath = detected\n }\n\n // Auto-load credentials if not provided\n let credentials = options.credentials\n if (!credentials) {\n const credentialsManager = new CredentialsManager()\n const loadedCredentials = await credentialsManager.getCredentials()\n if (!loadedCredentials) {\n throw new Error('No credentials found. Please run \"adk login\" first, or provide credentials explicitly.')\n }\n credentials = {\n token: loadedCredentials.token,\n apiUrl: loadedCredentials.apiUrl,\n }\n }\n\n const runner = new ScriptRunner({\n projectPath,\n forceRegenerate: options.forceRegenerate,\n prod: options.prod,\n credentials,\n })\n\n return runner.setupTestRuntime({ env: options.env })\n}\n"
81
86
  ],
82
- "mappings": "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",
83
- "debugId": "AE3B528B2B7EDC6E64756E2164756E21",
87
+ "mappings": "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",
88
+ "debugId": "A068F5974643B24F64756E2164756E21",
84
89
  "names": []
85
90
  }