cognitive-runtime 0.2.1 → 0.3.0

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/cli.js CHANGED
@@ -10,7 +10,7 @@
10
10
  import { parseArgs } from 'node:util';
11
11
  import { getProvider, listProviders } from './providers/index.js';
12
12
  import { run, list, pipe, init } from './commands/index.js';
13
- const VERSION = '0.2.1';
13
+ const VERSION = '0.3.0';
14
14
  async function main() {
15
15
  const args = process.argv.slice(2);
16
16
  const command = args[0];
@@ -29,6 +29,7 @@ async function main() {
29
29
  args: { type: 'string', short: 'a' },
30
30
  input: { type: 'string', short: 'i' },
31
31
  module: { type: 'string', short: 'm' },
32
+ model: { type: 'string', short: 'M' },
32
33
  provider: { type: 'string', short: 'p' },
33
34
  pretty: { type: 'boolean', default: false },
34
35
  verbose: { type: 'boolean', short: 'V', default: false },
@@ -39,7 +40,7 @@ async function main() {
39
40
  // Get provider
40
41
  let provider;
41
42
  try {
42
- provider = getProvider(values.provider);
43
+ provider = getProvider(values.provider, values.model);
43
44
  }
44
45
  catch (e) {
45
46
  console.error(`Error: ${e instanceof Error ? e.message : e}`);
@@ -174,7 +175,8 @@ OPTIONS:
174
175
  -a, --args <str> Arguments to pass to module
175
176
  -i, --input <json> JSON input for module
176
177
  -m, --module <name> Module name (for pipe)
177
- -p, --provider <name> LLM provider (gemini, openai, anthropic)
178
+ -M, --model <name> LLM model (e.g., gpt-4o, gemini-2.0-flash)
179
+ -p, --provider <name> LLM provider (gemini, openai, anthropic, deepseek, minimax, moonshot, qwen, ollama)
178
180
  --pretty Pretty-print JSON output
179
181
  -V, --verbose Verbose output
180
182
  --no-validate Skip schema validation
@@ -183,6 +185,7 @@ OPTIONS:
183
185
 
184
186
  EXAMPLES:
185
187
  cog run code-reviewer --args "def foo(): pass"
188
+ cog run code-reviewer --provider openai --model gpt-4o --args "..."
186
189
  cog list
187
190
  echo "review this code" | cog pipe --module code-reviewer
188
191
  cog init my-module
@@ -197,6 +200,7 @@ ENVIRONMENT:
197
200
  MOONSHOT_API_KEY Moonshot (Kimi)
198
201
  DASHSCOPE_API_KEY Alibaba Qwen (通义千问)
199
202
  OLLAMA_HOST Ollama local (default: localhost:11434)
203
+ COG_MODEL Override default model for any provider
200
204
  `);
201
205
  }
202
206
  main().catch(e => {
@@ -11,7 +11,7 @@ export { DeepSeekProvider } from './deepseek.js';
11
11
  export { MoonshotProvider } from './moonshot.js';
12
12
  export { QwenProvider } from './qwen.js';
13
13
  export { OllamaProvider } from './ollama.js';
14
- export declare function getProvider(name?: string): Provider;
14
+ export declare function getProvider(name?: string, model?: string): Provider;
15
15
  export declare function listProviders(): Array<{
16
16
  name: string;
17
17
  configured: boolean;
@@ -19,44 +19,46 @@ export { MoonshotProvider } from './moonshot.js';
19
19
  export { QwenProvider } from './qwen.js';
20
20
  export { OllamaProvider } from './ollama.js';
21
21
  const providers = {
22
- gemini: () => new GeminiProvider(),
23
- openai: () => new OpenAIProvider(),
24
- anthropic: () => new AnthropicProvider(),
25
- minimax: () => new MiniMaxProvider(),
26
- deepseek: () => new DeepSeekProvider(),
27
- moonshot: () => new MoonshotProvider(),
28
- kimi: () => new MoonshotProvider(), // Alias
29
- qwen: () => new QwenProvider(),
30
- tongyi: () => new QwenProvider(), // Alias
31
- dashscope: () => new QwenProvider(), // Alias
32
- ollama: () => new OllamaProvider(),
33
- local: () => new OllamaProvider(), // Alias
22
+ gemini: (model) => new GeminiProvider(undefined, model),
23
+ openai: (model) => new OpenAIProvider(undefined, model),
24
+ anthropic: (model) => new AnthropicProvider(undefined, model),
25
+ minimax: (model) => new MiniMaxProvider(undefined, model),
26
+ deepseek: (model) => new DeepSeekProvider(undefined, model),
27
+ moonshot: (model) => new MoonshotProvider(undefined, model),
28
+ kimi: (model) => new MoonshotProvider(undefined, model), // Alias
29
+ qwen: (model) => new QwenProvider(undefined, model),
30
+ tongyi: (model) => new QwenProvider(undefined, model), // Alias
31
+ dashscope: (model) => new QwenProvider(undefined, model), // Alias
32
+ ollama: (model) => new OllamaProvider(model),
33
+ local: (model) => new OllamaProvider(model), // Alias
34
34
  };
35
- export function getProvider(name) {
35
+ export function getProvider(name, model) {
36
+ // Check for model override from environment
37
+ const modelOverride = model || process.env.COG_MODEL;
36
38
  // Auto-detect if not specified
37
39
  if (!name) {
38
40
  if (process.env.GEMINI_API_KEY)
39
- return new GeminiProvider();
41
+ return new GeminiProvider(undefined, modelOverride);
40
42
  if (process.env.OPENAI_API_KEY)
41
- return new OpenAIProvider();
43
+ return new OpenAIProvider(undefined, modelOverride);
42
44
  if (process.env.ANTHROPIC_API_KEY)
43
- return new AnthropicProvider();
45
+ return new AnthropicProvider(undefined, modelOverride);
44
46
  if (process.env.DEEPSEEK_API_KEY)
45
- return new DeepSeekProvider();
47
+ return new DeepSeekProvider(undefined, modelOverride);
46
48
  if (process.env.MINIMAX_API_KEY)
47
- return new MiniMaxProvider();
49
+ return new MiniMaxProvider(undefined, modelOverride);
48
50
  if (process.env.MOONSHOT_API_KEY)
49
- return new MoonshotProvider();
51
+ return new MoonshotProvider(undefined, modelOverride);
50
52
  if (process.env.DASHSCOPE_API_KEY || process.env.QWEN_API_KEY)
51
- return new QwenProvider();
53
+ return new QwenProvider(undefined, modelOverride);
52
54
  // Ollama is always available as fallback if nothing else is configured
53
- return new OllamaProvider();
55
+ return new OllamaProvider(modelOverride);
54
56
  }
55
57
  const factory = providers[name.toLowerCase()];
56
58
  if (!factory) {
57
59
  throw new Error(`Unknown provider: ${name}. Available: ${Object.keys(providers).join(', ')}`);
58
60
  }
59
- return factory();
61
+ return factory(modelOverride);
60
62
  }
61
63
  export function listProviders() {
62
64
  return [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cognitive-runtime",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "description": "Cognitive Runtime - Structured AI Task Execution",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/cli.ts CHANGED
@@ -13,7 +13,7 @@ import { getProvider, listProviders } from './providers/index.js';
13
13
  import { run, list, pipe, init } from './commands/index.js';
14
14
  import type { CommandContext } from './types.js';
15
15
 
16
- const VERSION = '0.2.1';
16
+ const VERSION = '0.3.0';
17
17
 
18
18
  async function main() {
19
19
  const args = process.argv.slice(2);
@@ -36,6 +36,7 @@ async function main() {
36
36
  args: { type: 'string', short: 'a' },
37
37
  input: { type: 'string', short: 'i' },
38
38
  module: { type: 'string', short: 'm' },
39
+ model: { type: 'string', short: 'M' },
39
40
  provider: { type: 'string', short: 'p' },
40
41
  pretty: { type: 'boolean', default: false },
41
42
  verbose: { type: 'boolean', short: 'V', default: false },
@@ -47,7 +48,7 @@ async function main() {
47
48
  // Get provider
48
49
  let provider;
49
50
  try {
50
- provider = getProvider(values.provider);
51
+ provider = getProvider(values.provider, values.model);
51
52
  } catch (e) {
52
53
  console.error(`Error: ${e instanceof Error ? e.message : e}`);
53
54
  process.exit(1);
@@ -196,7 +197,8 @@ OPTIONS:
196
197
  -a, --args <str> Arguments to pass to module
197
198
  -i, --input <json> JSON input for module
198
199
  -m, --module <name> Module name (for pipe)
199
- -p, --provider <name> LLM provider (gemini, openai, anthropic)
200
+ -M, --model <name> LLM model (e.g., gpt-4o, gemini-2.0-flash)
201
+ -p, --provider <name> LLM provider (gemini, openai, anthropic, deepseek, minimax, moonshot, qwen, ollama)
200
202
  --pretty Pretty-print JSON output
201
203
  -V, --verbose Verbose output
202
204
  --no-validate Skip schema validation
@@ -205,6 +207,7 @@ OPTIONS:
205
207
 
206
208
  EXAMPLES:
207
209
  cog run code-reviewer --args "def foo(): pass"
210
+ cog run code-reviewer --provider openai --model gpt-4o --args "..."
208
211
  cog list
209
212
  echo "review this code" | cog pipe --module code-reviewer
210
213
  cog init my-module
@@ -219,6 +222,7 @@ ENVIRONMENT:
219
222
  MOONSHOT_API_KEY Moonshot (Kimi)
220
223
  DASHSCOPE_API_KEY Alibaba Qwen (通义千问)
221
224
  OLLAMA_HOST Ollama local (default: localhost:11434)
225
+ COG_MODEL Override default model for any provider
222
226
  `);
223
227
  }
224
228
 
@@ -22,33 +22,38 @@ export { MoonshotProvider } from './moonshot.js';
22
22
  export { QwenProvider } from './qwen.js';
23
23
  export { OllamaProvider } from './ollama.js';
24
24
 
25
- const providers: Record<string, () => Provider> = {
26
- gemini: () => new GeminiProvider(),
27
- openai: () => new OpenAIProvider(),
28
- anthropic: () => new AnthropicProvider(),
29
- minimax: () => new MiniMaxProvider(),
30
- deepseek: () => new DeepSeekProvider(),
31
- moonshot: () => new MoonshotProvider(),
32
- kimi: () => new MoonshotProvider(), // Alias
33
- qwen: () => new QwenProvider(),
34
- tongyi: () => new QwenProvider(), // Alias
35
- dashscope: () => new QwenProvider(), // Alias
36
- ollama: () => new OllamaProvider(),
37
- local: () => new OllamaProvider(), // Alias
25
+ type ProviderFactory = (model?: string) => Provider;
26
+
27
+ const providers: Record<string, ProviderFactory> = {
28
+ gemini: (model) => new GeminiProvider(undefined, model),
29
+ openai: (model) => new OpenAIProvider(undefined, model),
30
+ anthropic: (model) => new AnthropicProvider(undefined, model),
31
+ minimax: (model) => new MiniMaxProvider(undefined, model),
32
+ deepseek: (model) => new DeepSeekProvider(undefined, model),
33
+ moonshot: (model) => new MoonshotProvider(undefined, model),
34
+ kimi: (model) => new MoonshotProvider(undefined, model), // Alias
35
+ qwen: (model) => new QwenProvider(undefined, model),
36
+ tongyi: (model) => new QwenProvider(undefined, model), // Alias
37
+ dashscope: (model) => new QwenProvider(undefined, model), // Alias
38
+ ollama: (model) => new OllamaProvider(model),
39
+ local: (model) => new OllamaProvider(model), // Alias
38
40
  };
39
41
 
40
- export function getProvider(name?: string): Provider {
42
+ export function getProvider(name?: string, model?: string): Provider {
43
+ // Check for model override from environment
44
+ const modelOverride = model || process.env.COG_MODEL;
45
+
41
46
  // Auto-detect if not specified
42
47
  if (!name) {
43
- if (process.env.GEMINI_API_KEY) return new GeminiProvider();
44
- if (process.env.OPENAI_API_KEY) return new OpenAIProvider();
45
- if (process.env.ANTHROPIC_API_KEY) return new AnthropicProvider();
46
- if (process.env.DEEPSEEK_API_KEY) return new DeepSeekProvider();
47
- if (process.env.MINIMAX_API_KEY) return new MiniMaxProvider();
48
- if (process.env.MOONSHOT_API_KEY) return new MoonshotProvider();
49
- if (process.env.DASHSCOPE_API_KEY || process.env.QWEN_API_KEY) return new QwenProvider();
48
+ if (process.env.GEMINI_API_KEY) return new GeminiProvider(undefined, modelOverride);
49
+ if (process.env.OPENAI_API_KEY) return new OpenAIProvider(undefined, modelOverride);
50
+ if (process.env.ANTHROPIC_API_KEY) return new AnthropicProvider(undefined, modelOverride);
51
+ if (process.env.DEEPSEEK_API_KEY) return new DeepSeekProvider(undefined, modelOverride);
52
+ if (process.env.MINIMAX_API_KEY) return new MiniMaxProvider(undefined, modelOverride);
53
+ if (process.env.MOONSHOT_API_KEY) return new MoonshotProvider(undefined, modelOverride);
54
+ if (process.env.DASHSCOPE_API_KEY || process.env.QWEN_API_KEY) return new QwenProvider(undefined, modelOverride);
50
55
  // Ollama is always available as fallback if nothing else is configured
51
- return new OllamaProvider();
56
+ return new OllamaProvider(modelOverride);
52
57
  }
53
58
 
54
59
  const factory = providers[name.toLowerCase()];
@@ -56,7 +61,7 @@ export function getProvider(name?: string): Provider {
56
61
  throw new Error(`Unknown provider: ${name}. Available: ${Object.keys(providers).join(', ')}`);
57
62
  }
58
63
 
59
- return factory();
64
+ return factory(modelOverride);
60
65
  }
61
66
 
62
67
  export function listProviders(): Array<{ name: string; configured: boolean; model: string }> {