@botpress/adk 1.13.18 → 1.13.19
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/bot-generator/generator.d.ts +8 -0
- package/dist/bot-generator/generator.d.ts.map +1 -1
- package/dist/commands/base-command.d.ts +1 -0
- package/dist/commands/base-command.d.ts.map +1 -1
- package/dist/commands/bp-dev-command.d.ts.map +1 -1
- package/dist/index.js +138 -39
- package/dist/index.js.map +10 -9
- package/dist/integrations/checker.d.ts.map +1 -1
- package/dist/integrations/config-utils.d.ts +26 -0
- package/dist/integrations/config-utils.d.ts.map +1 -0
- package/dist/integrations/index.d.ts +2 -0
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/sync-manager.d.ts.map +1 -1
- package/dist/preflight/checker.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
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/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/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/generators/assets.ts", "../src/generators/integration-types.ts", "../src/utils/strings.ts", "../src/utils/ids.ts", "../src/bot-generator/generator.ts", "../src/generators/interface-types.ts", "../src/generators/table-types.ts", "../src/generators/trigger-types.ts", "../src/generators/state-types.ts", "../src/generators/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"],
|
|
4
4
|
"sourcesContent": [
|
|
5
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
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",
|
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
"import { Client } from '@botpress/client'\nimport { CredentialsManager, Credentials, Profile } from './credentials.js'\nimport { AuthService } from './service.js'\n\nexport interface LoginOptions {\n profile?: string\n apiUrl?: string\n}\n\nexport interface AuthAPI {\n login(token: string, options?: LoginOptions): Promise<void>\n logout(profile?: string): Promise<void>\n listProfiles(): Promise<Profile[]>\n getCurrentProfile(): Promise<string>\n getCurrentProfileDetails(): Promise<Profile | null>\n setCurrentProfile(profileName: string): Promise<void>\n getActiveCredentials(): Promise<Credentials>\n getAgentCredentials(agentPath: string): Promise<Credentials>\n validateToken(token: string, apiUrl?: string): Promise<boolean>\n}\n\nclass Auth implements AuthAPI {\n private credentialsManager: CredentialsManager\n\n constructor() {\n this.credentialsManager = new CredentialsManager()\n }\n\n async login(token: string, options: LoginOptions = {}): Promise<void> {\n const { profile = 'default', apiUrl = 'https://api.botpress.cloud' } = options\n\n // Validate the token first\n const authService = new AuthService(apiUrl)\n const authResult = await authService.validateToken(token)\n\n // Set account preference to indicate ADK CLI is connected (best effort, don't fail login)\n try {\n const client = new Client({ apiUrl, token })\n await client.setAccountPreference({ key: 'adkCliConnected', value: true })\n } catch {\n // Silently ignore - this is a non-critical operation\n }\n\n // Save credentials with user info\n await this.credentialsManager.saveCredentials(\n profile,\n {\n token,\n apiUrl,\n workspaceId: authResult.workspaceId,\n workspaceName: authResult.workspaceName,\n botId: authResult.botId,\n },\n {\n email: authResult.email,\n displayName: authResult.displayName,\n accountId: authResult.accountId,\n createdAt: authResult.createdAt,\n }\n )\n }\n\n async logout(profile?: string): Promise<void> {\n if (profile) {\n await this.credentialsManager.deleteProfile(profile)\n } else {\n // Delete current profile\n const currentProfile = await this.credentialsManager.getCurrentProfile()\n await this.credentialsManager.deleteProfile(currentProfile)\n }\n }\n\n async listProfiles(): Promise<Profile[]> {\n return this.credentialsManager.listProfiles()\n }\n\n async getCurrentProfile(): Promise<string> {\n return this.credentialsManager.getCurrentProfile()\n }\n\n async getCurrentProfileDetails(): Promise<Profile | null> {\n return this.credentialsManager.getCurrentProfileDetails()\n }\n\n async setCurrentProfile(profileName: string): Promise<void> {\n return this.credentialsManager.setCurrentProfile(profileName)\n }\n\n async getActiveCredentials(): Promise<Credentials> {\n return this.credentialsManager.getActiveCredentials()\n }\n\n async getAgentCredentials(agentPath: string): Promise<Credentials> {\n return this.credentialsManager.getAgentCredentials(agentPath)\n }\n\n async validateToken(token: string, apiUrl?: string): Promise<boolean> {\n const authService = new AuthService(apiUrl)\n return authService.testConnection(token)\n }\n}\n\n// Export singleton instance\nexport const auth = new Auth()\n\n// Export types\nexport type { Credentials, Profile } from './credentials.js'\nexport type { AuthResult } from './service.js'\n\n// Export classes\nexport { CredentialsManager } from './credentials.js'\n\n// Export BP CLI importer\nexport { bpCliImporter } from './bp-cli-import.js'\n",
|
|
15
15
|
"import { Client } from '@botpress/client'\n\nexport interface AuthResult {\n workspaceId?: string\n workspaceName?: string\n botId?: string\n userId?: string\n email?: string\n displayName?: string\n accountId?: string\n createdAt?: string\n}\n\nexport class AuthService {\n private apiUrl: string\n\n constructor(apiUrl?: string) {\n this.apiUrl = apiUrl || 'https://api.botpress.cloud'\n }\n\n async validateToken(token: string): Promise<AuthResult> {\n if (!token || !token.startsWith('bp_')) {\n throw new Error('Invalid token format. Token should start with \"bp_\"')\n }\n\n try {\n // Create a Botpress client with the token\n const client = new Client({\n apiUrl: this.apiUrl,\n token,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n\n // Try to get account details to validate the token\n // This is a lightweight call that will fail if the token is invalid\n const accountResponse = await client.getAccount({})\n const { account } = accountResponse\n\n // Also get workspaces for additional context\n const workspaces = await client.list.workspaces({}).collect()\n\n // If we get here, the token is valid\n return {\n workspaceId: workspaces[0]?.id,\n workspaceName: workspaces[0]?.name,\n accountId: account.id,\n email: account.email,\n displayName: account.displayName,\n createdAt: account.createdAt,\n }\n } catch (error) {\n if (error instanceof Error) {\n // Check for common authentication errors\n if (error.message.includes('401') || error.message.includes('Unauthorized')) {\n throw new Error('Invalid token. Please check your API token and try again.')\n }\n if (error.message.includes('Network') || error.message.includes('ENOTFOUND')) {\n throw new Error(`Unable to connect to ${this.apiUrl}. Please check your internet connection and API URL.`)\n }\n }\n\n // Re-throw the original error if it's not a known authentication error\n throw error\n }\n }\n\n async testConnection(token: string): Promise<boolean> {\n try {\n await this.validateToken(token)\n return true\n } catch {\n return false\n }\n }\n}\n",
|
|
16
16
|
"import fs from 'fs/promises'\nimport path from 'path'\nimport os from 'os'\nimport { auth } from './index.js'\n\ninterface BpCliCredentials {\n token: string\n workspaceId: string\n apiUrl: string\n botId?: string\n}\n\nexport class BpCliImporter {\n private bpCachePath: string\n\n constructor() {\n // BP CLI stores credentials in ~/.botpress/global.cache.json\n this.bpCachePath = path.join(os.homedir(), '.botpress', 'global.cache.json')\n }\n\n async hasBpCliCredentials(): Promise<boolean> {\n try {\n await fs.access(this.bpCachePath)\n return true\n } catch {\n return false\n }\n }\n\n async getBpCliCredentials(): Promise<BpCliCredentials | null> {\n try {\n const data = await fs.readFile(this.bpCachePath, 'utf-8')\n const credentials = JSON.parse(data) as BpCliCredentials\n\n // Validate required fields\n if (!credentials.token || !credentials.workspaceId || !credentials.apiUrl) {\n return null\n }\n\n return credentials\n } catch {\n return null\n }\n }\n\n async importFromBpCli(profileName: string = 'default'): Promise<boolean> {\n const bpCredentials = await this.getBpCliCredentials()\n if (!bpCredentials) {\n return false\n }\n\n try {\n // Login with BP CLI credentials\n await auth.login(bpCredentials.token, {\n profile: profileName,\n apiUrl: bpCredentials.apiUrl,\n })\n\n // The login process will have saved basic credentials\n // Now we need to update them with the workspace ID from BP CLI\n // We'll do this by creating a new CredentialsManager instance\n const credentialsManager = new (await import('./credentials.js')).CredentialsManager()\n\n // Read current credentials\n const store = await credentialsManager['readCredentials']()\n\n if (store.profiles[profileName]) {\n store.profiles[profileName].workspaceId = bpCredentials.workspaceId\n if (bpCredentials.botId) {\n store.profiles[profileName].botId = bpCredentials.botId\n }\n await credentialsManager['writeCredentials'](store)\n }\n\n return true\n } catch {\n return false\n }\n }\n}\n\nexport const bpCliImporter = new BpCliImporter()\n",
|
|
17
|
-
"import { EventEmitter } from 'events'\n\nexport interface BaseProgressEvent {\n type: string\n startTime: number\n endTime?: number\n}\n\nexport interface BaseCommandEvents<TProgress extends BaseProgressEvent = BaseProgressEvent, TDone = never> {\n stdout: (data: string) => void\n stderr: (data: string) => void\n progress: (event: TProgress) => void\n error: (error: { exitCode: number; stderr: string; message: string }) => void\n done: TDone extends never ? never : (result: TDone) => void\n}\n\nexport abstract class BaseCommand<TProgress extends BaseProgressEvent = BaseProgressEvent, TDone = never> {\n protected events = new EventEmitter()\n private deferred = Promise.withResolvers<TDone>()\n\n on<K extends keyof BaseCommandEvents<TProgress, TDone>>(\n event: K,\n listener: BaseCommandEvents<TProgress, TDone>[K]\n ): void {\n this.events.on(event as string, listener)\n }\n\n protected emit<K extends keyof BaseCommandEvents<TProgress, TDone>>(\n event: K,\n ...args: Parameters<BaseCommandEvents<TProgress, TDone>[K]>\n ): void {\n if (event === 'done') {\n this.deferred.resolve(args[0] as TDone)\n } else if (event === 'error') {\n const error = args[0] as {\n exitCode: number\n stderr: string\n message: string\n }\n const err = new Error(error.message)\n ;(err as any).exitCode = error.exitCode\n ;(err as any).stderr = error.stderr\n this.deferred.reject(err)\n }\n\n this.events.emit(event as string, ...args)\n }\n\n output(): Promise<TDone> {\n return this.deferred.promise\n }\n\n abstract run(): Promise<void>\n abstract kill(signal?: NodeJS.Signals): void\n}\n",
|
|
17
|
+
"import { EventEmitter } from 'events'\n\nexport interface BaseProgressEvent {\n type: string\n startTime: number\n endTime?: number\n}\n\nexport interface BaseCommandEvents<TProgress extends BaseProgressEvent = BaseProgressEvent, TDone = never> {\n stdout: (data: string) => void\n stderr: (data: string) => void\n progress: (event: TProgress) => void\n error: (error: { exitCode: number; stderr: string; message: string }) => void\n done: TDone extends never ? never : (result: TDone) => void\n}\n\nexport abstract class BaseCommand<TProgress extends BaseProgressEvent = BaseProgressEvent, TDone = never> {\n protected events = new EventEmitter()\n private deferred = Promise.withResolvers<TDone>()\n\n on<K extends keyof BaseCommandEvents<TProgress, TDone>>(\n event: K,\n listener: BaseCommandEvents<TProgress, TDone>[K]\n ): void {\n this.events.on(event as string, listener)\n }\n\n off<K extends keyof BaseCommandEvents<TProgress, TDone>>(\n event: K,\n listener: BaseCommandEvents<TProgress, TDone>[K]\n ): void {\n this.events.off(event as string, listener)\n }\n\n protected emit<K extends keyof BaseCommandEvents<TProgress, TDone>>(\n event: K,\n ...args: Parameters<BaseCommandEvents<TProgress, TDone>[K]>\n ): void {\n if (event === 'done') {\n this.deferred.resolve(args[0] as TDone)\n } else if (event === 'error') {\n const error = args[0] as {\n exitCode: number\n stderr: string\n message: string\n }\n const err = new Error(error.message)\n ;(err as any).exitCode = error.exitCode\n ;(err as any).stderr = error.stderr\n this.deferred.reject(err)\n }\n\n this.events.emit(event as string, ...args)\n }\n\n output(): Promise<TDone> {\n return this.deferred.promise\n }\n\n abstract run(): Promise<void>\n abstract kill(signal?: NodeJS.Signals): void\n}\n",
|
|
18
18
|
"import { execa, type ResultPromise } from 'execa'\nimport { getBpCli } from './bp-cli.js'\nimport { BaseCommand } from './base-command.js'\n\nexport interface BpAddCommandOptions {\n resource: string // Full resource string like \"integration:slack@1.0.0\" or \"interface:translator@1.0.0\"\n botPath: string\n workspaceId: string\n credentials: {\n token: string\n apiUrl: string\n }\n}\n\nexport class BpAddCommand extends BaseCommand<never, void> {\n private childProcess: ResultPromise | null = null\n private killed = false\n\n constructor(private options: BpAddCommandOptions) {\n super()\n }\n\n async run(): Promise<void> {\n const { resource, botPath, workspaceId, credentials } = this.options\n\n // Get bp command path\n const { path: bpCommand } = getBpCli()\n\n const args = [\n 'add',\n resource, // Use resource as-is (already includes integration: or interface: prefix)\n '-y',\n '--installPath',\n botPath,\n '--token',\n credentials.token,\n '--workspaceId',\n workspaceId,\n '--apiUrl',\n credentials.apiUrl,\n ]\n\n this.childProcess = execa(bpCommand, args, {\n cwd: botPath,\n stdio: ['ignore', 'pipe', 'pipe'],\n })\n\n // Capture stdout\n if (this.childProcess.stdout) {\n this.childProcess.stdout.on('data', (data: Buffer) => {\n const text = data.toString()\n this.emit('stdout', text)\n })\n }\n\n // Capture stderr\n if (this.childProcess.stderr) {\n this.childProcess.stderr.on('data', (data: Buffer) => {\n const text = data.toString()\n this.emit('stderr', text)\n })\n }\n\n // Handle process exit\n this.childProcess.then(\n () => {\n // Process completed successfully\n this.emit('done', undefined)\n },\n (error: any) => {\n if (this.killed) {\n return\n }\n\n const errorObj = {\n exitCode: error.exitCode ?? 1,\n stderr: error.stderr || '',\n message: error.message || 'Process exited with error',\n }\n\n this.emit('error', errorObj)\n }\n )\n }\n\n kill(signal: NodeJS.Signals = 'SIGTERM'): void {\n this.killed = true\n if (this.childProcess) {\n this.childProcess.kill(signal)\n }\n }\n}\n",
|
|
19
19
|
"import { existsSync } from 'fs'\nimport os from 'os'\nimport path from 'path'\nimport createDebug from 'debug'\n\nconst debug = createDebug('adk:bp-cli')\n\nexport interface BpCliInfo {\n path: string\n version: string\n}\n\n// This constant is injected at build time by esbuild's define\ndeclare const __BP_CLI_VERSION__: string\n\nexport const BP_CLI_VERSION = __BP_CLI_VERSION__\nexport const BP_CLI_INSTALL_ALL = path.join(os.homedir(), '.adk', `bp-cli`)\nexport const BP_CLI_INSTALL_DIR = path.join(BP_CLI_INSTALL_ALL, BP_CLI_VERSION)\nexport const BP_CLI_BIN_PATH = path.join(BP_CLI_INSTALL_DIR, 'node_modules', '@botpress', 'cli', 'bin.js')\n\ndebug('BP_CLI_VERSION=%s (injected at build time)', BP_CLI_VERSION)\ndebug('BP_CLI_INSTALL_ALL=%s', BP_CLI_INSTALL_ALL)\ndebug('BP_CLI_INSTALL_DIR=%s', BP_CLI_INSTALL_DIR)\ndebug('BP_CLI_BIN_PATH=%s', BP_CLI_BIN_PATH)\n\n/**\n * Get bp CLI info (path and version)\n */\nexport function getBpCli(): BpCliInfo {\n debug('getBpCli() called')\n debug('checking if BP_CLI_BIN_PATH exists: %s', BP_CLI_BIN_PATH)\n\n const exists = existsSync(BP_CLI_BIN_PATH)\n debug('BP_CLI_BIN_PATH exists=%s', exists)\n\n if (!exists) {\n debug('ERROR: bp CLI not found at expected path')\n throw new Error(\n `@botpress/cli version ${BP_CLI_VERSION} is not installed in the ADK directory \"${BP_CLI_INSTALL_DIR}\". This is a bug, please report it to the Botpress team.`\n )\n }\n\n const info = {\n path: BP_CLI_BIN_PATH,\n version: BP_CLI_VERSION,\n }\n\n debug('returning BpCliInfo: %O', info)\n return info\n}\n",
|
|
20
20
|
"import { execa, type ResultPromise } from 'execa'\nimport { join } from 'path'\nimport { access } from 'fs/promises'\nimport { getBpCli } from './bp-cli.js'\nimport { BaseCommand } from './base-command.js'\nimport { optimizeSourceMap } from '../utils/source-map-optimizer.js'\n\nexport interface BpBuildCommandOptions {\n botPath: string\n}\n\nexport class BpBuildCommand extends BaseCommand<never, void> {\n private childProcess: ResultPromise | null = null\n private killed = false\n\n constructor(private options: BpBuildCommandOptions) {\n super()\n }\n\n async run(): Promise<void> {\n const { botPath } = this.options\n\n // Get bp command path\n const { path: bpCommand } = getBpCli()\n\n const args = ['build', '--sourceMap']\n\n this.childProcess = execa(bpCommand, args, {\n cwd: botPath,\n stdio: ['ignore', 'pipe', 'pipe'],\n })\n\n // Capture stdout\n if (this.childProcess.stdout) {\n this.childProcess.stdout.on('data', (data: Buffer) => {\n const text = data.toString()\n this.emit('stdout', text)\n })\n }\n\n // Capture stderr\n if (this.childProcess.stderr) {\n this.childProcess.stderr.on('data', (data: Buffer) => {\n const text = data.toString()\n this.emit('stderr', text)\n })\n }\n\n // Handle process exit\n this.childProcess.then(\n async () => {\n // Process completed successfully - optimize source map\n await this.optimizeSourceMapIfExists()\n this.emit('done', undefined)\n },\n (error: any) => {\n if (this.killed) {\n return\n }\n\n const errorObj = {\n exitCode: error.exitCode ?? 1,\n stderr: error.stderr || '',\n message: error.message || 'Process exited with error',\n }\n\n this.emit('error', errorObj)\n }\n )\n }\n\n private async optimizeSourceMapIfExists(): Promise<void> {\n const { botPath } = this.options\n const sourceMapPath = join(botPath, '.botpress', 'dist', 'index.cjs.map')\n\n try {\n // Check if source map exists\n await access(sourceMapPath)\n\n // Get the agent's src directory (parent of botPath)\n const agentSrcPath = join(botPath, '..', '..', 'src')\n\n // Optimize the source map\n await optimizeSourceMap({\n sourceMapPath,\n agentSrcPath,\n })\n } catch {\n // Source map doesn't exist or optimization failed - not critical\n }\n }\n\n kill(signal: NodeJS.Signals = 'SIGTERM'): void {\n this.killed = true\n if (this.childProcess) {\n this.childProcess.kill(signal)\n }\n }\n}\n",
|
|
21
21
|
"/**\n * Source Map Optimizer\n *\n * This module optimizes source maps generated by the Botpress CLI (`bp dev` and `bp build`)\n * by removing sources that fall outside the agent's src directory.\n *\n * ## Problem\n * The bundled bot includes source maps that reference ALL sources, including:\n * - Agent's own code (~10 files)\n * - All node_modules dependencies (~10,000+ files)\n * - Botpress SDK internals\n *\n * This results in source maps that are 30+ MB, where 99% of the content is from\n * dependencies the user doesn't care about when debugging their agent.\n *\n * ## Solution\n * 1. Parse the source map and identify which sources are inside the agent's src directory\n * 2. Remove all sources outside the agent's src directory\n * 3. Rebuild the mappings (VLQ-encoded segments) with updated indices\n * 4. Save both an optimized .map file AND inline it into the .cjs bundle\n *\n * ## What is VLQ?\n * Variable Length Quantity (VLQ) is a compact encoding format used in source maps.\n * Source maps use VLQ to encode the \"mappings\" string, which contains information about\n * how each position in the generated code maps back to the original source.\n *\n * Each segment in the mappings can contain up to 5 fields (all VLQ-encoded):\n * 1. Column position in the generated code\n * 2. Source file index (into the sources array)\n * 3. Line number in the original source\n * 4. Column position in the original source\n * 5. Name index (into the names array) - optional\n *\n * The mappings string uses:\n * - `;` to separate lines\n * - `,` to separate segments within a line\n * - Base64 characters to encode VLQ values\n *\n * ## Why This Approach?\n * Simply blanking out source paths isn't enough - the mappings still reference removed\n * sources, and the names array still contains thousands of unused identifiers. We need to:\n * 1. Completely remove unused sources and sourcesContent\n * 2. Remove unused names\n * 3. Rebuild the mappings with correct indices\n *\n * This reduces file size by 90%+ while keeping the source map valid and functional\n * for debugging the agent's own code.\n */\n\nimport { readFile, writeFile } from 'fs/promises'\nimport { resolve, isAbsolute, relative, dirname } from 'path'\n\nexport interface SourceMapOptimizeOptions {\n /**\n * Path to the source map file (.cjs.map)\n */\n sourceMapPath: string\n\n /**\n * Path to the agent's src directory.\n * Sources outside this directory will be removed.\n */\n agentSrcPath: string\n}\n\ninterface SourceMap {\n version: number\n sources: string[]\n sourcesContent?: (string | null)[]\n mappings: string\n names?: string[]\n file?: string\n sourceRoot?: string\n}\n\n/**\n * Decodes VLQ (Variable Length Quantity) encoded value\n */\nfunction decodeVLQ(input: string, pos: number): [number, number] {\n let result = 0\n let shift = 0\n let continuation = true\n let digit: number\n\n while (continuation) {\n if (pos >= input.length) {\n throw new Error('Unexpected end of VLQ data')\n }\n\n const char = input.charCodeAt(pos++)\n // Base64 decode\n if (char >= 65 && char <= 90)\n digit = char - 65 // A-Z\n else if (char >= 97 && char <= 122)\n digit = char - 97 + 26 // a-z\n else if (char >= 48 && char <= 57)\n digit = char - 48 + 52 // 0-9\n else if (char === 43)\n digit = 62 // +\n else if (char === 47)\n digit = 63 // /\n else throw new Error('Invalid VLQ character')\n\n continuation = (digit & 32) !== 0\n digit &= 31\n result += digit << shift\n shift += 5\n }\n\n const negate = (result & 1) === 1\n result >>= 1\n return [negate ? -result : result, pos]\n}\n\n/**\n * Encodes a number as VLQ\n */\nfunction encodeVLQ(value: number): string {\n const base64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n\n let encoded = ''\n let num = value < 0 ? (-value << 1) | 1 : value << 1\n\n do {\n let digit = num & 31\n num >>>= 5\n if (num > 0) {\n digit |= 32\n }\n encoded += base64[digit]\n } while (num > 0)\n\n return encoded\n}\n\n/**\n * Parses source map mappings and returns segments with source file references\n */\nfunction parseMappings(mappings: string): Array<{\n line: number\n segments: Array<{\n column: number\n sourceIndex?: number\n sourceLine?: number\n sourceColumn?: number\n nameIndex?: number\n encoded: string\n }>\n}> {\n const lines: Array<{\n line: number\n segments: Array<{\n column: number\n sourceIndex?: number\n sourceLine?: number\n sourceColumn?: number\n nameIndex?: number\n encoded: string\n }>\n }> = []\n\n const lineStrings = mappings.split(';')\n let sourceIndex = 0\n let sourceLine = 0\n let sourceColumn = 0\n let nameIndex = 0\n\n for (let lineNum = 0; lineNum < lineStrings.length; lineNum++) {\n const line = lineStrings[lineNum]\n if (!line) {\n lines.push({ line: lineNum, segments: [] })\n continue\n }\n\n const segments: Array<{\n column: number\n sourceIndex?: number\n sourceLine?: number\n sourceColumn?: number\n nameIndex?: number\n encoded: string\n }> = []\n\n let column = 0\n const segmentStrings = line.split(',')\n\n for (const segmentString of segmentStrings) {\n if (!segmentString) continue\n\n let pos = 0\n const segment: {\n column: number\n sourceIndex?: number\n sourceLine?: number\n sourceColumn?: number\n nameIndex?: number\n encoded: string\n } = {\n column: 0,\n encoded: segmentString,\n }\n\n // Column\n const [colDelta, newPos1] = decodeVLQ(segmentString, pos)\n column += colDelta\n segment.column = column\n pos = newPos1\n\n if (pos < segmentString.length) {\n // Source index\n const [srcDelta, newPos2] = decodeVLQ(segmentString, pos)\n sourceIndex += srcDelta\n segment.sourceIndex = sourceIndex\n pos = newPos2\n\n if (pos < segmentString.length) {\n // Source line\n const [lineDelta, newPos3] = decodeVLQ(segmentString, pos)\n sourceLine += lineDelta\n segment.sourceLine = sourceLine\n pos = newPos3\n\n if (pos < segmentString.length) {\n // Source column\n const [colDelta2, newPos4] = decodeVLQ(segmentString, pos)\n sourceColumn += colDelta2\n segment.sourceColumn = sourceColumn\n pos = newPos4\n\n if (pos < segmentString.length) {\n // Name index\n const [nameDelta, newPos5] = decodeVLQ(segmentString, pos)\n nameIndex += nameDelta\n segment.nameIndex = nameIndex\n pos = newPos5\n }\n }\n }\n }\n\n segments.push(segment)\n }\n\n lines.push({ line: lineNum, segments })\n }\n\n return lines\n}\n\n/**\n * Rebuilds mappings string from parsed segments, remapping indices\n */\nfunction rebuildMappings(\n lines: Array<{\n line: number\n segments: Array<{\n column: number\n sourceIndex?: number\n sourceLine?: number\n sourceColumn?: number\n nameIndex?: number\n encoded: string\n }>\n }>,\n sourceIndexMap: Map<number, number>,\n nameIndexMap: Map<number, number>\n): string {\n const result: string[] = []\n let prevColumn = 0\n let prevSourceIndex = 0\n let prevSourceLine = 0\n let prevSourceColumn = 0\n let prevNameIndex = 0\n\n for (let lineNum = 0; lineNum < lines.length; lineNum++) {\n const line = lines[lineNum]\n if (!line) continue\n\n if (lineNum > 0) {\n result.push(';')\n prevColumn = 0\n }\n\n const segments: string[] = []\n\n for (const segment of line.segments) {\n // Check early if this segment references a removed source - if so, skip entirely\n if (segment.sourceIndex !== undefined) {\n const newSourceIndex = sourceIndexMap.get(segment.sourceIndex)\n if (newSourceIndex === undefined) {\n // Skip segments that reference removed sources\n // Important: Don't update prevColumn here to maintain correct deltas\n continue\n }\n }\n\n const parts: string[] = []\n\n // Column delta\n const colDelta = segment.column - prevColumn\n parts.push(encodeVLQ(colDelta))\n prevColumn = segment.column\n\n if (segment.sourceIndex !== undefined) {\n const newSourceIndex = sourceIndexMap.get(segment.sourceIndex)!\n\n const srcDelta = newSourceIndex - prevSourceIndex\n parts.push(encodeVLQ(srcDelta))\n prevSourceIndex = newSourceIndex\n\n if (segment.sourceLine !== undefined) {\n const lineDelta = segment.sourceLine - prevSourceLine\n parts.push(encodeVLQ(lineDelta))\n prevSourceLine = segment.sourceLine\n\n if (segment.sourceColumn !== undefined) {\n const colDelta2 = segment.sourceColumn - prevSourceColumn\n parts.push(encodeVLQ(colDelta2))\n prevSourceColumn = segment.sourceColumn\n\n if (segment.nameIndex !== undefined) {\n const newNameIndex = nameIndexMap.get(segment.nameIndex)\n if (newNameIndex !== undefined) {\n const nameDelta = newNameIndex - prevNameIndex\n parts.push(encodeVLQ(nameDelta))\n prevNameIndex = newNameIndex\n }\n }\n }\n }\n }\n\n segments.push(parts.join(''))\n }\n\n result.push(segments.join(','))\n }\n\n return result.join('')\n}\n\n/**\n * Optimizes a source map by removing sources that fall outside\n * the agent's src directory and rebuilding the mappings.\n *\n * This dramatically reduces the size of the source map (typically 90%+ reduction)\n * without losing valuable debugging information for the agent's own code.\n *\n * The optimized source map is both:\n * 1. Written to the .map file (for external reference)\n * 2. Inlined as base64 into the .cjs bundle (for runtime debugging)\n *\n * We inline the source map because after optimization it's tiny (usually <1MB),\n * which makes it much easier for tools like VSCode and Chrome DevTools to load\n * and use for debugging. Inline source maps eliminate the need for additional\n * HTTP requests or file system lookups, providing instant source mapping.\n *\n * @param options - Configuration options\n * @returns Promise that resolves when the source map has been optimized\n */\nexport async function optimizeSourceMap(options: SourceMapOptimizeOptions): Promise<void> {\n const { sourceMapPath, agentSrcPath } = options\n\n // Read and parse the source map\n const sourceMapContent = await readFile(sourceMapPath, 'utf-8')\n const sourceMap: SourceMap = JSON.parse(sourceMapContent)\n\n // Resolve absolute paths for comparison\n const resolvedAgentSrc = resolve(agentSrcPath)\n const sourceMapDir = resolve(sourceMapPath, '..')\n\n // Track indices to keep (agent sources only)\n const indicesToKeep = new Set<number>()\n\n // Find all sources that should be kept (inside agent src directory)\n for (let i = 0; i < sourceMap.sources.length; i++) {\n const source = sourceMap.sources[i]\n if (!source) {\n continue\n }\n\n // Resolve the source path from the source map's directory\n const resolvedSource = isAbsolute(source) ? resolve(source) : resolve(sourceMapDir, source)\n\n // Check if this source is inside the agent src directory\n const rel = relative(resolvedAgentSrc, resolvedSource)\n const isInside = !rel.startsWith('..') && !isAbsolute(rel)\n\n if (isInside) {\n indicesToKeep.add(i)\n }\n }\n\n // Parse the mappings (VLQ-encoded segments)\n const parsedLines = parseMappings(sourceMap.mappings)\n\n // Build new sources array and create index mapping\n const newSources: string[] = []\n const newSourcesContent: (string | null)[] = []\n const sourceIndexMap = new Map<number, number>()\n\n for (const oldIndex of Array.from(indicesToKeep).sort((a, b) => a - b)) {\n const newIndex = newSources.length\n sourceIndexMap.set(oldIndex, newIndex)\n const source = sourceMap.sources[oldIndex]\n if (source !== undefined) {\n // Convert relative paths to absolute for better debugger support\n const absoluteSource = isAbsolute(source) ? source : resolve(dirname(sourceMapPath), source)\n newSources.push(absoluteSource)\n }\n if (sourceMap.sourcesContent) {\n newSourcesContent.push(sourceMap.sourcesContent[oldIndex] || null)\n }\n }\n\n // Find used names from kept segments\n const usedNameIndices = new Set<number>()\n for (const line of parsedLines) {\n for (const segment of line.segments) {\n if (\n segment.sourceIndex !== undefined &&\n indicesToKeep.has(segment.sourceIndex) &&\n segment.nameIndex !== undefined\n ) {\n usedNameIndices.add(segment.nameIndex)\n }\n }\n }\n\n // Build new names array and create index mapping\n const newNames: string[] = []\n const nameIndexMap = new Map<number, number>()\n\n if (sourceMap.names) {\n for (const oldIndex of Array.from(usedNameIndices).sort((a, b) => a - b)) {\n if (oldIndex < sourceMap.names.length) {\n const newIndex = newNames.length\n nameIndexMap.set(oldIndex, newIndex)\n const name = sourceMap.names[oldIndex]\n if (name !== undefined) {\n newNames.push(name)\n }\n }\n }\n }\n\n // Rebuild mappings with new indices\n const newMappings = rebuildMappings(parsedLines, sourceIndexMap, nameIndexMap)\n\n // Create optimized source map\n // Note: We don't include sourceRoot since we're using absolute paths\n const optimizedSourceMap: SourceMap = {\n version: sourceMap.version,\n file: sourceMap.file,\n sources: newSources,\n sourcesContent: newSourcesContent.length > 0 ? newSourcesContent : undefined,\n names: newNames.length > 0 ? newNames : undefined,\n mappings: newMappings,\n }\n\n // Create optimized content\n const optimizedContent = JSON.stringify(optimizedSourceMap)\n\n if (optimizedContent === sourceMapContent) {\n return\n }\n\n // 1. Write the optimized source map file\n await writeFile(sourceMapPath, optimizedContent, 'utf-8')\n\n // 2. Inline the source map into the .cjs file\n const cjsPath = sourceMapPath.replace('.cjs.map', '.cjs')\n let cjsContent = await readFile(cjsPath, 'utf-8')\n\n // Convert source map to base64\n const base64SourceMap = Buffer.from(optimizedContent, 'utf-8').toString('base64')\n const inlineSourceMap = `//# sourceMappingURL=data:application/json;base64,${base64SourceMap}`\n\n // Replace existing source map comment with inline version\n cjsContent = cjsContent.replace(/\\/\\/# sourceMappingURL=.*$/m, inlineSourceMap)\n\n // If no source map comment was found, append it\n if (!cjsContent.includes('//# sourceMappingURL=')) {\n cjsContent += `\\n${inlineSourceMap}`\n }\n\n // Write the updated .cjs file\n await writeFile(cjsPath, cjsContent, 'utf-8')\n}\n",
|
|
22
22
|
"import { execa, type ResultPromise } from 'execa'\nimport { getBpCli } from './bp-cli.js'\nimport { BaseCommand } from './base-command.js'\n\nexport interface BpDeployCommandOptions {\n botPath: string\n botId: string\n workspaceId: string\n credentials: {\n token: string\n apiUrl: string\n }\n}\n\nexport class BpDeployCommand extends BaseCommand<never, void> {\n private childProcess: ResultPromise | null = null\n private killed = false\n\n constructor(private options: BpDeployCommandOptions) {\n super()\n }\n\n async run(): Promise<void> {\n const { botPath, botId, workspaceId, credentials } = this.options\n\n // Get bp command path\n const { path: bpCommand } = getBpCli()\n\n const args = [\n 'deploy',\n '--botId',\n botId,\n '-y', // Auto-confirm\n '--token',\n credentials.token,\n '--workspaceId',\n workspaceId,\n '--apiUrl',\n credentials.apiUrl,\n ]\n\n this.childProcess = execa(bpCommand, args, {\n cwd: botPath,\n stdio: ['ignore', 'pipe', 'pipe'],\n })\n\n // Capture stdout\n if (this.childProcess.stdout) {\n this.childProcess.stdout.on('data', (data: Buffer) => {\n const text = data.toString()\n this.emit('stdout', text)\n })\n }\n\n // Capture stderr\n if (this.childProcess.stderr) {\n this.childProcess.stderr.on('data', (data: Buffer) => {\n const text = data.toString()\n this.emit('stderr', text)\n })\n }\n\n // Handle process exit\n this.childProcess.then(\n () => {\n // Process completed successfully\n this.emit('done', undefined)\n },\n (error: any) => {\n if (this.killed) {\n return\n }\n\n const errorObj = {\n exitCode: error.exitCode ?? 1,\n stderr: error.stderr || '',\n message: error.message || 'Process exited with error',\n }\n\n this.emit('error', errorObj)\n }\n )\n }\n\n kill(signal: NodeJS.Signals = 'SIGTERM'): void {\n this.killed = true\n if (this.childProcess) {\n this.childProcess.kill(signal)\n }\n }\n}\n",
|
|
23
|
-
"import { execa, type ResultPromise } from 'execa'\nimport { join } from 'path'\nimport { access } from 'fs/promises'\nimport { getBpCli } from './bp-cli.js'\nimport { BaseCommand } from './base-command.js'\nimport { optimizeSourceMap } from '../utils/source-map-optimizer.js'\n\nexport interface BpDevCommandOptions {\n port: string\n botPath: string\n agentPath: string\n workspaceId: string\n credentials: {\n token: string\n apiUrl: string\n }\n /** The dev bot ID if already known (from agent.json) */\n devBotId?: string\n sourceMap?: boolean\n /** Bot configuration to inject as environment variable */\n configuration?: Record<string, unknown>\n}\n\nexport type BpDevProgressEvent =\n | {\n type: 'generating'\n startTime: number\n endTime?: number\n }\n | {\n type: 'bundling'\n startTime: number\n endTime?: number\n data?: {\n buildTime: number\n }\n }\n | {\n type: 'deploying'\n startTime: number\n endTime?: number\n data?: {\n botId: string\n tunnelUrl: string\n }\n }\n | {\n type: 'listening'\n startTime: number\n data: {\n port: number\n }\n }\n\nexport class BpDevCommand extends BaseCommand<BpDevProgressEvent> {\n private childProcess: ResultPromise | null = null\n private killed = false\n private stderrLines: string[] = []\n private readonly MAX_STDERR_LINES = 50\n\n // Track progress events\n private progressEvents: Map<BpDevProgressEvent['type'], BpDevProgressEvent> = new Map()\n\n constructor(private options: BpDevCommandOptions) {\n super()\n }\n\n async run(): Promise<void> {\n const { port, botPath, workspaceId, credentials, sourceMap = true } = this.options\n\n // Get bp command path\n const { path: bpCommand } = getBpCli()\n\n const bpArgs = [\n 'dev',\n '--port',\n port,\n '--token',\n credentials.token,\n '--workspaceId',\n workspaceId,\n '--apiUrl',\n credentials.apiUrl,\n ]\n\n if (sourceMap) {\n bpArgs.push('--sourceMap')\n }\n\n this.childProcess = execa(bpCommand, bpArgs, {\n cwd: botPath,\n env: {\n ...process.env,\n TRACE_DIR: join(botPath, 'traces'),\n NODE_ENV: 'development',\n\n // force using \"node\" for LLMz engine\n // remove this when LLMz supports wasm (quickjs)\n VM_DRIVER: 'node',\n\n // in dev mode, we provide the user's PAT so the agent can access\n // restricted resources like adding new integrations\n ADK_LOCAL_PAT: credentials.token,\n\n // ADK runtime environment variables for client initialization\n ADK_TOKEN: credentials.token,\n ADK_API_URL: credentials.apiUrl,\n ADK_BOT_ID: this.options.devBotId || '',\n\n // Inject configuration so it's available at module load time\n ...(this.options.configuration && {\n ADK_CONFIGURATION: JSON.stringify(this.options.configuration),\n }),\n\n WORKER_MODE: 'true',\n WORKER_LIFETIME_MS: process.env.WORKER_LIFETIME_MS || '120000', // Default 2 minutes\n\n ADK_DIRECTORY: join(botPath, '..'),\n AGENT_DIRECTORY: this.options.agentPath,\n // Enable source maps for better debugging support\n NODE_OPTIONS: `${process.env.NODE_OPTIONS || ''} --enable-source-maps`.trim(),\n },\n stdio: ['ignore', 'pipe', 'pipe'],\n })\n\n // Capture stdout\n if (this.childProcess.stdout) {\n this.childProcess.stdout.on('data', (data: Buffer) => {\n const text = data.toString()\n this.parseOutput(text)\n this.emit('stdout', text)\n })\n }\n\n // Capture stderr\n if (this.childProcess.stderr) {\n this.childProcess.stderr.on('data', (data: Buffer) => {\n const text = data.toString()\n\n // Track stderr lines separately (keep last N lines)\n const newLines = text.split('\\n').filter((line) => line.trim())\n this.stderrLines.push(...newLines)\n if (this.stderrLines.length > this.MAX_STDERR_LINES) {\n this.stderrLines = this.stderrLines.slice(-this.MAX_STDERR_LINES)\n }\n\n // Check for fatal errors in stderr\n const lowerText = text.toLowerCase()\n let fatalError: string | null = null\n\n if (lowerText.includes('eaddrinuse') || lowerText.includes('address already in use')) {\n fatalError = `Port ${port} is already in use. Please stop the other process or use a different port.`\n } else if (lowerText.includes('eacces') || lowerText.includes('permission denied')) {\n fatalError = 'Permission denied. You may need administrator privileges.'\n } else if (lowerText.includes('econnrefused') || lowerText.includes('connection refused')) {\n fatalError = 'Connection refused. The Botpress API may be unavailable.'\n }\n\n // If we detected a fatal error, emit it and kill the process\n if (fatalError) {\n const errorObj = {\n exitCode: 1,\n stderr: this.stderrLines.join('\\n'),\n message: fatalError,\n }\n this.emit('error', errorObj)\n\n // Kill the process\n if (this.childProcess) {\n this.childProcess.kill('SIGTERM')\n }\n }\n\n // Parse stderr as well (some status messages might be there)\n this.parseOutput(text)\n this.emit('stderr', text)\n })\n }\n\n // Handle process exit\n this.childProcess.then(\n () => {\n // Process exited normally\n },\n (error: any) => {\n if (this.killed) {\n return\n }\n\n // Build error message with stderr\n let errorMessage = error.message || 'Process exited with error'\n if (this.stderrLines.length > 0) {\n errorMessage += `\\n\\nLast ${this.stderrLines.length} lines of stderr:\\n${this.stderrLines.join('\\n')}`\n }\n\n const errorObj = {\n exitCode: error.exitCode ?? 1,\n stderr: this.stderrLines.join('\\n'),\n message: errorMessage,\n }\n\n this.emit('error', errorObj)\n }\n )\n }\n\n private parseOutput(text: string): void {\n const now = Date.now()\n const lowerText = text.toLowerCase()\n\n // Parse status changes and emit progress events\n if (lowerText.includes('generating') && lowerText.includes('typing')) {\n const event: BpDevProgressEvent = {\n type: 'generating',\n startTime: now,\n }\n this.progressEvents.set('generating', event)\n this.emit('progress', event)\n } else if (lowerText.includes('bundling') && lowerText.includes('bot')) {\n // End generating phase\n const generatingEvent = this.progressEvents.get('generating')\n if (generatingEvent && generatingEvent.type === 'generating' && !generatingEvent.endTime) {\n const updatedEvent: BpDevProgressEvent = {\n ...generatingEvent,\n endTime: now,\n }\n this.progressEvents.set('generating', updatedEvent)\n this.emit('progress', updatedEvent)\n }\n\n // Start bundling phase\n const event: BpDevProgressEvent = {\n type: 'bundling',\n startTime: now,\n }\n this.progressEvents.set('bundling', event)\n this.emit('progress', event)\n } else if (lowerText.includes('deploying') && lowerText.includes('dev')) {\n // End bundling phase\n const bundlingEvent = this.progressEvents.get('bundling')\n if (bundlingEvent && bundlingEvent.type === 'bundling' && !bundlingEvent.endTime) {\n const updatedEvent: BpDevProgressEvent = {\n ...bundlingEvent,\n endTime: now,\n }\n this.progressEvents.set('bundling', updatedEvent)\n this.emit('progress', updatedEvent)\n }\n\n // Start deploying phase\n const event: BpDevProgressEvent = {\n type: 'deploying',\n startTime: now,\n }\n this.progressEvents.set('deploying', event)\n this.emit('progress', event)\n }\n\n // Parse build time\n const buildTimeMatch = text.match(/build\\s+completed\\s+in\\s+(\\d+)\\s*ms/i)\n if (buildTimeMatch && buildTimeMatch[1]) {\n const bundlingEvent = this.progressEvents.get('bundling')\n if (bundlingEvent && bundlingEvent.type === 'bundling') {\n const updatedEvent: BpDevProgressEvent = {\n ...bundlingEvent,\n data: {\n buildTime: parseInt(buildTimeMatch[1], 10),\n },\n }\n this.progressEvents.set('bundling', updatedEvent)\n this.emit('progress', updatedEvent)\n }\n }\n\n // Parse bot deployment info\n const deployMatch = text.match(\n /dev\\s+bot\\s+deployed\\s+with\\s+id\\s+[\"']?([a-f0-9-]+)[\"']?\\s+at\\s+[\"']?(https?:\\/\\/[^\\s\"']+)[\"']?/i\n )\n if (deployMatch && deployMatch[1] && deployMatch[2]) {\n // End deploying phase\n const deployingEvent = this.progressEvents.get('deploying')\n if (deployingEvent && deployingEvent.type === 'deploying' && !deployingEvent.endTime) {\n const updatedEvent: BpDevProgressEvent = {\n ...deployingEvent,\n endTime: now,\n data: {\n botId: deployMatch[1],\n tunnelUrl: deployMatch[2],\n },\n }\n this.progressEvents.set('deploying', updatedEvent)\n this.emit('progress', updatedEvent)\n }\n }\n\n // Parse listening status\n const listeningMatch = text.match(/listening\\s+on\\s+port\\s+(\\d+)/i)\n if (listeningMatch && listeningMatch[1]) {\n const port = parseInt(listeningMatch[1], 10)\n const event: BpDevProgressEvent = {\n type: 'listening',\n startTime: now,\n data: {\n port,\n },\n }\n this.progressEvents.set('listening', event)\n this.emit('progress', event)\n\n // Optimize source map after dev server is listening\n this.optimizeSourceMapIfExists().catch(() => {\n // Silently ignore source map optimization errors\n })\n }\n }\n\n private async optimizeSourceMapIfExists(): Promise<void> {\n const { botPath } = this.options\n const sourceMapPath = join(botPath, '.botpress', 'dist', 'index.cjs.map')\n\n try {\n // Check if source map exists\n await access(sourceMapPath)\n\n // Get the agent's src directory (parent of botPath)\n const agentSrcPath = join(botPath, '..', '..', 'src')\n\n // Optimize the source map\n await optimizeSourceMap({\n sourceMapPath,\n agentSrcPath,\n })\n } catch {\n // Source map doesn't exist or optimization failed - not critical\n }\n }\n\n kill(signal: NodeJS.Signals = 'SIGTERM'): void {\n this.killed = true\n if (this.childProcess) {\n this.childProcess.kill(signal)\n }\n }\n\n async restart(): Promise<BpDevCommand> {\n this.kill('SIGTERM')\n // Wait a bit for the process to clean up\n await new Promise((resolve) => setTimeout(resolve, 1000))\n // Create new instance and start it\n const newCommand = new BpDevCommand(this.options)\n await newCommand.run()\n return newCommand\n }\n\n getProgressEvent(type: BpDevProgressEvent['type']): BpDevProgressEvent | undefined {\n return this.progressEvents.get(type)\n }\n\n getAllProgressEvents(): BpDevProgressEvent[] {\n return Array.from(this.progressEvents.values())\n }\n}\n",
|
|
23
|
+
"import { execa, type ResultPromise } from 'execa'\nimport { join } from 'path'\nimport { access } from 'fs/promises'\nimport { getBpCli } from './bp-cli.js'\nimport { BaseCommand } from './base-command.js'\nimport { optimizeSourceMap } from '../utils/source-map-optimizer.js'\n\nexport interface BpDevCommandOptions {\n port: string\n botPath: string\n agentPath: string\n workspaceId: string\n credentials: {\n token: string\n apiUrl: string\n }\n /** The dev bot ID if already known (from agent.json) */\n devBotId?: string\n sourceMap?: boolean\n /** Bot configuration to inject as environment variable */\n configuration?: Record<string, unknown>\n}\n\nexport type BpDevProgressEvent =\n | {\n type: 'generating'\n startTime: number\n endTime?: number\n }\n | {\n type: 'bundling'\n startTime: number\n endTime?: number\n data?: {\n buildTime: number\n }\n }\n | {\n type: 'deploying'\n startTime: number\n endTime?: number\n data?: {\n botId: string\n tunnelUrl: string\n }\n }\n | {\n type: 'listening'\n startTime: number\n data: {\n port: number\n }\n }\n\nexport class BpDevCommand extends BaseCommand<BpDevProgressEvent> {\n private childProcess: ResultPromise | null = null\n private killed = false\n private stderrLines: string[] = []\n private readonly MAX_STDERR_LINES = 50\n\n // Track progress events\n private progressEvents: Map<BpDevProgressEvent['type'], BpDevProgressEvent> = new Map()\n\n constructor(private options: BpDevCommandOptions) {\n super()\n }\n\n async run(): Promise<void> {\n const { port, botPath, workspaceId, credentials, sourceMap = true } = this.options\n\n // Get bp command path\n const { path: bpCommand } = getBpCli()\n\n const bpArgs = [\n 'dev',\n '--port',\n port,\n '--token',\n credentials.token,\n '--workspaceId',\n workspaceId,\n '--apiUrl',\n credentials.apiUrl,\n ]\n\n if (sourceMap) {\n bpArgs.push('--sourceMap')\n }\n\n this.childProcess = execa(bpCommand, bpArgs, {\n cwd: botPath,\n env: {\n ...process.env,\n TRACE_DIR: join(botPath, 'traces'),\n // Child process must use 'development' so the runtime initializes trace writers\n // (Environment.isDevelopment() gates span processor creation in tracing.ts).\n // The React 19 dev mode memory leak fix (NODE_ENV=production) is applied in the\n // parent CLI process only (cli.ts / adk-dev.tsx), not here.\n NODE_ENV: 'development',\n\n // force using \"node\" for LLMz engine\n // remove this when LLMz supports wasm (quickjs)\n VM_DRIVER: 'node',\n\n // in dev mode, we provide the user's PAT so the agent can access\n // restricted resources like adding new integrations\n ADK_LOCAL_PAT: credentials.token,\n\n // ADK runtime environment variables for client initialization\n ADK_TOKEN: credentials.token,\n ADK_API_URL: credentials.apiUrl,\n ADK_BOT_ID: this.options.devBotId || '',\n\n // Inject configuration so it's available at module load time\n ...(this.options.configuration && {\n ADK_CONFIGURATION: JSON.stringify(this.options.configuration),\n }),\n\n WORKER_MODE: 'true',\n WORKER_LIFETIME_MS: process.env.WORKER_LIFETIME_MS || '120000', // Default 2 minutes\n\n ADK_DIRECTORY: join(botPath, '..'),\n AGENT_DIRECTORY: this.options.agentPath,\n // Enable source maps for better debugging support\n NODE_OPTIONS: `${process.env.NODE_OPTIONS || ''} --enable-source-maps`.trim(),\n },\n stdio: ['ignore', 'pipe', 'pipe'],\n })\n\n // Capture stdout\n if (this.childProcess.stdout) {\n this.childProcess.stdout.on('data', (data: Buffer) => {\n const text = data.toString()\n if (text.includes('\"worker_stats\"')) {\n // Some chunks can contain both worker_stats and normal logs.\n // Parse only non-worker_stats lines to preserve progress events.\n const nonWorkerStatsText = text\n .split('\\n')\n .filter((line) => !line.includes('\"type\":\"worker_stats\"') && !line.includes('\"type\": \"worker_stats\"'))\n .join('\\n')\n\n if (nonWorkerStatsText.trim()) {\n this.parseOutput(nonWorkerStatsText)\n }\n } else {\n this.parseOutput(text)\n }\n this.emit('stdout', text)\n })\n }\n\n // Capture stderr\n if (this.childProcess.stderr) {\n this.childProcess.stderr.on('data', (data: Buffer) => {\n const text = data.toString()\n\n // Track stderr lines separately (keep last N lines)\n const newLines = text.split('\\n').filter((line) => line.trim())\n this.stderrLines.push(...newLines)\n if (this.stderrLines.length > this.MAX_STDERR_LINES) {\n this.stderrLines = this.stderrLines.slice(-this.MAX_STDERR_LINES)\n }\n\n // Check for fatal errors in stderr\n const lowerText = text.toLowerCase()\n let fatalError: string | null = null\n\n if (lowerText.includes('eaddrinuse') || lowerText.includes('address already in use')) {\n fatalError = `Port ${port} is already in use. Please stop the other process or use a different port.`\n } else if (lowerText.includes('eacces') || lowerText.includes('permission denied')) {\n fatalError = 'Permission denied. You may need administrator privileges.'\n } else if (lowerText.includes('econnrefused') || lowerText.includes('connection refused')) {\n fatalError = 'Connection refused. The Botpress API may be unavailable.'\n }\n\n // If we detected a fatal error, emit it and kill the process\n if (fatalError) {\n const errorObj = {\n exitCode: 1,\n stderr: this.stderrLines.join('\\n'),\n message: fatalError,\n }\n this.emit('error', errorObj)\n\n // Kill the process\n if (this.childProcess) {\n this.childProcess.kill('SIGTERM')\n }\n }\n\n // Parse stderr as well (some status messages might be there)\n this.parseOutput(text)\n this.emit('stderr', text)\n })\n }\n\n // Handle process exit\n this.childProcess.then(\n () => {\n // Process exited normally\n },\n (error: any) => {\n if (this.killed) {\n return\n }\n\n // Build error message with stderr\n let errorMessage = error.message || 'Process exited with error'\n if (this.stderrLines.length > 0) {\n errorMessage += `\\n\\nLast ${this.stderrLines.length} lines of stderr:\\n${this.stderrLines.join('\\n')}`\n }\n\n const errorObj = {\n exitCode: error.exitCode ?? 1,\n stderr: this.stderrLines.join('\\n'),\n message: errorMessage,\n }\n\n this.emit('error', errorObj)\n }\n )\n }\n\n private parseOutput(text: string): void {\n const now = Date.now()\n const lowerText = text.toLowerCase()\n\n // Parse status changes and emit progress events\n if (lowerText.includes('generating') && lowerText.includes('typing')) {\n const event: BpDevProgressEvent = {\n type: 'generating',\n startTime: now,\n }\n this.progressEvents.set('generating', event)\n this.emit('progress', event)\n } else if (lowerText.includes('bundling') && lowerText.includes('bot')) {\n // End generating phase\n const generatingEvent = this.progressEvents.get('generating')\n if (generatingEvent && generatingEvent.type === 'generating' && !generatingEvent.endTime) {\n const updatedEvent: BpDevProgressEvent = {\n ...generatingEvent,\n endTime: now,\n }\n this.progressEvents.set('generating', updatedEvent)\n this.emit('progress', updatedEvent)\n }\n\n // Start bundling phase\n const event: BpDevProgressEvent = {\n type: 'bundling',\n startTime: now,\n }\n this.progressEvents.set('bundling', event)\n this.emit('progress', event)\n } else if (lowerText.includes('deploying') && lowerText.includes('dev')) {\n // End bundling phase\n const bundlingEvent = this.progressEvents.get('bundling')\n if (bundlingEvent && bundlingEvent.type === 'bundling' && !bundlingEvent.endTime) {\n const updatedEvent: BpDevProgressEvent = {\n ...bundlingEvent,\n endTime: now,\n }\n this.progressEvents.set('bundling', updatedEvent)\n this.emit('progress', updatedEvent)\n }\n\n // Start deploying phase\n const event: BpDevProgressEvent = {\n type: 'deploying',\n startTime: now,\n }\n this.progressEvents.set('deploying', event)\n this.emit('progress', event)\n }\n\n // Parse build time\n const buildTimeMatch = text.match(/build\\s+completed\\s+in\\s+(\\d+)\\s*ms/i)\n if (buildTimeMatch && buildTimeMatch[1]) {\n const bundlingEvent = this.progressEvents.get('bundling')\n if (bundlingEvent && bundlingEvent.type === 'bundling') {\n const updatedEvent: BpDevProgressEvent = {\n ...bundlingEvent,\n data: {\n buildTime: parseInt(buildTimeMatch[1], 10),\n },\n }\n this.progressEvents.set('bundling', updatedEvent)\n this.emit('progress', updatedEvent)\n }\n }\n\n // Parse bot deployment info\n const deployMatch = text.match(\n /dev\\s+bot\\s+deployed\\s+with\\s+id\\s+[\"']?([a-f0-9-]+)[\"']?\\s+at\\s+[\"']?(https?:\\/\\/[^\\s\"']+)[\"']?/i\n )\n if (deployMatch && deployMatch[1] && deployMatch[2]) {\n // End deploying phase\n const deployingEvent = this.progressEvents.get('deploying')\n if (deployingEvent && deployingEvent.type === 'deploying' && !deployingEvent.endTime) {\n const updatedEvent: BpDevProgressEvent = {\n ...deployingEvent,\n endTime: now,\n data: {\n botId: deployMatch[1],\n tunnelUrl: deployMatch[2],\n },\n }\n this.progressEvents.set('deploying', updatedEvent)\n this.emit('progress', updatedEvent)\n }\n }\n\n // Parse listening status\n const listeningMatch = text.match(/listening\\s+on\\s+port\\s+(\\d+)/i)\n if (listeningMatch && listeningMatch[1]) {\n const port = parseInt(listeningMatch[1], 10)\n const event: BpDevProgressEvent = {\n type: 'listening',\n startTime: now,\n data: {\n port,\n },\n }\n this.progressEvents.set('listening', event)\n this.emit('progress', event)\n\n // Optimize source map after dev server is listening\n this.optimizeSourceMapIfExists().catch(() => {\n // Silently ignore source map optimization errors\n })\n }\n }\n\n private async optimizeSourceMapIfExists(): Promise<void> {\n const { botPath } = this.options\n const sourceMapPath = join(botPath, '.botpress', 'dist', 'index.cjs.map')\n\n try {\n // Check if source map exists\n await access(sourceMapPath)\n\n // Get the agent's src directory (parent of botPath)\n const agentSrcPath = join(botPath, '..', '..', 'src')\n\n // Optimize the source map\n await optimizeSourceMap({\n sourceMapPath,\n agentSrcPath,\n })\n } catch {\n // Source map doesn't exist or optimization failed - not critical\n }\n }\n\n kill(signal: NodeJS.Signals = 'SIGTERM'): void {\n this.killed = true\n if (this.childProcess) {\n this.childProcess.kill(signal)\n }\n }\n\n async restart(): Promise<BpDevCommand> {\n this.kill('SIGTERM')\n // Wait a bit for the process to clean up\n await new Promise((resolve) => setTimeout(resolve, 1000))\n // Create new instance and start it\n const newCommand = new BpDevCommand(this.options)\n await newCommand.run()\n return newCommand\n }\n\n getProgressEvent(type: BpDevProgressEvent['type']): BpDevProgressEvent | undefined {\n return this.progressEvents.get(type)\n }\n\n getAllProgressEvents(): BpDevProgressEvent[] {\n return Array.from(this.progressEvents.values())\n }\n}\n",
|
|
24
24
|
"import { execa, type ResultPromise } from 'execa'\nimport { getBpCli } from './bp-cli.js'\nimport { BaseCommand } from './base-command.js'\n\nexport interface BpChatCommandOptions {\n botId: string\n workspaceId: string\n credentials: {\n token: string\n apiUrl: string\n }\n projectPath?: string\n}\n\nexport class BpChatCommand extends BaseCommand<never> {\n private childProcess: ResultPromise | null = null\n\n constructor(private options: BpChatCommandOptions) {\n super()\n }\n\n async run(): Promise<void> {\n const { botId, workspaceId, credentials } = this.options\n\n // Get bp command path (uses bundled CLI)\n const { path: bpCommand } = getBpCli()\n\n const bpArgs = [\n 'chat',\n '--botId',\n botId,\n '--workspaceId',\n workspaceId,\n '--token',\n credentials.token,\n '--apiUrl',\n credentials.apiUrl,\n ]\n\n this.childProcess = execa(bpCommand, bpArgs, {\n stdio: 'inherit',\n })\n\n try {\n // Wait for the process to complete\n await this.childProcess\n } catch (error: any) {\n // Emit error in the expected format\n this.emit('error', {\n exitCode: error.exitCode || 1,\n stderr: error.stderr || '',\n message: error.message || 'Chat command failed',\n })\n throw error\n }\n }\n\n kill(signal?: NodeJS.Signals | number): void {\n if (this.childProcess) {\n this.childProcess.kill(signal)\n }\n }\n}\n",
|
|
25
25
|
"import { Client } from '@botpress/client'\nimport { auth } from '../auth/index.js'\n\ninterface WorkspaceInfo {\n id: string\n name: string\n fetchedAt: number\n}\n\nclass WorkspaceCache {\n private cache: Map<string, WorkspaceInfo> = new Map()\n private readonly CACHE_TTL = 60 * 60 * 1000 // 1 hour\n\n async getWorkspaceName(workspaceId: string): Promise<string | undefined> {\n // Check cache first\n const cached = this.cache.get(workspaceId)\n if (cached && Date.now() - cached.fetchedAt < this.CACHE_TTL) {\n return cached.name\n }\n\n try {\n // Get credentials to create client\n const credentials = await auth.getActiveCredentials()\n const client = new Client({\n apiUrl: credentials.apiUrl,\n token: credentials.token,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n\n // Fetch all workspaces and find the one with matching ID\n const { workspaces } = await client.listWorkspaces({})\n const workspace = workspaces.find((ws) => ws.id === workspaceId)\n\n if (!workspace) {\n return undefined\n }\n\n // Cache the result\n this.cache.set(workspaceId, {\n id: workspaceId,\n name: workspace.name,\n fetchedAt: Date.now(),\n })\n\n return workspace.name\n } catch (error) {\n console.error(`Failed to fetch workspace name for ${workspaceId}:`, error)\n return undefined\n }\n }\n\n clear(): void {\n this.cache.clear()\n }\n}\n\n// Export singleton instance\nexport const workspaceCache = new WorkspaceCache()\n",
|
|
26
26
|
"import { DateTime } from 'luxon'\n\nexport function getRelativeTime(date: string | Date): string {\n const dateTime = typeof date === 'string' ? DateTime.fromISO(date) : DateTime.fromJSDate(date)\n const now = DateTime.now()\n\n const diff = now.diff(dateTime, ['years', 'months', 'days', 'hours', 'minutes'])\n\n if (diff.years >= 1) {\n return `${Math.floor(diff.years)} year${Math.floor(diff.years) > 1 ? 's' : ''} ago`\n } else if (diff.months >= 1) {\n return `${Math.floor(diff.months)} month${Math.floor(diff.months) > 1 ? 's' : ''} ago`\n } else if (diff.days >= 1) {\n return `${Math.floor(diff.days)} day${Math.floor(diff.days) > 1 ? 's' : ''} ago`\n } else if (diff.hours >= 1) {\n return `${Math.floor(diff.hours)} hour${Math.floor(diff.hours) > 1 ? 's' : ''} ago`\n } else if (diff.minutes >= 1) {\n return `${Math.floor(diff.minutes)} minute${Math.floor(diff.minutes) > 1 ? 's' : ''} ago`\n } else {\n return 'just now'\n }\n}\n",
|
|
@@ -37,8 +37,9 @@
|
|
|
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",
|
|
39
39
|
"import { Project, SyntaxKind, PropertyAssignment } from 'ts-morph'\nimport * as path from 'path'\nimport type { Dependencies } from './types'\nimport { formatCode } from '../generators/utils'\n\n/**\n * ConfigWriter handles writing updates to agent.config.ts\n *\n * Note: For reading dependencies, use AgentProject.dependencies instead.\n * This class is only for surgical updates to the dependencies field.\n */\nexport class ConfigWriter {\n private configPath: string\n\n constructor(projectPath: string) {\n this.configPath = path.join(projectPath, 'agent.config.ts')\n }\n\n /**\n * Updates the dependencies field in agent.config.ts\n * Uses ts-morph to surgically update only the dependencies property\n * while preserving all other config fields (name, models, state, etc.)\n */\n async updateDependencies(dependencies: Dependencies): Promise<void> {\n const project = new Project()\n const sourceFile = project.addSourceFileAtPath(this.configPath)\n\n // Find the defineConfig() call\n const defineConfigCall = sourceFile.getDescendantsOfKind(SyntaxKind.CallExpression).find((call) => {\n const expression = call.getExpression()\n return expression.getText() === 'defineConfig'\n })\n\n if (!defineConfigCall) {\n throw new Error('Could not find defineConfig() call in agent.config.ts')\n }\n\n // Get the first argument (config object)\n const configArg = defineConfigCall.getArguments()[0]\n if (!configArg || !configArg.isKind(SyntaxKind.ObjectLiteralExpression)) {\n throw new Error('defineConfig() must have an object literal as its first argument')\n }\n\n const configObject = configArg.asKind(SyntaxKind.ObjectLiteralExpression)\n if (!configObject) {\n throw new Error('Could not find dependencies property in agent.config.ts')\n }\n\n // Find or create the dependencies property\n let dependenciesProperty = configObject.getProperty('dependencies') as PropertyAssignment | undefined\n\n if (dependenciesProperty) {\n // Update existing property\n dependenciesProperty.setInitializer(JSON.stringify(dependencies))\n } else {\n // Add new property at the end\n dependenciesProperty = configObject.addPropertyAssignment({\n name: 'dependencies',\n initializer: JSON.stringify(dependencies),\n })\n }\n\n // Format the entire source file to ensure consistent indentation\n sourceFile.formatText()\n\n // Apply Prettier formatting to respect project .prettierrc\n const content = sourceFile.getFullText()\n const formatted = await formatCode(content, this.configPath)\n sourceFile.replaceWithText(formatted)\n\n // Save the file\n await sourceFile.save()\n }\n}\n",
|
|
40
|
-
"import { Client, type Integration, type Bot } from '@botpress/client'\nimport { AgentProject } from '../agent-project/agent-project.js'\nimport { auth } from '../auth/index.js'\nimport { IntegrationManager } from './manager.js'\nimport type { ParsedIntegration } from './types.js'\n\nexport type IntegrationInstallStatus = 'enabled' | 'not_installed' | 'disabled'\nexport type IntegrationRegistrationStatus =\n | 'registered'\n | 'registration_pending'\n | 'registration_failed'\n | 'unregistration_pending'\n | 'unregistered'\n | 'unregistration_failed'\n\nexport interface IntegrationCheckResult {\n alias: string\n name: string\n\n // Current state (from bot)\n installStatus: IntegrationInstallStatus\n registrationStatus?: IntegrationRegistrationStatus\n installedVersion?: string\n currentConfigurationType?: string | null\n currentConfiguration?: Record<string, any>\n\n // Desired state (from agent.config.ts dependencies)\n desiredInstallStatus: IntegrationInstallStatus\n desiredVersion: string\n desiredIntegrationId?: string // The integration ID for the desired version\n desiredConfigurationType?: string | null\n desiredConfiguration?: Record<string, any>\n\n // Integration definition\n definition: Integration\n\n // Flags for easy checking\n needsInstall: boolean\n needsUpdate: boolean\n needsRemoval: boolean\n needsConfiguration: boolean\n hasError: boolean\n errorMessage?: string\n}\n\nexport class IntegrationChecker {\n private projectPath: string\n private client?: Client\n\n constructor(projectPath: string) {\n this.projectPath = projectPath\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = await auth.getActiveCredentials()\n const project = await AgentProject.load(this.projectPath)\n\n const workspaceId = project.agentInfo?.workspaceId || credentials.workspaceId\n\n if (!workspaceId) {\n throw new Error('No workspace ID found. Please login with \"adk login\"')\n }\n\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n }\n return this.client\n }\n\n /**\n * Fetch integration definition from Botpress API\n * Try private first, then public\n */\n private async fetchIntegrationDefinition(name: string, version: string): Promise<Integration> {\n const client = await this.getClient()\n\n // Try both private and public in parallel, prefer private\n const [privateResult, publicResult] = await Promise.allSettled([\n client.getIntegrationByName({ name, version }).then(({ integration }) => integration as Integration),\n client.getPublicIntegration({ name, version }).then(({ integration }) => integration as Integration),\n ])\n\n // Prefer private integration\n if (privateResult.status === 'fulfilled') {\n return privateResult.value\n }\n\n if (publicResult.status === 'fulfilled') {\n return publicResult.value\n }\n\n // Both failed\n throw new Error(\n `Failed to fetch integration ${name}@${version}: ${\n privateResult.status === 'rejected' ? privateResult.reason : 'Unknown error'\n }`\n )\n }\n\n /**\n * Check integration status for a specific bot\n */\n async checkIntegrations(botId: string): Promise<IntegrationCheckResult[]> {\n const client = await this.getClient()\n const project = await AgentProject.load(this.projectPath)\n\n // Load desired state from agent.config.ts dependencies\n const integrationManager = new IntegrationManager({\n workspaceId: project.agentInfo?.workspaceId,\n })\n const loadResult = await integrationManager.loadIntegrations(project.dependencies || { integrations: {} })\n\n if (loadResult.errors.length > 0) {\n throw new Error(`Failed to load integrations: ${loadResult.errors.map((e) => e.message).join(', ')}`)\n }\n\n // Get current bot state\n let bot: Bot\n try {\n const response = await client.getBot({ id: botId })\n bot = response.bot\n } catch (error) {\n throw new Error(`Failed to get bot: ${error instanceof Error ? error.message : String(error)}`)\n }\n\n const results: IntegrationCheckResult[] = []\n const installedIntegrations = bot.integrations || {}\n\n // Track which installed integrations we've processed\n const processedIntegrationIds = new Set<string>()\n\n // Process each integration from agent.config.ts dependencies\n for (const parsedIntegration of loadResult.integrations) {\n const result = await this.checkIntegration(parsedIntegration, installedIntegrations, processedIntegrationIds)\n results.push(result)\n }\n\n // Check for extra integrations that are installed but not in dependencies\n for (const [key, installedIntegration] of Object.entries(installedIntegrations)) {\n if (!processedIntegrationIds.has(installedIntegration.id)) {\n // This integration is installed but not in dependencies - should be removed\n // We need to fetch the full integration definition\n try {\n const integrationDef = await this.fetchIntegrationDefinition(\n installedIntegration.name,\n installedIntegration.version\n )\n\n results.push({\n alias: key,\n name: installedIntegration.name,\n installStatus: installedIntegration.enabled ? 'enabled' : 'disabled',\n registrationStatus: installedIntegration.status,\n installedVersion: installedIntegration.version,\n currentConfigurationType: installedIntegration.configurationType,\n currentConfiguration: installedIntegration.configuration,\n desiredInstallStatus: 'not_installed',\n desiredVersion: installedIntegration.version,\n definition: integrationDef,\n needsInstall: false,\n needsUpdate: false,\n needsRemoval: true,\n needsConfiguration: false,\n hasError: false,\n })\n } catch {\n // If we can't fetch the definition, skip this integration\n continue\n }\n }\n }\n\n return results\n }\n\n private async checkIntegration(\n parsedIntegration: ParsedIntegration,\n installedIntegrations: Record<string, any>,\n processedIntegrationIds: Set<string>\n ): Promise<IntegrationCheckResult> {\n const { alias, ref, enabled, configurationType, config, definition } = parsedIntegration\n\n if (!definition) {\n throw new Error(`Integration definition not found for ${alias}`)\n }\n\n // Find matching installed integration by alias first, then by name for backwards compatibility\n let installedIntegration: any = null\n\n // First, try to match by alias (exact key match) - this is the correct way for multi-integration setups\n if (installedIntegrations[alias]) {\n installedIntegration = installedIntegrations[alias]\n processedIntegrationIds.add(installedIntegration.id)\n } else {\n // Fallback: match by name for backwards compatibility with single-integration setups\n // where the key might be the integration name instead of an alias\n for (const [_key, installed] of Object.entries(installedIntegrations)) {\n // Compare by name, handling both workspace-scoped and public integrations\n // installed.name from API might be \"intercom\" while ref.fullName is \"sly/intercom\"\n // So we need to check both the full name and just the base name\n const matches =\n installed.name === ref.fullName || // Exact match (e.g., \"sly/intercom\" === \"sly/intercom\")\n installed.name === ref.name // Base name match (e.g., \"intercom\" === \"intercom\")\n\n if (matches) {\n installedIntegration = installed\n processedIntegrationIds.add(installed.id)\n break\n }\n }\n }\n\n // Determine desired install status\n const desiredInstallStatus: IntegrationInstallStatus = enabled === false ? 'disabled' : 'enabled'\n\n // Build result\n const result: IntegrationCheckResult = {\n alias,\n name: ref.fullName,\n installStatus: installedIntegration ? (installedIntegration.enabled ? 'enabled' : 'disabled') : 'not_installed',\n desiredInstallStatus,\n installedVersion: installedIntegration?.version,\n desiredVersion: ref.version,\n desiredIntegrationId: definition.id, // The integration ID for the desired version\n currentConfigurationType: installedIntegration?.configurationType,\n currentConfiguration: installedIntegration?.configuration,\n desiredConfigurationType: configurationType ?? null,\n desiredConfiguration: config,\n definition,\n needsInstall: false,\n needsUpdate: false,\n needsRemoval: false,\n needsConfiguration: false,\n hasError: false,\n }\n\n // Set registration status if installed\n if (installedIntegration) {\n result.registrationStatus = installedIntegration.status\n\n // Check for registration errors\n if (installedIntegration.status === 'registration_failed' && installedIntegration.statusReason) {\n result.hasError = true\n result.errorMessage = installedIntegration.statusReason\n }\n }\n\n // Determine what needs to be done\n if (!installedIntegration) {\n result.needsInstall = enabled !== false\n if (result.needsInstall && config) {\n result.needsConfiguration = true\n }\n } else {\n // Already installed - check if update needed\n if (installedIntegration.version !== ref.version) {\n result.needsUpdate = true\n }\n\n // Check if configuration type changed (only if explicitly specified in dependencies)\n if (configurationType !== undefined && configurationType !== installedIntegration.configurationType) {\n result.needsConfiguration = true\n }\n\n // Check if configuration changed (only if explicitly specified in dependencies)\n if (config !== undefined) {\n // Get the schema for the configuration type to know which fields to compare\n const configType = configurationType ?? installedIntegration.configurationType\n const schema =\n (configType && definition.configurations?.[configType]?.schema) ||\n definition.configurations?.['default']?.schema ||\n definition.configuration?.schema\n // Get schema properties (fields that should be compared)\n const schemaProperties = schema?.properties || {}\n\n // Check all keys from both current and desired config\n const allKeys = new Set([\n ...Object.keys(installedIntegration.configuration || {}),\n ...Object.keys(config || {}),\n ])\n\n const configsMatch = Array.from(allKeys).every((key) => {\n const currentValue = installedIntegration.configuration?.[key] ?? schemaProperties[key]?.default\n const desiredValue = config?.[key] ?? schemaProperties[key]?.default\n return JSON.stringify(currentValue) === JSON.stringify(desiredValue)\n })\n\n if (!configsMatch) {\n result.needsConfiguration = true\n }\n }\n\n if (enabled !== undefined && enabled !== installedIntegration.enabled) {\n if (enabled === false) {\n result.needsRemoval = true\n } else if (enabled === true && result.installStatus === 'disabled') {\n result.needsConfiguration = true\n }\n }\n }\n\n return result\n }\n}\n",
|
|
41
|
-
"import { Client } from '@botpress/client'\nimport {
|
|
40
|
+
"import { Client, type Integration, type Bot } from '@botpress/client'\nimport { AgentProject } from '../agent-project/agent-project.js'\nimport { auth } from '../auth/index.js'\nimport { configsMatch } from './config-utils.js'\nimport { IntegrationManager } from './manager.js'\nimport type { ParsedIntegration } from './types.js'\n\nexport type IntegrationInstallStatus = 'enabled' | 'not_installed' | 'disabled'\nexport type IntegrationRegistrationStatus =\n | 'registered'\n | 'registration_pending'\n | 'registration_failed'\n | 'unregistration_pending'\n | 'unregistered'\n | 'unregistration_failed'\n\nexport interface IntegrationCheckResult {\n alias: string\n name: string\n\n // Current state (from bot)\n installStatus: IntegrationInstallStatus\n registrationStatus?: IntegrationRegistrationStatus\n installedVersion?: string\n currentConfigurationType?: string | null\n currentConfiguration?: Record<string, any>\n\n // Desired state (from agent.config.ts dependencies)\n desiredInstallStatus: IntegrationInstallStatus\n desiredVersion: string\n desiredIntegrationId?: string // The integration ID for the desired version\n desiredConfigurationType?: string | null\n desiredConfiguration?: Record<string, any>\n\n // Integration definition\n definition: Integration\n\n // Flags for easy checking\n needsInstall: boolean\n needsUpdate: boolean\n needsRemoval: boolean\n needsConfiguration: boolean\n hasError: boolean\n errorMessage?: string\n}\n\nexport class IntegrationChecker {\n private projectPath: string\n private client?: Client\n\n constructor(projectPath: string) {\n this.projectPath = projectPath\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = await auth.getActiveCredentials()\n const project = await AgentProject.load(this.projectPath)\n\n const workspaceId = project.agentInfo?.workspaceId || credentials.workspaceId\n\n if (!workspaceId) {\n throw new Error('No workspace ID found. Please login with \"adk login\"')\n }\n\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n }\n return this.client\n }\n\n /**\n * Fetch integration definition from Botpress API\n * Try private first, then public\n */\n private async fetchIntegrationDefinition(name: string, version: string): Promise<Integration> {\n const client = await this.getClient()\n\n // Try both private and public in parallel, prefer private\n const [privateResult, publicResult] = await Promise.allSettled([\n client.getIntegrationByName({ name, version }).then(({ integration }) => integration as Integration),\n client.getPublicIntegration({ name, version }).then(({ integration }) => integration as Integration),\n ])\n\n // Prefer private integration\n if (privateResult.status === 'fulfilled') {\n return privateResult.value\n }\n\n if (publicResult.status === 'fulfilled') {\n return publicResult.value\n }\n\n // Both failed\n throw new Error(\n `Failed to fetch integration ${name}@${version}: ${\n privateResult.status === 'rejected' ? privateResult.reason : 'Unknown error'\n }`\n )\n }\n\n /**\n * Check integration status for a specific bot\n */\n async checkIntegrations(botId: string): Promise<IntegrationCheckResult[]> {\n const client = await this.getClient()\n const project = await AgentProject.load(this.projectPath)\n\n // Load desired state from agent.config.ts dependencies\n const integrationManager = new IntegrationManager({\n workspaceId: project.agentInfo?.workspaceId,\n })\n const loadResult = await integrationManager.loadIntegrations(project.dependencies || { integrations: {} })\n\n if (loadResult.errors.length > 0) {\n throw new Error(`Failed to load integrations: ${loadResult.errors.map((e) => e.message).join(', ')}`)\n }\n\n // Get current bot state\n let bot: Bot\n try {\n const response = await client.getBot({ id: botId })\n bot = response.bot\n } catch (error) {\n throw new Error(`Failed to get bot: ${error instanceof Error ? error.message : String(error)}`)\n }\n\n const results: IntegrationCheckResult[] = []\n const installedIntegrations = bot.integrations || {}\n\n // Track which installed integrations we've processed\n const processedIntegrationIds = new Set<string>()\n\n // Process each integration from agent.config.ts dependencies\n for (const parsedIntegration of loadResult.integrations) {\n const result = await this.checkIntegration(parsedIntegration, installedIntegrations, processedIntegrationIds)\n results.push(result)\n }\n\n // Check for extra integrations that are installed but not in dependencies\n for (const [key, installedIntegration] of Object.entries(installedIntegrations)) {\n if (!processedIntegrationIds.has(installedIntegration.id)) {\n // This integration is installed but not in dependencies - should be removed\n // We need to fetch the full integration definition\n try {\n const integrationDef = await this.fetchIntegrationDefinition(\n installedIntegration.name,\n installedIntegration.version\n )\n\n results.push({\n alias: key,\n name: installedIntegration.name,\n installStatus: installedIntegration.enabled ? 'enabled' : 'disabled',\n registrationStatus: installedIntegration.status,\n installedVersion: installedIntegration.version,\n currentConfigurationType: installedIntegration.configurationType,\n currentConfiguration: installedIntegration.configuration,\n desiredInstallStatus: 'not_installed',\n desiredVersion: installedIntegration.version,\n definition: integrationDef,\n needsInstall: false,\n needsUpdate: false,\n needsRemoval: true,\n needsConfiguration: false,\n hasError: false,\n })\n } catch {\n // If we can't fetch the definition, skip this integration\n continue\n }\n }\n }\n\n return results\n }\n\n private async checkIntegration(\n parsedIntegration: ParsedIntegration,\n installedIntegrations: Record<string, any>,\n processedIntegrationIds: Set<string>\n ): Promise<IntegrationCheckResult> {\n const { alias, ref, enabled, configurationType, config, definition } = parsedIntegration\n\n if (!definition) {\n throw new Error(`Integration definition not found for ${alias}`)\n }\n\n // Find matching installed integration by alias first, then by name for backwards compatibility\n let installedIntegration: any = null\n\n // First, try to match by alias (exact key match) - this is the correct way for multi-integration setups\n if (installedIntegrations[alias]) {\n installedIntegration = installedIntegrations[alias]\n processedIntegrationIds.add(installedIntegration.id)\n } else {\n // Fallback: match by name for backwards compatibility with single-integration setups\n // where the key might be the integration name instead of an alias\n for (const [_key, installed] of Object.entries(installedIntegrations)) {\n // Compare by name, handling both workspace-scoped and public integrations\n // installed.name from API might be \"intercom\" while ref.fullName is \"sly/intercom\"\n // So we need to check both the full name and just the base name\n const matches =\n installed.name === ref.fullName || // Exact match (e.g., \"sly/intercom\" === \"sly/intercom\")\n installed.name === ref.name // Base name match (e.g., \"intercom\" === \"intercom\")\n\n if (matches) {\n installedIntegration = installed\n processedIntegrationIds.add(installed.id)\n break\n }\n }\n }\n\n // Determine desired install status\n const desiredInstallStatus: IntegrationInstallStatus = enabled === false ? 'disabled' : 'enabled'\n\n // Build result\n const result: IntegrationCheckResult = {\n alias,\n name: ref.fullName,\n installStatus: installedIntegration ? (installedIntegration.enabled ? 'enabled' : 'disabled') : 'not_installed',\n desiredInstallStatus,\n installedVersion: installedIntegration?.version,\n desiredVersion: ref.version,\n desiredIntegrationId: definition.id, // The integration ID for the desired version\n currentConfigurationType: installedIntegration?.configurationType,\n currentConfiguration: installedIntegration?.configuration,\n desiredConfigurationType: configurationType ?? null,\n desiredConfiguration: config,\n definition,\n needsInstall: false,\n needsUpdate: false,\n needsRemoval: false,\n needsConfiguration: false,\n hasError: false,\n }\n\n // Set registration status if installed\n if (installedIntegration) {\n result.registrationStatus = installedIntegration.status\n\n // Check for registration errors\n if (installedIntegration.status === 'registration_failed' && installedIntegration.statusReason) {\n result.hasError = true\n result.errorMessage = installedIntegration.statusReason\n }\n }\n\n // Determine what needs to be done\n if (!installedIntegration) {\n result.needsInstall = enabled !== false\n if (result.needsInstall && config) {\n result.needsConfiguration = true\n }\n } else {\n // Already installed - check if update needed\n if (installedIntegration.version !== ref.version) {\n result.needsUpdate = true\n }\n\n // Check if configuration type changed (only if explicitly specified in dependencies)\n if (configurationType !== undefined && configurationType !== installedIntegration.configurationType) {\n result.needsConfiguration = true\n }\n\n // Check if configuration changed (only if explicitly specified in dependencies).\n // Only compare keys defined in local config — server-only keys (e.g. dashboard-set\n // secrets) are intentionally preserved and should not trigger drift detection.\n if (config !== undefined) {\n const configType = configurationType ?? installedIntegration.configurationType\n const schema =\n (configType && definition.configurations?.[configType]?.schema) ||\n definition.configurations?.['default']?.schema ||\n definition.configuration?.schema\n const schemaDefaults = Object.fromEntries(\n Object.entries(schema?.properties || {}).flatMap(([k, v]: [string, any]) =>\n v?.default !== undefined ? [[k, v.default]] : []\n )\n )\n\n if (!configsMatch(installedIntegration.configuration, config, schemaDefaults)) {\n result.needsConfiguration = true\n }\n }\n\n if (enabled !== undefined && enabled !== installedIntegration.enabled) {\n if (enabled === false) {\n result.needsRemoval = true\n } else if (enabled === true && result.installStatus === 'disabled') {\n result.needsConfiguration = true\n }\n }\n }\n\n return result\n }\n}\n",
|
|
41
|
+
"import { Client } from '@botpress/client'\nimport { auth } from '../auth/index.js'\nimport type { AgentProject } from '../agent-project/agent-project.js'\n\n/**\n * Merges integration configuration for API calls.\n * - If no local config is defined (undefined), preserves server-side config entirely.\n * - If local config is defined, merges it on top of server-side config (local wins per-key).\n */\nexport function mergeIntegrationConfig(\n current: Record<string, any> | undefined,\n desired: Record<string, any> | undefined\n): Record<string, any> {\n if (desired === undefined) {\n return current || {}\n }\n return { ...(current || {}), ...desired }\n}\n\n/**\n * Checks whether the local (desired) config matches the current (server) config.\n * Only compares keys present in `desired` — server-only keys are intentionally\n * preserved and do not count as drift. Falls back to schema defaults when a value\n * is missing on either side.\n */\nexport function configsMatch(\n current: Record<string, any> | undefined,\n desired: Record<string, any>,\n schemaDefaults: Record<string, any> = {}\n): boolean {\n return Object.keys(desired).every((key) => {\n const currentValue = current?.[key] ?? schemaDefaults[key]\n const desiredValue = desired[key] ?? schemaDefaults[key]\n return JSON.stringify(currentValue) === JSON.stringify(desiredValue)\n })\n}\n\nexport interface FetchServerConfigsResult {\n configs: Record<string, Record<string, any>>\n fetched: boolean\n skipped: boolean\n error?: string\n}\n\n/**\n * Fetches current integration configurations from the server for a given bot.\n * Prefers devId (for adk dev), falls back to botId if devId fetch fails (e.g. deleted dev bot).\n */\nexport async function fetchServerIntegrationConfigs(\n project: AgentProject\n): Promise<FetchServerConfigsResult> {\n const { devId, botId } = project.agentInfo ?? {}\n const targetId = devId || botId\n if (!targetId) {\n return { configs: {}, fetched: false, skipped: true }\n }\n\n try {\n const credentials = await auth.getActiveCredentials()\n const client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId: project.agentInfo?.workspaceId || credentials.workspaceId,\n headers: { 'x-multiple-integrations': 'true' },\n })\n\n try {\n return await fetchBotConfigs(client, targetId)\n } catch (err) {\n // If devId fetch failed and a separate botId exists, fall back to production bot\n if (devId && botId && devId !== botId) {\n return await fetchBotConfigs(client, botId)\n }\n throw err\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err)\n return { configs: {}, fetched: false, skipped: false, error: message }\n }\n}\n\nasync function fetchBotConfigs(client: Client, botId: string): Promise<FetchServerConfigsResult> {\n const { bot } = await client.getBot({ id: botId })\n const configs: Record<string, Record<string, any>> = {}\n\n for (const [alias, integration] of Object.entries(bot.integrations || {})) {\n if (integration.configuration && Object.keys(integration.configuration).length > 0) {\n configs[alias] = integration.configuration\n }\n }\n\n return { configs, fetched: true, skipped: false }\n}\n",
|
|
42
|
+
"import { Client } from '@botpress/client'\nimport { AgentProject } from '../agent-project/agent-project.js'\nimport { auth } from '../auth/index.js'\nimport type { IntegrationCheckResult } from './checker.js'\nimport { mergeIntegrationConfig } from './config-utils.js'\n\n/**\n * Normalizes configuration type for API calls.\n * \"default\" is not a real configuration type - it's a placeholder used internally.\n * The API will reject it, so we convert it to undefined.\n */\nfunction normalizeConfigurationType(configType: string | null | undefined): string | undefined {\n if (configType === 'default' || configType === null) {\n return undefined\n }\n return configType\n}\n\nexport interface SyncSummary {\n installed: number\n updated: number\n removed: number\n failed: number\n errors: Array<{ alias: string; error: string }>\n}\n\nexport class IntegrationSyncManager {\n private projectPath: string\n private client?: Client\n\n constructor(projectPath: string) {\n this.projectPath = projectPath\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = await auth.getActiveCredentials()\n const project = await AgentProject.load(this.projectPath)\n\n const workspaceId = project.agentInfo?.workspaceId || credentials.workspaceId\n\n if (!workspaceId) {\n throw new Error('No workspace ID found. Please login with \"adk login\"')\n }\n\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n }\n return this.client\n }\n\n // Apply integration changes to a bot by installing, updating, or removing them\n async applySyncPlan(checkResults: IntegrationCheckResult[], botId: string): Promise<SyncSummary> {\n const summary: SyncSummary = {\n installed: 0,\n updated: 0,\n removed: 0,\n failed: 0,\n errors: [],\n }\n\n const client = await this.getClient()\n\n for (const result of checkResults) {\n if (result.needsRemoval && result.installStatus !== 'not_installed') {\n try {\n await client.updateBot({\n id: botId,\n integrations: {\n [result.alias]: null,\n },\n })\n summary.removed++\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error)\n summary.failed++\n summary.errors.push({ alias: result.alias, error: errorMsg })\n }\n } else if (result.needsInstall) {\n try {\n await client.updateBot({\n id: botId,\n integrations: {\n [result.alias]: {\n integrationId: result.desiredIntegrationId || result.definition.id,\n enabled: result.desiredInstallStatus === 'enabled',\n configuration: mergeIntegrationConfig(result.currentConfiguration, result.desiredConfiguration),\n configurationType: normalizeConfigurationType(result.desiredConfigurationType),\n },\n },\n })\n summary.installed++\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error)\n summary.failed++\n summary.errors.push({ alias: result.alias, error: errorMsg })\n }\n } else if ((result.needsUpdate || result.needsConfiguration) && result.installStatus !== 'not_installed') {\n try {\n await client.updateBot({\n id: botId,\n integrations: {\n [result.alias]: {\n integrationId: result.desiredIntegrationId || result.definition.id,\n enabled: result.desiredInstallStatus === 'enabled',\n configuration: mergeIntegrationConfig(result.currentConfiguration, result.desiredConfiguration),\n configurationType: normalizeConfigurationType(result.desiredConfigurationType),\n },\n },\n })\n summary.updated++\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error)\n summary.failed++\n summary.errors.push({ alias: result.alias, error: errorMsg })\n }\n }\n }\n\n return summary\n }\n}\n",
|
|
42
43
|
"import { Client } from '@botpress/client'\nimport { auth, Credentials } from '../auth/index.js'\nimport { Dependencies, ValidationError, ValidationErrorCode, ValidationSeverity } from '../agent-project/types.js'\nimport { InterfaceDefinition, ParsedInterface, InterfaceRef, InterfaceValidationResult } from './types.js'\nimport { EnhancedInterfaceCache } from './enhanced-cache.js'\nimport { InterfaceParser } from './parser.js'\nimport { ValidationErrors } from '../agent-project/validation-errors.js'\n\nexport interface InterfaceManagerOptions {\n noCache?: boolean\n workspaceId?: string\n credentials?: Credentials\n}\n\nexport class InterfaceManager {\n private cache: EnhancedInterfaceCache\n private options: InterfaceManagerOptions\n private client?: Client\n\n constructor(options: InterfaceManagerOptions = {}) {\n this.options = options\n this.cache = new EnhancedInterfaceCache(options.noCache || false)\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = this.options.credentials || (await auth.getActiveCredentials())\n\n if (!this.options.workspaceId && !credentials.workspaceId) {\n throw new Error('No workspace ID found in current profile. Please login again with \"adk login\"')\n }\n\n // Use apiUrl from credentials (which may come from agent.json via getAgentCredentials)\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId: this.options.workspaceId || credentials.workspaceId,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n }\n return this.client\n }\n\n async loadInterfaces(dependencies: Dependencies): Promise<{\n interfaces: ParsedInterface[]\n errors: ValidationError[]\n warnings: ValidationError[]\n }> {\n const errors: ValidationError[] = []\n const warnings: ValidationError[] = []\n\n // Parse interfaces from dependencies\n const parseResult = InterfaceParser.parseInterfaces(dependencies)\n const interfaces = parseResult.interfaces\n errors.push(...parseResult.errors)\n\n // Fetch interface definitions in parallel\n const fetchPromises = interfaces.map(async (intf) => {\n try {\n const definition = await this.fetchInterface(intf.ref)\n intf.definition = definition\n\n // Validate\n const validation = this.validateInterface(intf)\n intf.validationResult = validation\n\n if (!validation.valid) {\n validation.errors.forEach((msg) => {\n errors.push(ValidationErrors.warning(msg, 'agent.config.ts'))\n })\n }\n } catch (error) {\n if (error instanceof Error && error.message.includes('version')) {\n errors.push(ValidationErrors.unknownInterface(error.message))\n } else {\n errors.push(\n ValidationErrors.invalidDependenciesSyntax(`Unknown interface '${intf.alias}' (${intf.ref.fullName})`)\n )\n }\n }\n })\n\n await Promise.all(fetchPromises)\n\n return { interfaces, errors, warnings }\n }\n\n /**\n * Fetch interface definition from API or cache\n */\n public async fetchInterface(ref: InterfaceRef): Promise<InterfaceDefinition> {\n // Level 1: version resolution cache (name@version -> id + updatedAt)\n const cachedResolution = await this.cache.getResolution(ref.name, ref.version, ref.workspace)\n if (cachedResolution) {\n const cachedDefinition = await this.cache.getDefinition(cachedResolution.interfaceId, cachedResolution.updatedAt)\n if (cachedDefinition) {\n return cachedDefinition\n }\n }\n\n const client = await this.getClient()\n let interfaceResponse: { interface: InterfaceDefinition } | undefined\n let versionError: Error | null = null\n\n try {\n interfaceResponse = await client.getInterfaceByName({\n name: ref.name,\n version: ref.version,\n })\n } catch {\n try {\n interfaceResponse = await client.getPublicInterface({\n name: ref.name,\n version: ref.version,\n })\n } catch (publicError) {\n versionError = publicError as Error\n }\n }\n\n if (!interfaceResponse && versionError) {\n let latestVersion: string | null = null\n try {\n const latestPrivate = await client.getInterfaceByName({\n name: ref.name,\n version: 'latest',\n })\n latestVersion = latestPrivate.interface.version\n } catch {\n try {\n const latestPublic = await client.getPublicInterface({\n name: ref.name,\n version: 'latest',\n })\n latestVersion = latestPublic.interface.version\n } catch {\n const location = ref.workspace ? `workspace \"${ref.workspace}\"` : 'the official Botpress hub'\n throw new Error(`Interface \"${ref.name}\" does not exist in ${location}`)\n }\n }\n const location = ref.workspace ? `workspace \"${ref.workspace}\"` : 'Botpress'\n throw new Error(\n `Interface \"${ref.name}\" version \"${ref.version}\" not found in ${location}. Latest available version is \"${latestVersion}\"`\n )\n }\n\n const intf = interfaceResponse!.interface\n\n await this.cache.setResolution(ref.name, ref.version, ref.workspace, intf.id, intf.updatedAt)\n await this.cache.setDefinition(intf.id, intf.updatedAt, intf)\n return intf\n }\n\n /**\n * Convenience: parse and fetch from a dependency string like \"name@1.2.3\" or \"workspace/name@latest\"\n */\n public async getByDependencyString(dep: string): Promise<InterfaceDefinition> {\n // Reuse parser regex logic without duplicating\n const match = dep.match(/^(?:([^/]+)\\/)?([^@]+)@(.+)$/)\n if (!match) {\n throw new Error(\n `Invalid interface dependency string: ${dep}. Expected 'name@version' or 'workspace/name@version'`\n )\n }\n const [, workspace, name, version] = match\n return this.fetchInterface({\n workspace: workspace || undefined,\n name: name!,\n version: version!,\n fullName: workspace ? `${workspace}/${name}` : name!,\n })\n }\n\n private validateInterface(intf: ParsedInterface): InterfaceValidationResult {\n const errors: string[] = []\n const warnings: string[] = []\n\n if (!intf.definition) {\n errors.push(`Interface definition not found for ${intf.alias}`)\n return { valid: false, errors, warnings }\n }\n\n return { valid: errors.length === 0, errors, warnings }\n }\n\n async getCacheStats(): Promise<{ count: number; sizeBytes: number }> {\n const stats = await this.cache.getStats()\n return {\n count: stats.resolutions.count + stats.definitions.count,\n sizeBytes: stats.resolutions.sizeBytes + stats.definitions.sizeBytes,\n }\n }\n\n async clearCache(): Promise<void> {\n await this.cache.clear()\n }\n}\n",
|
|
43
44
|
"import fs from 'fs/promises'\nimport path from 'path'\nimport os from 'os'\nimport { InterfaceDefinition } from './types.js'\n\ninterface VersionResolution {\n interfaceId: string\n updatedAt: string\n cachedAt: string\n}\n\ninterface CachedDefinition {\n definition: InterfaceDefinition\n cachedAt: string\n}\n\nexport class EnhancedInterfaceCache {\n private cacheDir: string\n private resolutionsDir: string\n private definitionsDir: string\n private noCache: boolean\n\n constructor(noCache: boolean = false) {\n this.noCache = noCache\n this.cacheDir = path.join(os.homedir(), '.adk', 'cache', 'interfaces')\n this.resolutionsDir = path.join(this.cacheDir, 'resolutions')\n this.definitionsDir = path.join(this.cacheDir, 'definitions')\n }\n\n private async ensureCacheDirs(): Promise<void> {\n await fs.mkdir(this.resolutionsDir, { recursive: true })\n await fs.mkdir(this.definitionsDir, { recursive: true })\n }\n\n async getResolution(name: string, version: string, workspace?: string): Promise<VersionResolution | null> {\n if (this.noCache) return null\n try {\n const key = this.getResolutionKey(name, version, workspace)\n const cachePath = path.join(this.resolutionsDir, `${key}.json`)\n const data = await fs.readFile(cachePath, 'utf-8')\n const resolution: VersionResolution = JSON.parse(data)\n const cachedAt = new Date(resolution.cachedAt)\n const ageMinutes = (Date.now() - cachedAt.getTime()) / (1000 * 60)\n if (ageMinutes > 5) return null\n return resolution\n } catch {\n return null\n }\n }\n\n async setResolution(\n name: string,\n version: string,\n workspace: string | undefined,\n interfaceId: string,\n updatedAt: string\n ): Promise<void> {\n await this.ensureCacheDirs()\n const key = this.getResolutionKey(name, version, workspace)\n const cachePath = path.join(this.resolutionsDir, `${key}.json`)\n const resolution: VersionResolution = {\n interfaceId,\n updatedAt,\n cachedAt: new Date().toISOString(),\n }\n await fs.writeFile(cachePath, JSON.stringify(resolution, null, 2))\n }\n\n async getDefinition(interfaceId: string, updatedAt: string): Promise<InterfaceDefinition | null> {\n if (this.noCache) return null\n try {\n const key = this.getDefinitionKey(interfaceId, updatedAt)\n const cachePath = path.join(this.definitionsDir, `${key}.json`)\n const data = await fs.readFile(cachePath, 'utf-8')\n const cached: CachedDefinition = JSON.parse(data)\n return cached.definition\n } catch {\n return null\n }\n }\n\n async setDefinition(interfaceId: string, updatedAt: string, definition: InterfaceDefinition): Promise<void> {\n await this.ensureCacheDirs()\n const key = this.getDefinitionKey(interfaceId, updatedAt)\n const cachePath = path.join(this.definitionsDir, `${key}.json`)\n const cached: CachedDefinition = {\n definition,\n cachedAt: new Date().toISOString(),\n }\n await fs.writeFile(cachePath, JSON.stringify(cached, null, 2))\n }\n\n async clear(): Promise<void> {\n try {\n const resolutionFiles = await fs.readdir(this.resolutionsDir)\n await Promise.all(resolutionFiles.map((f) => fs.unlink(path.join(this.resolutionsDir, f))))\n const definitionFiles = await fs.readdir(this.definitionsDir)\n await Promise.all(definitionFiles.map((f) => fs.unlink(path.join(this.definitionsDir, f))))\n } catch {\n // ignore\n }\n }\n\n async getStats(): Promise<{\n resolutions: { count: number; sizeBytes: number }\n definitions: { count: number; sizeBytes: number }\n }> {\n const getDirectoryStats = async (dir: string) => {\n try {\n const files = await fs.readdir(dir)\n let totalSize = 0\n for (const file of files) {\n const stats = await fs.stat(path.join(dir, file))\n totalSize += stats.size\n }\n return { count: files.length, sizeBytes: totalSize }\n } catch {\n return { count: 0, sizeBytes: 0 }\n }\n }\n const [resolutions, definitions] = await Promise.all([\n getDirectoryStats(this.resolutionsDir),\n getDirectoryStats(this.definitionsDir),\n ])\n return { resolutions, definitions }\n }\n\n private getResolutionKey(name: string, version: string, workspace?: string): string {\n const prefix = workspace ? `${workspace}_` : ''\n const key = `${prefix}${name}_${version}`\n return key.replace(/[^a-zA-Z0-9_-]/g, '_')\n }\n\n private getDefinitionKey(interfaceId: string, updatedAt: string): string {\n const key = `${interfaceId}_${updatedAt}`\n return key.replace(/[^a-zA-Z0-9_-]/g, '_')\n }\n}\n",
|
|
44
45
|
"import { Dependencies, ValidationError } from '../agent-project/types.js'\nimport { ValidationErrors } from '../agent-project/validation-errors.js'\nimport { InterfaceRef, ParsedInterface } from './types.js'\nimport { BUILTIN_INTERFACES } from '../constants.js'\n\nexport class InterfaceParser {\n /**\n * Parse an interface version string into its components\n * Examples:\n * - \"translator@1.2.0\" -> { name: 'translator', version: '1.2.0', fullName: 'translator' }\n * - \"myworkspace/translator@latest\" -> { workspace: 'myworkspace', name: 'translator', version: 'latest', fullName: 'myworkspace/translator' }\n */\n static parseInterfaceRef(versionString: string): InterfaceRef {\n // Match pattern: [workspace/]name@version\n const match = versionString.match(/^(?:([^/]+)\\/)?([^@]+)@(.+)$/)\n\n if (!match) {\n throw new Error(\n `Invalid interface version format: ${versionString}. Expected format: 'name@version' or 'workspace/name@version'`\n )\n }\n\n const [, workspace, name, version] = match\n\n return {\n workspace: workspace || undefined,\n name: name!,\n version: version!,\n fullName: workspace ? `${workspace}/${name}` : name!,\n }\n }\n\n /**\n * Get built-in interfaces (hard-coded constants)\n * The dependencies parameter is kept for API compatibility but not used\n */\n static parseInterfaces(_dependencies: Dependencies): {\n interfaces: ParsedInterface[]\n errors: ValidationError[]\n } {\n const interfaces: ParsedInterface[] = []\n const errors: ValidationError[] = []\n\n for (const [alias, versionString] of Object.entries(BUILTIN_INTERFACES)) {\n try {\n // Parse the interface reference\n const ref = this.parseInterfaceRef(versionString)\n\n // Validate version format\n if (!this.isValidVersion(ref.version)) {\n errors.push(ValidationErrors.invalidVersionFormat(alias, ref.version))\n }\n\n interfaces.push({ alias, ref, config: undefined })\n } catch (error) {\n errors.push(\n ValidationErrors.invalidDependenciesSyntax(\n `Invalid interface '${alias}': ${error instanceof Error ? error.message : String(error)}`\n )\n )\n }\n }\n\n return { interfaces, errors }\n }\n\n /**\n * Validate version format (must be exact semver or \"latest\")\n */\n private static isValidVersion(version: string): boolean {\n if (version === 'latest') return true\n const semverPattern = /^(\\d+)\\.(\\d+)\\.(\\d+)(-[\\w.]+)?(\\+[\\w.]+)?$/\n return semverPattern.test(version)\n }\n}\n",
|
|
@@ -52,7 +53,7 @@
|
|
|
52
53
|
"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",
|
|
53
54
|
"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",
|
|
54
55
|
"export function getIntegrationAlias(integrationName: string) {\n return integrationName.replace(/\\//g, '__').replace(/-/g, '_').toLowerCase()\n}\n",
|
|
55
|
-
"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 { 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 { 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}\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\n constructor(options: BotGeneratorOptions) {\n this.projectPath = path.resolve(options.projectPath)\n this.outputPath = path.resolve(options.outputPath || path.join(this.projectPath, '.adk'))\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.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 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 private async generateBotDefinition(): Promise<void> {\n // Load the project to get integrations, interfaces, and triggers\n const project = await AgentProject.load(this.projectPath)\n const integrations = project.integrations\n\n // Generate imports for each integration and interface\n const imports: string[] = []\n const addIntegrations: string[] = []\n\n for (const integration of integrations.filter((i) => i.enabled)) {\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 const configData = config && Object.keys(config).length > 0 ? `, configuration: ${JSON.stringify(config)}` : ''\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",
|
|
56
|
+
"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 { 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 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.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.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 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 const serverConfigResult = await fetchServerIntegrationConfigs(project)\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",
|
|
56
57
|
"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",
|
|
57
58
|
"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",
|
|
58
59
|
"import { AgentProject } from '../agent-project/agent-project.js'\nimport { ADK_VERSION, formatCode } from './utils.js'\nimport { createFile } from '../utils/fs.js'\nimport path from 'path'\n\nexport async function 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",
|
|
@@ -71,13 +72,13 @@
|
|
|
71
72
|
"/**\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",
|
|
72
73
|
"import { readFileSync } from 'fs'\nimport { join } from 'path'\nimport type { KBSyncPlan } from './types.js'\nimport { KBSyncOperation } 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\nfunction pluralize(count: number, word: string): string {\n return `${count} ${word}${count !== 1 ? 's' : ''}`\n}\n\n/**\n * Plain text formatter for KB sync plan\n * CLI-agnostic - the CLI should apply colors/styling\n */\nexport class KBSyncFormatter {\n static format(plan: KBSyncPlan, kbsWithWebsites: string[] = []): 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('Knowledge Base Sync')\n sections.push('')\n\n if (!plan.hasChanges) {\n sections.push('✓ All knowledge bases are up to date.')\n sections.push('')\n return sections.join('\\n')\n }\n\n // Show KBs that need syncing\n const kbsToSync = plan.items.filter((i) => i.operation === KBSyncOperation.Sync)\n const kbsToSkip = plan.items.filter((i) => i.operation === KBSyncOperation.Skip)\n\n if (kbsToSync.length > 0) {\n sections.push('Knowledge Bases to Sync:\\n')\n\n for (const item of kbsToSync) {\n const icon = item.needsCreation ? '+' : '~'\n const action = item.needsCreation ? 'CREATE' : 'UPDATE'\n sections.push(` ${icon} ${item.kb.name}`)\n sections.push(` Action: ${action}`)\n sections.push(` Reason: ${item.reason}`)\n\n // Show per-source details\n if (item.sources && item.sources.length > 0) {\n sections.push(' Sources:')\n for (const source of item.sources) {\n if (source.needsSync) {\n const typeLabel = source.dsType === 'document' ? '📁' : '🌐'\n sections.push(` ${typeLabel} ${source.dsId} (${source.dsType})`)\n sections.push(` ${source.reason}`)\n\n // Show file changes for directory sources\n if (source.fileChanges) {\n const { added, modified, deleted } = source.fileChanges\n if (added.length > 0) {\n sections.push(` + ${pluralize(added.length, 'file')} to add`)\n }\n if (modified.length > 0) {\n sections.push(` ~ ${pluralize(modified.length, 'file')} to update`)\n }\n if (deleted.length > 0) {\n sections.push(` - ${pluralize(deleted.length, 'file')} to delete`)\n }\n }\n }\n }\n }\n sections.push('')\n }\n }\n\n if (kbsToSkip.length > 0) {\n sections.push('Knowledge Bases Already Up to Date:\\n')\n for (const item of kbsToSkip) {\n sections.push(` ✓ ${item.kb.name}`)\n }\n sections.push('')\n }\n\n // Website sources warning\n if (kbsWithWebsites.length > 0) {\n sections.push('⚠️ Website Sources')\n sections.push(' Website crawling will run asynchronously in the bot runtime.')\n sections.push(` KBs with websites: ${kbsWithWebsites.join(', ')}`)\n sections.push('')\n }\n\n // Summary\n sections.push('Summary of Actions\\n')\n\n if (plan.toSync > 0) {\n sections.push(` • Sync: ${pluralize(plan.toSync, 'knowledge base')}`)\n }\n if (plan.toSkip > 0) {\n sections.push(` • Skip: ${pluralize(plan.toSkip, 'knowledge base')} (up to date)`)\n }\n\n sections.push(` • Sources: ${plan.sourcesToSync} to sync, ${plan.sourcesToSkip} up to date`)\n sections.push('')\n\n return sections.join('\\n')\n }\n}\n",
|
|
73
74
|
"import { watch, readdirSync } from 'fs'\nimport { EventEmitter } from 'events'\nimport { join, relative } from 'path'\nimport { existsSync } from 'fs'\n\nexport type WatchChangeType = 'added' | 'modified' | 'deleted'\n\nexport interface FileChange {\n path: string\n type: WatchChangeType\n}\n\nexport interface FileChangeEvent {\n changes: FileChange[]\n timestamp: number\n}\n\nexport interface FileWatcherOptions {\n projectPath: string\n debounceMs?: number\n}\n\n/**\n * File watcher for ADK agent projects\n *\n * Watches the following patterns:\n * - src/**\\/*\n * - agent.config.ts\n * - package.json\n * - agent.json\n */\nexport class FileWatcher extends EventEmitter {\n private projectPath: string\n private watchers: Map<string, ReturnType<typeof watch>> = new Map()\n private fileStates: Map<string, number> = new Map()\n private debounceMs: number\n private debounceTimer: NodeJS.Timeout | null = null\n private pendingChanges: Map<string, FileChange> = new Map()\n\n constructor(options: FileWatcherOptions) {\n super()\n this.projectPath = options.projectPath\n this.debounceMs = options.debounceMs ?? 100\n }\n\n /**\n * Start watching files\n */\n start(): void {\n // Watch individual files at project root\n const rootFiles = ['package.json', 'agent.json', 'agent.config.ts']\n\n for (const file of rootFiles) {\n const filePath = join(this.projectPath, file)\n if (existsSync(filePath)) {\n this.watchFile(filePath)\n }\n }\n\n // Watch src directory recursively\n const srcPath = join(this.projectPath, 'src')\n if (existsSync(srcPath)) {\n // Initialize state for all existing files BEFORE setting up watchers\n this.initializeDirectoryState(srcPath)\n // Now set up the watcher\n this.watchDirectory(srcPath)\n }\n }\n\n /**\n * Initialize state for all files in a directory (recursive)\n */\n private initializeDirectoryState(dirPath: string): void {\n try {\n const entries = readdirSync(dirPath, { withFileTypes: true })\n\n for (const entry of entries) {\n const fullPath = join(dirPath, entry.name)\n if (entry.isDirectory()) {\n this.initializeDirectoryState(fullPath)\n } else if (entry.isFile()) {\n this.updateFileState(fullPath)\n }\n }\n } catch (error) {\n // Ignore errors during initialization\n }\n }\n\n /**\n * Watch a single file\n */\n private watchFile(filePath: string): void {\n if (this.watchers.has(filePath)) {\n return\n }\n\n try {\n // Initialize file state BEFORE setting up watcher to avoid triggering events\n this.updateFileState(filePath)\n\n const watcher = watch(filePath, { persistent: true }, () => {\n this.handleFileChange(filePath)\n })\n\n this.watchers.set(filePath, watcher)\n } catch (error) {\n console.warn(`Failed to watch file ${filePath}:`, error)\n }\n }\n\n /**\n * Watch a directory recursively\n */\n private watchDirectory(dirPath: string): void {\n if (this.watchers.has(dirPath)) {\n return\n }\n\n try {\n const watcher = watch(dirPath, { recursive: true, persistent: true }, (_eventType, filename) => {\n if (filename) {\n const fullPath = join(dirPath, filename)\n this.handleFileChange(fullPath)\n }\n })\n\n this.watchers.set(dirPath, watcher)\n } catch (error) {\n console.warn(`Failed to watch directory ${dirPath}:`, error)\n }\n }\n\n /**\n * Handle file change events - accumulates changes for batch emission\n */\n private handleFileChange(filePath: string): void {\n const fileExists = existsSync(filePath)\n const previousState = this.fileStates.get(filePath)\n\n let changeType: WatchChangeType\n\n if (!fileExists && previousState !== undefined) {\n // File was deleted\n changeType = 'deleted'\n this.fileStates.delete(filePath)\n } else if (fileExists && previousState === undefined) {\n // File was added\n changeType = 'added'\n this.updateFileState(filePath)\n } else if (fileExists) {\n // File was modified\n changeType = 'modified'\n this.updateFileState(filePath)\n } else {\n // Unknown state, skip\n return\n }\n\n const relativePath = relative(this.projectPath, filePath)\n\n // Add to pending changes (overwrites previous change for same file)\n this.pendingChanges.set(relativePath, {\n path: relativePath,\n type: changeType,\n })\n\n // Reset debounce timer\n if (this.debounceTimer) {\n clearTimeout(this.debounceTimer)\n }\n\n this.debounceTimer = setTimeout(() => {\n this.emitPendingChanges()\n }, this.debounceMs)\n }\n\n /**\n * Emit all pending changes as a single event\n */\n private emitPendingChanges(): void {\n if (this.pendingChanges.size === 0) {\n return\n }\n\n const changes = Array.from(this.pendingChanges.values())\n this.pendingChanges.clear()\n\n const event: FileChangeEvent = {\n changes,\n timestamp: Date.now(),\n }\n\n this.emit('change', event)\n }\n\n /**\n * Update internal file state tracking\n */\n private updateFileState(filePath: string): void {\n if (existsSync(filePath)) {\n this.fileStates.set(filePath, Date.now())\n }\n }\n\n /**\n * Stop watching all files\n */\n stop(): void {\n // Clear debounce timer\n if (this.debounceTimer) {\n clearTimeout(this.debounceTimer)\n this.debounceTimer = null\n }\n\n // Close all watchers\n for (const watcher of this.watchers.values()) {\n watcher.close()\n }\n this.watchers.clear()\n this.fileStates.clear()\n this.pendingChanges.clear()\n }\n\n /**\n * Type-safe event listener\n */\n on(event: 'change', listener: (event: FileChangeEvent) => void): this {\n return super.on(event, listener)\n }\n\n /**\n * Type-safe event emitter\n */\n emit(event: 'change', data: FileChangeEvent): boolean {\n return super.emit(event, data)\n }\n}\n",
|
|
74
|
-
"import { Client, type Bot } from '@botpress/client'\nimport { AgentProject } from '../agent-project/agent-project.js'\nimport { auth } from '../auth/index.js'\nimport { IntegrationChecker, type IntegrationCheckResult } from '../integrations/checker.js'\nimport { IntegrationSyncManager } from '../integrations/sync-manager.js'\nimport { generateBotProject } from '../bot-generator/generator.js'\nimport path from 'path'\nimport type {\n PreflightCheckResult,\n IntegrationDiff,\n ConfigFieldDiff,\n AgentConfigDiff,\n IntegrationConfiguration,\n ConfigurationSchema,\n SyncCallbacks,\n} from './types.js'\nimport { hasIntegrationChanges, pluralize } from './types.js'\nimport { AgentConfigSyncManager } from './agent-config-sync.js'\nimport { PreflightFormatter } from './formatter.js'\n\nexport interface PendingPreflightResult {\n result: PreflightCheckResult\n apply: (callbacks?: SyncCallbacks) => Promise<void>\n}\n\nexport class PreflightChecker {\n private projectPath: string\n private client?: Client\n private project?: AgentProject\n\n constructor(projectPath: string) {\n this.projectPath = projectPath\n }\n\n private async getProject(): Promise<AgentProject> {\n if (!this.project) {\n this.project = await AgentProject.load(this.projectPath)\n }\n return this.project\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 const workspaceId = project.agentInfo?.workspaceId || credentials.workspaceId\n\n if (!workspaceId) {\n throw new Error('No workspace ID found. Please login with \"adk login\"')\n }\n\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n }\n return this.client\n }\n\n private async performCheck(botId: string): Promise<{\n result: PreflightCheckResult\n integrationResults: IntegrationCheckResult[]\n }> {\n const client = await this.getClient()\n const project = await this.getProject()\n\n const { bot } = await client.getBot({ id: botId })\n const integrationChecker = new IntegrationChecker(this.projectPath)\n const integrationResults = await integrationChecker.checkIntegrations(botId)\n\n const integrationDiffs = this.buildIntegrationDiffs(integrationResults)\n const agentConfigDiffs = this.buildAgentConfigDiffs(project, bot)\n const hasChanges = hasIntegrationChanges(integrationDiffs) || agentConfigDiffs.length > 0\n\n return {\n result: {\n integrations: integrationDiffs,\n agentConfig: agentConfigDiffs,\n hasChanges,\n },\n integrationResults,\n }\n }\n\n private buildIntegrationDiffs(results: IntegrationCheckResult[]): {\n toInstall: IntegrationDiff[]\n toRemove: IntegrationDiff[]\n toUpdate: IntegrationDiff[]\n } {\n const toInstall: IntegrationDiff[] = []\n const toRemove: IntegrationDiff[] = []\n const toUpdate: IntegrationDiff[] = []\n\n for (const result of results) {\n if (result.desiredInstallStatus === 'disabled' && !result.needsRemoval && !result.needsConfiguration) {\n continue\n }\n\n if (result.needsInstall) {\n toInstall.push({\n alias: result.alias,\n name: result.name,\n version: result.desiredVersion,\n action: 'install',\n })\n } else if (result.needsRemoval) {\n toRemove.push({\n alias: result.alias,\n name: result.name,\n version: result.installedVersion || result.desiredVersion,\n action: 'remove',\n })\n } else if (result.needsUpdate || result.needsConfiguration) {\n const configChanges = this.buildConfigDiff(\n result.currentConfiguration || {},\n result.desiredConfiguration || {},\n result.definition.configuration?.schema?.properties || {}\n )\n\n toUpdate.push({\n alias: result.alias,\n name: result.name,\n version: result.desiredVersion,\n action: 'update',\n configChanges: configChanges.length > 0 ? configChanges : undefined,\n })\n }\n }\n\n return { toInstall, toRemove, toUpdate }\n }\n\n private buildConfigDiff(\n current: IntegrationConfiguration,\n desired: IntegrationConfiguration,\n schema: ConfigurationSchema\n ): ConfigFieldDiff[] {\n const diffs: ConfigFieldDiff[] = []\n const currentObj = current ?? {}\n const desiredObj = desired ?? {}\n const allKeys = new Set([...Object.keys(currentObj), ...Object.keys(desiredObj)])\n\n for (const key of allKeys) {\n const schemaDefault = schema.properties?.[key]?.default\n const currentValue = currentObj[key] ?? schemaDefault\n const desiredValue = desiredObj[key] ?? schemaDefault\n\n if (JSON.stringify(currentValue) !== JSON.stringify(desiredValue)) {\n const type = currentValue === undefined ? 'added' : desiredValue === undefined ? 'removed' : 'changed'\n\n diffs.push({\n field: key,\n oldValue: currentValue,\n newValue: desiredValue,\n type,\n })\n }\n }\n\n return diffs\n }\n\n private buildAgentConfigDiffs(project: AgentProject, bot: Bot): AgentConfigDiff[] {\n if (project.config?.name !== undefined && project.config.name !== bot.name) {\n return [\n {\n field: 'name',\n oldValue: bot.name,\n newValue: project.config.name,\n },\n ]\n }\n return []\n }\n\n async checkWithPendingApply(botId: string): Promise<PendingPreflightResult> {\n const { result, integrationResults } = await this.performCheck(botId)\n return {\n result,\n apply: (callbacks) => this.apply(botId, result, integrationResults, callbacks),\n }\n }\n\n async checkAndApply(\n botId: string,\n options: {\n shouldApply?: (result: PreflightCheckResult, formatted: string) => Promise<boolean>\n callbacks?: SyncCallbacks\n } = {}\n ): Promise<{ result: PreflightCheckResult; applied: boolean }> {\n const { result, integrationResults } = await this.performCheck(botId)\n\n if (!result.hasChanges) {\n return { result, applied: false }\n }\n\n if (options.shouldApply) {\n const formatted = PreflightFormatter.format(result)\n const approved = await options.shouldApply(result, formatted)\n if (!approved) {\n return { result, applied: false }\n }\n }\n\n await this.apply(botId, result, integrationResults, options.callbacks)\n return { result, applied: true }\n }\n\n private async apply(\n botId: string,\n result: PreflightCheckResult,\n integrationResults: IntegrationCheckResult[],\n options?: SyncCallbacks\n ): Promise<void> {\n const client = await this.getClient()\n\n if (hasIntegrationChanges(result.integrations)) {\n options?.onProgress?.('Syncing integrations to bot...')\n const integrationSyncer = new IntegrationSyncManager(this.projectPath)\n const syncResult = await integrationSyncer.applySyncPlan(integrationResults, botId)\n\n if (syncResult.installed > 0) {\n options?.onSuccess?.(`Installed ${pluralize(syncResult.installed, 'integration')}`)\n }\n if (syncResult.updated > 0) {\n options?.onSuccess?.(`Updated ${pluralize(syncResult.updated, 'integration')}`)\n }\n if (syncResult.removed > 0) {\n options?.onSuccess?.(`Removed ${pluralize(syncResult.removed, 'integration')}`)\n }\n if (syncResult.failed > 0) {\n options?.onError?.(`Failed to sync ${pluralize(syncResult.failed, 'integration')}`)\n for (const { alias, error } of syncResult.errors) {\n options?.onError?.(` ${alias}: ${error}`)\n }\n }\n }\n\n if (result.agentConfig.length > 0) {\n const configSyncer = new AgentConfigSyncManager(client)\n await configSyncer.syncFromChanges(botId, result.agentConfig, options)\n }\n\n options?.onProgress?.('Regenerating bot project...')\n await generateBotProject({\n projectPath: this.projectPath,\n outputPath: path.join(this.projectPath, '.adk', 'bot'),\n })\n options?.onSuccess?.('Bot project regenerated')\n }\n}\n",
|
|
75
|
+
"import { Client, type Bot } from '@botpress/client'\nimport { AgentProject } from '../agent-project/agent-project.js'\nimport { auth } from '../auth/index.js'\nimport { IntegrationChecker, type IntegrationCheckResult } from '../integrations/checker.js'\nimport { IntegrationSyncManager } from '../integrations/sync-manager.js'\nimport { generateBotProject } from '../bot-generator/generator.js'\nimport path from 'path'\nimport type {\n PreflightCheckResult,\n IntegrationDiff,\n ConfigFieldDiff,\n AgentConfigDiff,\n IntegrationConfiguration,\n ConfigurationSchema,\n SyncCallbacks,\n} from './types.js'\nimport { hasIntegrationChanges, pluralize } from './types.js'\nimport { AgentConfigSyncManager } from './agent-config-sync.js'\nimport { PreflightFormatter } from './formatter.js'\n\nexport interface PendingPreflightResult {\n result: PreflightCheckResult\n apply: (callbacks?: SyncCallbacks) => Promise<void>\n}\n\nexport class PreflightChecker {\n private projectPath: string\n private client?: Client\n private project?: AgentProject\n\n constructor(projectPath: string) {\n this.projectPath = projectPath\n }\n\n private async getProject(): Promise<AgentProject> {\n if (!this.project) {\n this.project = await AgentProject.load(this.projectPath)\n }\n return this.project\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 const workspaceId = project.agentInfo?.workspaceId || credentials.workspaceId\n\n if (!workspaceId) {\n throw new Error('No workspace ID found. Please login with \"adk login\"')\n }\n\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId,\n headers: {\n 'x-multiple-integrations': 'true',\n },\n })\n }\n return this.client\n }\n\n private async performCheck(botId: string): Promise<{\n result: PreflightCheckResult\n integrationResults: IntegrationCheckResult[]\n }> {\n const client = await this.getClient()\n const project = await this.getProject()\n\n const { bot } = await client.getBot({ id: botId })\n const integrationChecker = new IntegrationChecker(this.projectPath)\n const integrationResults = await integrationChecker.checkIntegrations(botId)\n\n const integrationDiffs = this.buildIntegrationDiffs(integrationResults)\n const agentConfigDiffs = this.buildAgentConfigDiffs(project, bot)\n const hasChanges = hasIntegrationChanges(integrationDiffs) || agentConfigDiffs.length > 0\n\n return {\n result: {\n integrations: integrationDiffs,\n agentConfig: agentConfigDiffs,\n hasChanges,\n },\n integrationResults,\n }\n }\n\n private buildIntegrationDiffs(results: IntegrationCheckResult[]): {\n toInstall: IntegrationDiff[]\n toRemove: IntegrationDiff[]\n toUpdate: IntegrationDiff[]\n } {\n const toInstall: IntegrationDiff[] = []\n const toRemove: IntegrationDiff[] = []\n const toUpdate: IntegrationDiff[] = []\n\n for (const result of results) {\n if (result.desiredInstallStatus === 'disabled' && !result.needsRemoval && !result.needsConfiguration) {\n continue\n }\n\n if (result.needsInstall) {\n toInstall.push({\n alias: result.alias,\n name: result.name,\n version: result.desiredVersion,\n action: 'install',\n })\n } else if (result.needsRemoval) {\n toRemove.push({\n alias: result.alias,\n name: result.name,\n version: result.installedVersion || result.desiredVersion,\n action: 'remove',\n })\n } else if (result.needsUpdate || result.needsConfiguration) {\n const configChanges = this.buildConfigDiff(\n result.currentConfiguration || {},\n result.desiredConfiguration || {},\n result.definition.configuration?.schema?.properties || {}\n )\n\n toUpdate.push({\n alias: result.alias,\n name: result.name,\n version: result.desiredVersion,\n action: 'update',\n configChanges: configChanges.length > 0 ? configChanges : undefined,\n })\n }\n }\n\n return { toInstall, toRemove, toUpdate }\n }\n\n private buildConfigDiff(\n current: IntegrationConfiguration,\n desired: IntegrationConfiguration,\n schema: ConfigurationSchema\n ): ConfigFieldDiff[] {\n const diffs: ConfigFieldDiff[] = []\n const currentObj = current ?? {}\n const desiredObj = desired ?? {}\n const allKeys = new Set([...Object.keys(currentObj), ...Object.keys(desiredObj)])\n\n for (const key of allKeys) {\n const schemaDefault = schema.properties?.[key]?.default\n const currentValue = currentObj[key] ?? schemaDefault\n const desiredValue = desiredObj[key] ?? schemaDefault\n\n if (JSON.stringify(currentValue) !== JSON.stringify(desiredValue)) {\n const type = currentValue === undefined ? 'added' : desiredValue === undefined ? 'removed' : 'changed'\n\n diffs.push({\n field: key,\n oldValue: currentValue,\n newValue: desiredValue,\n type,\n })\n }\n }\n\n return diffs\n }\n\n private buildAgentConfigDiffs(project: AgentProject, bot: Bot): AgentConfigDiff[] {\n if (project.config?.name !== undefined && project.config.name !== bot.name) {\n return [\n {\n field: 'name',\n oldValue: bot.name,\n newValue: project.config.name,\n },\n ]\n }\n return []\n }\n\n async checkWithPendingApply(botId: string): Promise<PendingPreflightResult> {\n const { result, integrationResults } = await this.performCheck(botId)\n return {\n result,\n apply: (callbacks) => this.apply(botId, result, integrationResults, callbacks),\n }\n }\n\n async checkAndApply(\n botId: string,\n options: {\n shouldApply?: (result: PreflightCheckResult, formatted: string) => Promise<boolean>\n callbacks?: SyncCallbacks\n } = {}\n ): Promise<{ result: PreflightCheckResult; applied: boolean }> {\n const { result, integrationResults } = await this.performCheck(botId)\n\n if (!result.hasChanges) {\n return { result, applied: false }\n }\n\n if (options.shouldApply) {\n const formatted = PreflightFormatter.format(result)\n const approved = await options.shouldApply(result, formatted)\n if (!approved) {\n return { result, applied: false }\n }\n }\n\n await this.apply(botId, result, integrationResults, options.callbacks)\n return { result, applied: true }\n }\n\n private async apply(\n botId: string,\n result: PreflightCheckResult,\n integrationResults: IntegrationCheckResult[],\n options?: SyncCallbacks\n ): Promise<void> {\n const client = await this.getClient()\n\n if (hasIntegrationChanges(result.integrations)) {\n options?.onProgress?.('Syncing integrations to bot...')\n const integrationSyncer = new IntegrationSyncManager(this.projectPath)\n const syncResult = await integrationSyncer.applySyncPlan(integrationResults, botId)\n\n if (syncResult.installed > 0) {\n options?.onSuccess?.(`Installed ${pluralize(syncResult.installed, 'integration')}`)\n }\n if (syncResult.updated > 0) {\n options?.onSuccess?.(`Updated ${pluralize(syncResult.updated, 'integration')}`)\n }\n if (syncResult.removed > 0) {\n options?.onSuccess?.(`Removed ${pluralize(syncResult.removed, 'integration')}`)\n }\n if (syncResult.failed > 0) {\n options?.onError?.(`Failed to sync ${pluralize(syncResult.failed, 'integration')}`)\n for (const { alias, error } of syncResult.errors) {\n options?.onError?.(` ${alias}: ${error}`)\n }\n }\n }\n\n if (result.agentConfig.length > 0) {\n const configSyncer = new AgentConfigSyncManager(client)\n await configSyncer.syncFromChanges(botId, result.agentConfig, options)\n }\n\n options?.onProgress?.('Regenerating bot project...')\n await generateBotProject({\n projectPath: this.projectPath,\n outputPath: path.join(this.projectPath, '.adk', 'bot'),\n callbacks: options,\n })\n options?.onSuccess?.('Bot project regenerated')\n }\n}\n",
|
|
75
76
|
"export type IntegrationConfiguration = Record<string, any> | undefined\n\nexport type ConfigurationSchema = {\n properties?: Record<\n string,\n {\n default?: any\n type?: string\n [key: string]: any\n }\n >\n [key: string]: any\n}\n\nexport interface IntegrationDiff {\n alias: string\n name: string\n version: string\n action: 'install' | 'remove' | 'update'\n configChanges?: ConfigFieldDiff[]\n}\n\nexport interface ConfigFieldDiff {\n field: string\n oldValue: any\n newValue: any\n type: 'added' | 'removed' | 'changed'\n}\n\nexport interface AgentConfigDiff {\n field: string\n oldValue: any\n newValue: any\n}\n\nexport interface PreflightCheckResult {\n integrations: {\n toInstall: IntegrationDiff[]\n toRemove: IntegrationDiff[]\n toUpdate: IntegrationDiff[]\n }\n agentConfig: AgentConfigDiff[]\n hasChanges: boolean\n}\n\nexport interface SyncCallbacks {\n onProgress?: (message: string) => void\n onSuccess?: (message: string) => void\n onError?: (message: string) => void\n}\n\nexport function hasIntegrationChanges(integrations: {\n toInstall: IntegrationDiff[]\n toRemove: IntegrationDiff[]\n toUpdate: IntegrationDiff[]\n}): boolean {\n return integrations.toInstall.length > 0 || integrations.toRemove.length > 0 || integrations.toUpdate.length > 0\n}\n\nexport function pluralize(count: number, word: string): string {\n return `${count} ${word}${count > 1 ? 's' : ''}`\n}\n",
|
|
76
77
|
"import { Client, type Bot } from '@botpress/client'\nimport type { AgentConfigDiff, SyncCallbacks } from './types.js'\nimport type { AgentConfig } from '../agent-project/types.js'\n\nexport interface AgentConfigSyncOptions extends SyncCallbacks {}\n\nexport class AgentConfigSyncManager {\n private client: Client\n\n constructor(client: Client) {\n this.client = client\n }\n\n private async performSync(botId: string, updates: Partial<Bot>, options?: AgentConfigSyncOptions): Promise<boolean> {\n if (Object.keys(updates).length === 0) {\n return false\n }\n\n try {\n options?.onProgress?.('Updating bot configuration...')\n await this.client.updateBot({ id: botId, ...updates })\n options?.onSuccess?.('Bot configuration updated')\n return true\n } catch (error: unknown) {\n const errorMsg = error instanceof Error ? error.message : String(error)\n options?.onError?.(`Failed to sync agent config: ${errorMsg}`)\n throw error\n }\n }\n\n // Sync agent config from project config object (used by adk-deploy)\n async syncFromConfig(\n botId: string,\n config: Partial<AgentConfig>,\n options?: AgentConfigSyncOptions\n ): Promise<boolean> {\n const updates: Partial<Bot> = {}\n\n if (config.name !== undefined) {\n updates.name = config.name\n }\n\n return this.performSync(botId, updates, options)\n }\n\n // Sync agent config from preflight changes (used by adk-dev)\n async syncFromChanges(\n botId: string,\n configChanges: AgentConfigDiff[],\n options?: AgentConfigSyncOptions\n ): Promise<boolean> {\n if (!configChanges || configChanges.length === 0) {\n return false\n }\n\n const updates: Partial<Bot> = {}\n\n for (const change of configChanges) {\n switch (change.field) {\n case 'name':\n updates.name = change.newValue\n break\n default:\n options?.onProgress?.(`Warning: Unknown config field '${change.field}' - skipping sync`)\n }\n }\n\n return this.performSync(botId, updates, options)\n }\n}\n",
|
|
77
78
|
"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",
|
|
78
79
|
"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"
|
|
79
80
|
],
|
|
80
|
-
"mappings": "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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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",
|
|
81
|
-
"debugId": "
|
|
81
|
+
"mappings": "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",
|
|
82
|
+
"debugId": "FB5A010697544F3364756E2164756E21",
|
|
82
83
|
"names": []
|
|
83
84
|
}
|