Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
All notable changes to Franklin Trading. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## 0.3.4 — 2026-10-20

### Added
- **Gemini 4 Argon.** `google/gemini-4-argon`, Google's frontier reasoning model, is live on Base and Solana at $2/$10 per 1M (Google's rate through 2026-11-30; $4/$20 from 2026-12-01). Priced offline, sized at its 1M window, flagged vision-capable, listed in the picker, and pinnable as `argon`, `gemini-4` or `gemini-4-argon`. Nothing routes to it by default: bare `gemini` stays on 3.1 Pro and the router is unchanged.

## 0.3.3 — 2026-10-20

### Added
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@blockrun/franklin-trading",
"version": "0.3.3",
"version": "0.3.4",
"description": "Franklin Trading — The AI trading agent with a wallet. Researches, backtests, paper-trades and live-trades autonomously, paying per call in USDC. Crypto-first. Apache-2.0.",
"type": "module",
"exports": {
Expand Down
1 change: 1 addition & 0 deletions src/agent/tokens.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ const MODEL_CONTEXT_WINDOWS: Record<string, number> = {
'google/gemini-2.5-flash': 1_000_000,
'google/gemini-2.5-flash-lite': 1_000_000,
'google/gemini-3.1-pro': 1_000_000,
'google/gemini-4-argon': 1_048_576,
'google/gemini-3.5-flash': 1_000_000,
'google/gemini-3.1-flash-lite': 1_000_000,
'google/gemini-3-flash-preview': 1_048_576,
Expand Down
3 changes: 3 additions & 0 deletions src/pricing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,9 @@ export const MODEL_PRICING: Record<string, { input: number; output: number; perC
'google/gemini-3.8-flash': { input: 0.75, output: 3.75 }, // live 2026-10-20
'google/gemini-2.5-pro': { input: 1.25, output: 10.0 },
'google/gemini-3.1-pro': { input: 2.0, output: 12.0 },
// Gemini 4 Argon — live 2026-10-20 on both chains. Google's intro rate;
// it moves to $4/$20 on 2026-12-01, re-price it then.
'google/gemini-4-argon': { input: 2.0, output: 10.0 },
// xAI
'xai/grok-4.3': { input: 1.25, output: 2.5 }, // 1M ctx; demoted from flagship 2026-07-14
'xai/grok-4.7': { input: 2.0, output: 6.0 }, // newest Grok, 500K ctx (2x at >=200K input)
Expand Down
1 change: 1 addition & 0 deletions src/router/vision.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ const VISION_MODELS = new Set<string>([
'xiaomi/mimo-v2.5',
'mistral/mistral-large-4',
// Google — vision baked into every Gemini SKU we surface (flash-lite excepted)
'google/gemini-4-argon',
'google/gemini-3.1-pro',
'google/gemini-3.6-flash',
'google/gemini-3.5-flash',
Expand Down
7 changes: 7 additions & 0 deletions src/ui/model-picker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,12 @@ export const MODEL_SHORTCUTS: Record<string, string> = {
'gemini-3.5-flash-lite': 'google/gemini-3.5-flash-lite',
'gemini-3.1-flash-lite': 'google/gemini-3.1-flash-lite',
'gemini-2.5-flash-lite': 'google/gemini-2.5-flash-lite',
// Gemini 4 Argon (live 2026-10-20, both chains) — explicit pins only. Bare
// `gemini` stays on 3.1 Pro until Argon has production history; moving it
// would change which model (and price) existing users get.
argon: 'google/gemini-4-argon',
'gemini-4': 'google/gemini-4-argon',
'gemini-4-argon': 'google/gemini-4-argon',
'gemini-3': 'google/gemini-3.1-pro',
'gemini-3.1': 'google/gemini-3.1-pro',
// xAI — grok-4.5 is the public flagship since 2026-07-14; `grok` follows it
Expand Down Expand Up @@ -454,6 +460,7 @@ export const PICKER_CATEGORIES: ModelCategory[] = [
// superseded sibling listed directly under its successor is choice
// paralysis, not choice. `gemini-2.5` still resolves to it.
{ id: 'google/gemini-3.1-pro', shortcut: 'gemini', label: 'Gemini 3.1 Pro', price: '$2/$12' },
{ id: 'google/gemini-4-argon', shortcut: 'argon', label: 'Gemini 4 Argon', price: '$2/$10' },
{ id: 'xai/grok-4.5', shortcut: 'grok', label: 'Grok 4.5', price: '$2/$6' },
// Kimi K3 (2026-07): 2.8T open MoE, 1M context, multimodal + reasoning.
// Replaced the budget K2.7 line — now premium-priced ($3/$15).
Expand Down
5 changes: 4 additions & 1 deletion test/local.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -9570,6 +9570,7 @@ test('catalog sync 2026-10-20: every live gateway id is priced and pinnable', as
const live = {
'openai/gpt-6.1-sol': [2, 10, 'gpt-6.1-sol'],
'google/gemini-3.8-flash': [0.75, 3.75, 'gemini-3.8-flash'],
'google/gemini-4-argon': [2, 10, 'gemini-4-argon'],
'deepseek/deepseek-v4-flash-vision-exp': [0.3, 1.2, 'deepseek-vision'],
'qwen/qwen3.8-max': [2, 6, 'qwen3.8-max'],
'qwen/qwen3.8-flash': [0.15, 0.47, 'qwen3.8-flash'],
Expand Down Expand Up @@ -9603,6 +9604,8 @@ test('2026-10-20: bare flash / glm follow their flagships, price-neutral and on
const { MODEL_PRICING } = await import('../dist/pricing.js');
const { isVisionModel } = await import('../dist/router/vision.js');
assert.equal(resolveModel('flash'), 'google/gemini-3.8-flash');
assert.equal(resolveModel('argon'), 'google/gemini-4-argon');
assert.equal(resolveModel('gemini'), 'google/gemini-3.1-pro', 'bare gemini stays on 3.1 Pro');
assert.equal(resolveModel('gemini-flash'), 'google/gemini-3.8-flash');
assert.equal(resolveModel('gemini-3.6'), 'google/gemini-3.6-flash', '3.6 stays pinnable');
assert.deepEqual(MODEL_PRICING['google/gemini-3.8-flash'], MODEL_PRICING['google/gemini-3.6-flash']);
Expand All @@ -9614,7 +9617,7 @@ test('2026-10-20: bare flash / glm follow their flagships, price-neutral and on
assert.equal(resolveModel('qwen-max'), 'qwen/qwen3.7-max');
// A vision-tagged new id must be recognised as vision, or an image turn on
// `/model flash` would be swapped to a "vision sibling" the user never chose.
for (const id of ['openai/gpt-6.1-sol', 'google/gemini-3.8-flash', 'deepseek/deepseek-v4-flash-vision-exp',
for (const id of ['openai/gpt-6.1-sol', 'google/gemini-3.8-flash', 'google/gemini-4-argon', 'deepseek/deepseek-v4-flash-vision-exp',
'qwen/qwen3.8-flash', 'xiaomi/mimo-v2.5', 'mistral/mistral-large-4']) {
assert.equal(isVisionModel(id), true, `${id} is vision-tagged in the live catalog`);
}
Expand Down
Loading