@inkeep/agents-cli 0.74.2 → 0.74.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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.GPT_4_1_NANO }
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 },
@@ -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":"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"}
package/dist/package.js CHANGED
@@ -1,6 +1,6 @@
1
1
  //#region package.json
2
2
  var name = "@inkeep/agents-cli";
3
- var version = "0.74.2";
3
+ var version = "0.74.4";
4
4
 
5
5
  //#endregion
6
6
  export { name, version };
@@ -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.GPT_4_1_NANO }
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 },
@@ -50,20 +50,20 @@ async function promptForModelConfiguration() {
50
50
  }
51
51
  const anthropicModels = [
52
52
  {
53
- label: "Claude Opus 4.6",
54
- value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_6
53
+ label: "Claude Opus 4.8",
54
+ value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_8
55
55
  },
56
56
  {
57
- label: "Claude Opus 4.5",
58
- value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_5
57
+ label: "Claude Opus 4.7",
58
+ value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_7
59
59
  },
60
60
  {
61
- label: "Claude Opus 4.1",
62
- value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_1
61
+ label: "Claude Opus 4.6",
62
+ value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_6
63
63
  },
64
64
  {
65
- label: "Claude Opus 4",
66
- value: ANTHROPIC_MODELS.CLAUDE_OPUS_4
65
+ label: "Claude Opus 4.5",
66
+ value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_5
67
67
  },
68
68
  {
69
69
  label: "Claude Sonnet 4.6",
@@ -73,13 +73,13 @@ async function promptForModelConfiguration() {
73
73
  label: "Claude Sonnet 4.5",
74
74
  value: ANTHROPIC_MODELS.CLAUDE_SONNET_4_5
75
75
  },
76
- {
77
- label: "Claude Sonnet 4",
78
- value: ANTHROPIC_MODELS.CLAUDE_SONNET_4
79
- },
80
76
  {
81
77
  label: "Claude Haiku 4.5",
82
78
  value: ANTHROPIC_MODELS.CLAUDE_HAIKU_4_5
79
+ },
80
+ {
81
+ label: "Claude Opus 4.1",
82
+ value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_1
83
83
  }
84
84
  ];
85
85
  const openaiModels = [
@@ -87,41 +87,53 @@ async function promptForModelConfiguration() {
87
87
  label: "GPT-5.5 Pro",
88
88
  value: OPENAI_MODELS.GPT_5_5_PRO
89
89
  },
90
- {
91
- label: "GPT-5.5",
92
- value: OPENAI_MODELS.GPT_5_5
93
- },
94
90
  {
95
91
  label: "GPT-5.4 Pro",
96
92
  value: OPENAI_MODELS.GPT_5_4_PRO
97
93
  },
94
+ {
95
+ label: "GPT-5.2 Pro",
96
+ value: OPENAI_MODELS.GPT_5_2_PRO
97
+ },
98
+ {
99
+ label: "GPT-5.5",
100
+ value: OPENAI_MODELS.GPT_5_5
101
+ },
98
102
  {
99
103
  label: "GPT-5.4",
100
104
  value: OPENAI_MODELS.GPT_5_4
101
105
  },
102
106
  {
103
- label: "GPT-5.4 Mini",
104
- value: OPENAI_MODELS.GPT_5_4_MINI
107
+ label: "GPT-5.2",
108
+ value: OPENAI_MODELS.GPT_5_2
105
109
  },
106
110
  {
107
- label: "GPT-5.4 Nano",
108
- value: OPENAI_MODELS.GPT_5_4_NANO
111
+ label: "GPT-5.1",
112
+ value: OPENAI_MODELS.GPT_5_1
113
+ },
114
+ {
115
+ label: "GPT-5",
116
+ value: OPENAI_MODELS.GPT_5
109
117
  },
110
118
  {
111
119
  label: "GPT-5.3 Codex",
112
120
  value: OPENAI_MODELS.GPT_5_3_CODEX
113
121
  },
114
122
  {
115
- label: "GPT-5.2 Pro",
116
- value: OPENAI_MODELS.GPT_5_2_PRO
123
+ label: "GPT-5.4 Mini",
124
+ value: OPENAI_MODELS.GPT_5_4_MINI
117
125
  },
118
126
  {
119
- label: "GPT-5.2",
120
- value: OPENAI_MODELS.GPT_5_2
127
+ label: "GPT-5 Mini",
128
+ value: OPENAI_MODELS.GPT_5_MINI
121
129
  },
122
130
  {
123
- label: "GPT-5.1",
124
- value: OPENAI_MODELS.GPT_5_1
131
+ label: "GPT-5.4 Nano",
132
+ value: OPENAI_MODELS.GPT_5_4_NANO
133
+ },
134
+ {
135
+ label: "GPT-5 Nano",
136
+ value: OPENAI_MODELS.GPT_5_NANO
125
137
  },
126
138
  {
127
139
  label: "o3 Pro",
@@ -138,22 +150,6 @@ async function promptForModelConfiguration() {
138
150
  {
139
151
  label: "GPT-4.1 Mini",
140
152
  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
153
  }
158
154
  ];
159
155
  const googleModels = [
@@ -162,16 +158,12 @@ async function promptForModelConfiguration() {
162
158
  value: GOOGLE_MODELS.GEMINI_3_1_PRO_PREVIEW
163
159
  },
164
160
  {
165
- label: "Gemini 3.1 Flash Lite Preview",
166
- value: GOOGLE_MODELS.GEMINI_3_1_FLASH_LITE_PREVIEW
167
- },
168
- {
169
- label: "Gemini 3 Flash",
170
- value: GOOGLE_MODELS.GEMINI_3_FLASH
161
+ label: "Gemini 3.5 Flash",
162
+ value: GOOGLE_MODELS.GEMINI_3_5_FLASH
171
163
  },
172
164
  {
173
- label: "Gemini 3 Pro Preview",
174
- value: GOOGLE_MODELS.GEMINI_3_PRO_PREVIEW
165
+ label: "Gemini 3.1 Flash Lite",
166
+ value: GOOGLE_MODELS.GEMINI_3_1_FLASH_LITE
175
167
  },
176
168
  {
177
169
  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":"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"}
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.8', value: ANTHROPIC_MODELS.CLAUDE_OPUS_4_8 },\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;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.2",
3
+ "version": "0.74.4",
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.14",
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.2",
43
- "@inkeep/agents-sdk": "^0.74.2"
42
+ "@inkeep/agents-core": "^0.74.4",
43
+ "@inkeep/agents-sdk": "^0.74.4"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@types/degit": "^2.8.6",