@bahulam/code 0.1.20 → 0.1.21
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/package.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{"value": "us.anthropic.claude-opus-4-6-v1", "label": "Claude Opus 4.6 (Bedrock)", "provider": "anthropic", "inputCost": 15, "outputCost": 75, "context": 200000, "maxOutput": 32000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": false},
|
|
11
11
|
{"value": "us.anthropic.claude-sonnet-4-6", "label": "Claude Sonnet 4.6 (Bedrock)", "provider": "anthropic", "inputCost": 3, "outputCost": 15, "context": 200000, "maxOutput": 64000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": false},
|
|
12
12
|
{"value": "us.anthropic.claude-haiku-4-5-20251001-v1:0", "label": "Claude Haiku 4.5 (Bedrock)", "provider": "anthropic", "inputCost": 0.8, "outputCost": 4, "context": 200000, "maxOutput": 8192, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
13
|
-
{"value": "google/gemini-2.5-pro", "label": "Gemini 2.5 Pro", "provider": "google", "category": "image", "inputCost": 1.25, "outputCost": 10, "context": 1048576, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
13
|
+
{"value": "google/gemini-2.5-pro", "label": "Gemini 2.5 Pro", "provider": "google", "category": "multimodal", "inputModalities": ["text", "image", "file", "audio", "video"], "outputModalities": ["text"], "inputCost": 1.25, "outputCost": 10, "context": 1048576, "maxOutput": 65536, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
14
14
|
{"value": "google/gemini-2.5-flash", "label": "Gemini 2.5 Flash", "provider": "google", "inputCost": 0.15, "outputCost": 0.6, "context": 1048576, "maxOutput": 65535, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
15
15
|
{"value": "google/gemini-2.5-flash-lite", "label": "Gemini 2.5 Flash Lite", "provider": "google", "inputCost": 0.075, "outputCost": 0.3, "context": 1048576, "maxOutput": 65535, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
16
16
|
{"value": "openai/gpt-4.1", "label": "GPT-4.1", "provider": "openai", "inputCost": 2, "outputCost": 8, "context": 1047576, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": false, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
{"value": "openai/codex-mini", "label": "Codex Mini", "provider": "openai", "inputCost": 1.5, "outputCost": 6, "context": 200000, "maxOutput": 100000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": false},
|
|
20
20
|
{"value": "deepseek/deepseek-v4-flash", "label": "DeepSeek V4 Flash", "provider": "deepseek", "inputCost": 0.098, "outputCost": 0.197, "context": 1048576, "maxOutput": 384000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
21
21
|
{"value": "deepseek/deepseek-v4-flash-0731", "label": "DeepSeek V4 Flash (0731)", "provider": "deepseek", "inputCost": 0.098, "outputCost": 0.197, "context": 1310720, "maxOutput": 384000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "cacheProfile": "{\"type\": \"prefix_hash\", \"provider_hint\": \"DeepSeek\"}", "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
22
|
-
{"value": "deepseek/deepseek-v4-flash-vision-exp", "label": "DeepSeek V4 Flash Vision Exp", "provider": "deepseek", "category": "image", "inputCost": 0.22, "outputCost": 0.66, "context": 1048576, "maxOutput": 384000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["free", "pro", "tier_49", "tier_99"]},
|
|
22
|
+
{"value": "deepseek/deepseek-v4-flash-vision-exp", "label": "DeepSeek V4 Flash Vision Exp", "provider": "deepseek", "category": "multimodal", "inputModalities": ["text", "image"], "outputModalities": ["text"], "inputCost": 0.22, "outputCost": 0.66, "context": 1048576, "maxOutput": 384000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "platformAccessTier": ["free", "pro", "tier_49", "tier_99"]},
|
|
23
23
|
{"value": "deepseek/deepseek-v4-pro", "label": "DeepSeek V4 Pro", "provider": "deepseek", "inputCost": 0.435, "outputCost": 0.87, "context": 1048576, "maxOutput": 384000, "supportsTools": true, "supportsReasoning": true, "harnessValidated": true, "cacheProfile": "{\"type\": \"prefix_hash\", \"provider_hint\": \"DeepSeek\"}", "platformAccessTier": ["pro", "tier_49", "tier_99"]},
|
|
24
24
|
{"value": "deepseek/deepseek-chat-v3-0324", "label": "DeepSeek V3", "provider": "deepseek", "inputCost": 0.27, "outputCost": 1.1, "context": 163840, "maxOutput": 163840, "supportsTools": true, "supportsReasoning": false, "harnessValidated": false},
|
|
25
25
|
{"value": "deepseek/deepseek-r1-0528", "label": "DeepSeek R1 0528", "provider": "deepseek", "inputCost": 0.8, "outputCost": 2.4, "context": 163840, "maxOutput": 32768, "supportsTools": true, "supportsReasoning": true, "harnessValidated": false},
|
|
@@ -37,6 +37,8 @@ function normalizeSnapshotRow(row) {
|
|
|
37
37
|
provider: row.provider || (id.includes('/') ? id.split('/', 1)[0] : 'unknown'),
|
|
38
38
|
label: row.label || id,
|
|
39
39
|
category,
|
|
40
|
+
input_modalities: row.inputModalities ?? row.input_modalities ?? null,
|
|
41
|
+
output_modalities: row.outputModalities ?? row.output_modalities ?? null,
|
|
40
42
|
input_cost_usd_per_m: row.inputCost ?? row.input_cost_usd_per_m ?? null,
|
|
41
43
|
output_cost_usd_per_m: row.outputCost ?? row.output_cost_usd_per_m ?? null,
|
|
42
44
|
context_length: row.context ?? row.context_length ?? null,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Interactive per-role model form for /model (PRD-076 W7).
|
|
3
3
|
*
|
|
4
|
-
* ↑↓ picks a role row, ←→ cycles through [backend default] + the
|
|
4
|
+
* ↑↓ picks a role row, ←→ cycles through [backend default] + the available
|
|
5
5
|
* platform catalog for that role, Enter applies to session overrides,
|
|
6
6
|
* c resets every row to default, Esc cancels. Same raw-stdin overlay
|
|
7
7
|
* pattern as the resume picker (repl-resume.mjs): pause readline, raw
|
|
@@ -35,19 +35,19 @@ function formatTokenLimit(value, label) {
|
|
|
35
35
|
return `${Math.round(n)} ${label}`;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
function optionRowsForRole(catalog, row) {
|
|
39
|
-
const
|
|
38
|
+
export function optionRowsForRole(catalog, row) {
|
|
39
|
+
const available = (catalog || []).filter(m => m?.id);
|
|
40
40
|
const group = String(row?.optionGroup || 'text').toLowerCase();
|
|
41
41
|
if (group === 'image_analysis') {
|
|
42
|
-
return
|
|
42
|
+
return available.filter(m => (
|
|
43
43
|
['image', 'multimodal'].includes(modelCategory(m))
|
|
44
44
|
&& !isImageGenerationModel(m)
|
|
45
45
|
));
|
|
46
46
|
}
|
|
47
47
|
if (group === 'image_generation') {
|
|
48
|
-
return
|
|
48
|
+
return available.filter(m => modelCategory(m) === 'image' && isImageGenerationModel(m));
|
|
49
49
|
}
|
|
50
|
-
return
|
|
50
|
+
return available.filter(m => ['text', 'chat', 'multimodal'].includes(modelCategory(m)));
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
/**
|
|
@@ -63,11 +63,11 @@ export async function pickModelOverridesForm({ rl, roles, catalog, fallbackIds,
|
|
|
63
63
|
if (!process.stdin.isTTY) return null;
|
|
64
64
|
if (rl) rl.pause();
|
|
65
65
|
|
|
66
|
-
const catalogRows = (catalog || []).filter(m => m?.
|
|
66
|
+
const catalogRows = (catalog || []).filter(m => m?.id);
|
|
67
67
|
const usingFallback = catalogRows.length === 0;
|
|
68
68
|
const byId = new Map(catalogRows.map(m => [m.id, m]));
|
|
69
69
|
|
|
70
|
-
// Per-row option list; a current override that isn't in the
|
|
70
|
+
// Per-row option list; a current override that isn't in the catalog list
|
|
71
71
|
// is appended so it stays visible and selectable.
|
|
72
72
|
const rows = roles.map(r => {
|
|
73
73
|
const optionIds = usingFallback
|
|
@@ -99,9 +99,7 @@ export async function pickModelOverridesForm({ rl, roles, catalog, fallbackIds,
|
|
|
99
99
|
}
|
|
100
100
|
const meta = byId.get(value);
|
|
101
101
|
const badge = meta ? creditBadge(meta) : '';
|
|
102
|
-
|
|
103
|
-
// in fallback mode every option is a known backend model, not a stray.
|
|
104
|
-
const flag = meta || usingFallback ? '' : c.yellow(' (uncurated)');
|
|
102
|
+
const flag = meta && meta.harness_validated === false ? c.yellow(' (uncurated)') : '';
|
|
105
103
|
return `${c.brand(value)}${badge ? ` ${c.dim(badge)}` : ''}${flag}`;
|
|
106
104
|
};
|
|
107
105
|
|