@botpress/adk 1.2.3 → 1.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-project/agent-project.d.ts +6 -0
- package/dist/agent-project/agent-project.d.ts.map +1 -1
- package/dist/bot-generator/generator.d.ts +1 -0
- package/dist/bot-generator/generator.d.ts.map +1 -1
- package/dist/generators/conversation-types.d.ts +3 -0
- package/dist/generators/conversation-types.d.ts.map +1 -0
- package/dist/generators/event-types.d.ts.map +1 -1
- package/dist/generators/integration-action-types.d.ts.map +1 -1
- package/dist/generators/workflow-types.d.ts.map +1 -1
- package/dist/index.js +199 -116
- package/dist/index.js.map +9 -8
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/auth/credentials.ts", "../src/utils/fs.ts", "../src/generators/utils.ts", "../src/generators/action-types.ts", "../src/generators/integration-action-types.ts", "../src/auth/index.ts", "../src/auth/service.ts", "../src/auth/bp-cli-import.ts", "../src/commands/base-command.ts", "../src/commands/bp-add-command.ts", "../src/commands/bp-cli.ts", "../src/commands/bp-build-command.ts", "../src/utils/source-map-optimizer.ts", "../src/commands/bp-deploy-command.ts", "../src/commands/bp-dev-command.ts", "../src/commands/bp-chat-command.ts", "../src/workspace/workspace-cache.ts", "../src/utils/time.ts", "../src/utils/json-ordering.ts", "../src/agent-project/agent-project.ts", "../src/assets/manager.ts", "../src/assets/cache.ts", "../src/const.ts", "../src/assets/updater.ts", "../src/integrations/manager.ts", "../src/integrations/enhanced-cache.ts", "../src/agent-project/dependencies-json.ts", "../src/agent-project/types.ts", "../src/agent-project/validation-errors.ts", "../src/integrations/cache.ts", "../src/integrations/operations.ts", "../src/integrations/hub-cache.ts", "../src/integrations/checker.ts", "../src/interfaces/manager.ts", "../src/interfaces/enhanced-cache.ts", "../src/constants.ts", "../src/interfaces/parser.ts", "../src/interfaces/operations.ts", "../src/agent-project/expand-exports.ts", "../src/agent-project/file-watcher.ts", "../src/agent-init/agent-project-generator.ts", "../src/generators/assets.ts", "../src/generators/integration-types.ts", "../src/utils/strings.ts", "../src/utils/ids.ts", "../src/bot-generator/generator.ts", "../src/generators/interface-types.ts", "../src/generators/table-types.ts", "../src/generators/trigger-types.ts", "../src/generators/state-types.ts", "../src/generators/workflow-types.ts", "../src/generators/event-types.ts", "../src/bot-generator/dev-id-manager.ts", "../src/bot-generator/integration-sync.ts", "../src/bot-generator/interface-sync.ts", "../src/tables/manager.ts", "../src/file-watcher/watcher.ts"],
|
|
3
|
+
"sources": ["../src/auth/credentials.ts", "../src/utils/fs.ts", "../src/generators/utils.ts", "../src/generators/action-types.ts", "../src/generators/integration-action-types.ts", "../src/auth/index.ts", "../src/auth/service.ts", "../src/auth/bp-cli-import.ts", "../src/commands/base-command.ts", "../src/commands/bp-add-command.ts", "../src/commands/bp-cli.ts", "../src/commands/bp-build-command.ts", "../src/utils/source-map-optimizer.ts", "../src/commands/bp-deploy-command.ts", "../src/commands/bp-dev-command.ts", "../src/commands/bp-chat-command.ts", "../src/workspace/workspace-cache.ts", "../src/utils/time.ts", "../src/utils/json-ordering.ts", "../src/agent-project/agent-project.ts", "../src/assets/manager.ts", "../src/assets/cache.ts", "../src/const.ts", "../src/assets/updater.ts", "../src/integrations/manager.ts", "../src/integrations/enhanced-cache.ts", "../src/agent-project/dependencies-json.ts", "../src/agent-project/types.ts", "../src/agent-project/validation-errors.ts", "../src/integrations/cache.ts", "../src/integrations/operations.ts", "../src/integrations/hub-cache.ts", "../src/integrations/checker.ts", "../src/interfaces/manager.ts", "../src/interfaces/enhanced-cache.ts", "../src/constants.ts", "../src/interfaces/parser.ts", "../src/interfaces/operations.ts", "../src/agent-project/expand-exports.ts", "../src/agent-project/file-watcher.ts", "../src/agent-init/agent-project-generator.ts", "../src/generators/assets.ts", "../src/generators/integration-types.ts", "../src/utils/strings.ts", "../src/utils/ids.ts", "../src/bot-generator/generator.ts", "../src/generators/interface-types.ts", "../src/generators/table-types.ts", "../src/generators/trigger-types.ts", "../src/generators/state-types.ts", "../src/generators/workflow-types.ts", "../src/generators/conversation-types.ts", "../src/generators/event-types.ts", "../src/bot-generator/dev-id-manager.ts", "../src/bot-generator/integration-sync.ts", "../src/bot-generator/interface-sync.ts", "../src/tables/manager.ts", "../src/file-watcher/watcher.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import fs from \"fs/promises\";\nimport path from \"path\";\nimport os from \"os\";\n\nexport interface Credentials {\n token: string;\n apiUrl: string;\n workspaceId?: string;\n workspaceName?: string;\n botId?: string;\n}\n\nexport interface Profile {\n name: string;\n credentials: Credentials;\n apiUrl: string;\n lastUsed: string;\n email?: string;\n displayName?: string;\n accountId?: string;\n createdAt?: string;\n}\n\nexport interface ProfileMetadata {\n lastUsed: string;\n accountId?: string;\n email?: string;\n displayName?: string;\n createdAt?: string;\n}\n\nexport interface CredentialsStore {\n profiles: Record<string, Credentials>;\n profileMetadata: Record<string, ProfileMetadata>;\n currentProfile: string;\n}\n\nexport class CredentialsManager {\n private credentialsPath: string;\n private configDir: string;\n\n constructor() {\n // Store credentials in ~/.adk/credentials\n this.configDir = path.join(os.homedir(), \".adk\");\n this.credentialsPath = path.join(this.configDir, \"credentials\");\n }\n\n private async ensureConfigDir(): Promise<void> {\n try {\n await fs.mkdir(this.configDir, { recursive: true });\n } catch {\n // Directory might already exist, that's fine\n }\n }\n\n private async readCredentials(): Promise<CredentialsStore> {\n try {\n const data = await fs.readFile(this.credentialsPath, \"utf-8\");\n return JSON.parse(data);\n } catch {\n // If file doesn't exist or is invalid, return empty store\n return {\n profiles: {},\n profileMetadata: {},\n currentProfile: \"default\",\n };\n }\n }\n\n private async writeCredentials(store: CredentialsStore): Promise<void> {\n await this.ensureConfigDir();\n await fs.writeFile(this.credentialsPath, JSON.stringify(store, null, 2));\n // Set restrictive permissions (read/write for owner only)\n await fs.chmod(this.credentialsPath, 0o600);\n }\n\n async saveCredentials(\n profileName: string,\n credentials: Credentials,\n userInfo?: Partial<ProfileMetadata>\n ): Promise<void> {\n const store = await this.readCredentials();\n store.profiles[profileName] = credentials;\n\n // Initialize metadata if it doesn't exist\n if (!store.profileMetadata) {\n store.profileMetadata = {};\n }\n\n // Update metadata with user info\n store.profileMetadata[profileName] = {\n lastUsed: new Date().toISOString(),\n ...userInfo,\n };\n\n // If this is the first profile, make it current\n if (Object.keys(store.profiles).length === 1) {\n store.currentProfile = profileName;\n }\n\n await this.writeCredentials(store);\n }\n\n async getCredentials(profileName?: string): Promise<Credentials | null> {\n const store = await this.readCredentials();\n const profile = profileName || store.currentProfile;\n\n if (!store.profiles[profile]) {\n return null;\n }\n\n return store.profiles[profile];\n }\n\n async listProfiles(): Promise<Profile[]> {\n const store = await this.readCredentials();\n\n // Initialize metadata if it doesn't exist\n if (!store.profileMetadata) {\n store.profileMetadata = {};\n }\n\n return Object.entries(store.profiles).map(([name, credentials]) => {\n const metadata = store.profileMetadata[name] || ({} as ProfileMetadata);\n return {\n name,\n credentials,\n apiUrl: credentials.apiUrl,\n lastUsed: metadata.lastUsed || new Date().toISOString(),\n email: metadata.email,\n displayName: metadata.displayName,\n accountId: metadata.accountId,\n createdAt: metadata.createdAt,\n };\n });\n }\n\n async getCurrentProfile(): Promise<string> {\n const store = await this.readCredentials();\n return store.currentProfile || \"default\";\n }\n\n async getCurrentProfileDetails(): Promise<Profile | null> {\n const store = await this.readCredentials();\n const currentProfileName = store.currentProfile || \"default\";\n\n if (!store.profiles[currentProfileName]) {\n return null;\n }\n\n const credentials = store.profiles[currentProfileName];\n const metadata =\n store.profileMetadata?.[currentProfileName] || ({} as ProfileMetadata);\n\n return {\n name: currentProfileName,\n credentials,\n apiUrl: credentials.apiUrl,\n lastUsed: metadata.lastUsed || new Date().toISOString(),\n email: metadata.email,\n displayName: metadata.displayName,\n accountId: metadata.accountId,\n createdAt: metadata.createdAt,\n };\n }\n\n async setCurrentProfile(profileName: string): Promise<void> {\n const store = await this.readCredentials();\n\n if (!store.profiles[profileName]) {\n throw new Error(`Profile '${profileName}' not found`);\n }\n\n // Initialize metadata if it doesn't exist\n if (!store.profileMetadata) {\n store.profileMetadata = {};\n }\n\n // Update last used time while preserving other metadata\n store.profileMetadata[profileName] = {\n ...store.profileMetadata[profileName], // Preserve existing metadata\n lastUsed: new Date().toISOString(),\n };\n\n store.currentProfile = profileName;\n await this.writeCredentials(store);\n }\n\n async deleteProfile(profileName: string): Promise<void> {\n const store = await this.readCredentials();\n\n if (!store.profiles[profileName]) {\n throw new Error(`Profile '${profileName}' not found`);\n }\n\n delete store.profiles[profileName];\n\n // If we deleted the current profile, switch to another one\n if (store.currentProfile === profileName) {\n const remainingProfiles = Object.keys(store.profiles);\n store.currentProfile =\n remainingProfiles.length > 0 ? remainingProfiles[0]! : \"default\";\n }\n\n await this.writeCredentials(store);\n }\n\n async getActiveCredentials(): Promise<Credentials> {\n // Check environment variable first\n const envProfile = process.env.ADK_PROFILE;\n\n const credentials = await this.getCredentials(envProfile);\n\n if (!credentials) {\n const profileName = envProfile || \"default\";\n throw new Error(\n `No credentials found for profile '${profileName}'. ` +\n `Please run 'adk login' to authenticate.`\n );\n }\n\n return credentials;\n }\n}\n",
|
|
6
6
|
"import { mkdir, writeFile } from \"fs/promises\";\nimport { parse } from \"path\";\n\nexport const createFile = async (path: string, content: string) => {\n const file = parse(path);\n await mkdir(file.dir, { recursive: true });\n await writeFile(path, content);\n};\n",
|
|
7
7
|
"import path from \"path\";\nimport { format, Options } from \"prettier\";\n\nexport const PRETTIER_CONFIG = {\n semi: true,\n singleQuote: false,\n tabWidth: 2,\n trailingComma: \"es5\",\n printWidth: 80,\n arrowParens: \"always\",\n // Disable certain features that might cause issues\n requirePragma: false,\n insertPragma: false,\n proseWrap: \"preserve\",\n} satisfies Partial<Options>;\n\nexport const formatCode = async (\n code: string,\n filepath?: string\n): Promise<string> => {\n try {\n // Skip formatting if code is empty or too large\n if (!code || code.length > 1_000_000) {\n return code;\n }\n\n // Try to format with Prettier\n return await format(code, {\n ...PRETTIER_CONFIG,\n filepath: filepath || \"file.ts\",\n });\n } catch (err) {\n console.warn(\"Failed to format code with Prettier:\", err);\n console.warn(\n code\n .slice(0, 1000)\n .split(\"\\n\")\n .map((l, i) => `\\t${i.toString().padStart(2, \"0\")} | ${l}`)\n .join(\"\\n\")\n );\n return code;\n }\n};\n\nexport const ADK_VERSION = \"1.0.0\"; // Update this to the current ADK version\n\nexport const relative = (from: string, to: string): string => {\n const fromDir = path.dirname(from);\n const relative = path.relative(fromDir, to);\n return relative.startsWith(\".\") ? relative : `./${relative}`;\n};\n\nexport function toMultilineComment(comment: string): string {\n // Handle empty or null comments\n if (!comment || comment.trim() === \"\") {\n return \"\";\n }\n\n // Escape potentially dangerous characters in the comment\n // Replace */ with *\\/ to prevent premature comment closure\n let safeComment = comment.replace(/\\*\\//g, \"*\\\\/\");\n\n // Split by newlines to handle multi-line comments\n // Handle all line ending types: \\r\\n (Windows), \\n (Unix), \\r (old Mac)\n const lines = safeComment.split(/\\r\\n|\\r|\\n/);\n\n // If single line and short enough, return inline comment\n if (lines.length === 1 && lines[0] && lines[0].length <= 60) {\n return `/** ${lines[0]} */`;\n }\n\n // For multi-line comments, format with proper indentation\n let result = \"/**\\n\";\n for (const line of lines) {\n // Trim trailing whitespace but preserve leading whitespace for formatting\n const trimmedLine = line.replace(/\\s+$/, \"\");\n result += ` * ${trimmedLine}\\n`;\n }\n result += \" */\";\n\n return result;\n}\n",
|
|
8
8
|
"import { AgentProject } from \"../agent-project/agent-project.js\";\nimport { ADK_VERSION, formatCode } from \"./utils.js\";\nimport { createFile } from \"../utils/fs.js\";\nimport path from \"path\";\n\nexport async function generateActionTypes(\n project: AgentProject\n): Promise<void> {\n // Generate action definitions\n const actionDefs: string[] = [];\n\n for (const action of project.actions) {\n // Skip actions with visibility: hidden from type generation\n if (action.definition.attributes?.visibility === \"hidden\") {\n continue;\n }\n\n try {\n // Import the action module to get the actual instance\n const absolutePath = path.join(project.path, action.path);\n // Bust module cache to ensure fresh action on type generation\n const actionModule = await import(`${absolutePath}?t=${Date.now()}`);\n const actionInstance =\n actionModule[action.export] || actionModule.default;\n\n if (actionInstance && actionInstance.input && actionInstance.output) {\n // Convert Zod schemas to TypeScript types\n const inputType = actionInstance.input.toTypescriptType\n ? actionInstance.input.toTypescriptType()\n : \"any\";\n const outputType = actionInstance.output.toTypescriptType\n ? actionInstance.output.toTypescriptType()\n : \"any\";\n\n actionDefs.push(` \"${action.definition.name}\": {\n input: ${inputType};\n output: ${outputType};\n };`);\n }\n } catch (error) {\n console.warn(\n `Warning: Could not process action ${action.definition.name}:`,\n error\n );\n actionDefs.push(` \"${action.definition.name}\": {\n input: any;\n output: any;\n };`);\n }\n }\n\n const content = `\n////////////////////////////////////////////////////////\n// DO NOT EDIT THIS FILE DIRECTLY\n// This file is auto-generated from the Botpress ADK\n// ADK Version: ${ADK_VERSION}\n// Generated at: ${new Date().toISOString()}\n////////////////////////////////////////////////////////\n\ndeclare module \"@botpress/runtime/_types/actions\" {\n\n export interface CallableAction<I, O> {\n (input: I): Promise<O>;\n asTool(): import(\"@botpress/runtime\").Autonomous.Tool;\n }\n\n export type BotActionDefinitions = {\n${actionDefs.join(\"\\n\")}\n };\n \n export type BotActions = {\n [K in keyof BotActionDefinitions]:\n CallableAction<BotActionDefinitions[K][\"input\"], BotActionDefinitions[K][\"output\"]>\n };\n}\n`;\n\n // Write to action-types.d.ts in the .adk folder\n const actionTypesPath = path.join(project.path, \".adk\", \"action-types.d.ts\");\n await createFile(actionTypesPath, await formatCode(content));\n}\n",
|
|
9
|
-
"import { AgentProject } from \"../agent-project/agent-project.js\";\nimport { ADK_VERSION, formatCode } from \"./utils.js\";\nimport { createFile } from \"../utils/fs.js\";\nimport path from \"path\";\n\nexport async function generateIntegrationActionTypes(\n project: AgentProject\n): Promise<void> {\n const content = `\n////////////////////////////////////////////////////////\n// DO NOT EDIT THIS FILE DIRECTLY\n// This file is auto-generated from the Botpress ADK\n// ADK Version: ${ADK_VERSION}\n// Generated at: ${new Date().toISOString()}\n////////////////////////////////////////////////////////\n\ndeclare module \"@botpress/runtime/_types/integration-actions\" {\n\nexport interface CallableAction<I, O> {\n (input: I): Promise<O>;\n asTool(): import(\"@botpress/runtime\").Autonomous.Tool;\n}\n\ntype Callable<T> = T extends { input: infer I; output: infer O }\n ? CallableAction<I, O>\n : never;\n\ntype IntegrationsMap<T> = {\n [Integration in keyof T]: T[Integration] extends { actions: infer Actions }\n ? {\n [Action in keyof Actions]: Callable<Actions[Action]>;\n }\n : never;\n};\n\nexport type IntegrationActions = IntegrationsMap<Integrations>;\n}\n`;\n\n // Write to integration-action-types.d.ts in the .adk folder\n const integrationActionTypesPath = path.join(\n project.path,\n \".adk\",\n \"integration-action-types.d.ts\"\n );\n await createFile(integrationActionTypesPath, await formatCode(content));\n}\n",
|
|
9
|
+
"import { AgentProject } from \"../agent-project/agent-project.js\";\nimport { ADK_VERSION, formatCode } from \"./utils.js\";\nimport { createFile } from \"../utils/fs.js\";\nimport path from \"path\";\n\nexport async function generateIntegrationActionTypes(\n project: AgentProject\n): Promise<void> {\n const content = `\n////////////////////////////////////////////////////////\n// DO NOT EDIT THIS FILE DIRECTLY\n// This file is auto-generated from the Botpress ADK\n// ADK Version: ${ADK_VERSION}\n// Generated at: ${new Date().toISOString()}\n////////////////////////////////////////////////////////\n\ntype Integrations = import(\"@botpress/runtime/_types/integrations\").Integrations;\n\ndeclare module \"@botpress/runtime/_types/integration-actions\" {\n\nexport interface CallableAction<I, O> {\n (input: I): Promise<O>;\n asTool(): import(\"@botpress/runtime\").Autonomous.Tool;\n}\n\ntype Callable<T> = T extends { input: infer I; output: infer O }\n ? CallableAction<I, O>\n : never;\n\ntype IntegrationsMap<T> = {\n [Integration in keyof T]: T[Integration] extends { actions: infer Actions }\n ? {\n [Action in keyof Actions]: Callable<Actions[Action]>;\n }\n : never;\n};\n\nexport type IntegrationActions = IntegrationsMap<Integrations>;\n}\n`;\n\n // Write to integration-action-types.d.ts in the .adk folder\n const integrationActionTypesPath = path.join(\n project.path,\n \".adk\",\n \"integration-action-types.d.ts\"\n );\n await createFile(integrationActionTypesPath, await formatCode(content));\n}\n",
|
|
10
10
|
"import { CredentialsManager, Credentials, Profile } from './credentials.js';\nimport { AuthService } from './service.js';\n\nexport interface LoginOptions {\n profile?: string;\n apiUrl?: string;\n}\n\nexport interface AuthAPI {\n login(token: string, options?: LoginOptions): Promise<void>;\n logout(profile?: string): Promise<void>;\n listProfiles(): Promise<Profile[]>;\n getCurrentProfile(): Promise<string>;\n getCurrentProfileDetails(): Promise<Profile | null>;\n setCurrentProfile(profileName: string): Promise<void>;\n getActiveCredentials(): Promise<Credentials>;\n validateToken(token: string, apiUrl?: string): Promise<boolean>;\n}\n\nclass Auth implements AuthAPI {\n private credentialsManager: CredentialsManager;\n\n constructor() {\n this.credentialsManager = new CredentialsManager();\n }\n\n async login(token: string, options: LoginOptions = {}): Promise<void> {\n const { profile = 'default', apiUrl = 'https://api.botpress.cloud' } = options;\n\n // Validate the token first\n const authService = new AuthService(apiUrl);\n const authResult = await authService.validateToken(token);\n\n // Save credentials with user info\n await this.credentialsManager.saveCredentials(profile, {\n token,\n apiUrl,\n workspaceId: authResult.workspaceId,\n workspaceName: authResult.workspaceName,\n botId: authResult.botId,\n }, {\n email: authResult.email,\n displayName: authResult.displayName,\n accountId: authResult.accountId,\n createdAt: authResult.createdAt,\n });\n }\n\n async logout(profile?: string): Promise<void> {\n if (profile) {\n await this.credentialsManager.deleteProfile(profile);\n } else {\n // Delete current profile\n const currentProfile = await this.credentialsManager.getCurrentProfile();\n await this.credentialsManager.deleteProfile(currentProfile);\n }\n }\n\n async listProfiles(): Promise<Profile[]> {\n return this.credentialsManager.listProfiles();\n }\n\n async getCurrentProfile(): Promise<string> {\n return this.credentialsManager.getCurrentProfile();\n }\n\n async getCurrentProfileDetails(): Promise<Profile | null> {\n return this.credentialsManager.getCurrentProfileDetails();\n }\n\n async setCurrentProfile(profileName: string): Promise<void> {\n return this.credentialsManager.setCurrentProfile(profileName);\n }\n\n async getActiveCredentials(): Promise<Credentials> {\n return this.credentialsManager.getActiveCredentials();\n }\n\n async validateToken(token: string, apiUrl?: string): Promise<boolean> {\n const authService = new AuthService(apiUrl);\n return authService.testConnection(token);\n }\n}\n\n// Export singleton instance\nexport const auth = new Auth();\n\n// Export types\nexport type { Credentials, Profile } from './credentials.js';\nexport type { AuthResult } from './service.js';\n\n// Export classes\nexport { CredentialsManager } from './credentials.js';\n\n// Export BP CLI importer\nexport { bpCliImporter } from './bp-cli-import.js';",
|
|
11
11
|
"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 });\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 (\n error.message.includes(\"401\") ||\n error.message.includes(\"Unauthorized\")\n ) {\n throw new Error(\n \"Invalid token. Please check your API token and try again.\"\n );\n }\n if (\n error.message.includes(\"Network\") ||\n error.message.includes(\"ENOTFOUND\")\n ) {\n throw new Error(\n `Unable to connect to ${this.apiUrl}. Please check your internet connection and API URL.`\n );\n }\n }\n\n // Re-throw the original error if it's not a known authentication error\n throw error;\n }\n }\n\n async testConnection(token: string): Promise<boolean> {\n try {\n await this.validateToken(token);\n return true;\n } catch {\n return false;\n }\n }\n}\n",
|
|
12
12
|
"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();",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"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 });\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();",
|
|
22
22
|
"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}",
|
|
23
23
|
"/**\n * Utility for ensuring consistent key ordering in JSON files\n */\n\n// Key ordering arrays for different file types\nexport const agentInfoKeyOrder = [\"botId\", \"workspaceId\", \"devId\"] as const;\nexport const dependenciesKeyOrder = [\"integrations\"] as const;\nexport const integrationKeyOrder = [\n \"version\",\n \"enabled\",\n \"configurationType\",\n \"connection\",\n \"config\",\n] as const;\n\n/**\n * Orders object keys according to a specified order, with unspecified keys at the end alphabetically\n */\nexport function orderKeys<T extends Record<string, any>>(\n obj: T,\n keyOrder?: readonly (keyof T)[]\n): T {\n const objKeys = Object.keys(obj);\n const orderedKeys: string[] = [];\n const remainingKeys: string[] = [];\n\n // Add keys in the specified order if they exist in the object\n if (keyOrder) {\n for (const key of keyOrder) {\n const keyStr = String(key);\n if (objKeys.includes(keyStr)) {\n orderedKeys.push(keyStr);\n }\n }\n }\n\n // Add remaining keys alphabetically\n for (const key of objKeys) {\n if (!orderedKeys.includes(key)) {\n remainingKeys.push(key);\n }\n }\n remainingKeys.sort();\n\n // Combine ordered keys with remaining keys\n const finalKeys = [...orderedKeys, ...remainingKeys];\n\n const result = {} as T;\n for (const key of finalKeys) {\n result[key as keyof T] = obj[key];\n }\n\n return result;\n}\n\n/**\n * Recursively orders keys in nested objects for integrations\n */\nexport function orderIntegrationKeys(\n integrations: Record<string, any>\n): Record<string, any> {\n const result: Record<string, any> = {};\n\n for (const [name, config] of Object.entries(integrations)) {\n if (\n typeof config === \"object\" &&\n config !== null &&\n !Array.isArray(config)\n ) {\n result[name] = orderKeys(config, integrationKeyOrder);\n } else {\n result[name] = config;\n }\n }\n\n return result;\n}\n\n/**\n * Stringifies JSON with consistent key ordering and formatting\n */\nexport function stringifyWithOrder<T extends Record<string, any>>(\n obj: T,\n keyOrder?: readonly (keyof T)[],\n space: number | string = 2\n): string {\n const orderedObj = orderKeys(obj, keyOrder);\n\n // Special handling for dependencies with nested integrations\n if (\"integrations\" in orderedObj) {\n const integrations = (orderedObj as any).integrations;\n if (integrations && typeof integrations === \"object\") {\n (orderedObj as any).integrations = orderIntegrationKeys(integrations);\n }\n }\n\n return JSON.stringify(orderedObj, null, space);\n}\n",
|
|
24
|
-
"import {\n BuiltInWorkflows,\n Errors,\n Primitives,\n setAdkCommand,\n} from \"@botpress/runtime/internal\";\n\nimport fs from \"fs/promises\";\nimport path from \"path\";\nimport {\n AssetsManager,\n AssetSyncOptions,\n AssetSyncPlan,\n AssetSyncResult,\n} from \"../assets/index.js\";\nimport { IntegrationManager } from \"../integrations/index.js\";\nimport { ParsedIntegration } from \"../integrations/types.js\";\nimport { InterfaceManager } from \"../interfaces/index.js\";\nimport { ParsedInterface } from \"../interfaces/types.js\";\n\nimport {\n agentInfoKeyOrder,\n stringifyWithOrder,\n} from \"../utils/json-ordering.js\";\nimport { expandExports } from \"./expand-exports.js\";\nimport {\n AgentConfig,\n AgentInfo,\n agentInfoSchema,\n Dependencies,\n dependenciesSchema,\n Integration,\n ProjectInfo,\n ProjectState,\n ValidationError,\n ValidationErrorCode,\n ValidationResult,\n ValidationSeverity,\n} from \"./types.js\";\nimport { ValidationErrors } from \"./validation-errors.js\";\n\nexport interface AgentProjectOptions {\n noCache?: boolean;\n adkCommand?: \"adk-dev\" | \"adk-build\" | \"adk-deploy\";\n}\n\ntype ConversationDefinition = Primitives.Definitions.ConversationDefinition;\ntype KnowledgeDefinition = Primitives.Definitions.KnowledgeDefinition;\ntype TriggerDefinition = Primitives.Definitions.TriggerDefinition;\ntype WorkflowDefinition = Primitives.Definitions.WorkflowDefinition;\ntype ActionDefinition = Primitives.Definitions.ActionDefinition;\ntype TableDefinition = Primitives.Definitions.TableDefinition;\ntype PrimitiveDefinition = Primitives.Definitions.PrimitiveDefinition;\n\nexport type PrimitiveReference<\n T extends PrimitiveDefinition = PrimitiveDefinition,\n> = {\n path: string;\n export: string;\n definition: T;\n};\n\nexport class AgentProject {\n private static _projectCache = new Map<string, AgentProject>();\n\n private _options: AgentProjectOptions;\n private _path: string;\n private _config?: AgentConfig;\n private _dependencies?: Dependencies;\n private _agentInfo?: AgentInfo;\n private _state: ProjectState = ProjectState.Unloaded;\n private _errors: ValidationError[] = [];\n private _warnings: ValidationError[] = [];\n\n private _lastBuildTime?: Date;\n private _integrations?: ParsedIntegration[];\n private _interfaces?: ParsedInterface[];\n private _integrationManager: IntegrationManager;\n private _interfaceManager: InterfaceManager;\n private _assetsManager: AssetsManager;\n private _conversations: PrimitiveReference<ConversationDefinition>[] = [];\n private _knowledge: PrimitiveReference<KnowledgeDefinition>[] = [];\n private _triggers: PrimitiveReference<TriggerDefinition>[] = [];\n private _workflows: PrimitiveReference<WorkflowDefinition>[] = [];\n private _actions: PrimitiveReference<ActionDefinition>[] = [];\n private _tables: PrimitiveReference<TableDefinition>[] = [];\n\n constructor(projectPath: string, options: AgentProjectOptions = {}) {\n this._options = options;\n this._path = path.resolve(projectPath);\n this._integrationManager = new IntegrationManager({\n noCache: options.noCache,\n });\n this._interfaceManager = new InterfaceManager({\n noCache: options.noCache,\n });\n this._assetsManager = new AssetsManager({\n projectPath: this._path,\n });\n }\n\n // Static factory methods\n static async load(\n projectPath: string,\n options: AgentProjectOptions = {}\n ): Promise<AgentProject> {\n const resolvedPath = path.resolve(projectPath);\n\n // Check cache unless explicitly disabled\n if (!options.noCache) {\n const cached = AgentProject._projectCache.get(resolvedPath);\n if (cached) {\n return cached;\n }\n }\n\n // Create and load new project\n const project = new AgentProject(resolvedPath, options);\n await project.reload();\n\n // Cache the project unless caching is disabled\n if (!options.noCache) {\n AgentProject._projectCache.set(resolvedPath, project);\n }\n\n return project;\n }\n\n // Static method to clear the cache\n static clearCache(): void {\n AgentProject._projectCache.clear();\n }\n\n // Static method to remove a specific project from cache\n static clearCacheForPath(projectPath: string): void {\n const resolvedPath = path.resolve(projectPath);\n AgentProject._projectCache.delete(resolvedPath);\n }\n\n // Public properties\n get path(): string {\n return this._path;\n }\n\n get conversations(): PrimitiveReference<ConversationDefinition>[] {\n return this._conversations;\n }\n\n get knowledge(): PrimitiveReference<KnowledgeDefinition>[] {\n return this._knowledge;\n }\n\n get triggers(): PrimitiveReference<TriggerDefinition>[] {\n return this._triggers;\n }\n\n get workflows(): PrimitiveReference<WorkflowDefinition>[] {\n return this._workflows;\n }\n\n get actions(): PrimitiveReference<ActionDefinition>[] {\n return this._actions;\n }\n\n get tables(): PrimitiveReference<TableDefinition>[] {\n return this._tables;\n }\n\n get config(): AgentConfig | undefined {\n return this._config;\n }\n\n get dependencies(): Dependencies | undefined {\n return this._dependencies;\n }\n\n get agentInfo(): AgentInfo | undefined {\n return this._agentInfo;\n }\n\n get state(): ProjectState {\n return this._state;\n }\n\n get info(): ProjectInfo {\n return {\n path: this._path,\n config: this._config!,\n dependencies: this._dependencies || {\n integrations: {},\n },\n agentInfo: this._agentInfo,\n state: this._state,\n lastBuildTime: this._lastBuildTime,\n errors: [...this._errors],\n warnings: [...this._warnings],\n errorCount: this._errors.filter(\n (e) => e.severity === ValidationSeverity.ERROR\n ).length,\n warningCount: this._warnings.filter(\n (e) => e.severity === ValidationSeverity.WARNING\n ).length,\n infoCount: [...this._errors, ...this._warnings].filter(\n (e) => e.severity === ValidationSeverity.INFO\n ).length,\n };\n }\n\n // Core methods\n async reload(): Promise<void> {\n this._state = ProjectState.Loading;\n\n try {\n // Clear previous state\n this._conversations = [];\n this._knowledge = [];\n this._triggers = [];\n this._workflows = [];\n this._actions = [];\n this._tables = [];\n this._errors = [];\n this._warnings = [];\n\n // Validate project structure\n const validation = await this.validate();\n this._errors = validation.errors;\n this._warnings = validation.warnings;\n\n if (!validation.valid) {\n this._state = ProjectState.Error;\n\n throw new Error(\n `Project validation failed: ${validation.errors[0]?.message}`\n );\n }\n\n // Load configuration\n await this.loadConfig();\n await this.loadAgentInfo();\n\n this._integrationManager = new IntegrationManager({\n noCache: this._options.noCache,\n workspaceId: this._agentInfo?.workspaceId,\n });\n\n this._interfaceManager = new InterfaceManager({\n noCache: this._options.noCache,\n workspaceId: this._agentInfo?.workspaceId,\n });\n\n this._assetsManager = new AssetsManager({\n projectPath: this._path,\n workspaceId: this._agentInfo?.workspaceId,\n botId: this._agentInfo?.botId,\n });\n\n await this.loadDependencies();\n await this.loadBuiltInWorkflows();\n await this.loadAgentPrimitives();\n\n // Update assets manager with agent info if available\n if (this._agentInfo) {\n this._assetsManager = new AssetsManager({\n projectPath: this._path,\n botId: this._agentInfo.botId,\n workspaceId: this._agentInfo.workspaceId,\n });\n }\n\n if (this._errors.length > 0) {\n this._state = ProjectState.Error;\n } else {\n this._state = ProjectState.Ready;\n }\n } catch (error) {\n this._state = ProjectState.Error;\n\n throw error;\n }\n }\n\n async validate(): Promise<ValidationResult> {\n const errors: ValidationError[] = [];\n const warnings: ValidationError[] = [];\n const info: ValidationError[] = [];\n\n try {\n // Check if directory exists\n await fs.access(this._path);\n\n // Check for required files\n const requiredFiles = [\"agent.config.ts\", \"dependencies.json\"];\n for (const file of requiredFiles) {\n try {\n await fs.access(path.join(this._path, file));\n } catch {\n errors.push(ValidationErrors.requiredFileMissing(file));\n }\n }\n\n // Check for agent.json (optional, but warn if missing for deployed projects)\n try {\n await fs.access(path.join(this._path, \"agent.json\"));\n } catch {\n // agent.json is optional, but we add an informational message\n info.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.MISSING_REQUIRED_FIELD,\n severity: ValidationSeverity.INFO,\n message:\n \"agent.json not found - this file will be required for deployment and remote operations\",\n file: \"agent.json\",\n hint: \"Create agent.json with botId and workspaceId after deploying your agent\",\n });\n }\n\n // Check directory structure\n const expectedDirs = [\"actions\", \"workflows\", \"conversations\", \"assets\"];\n for (const dir of expectedDirs) {\n try {\n const stats = await fs.stat(path.join(this._path, dir));\n if (!stats.isDirectory()) {\n warnings.push(ValidationErrors.invalidStructure(dir, \"directory\"));\n }\n } catch {\n // Directory doesn't exist, which is okay - they're optional\n }\n }\n } catch (error) {\n errors.push(\n ValidationErrors.directoryAccessError(this._path, String(error))\n );\n }\n\n // Filter by severity\n const errorsBySeverity = {\n errors: errors.filter((e) => e.severity === ValidationSeverity.ERROR),\n warnings: [\n ...warnings,\n ...errors.filter((e) => e.severity === ValidationSeverity.WARNING),\n ],\n info: [\n ...info,\n ...errors.filter((e) => e.severity === ValidationSeverity.INFO),\n ],\n };\n\n return {\n valid: errorsBySeverity.errors.length === 0,\n errors: errorsBySeverity.errors,\n warnings: errorsBySeverity.warnings,\n info: errorsBySeverity.info,\n errorCount: errorsBySeverity.errors.length,\n warningCount: errorsBySeverity.warnings.length,\n infoCount: errorsBySeverity.info.length,\n };\n }\n\n get integrations(): ParsedIntegration[] {\n if (!this._integrations) {\n throw new Error(\"Integrations not loaded\");\n }\n\n return this._integrations!;\n }\n\n get interfaces(): ParsedInterface[] {\n if (!this._interfaces) {\n throw new Error(\"Interfaces not loaded\");\n }\n return this._interfaces!;\n }\n\n // Integration management methods\n async getIntegrations(): Promise<Integration[]> {\n if (!this._dependencies || !this._integrations) {\n throw new Error(\"Project not loaded\");\n }\n\n // Convert ParsedIntegration to Integration format\n return this._integrations.map((parsed) => ({\n name: parsed.alias,\n version: parsed.ref.version,\n workspace: parsed.ref.workspace,\n connection: parsed.connection,\n config: parsed.config,\n installed: false, // This would be determined by checking workspace\n installedVersion: undefined,\n hasChannels:\n parsed.definition?.channels &&\n Object.keys(parsed.definition.channels).length > 0,\n }));\n }\n\n // Asset management methods\n async createAssetSyncPlan(): Promise<AssetSyncPlan> {\n if (this._state !== ProjectState.Ready) {\n throw new Error(\n \"Project must be in Ready state to create asset sync plan\"\n );\n }\n\n this.requiresAgentInfo(\"create asset sync plan\");\n return await this._assetsManager.createSyncPlan();\n }\n\n async syncAssets(options?: AssetSyncOptions): Promise<AssetSyncResult> {\n if (this._state !== ProjectState.Ready) {\n throw new Error(\"Project must be in Ready state to sync assets\");\n }\n\n this.requiresAgentInfo(\"sync assets\");\n const plan = await this._assetsManager.createSyncPlan();\n return await this._assetsManager.executeSync(plan, options);\n }\n\n async hasAssetsDirectory(): Promise<boolean> {\n return await this._assetsManager.hasAssetsDirectory();\n }\n\n get assetsManager(): AssetsManager {\n return this._assetsManager;\n }\n\n // Agent info management methods\n async createAgentInfo(info: AgentInfo): Promise<void> {\n const agentPath = path.join(this._path, \"agent.json\");\n const agentContent = stringifyWithOrder(info, agentInfoKeyOrder);\n await fs.writeFile(agentPath, agentContent);\n this._agentInfo = info;\n }\n\n async updateAgentInfo(updates: Partial<AgentInfo>): Promise<void> {\n if (!this._agentInfo) {\n throw new Error(\"No agent.json found. Use createAgentInfo() first.\");\n }\n\n const updatedInfo = { ...this._agentInfo, ...updates };\n const agentPath = path.join(this._path, \"agent.json\");\n const agentContent = stringifyWithOrder(updatedInfo, agentInfoKeyOrder);\n await fs.writeFile(agentPath, agentContent);\n this._agentInfo = updatedInfo;\n }\n\n requiresAgentInfo(operation: string): void {\n if (!this._agentInfo?.botId) {\n throw new Error(\n `Operation \"${operation}\" requires a bot ID. ` +\n \"Please create agent.json with botId and workspaceId after deploying your agent.\"\n );\n }\n }\n\n // Private helper methods\n private async loadConfig(): Promise<void> {\n try {\n // Bust module cache to ensure fresh config on reload\n const configPath = path.join(this._path, \"agent.config.ts\");\n const configModule = await import(`${configPath}?t=${Date.now()}`);\n if (!configModule || !configModule.default) {\n this._errors.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_CONFIG_SCHEMA,\n severity: ValidationSeverity.ERROR,\n message:\n \"agent.config.ts does not export a default configuration object\",\n file: \"agent.config.ts\",\n });\n return;\n }\n\n // Check if the config was created with defineConfig\n const { isAgentConfig } = await import(\"@botpress/runtime/internal\");\n if (!isAgentConfig(configModule.default)) {\n this._errors.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_CONFIG_SCHEMA,\n severity: ValidationSeverity.ERROR,\n message:\n \"agent.config.ts must export the result of defineConfig(). \" +\n \"Example: export default defineConfig({ name: 'my-agent', ... })\",\n file: \"agent.config.ts\",\n hint: \"Wrap your config object with defineConfig() from @botpress/runtime\",\n });\n return;\n }\n\n this._config = configModule.default as AgentConfig;\n } catch (error) {\n this._errors.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_CONFIG_SYNTAX,\n severity: ValidationSeverity.ERROR,\n message: `Failed to load agent.config.ts: ${(error as Error).message}`,\n file: \"agent.config.ts\",\n });\n }\n }\n\n private async loadDependencies(): Promise<void> {\n try {\n // Load dependencies.json\n const depsPath = path.join(this._path, \"dependencies.json\");\n const depsContent = await fs.readFile(depsPath, \"utf-8\");\n\n // Parse JSON\n let depsData: any;\n try {\n depsData = JSON.parse(depsContent);\n } catch (parseError) {\n this._errors.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_DEPENDENCIES_SYNTAX,\n severity: ValidationSeverity.ERROR,\n message: `Invalid JSON syntax in dependencies.json: ${(parseError as Error).message}`,\n file: \"dependencies.json\",\n });\n this._dependencies = { integrations: {} };\n this._integrations = [];\n this._interfaces = [];\n return;\n }\n\n // Validate against schema\n const validationResult = dependenciesSchema.safeParse(depsData);\n if (!validationResult.success) {\n const errors = validationResult.error.errors;\n for (const error of errors) {\n this._errors.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_DEPENDENCIES_SCHEMA,\n severity: ValidationSeverity.ERROR,\n message: `Invalid dependencies.json: ${error.path.join(\".\")} - ${JSON.stringify(\n error,\n null,\n 2\n )}`,\n file: \"dependencies.json\",\n hint:\n error.code === \"invalid_type\"\n ? `Expected ${error.expected}, but got ${error.received}`\n : undefined,\n });\n }\n this._dependencies = { integrations: {} };\n this._integrations = [];\n this._interfaces = [];\n return;\n }\n\n this._dependencies = validationResult.data;\n\n // Validate and load integrations and interfaces\n if (this._dependencies) {\n const [intRes, ifRes] = await Promise.all([\n this._integrationManager.loadIntegrations(this._dependencies),\n this._interfaceManager.loadInterfaces(this._dependencies),\n ]);\n this._integrations = intRes.integrations;\n this._interfaces = ifRes.interfaces;\n\n // Add errors and warnings\n this._errors.push(...intRes.errors, ...ifRes.errors);\n this._warnings.push(...intRes.warnings, ...ifRes.warnings);\n }\n } catch (error) {\n if ((error as any).code === \"ENOENT\") {\n // If dependencies.json doesn't exist, use empty dependencies\n this._dependencies = {\n integrations: {},\n };\n this._integrations = [];\n this._interfaces = [];\n } else {\n // Re-throw other errors\n throw error;\n }\n }\n }\n\n private async loadAgentInfo(): Promise<void> {\n try {\n // Load agent.json\n const agentPath = path.join(this._path, \"agent.json\");\n const agentContent = await fs.readFile(agentPath, \"utf-8\");\n\n // Parse JSON\n let agentData: any;\n try {\n agentData = JSON.parse(agentContent);\n } catch (parseError) {\n this._errors.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_CONFIG_SYNTAX,\n severity: ValidationSeverity.ERROR,\n message: `Invalid JSON syntax in agent.json: ${(parseError as Error).message}`,\n file: \"agent.json\",\n });\n }\n\n // Validate agent.json structure\n const validationResult = agentInfoSchema.safeParse(agentData);\n if (!validationResult.success) {\n const errors = validationResult.error.errors;\n for (const error of errors) {\n // Check if this is a missing botId or workspaceId error\n const isBotIdError = error.path.includes(\"botId\");\n const isWorkspaceIdError = error.path.includes(\"workspaceId\");\n const isLinkingError =\n (isBotIdError || isWorkspaceIdError) &&\n error.code === \"invalid_type\";\n\n this._errors.push({\n $type: \"ValidationError\",\n code: isLinkingError\n ? ValidationErrorCode.AGENT_NOT_LINKED\n : ValidationErrorCode.INVALID_CONFIG_SCHEMA,\n severity: ValidationSeverity.ERROR,\n message: `Invalid agent.json: ${error.path.join(\".\")} - ${error.message}`,\n file: \"agent.json\",\n hint:\n error.code === \"invalid_type\"\n ? `Expected ${error.expected}, but got ${error.received}`\n : \"Ensure agent.json contains valid botId and workspaceId\",\n });\n }\n }\n\n this._agentInfo = validationResult.data;\n } catch (error) {\n // agent.json is optional, but may be required for certain operations\n this._agentInfo = undefined;\n }\n }\n\n private async loadBuiltInWorkflows(): Promise<void> {\n for (const wf of Object.values(BuiltInWorkflows)) {\n const definition = Primitives.Definitions.getDefinition(wf);\n if (Primitives.Definitions.isWorkflowDefinition(definition)) {\n this._workflows.push({\n definition,\n export: \"default\",\n path: \"<adk:builtin>\",\n });\n }\n }\n }\n\n private async registerDataSourceWorkflows(\n knowledgeBase: any,\n kbPath: string,\n kbExport: string\n ): Promise<void> {\n try {\n // Each knowledge base has data sources with sync workflows\n if (!knowledgeBase.sources || !Array.isArray(knowledgeBase.sources)) {\n return;\n }\n\n for (const source of knowledgeBase.sources) {\n if (!source.syncWorkflow) {\n continue;\n }\n\n const workflowDefinition = source.syncWorkflow.getDefinition();\n\n // Check if workflow already exists\n const existing = this._workflows.find(\n (p) => p.definition.name === workflowDefinition.name\n );\n\n if (existing) {\n // Skip if already registered\n continue;\n }\n\n // Register the data source's sync workflow\n this._workflows.push({\n definition: workflowDefinition,\n export: `${kbExport}.sources[${knowledgeBase.sources.indexOf(source)}].syncWorkflow`,\n path: kbPath,\n });\n }\n } catch (error) {\n console.warn(\n `Failed to register data source workflows for ${kbPath}:`,\n error\n );\n }\n }\n\n private async loadAgentPrimitives(): Promise<void> {\n // Set the ADK command in the runtime environment\n if (this._options.adkCommand) {\n setAdkCommand(this._options.adkCommand);\n }\n\n try {\n const src = path.join(this._path, \"src\");\n\n if (!(await fs.stat(src).catch(() => false))) {\n this._errors.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_STRUCTURE,\n severity: ValidationSeverity.ERROR,\n message: `\\`src\\` directory not found at expected path: ${src}`,\n });\n return;\n }\n\n const allFiles = await fs.readdir(src, {\n withFileTypes: true,\n recursive: true,\n });\n\n for (const file of allFiles.filter((x) => x.isFile())) {\n const filename = file.name;\n const absolutePath = path.join(file.parentPath, file.name);\n const relPath = path.relative(this.path, absolutePath);\n\n if (filename.toLowerCase().endsWith(\".d.ts\")) {\n // Skip TypeScript declaration files\n continue;\n }\n\n if (\n !filename.toLowerCase().endsWith(\".js\") &&\n !filename.toLowerCase().endsWith(\".ts\")\n ) {\n continue; // Only process .js or .ts files\n }\n\n if (file.isSymbolicLink()) {\n this._errors.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_FILE_TYPE,\n severity: ValidationSeverity.WARNING,\n message: `Skipping symbolic link in conversations directory: ${relPath}`,\n file: relPath,\n });\n continue;\n }\n\n try {\n const expandedExports = await expandExports({\n absolutePath,\n relPath,\n filename,\n onWarning: (warning) => this._warnings.push(warning),\n });\n\n for (const key of Object.keys(expandedExports)) {\n let definition;\n try {\n definition = Primitives.Definitions.getDefinition(\n expandedExports[key]\n );\n } catch (error) {\n // This might catch errors from getDefinition itself\n if (Errors.isAdkError(error)) {\n this._warnings.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_PRIMITIVE_DEFINITION,\n severity: ValidationSeverity.WARNING,\n message: error.message,\n file: relPath,\n hint: `Check the primitive definition in ${filename} -> ${key}`,\n });\n continue;\n }\n // Re-throw if it's not an ADK error\n throw error;\n }\n\n if (Primitives.Definitions.isConversationDefinition(definition)) {\n const existing = this._conversations.find(\n (p) => p.definition.channel === definition.channel\n );\n if (existing) {\n this._warnings.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate conversation definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n });\n continue;\n }\n this._conversations.push({\n definition,\n export: key,\n path: relPath,\n });\n } else if (\n Primitives.Definitions.isKnowledgeDefinition(definition)\n ) {\n const existing = this._knowledge.find(\n (p) => p.definition.name === definition.name\n );\n\n if (existing) {\n this._warnings.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate knowledge definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n });\n continue;\n }\n\n this._knowledge.push({\n definition,\n export: key,\n path: relPath,\n });\n\n // Register data source sync workflows\n await this.registerDataSourceWorkflows(\n expandedExports[key],\n relPath,\n key\n );\n } else if (Primitives.Definitions.isTriggerDefinition(definition)) {\n const existing = this._triggers.find(\n (p) => p.definition.name === definition.name\n );\n if (existing) {\n this._warnings.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate trigger definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n });\n continue;\n }\n this._triggers.push({\n definition,\n export: key,\n path: relPath,\n });\n } else if (\n Primitives.Definitions.isWorkflowDefinition(definition)\n ) {\n const existing = this._workflows.find(\n (p) => p.definition.name === definition.name\n );\n if (existing) {\n this._warnings.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate workflow definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n });\n continue;\n }\n this._workflows.push({\n definition,\n export: key,\n path: relPath,\n });\n } else if (Primitives.Definitions.isActionDefinition(definition)) {\n const existing = this._actions.find(\n (p) => p.definition.name === definition.name\n );\n if (existing) {\n this._warnings.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate action definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n });\n continue;\n }\n this._actions.push({\n definition,\n export: key,\n path: relPath,\n });\n } else if (Primitives.Definitions.isTableDefinition(definition)) {\n const existing = this._tables.find(\n (p) => p.definition.name === definition.name\n );\n if (existing) {\n this._warnings.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate table definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n });\n continue;\n }\n this._tables.push({\n definition,\n export: key,\n path: relPath,\n });\n }\n }\n } catch (error) {\n // Check if it's an ADK error from expandExports\n if (Errors.isAdkError(error)) {\n // Error is already handled by expandExports, skip this file\n continue;\n }\n\n // Log other import errors with context\n this._warnings.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.IMPORT_ERROR,\n severity: ValidationSeverity.WARNING,\n message: `Failed to import primitive from ${relPath}: ${error instanceof Error ? error.message : String(error)}`,\n file: relPath,\n hint: \"Ensure the file exports valid primitives and has no syntax errors\",\n });\n }\n }\n } catch (error) {\n throw error;\n }\n }\n}\n",
|
|
24
|
+
"import {\n BuiltInWorkflows,\n Errors,\n Primitives,\n setAdkCommand,\n} from \"@botpress/runtime/internal\";\n\nimport fs from \"fs/promises\";\nimport path from \"path\";\nimport {\n AssetsManager,\n AssetSyncOptions,\n AssetSyncPlan,\n AssetSyncResult,\n} from \"../assets/index.js\";\nimport { IntegrationManager } from \"../integrations/index.js\";\nimport { ParsedIntegration } from \"../integrations/types.js\";\nimport { InterfaceManager } from \"../interfaces/index.js\";\nimport { ParsedInterface } from \"../interfaces/types.js\";\n\nimport {\n agentInfoKeyOrder,\n stringifyWithOrder,\n} from \"../utils/json-ordering.js\";\nimport { expandExports } from \"./expand-exports.js\";\nimport {\n AgentConfig,\n AgentInfo,\n agentInfoSchema,\n Dependencies,\n dependenciesSchema,\n Integration,\n ProjectInfo,\n ProjectState,\n ValidationError,\n ValidationErrorCode,\n ValidationResult,\n ValidationSeverity,\n} from \"./types.js\";\nimport { ValidationErrors } from \"./validation-errors.js\";\n\nexport interface AgentProjectOptions {\n noCache?: boolean;\n adkCommand?: \"adk-dev\" | \"adk-build\" | \"adk-deploy\";\n}\n\ntype ConversationDefinition = Primitives.Definitions.ConversationDefinition;\ntype KnowledgeDefinition = Primitives.Definitions.KnowledgeDefinition;\ntype TriggerDefinition = Primitives.Definitions.TriggerDefinition;\ntype WorkflowDefinition = Primitives.Definitions.WorkflowDefinition;\ntype ActionDefinition = Primitives.Definitions.ActionDefinition;\ntype TableDefinition = Primitives.Definitions.TableDefinition;\ntype PrimitiveDefinition = Primitives.Definitions.PrimitiveDefinition;\n\nexport type PrimitiveReference<\n T extends PrimitiveDefinition = PrimitiveDefinition,\n> = {\n path: string;\n export: string;\n definition: T;\n};\n\nexport class AgentProject {\n private static _projectCache = new Map<string, AgentProject>();\n\n private _options: AgentProjectOptions;\n private _path: string;\n private _config?: AgentConfig;\n private _dependencies?: Dependencies;\n private _agentInfo?: AgentInfo;\n private _state: ProjectState = ProjectState.Unloaded;\n private _errors: ValidationError[] = [];\n private _warnings: ValidationError[] = [];\n\n private _lastBuildTime?: Date;\n private _integrations?: ParsedIntegration[];\n private _interfaces?: ParsedInterface[];\n private _integrationManager: IntegrationManager;\n private _interfaceManager: InterfaceManager;\n private _assetsManager: AssetsManager;\n private _conversations: PrimitiveReference<ConversationDefinition>[] = [];\n private _knowledge: PrimitiveReference<KnowledgeDefinition>[] = [];\n private _triggers: PrimitiveReference<TriggerDefinition>[] = [];\n private _workflows: PrimitiveReference<WorkflowDefinition>[] = [];\n private _actions: PrimitiveReference<ActionDefinition>[] = [];\n private _tables: PrimitiveReference<TableDefinition>[] = [];\n\n constructor(projectPath: string, options: AgentProjectOptions = {}) {\n this._options = options;\n this._path = path.resolve(projectPath);\n this._integrationManager = new IntegrationManager({\n noCache: options.noCache,\n });\n this._interfaceManager = new InterfaceManager({\n noCache: options.noCache,\n });\n this._assetsManager = new AssetsManager({\n projectPath: this._path,\n });\n }\n\n // Static factory methods\n static async load(\n projectPath: string,\n options: AgentProjectOptions = {}\n ): Promise<AgentProject> {\n const resolvedPath = path.resolve(projectPath);\n\n // Check cache unless explicitly disabled\n if (!options.noCache) {\n const cached = AgentProject._projectCache.get(resolvedPath);\n if (cached) {\n return cached;\n }\n }\n\n // Create and load new project\n const project = new AgentProject(resolvedPath, options);\n await project.reload();\n\n // Cache the project unless caching is disabled\n if (!options.noCache) {\n AgentProject._projectCache.set(resolvedPath, project);\n }\n\n return project;\n }\n\n // Static method to clear the cache\n static clearCache(): void {\n AgentProject._projectCache.clear();\n }\n\n // Static method to remove a specific project from cache\n static clearCacheForPath(projectPath: string): void {\n const resolvedPath = path.resolve(projectPath);\n AgentProject._projectCache.delete(resolvedPath);\n }\n\n // Public properties\n get path(): string {\n return this._path;\n }\n\n get conversations(): PrimitiveReference<ConversationDefinition>[] {\n return this._conversations;\n }\n\n get knowledge(): PrimitiveReference<KnowledgeDefinition>[] {\n return this._knowledge;\n }\n\n get triggers(): PrimitiveReference<TriggerDefinition>[] {\n return this._triggers;\n }\n\n get workflows(): PrimitiveReference<WorkflowDefinition>[] {\n return this._workflows;\n }\n\n get actions(): PrimitiveReference<ActionDefinition>[] {\n return this._actions;\n }\n\n get tables(): PrimitiveReference<TableDefinition>[] {\n return this._tables;\n }\n\n get config(): AgentConfig | undefined {\n return this._config;\n }\n\n get dependencies(): Dependencies | undefined {\n return this._dependencies;\n }\n\n get agentInfo(): AgentInfo | undefined {\n return this._agentInfo;\n }\n\n get state(): ProjectState {\n return this._state;\n }\n\n get info(): ProjectInfo {\n return {\n path: this._path,\n config: this._config!,\n dependencies: this._dependencies || {\n integrations: {},\n },\n agentInfo: this._agentInfo,\n state: this._state,\n lastBuildTime: this._lastBuildTime,\n errors: [...this._errors],\n warnings: [...this._warnings],\n errorCount: this._errors.filter(\n (e) => e.severity === ValidationSeverity.ERROR\n ).length,\n warningCount: this._warnings.filter(\n (e) => e.severity === ValidationSeverity.WARNING\n ).length,\n infoCount: [...this._errors, ...this._warnings].filter(\n (e) => e.severity === ValidationSeverity.INFO\n ).length,\n };\n }\n\n // Core methods\n async reload(): Promise<void> {\n this._state = ProjectState.Loading;\n\n try {\n // Clear previous state\n this._conversations = [];\n this._knowledge = [];\n this._triggers = [];\n this._workflows = [];\n this._actions = [];\n this._tables = [];\n this._errors = [];\n this._warnings = [];\n\n // Validate project structure\n const validation = await this.validate();\n this._errors = validation.errors;\n this._warnings = validation.warnings;\n\n if (!validation.valid) {\n this._state = ProjectState.Error;\n\n throw new Error(\n `Project validation failed: ${validation.errors[0]?.message}`\n );\n }\n\n // Load configuration\n await this.loadConfig();\n await this.loadAgentInfo();\n\n this._integrationManager = new IntegrationManager({\n noCache: this._options.noCache,\n workspaceId: this._agentInfo?.workspaceId,\n });\n\n this._interfaceManager = new InterfaceManager({\n noCache: this._options.noCache,\n workspaceId: this._agentInfo?.workspaceId,\n });\n\n this._assetsManager = new AssetsManager({\n projectPath: this._path,\n workspaceId: this._agentInfo?.workspaceId,\n botId: this._agentInfo?.botId,\n });\n\n await this.loadDependencies();\n await this.loadBuiltInWorkflows();\n await this.loadAgentPrimitives();\n\n // Update assets manager with agent info if available\n if (this._agentInfo) {\n this._assetsManager = new AssetsManager({\n projectPath: this._path,\n botId: this._agentInfo.botId,\n workspaceId: this._agentInfo.workspaceId,\n });\n }\n\n if (this._errors.length > 0) {\n this._state = ProjectState.Error;\n } else {\n this._state = ProjectState.Ready;\n }\n } catch (error) {\n this._state = ProjectState.Error;\n\n throw error;\n }\n }\n\n async validate(): Promise<ValidationResult> {\n const errors: ValidationError[] = [];\n const warnings: ValidationError[] = [];\n const info: ValidationError[] = [];\n\n try {\n // Check if directory exists\n await fs.access(this._path);\n\n // Check for required files\n const requiredFiles = [\"agent.config.ts\", \"dependencies.json\"];\n for (const file of requiredFiles) {\n try {\n await fs.access(path.join(this._path, file));\n } catch {\n errors.push(ValidationErrors.requiredFileMissing(file));\n }\n }\n\n // Check for agent.json (optional, but warn if missing for deployed projects)\n try {\n await fs.access(path.join(this._path, \"agent.json\"));\n } catch {\n // agent.json is optional, but we add an informational message\n info.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.MISSING_REQUIRED_FIELD,\n severity: ValidationSeverity.INFO,\n message:\n \"agent.json not found - this file will be required for deployment and remote operations\",\n file: \"agent.json\",\n hint: \"Create agent.json with botId and workspaceId after deploying your agent\",\n });\n }\n\n // Check directory structure\n const expectedDirs = [\"actions\", \"workflows\", \"conversations\", \"assets\"];\n for (const dir of expectedDirs) {\n try {\n const stats = await fs.stat(path.join(this._path, dir));\n if (!stats.isDirectory()) {\n warnings.push(ValidationErrors.invalidStructure(dir, \"directory\"));\n }\n } catch {\n // Directory doesn't exist, which is okay - they're optional\n }\n }\n } catch (error) {\n errors.push(\n ValidationErrors.directoryAccessError(this._path, String(error))\n );\n }\n\n // Filter by severity\n const errorsBySeverity = {\n errors: errors.filter((e) => e.severity === ValidationSeverity.ERROR),\n warnings: [\n ...warnings,\n ...errors.filter((e) => e.severity === ValidationSeverity.WARNING),\n ],\n info: [\n ...info,\n ...errors.filter((e) => e.severity === ValidationSeverity.INFO),\n ],\n };\n\n return {\n valid: errorsBySeverity.errors.length === 0,\n errors: errorsBySeverity.errors,\n warnings: errorsBySeverity.warnings,\n info: errorsBySeverity.info,\n errorCount: errorsBySeverity.errors.length,\n warningCount: errorsBySeverity.warnings.length,\n infoCount: errorsBySeverity.info.length,\n };\n }\n\n get integrations(): ParsedIntegration[] {\n if (!this._integrations) {\n throw new Error(\"Integrations not loaded\");\n }\n\n return this._integrations!;\n }\n\n get interfaces(): ParsedInterface[] {\n if (!this._interfaces) {\n throw new Error(\"Interfaces not loaded\");\n }\n return this._interfaces!;\n }\n\n // Integration management methods\n async getIntegrations(): Promise<Integration[]> {\n if (!this._dependencies || !this._integrations) {\n throw new Error(\"Project not loaded\");\n }\n\n // Convert ParsedIntegration to Integration format\n return this._integrations.map((parsed) => ({\n name: parsed.alias,\n version: parsed.ref.version,\n workspace: parsed.ref.workspace,\n connection: parsed.connection,\n config: parsed.config,\n installed: false, // This would be determined by checking workspace\n installedVersion: undefined,\n hasChannels:\n parsed.definition?.channels &&\n Object.keys(parsed.definition.channels).length > 0,\n }));\n }\n\n // Asset management methods\n async createAssetSyncPlan(): Promise<AssetSyncPlan> {\n if (this._state !== ProjectState.Ready) {\n throw new Error(\n \"Project must be in Ready state to create asset sync plan\"\n );\n }\n\n this.requiresAgentInfo(\"create asset sync plan\");\n return await this._assetsManager.createSyncPlan();\n }\n\n async syncAssets(options?: AssetSyncOptions): Promise<AssetSyncResult> {\n if (this._state !== ProjectState.Ready) {\n throw new Error(\"Project must be in Ready state to sync assets\");\n }\n\n this.requiresAgentInfo(\"sync assets\");\n const plan = await this._assetsManager.createSyncPlan();\n return await this._assetsManager.executeSync(plan, options);\n }\n\n async hasAssetsDirectory(): Promise<boolean> {\n return await this._assetsManager.hasAssetsDirectory();\n }\n\n get assetsManager(): AssetsManager {\n return this._assetsManager;\n }\n\n // Agent info management methods\n async createAgentInfo(info: AgentInfo): Promise<void> {\n const agentPath = path.join(this._path, \"agent.json\");\n const agentContent = stringifyWithOrder(info, agentInfoKeyOrder);\n await fs.writeFile(agentPath, agentContent);\n this._agentInfo = info;\n }\n\n async updateAgentInfo(updates: Partial<AgentInfo>): Promise<void> {\n if (!this._agentInfo) {\n throw new Error(\"No agent.json found. Use createAgentInfo() first.\");\n }\n\n const updatedInfo = { ...this._agentInfo, ...updates };\n const agentPath = path.join(this._path, \"agent.json\");\n const agentContent = stringifyWithOrder(updatedInfo, agentInfoKeyOrder);\n await fs.writeFile(agentPath, agentContent);\n this._agentInfo = updatedInfo;\n }\n\n requiresAgentInfo(operation: string): void {\n if (!this._agentInfo?.botId) {\n throw new Error(\n `Operation \"${operation}\" requires a bot ID. ` +\n \"Please create agent.json with botId and workspaceId after deploying your agent.\"\n );\n }\n }\n\n // Private helper methods\n private async loadConfig(): Promise<void> {\n try {\n // Bust module cache to ensure fresh config on reload\n const configPath = path.join(this._path, \"agent.config.ts\");\n const configModule = await import(`${configPath}?t=${Date.now()}`);\n if (!configModule || !configModule.default) {\n this._errors.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_CONFIG_SCHEMA,\n severity: ValidationSeverity.ERROR,\n message:\n \"agent.config.ts does not export a default configuration object\",\n file: \"agent.config.ts\",\n });\n return;\n }\n\n // Check if the config was created with defineConfig\n const { isAgentConfig } = await import(\"@botpress/runtime/internal\");\n if (!isAgentConfig(configModule.default)) {\n this._errors.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_CONFIG_SCHEMA,\n severity: ValidationSeverity.ERROR,\n message:\n \"agent.config.ts must export the result of defineConfig(). \" +\n \"Example: export default defineConfig({ name: 'my-agent', ... })\",\n file: \"agent.config.ts\",\n hint: \"Wrap your config object with defineConfig() from @botpress/runtime\",\n });\n return;\n }\n\n this._config = configModule.default as AgentConfig;\n } catch (error) {\n this._errors.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_CONFIG_SYNTAX,\n severity: ValidationSeverity.ERROR,\n message: `Failed to load agent.config.ts: ${(error as Error).message}`,\n file: \"agent.config.ts\",\n });\n }\n }\n\n private async loadDependencies(): Promise<void> {\n try {\n // Load dependencies.json\n const depsPath = path.join(this._path, \"dependencies.json\");\n const depsContent = await fs.readFile(depsPath, \"utf-8\");\n\n // Parse JSON\n let depsData: any;\n try {\n depsData = JSON.parse(depsContent);\n } catch (parseError) {\n this._errors.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_DEPENDENCIES_SYNTAX,\n severity: ValidationSeverity.ERROR,\n message: `Invalid JSON syntax in dependencies.json: ${(parseError as Error).message}`,\n file: \"dependencies.json\",\n });\n this._dependencies = { integrations: {} };\n this._integrations = [];\n this._interfaces = [];\n return;\n }\n\n // Validate against schema\n const validationResult = dependenciesSchema.safeParse(depsData);\n if (!validationResult.success) {\n const errors = validationResult.error.errors;\n for (const error of errors) {\n this._errors.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_DEPENDENCIES_SCHEMA,\n severity: ValidationSeverity.ERROR,\n message: `Invalid dependencies.json: ${error.path.join(\".\")} - ${JSON.stringify(\n error,\n null,\n 2\n )}`,\n file: \"dependencies.json\",\n hint:\n error.code === \"invalid_type\"\n ? `Expected ${error.expected}, but got ${error.received}`\n : undefined,\n });\n }\n this._dependencies = { integrations: {} };\n this._integrations = [];\n this._interfaces = [];\n return;\n }\n\n this._dependencies = validationResult.data;\n\n // Validate and load integrations and interfaces\n if (this._dependencies) {\n const [intRes, ifRes] = await Promise.all([\n this._integrationManager.loadIntegrations(this._dependencies),\n this._interfaceManager.loadInterfaces(this._dependencies),\n ]);\n this._integrations = intRes.integrations;\n this._interfaces = ifRes.interfaces;\n\n // Add errors and warnings\n this._errors.push(...intRes.errors, ...ifRes.errors);\n this._warnings.push(...intRes.warnings, ...ifRes.warnings);\n }\n } catch (error) {\n if ((error as any).code === \"ENOENT\") {\n // If dependencies.json doesn't exist, use empty dependencies\n this._dependencies = {\n integrations: {},\n };\n this._integrations = [];\n this._interfaces = [];\n } else {\n // Re-throw other errors\n throw error;\n }\n }\n }\n\n private async loadAgentInfo(): Promise<void> {\n try {\n // Load agent.json\n const agentPath = path.join(this._path, \"agent.json\");\n const agentContent = await fs.readFile(agentPath, \"utf-8\");\n\n // Parse JSON\n let agentData: any;\n try {\n agentData = JSON.parse(agentContent);\n } catch (parseError) {\n this._errors.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_CONFIG_SYNTAX,\n severity: ValidationSeverity.ERROR,\n message: `Invalid JSON syntax in agent.json: ${(parseError as Error).message}`,\n file: \"agent.json\",\n });\n }\n\n // Validate agent.json structure\n const validationResult = agentInfoSchema.safeParse(agentData);\n if (!validationResult.success) {\n const errors = validationResult.error.errors;\n for (const error of errors) {\n // Check if this is a missing botId or workspaceId error\n const isBotIdError = error.path.includes(\"botId\");\n const isWorkspaceIdError = error.path.includes(\"workspaceId\");\n const isLinkingError =\n (isBotIdError || isWorkspaceIdError) &&\n error.code === \"invalid_type\";\n\n this._errors.push({\n $type: \"ValidationError\",\n code: isLinkingError\n ? ValidationErrorCode.AGENT_NOT_LINKED\n : ValidationErrorCode.INVALID_CONFIG_SCHEMA,\n severity: ValidationSeverity.ERROR,\n message: `Invalid agent.json: ${error.path.join(\".\")} - ${error.message}`,\n file: \"agent.json\",\n hint:\n error.code === \"invalid_type\"\n ? `Expected ${error.expected}, but got ${error.received}`\n : \"Ensure agent.json contains valid botId and workspaceId\",\n });\n }\n }\n\n this._agentInfo = validationResult.data;\n } catch (error) {\n // agent.json is optional, but may be required for certain operations\n this._agentInfo = undefined;\n }\n }\n\n private async loadBuiltInWorkflows(): Promise<void> {\n for (const wf of Object.values(BuiltInWorkflows)) {\n const definition = Primitives.Definitions.getDefinition(wf);\n if (Primitives.Definitions.isWorkflowDefinition(definition)) {\n this._workflows.push({\n definition,\n export: \"default\",\n path: \"<adk:builtin>\",\n });\n }\n }\n }\n\n private async registerDataSourceWorkflows(\n knowledgeBase: any,\n kbPath: string,\n kbExport: string\n ): Promise<void> {\n try {\n // Each knowledge base has data sources with sync workflows\n if (!knowledgeBase.sources || !Array.isArray(knowledgeBase.sources)) {\n return;\n }\n\n for (const source of knowledgeBase.sources) {\n if (!source.syncWorkflow) {\n continue;\n }\n\n const workflowDefinition = source.syncWorkflow.getDefinition();\n\n // Check if workflow already exists\n const existing = this._workflows.find(\n (p) => p.definition.name === workflowDefinition.name\n );\n\n if (existing) {\n // Skip if already registered\n continue;\n }\n\n // Register the data source's sync workflow\n this._workflows.push({\n definition: workflowDefinition,\n export: `${kbExport}.sources[${knowledgeBase.sources.indexOf(source)}].syncWorkflow`,\n path: kbPath,\n });\n }\n } catch (error) {\n console.warn(\n `Failed to register data source workflows for ${kbPath}:`,\n error\n );\n }\n }\n\n /**\n * Get list of channels from a channel specification (single, array, or glob)\n * For glob '*', we need to check against all integration channels - but for validation\n * we treat it as a special marker\n */\n private getChannelsList(channelSpec: string | string[]): string[] {\n if (channelSpec === '*') {\n return ['*']; // Glob marker - matches everything\n } else if (Array.isArray(channelSpec)) {\n return channelSpec;\n } else {\n return [channelSpec];\n }\n }\n\n private async loadAgentPrimitives(): Promise<void> {\n // Set the ADK command in the runtime environment\n if (this._options.adkCommand) {\n setAdkCommand(this._options.adkCommand);\n }\n\n try {\n const src = path.join(this._path, \"src\");\n\n if (!(await fs.stat(src).catch(() => false))) {\n this._errors.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_STRUCTURE,\n severity: ValidationSeverity.ERROR,\n message: `\\`src\\` directory not found at expected path: ${src}`,\n });\n return;\n }\n\n const allFiles = await fs.readdir(src, {\n withFileTypes: true,\n recursive: true,\n });\n\n for (const file of allFiles.filter((x) => x.isFile())) {\n const filename = file.name;\n const absolutePath = path.join(file.parentPath, file.name);\n const relPath = path.relative(this.path, absolutePath);\n\n if (filename.toLowerCase().endsWith(\".d.ts\")) {\n // Skip TypeScript declaration files\n continue;\n }\n\n if (\n !filename.toLowerCase().endsWith(\".js\") &&\n !filename.toLowerCase().endsWith(\".ts\")\n ) {\n continue; // Only process .js or .ts files\n }\n\n if (file.isSymbolicLink()) {\n this._errors.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_FILE_TYPE,\n severity: ValidationSeverity.WARNING,\n message: `Skipping symbolic link in conversations directory: ${relPath}`,\n file: relPath,\n });\n continue;\n }\n\n try {\n const expandedExports = await expandExports({\n absolutePath,\n relPath,\n filename,\n onWarning: (warning) => this._warnings.push(warning),\n });\n\n for (const key of Object.keys(expandedExports)) {\n let definition;\n try {\n definition = Primitives.Definitions.getDefinition(\n expandedExports[key]\n );\n } catch (error) {\n // This might catch errors from getDefinition itself\n if (Errors.isAdkError(error)) {\n this._warnings.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.INVALID_PRIMITIVE_DEFINITION,\n severity: ValidationSeverity.WARNING,\n message: error.message,\n file: relPath,\n hint: `Check the primitive definition in ${filename} -> ${key}`,\n });\n continue;\n }\n // Re-throw if it's not an ADK error\n throw error;\n }\n\n if (Primitives.Definitions.isConversationDefinition(definition)) {\n // Check for overlapping channel definitions\n const overlapping = this._conversations.find((p) => {\n const existingChannels = this.getChannelsList(p.definition.channel);\n const newChannels = this.getChannelsList(definition.channel);\n\n // Check if any channel overlaps\n return existingChannels.some(ch => newChannels.includes(ch));\n });\n\n if (overlapping) {\n this._warnings.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Overlapping conversation channels found: ${filename} -> ${key} overlaps with ${overlapping.path} -> ${overlapping.export}`,\n file: relPath,\n });\n continue;\n }\n this._conversations.push({\n definition,\n export: key,\n path: relPath,\n });\n } else if (\n Primitives.Definitions.isKnowledgeDefinition(definition)\n ) {\n const existing = this._knowledge.find(\n (p) => p.definition.name === definition.name\n );\n\n if (existing) {\n this._warnings.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate knowledge definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n });\n continue;\n }\n\n this._knowledge.push({\n definition,\n export: key,\n path: relPath,\n });\n\n // Register data source sync workflows\n await this.registerDataSourceWorkflows(\n expandedExports[key],\n relPath,\n key\n );\n } else if (Primitives.Definitions.isTriggerDefinition(definition)) {\n const existing = this._triggers.find(\n (p) => p.definition.name === definition.name\n );\n if (existing) {\n this._warnings.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate trigger definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n });\n continue;\n }\n this._triggers.push({\n definition,\n export: key,\n path: relPath,\n });\n } else if (\n Primitives.Definitions.isWorkflowDefinition(definition)\n ) {\n const existing = this._workflows.find(\n (p) => p.definition.name === definition.name\n );\n if (existing) {\n this._warnings.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate workflow definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n });\n continue;\n }\n this._workflows.push({\n definition,\n export: key,\n path: relPath,\n });\n } else if (Primitives.Definitions.isActionDefinition(definition)) {\n const existing = this._actions.find(\n (p) => p.definition.name === definition.name\n );\n if (existing) {\n this._warnings.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate action definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n });\n continue;\n }\n this._actions.push({\n definition,\n export: key,\n path: relPath,\n });\n } else if (Primitives.Definitions.isTableDefinition(definition)) {\n const existing = this._tables.find(\n (p) => p.definition.name === definition.name\n );\n if (existing) {\n this._warnings.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.DUPLICATE_PRIMITIVE,\n severity: ValidationSeverity.WARNING,\n message: `Duplicate table definition found: ${filename} -> ${key} (already defined in ${existing.path} -> ${existing.export})`,\n file: relPath,\n });\n continue;\n }\n this._tables.push({\n definition,\n export: key,\n path: relPath,\n });\n }\n }\n } catch (error) {\n // Check if it's an ADK error from expandExports\n if (Errors.isAdkError(error)) {\n // Error is already handled by expandExports, skip this file\n continue;\n }\n\n // Log other import errors with context\n this._warnings.push({\n $type: \"ValidationError\",\n code: ValidationErrorCode.IMPORT_ERROR,\n severity: ValidationSeverity.WARNING,\n message: `Failed to import primitive from ${relPath}: ${error instanceof Error ? error.message : String(error)}`,\n file: relPath,\n hint: \"Ensure the file exports valid primitives and has no syntax errors\",\n });\n }\n }\n } catch (error) {\n throw error;\n }\n }\n}\n",
|
|
25
25
|
"import fs from 'fs/promises';\nimport path from 'path';\nimport crypto from 'crypto';\nimport { Client } from '@botpress/client';\nimport { auth } from '../auth/index.js';\nimport {\n AssetFile,\n LocalAssetFile,\n AssetSyncPlan,\n AssetSyncResult,\n AssetSyncItem,\n AssetSyncOperation,\n AssetSyncOptions,\n AssetsIndex,\n} from './types.js';\nimport { AssetsCacheManager } from './cache.js';\n\nexport interface AssetManagerOptions {\n projectPath: string;\n botId?: string;\n workspaceId?: string;\n}\n\nexport class AssetsManager {\n private projectPath: string;\n private assetsPath: string;\n private client?: Client;\n private botId?: string;\n private workspaceId?: string;\n private cacheManager: AssetsCacheManager;\n\n constructor(options: AssetManagerOptions) {\n this.projectPath = options.projectPath;\n this.assetsPath = path.join(this.projectPath, 'assets');\n this.botId = options.botId;\n this.workspaceId = options.workspaceId;\n this.cacheManager = new AssetsCacheManager(this.projectPath);\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = await auth.getActiveCredentials();\n \n // Use provided workspaceId or fall back to credentials\n const workspaceId = this.workspaceId || credentials.workspaceId;\n \n if (!workspaceId) {\n throw new Error('No workspace ID found. Please login again with \"adk login\" or deploy your agent first.');\n }\n\n if (!this.botId) {\n throw new Error('Bot ID is required for asset operations. Please deploy your agent first or create agent.json with botId and workspaceId.');\n }\n \n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId: workspaceId,\n botId: this.botId,\n });\n }\n return this.client;\n }\n\n private assertBotId(operation: string): void {\n if (!this.botId) {\n throw new Error(\n `Operation \"${operation}\" requires a bot ID. ` +\n 'Please deploy your agent first or create agent.json with botId and workspaceId.'\n );\n }\n }\n\n /**\n * Check if assets directory exists\n */\n async hasAssetsDirectory(): Promise<boolean> {\n try {\n const stats = await fs.stat(this.assetsPath);\n return stats.isDirectory();\n } catch {\n return false;\n }\n }\n\n /**\n * Get all local asset files with their metadata\n */\n async getLocalAssets(): Promise<LocalAssetFile[]> {\n if (!(await this.hasAssetsDirectory())) {\n return [];\n }\n\n const files = await this.scanDirectory(this.assetsPath);\n const assets: LocalAssetFile[] = [];\n\n for (const filePath of files) {\n try {\n const stats = await fs.stat(filePath);\n if (stats.isFile()) {\n const relativePath = path.relative(this.assetsPath, filePath);\n const content = await fs.readFile(filePath);\n const hash = this.calculateHash(content);\n const mime = this.getMimeType(filePath);\n\n assets.push({\n relativePath,\n absolutePath: filePath,\n name: path.basename(filePath),\n size: stats.size,\n mime,\n hash,\n stats: {\n mtime: stats.mtime,\n size: stats.size,\n },\n });\n }\n } catch (error) {\n // Skip files that can't be read\n console.warn(`Warning: Could not read asset file ${filePath}:`, error);\n }\n }\n\n return assets;\n }\n\n /**\n * Get all remote asset files from Botpress\n */\n async getRemoteAssets(): Promise<AssetFile[]> {\n this.assertBotId('get remote assets');\n \n const client = await this.getClient();\n \n try {\n // List files with ADK asset tags (botId is automatically scoped by client)\n const response = await client.listFiles({\n tags: {\n type: 'asset',\n adk: 'true',\n },\n });\n\n return response.files.map(file => ({\n path: file.tags?.path || file.key,\n name: path.basename(file.tags?.path || file.key),\n size: file.size || 0,\n mime: file.contentType,\n hash: file.tags?.hash || '',\n createdAt: file.createdAt,\n updatedAt: file.updatedAt,\n fileId: file.id,\n url: file.url || '',\n }));\n } catch (error) {\n throw new Error(`Failed to fetch remote assets: ${error}`);\n }\n }\n\n /**\n * Create a sync plan comparing local and remote assets\n */\n async createSyncPlan(): Promise<AssetSyncPlan> {\n const [localAssets, remoteAssets] = await Promise.all([\n this.getLocalAssets(),\n this.getRemoteAssets(),\n ]);\n\n const items: AssetSyncItem[] = [];\n const remoteMap = new Map<string, AssetFile>();\n \n // Map remote assets by path\n for (const remote of remoteAssets) {\n remoteMap.set(remote.path, remote);\n }\n\n // Check local files against remote\n for (const local of localAssets) {\n const remote = remoteMap.get(local.relativePath);\n \n if (!remote) {\n // Local file doesn't exist remotely - needs to be created\n items.push({\n operation: AssetSyncOperation.Create,\n localFile: local,\n reason: 'New local file',\n });\n } else if (local.hash !== remote.hash) {\n // File exists but content is different - needs to be updated\n items.push({\n operation: AssetSyncOperation.Update,\n localFile: local,\n remoteFile: remote,\n reason: 'Content changed',\n });\n } else {\n // Files are identical - no operation needed\n items.push({\n operation: AssetSyncOperation.None,\n localFile: local,\n remoteFile: remote,\n reason: 'Up to date',\n });\n }\n \n // Remove from remote map so we can find orphaned remote files\n remoteMap.delete(local.relativePath);\n }\n\n // Remaining remote files don't have local counterparts - need to be deleted\n for (const [, remote] of remoteMap) {\n items.push({\n operation: AssetSyncOperation.Delete,\n remoteFile: remote,\n reason: 'Local file deleted',\n });\n }\n\n // Calculate totals\n const totalCreate = items.filter(i => i.operation === AssetSyncOperation.Create).length;\n const totalUpdate = items.filter(i => i.operation === AssetSyncOperation.Update).length;\n const totalDelete = items.filter(i => i.operation === AssetSyncOperation.Delete).length;\n const hasChanges = totalCreate > 0 || totalUpdate > 0 || totalDelete > 0;\n\n return {\n items,\n totalCreate,\n totalUpdate,\n totalDelete,\n hasChanges,\n };\n }\n\n /**\n * Execute a sync plan\n */\n async executeSync(plan: AssetSyncPlan, options: AssetSyncOptions = {}): Promise<AssetSyncResult> {\n this.assertBotId('sync assets');\n \n if (options.dryRun) {\n return {\n applied: false,\n success: [],\n failed: [],\n summary: {\n created: 0,\n updated: 0,\n deleted: 0,\n failed: 0,\n },\n };\n }\n\n const client = await this.getClient();\n const success: AssetSyncItem[] = [];\n const failed: Array<{ item: AssetSyncItem; error: Error }> = [];\n\n for (const item of plan.items) {\n if (item.operation === AssetSyncOperation.None) {\n success.push(item);\n continue;\n }\n\n try {\n switch (item.operation) {\n case AssetSyncOperation.Create:\n case AssetSyncOperation.Update:\n if (item.localFile) {\n await this.uploadAsset(client, item.localFile);\n success.push(item);\n }\n break;\n \n case AssetSyncOperation.Delete:\n if (item.remoteFile?.fileId) {\n await client.deleteFile({ id: item.remoteFile.fileId });\n success.push(item);\n }\n break;\n }\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n failed.push({ item, error: err });\n \n if (options.bailOnFailure) {\n break;\n }\n }\n }\n\n return {\n applied: true,\n success,\n failed,\n summary: {\n created: success.filter(i => i.operation === AssetSyncOperation.Create).length,\n updated: success.filter(i => i.operation === AssetSyncOperation.Update).length,\n deleted: success.filter(i => i.operation === AssetSyncOperation.Delete).length,\n failed: failed.length,\n },\n };\n }\n\n /**\n * Upload a local asset to Botpress\n */\n private async uploadAsset(client: Client, localFile: LocalAssetFile): Promise<void> {\n const content = await fs.readFile(localFile.absolutePath);\n \n await client.uploadFile({\n key: localFile.relativePath,\n content,\n contentType: localFile.mime,\n tags: {\n type: 'asset',\n adk: 'true',\n path: localFile.relativePath,\n hash: localFile.hash,\n name: localFile.name,\n size: localFile.size.toString(),\n },\n index: true, // Make file searchable\n });\n }\n\n /**\n * Generate TypeScript types for assets\n */\n async generateTypes(): Promise<string> {\n const localAssets = await this.getLocalAssets();\n \n // Generate union type of all asset paths\n const pathUnion = localAssets\n .map(asset => `\"${asset.relativePath}\"`)\n .join(' | ');\n\n const paths = localAssets\n .map(asset => ` \"${asset.relativePath}\": \"${asset.relativePath}\";`)\n .join('\\n');\n\n return `// Auto-generated asset types\nimport { Asset } from '@botpress/runtime';\n\nexport type AssetPaths = ${pathUnion || 'never'};\n\nexport interface AssetPathMap {\n${paths}\n}\n\n// Runtime asset access\ndeclare global {\n const assets: {\n get<T extends AssetPaths>(path: T): Asset;\n list(): Asset[];\n getSyncStatus(): { \n synced: boolean; \n neverSynced: string[]; \n stale: string[];\n upToDate: string[];\n };\n };\n}\n`;\n }\n\n /**\n * Create an assets index file\n */\n async createAssetsIndex(): Promise<AssetsIndex> {\n const remoteAssets = await this.getRemoteAssets();\n \n return {\n files: remoteAssets,\n generatedAt: new Date().toISOString(),\n totalFiles: remoteAssets.length,\n totalSize: remoteAssets.reduce((sum, asset) => sum + asset.size, 0),\n };\n }\n\n /**\n * Get enriched local assets with remote metadata when available\n * Uses cache to avoid unnecessary API calls\n */\n async getEnrichedLocalAssets(): Promise<AssetFile[]> {\n const localAssets = await this.getLocalAssets();\n const enrichedAssets: AssetFile[] = [];\n\n // Try to get client if credentials are available\n let remoteAssetsMap: Map<string, AssetFile> = new Map();\n try {\n if (this.botId) {\n const remoteAssets = await this.getRemoteAssets();\n remoteAssetsMap = new Map(remoteAssets.map(asset => [asset.path, asset]));\n }\n } catch (error) {\n // If we can't fetch remote assets, we'll use cache or placeholders\n console.debug('Could not fetch remote assets:', error);\n }\n\n for (const localAsset of localAssets) {\n const cachedEntry = await this.cacheManager.getEntry(localAsset.relativePath);\n const remoteAsset = remoteAssetsMap.get(localAsset.relativePath);\n \n if (cachedEntry) {\n // We have cached metadata - use it and update the cache with current hashes\n enrichedAssets.push(cachedEntry.metadata);\n await this.cacheManager.setEntry(\n localAsset.relativePath,\n localAsset.hash,\n cachedEntry.remoteHash,\n cachedEntry.metadata\n );\n } else if (remoteAsset) {\n // No cache but we have remote - use remote and cache it\n enrichedAssets.push(remoteAsset);\n await this.cacheManager.setEntry(\n localAsset.relativePath,\n localAsset.hash,\n remoteAsset.hash,\n remoteAsset\n );\n } else {\n // No cache and no remote - create placeholder\n const placeholderAsset: AssetFile = {\n url: `__PLACEHOLDER_URL_${localAsset.relativePath}__`,\n path: localAsset.relativePath,\n size: localAsset.size,\n name: localAsset.name,\n mime: localAsset.mime,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n fileId: `__PLACEHOLDER_ID_${localAsset.relativePath}__`,\n hash: localAsset.hash,\n };\n enrichedAssets.push(placeholderAsset);\n }\n }\n\n return enrichedAssets;\n }\n\n // Private utility methods\n\n private async scanDirectory(dir: string, files: string[] = []): Promise<string[]> {\n const items = await fs.readdir(dir);\n \n for (const item of items) {\n const fullPath = path.join(dir, item);\n const stats = await fs.stat(fullPath);\n \n if (stats.isDirectory()) {\n await this.scanDirectory(fullPath, files);\n } else {\n files.push(fullPath);\n }\n }\n \n return files;\n }\n\n private calculateHash(content: Buffer): string {\n return crypto.createHash('sha256').update(content).digest('hex');\n }\n\n private getMimeType(filePath: string): string {\n const ext = path.extname(filePath).toLowerCase();\n \n const mimeTypes: Record<string, string> = {\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.gif': 'image/gif',\n '.svg': 'image/svg+xml',\n '.webp': 'image/webp',\n '.pdf': 'application/pdf',\n '.txt': 'text/plain',\n '.md': 'text/markdown',\n '.html': 'text/html',\n '.css': 'text/css',\n '.js': 'application/javascript',\n '.json': 'application/json',\n '.xml': 'application/xml',\n '.zip': 'application/zip',\n '.mp4': 'video/mp4',\n '.webm': 'video/webm',\n '.mp3': 'audio/mpeg',\n '.wav': 'audio/wav',\n '.ogg': 'audio/ogg',\n };\n \n return mimeTypes[ext] || 'application/octet-stream';\n }\n}",
|
|
26
26
|
"import fs from 'fs/promises';\nimport path from 'path';\nimport { AssetFile } from './types.js';\nimport { defaultAdkFolder } from '../const.js';\n\nexport interface AssetsCacheEntry {\n path: string;\n localHash: string;\n remoteHash: string;\n metadata: AssetFile;\n lastUpdated: string;\n}\n\nexport interface AssetsCache {\n version: string;\n entries: Record<string, AssetsCacheEntry>;\n}\n\nexport class AssetsCacheManager {\n private cachePath: string;\n private cache: AssetsCache | null = null;\n\n constructor(private projectPath: string) {\n this.cachePath = path.join(projectPath, defaultAdkFolder, 'assets-cache.json');\n }\n\n async load(): Promise<AssetsCache> {\n if (this.cache) {\n return this.cache;\n }\n\n try {\n const content = await fs.readFile(this.cachePath, 'utf-8');\n this.cache = JSON.parse(content);\n return this.cache!;\n } catch (error) {\n // Cache doesn't exist or is invalid, create new one\n this.cache = {\n version: '1.0',\n entries: {}\n };\n return this.cache;\n }\n }\n\n async save(): Promise<void> {\n if (!this.cache) {\n return;\n }\n\n const cacheDir = path.dirname(this.cachePath);\n await fs.mkdir(cacheDir, { recursive: true });\n await fs.writeFile(\n this.cachePath,\n JSON.stringify(this.cache, null, 2),\n 'utf-8'\n );\n }\n\n async getEntry(assetPath: string): Promise<AssetsCacheEntry | null> {\n const cache = await this.load();\n return cache.entries[assetPath] || null;\n }\n\n async setEntry(assetPath: string, localHash: string, remoteHash: string, metadata: AssetFile): Promise<void> {\n const cache = await this.load();\n cache.entries[assetPath] = {\n path: assetPath,\n localHash,\n remoteHash,\n metadata,\n lastUpdated: new Date().toISOString()\n };\n await this.save();\n }\n\n async isStale(assetPath: string): Promise<boolean> {\n const entry = await this.getEntry(assetPath);\n if (!entry) return false;\n return entry.localHash !== entry.remoteHash;\n }\n\n async removeEntry(assetPath: string): Promise<void> {\n const cache = await this.load();\n delete cache.entries[assetPath];\n await this.save();\n }\n\n async clear(): Promise<void> {\n this.cache = {\n version: '1.0',\n entries: {}\n };\n await this.save();\n }\n\n async getAllEntries(): Promise<AssetsCacheEntry[]> {\n const cache = await this.load();\n return Object.values(cache.entries);\n }\n}",
|
|
27
27
|
"export const defaultAdkFolder = \".adk\";\n//\n",
|
|
@@ -47,20 +47,21 @@
|
|
|
47
47
|
"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 {\n ADK_VERSION,\n relative,\n toMultilineComment,\n formatCode,\n} 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) =>\n 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 },\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 },\n});\n\nexport async function generateIntegrationTypes(\n integration: ParsedIntegration\n): 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\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\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 };\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(\n integration.definition!.actions\n )) {\n const input = transforms\n .fromJSONSchema(action.input.schema)\n .toTypescriptType();\n\n const output = transforms\n .fromJSONSchema(action.output.schema)\n .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(\n integration.definition?.channels || {}\n )) {\n const convoTagsRecord =\n \"{\" +\n Object.keys(channelDef.conversation?.tags || {}).reduce((acc, t) => {\n const tag = channelDef.conversation.tags[t]!;\n const comment = toMultilineComment(\n `Title: ${tag?.title}\\nDescription: ${tag.description}`\n );\n acc += `${comment}\\n[\"${integration.definition!.name}:${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(\n `Title: ${tag?.title}\\nDescription: ${tag.description}`\n );\n acc += `${comment}\\n[\"${integration.definition!.name}:${t}\"]?: string,\\n`;\n return acc;\n }, \"\") +\n \"}\";\n\n let messagesBlock = \"\";\n for (const [messageName, messageDef] of Object.entries(\n channelDef.messages || {}\n )) {\n const messageType = transforms\n .fromJSONSchema(messageDef.schema)\n .toTypescriptType();\n\n messagesBlock += `\\n\"${messageName}\": ${messageType};\\n`;\n }\n\n tChannels += `\n ${toMultilineComment(\n `Title: ${channelDef.title || channelName}\\nDescription: ${\n channelDef.description || \"No description\"\n }`\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(\n integration.definition!.events || {}\n )) {\n const payloadType = transforms\n .fromJSONSchema(event.schema)\n .toTypescriptType();\n\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: ${\n event.description || \"No description\"\n }${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(\n `Title: ${tag?.title}\\nDescription: ${tag?.description}`\n );\n return `${comment}\\n\"${integration.definition?.name}:${t}\"\\n`;\n })\n .join(\" | \")\n : \"never\";\n\n tUsers += `\n tags: ${userTagsUnion};\n };\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 },\n };\n}\n",
|
|
48
48
|
"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}",
|
|
49
49
|
"export function getIntegrationAlias(integrationName: string) {\n return integrationName.replace(/\\//g, \"__\").replace(/-/g, \"_\").toLowerCase();\n}\n",
|
|
50
|
-
"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 { generateWorkflowTypes } from \"../generators/workflow-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 { 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 {\n BuiltInWorkflows,\n Primitives,\n Workflow,\n} from \"@botpress/runtime/internal\";\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\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(\n options.outputPath || path.join(this.projectPath, \".adk\")\n );\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.generateStateTypes();\n await this.generateWorkflowTypes();\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 const integrations = await manager.loadIntegrations(\n project.dependencies || {}\n );\n\n // List existing files before generation (.adk/integrations)\n const integrationsDir = path.join(this.projectPath, \".adk\", \"integrations\");\n const existingIntegrationFiles =\n await this.listFilesRecursive(integrationsDir);\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/integrations)\n\n // Generate imports for each integration\n for (const integration of integrations.integrations) {\n if (integration.enabled && integration.definition) {\n const types = await generateIntegrationTypes(integration);\n\n imports.add(\n `import { ${types.names.typings.index} } from \"./${path.join(\"integrations\", types.names.paths.index)}\";`\n );\n\n aliases.add(`\"${integration.alias}\": ${types.names.typings.index}`);\n\n for (const [filePath, content] of Object.entries(types.files)) {\n const fullPath = path.join(\n this.projectPath,\n \".adk\",\n \"integrations\",\n filePath\n );\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 // File: integrations.ts\n ////////////////////////////////////////////////////////\n\n ${Array.from(imports).join(\"\\n\")}\n\n declare global {\n export type Integrations = {\n ${Array.from(aliases).join(`, `)}\n };\n }\n `;\n\n await createFile(\n path.join(this.projectPath, \".adk\", \"integrations.d.ts\"),\n await formatCode(types)\n );\n\n // Cleanup stale integration files\n const staleIntegrationFiles = existingIntegrationFiles.filter(\n (f) => !files.has(f)\n );\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 generateStateTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath);\n await generateStateTypes(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 generateActionTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath);\n const { generateActionTypes } = await import(\n \"../generators/action-types.js\"\n );\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(\n \"../generators/integration-action-types.js\"\n );\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 // 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\nimport { Primitives, ZuiType } from \"@botpress/runtime\";\n\ndeclare module \"@botpress/runtime\" {\n export type Channels = {\n [K in keyof Integrations]: {\n [C in keyof Integrations[K][\"channels\"]]: C extends string\n ? \\`\\${K}.\\${C}\\`\n : never;\n }[keyof Integrations[K][\"channels\"]];\n }[keyof Integrations];\n\n export class Conversation<\n T extends Channels = Channels,\n Schema extends ZuiType = ZuiType,\n > extends Primitives.BaseConversation<Integrations, T, Schema> {}\n\n}\n\ndeclare module \"@botpress/runtime/_types/state\" {\n export type BotState = ${botStateType};\n export type UserState = ${userStateType};\n}\n\nexport {};\n`;\n\n await createFile(\n path.join(this.projectPath, \".adk\", \"runtime.d.ts\"),\n await formatCode(types)\n );\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 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) =>\n result.interfaces\n .filter((int) => int.definition)\n .map((x) => x.definition!)\n );\n\n const integrations = await integrationManager\n .loadIntegrations(project.dependencies || {})\n .then((result) =>\n result.integrations\n .filter((int) => int.enabled && int.definition)\n .map((x) => 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, integrations);\n\n imports.add(\n `import { ${types.names.typings.index} } from \"./${path.join(\"interfaces\", types.names.paths.index)}\";`\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(\n this.projectPath,\n \".adk\",\n \"interfaces\",\n filePath\n );\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(\n path.join(this.projectPath, \".adk\", \"interfaces.d.ts\"),\n await formatCode(types)\n );\n\n await createFile(\n path.join(this.projectPath, \".adk\", \"interfaces.ts\"),\n await formatCode(consts)\n );\n\n // Cleanup stale interface files\n const staleInterfaceFiles = existingInterfaceFiles.filter(\n (f) => !files.has(f)\n );\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 for (const alias of Object.keys(integrations).map(getIntegrationAlias)) {\n imports.push(\n `import integration_${alias} from \"../bp_modules/integration_${alias}\";`\n );\n integrationDefs.push(`${alias}: integration_${alias}`);\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(\n path.join(this.outputPath, \"src\", \"integrations.ts\"),\n content\n );\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(\n `import interface_${pascalAlias} from \"../bp_modules/interface_${pascalAlias}\";`\n );\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(\n path.join(this.outputPath, \"src\", \"interfaces.ts\"),\n await formatCode(content)\n );\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 { alias } of integrations.filter((i) => i.enabled)) {\n const importName = `integration_${getIntegrationAlias(alias)}`;\n imports.push(`import ${importName} from \"./bp_modules/${importName}\";`);\n addIntegrations.push(`bot.addIntegration(${importName});`);\n }\n\n // Generate trigger tags for conversations\n const conversationTags: Record<string, any> = {};\n const workflowTags: Record<string, any> = {};\n\n // Helper to hash strings - creates short uppercase hashes\n const crypto = require(\"crypto\");\n const hashString = (str: string) => {\n return crypto\n .createHash(\"md5\")\n .update(str)\n .digest(\"hex\")\n .substring(0, 5)\n .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 ||\n workflowModule[workflow.export]) as Workflow | undefined;\n\n if (workflowInstance) {\n workflowInstances.push(workflowInstance);\n }\n } catch (error) {\n console.error(\n `Failed to load workflow ${workflow.definition.name}:`,\n error\n );\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\n .fromJSONSchema(definition.input)\n .naked()\n .toTypescriptSchema()\n : \"z.object({})\";\n\n const outputSchema = definition.output\n ? transforms\n .fromJSONSchema(definition.output)\n .naked()\n .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 the key tag for workflow discrimination\n parts.push(`tags: {\n key: {\n title: \"Workflow Key\",\n description: \"Unique key for workflow deduplication\"\n }\n }`);\n\n workflowDefs.push(\n `\"${definition.name}\": {\\n ${parts.join(\",\\n \")}\\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 content = dedent`\n import { BotDefinition, z } from \"@botpress/sdk\";\n import {\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 conversation: {\n tags: {\n ${Object.entries(conversationTags)\n .map(\n ([tag, meta]) =>\n `// ${meta.title}\\n // ${meta.description}\\n \"${tag}\": ${JSON.stringify(meta)}`\n )\n .join(\",\\n \")}\n },\n },\n ${\n Object.keys(workflowTags).length > 0\n ? `workflow: {\n tags: {\n ${Object.entries(workflowTags)\n .map(\n ([tag, meta]) =>\n `// ${meta.title}\\n // ${meta.description}\\n \"${tag}\": ${JSON.stringify(meta)}`\n )\n .join(\",\\n \")}\n },\n },`\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)\n parts.push(`description: ${JSON.stringify(def.description)}`);\n if (def.attributes)\n parts.push(`attributes: ${JSON.stringify(def.attributes)}`);\n parts.push(\n `input: { schema: ${transforms.fromJSONSchema(def.input).toTypescriptSchema()} }`\n );\n parts.push(\n `output: { schema: ${transforms.fromJSONSchema(def.output).toTypescriptSchema()} }`\n );\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) => `\"${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 },\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 state: {\n type: \"conversation\",\n schema: TrackedStateSchema,\n },\n\n /**\n * Bot-wide global state that persists across all conversations\n */\n botState: {\n type: \"bot\",\n schema: TrackedStateSchema,\n },\n\n /**\n * User-specific state that persists across conversations for each user\n */\n userState: {\n type: \"user\",\n schema: TrackedStateSchema,\n },\n\n /**\n * Workflow-specific state that persists across workflow executions\n */\n workflowState: {\n type: \"workflow\",\n schema: TrackedStateSchema,\n },\n\n /**\n * Workflow cached steps executions\n */\n workflowSteps: {\n type: \"workflow\",\n schema: TrackedStateSchema,\n },\n },\n });\n\n ${addIntegrations.length > 0 ? \"\\n\" + addIntegrations.join(\"\\n\") : \"\"}\n\n\n export default bot;\n `;\n\n await createFile(\n path.join(this.outputPath, \"bot.definition.ts\"),\n await formatCode(content)\n );\n }\n\n private async generateBotIndex(): Promise<void> {\n const project = await AgentProject.load(this.projectPath);\n\n // Generate action handlers\n const actionHandlers: string[] = [];\n for (const action of project.actions) {\n const def = action.definition;\n actionHandlers.push(\n `\"${def.name}\": Actions[\"${def.name}\"].execute.bind(Actions[\"${def.name}\"])`\n );\n }\n\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} from '@botpress/runtime/internal'\n\n const bot = new bp.Bot({\n actions: {\n ${actionHandlers.join(\",\\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 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 console.log(\"[Worker] Initializing child worker...\");\n runWorker(bot);\n setupAdkRuntime(bot);\n } else {\n // Branch 3: Worker mode disabled - single-thread mode\n console.log(\"[Bot] Running in single-thread mode\");\n setupAdkRuntime(bot);\n }\n\n export default bot\n `;\n\n await createFile(\n path.join(this.outputPath, \"src\", \"index.ts\"),\n await formatCode(content)\n );\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 \"@botpress/client\": \"1.24.2\",\n \"@botpress/sdk\": \"4.15.7\",\n \"@botpress/runtime\": \"workspace:*\",\n },\n devDependencies: {\n \"@types/node\": \"^22.16.4\",\n typescript: \"^5.6.3\",\n },\n };\n\n await createFile(\n path.join(this.outputPath, \"package.json\"),\n JSON.stringify(packageJson, null, 2)\n );\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: [\n \".botpress/**/*\",\n \"src/**/*\",\n \"bp_modules/**/*\",\n \"./*.ts\",\n \"./*.json\",\n ],\n };\n\n await createFile(\n path.join(this.outputPath, \"tsconfig.json\"),\n JSON.stringify(tsConfig, null, 2)\n );\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(\n path.join(this.outputPath, \"global.d.ts\"),\n await formatCode(content)\n );\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 = path\n .relative(\n path.dirname(dest),\n path.join(project.path, conversation.path)\n )\n .replace(/\\.ts$/, \"\");\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 = path\n .relative(\n path.dirname(dest),\n path.join(project.path, knowledge.path)\n )\n .replace(/\\.ts$/, \"\");\n\n imports.set(knowledge.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n });\n }\n\n exports.add(\n `\"${knowledge.definition.name}\": ${imports.get(knowledge.path)!.name}.${knowledge.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: 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 = path\n .relative(path.dirname(dest), path.join(project.path, trigger.path))\n .replace(/\\.ts$/, \"\");\n\n imports.set(trigger.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n });\n }\n\n exports.add(\n `\"${trigger.definition.name}\": ${imports.get(trigger.path)!.name}.${trigger.export}`\n );\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 =\n 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\n .fromJSONSchema(jsonSchema)\n .toTypescriptType();\n payloadTypes[trigger.definition.name] = payloadType;\n } else {\n payloadTypes[trigger.definition.name] = \"{}\";\n }\n } catch (error) {\n console.warn(\n `Warning: Could not process trigger ${trigger.definition.name}:`,\n error\n );\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 = path\n .relative(\n path.dirname(dest),\n path.join(project.path, workflow.path)\n )\n .replace(/\\.ts$/, \"\");\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(\n `\"${workflow.definition.name}\": ${importEntry.name}.${exportStatement}`\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: 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 (!imports.has(action.path)) {\n const name = `actions_${index++}`;\n const importPath = path\n .relative(path.dirname(dest), path.join(project.path, action.path))\n .replace(/\\.ts$/, \"\");\n\n imports.set(action.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n });\n }\n\n exports.add(\n `\"${action.definition.name}\": ${imports.get(action.path)!.name}.${action.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: 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 = path\n .relative(path.dirname(dest), path.join(project.path, table.path))\n .replace(/\\.ts$/, \"\");\n\n imports.set(table.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n });\n }\n\n exports.add(\n `\"${table.definition.name}\": ${imports.get(table.path)!.name}.${table.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: 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 = path\n .relative(\n path.dirname(dest),\n path.join(project.path, \"agent.config.ts\")\n )\n .replace(/\\.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 }\n `;\n\n await createFile(\n path.join(this.outputPath, \"src\", \"adk-runtime.ts\"),\n await formatCode(content)\n );\n }\n\n async copyAssetsRuntime(): Promise<void> {\n const assetsRuntimePath = path.join(\n this.projectPath,\n \".adk\",\n \"assets-runtime.ts\"\n );\n if (existsSync(assetsRuntimePath)) {\n const content = await fs.readFile(assetsRuntimePath, \"utf-8\");\n await createFile(\n path.join(this.outputPath, \"src\", \"assets-runtime.ts\"),\n await formatCode(content)\n );\n }\n }\n}\n\nexport async function generateBotProject(\n options: BotGeneratorOptions\n): Promise<void> {\n const generator = new BotGenerator(options);\n await generator.generate();\n await generator.generateAdkRuntime();\n await generator.copyAssetsRuntime();\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",
|
|
50
|
+
"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 { 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 { 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 {\n BuiltInWorkflows,\n Primitives,\n Workflow,\n} from \"@botpress/runtime/internal\";\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\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(\n options.outputPath || path.join(this.projectPath, \".adk\")\n );\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.generateStateTypes();\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 const integrations = await manager.loadIntegrations(\n project.dependencies || {}\n );\n\n // List existing files before generation (.adk/integrations)\n const integrationsDir = path.join(this.projectPath, \".adk\", \"integrations\");\n const existingIntegrationFiles =\n 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.enabled && 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)}`;\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(\n this.projectPath,\n \".adk\",\n \"integrations\",\n filePath\n );\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 // File: integrations.ts\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(\n path.join(this.projectPath, \".adk\", \"integrations.d.ts\"),\n await formatCode(types)\n );\n\n // Cleanup stale integration files\n const staleIntegrationFiles = existingIntegrationFiles.filter(\n (f) => !files.has(f)\n );\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 generateStateTypes(): Promise<void> {\n const project = await AgentProject.load(this.projectPath);\n await generateStateTypes(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(\n \"../generators/action-types.js\"\n );\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(\n \"../generators/integration-action-types.js\"\n );\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 const integrations = await manager.loadIntegrations(\n project.dependencies || {}\n );\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(\n path.join(this.projectPath, \".adk\", \"runtime.d.ts\"),\n await formatCode(types)\n );\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 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) =>\n result.interfaces\n .filter((int) => int.definition)\n .map((x) => x.definition!)\n );\n\n const integrations = await integrationManager\n .loadIntegrations(project.dependencies || {})\n .then((result) =>\n result.integrations\n .filter((int) => int.enabled && int.definition)\n .map((x) => 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, integrations);\n\n imports.add(\n `import { ${types.names.typings.index} } from \"./${path.join(\"interfaces\", types.names.paths.index)}\";`\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(\n this.projectPath,\n \".adk\",\n \"interfaces\",\n filePath\n );\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(\n path.join(this.projectPath, \".adk\", \"interfaces.d.ts\"),\n await formatCode(types)\n );\n\n await createFile(\n path.join(this.projectPath, \".adk\", \"interfaces.ts\"),\n await formatCode(consts)\n );\n\n // Cleanup stale interface files\n const staleInterfaceFiles = existingInterfaceFiles.filter(\n (f) => !files.has(f)\n );\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 for (const alias of Object.keys(integrations).map(getIntegrationAlias)) {\n imports.push(\n `import integration_${alias} from \"../bp_modules/integration_${alias}\";`\n );\n integrationDefs.push(`${alias}: integration_${alias}`);\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(\n path.join(this.outputPath, \"src\", \"integrations.ts\"),\n content\n );\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(\n `import interface_${pascalAlias} from \"../bp_modules/interface_${pascalAlias}\";`\n );\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(\n path.join(this.outputPath, \"src\", \"interfaces.ts\"),\n await formatCode(content)\n );\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 { alias } of integrations.filter((i) => i.enabled)) {\n const importName = `integration_${getIntegrationAlias(alias)}`;\n imports.push(`import ${importName} from \"./bp_modules/${importName}\";`);\n addIntegrations.push(`bot.addIntegration(${importName});`);\n }\n\n // Generate trigger tags for conversations\n const conversationTags: Record<string, any> = {};\n const workflowTags: Record<string, any> = {};\n\n // Helper to hash strings - creates short uppercase hashes\n const crypto = require(\"crypto\");\n const hashString = (str: string) => {\n return crypto\n .createHash(\"md5\")\n .update(str)\n .digest(\"hex\")\n .substring(0, 5)\n .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 ||\n workflowModule[workflow.export]) as Workflow | undefined;\n\n if (workflowInstance) {\n workflowInstances.push(workflowInstance);\n }\n } catch (error) {\n console.error(\n `Failed to load workflow ${workflow.definition.name}:`,\n error\n );\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\n .fromJSONSchema(definition.input)\n .naked()\n .toTypescriptSchema()\n : \"z.object({})\";\n\n const outputSchema = definition.output\n ? transforms\n .fromJSONSchema(definition.output)\n .naked()\n .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 the key tag for workflow discrimination\n parts.push(`tags: {\n key: {\n title: \"Workflow Key\",\n description: \"Unique key for workflow deduplication\"\n }\n }`);\n\n workflowDefs.push(\n `\"${definition.name}\": {\\n ${parts.join(\",\\n \")}\\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 content = dedent`\n import { BotDefinition, z } from \"@botpress/sdk\";\n import {\n BUILT_IN_STATES,\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 conversation: {\n tags: {\n ${Object.entries(conversationTags)\n .map(\n ([tag, meta]) =>\n `// ${meta.title}\\n // ${meta.description}\\n \"${tag}\": ${JSON.stringify(meta)}`\n )\n .join(\",\\n \")}\n },\n },\n ${\n Object.keys(workflowTags).length > 0\n ? `workflow: {\n tags: {\n ${Object.entries(workflowTags)\n .map(\n ([tag, meta]) =>\n `// ${meta.title}\\n // ${meta.description}\\n \"${tag}\": ${JSON.stringify(meta)}`\n )\n .join(\",\\n \")}\n },\n },`\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)\n parts.push(`description: ${JSON.stringify(def.description)}`);\n if (def.attributes)\n parts.push(`attributes: ${JSON.stringify(def.attributes)}`);\n parts.push(\n `input: { schema: ${transforms.fromJSONSchema(def.input).toTypescriptSchema()} }`\n );\n parts.push(\n `output: { schema: ${transforms.fromJSONSchema(def.output).toTypescriptSchema()} }`\n );\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) => `\"${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 },\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\n ${addIntegrations.length > 0 ? \"\\n\" + addIntegrations.join(\"\\n\") : \"\"}\n\n\n export default bot;\n `;\n\n await createFile(\n path.join(this.outputPath, \"bot.definition.ts\"),\n await formatCode(content)\n );\n }\n\n private async generateBotIndex(): Promise<void> {\n const project = await AgentProject.load(this.projectPath);\n\n // Generate action handlers\n const actionHandlers: string[] = [];\n for (const action of project.actions) {\n const def = action.definition;\n actionHandlers.push(\n `\"${def.name}\": Actions[\"${def.name}\"].execute.bind(Actions[\"${def.name}\"])`\n );\n }\n\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} from '@botpress/runtime/internal'\n\n const bot = new bp.Bot({\n actions: {\n ${actionHandlers.join(\",\\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(\n path.join(this.outputPath, \"src\", \"index.ts\"),\n await formatCode(content)\n );\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 \"@botpress/client\": \"1.24.2\",\n \"@botpress/sdk\": \"4.15.7\",\n \"@botpress/runtime\": \"workspace:*\",\n },\n devDependencies: {\n \"@types/node\": \"^22.16.4\",\n typescript: \"^5.6.3\",\n },\n };\n\n await createFile(\n path.join(this.outputPath, \"package.json\"),\n JSON.stringify(packageJson, null, 2)\n );\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: [\n \".botpress/**/*\",\n \"src/**/*\",\n \"bp_modules/**/*\",\n \"./*.ts\",\n \"./*.json\",\n ],\n };\n\n await createFile(\n path.join(this.outputPath, \"tsconfig.json\"),\n JSON.stringify(tsConfig, null, 2)\n );\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(\n path.join(this.outputPath, \"global.d.ts\"),\n await formatCode(content)\n );\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 = path\n .relative(\n path.dirname(dest),\n path.join(project.path, conversation.path)\n )\n .replace(/\\.ts$/, \"\");\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 = path\n .relative(\n path.dirname(dest),\n path.join(project.path, knowledge.path)\n )\n .replace(/\\.ts$/, \"\");\n\n imports.set(knowledge.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n });\n }\n\n exports.add(\n `\"${knowledge.definition.name}\": ${imports.get(knowledge.path)!.name}.${knowledge.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: 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 = path\n .relative(path.dirname(dest), path.join(project.path, trigger.path))\n .replace(/\\.ts$/, \"\");\n\n imports.set(trigger.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n });\n }\n\n exports.add(\n `\"${trigger.definition.name}\": ${imports.get(trigger.path)!.name}.${trigger.export}`\n );\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 =\n 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\n .fromJSONSchema(jsonSchema)\n .toTypescriptType();\n payloadTypes[trigger.definition.name] = payloadType;\n } else {\n payloadTypes[trigger.definition.name] = \"{}\";\n }\n } catch (error) {\n console.warn(\n `Warning: Could not process trigger ${trigger.definition.name}:`,\n error\n );\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 = path\n .relative(\n path.dirname(dest),\n path.join(project.path, workflow.path)\n )\n .replace(/\\.ts$/, \"\");\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(\n `\"${workflow.definition.name}\": ${importEntry.name}.${exportStatement}`\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: 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 (!imports.has(action.path)) {\n const name = `actions_${index++}`;\n const importPath = path\n .relative(path.dirname(dest), path.join(project.path, action.path))\n .replace(/\\.ts$/, \"\");\n\n imports.set(action.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n });\n }\n\n exports.add(\n `\"${action.definition.name}\": ${imports.get(action.path)!.name}.${action.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: 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 = path\n .relative(path.dirname(dest), path.join(project.path, table.path))\n .replace(/\\.ts$/, \"\");\n\n imports.set(table.path, {\n name,\n statement: `import * as ${name} from \"${importPath}\";`,\n });\n }\n\n exports.add(\n `\"${table.definition.name}\": ${imports.get(table.path)!.name}.${table.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: 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 = path\n .relative(\n path.dirname(dest),\n path.join(project.path, \"agent.config.ts\")\n )\n .replace(/\\.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 }\n `;\n\n await createFile(\n path.join(this.outputPath, \"src\", \"adk-runtime.ts\"),\n await formatCode(content)\n );\n }\n\n async copyAssetsRuntime(): Promise<void> {\n const assetsRuntimePath = path.join(\n this.projectPath,\n \".adk\",\n \"assets-runtime.ts\"\n );\n if (existsSync(assetsRuntimePath)) {\n const content = await fs.readFile(assetsRuntimePath, \"utf-8\");\n await createFile(\n path.join(this.outputPath, \"src\", \"assets-runtime.ts\"),\n await formatCode(content)\n );\n }\n }\n}\n\nexport async function generateBotProject(\n options: BotGeneratorOptions\n): Promise<void> {\n const generator = new BotGenerator(options);\n await generator.generate();\n await generator.generateAdkRuntime();\n await generator.copyAssetsRuntime();\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",
|
|
51
51
|
"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 {\n ADK_VERSION,\n formatCode,\n relative,\n toMultilineComment,\n} 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\nconst getInterfaceHash = (\n int: Interface,\n integrations: Integration[]\n): string => {\n const versions = integrations\n .filter((x) => !!getIntegrationInterface(x, int))\n .map((x) => `${x.id}|${x.version}|${x.updatedAt}`)\n .sort()\n .join(\"|\");\n\n return crypto\n .createHash(\"sha256\")\n .update(`${int.id}|${int.version}|${int.updatedAt}|${versions}`)\n .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: Integration[]\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, int))\n .sort((a, b) => a.name.localeCompare(b.name));\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.name).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 integration of implementors) {\n iActions += `\n // Integration: ${integration.name} (${integration.version})\n // Updated at: ${integration.updatedAt}\n \"${integration.name}\": {`;\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\n .fromJSONSchema(action.input.schema)\n .dereference(entities)\n .toTypescriptType();\n\n const output = transforms\n .fromJSONSchema(action.output.schema)\n .dereference(entities)\n .toTypescriptType();\n\n cActions.add(\n `\"${integration.name}:${name}\": \"${integration.name}:${mapping}\"`\n );\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.name).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",
|
|
52
52
|
"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<\n string,\n { type: string; computed?: boolean; searchable?: boolean }\n >;\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<\n string,\n { type: string; computed?: boolean; searchable?: boolean }\n > = {};\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 (\n typeof colDef === \"object\" &&\n colDef !== null &&\n \"schema\" in colDef\n ) {\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\n ? schema.toTypescriptType()\n : \"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(\n ([name, col]) => ` ${name}: ${col.type};`\n ),\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",
|
|
53
53
|
"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(\n project: AgentProject\n): 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(\n project.path,\n \".adk\",\n \"trigger-types.d.ts\"\n );\n await createFile(triggerTypesPath, await formatCode(content));\n}\n",
|
|
54
54
|
"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 async function generateStateTypes(project: AgentProject): Promise<void> {\n let botStateType = \"{}\";\n let userStateType = \"{}\";\n\n // Load the agent config to get state schemas\n try {\n const configPath = path.join(project.path, \"agent.config.ts\");\n // Bust module cache to ensure fresh config on type generation\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 // Generate the type definitions\n const content = `\n////////////////////////////////////////////////////////\n// DO NOT EDIT THIS FILE DIRECTLY\n// This file is auto-generated from the Botpress ADK\n// ADK Version: ${ADK_VERSION}\n// Generated at: ${new Date().toISOString()}\n////////////////////////////////////////////////////////\n\ndeclare module \"@botpress/runtime/_types/state\" {\n export type BotState = ${botStateType};\n export type UserState = ${userStateType};\n}\n`;\n\n // Write to state-types.d.ts in the .adk folder\n const stateTypesPath = path.join(project.path, \".adk\", \"state-types.d.ts\");\n await createFile(stateTypesPath, await formatCode(content));\n}",
|
|
55
|
-
"import * as path from \"path\";\nimport { AgentProject } from \"../agent-project/index.js\";\nimport { formatCode } from \"../generators/utils.js\";\nimport { createFile } from \"../utils/fs.js\";\nimport { BuiltInWorkflows } from \"@botpress/runtime/internal\";\n\nexport type WorkflowTypeInfo = {\n name: string;\n input: string;\n output: string;\n state: string;\n requests: string;\n};\n\nfunction isBuiltinWorkflow(name: string): boolean {\n return !!Object.values(BuiltInWorkflows).find((x) => x.name === name);\n}\n\nexport async function generateWorkflowTypes(\n project: AgentProject\n): Promise<void> {\n const workflows: WorkflowTypeInfo[] = [];\n\n // Load and process each workflow\n for (const workflowRef of project.workflows) {\n try {\n if (isBuiltinWorkflow(workflowRef.definition.name)) {\n // Skip built-in workflows - they're not importable from file paths\n continue;\n }\n\n const workflowPath = path.join(project.path, workflowRef.path);\n // Bust module cache to ensure fresh workflow on type generation\n const workflowModule = await import(`${workflowPath}?t=${Date.now()}`);\n\n const workflowInstance =\n workflowModule[workflowRef.export] || workflowModule.default;\n\n if (!workflowInstance) {\n
|
|
56
|
-
"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
|
|
55
|
+
"import * as path from \"path\";\nimport { AgentProject } from \"../agent-project/index.js\";\nimport { formatCode } from \"../generators/utils.js\";\nimport { createFile } from \"../utils/fs.js\";\nimport { BuiltInWorkflows } from \"@botpress/runtime/internal\";\n\nexport type WorkflowTypeInfo = {\n name: string;\n input: string;\n output: string;\n state: string;\n requests: string;\n};\n\nfunction isBuiltinWorkflow(name: string): boolean {\n return !!Object.values(BuiltInWorkflows).find((x) => x.name === name);\n}\n\nexport async function generateWorkflowTypes(\n project: AgentProject\n): Promise<void> {\n const workflows: WorkflowTypeInfo[] = [];\n\n // Load and process each workflow\n for (const workflowRef of project.workflows) {\n try {\n if (isBuiltinWorkflow(workflowRef.definition.name)) {\n // Skip built-in workflows - they're not importable from file paths\n continue;\n }\n\n const workflowPath = path.join(project.path, workflowRef.path);\n // Bust module cache to ensure fresh workflow on type generation\n const workflowModule = await import(`${workflowPath}?t=${Date.now()}`);\n\n const workflowInstance =\n workflowModule[workflowRef.export] || workflowModule.default;\n\n if (!workflowInstance) {\n continue;\n }\n\n // Extract schemas and convert to TypeScript types\n const inputType = workflowInstance.inputSchema\n ? (workflowInstance.inputSchema as any).toTypescriptType?.() || \"any\"\n : \"{}\";\n\n const outputType = workflowInstance.outputSchema\n ? (workflowInstance.outputSchema as any).toTypescriptType?.() || \"any\"\n : \"{}\";\n\n const stateType = workflowInstance.stateSchema\n ? (workflowInstance.stateSchema as any).toTypescriptType?.() || \"any\"\n : \"{}\";\n\n // Extract requests schemas\n let requestsType = \"{}\";\n const requestsSchemas = workflowInstance._requestsSchemas;\n if (requestsSchemas && Object.keys(requestsSchemas).length > 0) {\n const requestTypes = Object.entries(requestsSchemas)\n .map(([key, schema]) => {\n const type = (schema as any).toTypescriptType?.() || \"any\";\n return `${key}: ${type}`;\n })\n .join(\"; \");\n requestsType = `{ ${requestTypes} }`;\n }\n\n workflows.push({\n name: workflowRef.definition.name,\n input: inputType,\n output: outputType,\n state: stateType,\n requests: requestsType,\n });\n } catch (error) {\n console.error(\n `Failed to process workflow ${workflowRef.definition.name}:`,\n error\n );\n }\n }\n\n // Generate the type definitions file\n const typeDefinitions = workflows\n .map(\n (workflow) =>\n ` ${workflow.name}: {\n input: ${workflow.input};\n output: ${workflow.output};\n state: ${workflow.state};\n requests: ${workflow.requests};\n };`\n )\n .join(\"\\n\");\n\n const content = `// Generated workflow type definitions\n// Do not edit this file directly - it will be overwritten\n\ndeclare module \"@botpress/runtime/_types/workflows\" {\n export type WorkflowDefinitions = {\n${typeDefinitions || \" // No workflows defined yet\"}\n };\n}`;\n\n // Write the workflow types file\n const workflowTypesPath = path.join(\n project.path,\n \".adk\",\n \"workflow-types.d.ts\"\n );\n await createFile(workflowTypesPath, await formatCode(content));\n}\n",
|
|
56
|
+
"import { AgentProject } from \"../agent-project/agent-project.js\";\nimport { ADK_VERSION, formatCode } from \"./utils.js\";\nimport { createFile } from \"../utils/fs.js\";\nimport path from \"path\";\n\nexport async function generateConversationTypes(\n project: AgentProject\n): Promise<void> {\n // Map conversation definitions to their channel types\n const conversationTypes: Record<string, { channel: string | string[]; state: string }> = {};\n\n for (const conversationRef of project.conversations) {\n console.log(`[ConversationTypes] Processing conversation: ${conversationRef.export}`);\n try {\n const conversationPath = path.join(project.path, conversationRef.path);\n // Bust module cache to ensure fresh conversation on type generation\n const conversationModule = await import(`${conversationPath}?t=${Date.now()}`);\n\n const conversationInstance =\n conversationModule[conversationRef.export] || conversationModule.default;\n\n if (!conversationInstance) {\n continue;\n }\n\n // Get the channel specification\n const channel = conversationInstance.channel;\n\n // Extract state schema and convert to TypeScript type\n const stateType = conversationInstance.schema\n ? (conversationInstance.schema as any).toTypescriptType?.() || \"any\"\n : \"{}\";\n\n // Determine the channel key(s)\n let channels: string[];\n if (channel === '*') {\n // Glob - we'll need to handle this specially\n channels = ['*'];\n } else if (Array.isArray(channel)) {\n channels = channel as string[];\n } else {\n channels = [channel as string];\n }\n\n // Store conversation info for each channel\n for (const ch of channels) {\n conversationTypes[ch] = {\n channel: ch,\n state: stateType,\n };\n }\n } catch (error) {\n console.error(\n `Failed to process conversation ${conversationRef.export}:`,\n error\n );\n }\n }\n\n // Generate type definitions for each channel\n const channelDefinitions = Object.entries(conversationTypes)\n .filter(([channel]) => channel !== '*') // Filter out glob for now\n .map(([channel, info]) => {\n const [integration, channelName] = channel.split('.');\n return ` \"${channel}\": {\n channel: \"${channel}\";\n integration: \"${integration}\";\n state: ${info.state};\n tags: Integrations[\"${integration}\"][\"channels\"][\"${channelName}\"][\"conversation\"][\"tags\"];\n messageTags: Integrations[\"${integration}\"][\"channels\"][\"${channelName}\"][\"message\"][\"tags\"];\n messages: Integrations[\"${integration}\"][\"channels\"][\"${channelName}\"][\"messages\"];\n events: Integrations[\"${integration}\"][\"events\"];\n };`;\n })\n .join(\"\\n\");\n\n const content = `\n////////////////////////////////////////////////////////\n// DO NOT EDIT THIS FILE DIRECTLY\n// This file is auto-generated from the Botpress ADK\n// ADK Version: ${ADK_VERSION}\n// Generated at: ${new Date().toISOString()}\n////////////////////////////////////////////////////////\n\ntype Integrations = import(\"@botpress/runtime/_types/integrations\").Integrations;\n\ndeclare module \"@botpress/runtime/_types/conversations\" {\n export type ConversationDefinitions = {\n${channelDefinitions || \" // No conversations defined yet\"}\n };\n}\n`;\n\n // Write to conversation-types.d.ts in the .adk folder\n const conversationTypesPath = path.join(\n project.path,\n \".adk\",\n \"conversation-types.d.ts\"\n );\n await createFile(conversationTypesPath, await formatCode(content));\n}\n",
|
|
57
|
+
"import { AgentProject } from \"../agent-project/agent-project.js\";\nimport { ADK_VERSION, formatCode } from \"./utils.js\";\nimport { createFile } from \"../utils/fs.js\";\nimport path from \"path\";\n\nexport async function generateEventTypes(project: AgentProject): Promise<void> {\n // Collect all integration events\n const integrationEvents: string[] = [];\n\n for (const int of project.integrations) {\n // const intf = project.integrations.find(x => x.definition.)\n\n for (const event in int.definition?.events || []) {\n integrationEvents.push(\n ` \"${int.alias}:${event}\": Integrations[\"${int.alias}\"][\"events\"][\"${event}\"];`\n );\n }\n }\n\n const content = `\n////////////////////////////////////////////////////////\n// DO NOT EDIT THIS FILE DIRECTLY\n// This file is auto-generated from the Botpress ADK\n// ADK Version: ${ADK_VERSION}\n// Generated at: ${new Date().toISOString()}\n////////////////////////////////////////////////////////\n\ntype Integrations = import(\"@botpress/runtime/_types/integrations\").Integrations;\n\ndeclare module \"@botpress/runtime/_types/events\" {\n /**\n * Global Events type that includes all integration events.\n * Use this type to reference any event that can occur in the system.\n * \n * Events are namespaced by their source:\n * - Integration events: \"<integration>:<eventName>\" (e.g., \"linear:issueCreated\")\n * - Built-in events: Will be added in format \"workflow:<name>:finished\", \"agent:deployed\", etc.\n */\n export type Events = {\n${integrationEvents.join(\"\\n\")}\n };\n\n // Export helper type for event names\n export type EventName = keyof Events;\n\n // Export helper to get event payload type\n export type EventPayload<T extends EventName> = Events[T];\n}\n`;\n\n // Write to event-types.d.ts in the .adk folder\n const eventTypesPath = path.join(project.path, \".adk\", \"event-types.d.ts\");\n await createFile(eventTypesPath, await formatCode(content));\n}\n",
|
|
57
58
|
"import path from \"path\";\nimport fs from \"fs/promises\";\nimport { existsSync } from \"fs\";\nimport { Client } from \"@botpress/client\";\nimport { auth } from \"../auth/index.js\";\nimport { AgentProject } from \"../agent-project/index.js\";\n\nexport interface ProjectCache {\n devId?: string;\n botId?: string;\n}\n\nexport class DevIdManager {\n private projectPath: string;\n private botProjectPath: string;\n private projectCachePath: string;\n private client?: Client;\n\n constructor(projectPath: string, botProjectPath: string) {\n this.projectPath = projectPath;\n this.botProjectPath = botProjectPath;\n this.projectCachePath = path.join(\n botProjectPath,\n \".botpress\",\n \"project.cache.json\"\n );\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = await auth.getActiveCredentials();\n const project = await this.getProject();\n\n // Use workspaceId from agent.json if available, otherwise fall back to profile\n const workspaceId =\n project.agentInfo?.workspaceId || credentials.workspaceId;\n\n if (!workspaceId) {\n throw new Error(\n 'No workspace ID found in agent.json or current profile. Please login again with \"adk login\"'\n );\n }\n\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n workspaceId: workspaceId,\n });\n }\n return this.client;\n }\n\n async getProject(): Promise<AgentProject> {\n return await AgentProject.load(this.projectPath);\n }\n\n async readProjectCache(): Promise<ProjectCache> {\n try {\n if (existsSync(this.projectCachePath)) {\n const content = await fs.readFile(this.projectCachePath, \"utf-8\");\n return JSON.parse(content);\n }\n } catch (error) {\n console.error(\"Error reading project.cache.json:\", error);\n }\n return {};\n }\n\n async saveProjectCache(cache: ProjectCache): Promise<void> {\n try {\n // Ensure directory exists\n await fs.mkdir(path.dirname(this.projectCachePath), { recursive: true });\n\n await fs.writeFile(this.projectCachePath, JSON.stringify(cache, null, 2));\n } catch (error) {\n console.error(\"Error saving project.cache.json:\", error);\n }\n }\n\n async preserveDevId(): Promise<void> {\n // Read devId from project cache after bp dev creates it\n const projectCache = await this.readProjectCache();\n if (projectCache.devId) {\n // Save it to agent.json using AgentProject methods\n const project = await this.getProject();\n\n if (project.agentInfo) {\n // Update existing agent info\n await project.updateAgentInfo({\n devId: projectCache.devId,\n });\n } else {\n // Create new agent info\n await project.createAgentInfo({\n botId: projectCache.botId || \"\",\n workspaceId: \"\",\n devId: projectCache.devId,\n });\n }\n }\n }\n\n async restoreDevId(): Promise<void> {\n // Read from agent.json using AgentProject\n const project = await this.getProject();\n const agentInfo = project.agentInfo;\n\n if (agentInfo?.devId || agentInfo?.botId) {\n // Create project cache with the saved IDs\n const cache: ProjectCache = {};\n\n if (agentInfo.devId) {\n cache.devId = agentInfo.devId;\n }\n\n if (agentInfo.botId) {\n cache.botId = agentInfo.botId;\n }\n\n await this.saveProjectCache(cache);\n }\n }\n\n async checkDevBotExists(): Promise<boolean> {\n const project = await this.getProject();\n const agentInfo = project.agentInfo;\n\n // If we have a devId, check if the bot still exists\n if (agentInfo?.devId) {\n try {\n const client = await this.getClient();\n await client.getBot({ id: agentInfo.devId });\n // Bot exists\n return true;\n } catch (error) {\n // Bot doesn't exist or error getting it\n return false;\n }\n }\n\n // No devId set\n return false;\n }\n}\n",
|
|
58
59
|
"import path from \"path\";\nimport fs from \"fs/promises\";\nimport { existsSync } from \"fs\";\nimport { AgentProject } from \"../agent-project/agent-project.js\";\nimport { auth } from \"../auth/index.js\";\nimport { getIntegrationAlias } from \"../utils/ids.js\";\nimport { BpAddCommand } from \"../commands/bp-add-command.js\";\n\nexport interface IntegrationInfo {\n alias: string;\n name: string;\n version: string;\n fullVersion: string; // e.g., \"slack@2.5.5\"\n}\n\nexport interface SyncResult {\n synced: IntegrationInfo[];\n errors: Array<{ alias: string; error: string }>;\n}\n\nexport class IntegrationSync {\n private projectPath: string;\n private botProjectPath: string;\n private bpModulesPath: string;\n\n constructor(projectPath: string, botProjectPath: string) {\n this.projectPath = projectPath;\n this.botProjectPath = botProjectPath;\n this.bpModulesPath = path.join(botProjectPath, \"bp_modules\");\n }\n\n /**\n * Parse dependencies.json integrations into IntegrationInfo objects\n */\n private async parseIntegrations(): Promise<IntegrationInfo[]> {\n const project = await AgentProject.load(this.projectPath);\n const dependencies = project.dependencies;\n\n if (!dependencies?.integrations) {\n return [];\n }\n\n const integrations: IntegrationInfo[] = [];\n\n for (const [alias, config] of Object.entries(dependencies.integrations)) {\n let version: string;\n let name: string;\n\n if (typeof config === \"string\") {\n // Simple format: \"openai@15.0.4\"\n version = config;\n const parts = version.split(\"@\");\n name = parts[0] || \"\";\n } else {\n // Object format: { version: \"slack@2.5.5\", ... }\n version = config.version;\n const parts = version.split(\"@\");\n name = parts[0] || \"\";\n }\n\n integrations.push({\n alias: getIntegrationAlias(alias),\n name,\n version: version.split(\"@\")[1] || \"latest\",\n fullVersion: version,\n });\n }\n\n return integrations;\n }\n\n /**\n * Check if an integration is already installed with the correct version\n */\n private async isIntegrationSynced(\n integration: IntegrationInfo\n ): Promise<boolean> {\n const targetFolder = path.join(\n this.bpModulesPath,\n `integration_${integration.alias}`\n );\n\n if (!existsSync(targetFolder)) {\n return false;\n }\n\n // Check if the index.ts has the correct version\n try {\n const indexPath = path.join(targetFolder, \"index.ts\");\n if (!existsSync(indexPath)) {\n return false;\n }\n\n const indexContent = await fs.readFile(indexPath, \"utf-8\");\n\n // Look for version in the format: version: \"2.5.5\",\n const versionMatch = indexContent.match(/version:\\s*[\"']([^\"']+)[\"']/);\n if (!versionMatch) {\n return false;\n }\n\n const installedVersion = versionMatch[1];\n return installedVersion === integration.version;\n } catch {\n return false;\n }\n }\n\n /**\n * Install an integration using bp CLI\n */\n private async installIntegration(\n integration: IntegrationInfo\n ): Promise<void> {\n // Get credentials\n const credentials = await auth.getActiveCredentials();\n const project = await AgentProject.load(this.projectPath);\n const workspaceId =\n project.agentInfo?.workspaceId || credentials.workspaceId;\n\n if (!workspaceId) {\n throw new Error('No workspace ID found. Please login with \"adk login\"');\n }\n\n const command = new BpAddCommand({\n integration: integration.fullVersion,\n botPath: this.botProjectPath,\n workspaceId,\n credentials,\n });\n\n await command.run();\n await command.output();\n }\n\n /**\n * Rename integration folder from bp_modules/{name} to bp_modules/integration_{alias}\n */\n private async renameIntegrationFolder(\n integration: IntegrationInfo\n ): Promise<void> {\n console.log(integration.name, integration.alias);\n const sourceFolder = path.join(\n this.bpModulesPath,\n integration.name.replace(\"/\", \"-\")\n );\n\n const targetFolder = path.join(\n this.bpModulesPath,\n `integration_${integration.alias}`\n );\n\n if (!existsSync(sourceFolder)) {\n throw new Error(`Integration folder not found: ${sourceFolder}`);\n }\n\n // Remove target folder if it exists\n if (existsSync(targetFolder)) {\n await fs.rm(targetFolder, { recursive: true, force: true });\n }\n\n // Rename source to target\n await fs.rename(sourceFolder, targetFolder);\n }\n\n /**\n * Remove existing integration folder\n */\n private async removeIntegrationFolder(alias: string): Promise<void> {\n const targetFolder = path.join(this.bpModulesPath, `integration_${alias}`);\n\n if (existsSync(targetFolder)) {\n await fs.rm(targetFolder, { recursive: true, force: true });\n }\n }\n\n /**\n * Sync all integrations\n */\n async syncIntegrations(): Promise<SyncResult> {\n const integrations = await this.parseIntegrations();\n const synced: IntegrationInfo[] = [];\n const errors: Array<{ alias: string; error: string }> = [];\n\n if (integrations.length === 0) {\n return { synced, errors };\n }\n\n // Ensure bp_modules directory exists\n await fs.mkdir(this.bpModulesPath, { recursive: true });\n\n for (const integration of integrations) {\n try {\n const isAlreadySynced = await this.isIntegrationSynced(integration);\n\n if (isAlreadySynced) {\n synced.push(integration);\n continue;\n }\n\n // Remove existing folder if version mismatch\n await this.removeIntegrationFolder(integration.alias);\n\n // Install the integration\n await this.installIntegration(integration);\n\n // Rename to our controlled name\n await this.renameIntegrationFolder(integration);\n\n synced.push(integration);\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error);\n errors.push({ alias: integration.alias, error: errorMsg });\n }\n }\n\n return { synced, errors };\n }\n}\n",
|
|
59
60
|
"import path from \"path\";\nimport fs from \"fs/promises\";\nimport { existsSync } from \"fs\";\nimport { spawn } from \"child_process\";\nimport { AgentProject } from \"../agent-project/agent-project.js\";\nimport { auth } from \"../auth/index.js\";\nimport { pascalCase } from \"../utils/strings.js\";\nimport { BUILTIN_INTERFACES } from \"../constants.js\";\nimport { getBpCli } from \"../commands/bp-cli.js\";\n\nexport interface InterfaceInfo {\n alias: string;\n name: string;\n version: string;\n fullVersion: string; // e.g., \"translator@1.0.0\"\n}\n\nexport interface InterfaceSyncResult {\n synced: InterfaceInfo[];\n errors: Array<{ alias: string; error: string }>;\n}\n\nexport class InterfaceSync {\n private projectPath: string;\n private botProjectPath: string;\n private bpModulesPath: string;\n\n constructor(projectPath: string, botProjectPath: string) {\n this.projectPath = projectPath;\n this.botProjectPath = botProjectPath;\n this.bpModulesPath = path.join(botProjectPath, \"bp_modules\");\n }\n\n /**\n * Get built-in interfaces (hard-coded constants)\n */\n private async parseInterfaces(): Promise<InterfaceInfo[]> {\n const interfaces: InterfaceInfo[] = [];\n\n for (const [alias, fullVersion] of Object.entries(BUILTIN_INTERFACES)) {\n const parts = fullVersion.split(\"@\");\n const name = parts[0] || \"\";\n const version = parts[1] || \"latest\";\n\n interfaces.push({\n alias,\n name,\n version,\n fullVersion,\n });\n }\n\n return interfaces;\n }\n\n /**\n * Check if an interface is already installed with the correct version\n */\n private async isInterfaceSynced(\n interfaceInfo: InterfaceInfo\n ): Promise<boolean> {\n const targetFolder = path.join(\n this.bpModulesPath,\n `interface_${pascalCase(interfaceInfo.alias)}`\n );\n\n if (!existsSync(targetFolder)) {\n return false;\n }\n\n // Check if the index.ts has the correct version\n try {\n const indexPath = path.join(targetFolder, \"index.ts\");\n if (!existsSync(indexPath)) {\n return false;\n }\n\n const indexContent = await fs.readFile(indexPath, \"utf-8\");\n\n // Look for version in the format: version: \"1.0.0\",\n const versionMatch = indexContent.match(/version:\\s*[\"']([^\"']+)[\"']/);\n if (!versionMatch) {\n return false;\n }\n\n const installedVersion = versionMatch[1];\n return installedVersion === interfaceInfo.version;\n } catch {\n return false;\n }\n }\n\n /**\n * Install an interface using bp CLI\n */\n private async installInterface(interfaceInfo: InterfaceInfo): Promise<void> {\n // Get credentials\n const credentials = await auth.getActiveCredentials();\n const project = await AgentProject.load(this.projectPath);\n const workspaceId =\n project.agentInfo?.workspaceId || credentials.workspaceId;\n\n if (!workspaceId) {\n throw new Error('No workspace ID found. Please login with \"adk login\"');\n }\n\n // Get the bp CLI path (bundled with ADK)\n const bpCli = await getBpCli(this.projectPath);\n const command = bpCli.path;\n\n return new Promise((resolve, reject) => {\n const args = [\n \"add\",\n `interface:${interfaceInfo.fullVersion}`,\n \"-y\",\n \"--installPath\",\n this.botProjectPath,\n \"--token\",\n credentials.token,\n \"--workspaceId\",\n workspaceId,\n \"--apiUrl\",\n credentials.apiUrl,\n ];\n\n const child = spawn(command, args, {\n cwd: this.projectPath,\n stdio: \"pipe\",\n });\n\n let stdout = \"\";\n let stderr = \"\";\n\n child.stdout?.on(\"data\", (data) => {\n stdout += data.toString();\n });\n\n child.stderr?.on(\"data\", (data) => {\n stderr += data.toString();\n });\n\n child.on(\"close\", (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(\n new Error(\n `Failed to install interface ${interfaceInfo.fullVersion}: ${stderr || stdout}`\n )\n );\n }\n });\n\n child.on(\"error\", (error) => {\n reject(new Error(`Failed to spawn bp command: ${error.message}`));\n });\n });\n }\n\n /**\n * Rename interface folder from bp_modules/{name} to bp_modules/interface_{PascalCaseAlias}\n */\n private async renameInterfaceFolder(\n interfaceInfo: InterfaceInfo\n ): Promise<void> {\n const sourceFolder = path.join(this.bpModulesPath, interfaceInfo.name);\n const targetFolder = path.join(\n this.bpModulesPath,\n `interface_${pascalCase(interfaceInfo.alias)}`\n );\n\n if (!existsSync(sourceFolder)) {\n throw new Error(`Interface folder not found: ${sourceFolder}`);\n }\n\n // Remove target folder if it exists\n if (existsSync(targetFolder)) {\n await fs.rm(targetFolder, { recursive: true, force: true });\n }\n\n // Rename source to target\n await fs.rename(sourceFolder, targetFolder);\n }\n\n /**\n * Remove existing interface folder\n */\n private async removeInterfaceFolder(alias: string): Promise<void> {\n const targetFolder = path.join(\n this.bpModulesPath,\n `interface_${pascalCase(alias)}`\n );\n\n if (existsSync(targetFolder)) {\n await fs.rm(targetFolder, { recursive: true, force: true });\n }\n }\n\n /**\n * Sync all interfaces\n */\n async syncInterfaces(): Promise<InterfaceSyncResult> {\n const interfaces = await this.parseInterfaces();\n const synced: InterfaceInfo[] = [];\n const errors: Array<{ alias: string; error: string }> = [];\n\n if (interfaces.length === 0) {\n return { synced, errors };\n }\n\n // Ensure bp_modules directory exists\n await fs.mkdir(this.bpModulesPath, { recursive: true });\n\n for (const interfaceInfo of interfaces) {\n try {\n const isAlreadySynced = await this.isInterfaceSynced(interfaceInfo);\n\n if (isAlreadySynced) {\n synced.push(interfaceInfo);\n continue;\n }\n\n // Remove existing folder if version mismatch\n await this.removeInterfaceFolder(interfaceInfo.alias);\n\n // Install the interface\n await this.installInterface(interfaceInfo);\n\n // Rename to our controlled name\n await this.renameInterfaceFolder(interfaceInfo);\n\n synced.push(interfaceInfo);\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error);\n errors.push({ alias: interfaceInfo.alias, error: errorMsg });\n }\n }\n\n return { synced, errors };\n }\n}\n",
|
|
60
61
|
"import { Client } from \"@botpress/client\";\nimport { transforms } from \"@botpress/sdk\";\n\nimport { auth } from \"../auth/index.js\";\nimport { AgentProject } from \"../agent-project/agent-project.js\";\nimport {\n LocalTable,\n RemoteTable,\n TableSyncPlan,\n TableSyncResult,\n TableSyncItem,\n TableSyncOperation,\n TableSyncOptions,\n} from \"./types.js\";\n\nexport interface TableManagerOptions {\n project: AgentProject;\n botId?: string;\n}\n\nexport class TableManager {\n private client?: Client;\n private botId?: string;\n private project: AgentProject;\n\n constructor(options: TableManagerOptions) {\n this.botId = options.botId;\n this.project = options.project;\n }\n\n private async getClient(): Promise<Client> {\n if (!this.client) {\n const credentials = await auth.getActiveCredentials();\n\n this.assertBotId(\"initialize client\");\n\n this.client = new Client({\n token: credentials.token,\n apiUrl: credentials.apiUrl,\n botId: this.botId,\n });\n }\n return this.client;\n }\n\n private assertBotId(operation: string): void {\n if (!this.botId) {\n throw new Error(\n `Operation \"${operation}\" requires a bot ID. ` +\n \"Please deploy your agent first or create agent.json with botId and workspaceId.\"\n );\n }\n }\n\n async getLocalTables(): Promise<LocalTable[]> {\n const tables: LocalTable[] = [];\n\n for (const tableRef of this.project.tables) {\n try {\n // Load the actual table module to get the full definition\n\n tables.push({\n name: tableRef.definition.name,\n factor: tableRef.definition.factor,\n schema: tableRef.definition.schema,\n });\n } catch (error) {}\n }\n\n return tables;\n }\n\n async getRemoteTables(): Promise<RemoteTable[]> {\n this.assertBotId(\"get remote tables\");\n\n const client = await this.getClient();\n\n try {\n // List tables from Botpress API\n const response = await client.listTables({});\n\n return response.tables.map((table) => ({\n id: table.id,\n name: table.name,\n createdAt: table.createdAt || new Date().toISOString(),\n updatedAt: table.updatedAt || new Date().toISOString(),\n schema: table.schema,\n }));\n } catch (error) {\n console.error(\"Failed to list remote tables:\", error);\n return [];\n }\n }\n\n async createSyncPlan(): Promise<TableSyncPlan> {\n const localTables = await this.getLocalTables();\n const remoteTables = await this.getRemoteTables();\n\n const items: TableSyncItem[] = [];\n const remoteMap = new Map(remoteTables.map((t) => [t.name, t]));\n\n // Check each local table\n for (const local of localTables) {\n const remote = remoteMap.get(local.name);\n\n if (!remote) {\n // Table doesn't exist remotely - need to create\n items.push({\n operation: TableSyncOperation.Create,\n localTable: local,\n reason: \"Table does not exist remotely\",\n });\n } else {\n // Table exists - check if schema matches\n try {\n const localSchema = transforms.fromJSONSchema(local.schema);\n const remoteSchema = transforms.fromJSONSchema(remote.schema);\n\n if (!localSchema.isEqual(remoteSchema)) {\n // Schema has changed - need to update\n items.push({\n operation: TableSyncOperation.Update,\n localTable: local,\n remoteTable: remote,\n reason: \"Table schema has changed\",\n });\n } else {\n // Schema matches - no update needed\n items.push({\n operation: TableSyncOperation.None,\n localTable: local,\n remoteTable: remote,\n reason: \"Table schema is up to date\",\n });\n }\n } catch (error) {\n // If we can't compare schemas, assume they need updating\n items.push({\n operation: TableSyncOperation.Update,\n localTable: local,\n remoteTable: remote,\n reason: \"Unable to compare schemas - assuming update needed\",\n });\n }\n\n // Remove from map so we can find orphaned tables\n remoteMap.delete(local.name);\n }\n }\n\n // Remaining remote tables don't have local counterparts\n for (const [, remote] of remoteMap) {\n items.push({\n operation: TableSyncOperation.Delete,\n remoteTable: remote,\n reason: \"Table no longer defined locally\",\n });\n }\n\n // Calculate totals\n const totalCreate = items.filter(\n (i) => i.operation === TableSyncOperation.Create\n ).length;\n const totalUpdate = items.filter(\n (i) => i.operation === TableSyncOperation.Update\n ).length;\n const totalDelete = items.filter(\n (i) => i.operation === TableSyncOperation.Delete\n ).length;\n const hasChanges = totalCreate > 0 || totalUpdate > 0 || totalDelete > 0;\n\n return {\n items,\n totalCreate,\n totalUpdate,\n totalDelete,\n hasChanges,\n };\n }\n\n async executeSync(\n plan: TableSyncPlan,\n options: TableSyncOptions = {}\n ): Promise<TableSyncResult> {\n this.assertBotId(\"sync tables\");\n\n if (options.dryRun) {\n return {\n applied: false,\n success: [],\n failed: [],\n summary: {\n created: 0,\n updated: 0,\n deleted: 0,\n failed: 0,\n },\n };\n }\n\n const client = await this.getClient();\n const success: TableSyncItem[] = [];\n const failed: Array<{ item: TableSyncItem; error: Error }> = [];\n\n for (const item of plan.items) {\n if (item.operation === TableSyncOperation.None) {\n success.push(item);\n continue;\n }\n\n try {\n switch (item.operation) {\n case TableSyncOperation.Create:\n if (item.localTable) {\n await client.createTable({\n name: item.localTable.name,\n factor: item.localTable.factor || 1,\n schema: item.localTable.schema,\n isComputeEnabled: true,\n });\n success.push(item);\n }\n break;\n\n case TableSyncOperation.Update:\n if (item.localTable && item.remoteTable) {\n // Update table schema\n await client.updateTable({\n table: item.localTable.name,\n schema: item.localTable.schema,\n });\n success.push(item);\n }\n break;\n\n case TableSyncOperation.Delete:\n if (item.remoteTable) {\n // Require explicit confirmation for deletion\n if (!options.autoConfirm) {\n console.warn(\n `Skipping deletion of table \"${item.remoteTable.name}\" - requires confirmation`\n );\n continue;\n }\n await client.deleteTable({ table: item.remoteTable.name });\n success.push(item);\n }\n break;\n }\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n failed.push({ item, error: err });\n\n if (options.bailOnFailure) {\n break;\n }\n }\n }\n\n return {\n applied: true,\n success,\n failed,\n summary: {\n created: success.filter(\n (i) => i.operation === TableSyncOperation.Create\n ).length,\n updated: success.filter(\n (i) => i.operation === TableSyncOperation.Update\n ).length,\n deleted: success.filter(\n (i) => i.operation === TableSyncOperation.Delete\n ).length,\n failed: failed.length,\n },\n };\n }\n}\n",
|
|
61
62
|
"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 * - dependencies.json\n * - package.json\n * - agent.json\n * - agent.config.ts\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 = [\n \"dependencies.json\",\n \"package.json\",\n \"agent.json\",\n \"agent.config.ts\",\n ];\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(\n dirPath,\n { recursive: true, persistent: true },\n (_eventType, filename) => {\n if (filename) {\n const fullPath = join(dirPath, filename);\n this.handleFileChange(fullPath);\n }\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"
|
|
62
63
|
],
|
|
63
|
-
"mappings": "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",
|
|
64
|
-
"debugId": "
|
|
64
|
+
"mappings": "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",
|
|
65
|
+
"debugId": "457481A453B1622564756E2164756E21",
|
|
65
66
|
"names": []
|
|
66
67
|
}
|