@inkeep/agents-cli 0.74.2 → 0.74.3
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/commands/add.js
CHANGED
|
@@ -16,7 +16,7 @@ const defaultGoogleModelConfigurations = {
|
|
|
16
16
|
const defaultOpenaiModelConfigurations = {
|
|
17
17
|
base: { model: OPENAI_MODELS.GPT_5_2 },
|
|
18
18
|
structuredOutput: { model: OPENAI_MODELS.GPT_4_1_MINI },
|
|
19
|
-
summarizer: { model: OPENAI_MODELS.
|
|
19
|
+
summarizer: { model: OPENAI_MODELS.GPT_5_4_NANO }
|
|
20
20
|
};
|
|
21
21
|
const defaultAnthropicModelConfigurations = {
|
|
22
22
|
base: { model: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5 },
|
package/dist/commands/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","names":["template"],"sources":["../../src/commands/add.ts"],"sourcesContent":["import path from 'node:path';\nimport * as p from '@clack/prompts';\nimport { ANTHROPIC_MODELS, GOOGLE_MODELS, OPENAI_MODELS } from '@inkeep/agents-core';\nimport chalk from 'chalk';\nimport { findUp } from 'find-up';\nimport fs from 'fs-extra';\nimport type { ModelSettings } from '../utils/model-config';\nimport {\n type ContentReplacement,\n cloneTemplate,\n cloneTemplateLocal,\n getAvailableTemplates,\n} from '../utils/templates';\nimport { addUiCommand } from './add-ui';\n\nexport interface AddOptions {\n project?: string;\n mcp?: string;\n ui?: string | true;\n list?: boolean;\n targetPath?: string;\n config?: string;\n profile?: string;\n quiet?: boolean;\n localPrefix?: string;\n}\n\nexport const defaultGoogleModelConfigurations: ModelSettings = {\n base: {\n model: GOOGLE_MODELS.GEMINI_2_5_FLASH,\n },\n structuredOutput: {\n model: GOOGLE_MODELS.GEMINI_2_5_FLASH_LITE,\n },\n summarizer: {\n model: GOOGLE_MODELS.GEMINI_2_5_FLASH_LITE,\n },\n};\n\nexport const defaultOpenaiModelConfigurations: ModelSettings = {\n base: {\n model: OPENAI_MODELS.GPT_5_2,\n },\n structuredOutput: {\n model: OPENAI_MODELS.GPT_4_1_MINI,\n },\n summarizer: {\n model: OPENAI_MODELS.GPT_4_1_NANO,\n },\n};\n\nexport const defaultAnthropicModelConfigurations: ModelSettings = {\n base: {\n model: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5,\n },\n structuredOutput: {\n model: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5,\n },\n summarizer: {\n model: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5,\n },\n};\n\nexport async function addCommand(options: AddOptions): Promise<void> {\n if (options.ui !== undefined) {\n await addUiCommand({\n ui: options.ui,\n list: options.list,\n config: options.config,\n profile: options.profile,\n quiet: options.quiet,\n });\n return;\n }\n const projectTemplates = await getAvailableTemplates('template-projects', options.localPrefix);\n const mcpTemplates = await getAvailableTemplates('template-mcps', options.localPrefix);\n if (!options.project && !options.mcp) {\n console.log(chalk.cyan('\\nUsage:\\n'));\n console.log(chalk.white('Add a project with: inkeep add --project <project-template>'));\n console.log(chalk.gray(' Example: inkeep add --project docs-assistant\\n'));\n console.log(chalk.yellow('Available project templates:'));\n for (const template of projectTemplates) {\n console.log(chalk.gray(` • ${template}`));\n }\n\n console.log(chalk.white('\\nAdd an MCP server with: inkeep add --mcp <mcp-template>'));\n console.log(chalk.gray(' Example: inkeep add --mcp slack\\n'));\n console.log(chalk.yellow('Available MCP templates:'));\n for (const template of mcpTemplates) {\n console.log(chalk.gray(` • ${template}`));\n }\n process.exit(0);\n } else {\n if (options.project && !projectTemplates.includes(options.project)) {\n console.error(`❌ Project template \"${options.project}\" not found`);\n process.exit(1);\n }\n if (options.mcp && !mcpTemplates.includes(options.mcp)) {\n console.error(`❌ MCP template \"${options.mcp}\" not found`);\n process.exit(1);\n }\n\n if (options.project) {\n await addProjectTemplate(\n projectTemplates,\n options.project,\n options.targetPath,\n options.localPrefix\n );\n }\n if (options.mcp) {\n await addMcpTemplate(mcpTemplates, options.mcp, options.targetPath, options.localPrefix);\n }\n return;\n }\n}\n\nexport async function checkTemplateDir(\n templateDir: string,\n commandType: 'project' | 'mcp'\n): Promise<void> {\n const s = p.spinner();\n // Check if the template directory already exists\n if (await fs.pathExists(templateDir)) {\n const overwrite = await p.confirm({\n message: `Directory \"${templateDir}\" already exists. Do you want to overwrite it?`,\n });\n if (!overwrite) {\n p.cancel(\n `You can specify a different target path like: \\`inkeep add --${commandType} <${commandType}-template> --target-path <path>\\``\n );\n process.exit(0);\n }\n s.start('Cleaning existing directory...');\n await fs.emptyDir(templateDir);\n s.stop();\n }\n}\n\nfunction buildTemplateUrl(\n templateType: 'template-projects' | 'template-mcps',\n templateName: string\n): string {\n return `https://github.com/inkeep/agents/agents-cookbook/${templateType}/${templateName}`;\n}\n\nexport async function addProjectTemplate(\n availableTemplates: string[],\n template: string,\n targetPath: string | undefined,\n localPrefix: string | undefined\n): Promise<void> {\n if (!template) {\n console.log(chalk.yellow('Available templates:'));\n for (const template of availableTemplates) {\n console.log(chalk.gray(` • ${template}`));\n }\n process.exit(0);\n } else {\n if (!availableTemplates.includes(template)) {\n console.error(`❌ Template \"${template}\" not found`);\n process.exit(1);\n }\n const s = p.spinner();\n\n const anthropicKey = process.env.ANTHROPIC_API_KEY;\n const openAiKey = process.env.OPENAI_API_KEY;\n const googleKey = process.env.GOOGLE_GENERATIVE_AI_API_KEY;\n\n let defaultModelSettings = {};\n if (anthropicKey) {\n defaultModelSettings = defaultAnthropicModelConfigurations;\n } else if (openAiKey) {\n defaultModelSettings = defaultOpenaiModelConfigurations;\n } else if (googleKey) {\n defaultModelSettings = defaultGoogleModelConfigurations;\n }\n\n const contentReplacements: ContentReplacement[] = [\n {\n filePath: 'index.ts',\n replacements: {\n models: defaultModelSettings,\n },\n },\n ];\n\n // Check if the model settings are empty\n if (Object.keys(defaultModelSettings).length === 0) {\n console.error(\n '❌ No AI provider key found in environment variables. Please set one of: ANTHROPIC_API_KEY, OPENAI_API_KEY, or GOOGLE_GENERATIVE_AI_API_KEY'\n );\n }\n const projectDirectory = await findAppDirectory('project');\n\n // Determine the base directory (use provided target path or current directory)\n const baseDir = targetPath || projectDirectory;\n\n // Create the full path including the template name as a subdirectory\n const templateDir = path.join(baseDir, template);\n\n await checkTemplateDir(templateDir, 'project');\n\n // Ensure the base directory exists\n if (targetPath && !(await fs.pathExists(baseDir))) {\n try {\n await fs.mkdir(baseDir, { recursive: true });\n } catch (error) {\n console.error(\n `❌ Failed to create target directory \"${baseDir}\": ${error instanceof Error ? error.message : 'Unknown error'}`\n );\n process.exit(1);\n }\n }\n\n s.start('Adding template...');\n\n // Clone into the template-named subdirectory\n if (localPrefix && localPrefix.length > 0) {\n const fullTemplatePath = path.join(localPrefix, 'template-projects', template);\n await cloneTemplateLocal(fullTemplatePath, templateDir, contentReplacements);\n } else {\n const fullTemplatePath = buildTemplateUrl('template-projects', template);\n await cloneTemplate(fullTemplatePath, templateDir, contentReplacements);\n }\n s.stop(`Template \"${template}\" added to ${templateDir}`);\n return;\n }\n}\n\nexport async function addMcpTemplate(\n availableTemplates: string[],\n template: string,\n targetPath: string | undefined,\n localPrefix: string | undefined\n): Promise<void> {\n if (!template) {\n console.log(chalk.yellow('Available templates:'));\n for (const template of availableTemplates) {\n console.log(chalk.gray(` • ${template}`));\n }\n process.exit(0);\n }\n\n if (!targetPath) {\n const foundPath = await findAppDirectory('mcp');\n targetPath = path.join(foundPath, template);\n }\n\n await checkTemplateDir(targetPath, 'mcp');\n\n const s = p.spinner();\n s.start('Adding template...');\n if (localPrefix && localPrefix.length > 0) {\n const fullTemplatePath = path.join(localPrefix, 'template-mcps', template);\n await cloneTemplateLocal(fullTemplatePath, targetPath);\n } else {\n const fullTemplatePath = buildTemplateUrl('template-mcps', template);\n await cloneTemplate(fullTemplatePath, targetPath);\n }\n s.stop(`MCP template \"${template}\" added to ${targetPath}`);\n}\n\nexport async function findAppDirectory(type: 'project' | 'mcp'): Promise<string> {\n const searchPath = type === 'project' ? 'src/projects' : 'apps/mcp/app';\n const directory = await findUp(searchPath, { type: 'directory' });\n\n if (!directory || !directory.includes(searchPath)) {\n console.log(chalk.yellow(`⚠️ No ${type} directory found.`));\n const continueAnyway = await p.confirm({\n message: `Do you want to add to ${process.cwd()} instead?`,\n });\n if (!continueAnyway) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n }\n return directory || process.cwd();\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"add.js","names":["template"],"sources":["../../src/commands/add.ts"],"sourcesContent":["import path from 'node:path';\nimport * as p from '@clack/prompts';\nimport { ANTHROPIC_MODELS, GOOGLE_MODELS, OPENAI_MODELS } from '@inkeep/agents-core';\nimport chalk from 'chalk';\nimport { findUp } from 'find-up';\nimport fs from 'fs-extra';\nimport type { ModelSettings } from '../utils/model-config';\nimport {\n type ContentReplacement,\n cloneTemplate,\n cloneTemplateLocal,\n getAvailableTemplates,\n} from '../utils/templates';\nimport { addUiCommand } from './add-ui';\n\nexport interface AddOptions {\n project?: string;\n mcp?: string;\n ui?: string | true;\n list?: boolean;\n targetPath?: string;\n config?: string;\n profile?: string;\n quiet?: boolean;\n localPrefix?: string;\n}\n\nexport const defaultGoogleModelConfigurations: ModelSettings = {\n base: {\n model: GOOGLE_MODELS.GEMINI_2_5_FLASH,\n },\n structuredOutput: {\n model: GOOGLE_MODELS.GEMINI_2_5_FLASH_LITE,\n },\n summarizer: {\n model: GOOGLE_MODELS.GEMINI_2_5_FLASH_LITE,\n },\n};\n\nexport const defaultOpenaiModelConfigurations: ModelSettings = {\n base: {\n model: OPENAI_MODELS.GPT_5_2,\n },\n structuredOutput: {\n model: OPENAI_MODELS.GPT_4_1_MINI,\n },\n summarizer: {\n model: OPENAI_MODELS.GPT_5_4_NANO,\n },\n};\n\nexport const defaultAnthropicModelConfigurations: ModelSettings = {\n base: {\n model: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5,\n },\n structuredOutput: {\n model: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5,\n },\n summarizer: {\n model: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5,\n },\n};\n\nexport async function addCommand(options: AddOptions): Promise<void> {\n if (options.ui !== undefined) {\n await addUiCommand({\n ui: options.ui,\n list: options.list,\n config: options.config,\n profile: options.profile,\n quiet: options.quiet,\n });\n return;\n }\n const projectTemplates = await getAvailableTemplates('template-projects', options.localPrefix);\n const mcpTemplates = await getAvailableTemplates('template-mcps', options.localPrefix);\n if (!options.project && !options.mcp) {\n console.log(chalk.cyan('\\nUsage:\\n'));\n console.log(chalk.white('Add a project with: inkeep add --project <project-template>'));\n console.log(chalk.gray(' Example: inkeep add --project docs-assistant\\n'));\n console.log(chalk.yellow('Available project templates:'));\n for (const template of projectTemplates) {\n console.log(chalk.gray(` • ${template}`));\n }\n\n console.log(chalk.white('\\nAdd an MCP server with: inkeep add --mcp <mcp-template>'));\n console.log(chalk.gray(' Example: inkeep add --mcp slack\\n'));\n console.log(chalk.yellow('Available MCP templates:'));\n for (const template of mcpTemplates) {\n console.log(chalk.gray(` • ${template}`));\n }\n process.exit(0);\n } else {\n if (options.project && !projectTemplates.includes(options.project)) {\n console.error(`❌ Project template \"${options.project}\" not found`);\n process.exit(1);\n }\n if (options.mcp && !mcpTemplates.includes(options.mcp)) {\n console.error(`❌ MCP template \"${options.mcp}\" not found`);\n process.exit(1);\n }\n\n if (options.project) {\n await addProjectTemplate(\n projectTemplates,\n options.project,\n options.targetPath,\n options.localPrefix\n );\n }\n if (options.mcp) {\n await addMcpTemplate(mcpTemplates, options.mcp, options.targetPath, options.localPrefix);\n }\n return;\n }\n}\n\nexport async function checkTemplateDir(\n templateDir: string,\n commandType: 'project' | 'mcp'\n): Promise<void> {\n const s = p.spinner();\n // Check if the template directory already exists\n if (await fs.pathExists(templateDir)) {\n const overwrite = await p.confirm({\n message: `Directory \"${templateDir}\" already exists. Do you want to overwrite it?`,\n });\n if (!overwrite) {\n p.cancel(\n `You can specify a different target path like: \\`inkeep add --${commandType} <${commandType}-template> --target-path <path>\\``\n );\n process.exit(0);\n }\n s.start('Cleaning existing directory...');\n await fs.emptyDir(templateDir);\n s.stop();\n }\n}\n\nfunction buildTemplateUrl(\n templateType: 'template-projects' | 'template-mcps',\n templateName: string\n): string {\n return `https://github.com/inkeep/agents/agents-cookbook/${templateType}/${templateName}`;\n}\n\nexport async function addProjectTemplate(\n availableTemplates: string[],\n template: string,\n targetPath: string | undefined,\n localPrefix: string | undefined\n): Promise<void> {\n if (!template) {\n console.log(chalk.yellow('Available templates:'));\n for (const template of availableTemplates) {\n console.log(chalk.gray(` • ${template}`));\n }\n process.exit(0);\n } else {\n if (!availableTemplates.includes(template)) {\n console.error(`❌ Template \"${template}\" not found`);\n process.exit(1);\n }\n const s = p.spinner();\n\n const anthropicKey = process.env.ANTHROPIC_API_KEY;\n const openAiKey = process.env.OPENAI_API_KEY;\n const googleKey = process.env.GOOGLE_GENERATIVE_AI_API_KEY;\n\n let defaultModelSettings = {};\n if (anthropicKey) {\n defaultModelSettings = defaultAnthropicModelConfigurations;\n } else if (openAiKey) {\n defaultModelSettings = defaultOpenaiModelConfigurations;\n } else if (googleKey) {\n defaultModelSettings = defaultGoogleModelConfigurations;\n }\n\n const contentReplacements: ContentReplacement[] = [\n {\n filePath: 'index.ts',\n replacements: {\n models: defaultModelSettings,\n },\n },\n ];\n\n // Check if the model settings are empty\n if (Object.keys(defaultModelSettings).length === 0) {\n console.error(\n '❌ No AI provider key found in environment variables. Please set one of: ANTHROPIC_API_KEY, OPENAI_API_KEY, or GOOGLE_GENERATIVE_AI_API_KEY'\n );\n }\n const projectDirectory = await findAppDirectory('project');\n\n // Determine the base directory (use provided target path or current directory)\n const baseDir = targetPath || projectDirectory;\n\n // Create the full path including the template name as a subdirectory\n const templateDir = path.join(baseDir, template);\n\n await checkTemplateDir(templateDir, 'project');\n\n // Ensure the base directory exists\n if (targetPath && !(await fs.pathExists(baseDir))) {\n try {\n await fs.mkdir(baseDir, { recursive: true });\n } catch (error) {\n console.error(\n `❌ Failed to create target directory \"${baseDir}\": ${error instanceof Error ? error.message : 'Unknown error'}`\n );\n process.exit(1);\n }\n }\n\n s.start('Adding template...');\n\n // Clone into the template-named subdirectory\n if (localPrefix && localPrefix.length > 0) {\n const fullTemplatePath = path.join(localPrefix, 'template-projects', template);\n await cloneTemplateLocal(fullTemplatePath, templateDir, contentReplacements);\n } else {\n const fullTemplatePath = buildTemplateUrl('template-projects', template);\n await cloneTemplate(fullTemplatePath, templateDir, contentReplacements);\n }\n s.stop(`Template \"${template}\" added to ${templateDir}`);\n return;\n }\n}\n\nexport async function addMcpTemplate(\n availableTemplates: string[],\n template: string,\n targetPath: string | undefined,\n localPrefix: string | undefined\n): Promise<void> {\n if (!template) {\n console.log(chalk.yellow('Available templates:'));\n for (const template of availableTemplates) {\n console.log(chalk.gray(` • ${template}`));\n }\n process.exit(0);\n }\n\n if (!targetPath) {\n const foundPath = await findAppDirectory('mcp');\n targetPath = path.join(foundPath, template);\n }\n\n await checkTemplateDir(targetPath, 'mcp');\n\n const s = p.spinner();\n s.start('Adding template...');\n if (localPrefix && localPrefix.length > 0) {\n const fullTemplatePath = path.join(localPrefix, 'template-mcps', template);\n await cloneTemplateLocal(fullTemplatePath, targetPath);\n } else {\n const fullTemplatePath = buildTemplateUrl('template-mcps', template);\n await cloneTemplate(fullTemplatePath, targetPath);\n }\n s.stop(`MCP template \"${template}\" added to ${targetPath}`);\n}\n\nexport async function findAppDirectory(type: 'project' | 'mcp'): Promise<string> {\n const searchPath = type === 'project' ? 'src/projects' : 'apps/mcp/app';\n const directory = await findUp(searchPath, { type: 'directory' });\n\n if (!directory || !directory.includes(searchPath)) {\n console.log(chalk.yellow(`⚠️ No ${type} directory found.`));\n const continueAnyway = await p.confirm({\n message: `Do you want to add to ${process.cwd()} instead?`,\n });\n if (!continueAnyway) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n }\n return directory || process.cwd();\n}\n"],"mappings":";;;;;;;;;;AA2BA,MAAa,mCAAkD;CAC7D,MAAM,EACJ,OAAO,cAAc,kBACtB;CACD,kBAAkB,EAChB,OAAO,cAAc,uBACtB;CACD,YAAY,EACV,OAAO,cAAc,uBACtB;CACF;AAED,MAAa,mCAAkD;CAC7D,MAAM,EACJ,OAAO,cAAc,SACtB;CACD,kBAAkB,EAChB,OAAO,cAAc,cACtB;CACD,YAAY,EACV,OAAO,cAAc,cACtB;CACF;AAED,MAAa,sCAAqD;CAChE,MAAM,EACJ,OAAO,iBAAiB,mBACzB;CACD,kBAAkB,EAChB,OAAO,iBAAiB,mBACzB;CACD,YAAY,EACV,OAAO,iBAAiB,mBACzB;CACF;AAED,eAAsB,WAAW,SAAoC;AACnE,KAAI,QAAQ,OAAO,QAAW;AAC5B,QAAM,aAAa;GACjB,IAAI,QAAQ;GACZ,MAAM,QAAQ;GACd,QAAQ,QAAQ;GAChB,SAAS,QAAQ;GACjB,OAAO,QAAQ;GAChB,CAAC;AACF;;CAEF,MAAM,mBAAmB,MAAM,sBAAsB,qBAAqB,QAAQ,YAAY;CAC9F,MAAM,eAAe,MAAM,sBAAsB,iBAAiB,QAAQ,YAAY;AACtF,KAAI,CAAC,QAAQ,WAAW,CAAC,QAAQ,KAAK;AACpC,UAAQ,IAAI,MAAM,KAAK,aAAa,CAAC;AACrC,UAAQ,IAAI,MAAM,MAAM,8DAA8D,CAAC;AACvF,UAAQ,IAAI,MAAM,KAAK,mDAAmD,CAAC;AAC3E,UAAQ,IAAI,MAAM,OAAO,+BAA+B,CAAC;AACzD,OAAK,MAAM,YAAY,iBACrB,SAAQ,IAAI,MAAM,KAAK,OAAO,WAAW,CAAC;AAG5C,UAAQ,IAAI,MAAM,MAAM,4DAA4D,CAAC;AACrF,UAAQ,IAAI,MAAM,KAAK,sCAAsC,CAAC;AAC9D,UAAQ,IAAI,MAAM,OAAO,2BAA2B,CAAC;AACrD,OAAK,MAAM,YAAY,aACrB,SAAQ,IAAI,MAAM,KAAK,OAAO,WAAW,CAAC;AAE5C,UAAQ,KAAK,EAAE;QACV;AACL,MAAI,QAAQ,WAAW,CAAC,iBAAiB,SAAS,QAAQ,QAAQ,EAAE;AAClE,WAAQ,MAAM,uBAAuB,QAAQ,QAAQ,aAAa;AAClE,WAAQ,KAAK,EAAE;;AAEjB,MAAI,QAAQ,OAAO,CAAC,aAAa,SAAS,QAAQ,IAAI,EAAE;AACtD,WAAQ,MAAM,mBAAmB,QAAQ,IAAI,aAAa;AAC1D,WAAQ,KAAK,EAAE;;AAGjB,MAAI,QAAQ,QACV,OAAM,mBACJ,kBACA,QAAQ,SACR,QAAQ,YACR,QAAQ,YACT;AAEH,MAAI,QAAQ,IACV,OAAM,eAAe,cAAc,QAAQ,KAAK,QAAQ,YAAY,QAAQ,YAAY;AAE1F;;;AAIJ,eAAsB,iBACpB,aACA,aACe;CACf,MAAM,IAAI,EAAE,SAAS;AAErB,KAAI,MAAM,GAAG,WAAW,YAAY,EAAE;AAIpC,MAAI,CAHc,MAAM,EAAE,QAAQ,EAChC,SAAS,cAAc,YAAY,iDACpC,CAAC,EACc;AACd,KAAE,OACA,gEAAgE,YAAY,IAAI,YAAY,mCAC7F;AACD,WAAQ,KAAK,EAAE;;AAEjB,IAAE,MAAM,iCAAiC;AACzC,QAAM,GAAG,SAAS,YAAY;AAC9B,IAAE,MAAM;;;AAIZ,SAAS,iBACP,cACA,cACQ;AACR,QAAO,oDAAoD,aAAa,GAAG;;AAG7E,eAAsB,mBACpB,oBACA,UACA,YACA,aACe;AACf,KAAI,CAAC,UAAU;AACb,UAAQ,IAAI,MAAM,OAAO,uBAAuB,CAAC;AACjD,OAAK,MAAMA,cAAY,mBACrB,SAAQ,IAAI,MAAM,KAAK,OAAOA,aAAW,CAAC;AAE5C,UAAQ,KAAK,EAAE;QACV;AACL,MAAI,CAAC,mBAAmB,SAAS,SAAS,EAAE;AAC1C,WAAQ,MAAM,eAAe,SAAS,aAAa;AACnD,WAAQ,KAAK,EAAE;;EAEjB,MAAM,IAAI,EAAE,SAAS;EAErB,MAAM,eAAe,QAAQ,IAAI;EACjC,MAAM,YAAY,QAAQ,IAAI;EAC9B,MAAM,YAAY,QAAQ,IAAI;EAE9B,IAAI,uBAAuB,EAAE;AAC7B,MAAI,aACF,wBAAuB;WACd,UACT,wBAAuB;WACd,UACT,wBAAuB;EAGzB,MAAM,sBAA4C,CAChD;GACE,UAAU;GACV,cAAc,EACZ,QAAQ,sBACT;GACF,CACF;AAGD,MAAI,OAAO,KAAK,qBAAqB,CAAC,WAAW,EAC/C,SAAQ,MACN,6IACD;EAEH,MAAM,mBAAmB,MAAM,iBAAiB,UAAU;EAG1D,MAAM,UAAU,cAAc;EAG9B,MAAM,cAAc,KAAK,KAAK,SAAS,SAAS;AAEhD,QAAM,iBAAiB,aAAa,UAAU;AAG9C,MAAI,cAAc,CAAE,MAAM,GAAG,WAAW,QAAQ,CAC9C,KAAI;AACF,SAAM,GAAG,MAAM,SAAS,EAAE,WAAW,MAAM,CAAC;WACrC,OAAO;AACd,WAAQ,MACN,wCAAwC,QAAQ,KAAK,iBAAiB,QAAQ,MAAM,UAAU,kBAC/F;AACD,WAAQ,KAAK,EAAE;;AAInB,IAAE,MAAM,qBAAqB;AAG7B,MAAI,eAAe,YAAY,SAAS,EAEtC,OAAM,mBADmB,KAAK,KAAK,aAAa,qBAAqB,SAAS,EACnC,aAAa,oBAAoB;MAG5E,OAAM,cADmB,iBAAiB,qBAAqB,SAAS,EAClC,aAAa,oBAAoB;AAEzE,IAAE,KAAK,aAAa,SAAS,aAAa,cAAc;AACxD;;;AAIJ,eAAsB,eACpB,oBACA,UACA,YACA,aACe;AACf,KAAI,CAAC,UAAU;AACb,UAAQ,IAAI,MAAM,OAAO,uBAAuB,CAAC;AACjD,OAAK,MAAMA,cAAY,mBACrB,SAAQ,IAAI,MAAM,KAAK,OAAOA,aAAW,CAAC;AAE5C,UAAQ,KAAK,EAAE;;AAGjB,KAAI,CAAC,YAAY;EACf,MAAM,YAAY,MAAM,iBAAiB,MAAM;AAC/C,eAAa,KAAK,KAAK,WAAW,SAAS;;AAG7C,OAAM,iBAAiB,YAAY,MAAM;CAEzC,MAAM,IAAI,EAAE,SAAS;AACrB,GAAE,MAAM,qBAAqB;AAC7B,KAAI,eAAe,YAAY,SAAS,EAEtC,OAAM,mBADmB,KAAK,KAAK,aAAa,iBAAiB,SAAS,EAC/B,WAAW;KAGtD,OAAM,cADmB,iBAAiB,iBAAiB,SAAS,EAC9B,WAAW;AAEnD,GAAE,KAAK,iBAAiB,SAAS,aAAa,aAAa;;AAG7D,eAAsB,iBAAiB,MAA0C;CAC/E,MAAM,aAAa,SAAS,YAAY,iBAAiB;CACzD,MAAM,YAAY,MAAM,OAAO,YAAY,EAAE,MAAM,aAAa,CAAC;AAEjE,KAAI,CAAC,aAAa,CAAC,UAAU,SAAS,WAAW,EAAE;AACjD,UAAQ,IAAI,MAAM,OAAO,UAAU,KAAK,mBAAmB,CAAC;AAI5D,MAAI,CAHmB,MAAM,EAAE,QAAQ,EACrC,SAAS,yBAAyB,QAAQ,KAAK,CAAC,YACjD,CAAC,EACmB;AACnB,KAAE,OAAO,sBAAsB;AAC/B,WAAQ,KAAK,EAAE;;;AAGnB,QAAO,aAAa,QAAQ,KAAK"}
|
package/dist/package.js
CHANGED
|
@@ -10,7 +10,7 @@ const defaultGeminiModelConfigurations = {
|
|
|
10
10
|
const defaultOpenaiModelConfigurations = {
|
|
11
11
|
base: { model: OPENAI_MODELS.GPT_5_2 },
|
|
12
12
|
structuredOutput: { model: OPENAI_MODELS.GPT_4_1_MINI },
|
|
13
|
-
summarizer: { model: OPENAI_MODELS.
|
|
13
|
+
summarizer: { model: OPENAI_MODELS.GPT_5_4_NANO }
|
|
14
14
|
};
|
|
15
15
|
const defaultAnthropicModelConfigurations = {
|
|
16
16
|
base: { model: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5 },
|
|
@@ -49,6 +49,10 @@ async function promptForModelConfiguration() {
|
|
|
49
49
|
process.exit(0);
|
|
50
50
|
}
|
|
51
51
|
const anthropicModels = [
|
|
52
|
+
{
|
|
53
|
+
label: "Claude Opus 4.7",
|
|
54
|
+
value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_7
|
|
55
|
+
},
|
|
52
56
|
{
|
|
53
57
|
label: "Claude Opus 4.6",
|
|
54
58
|
value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_6
|
|
@@ -57,14 +61,6 @@ async function promptForModelConfiguration() {
|
|
|
57
61
|
label: "Claude Opus 4.5",
|
|
58
62
|
value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_5
|
|
59
63
|
},
|
|
60
|
-
{
|
|
61
|
-
label: "Claude Opus 4.1",
|
|
62
|
-
value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_1
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
label: "Claude Opus 4",
|
|
66
|
-
value: ANTHROPIC_MODELS.CLAUDE_OPUS_4
|
|
67
|
-
},
|
|
68
64
|
{
|
|
69
65
|
label: "Claude Sonnet 4.6",
|
|
70
66
|
value: ANTHROPIC_MODELS.CLAUDE_SONNET_4_6
|
|
@@ -73,13 +69,13 @@ async function promptForModelConfiguration() {
|
|
|
73
69
|
label: "Claude Sonnet 4.5",
|
|
74
70
|
value: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5
|
|
75
71
|
},
|
|
76
|
-
{
|
|
77
|
-
label: "Claude Sonnet 4",
|
|
78
|
-
value: ANTHROPIC_MODELS.CLAUDE_SONNET_4
|
|
79
|
-
},
|
|
80
72
|
{
|
|
81
73
|
label: "Claude Haiku 4.5",
|
|
82
74
|
value: ANTHROPIC_MODELS.CLAUDE_HAIKU_4_5
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
label: "Claude Opus 4.1",
|
|
78
|
+
value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_1
|
|
83
79
|
}
|
|
84
80
|
];
|
|
85
81
|
const openaiModels = [
|
|
@@ -87,41 +83,53 @@ async function promptForModelConfiguration() {
|
|
|
87
83
|
label: "GPT-5.5 Pro",
|
|
88
84
|
value: OPENAI_MODELS.GPT_5_5_PRO
|
|
89
85
|
},
|
|
90
|
-
{
|
|
91
|
-
label: "GPT-5.5",
|
|
92
|
-
value: OPENAI_MODELS.GPT_5_5
|
|
93
|
-
},
|
|
94
86
|
{
|
|
95
87
|
label: "GPT-5.4 Pro",
|
|
96
88
|
value: OPENAI_MODELS.GPT_5_4_PRO
|
|
97
89
|
},
|
|
90
|
+
{
|
|
91
|
+
label: "GPT-5.2 Pro",
|
|
92
|
+
value: OPENAI_MODELS.GPT_5_2_PRO
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
label: "GPT-5.5",
|
|
96
|
+
value: OPENAI_MODELS.GPT_5_5
|
|
97
|
+
},
|
|
98
98
|
{
|
|
99
99
|
label: "GPT-5.4",
|
|
100
100
|
value: OPENAI_MODELS.GPT_5_4
|
|
101
101
|
},
|
|
102
102
|
{
|
|
103
|
-
label: "GPT-5.
|
|
104
|
-
value: OPENAI_MODELS.
|
|
103
|
+
label: "GPT-5.2",
|
|
104
|
+
value: OPENAI_MODELS.GPT_5_2
|
|
105
105
|
},
|
|
106
106
|
{
|
|
107
|
-
label: "GPT-5.
|
|
108
|
-
value: OPENAI_MODELS.
|
|
107
|
+
label: "GPT-5.1",
|
|
108
|
+
value: OPENAI_MODELS.GPT_5_1
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
label: "GPT-5",
|
|
112
|
+
value: OPENAI_MODELS.GPT_5
|
|
109
113
|
},
|
|
110
114
|
{
|
|
111
115
|
label: "GPT-5.3 Codex",
|
|
112
116
|
value: OPENAI_MODELS.GPT_5_3_CODEX
|
|
113
117
|
},
|
|
114
118
|
{
|
|
115
|
-
label: "GPT-5.
|
|
116
|
-
value: OPENAI_MODELS.
|
|
119
|
+
label: "GPT-5.4 Mini",
|
|
120
|
+
value: OPENAI_MODELS.GPT_5_4_MINI
|
|
117
121
|
},
|
|
118
122
|
{
|
|
119
|
-
label: "GPT-5
|
|
120
|
-
value: OPENAI_MODELS.
|
|
123
|
+
label: "GPT-5 Mini",
|
|
124
|
+
value: OPENAI_MODELS.GPT_5_MINI
|
|
121
125
|
},
|
|
122
126
|
{
|
|
123
|
-
label: "GPT-5.
|
|
124
|
-
value: OPENAI_MODELS.
|
|
127
|
+
label: "GPT-5.4 Nano",
|
|
128
|
+
value: OPENAI_MODELS.GPT_5_4_NANO
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
label: "GPT-5 Nano",
|
|
132
|
+
value: OPENAI_MODELS.GPT_5_NANO
|
|
125
133
|
},
|
|
126
134
|
{
|
|
127
135
|
label: "o3 Pro",
|
|
@@ -138,22 +146,6 @@ async function promptForModelConfiguration() {
|
|
|
138
146
|
{
|
|
139
147
|
label: "GPT-4.1 Mini",
|
|
140
148
|
value: OPENAI_MODELS.GPT_4_1_MINI
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
label: "GPT-4.1 Nano",
|
|
144
|
-
value: OPENAI_MODELS.GPT_4_1_NANO
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
label: "GPT-5",
|
|
148
|
-
value: OPENAI_MODELS.GPT_5
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
label: "GPT-5 Mini",
|
|
152
|
-
value: OPENAI_MODELS.GPT_5_MINI
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
label: "GPT-5 Nano",
|
|
156
|
-
value: OPENAI_MODELS.GPT_5_NANO
|
|
157
149
|
}
|
|
158
150
|
];
|
|
159
151
|
const googleModels = [
|
|
@@ -162,16 +154,12 @@ async function promptForModelConfiguration() {
|
|
|
162
154
|
value: GOOGLE_MODELS.GEMINI_3_1_PRO_PREVIEW
|
|
163
155
|
},
|
|
164
156
|
{
|
|
165
|
-
label: "Gemini 3.
|
|
166
|
-
value: GOOGLE_MODELS.
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
label: "Gemini 3 Flash",
|
|
170
|
-
value: GOOGLE_MODELS.GEMINI_3_FLASH
|
|
157
|
+
label: "Gemini 3.5 Flash",
|
|
158
|
+
value: GOOGLE_MODELS.GEMINI_3_5_FLASH
|
|
171
159
|
},
|
|
172
160
|
{
|
|
173
|
-
label: "Gemini 3
|
|
174
|
-
value: GOOGLE_MODELS.
|
|
161
|
+
label: "Gemini 3.1 Flash Lite",
|
|
162
|
+
value: GOOGLE_MODELS.GEMINI_3_1_FLASH_LITE
|
|
175
163
|
},
|
|
176
164
|
{
|
|
177
165
|
label: "Gemini 2.5 Pro",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-config.js","names":[],"sources":["../../src/utils/model-config.ts"],"sourcesContent":["import * as p from '@clack/prompts';\nimport { ANTHROPIC_MODELS, GOOGLE_MODELS, OPENAI_MODELS } from '@inkeep/agents-core';\n\nexport interface ModelConfigurationResult {\n modelSettings: {\n base: {\n model: string;\n providerOptions?: Record<string, any>;\n };\n structuredOutput?: {\n model: string;\n providerOptions?: Record<string, any>;\n };\n summarizer?: {\n model: string;\n providerOptions?: Record<string, any>;\n };\n };\n}\n\nexport type ModelSettings = ModelConfigurationResult['modelSettings'];\n\nexport const defaultGeminiModelConfigurations: ModelSettings = {\n base: {\n model: GOOGLE_MODELS.GEMINI_2_5_FLASH,\n },\n structuredOutput: {\n model: GOOGLE_MODELS.GEMINI_2_5_FLASH_LITE,\n },\n summarizer: {\n model: GOOGLE_MODELS.GEMINI_2_5_FLASH_LITE,\n },\n};\n\nexport const defaultOpenaiModelConfigurations: ModelSettings = {\n base: {\n model: OPENAI_MODELS.GPT_5_2,\n },\n structuredOutput: {\n model: OPENAI_MODELS.GPT_4_1_MINI,\n },\n summarizer: {\n model: OPENAI_MODELS.GPT_4_1_NANO,\n },\n};\n\nexport const defaultAnthropicModelConfigurations: ModelSettings = {\n base: {\n model: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5,\n },\n structuredOutput: {\n model: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5,\n },\n summarizer: {\n model: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5,\n },\n};\n\n/**\n * Prompt user for model configuration (providers and model selection)\n * This is shared between init and push commands\n */\nexport async function promptForModelConfiguration(): Promise<ModelConfigurationResult> {\n // Provider selection\n const providers = (await p.multiselect({\n message: 'Which AI providers would you like to configure?',\n options: [\n { value: 'anthropic', label: 'Anthropic (Claude)' },\n { value: 'openai', label: 'OpenAI (GPT)' },\n { value: 'google', label: 'Google (Gemini)' },\n { value: 'azure', label: 'Azure OpenAI' },\n ],\n required: true,\n })) as string[];\n\n if (p.isCancel(providers)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n\n // Available models for each provider (matching frontend options)\n const anthropicModels = [\n { label: 'Claude Opus 4.6', value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_6 },\n { label: 'Claude Opus 4.5', value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_5 },\n { label: 'Claude Opus 4.1', value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_1 },\n { label: 'Claude Opus 4', value: ANTHROPIC_MODELS.CLAUDE_OPUS_4 },\n { label: 'Claude Sonnet 4.6', value: ANTHROPIC_MODELS.CLAUDE_SONNET_4_6 },\n { label: 'Claude Sonnet 4.5', value: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5 },\n { label: 'Claude Sonnet 4', value: ANTHROPIC_MODELS.CLAUDE_SONNET_4 },\n { label: 'Claude Haiku 4.5', value: ANTHROPIC_MODELS.CLAUDE_HAIKU_4_5 },\n ];\n\n const openaiModels = [\n { label: 'GPT-5.5 Pro', value: OPENAI_MODELS.GPT_5_5_PRO },\n { label: 'GPT-5.5', value: OPENAI_MODELS.GPT_5_5 },\n { label: 'GPT-5.4 Pro', value: OPENAI_MODELS.GPT_5_4_PRO },\n { label: 'GPT-5.4', value: OPENAI_MODELS.GPT_5_4 },\n { label: 'GPT-5.4 Mini', value: OPENAI_MODELS.GPT_5_4_MINI },\n { label: 'GPT-5.4 Nano', value: OPENAI_MODELS.GPT_5_4_NANO },\n { label: 'GPT-5.3 Codex', value: OPENAI_MODELS.GPT_5_3_CODEX },\n { label: 'GPT-5.2 Pro', value: OPENAI_MODELS.GPT_5_2_PRO },\n { label: 'GPT-5.2', value: OPENAI_MODELS.GPT_5_2 },\n { label: 'GPT-5.1', value: OPENAI_MODELS.GPT_5_1 },\n { label: 'o3 Pro', value: OPENAI_MODELS.O3_PRO },\n { label: 'o3', value: OPENAI_MODELS.O3 },\n { label: 'GPT-4.1', value: OPENAI_MODELS.GPT_4_1 },\n { label: 'GPT-4.1 Mini', value: OPENAI_MODELS.GPT_4_1_MINI },\n { label: 'GPT-4.1 Nano', value: OPENAI_MODELS.GPT_4_1_NANO },\n { label: 'GPT-5', value: OPENAI_MODELS.GPT_5 },\n { label: 'GPT-5 Mini', value: OPENAI_MODELS.GPT_5_MINI },\n { label: 'GPT-5 Nano', value: OPENAI_MODELS.GPT_5_NANO },\n ];\n\n const googleModels = [\n { label: 'Gemini 3.1 Pro Preview', value: GOOGLE_MODELS.GEMINI_3_1_PRO_PREVIEW },\n { label: 'Gemini 3.1 Flash Lite Preview', value: GOOGLE_MODELS.GEMINI_3_1_FLASH_LITE_PREVIEW },\n { label: 'Gemini 3 Flash', value: GOOGLE_MODELS.GEMINI_3_FLASH },\n { label: 'Gemini 3 Pro Preview', value: GOOGLE_MODELS.GEMINI_3_PRO_PREVIEW },\n { label: 'Gemini 2.5 Pro', value: GOOGLE_MODELS.GEMINI_2_5_PRO },\n { label: 'Gemini 2.5 Flash', value: GOOGLE_MODELS.GEMINI_2_5_FLASH },\n { label: 'Gemini 2.5 Flash Lite', value: GOOGLE_MODELS.GEMINI_2_5_FLASH_LITE },\n ];\n\n // Handle Azure configuration if selected\n const azureConfigs: any = {};\n if (providers.includes('azure')) {\n p.note('Azure OpenAI requires custom deployment configuration.');\n\n const deploymentName = await p.text({\n message: 'Enter your Azure deployment name:',\n placeholder: 'my-gpt-4o-deployment',\n validate: (value) => {\n if (!value?.trim()) return 'Deployment name is required';\n },\n });\n\n if (p.isCancel(deploymentName)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n\n const connectionMethod = await p.select({\n message: 'How would you like to connect to Azure?',\n options: [\n { value: 'resource', label: 'Azure Resource Name (recommended)' },\n { value: 'url', label: 'Custom Base URL' },\n ],\n });\n\n if (p.isCancel(connectionMethod)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n\n if (connectionMethod === 'resource') {\n const resourceName = await p.text({\n message: 'Enter your Azure resource name:',\n placeholder: 'your-azure-resource',\n validate: (value) => {\n if (!value?.trim()) return 'Resource name is required';\n },\n });\n\n if (p.isCancel(resourceName)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n\n azureConfigs.resourceName = resourceName;\n } else {\n const baseURL = await p.text({\n message: 'Enter your Azure base URL:',\n placeholder: 'https://your-endpoint.openai.azure.com/openai',\n validate: (value) => {\n if (!value?.trim()) return 'Base URL is required';\n if (!value.startsWith('https://')) return 'Base URL must start with https://';\n },\n });\n\n if (p.isCancel(baseURL)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n\n azureConfigs.baseURL = baseURL;\n }\n\n azureConfigs.deploymentName = deploymentName;\n azureConfigs.model = `azure/${deploymentName}`;\n }\n\n // Collect all available models based on selected providers\n const availableModels = [];\n if (providers.includes('anthropic')) {\n availableModels.push(...anthropicModels);\n }\n if (providers.includes('openai')) {\n availableModels.push(...openaiModels);\n }\n if (providers.includes('google')) {\n availableModels.push(...googleModels);\n }\n if (providers.includes('azure') && azureConfigs.model) {\n availableModels.push({\n label: `${azureConfigs.deploymentName} (Azure)`,\n value: azureConfigs.model,\n });\n }\n\n // Model selection for different use cases\n const baseModel = (await p.select({\n message: 'Select your default model for general tasks (required):',\n options: availableModels,\n })) as string;\n\n if (p.isCancel(baseModel)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n\n const configureOptionalModels = await p.confirm({\n message: 'Would you like to configure optional models for structured output and summaries?',\n initialValue: false,\n });\n\n if (p.isCancel(configureOptionalModels)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n\n let structuredOutputModel: string | null = null;\n let summarizerModel: string | null = null;\n\n if (configureOptionalModels) {\n const optionalChoices = [...availableModels, { label: 'Use base model', value: null }];\n\n const structuredOutputResponse = await p.select({\n message: 'Select your model for structured output tasks (or use base model):',\n options: optionalChoices,\n });\n\n if (p.isCancel(structuredOutputResponse)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n structuredOutputModel = structuredOutputResponse as string | null;\n\n const summarizerResponse = await p.select({\n message: 'Select your model for summaries and quick tasks (or use base model):',\n options: optionalChoices,\n });\n\n if (p.isCancel(summarizerResponse)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n summarizerModel = summarizerResponse as string | null;\n }\n\n // Helper function to add Azure provider options if needed\n const addProviderOptions = (model: string) => {\n if (model.startsWith('azure/') && (azureConfigs.resourceName || azureConfigs.baseURL)) {\n const providerOptions: any = {};\n if (azureConfigs.resourceName) {\n providerOptions.resourceName = azureConfigs.resourceName;\n }\n if (azureConfigs.baseURL) {\n providerOptions.baseURL = azureConfigs.baseURL;\n }\n return providerOptions;\n }\n return undefined;\n };\n\n // Build model settings object\n const modelSettings: any = {\n base: {\n model: baseModel,\n },\n };\n\n // Add Azure provider options to base model if needed\n const baseProviderOptions = addProviderOptions(baseModel);\n if (baseProviderOptions) {\n modelSettings.base.providerOptions = baseProviderOptions;\n }\n\n // Add optional models only if they were configured\n if (structuredOutputModel) {\n modelSettings.structuredOutput = {\n model: structuredOutputModel,\n };\n\n const structuredProviderOptions = addProviderOptions(structuredOutputModel);\n if (structuredProviderOptions) {\n modelSettings.structuredOutput.providerOptions = structuredProviderOptions;\n }\n }\n\n if (summarizerModel) {\n modelSettings.summarizer = {\n model: summarizerModel,\n };\n\n const summarizerProviderOptions = addProviderOptions(summarizerModel);\n if (summarizerProviderOptions) {\n modelSettings.summarizer.providerOptions = summarizerProviderOptions;\n }\n }\n\n return { modelSettings };\n}\n"],"mappings":";;;;AAsBA,MAAa,mCAAkD;CAC7D,MAAM,EACJ,OAAO,cAAc,kBACtB;CACD,kBAAkB,EAChB,OAAO,cAAc,uBACtB;CACD,YAAY,EACV,OAAO,cAAc,uBACtB;CACF;AAED,MAAa,mCAAkD;CAC7D,MAAM,EACJ,OAAO,cAAc,SACtB;CACD,kBAAkB,EAChB,OAAO,cAAc,cACtB;CACD,YAAY,EACV,OAAO,cAAc,cACtB;CACF;AAED,MAAa,sCAAqD;CAChE,MAAM,EACJ,OAAO,iBAAiB,mBACzB;CACD,kBAAkB,EAChB,OAAO,iBAAiB,mBACzB;CACD,YAAY,EACV,OAAO,iBAAiB,mBACzB;CACF;;;;;AAMD,eAAsB,8BAAiE;CAErF,MAAM,YAAa,MAAM,EAAE,YAAY;EACrC,SAAS;EACT,SAAS;GACP;IAAE,OAAO;IAAa,OAAO;IAAsB;GACnD;IAAE,OAAO;IAAU,OAAO;IAAgB;GAC1C;IAAE,OAAO;IAAU,OAAO;IAAmB;GAC7C;IAAE,OAAO;IAAS,OAAO;IAAgB;GAC1C;EACD,UAAU;EACX,CAAC;AAEF,KAAI,EAAE,SAAS,UAAU,EAAE;AACzB,IAAE,OAAO,sBAAsB;AAC/B,UAAQ,KAAK,EAAE;;CAIjB,MAAM,kBAAkB;EACtB;GAAE,OAAO;GAAmB,OAAO,iBAAiB;GAAiB;EACrE;GAAE,OAAO;GAAmB,OAAO,iBAAiB;GAAiB;EACrE;GAAE,OAAO;GAAmB,OAAO,iBAAiB;GAAiB;EACrE;GAAE,OAAO;GAAiB,OAAO,iBAAiB;GAAe;EACjE;GAAE,OAAO;GAAqB,OAAO,iBAAiB;GAAmB;EACzE;GAAE,OAAO;GAAqB,OAAO,iBAAiB;GAAmB;EACzE;GAAE,OAAO;GAAmB,OAAO,iBAAiB;GAAiB;EACrE;GAAE,OAAO;GAAoB,OAAO,iBAAiB;GAAkB;EACxE;CAED,MAAM,eAAe;EACnB;GAAE,OAAO;GAAe,OAAO,cAAc;GAAa;EAC1D;GAAE,OAAO;GAAW,OAAO,cAAc;GAAS;EAClD;GAAE,OAAO;GAAe,OAAO,cAAc;GAAa;EAC1D;GAAE,OAAO;GAAW,OAAO,cAAc;GAAS;EAClD;GAAE,OAAO;GAAgB,OAAO,cAAc;GAAc;EAC5D;GAAE,OAAO;GAAgB,OAAO,cAAc;GAAc;EAC5D;GAAE,OAAO;GAAiB,OAAO,cAAc;GAAe;EAC9D;GAAE,OAAO;GAAe,OAAO,cAAc;GAAa;EAC1D;GAAE,OAAO;GAAW,OAAO,cAAc;GAAS;EAClD;GAAE,OAAO;GAAW,OAAO,cAAc;GAAS;EAClD;GAAE,OAAO;GAAU,OAAO,cAAc;GAAQ;EAChD;GAAE,OAAO;GAAM,OAAO,cAAc;GAAI;EACxC;GAAE,OAAO;GAAW,OAAO,cAAc;GAAS;EAClD;GAAE,OAAO;GAAgB,OAAO,cAAc;GAAc;EAC5D;GAAE,OAAO;GAAgB,OAAO,cAAc;GAAc;EAC5D;GAAE,OAAO;GAAS,OAAO,cAAc;GAAO;EAC9C;GAAE,OAAO;GAAc,OAAO,cAAc;GAAY;EACxD;GAAE,OAAO;GAAc,OAAO,cAAc;GAAY;EACzD;CAED,MAAM,eAAe;EACnB;GAAE,OAAO;GAA0B,OAAO,cAAc;GAAwB;EAChF;GAAE,OAAO;GAAiC,OAAO,cAAc;GAA+B;EAC9F;GAAE,OAAO;GAAkB,OAAO,cAAc;GAAgB;EAChE;GAAE,OAAO;GAAwB,OAAO,cAAc;GAAsB;EAC5E;GAAE,OAAO;GAAkB,OAAO,cAAc;GAAgB;EAChE;GAAE,OAAO;GAAoB,OAAO,cAAc;GAAkB;EACpE;GAAE,OAAO;GAAyB,OAAO,cAAc;GAAuB;EAC/E;CAGD,MAAM,eAAoB,EAAE;AAC5B,KAAI,UAAU,SAAS,QAAQ,EAAE;AAC/B,IAAE,KAAK,yDAAyD;EAEhE,MAAM,iBAAiB,MAAM,EAAE,KAAK;GAClC,SAAS;GACT,aAAa;GACb,WAAW,UAAU;AACnB,QAAI,CAAC,OAAO,MAAM,CAAE,QAAO;;GAE9B,CAAC;AAEF,MAAI,EAAE,SAAS,eAAe,EAAE;AAC9B,KAAE,OAAO,sBAAsB;AAC/B,WAAQ,KAAK,EAAE;;EAGjB,MAAM,mBAAmB,MAAM,EAAE,OAAO;GACtC,SAAS;GACT,SAAS,CACP;IAAE,OAAO;IAAY,OAAO;IAAqC,EACjE;IAAE,OAAO;IAAO,OAAO;IAAmB,CAC3C;GACF,CAAC;AAEF,MAAI,EAAE,SAAS,iBAAiB,EAAE;AAChC,KAAE,OAAO,sBAAsB;AAC/B,WAAQ,KAAK,EAAE;;AAGjB,MAAI,qBAAqB,YAAY;GACnC,MAAM,eAAe,MAAM,EAAE,KAAK;IAChC,SAAS;IACT,aAAa;IACb,WAAW,UAAU;AACnB,SAAI,CAAC,OAAO,MAAM,CAAE,QAAO;;IAE9B,CAAC;AAEF,OAAI,EAAE,SAAS,aAAa,EAAE;AAC5B,MAAE,OAAO,sBAAsB;AAC/B,YAAQ,KAAK,EAAE;;AAGjB,gBAAa,eAAe;SACvB;GACL,MAAM,UAAU,MAAM,EAAE,KAAK;IAC3B,SAAS;IACT,aAAa;IACb,WAAW,UAAU;AACnB,SAAI,CAAC,OAAO,MAAM,CAAE,QAAO;AAC3B,SAAI,CAAC,MAAM,WAAW,WAAW,CAAE,QAAO;;IAE7C,CAAC;AAEF,OAAI,EAAE,SAAS,QAAQ,EAAE;AACvB,MAAE,OAAO,sBAAsB;AAC/B,YAAQ,KAAK,EAAE;;AAGjB,gBAAa,UAAU;;AAGzB,eAAa,iBAAiB;AAC9B,eAAa,QAAQ,SAAS;;CAIhC,MAAM,kBAAkB,EAAE;AAC1B,KAAI,UAAU,SAAS,YAAY,CACjC,iBAAgB,KAAK,GAAG,gBAAgB;AAE1C,KAAI,UAAU,SAAS,SAAS,CAC9B,iBAAgB,KAAK,GAAG,aAAa;AAEvC,KAAI,UAAU,SAAS,SAAS,CAC9B,iBAAgB,KAAK,GAAG,aAAa;AAEvC,KAAI,UAAU,SAAS,QAAQ,IAAI,aAAa,MAC9C,iBAAgB,KAAK;EACnB,OAAO,GAAG,aAAa,eAAe;EACtC,OAAO,aAAa;EACrB,CAAC;CAIJ,MAAM,YAAa,MAAM,EAAE,OAAO;EAChC,SAAS;EACT,SAAS;EACV,CAAC;AAEF,KAAI,EAAE,SAAS,UAAU,EAAE;AACzB,IAAE,OAAO,sBAAsB;AAC/B,UAAQ,KAAK,EAAE;;CAGjB,MAAM,0BAA0B,MAAM,EAAE,QAAQ;EAC9C,SAAS;EACT,cAAc;EACf,CAAC;AAEF,KAAI,EAAE,SAAS,wBAAwB,EAAE;AACvC,IAAE,OAAO,sBAAsB;AAC/B,UAAQ,KAAK,EAAE;;CAGjB,IAAI,wBAAuC;CAC3C,IAAI,kBAAiC;AAErC,KAAI,yBAAyB;EAC3B,MAAM,kBAAkB,CAAC,GAAG,iBAAiB;GAAE,OAAO;GAAkB,OAAO;GAAM,CAAC;EAEtF,MAAM,2BAA2B,MAAM,EAAE,OAAO;GAC9C,SAAS;GACT,SAAS;GACV,CAAC;AAEF,MAAI,EAAE,SAAS,yBAAyB,EAAE;AACxC,KAAE,OAAO,sBAAsB;AAC/B,WAAQ,KAAK,EAAE;;AAEjB,0BAAwB;EAExB,MAAM,qBAAqB,MAAM,EAAE,OAAO;GACxC,SAAS;GACT,SAAS;GACV,CAAC;AAEF,MAAI,EAAE,SAAS,mBAAmB,EAAE;AAClC,KAAE,OAAO,sBAAsB;AAC/B,WAAQ,KAAK,EAAE;;AAEjB,oBAAkB;;CAIpB,MAAM,sBAAsB,UAAkB;AAC5C,MAAI,MAAM,WAAW,SAAS,KAAK,aAAa,gBAAgB,aAAa,UAAU;GACrF,MAAM,kBAAuB,EAAE;AAC/B,OAAI,aAAa,aACf,iBAAgB,eAAe,aAAa;AAE9C,OAAI,aAAa,QACf,iBAAgB,UAAU,aAAa;AAEzC,UAAO;;;CAMX,MAAM,gBAAqB,EACzB,MAAM,EACJ,OAAO,WACR,EACF;CAGD,MAAM,sBAAsB,mBAAmB,UAAU;AACzD,KAAI,oBACF,eAAc,KAAK,kBAAkB;AAIvC,KAAI,uBAAuB;AACzB,gBAAc,mBAAmB,EAC/B,OAAO,uBACR;EAED,MAAM,4BAA4B,mBAAmB,sBAAsB;AAC3E,MAAI,0BACF,eAAc,iBAAiB,kBAAkB;;AAIrD,KAAI,iBAAiB;AACnB,gBAAc,aAAa,EACzB,OAAO,iBACR;EAED,MAAM,4BAA4B,mBAAmB,gBAAgB;AACrE,MAAI,0BACF,eAAc,WAAW,kBAAkB;;AAI/C,QAAO,EAAE,eAAe"}
|
|
1
|
+
{"version":3,"file":"model-config.js","names":[],"sources":["../../src/utils/model-config.ts"],"sourcesContent":["import * as p from '@clack/prompts';\nimport { ANTHROPIC_MODELS, GOOGLE_MODELS, OPENAI_MODELS } from '@inkeep/agents-core';\n\nexport interface ModelConfigurationResult {\n modelSettings: {\n base: {\n model: string;\n providerOptions?: Record<string, any>;\n };\n structuredOutput?: {\n model: string;\n providerOptions?: Record<string, any>;\n };\n summarizer?: {\n model: string;\n providerOptions?: Record<string, any>;\n };\n };\n}\n\nexport type ModelSettings = ModelConfigurationResult['modelSettings'];\n\nexport const defaultGeminiModelConfigurations: ModelSettings = {\n base: {\n model: GOOGLE_MODELS.GEMINI_2_5_FLASH,\n },\n structuredOutput: {\n model: GOOGLE_MODELS.GEMINI_2_5_FLASH_LITE,\n },\n summarizer: {\n model: GOOGLE_MODELS.GEMINI_2_5_FLASH_LITE,\n },\n};\n\nexport const defaultOpenaiModelConfigurations: ModelSettings = {\n base: {\n model: OPENAI_MODELS.GPT_5_2,\n },\n structuredOutput: {\n model: OPENAI_MODELS.GPT_4_1_MINI,\n },\n summarizer: {\n model: OPENAI_MODELS.GPT_5_4_NANO,\n },\n};\n\nexport const defaultAnthropicModelConfigurations: ModelSettings = {\n base: {\n model: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5,\n },\n structuredOutput: {\n model: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5,\n },\n summarizer: {\n model: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5,\n },\n};\n\n/**\n * Prompt user for model configuration (providers and model selection)\n * This is shared between init and push commands\n */\nexport async function promptForModelConfiguration(): Promise<ModelConfigurationResult> {\n // Provider selection\n const providers = (await p.multiselect({\n message: 'Which AI providers would you like to configure?',\n options: [\n { value: 'anthropic', label: 'Anthropic (Claude)' },\n { value: 'openai', label: 'OpenAI (GPT)' },\n { value: 'google', label: 'Google (Gemini)' },\n { value: 'azure', label: 'Azure OpenAI' },\n ],\n required: true,\n })) as string[];\n\n if (p.isCancel(providers)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n\n // Available models for each provider (matching frontend options)\n const anthropicModels = [\n { label: 'Claude Opus 4.7', value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_7 },\n { label: 'Claude Opus 4.6', value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_6 },\n { label: 'Claude Opus 4.5', value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_5 },\n { label: 'Claude Sonnet 4.6', value: ANTHROPIC_MODELS.CLAUDE_SONNET_4_6 },\n { label: 'Claude Sonnet 4.5', value: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5 },\n { label: 'Claude Haiku 4.5', value: ANTHROPIC_MODELS.CLAUDE_HAIKU_4_5 },\n { label: 'Claude Opus 4.1', value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_1 },\n ];\n\n const openaiModels = [\n { label: 'GPT-5.5 Pro', value: OPENAI_MODELS.GPT_5_5_PRO },\n { label: 'GPT-5.4 Pro', value: OPENAI_MODELS.GPT_5_4_PRO },\n { label: 'GPT-5.2 Pro', value: OPENAI_MODELS.GPT_5_2_PRO },\n { label: 'GPT-5.5', value: OPENAI_MODELS.GPT_5_5 },\n { label: 'GPT-5.4', value: OPENAI_MODELS.GPT_5_4 },\n { label: 'GPT-5.2', value: OPENAI_MODELS.GPT_5_2 },\n { label: 'GPT-5.1', value: OPENAI_MODELS.GPT_5_1 },\n { label: 'GPT-5', value: OPENAI_MODELS.GPT_5 },\n { label: 'GPT-5.3 Codex', value: OPENAI_MODELS.GPT_5_3_CODEX },\n { label: 'GPT-5.4 Mini', value: OPENAI_MODELS.GPT_5_4_MINI },\n { label: 'GPT-5 Mini', value: OPENAI_MODELS.GPT_5_MINI },\n { label: 'GPT-5.4 Nano', value: OPENAI_MODELS.GPT_5_4_NANO },\n { label: 'GPT-5 Nano', value: OPENAI_MODELS.GPT_5_NANO },\n { label: 'o3 Pro', value: OPENAI_MODELS.O3_PRO },\n { label: 'o3', value: OPENAI_MODELS.O3 },\n { label: 'GPT-4.1', value: OPENAI_MODELS.GPT_4_1 },\n { label: 'GPT-4.1 Mini', value: OPENAI_MODELS.GPT_4_1_MINI },\n ];\n\n const googleModels = [\n { label: 'Gemini 3.1 Pro Preview', value: GOOGLE_MODELS.GEMINI_3_1_PRO_PREVIEW },\n { label: 'Gemini 3.5 Flash', value: GOOGLE_MODELS.GEMINI_3_5_FLASH },\n { label: 'Gemini 3.1 Flash Lite', value: GOOGLE_MODELS.GEMINI_3_1_FLASH_LITE },\n { label: 'Gemini 2.5 Pro', value: GOOGLE_MODELS.GEMINI_2_5_PRO },\n { label: 'Gemini 2.5 Flash', value: GOOGLE_MODELS.GEMINI_2_5_FLASH },\n { label: 'Gemini 2.5 Flash Lite', value: GOOGLE_MODELS.GEMINI_2_5_FLASH_LITE },\n ];\n\n // Handle Azure configuration if selected\n const azureConfigs: any = {};\n if (providers.includes('azure')) {\n p.note('Azure OpenAI requires custom deployment configuration.');\n\n const deploymentName = await p.text({\n message: 'Enter your Azure deployment name:',\n placeholder: 'my-gpt-4o-deployment',\n validate: (value) => {\n if (!value?.trim()) return 'Deployment name is required';\n },\n });\n\n if (p.isCancel(deploymentName)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n\n const connectionMethod = await p.select({\n message: 'How would you like to connect to Azure?',\n options: [\n { value: 'resource', label: 'Azure Resource Name (recommended)' },\n { value: 'url', label: 'Custom Base URL' },\n ],\n });\n\n if (p.isCancel(connectionMethod)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n\n if (connectionMethod === 'resource') {\n const resourceName = await p.text({\n message: 'Enter your Azure resource name:',\n placeholder: 'your-azure-resource',\n validate: (value) => {\n if (!value?.trim()) return 'Resource name is required';\n },\n });\n\n if (p.isCancel(resourceName)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n\n azureConfigs.resourceName = resourceName;\n } else {\n const baseURL = await p.text({\n message: 'Enter your Azure base URL:',\n placeholder: 'https://your-endpoint.openai.azure.com/openai',\n validate: (value) => {\n if (!value?.trim()) return 'Base URL is required';\n if (!value.startsWith('https://')) return 'Base URL must start with https://';\n },\n });\n\n if (p.isCancel(baseURL)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n\n azureConfigs.baseURL = baseURL;\n }\n\n azureConfigs.deploymentName = deploymentName;\n azureConfigs.model = `azure/${deploymentName}`;\n }\n\n // Collect all available models based on selected providers\n const availableModels = [];\n if (providers.includes('anthropic')) {\n availableModels.push(...anthropicModels);\n }\n if (providers.includes('openai')) {\n availableModels.push(...openaiModels);\n }\n if (providers.includes('google')) {\n availableModels.push(...googleModels);\n }\n if (providers.includes('azure') && azureConfigs.model) {\n availableModels.push({\n label: `${azureConfigs.deploymentName} (Azure)`,\n value: azureConfigs.model,\n });\n }\n\n // Model selection for different use cases\n const baseModel = (await p.select({\n message: 'Select your default model for general tasks (required):',\n options: availableModels,\n })) as string;\n\n if (p.isCancel(baseModel)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n\n const configureOptionalModels = await p.confirm({\n message: 'Would you like to configure optional models for structured output and summaries?',\n initialValue: false,\n });\n\n if (p.isCancel(configureOptionalModels)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n\n let structuredOutputModel: string | null = null;\n let summarizerModel: string | null = null;\n\n if (configureOptionalModels) {\n const optionalChoices = [...availableModels, { label: 'Use base model', value: null }];\n\n const structuredOutputResponse = await p.select({\n message: 'Select your model for structured output tasks (or use base model):',\n options: optionalChoices,\n });\n\n if (p.isCancel(structuredOutputResponse)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n structuredOutputModel = structuredOutputResponse as string | null;\n\n const summarizerResponse = await p.select({\n message: 'Select your model for summaries and quick tasks (or use base model):',\n options: optionalChoices,\n });\n\n if (p.isCancel(summarizerResponse)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n summarizerModel = summarizerResponse as string | null;\n }\n\n // Helper function to add Azure provider options if needed\n const addProviderOptions = (model: string) => {\n if (model.startsWith('azure/') && (azureConfigs.resourceName || azureConfigs.baseURL)) {\n const providerOptions: any = {};\n if (azureConfigs.resourceName) {\n providerOptions.resourceName = azureConfigs.resourceName;\n }\n if (azureConfigs.baseURL) {\n providerOptions.baseURL = azureConfigs.baseURL;\n }\n return providerOptions;\n }\n return undefined;\n };\n\n // Build model settings object\n const modelSettings: any = {\n base: {\n model: baseModel,\n },\n };\n\n // Add Azure provider options to base model if needed\n const baseProviderOptions = addProviderOptions(baseModel);\n if (baseProviderOptions) {\n modelSettings.base.providerOptions = baseProviderOptions;\n }\n\n // Add optional models only if they were configured\n if (structuredOutputModel) {\n modelSettings.structuredOutput = {\n model: structuredOutputModel,\n };\n\n const structuredProviderOptions = addProviderOptions(structuredOutputModel);\n if (structuredProviderOptions) {\n modelSettings.structuredOutput.providerOptions = structuredProviderOptions;\n }\n }\n\n if (summarizerModel) {\n modelSettings.summarizer = {\n model: summarizerModel,\n };\n\n const summarizerProviderOptions = addProviderOptions(summarizerModel);\n if (summarizerProviderOptions) {\n modelSettings.summarizer.providerOptions = summarizerProviderOptions;\n }\n }\n\n return { modelSettings };\n}\n"],"mappings":";;;;AAsBA,MAAa,mCAAkD;CAC7D,MAAM,EACJ,OAAO,cAAc,kBACtB;CACD,kBAAkB,EAChB,OAAO,cAAc,uBACtB;CACD,YAAY,EACV,OAAO,cAAc,uBACtB;CACF;AAED,MAAa,mCAAkD;CAC7D,MAAM,EACJ,OAAO,cAAc,SACtB;CACD,kBAAkB,EAChB,OAAO,cAAc,cACtB;CACD,YAAY,EACV,OAAO,cAAc,cACtB;CACF;AAED,MAAa,sCAAqD;CAChE,MAAM,EACJ,OAAO,iBAAiB,mBACzB;CACD,kBAAkB,EAChB,OAAO,iBAAiB,mBACzB;CACD,YAAY,EACV,OAAO,iBAAiB,mBACzB;CACF;;;;;AAMD,eAAsB,8BAAiE;CAErF,MAAM,YAAa,MAAM,EAAE,YAAY;EACrC,SAAS;EACT,SAAS;GACP;IAAE,OAAO;IAAa,OAAO;IAAsB;GACnD;IAAE,OAAO;IAAU,OAAO;IAAgB;GAC1C;IAAE,OAAO;IAAU,OAAO;IAAmB;GAC7C;IAAE,OAAO;IAAS,OAAO;IAAgB;GAC1C;EACD,UAAU;EACX,CAAC;AAEF,KAAI,EAAE,SAAS,UAAU,EAAE;AACzB,IAAE,OAAO,sBAAsB;AAC/B,UAAQ,KAAK,EAAE;;CAIjB,MAAM,kBAAkB;EACtB;GAAE,OAAO;GAAmB,OAAO,iBAAiB;GAAiB;EACrE;GAAE,OAAO;GAAmB,OAAO,iBAAiB;GAAiB;EACrE;GAAE,OAAO;GAAmB,OAAO,iBAAiB;GAAiB;EACrE;GAAE,OAAO;GAAqB,OAAO,iBAAiB;GAAmB;EACzE;GAAE,OAAO;GAAqB,OAAO,iBAAiB;GAAmB;EACzE;GAAE,OAAO;GAAoB,OAAO,iBAAiB;GAAkB;EACvE;GAAE,OAAO;GAAmB,OAAO,iBAAiB;GAAiB;EACtE;CAED,MAAM,eAAe;EACnB;GAAE,OAAO;GAAe,OAAO,cAAc;GAAa;EAC1D;GAAE,OAAO;GAAe,OAAO,cAAc;GAAa;EAC1D;GAAE,OAAO;GAAe,OAAO,cAAc;GAAa;EAC1D;GAAE,OAAO;GAAW,OAAO,cAAc;GAAS;EAClD;GAAE,OAAO;GAAW,OAAO,cAAc;GAAS;EAClD;GAAE,OAAO;GAAW,OAAO,cAAc;GAAS;EAClD;GAAE,OAAO;GAAW,OAAO,cAAc;GAAS;EAClD;GAAE,OAAO;GAAS,OAAO,cAAc;GAAO;EAC9C;GAAE,OAAO;GAAiB,OAAO,cAAc;GAAe;EAC9D;GAAE,OAAO;GAAgB,OAAO,cAAc;GAAc;EAC5D;GAAE,OAAO;GAAc,OAAO,cAAc;GAAY;EACxD;GAAE,OAAO;GAAgB,OAAO,cAAc;GAAc;EAC5D;GAAE,OAAO;GAAc,OAAO,cAAc;GAAY;EACxD;GAAE,OAAO;GAAU,OAAO,cAAc;GAAQ;EAChD;GAAE,OAAO;GAAM,OAAO,cAAc;GAAI;EACxC;GAAE,OAAO;GAAW,OAAO,cAAc;GAAS;EAClD;GAAE,OAAO;GAAgB,OAAO,cAAc;GAAc;EAC7D;CAED,MAAM,eAAe;EACnB;GAAE,OAAO;GAA0B,OAAO,cAAc;GAAwB;EAChF;GAAE,OAAO;GAAoB,OAAO,cAAc;GAAkB;EACpE;GAAE,OAAO;GAAyB,OAAO,cAAc;GAAuB;EAC9E;GAAE,OAAO;GAAkB,OAAO,cAAc;GAAgB;EAChE;GAAE,OAAO;GAAoB,OAAO,cAAc;GAAkB;EACpE;GAAE,OAAO;GAAyB,OAAO,cAAc;GAAuB;EAC/E;CAGD,MAAM,eAAoB,EAAE;AAC5B,KAAI,UAAU,SAAS,QAAQ,EAAE;AAC/B,IAAE,KAAK,yDAAyD;EAEhE,MAAM,iBAAiB,MAAM,EAAE,KAAK;GAClC,SAAS;GACT,aAAa;GACb,WAAW,UAAU;AACnB,QAAI,CAAC,OAAO,MAAM,CAAE,QAAO;;GAE9B,CAAC;AAEF,MAAI,EAAE,SAAS,eAAe,EAAE;AAC9B,KAAE,OAAO,sBAAsB;AAC/B,WAAQ,KAAK,EAAE;;EAGjB,MAAM,mBAAmB,MAAM,EAAE,OAAO;GACtC,SAAS;GACT,SAAS,CACP;IAAE,OAAO;IAAY,OAAO;IAAqC,EACjE;IAAE,OAAO;IAAO,OAAO;IAAmB,CAC3C;GACF,CAAC;AAEF,MAAI,EAAE,SAAS,iBAAiB,EAAE;AAChC,KAAE,OAAO,sBAAsB;AAC/B,WAAQ,KAAK,EAAE;;AAGjB,MAAI,qBAAqB,YAAY;GACnC,MAAM,eAAe,MAAM,EAAE,KAAK;IAChC,SAAS;IACT,aAAa;IACb,WAAW,UAAU;AACnB,SAAI,CAAC,OAAO,MAAM,CAAE,QAAO;;IAE9B,CAAC;AAEF,OAAI,EAAE,SAAS,aAAa,EAAE;AAC5B,MAAE,OAAO,sBAAsB;AAC/B,YAAQ,KAAK,EAAE;;AAGjB,gBAAa,eAAe;SACvB;GACL,MAAM,UAAU,MAAM,EAAE,KAAK;IAC3B,SAAS;IACT,aAAa;IACb,WAAW,UAAU;AACnB,SAAI,CAAC,OAAO,MAAM,CAAE,QAAO;AAC3B,SAAI,CAAC,MAAM,WAAW,WAAW,CAAE,QAAO;;IAE7C,CAAC;AAEF,OAAI,EAAE,SAAS,QAAQ,EAAE;AACvB,MAAE,OAAO,sBAAsB;AAC/B,YAAQ,KAAK,EAAE;;AAGjB,gBAAa,UAAU;;AAGzB,eAAa,iBAAiB;AAC9B,eAAa,QAAQ,SAAS;;CAIhC,MAAM,kBAAkB,EAAE;AAC1B,KAAI,UAAU,SAAS,YAAY,CACjC,iBAAgB,KAAK,GAAG,gBAAgB;AAE1C,KAAI,UAAU,SAAS,SAAS,CAC9B,iBAAgB,KAAK,GAAG,aAAa;AAEvC,KAAI,UAAU,SAAS,SAAS,CAC9B,iBAAgB,KAAK,GAAG,aAAa;AAEvC,KAAI,UAAU,SAAS,QAAQ,IAAI,aAAa,MAC9C,iBAAgB,KAAK;EACnB,OAAO,GAAG,aAAa,eAAe;EACtC,OAAO,aAAa;EACrB,CAAC;CAIJ,MAAM,YAAa,MAAM,EAAE,OAAO;EAChC,SAAS;EACT,SAAS;EACV,CAAC;AAEF,KAAI,EAAE,SAAS,UAAU,EAAE;AACzB,IAAE,OAAO,sBAAsB;AAC/B,UAAQ,KAAK,EAAE;;CAGjB,MAAM,0BAA0B,MAAM,EAAE,QAAQ;EAC9C,SAAS;EACT,cAAc;EACf,CAAC;AAEF,KAAI,EAAE,SAAS,wBAAwB,EAAE;AACvC,IAAE,OAAO,sBAAsB;AAC/B,UAAQ,KAAK,EAAE;;CAGjB,IAAI,wBAAuC;CAC3C,IAAI,kBAAiC;AAErC,KAAI,yBAAyB;EAC3B,MAAM,kBAAkB,CAAC,GAAG,iBAAiB;GAAE,OAAO;GAAkB,OAAO;GAAM,CAAC;EAEtF,MAAM,2BAA2B,MAAM,EAAE,OAAO;GAC9C,SAAS;GACT,SAAS;GACV,CAAC;AAEF,MAAI,EAAE,SAAS,yBAAyB,EAAE;AACxC,KAAE,OAAO,sBAAsB;AAC/B,WAAQ,KAAK,EAAE;;AAEjB,0BAAwB;EAExB,MAAM,qBAAqB,MAAM,EAAE,OAAO;GACxC,SAAS;GACT,SAAS;GACV,CAAC;AAEF,MAAI,EAAE,SAAS,mBAAmB,EAAE;AAClC,KAAE,OAAO,sBAAsB;AAC/B,WAAQ,KAAK,EAAE;;AAEjB,oBAAkB;;CAIpB,MAAM,sBAAsB,UAAkB;AAC5C,MAAI,MAAM,WAAW,SAAS,KAAK,aAAa,gBAAgB,aAAa,UAAU;GACrF,MAAM,kBAAuB,EAAE;AAC/B,OAAI,aAAa,aACf,iBAAgB,eAAe,aAAa;AAE9C,OAAI,aAAa,QACf,iBAAgB,UAAU,aAAa;AAEzC,UAAO;;;CAMX,MAAM,gBAAqB,EACzB,MAAM,EACJ,OAAO,WACR,EACF;CAGD,MAAM,sBAAsB,mBAAmB,UAAU;AACzD,KAAI,oBACF,eAAc,KAAK,kBAAkB;AAIvC,KAAI,uBAAuB;AACzB,gBAAc,mBAAmB,EAC/B,OAAO,uBACR;EAED,MAAM,4BAA4B,mBAAmB,sBAAsB;AAC3E,MAAI,0BACF,eAAc,iBAAiB,kBAAkB;;AAIrD,KAAI,iBAAiB;AACnB,gBAAc,aAAa,EACzB,OAAO,iBACR;EAED,MAAM,4BAA4B,mBAAmB,gBAAgB;AACrE,MAAI,0BACF,eAAc,WAAW,kBAAkB;;AAI/C,QAAO,EAAE,eAAe"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inkeep/agents-cli",
|
|
3
|
-
"version": "0.74.
|
|
3
|
+
"version": "0.74.3",
|
|
4
4
|
"description": "Inkeep CLI tool",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@clack/prompts": "^0.11.0",
|
|
24
24
|
"@vercel/otel": "^2.0.1",
|
|
25
|
-
"ai": "6.0.
|
|
25
|
+
"ai": "6.0.191",
|
|
26
26
|
"chalk": "^5.3.0",
|
|
27
27
|
"cli-table3": "^0.6.3",
|
|
28
28
|
"commander": "^14.0.0",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"tsx": "^4.20.5",
|
|
40
40
|
"yaml": "^2.7.0",
|
|
41
41
|
"zod": "^4.3.6",
|
|
42
|
-
"@inkeep/agents-core": "^0.74.
|
|
43
|
-
"@inkeep/agents-sdk": "^0.74.
|
|
42
|
+
"@inkeep/agents-core": "^0.74.3",
|
|
43
|
+
"@inkeep/agents-sdk": "^0.74.3"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/degit": "^2.8.6",
|