@polderlabs/bizar 6.2.1 → 6.2.2

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/cli/provision.mjs CHANGED
@@ -860,94 +860,69 @@ export async function patchClineJson({ dryRun, force }) {
860
860
  (p) => Array.isArray(p) && typeof p[0] === 'string' && p[0].includes('plugins/bizar'),
861
861
  );
862
862
 
863
- // v6.2.0 — Multi-patch installer. On every install/update, ensure the
864
- // full Bizar config surface is present in cline.json:
863
+ // v6.2.2 — Multi-patch installer. On every install/update, ensure the
864
+ // Bizar config surface is present in cline.json:
865
865
  //
866
- // 1. provider.9router (preferred gateway since v6.0.1) add if
867
- // missing so the install is "complete" out of the box.
868
- // 2. provider.minimax (legacy fallback) — kept for back-compat.
869
- // 3. default_agent — set to "odin" if missing.
870
- // 4. $schema — add if missing (helps editors validate).
871
- // 5. instructions — point at .cline/instructions/bizar-tools.md if
872
- // missing, so Cline loads the tool reference on every session.
873
- // 6. plugin entry — add if missing (the critical one; without this
866
+ // 1. plugin entry add if missing (the critical one; without this
874
867
  // the Bizar plugin never loads).
875
- // 7. permissions — set to "allow" if missing.
876
- // 8. snapshotset to false if missing.
868
+ // 2. default_agent — set to "odin" if missing.
869
+ // 3. $schemaadd if missing (helps editors validate).
870
+ // 4. instructions — point at .cline/instructions/bizar-tools.md if
871
+ // missing, so Cline loads the tool reference on every session.
872
+ // 5. permissions — set to "allow" if missing.
873
+ // 6. snapshot — set to false if missing.
874
+ //
875
+ // v6.2.2 REMOVED:
876
+ // - provider.9router (was added automatically in v6.0.1–v6.2.1)
877
+ // - provider.minimax (legacy fallback)
878
+ //
879
+ // Per user request: "the installer should do nothing with providers,
880
+ // the user has to configure it themselves." The user picks their own
881
+ // provider, plugs in their API key, and configures which model catalog
882
+ // to use. The installer just sets up the Bizar scaffolding (plugin
883
+ // entry, default agent, schema, instructions, etc.) and stays out of
884
+ // provider configuration entirely.
877
885
  //
878
886
  // All patches are additive and idempotent. We never overwrite a value
879
887
  // the user has set; the `force` flag bypasses that protection for the
880
888
  // plugin entry only.
881
- let addedProvider = false;
882
889
  let addedDefaultAgent = false;
883
890
  let addedSchema = false;
884
891
  let addedInstructions = false;
885
892
  let addedPermissions = false;
886
893
  let addedSnapshot = false;
887
- let added9router = false;
888
-
889
- if (!cfg.provider) cfg.provider = {};
890
-
891
- // 1. provider.9router — preferred gateway.
892
- if (!cfg.provider['9router'] && existsSync(join(REPO_ROOT, 'config', 'cline.json'))) {
893
- try {
894
- const tpl = JSON.parse(readFileSync(join(REPO_ROOT, 'config', 'cline.json'), 'utf8'));
895
- if (tpl.provider && tpl.provider['9router']) {
896
- cfg.provider['9router'] = tpl.provider['9router'];
897
- added9router = true;
898
- }
899
- } catch { /* ignore template parse errors */ }
900
- }
901
894
 
902
- // 2. provider.minimax — legacy fallback.
903
- const DEFAULT_MINIMAX_BLOCK = {
904
- options: {
905
- baseURL: 'https://api.minimax.io/v1',
906
- apiKey: '{env:MiniMax_API_KEY}',
907
- },
908
- models: {
909
- 'MiniMax-M2.7-Flash': { name: 'MiniMax M2.7 Flash', interleaved: { field: 'reasoning_details' }, reasoning: true },
910
- 'MiniMax-M2.7': { name: 'MiniMax M2.7', interleaved: { field: 'reasoning_details' }, reasoning: true },
911
- 'MiniMax-M3': { name: 'MiniMax M3', interleaved: { field: 'reasoning_details' }, reasoning: true },
912
- 'MiniMax-M3-Reasoning': { name: 'MiniMax M3 Reasoning', interleaved: { field: 'reasoning_details' }, reasoning: true },
913
- },
914
- };
915
- if (!cfg.provider.minimax) {
916
- cfg.provider.minimax = DEFAULT_MINIMAX_BLOCK;
917
- addedProvider = true;
918
- }
919
-
920
- // 3. default_agent
895
+ // 1. default_agent
921
896
  if (!cfg.default_agent) {
922
897
  cfg.default_agent = 'odin';
923
898
  addedDefaultAgent = true;
924
899
  }
925
900
 
926
- // 4. $schema
901
+ // 2. $schema
927
902
  if (!cfg.$schema) {
928
903
  cfg.$schema = 'https://docs.cline.bot/config.json';
929
904
  addedSchema = true;
930
905
  }
931
906
 
932
- // 5. instructions — point at the bundled Bizar tools reference.
907
+ // 3. instructions — point at the bundled Bizar tools reference.
933
908
  if (!cfg.instructions || (Array.isArray(cfg.instructions) && cfg.instructions.length === 0)) {
934
909
  cfg.instructions = ['.cline/instructions/bizar-tools.md'];
935
910
  addedInstructions = true;
936
911
  }
937
912
 
938
- // 6. permission
913
+ // 4. permission
939
914
  if (!cfg.permission) {
940
915
  cfg.permission = 'allow';
941
916
  addedPermissions = true;
942
917
  }
943
918
 
944
- // 7. snapshot
919
+ // 5. snapshot
945
920
  if (typeof cfg.snapshot !== 'boolean') {
946
921
  cfg.snapshot = false;
947
922
  addedSnapshot = true;
948
923
  }
949
924
 
950
- const anyAdded = addedProvider || added9router || addedDefaultAgent || addedSchema
925
+ const anyAdded = addedDefaultAgent || addedSchema
951
926
  || addedInstructions || addedPermissions || addedSnapshot;
952
927
 
953
928
  if (hasEntry && !force && !anyAdded) {
@@ -957,8 +932,6 @@ export async function patchClineJson({ dryRun, force }) {
957
932
  if (dryRun) {
958
933
  const added = [];
959
934
  if (!hasEntry) added.push('plugin entry');
960
- if (added9router) added.push('provider.9router');
961
- if (addedProvider) added.push('provider.minimax');
962
935
  if (addedDefaultAgent) added.push('default_agent');
963
936
  if (addedSchema) added.push('$schema');
964
937
  if (addedInstructions) added.push('instructions');
@@ -988,8 +961,6 @@ export async function patchClineJson({ dryRun, force }) {
988
961
  writeFileSync(cfgPath, JSON.stringify(cfg, null, 2) + '\n');
989
962
  const added = [];
990
963
  if (!hasEntry) added.push('plugin entry');
991
- if (added9router) added.push('provider.9router');
992
- if (addedProvider) added.push('provider.minimax');
993
964
  if (addedDefaultAgent) added.push('default_agent');
994
965
  if (addedSchema) added.push('$schema');
995
966
  if (addedInstructions) added.push('instructions');
@@ -1973,29 +1944,33 @@ export async function runProvision(opts = {}) {
1973
1944
  console.log(chalk.green(`\n ✓ ${mode === 'update' ? 'Update' : 'Install'} complete\n`));
1974
1945
  }
1975
1946
 
1976
- // ── 13. API key bootstrap warning ────────────────────────────────────
1977
- // v5.xAfter a successful install, check whether any API keys are
1978
- // configured. If not, surface a prominent warning (but don't block —
1979
- // many users configure keys later).
1947
+ // ── 13. Provider bootstrap warning ───────────────────────────────
1948
+ // v6.2.2The installer no longer configures a provider. The user
1949
+ // must add their own. After a successful install, surface a clear
1950
+ // hint pointing them at the right places.
1980
1951
  if (mode === 'install' && !dryRun && !anyFail) {
1981
- const envJsonPath = join(BIZAR_HOME, 'env.json');
1982
- const marker = readInstallMarker();
1983
- const hasApiKeys = Boolean(
1984
- process.env.OPENAI_API_KEY ||
1985
- process.env.ANTHROPIC_API_KEY ||
1986
- process.env.MINIMAX_API_KEY ||
1987
- (existsSync(envJsonPath) && (() => {
1988
- try {
1989
- const env = JSON.parse(readFileSync(envJsonPath, 'utf8'));
1990
- return Boolean(env?.OPENAI_API_KEY || env?.ANTHROPIC_API_KEY || env?.MINIMAX_API_KEY);
1991
- } catch { return false; }
1992
- })())
1993
- );
1994
- if (!hasApiKeys) {
1995
- console.log(chalk.yellow(' ⚠ No API keys configured.'));
1996
- console.log(chalk.yellow(' Run `bizar connect` to add providers.'));
1997
- const dashPort = process.env.BIZAR_DASHBOARD_PORT || '4097';
1998
- console.log(chalk.yellow(` Or visit http://localhost:${dashPort}/connect after starting the dashboard.`));
1952
+ const cfgPath = join(CLINE_DIR, 'cline.json');
1953
+ const cfg = readJsonSafe(cfgPath, null);
1954
+ const hasProvider = cfg && cfg.provider && Object.keys(cfg.provider).length > 0;
1955
+ if (!hasProvider) {
1956
+ console.log(chalk.yellow(' ⚠ No provider configured in cline.json.'));
1957
+ console.log(chalk.yellow(' `bizar install` no longer touches provider config (v6.2.2+).'));
1958
+ console.log(chalk.yellow(' You must add one yourself — see the "Provider setup" section below.'));
1959
+ console.log('');
1960
+ console.log(chalk.cyan(' ┌─ Provider setup ─────────────────────────────────────────────┐'));
1961
+ console.log(chalk.cyan(' │ 1. Edit ~/.cline/cline.json and add a `provider` block: │'));
1962
+ console.log(chalk.cyan(' │ { "provider": { "9router": { │'));
1963
+ console.log(chalk.cyan(' │ "baseUrl": "http://localhost:20128/v1", │'));
1964
+ console.log(chalk.cyan(' │ "apiKey": "<your-key>", │'));
1965
+ console.log(chalk.cyan(' │ "models": { "minimax/MiniMax-M3": {}, │'));
1966
+ console.log(chalk.cyan(' │ "minimax/MiniMax-M2.7": {} } } } │'));
1967
+ console.log(chalk.cyan(' │ │'));
1968
+ console.log(chalk.cyan(' │ 2. Or run `bizar connect` for an interactive TUI setup. │'));
1969
+ console.log(chalk.cyan(' └──────────────────────────────────────────────────────────────┘'));
1970
+ console.log('');
1971
+ console.log(chalk.dim(' Models available at http://localhost:20128/v1/models:'));
1972
+ console.log(chalk.dim(' minimax/MiniMax-M3, minimax/MiniMax-M2.7, nvidia/minimaxai/minimax-m3,'));
1973
+ console.log(chalk.dim(' nvidia/z-ai/glm-5.2, nvidia/deepseek-ai/deepseek-v4-pro, etc.'));
1999
1974
  console.log('');
2000
1975
  }
2001
1976
  }
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Baldr — UI/UX design system specialist. Creates DESIGN.md files using Google's design.md standard. Aesthetic direction, typography, design tokens, anti-slop audits. Does not implement code.
3
3
  mode: subagent
4
- model: minimax/MiniMax-M2.7
4
+ model: minimaxcustom/MiniMax-M2.7
5
5
  color: "#ec4899"
6
6
  permission:
7
7
  read: allow
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Forseti — Audits, criticizes, and corrects implementation plans before execution. No write permissions. Review only.
3
3
  mode: subagent
4
- model: minimax/MiniMax-M3
4
+ model: minimaxcustom/MiniMax-M3
5
5
  color: "#ef4444"
6
6
  permission:
7
7
  read: allow
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Frigg — Read-only codebase Q&A. Answers questions about the project with file references, never modifies anything. Routes to no one.
3
3
  mode: subagent
4
- model: minimax/MiniMax-M2.7
4
+ model: minimaxcustom/MiniMax-M2.7
5
5
  color: "#f472b6"
6
6
  permission:
7
7
  read: allow
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Heimdall — Simple, routine, and deterministic tasks using DeepSeek. Quick edits, mechanical work, file operations. The ever-watchful guardian.
3
3
  mode: subagent
4
- model: minimax/MiniMax-M2.7
4
+ model: minimaxcustom/MiniMax-M2.7
5
5
  color: "#10b981"
6
6
  permission:
7
7
  read: allow
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Hermod — Git and GitHub operations specialist using MiniMax M2.7. The only agent allowed to perform write-level git (commit, push, merge, rebase, branch) and `gh` CLI operations.
3
3
  mode: subagent
4
- model: minimax/MiniMax-M2.7
4
+ model: minimaxcustom/MiniMax-M2.7
5
5
  color: "#f59e0b"
6
6
  permission:
7
7
  read: allow
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Mimir — Deep codebase research and exploration. Uses Semble as primary search tool. Architecture analysis, pattern discovery, documentation research, and project initialization.
3
3
  mode: subagent
4
- model: minimax/MiniMax-M2.7
4
+ model: minimaxcustom/MiniMax-M2.7
5
5
  color: "#06b6d4"
6
6
  permission:
7
7
  read: allow
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Odin — Pure router that delegates all work to subagents. Routes across Frigg (DeepSeek/Q&A), Vör (DeepSeek/clarify), Mimir (DeepSeek/research), Heimdall (DeepSeek/simple), Hermod (M2.7/git), Thor (M2.7/mid), Baldr (M2.7/design), Tyr (M3/top), Vidarr (GPT-5.5/ultra), Forseti (verifier/M3).
3
3
  mode: primary
4
- model: minimax/MiniMax-M3
4
+ model: minimaxcustom/MiniMax-M3
5
5
  color: "#6366f1"
6
6
  permission:
7
7
  task: allow
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Quick (quick) — fast single-shot tasks. No delegation, no parallel streams. Use for small edits, mechanical changes, one-shot questions. Routes to no one.
3
3
  mode: primary
4
- model: minimax/MiniMax-M2.7-Flash
4
+ model: minimaxcustom/MiniMax-M2.7-highspeed
5
5
  color: "#22d3ee"
6
6
  permission:
7
7
  read: allow
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Code search agent for exploring any codebase. Use for finding code by intent, locating implementations, understanding how something works, or discovering related code. Prefer over Bash/Read for any semantic or exploratory question.
3
3
  mode: subagent
4
- model: minimax/MiniMax-M2.7
4
+ model: minimaxcustom/MiniMax-M2.7
5
5
  color: "#64748b"
6
6
  permission:
7
7
  read: allow
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Thor — Handles medium-complexity implementation tasks using MiniMax M2.7. New features, non-trivial debugging, refactoring, code review, and writing tests.
3
3
  mode: subagent
4
- model: minimax/MiniMax-M2.7
4
+ model: minimaxcustom/MiniMax-M2.7
5
5
  color: "#a855f7"
6
6
  permission:
7
7
  read: allow
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Tyr — Handles the most complex implementation, debugging, and architectural work using MiniMax M3. Reserved for the hardest problems. Always plan-then-Forseti-gate.
3
3
  mode: subagent
4
- model: minimax/MiniMax-M3
4
+ model: minimaxcustom/MiniMax-M3
5
5
  color: "#dc2626"
6
6
  permission:
7
7
  read: allow
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Vidarr — The ultimate fallback via MiniMax M3. For the hardest problems when Tyr stalls, debugging is stuck, or novel insight is needed. Use sparingly — highest cost.
3
3
  mode: subagent
4
- model: minimax/MiniMax-M3
4
+ model: minimaxcustom/MiniMax-M3
5
5
  color: "#0ea5e9"
6
6
  permission:
7
7
  read: allow
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Vör — Asks clarifying questions for ambiguous or incomplete requests. Reads project context first, then asks one targeted, project-specific question.
3
3
  mode: subagent
4
- model: minimax/MiniMax-M2.7
4
+ model: minimaxcustom/MiniMax-M2.7
5
5
  color: "#a78bfa"
6
6
  permission:
7
7
  read: allow
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "https://docs.cline.bot/config.json",
3
3
  "instructions": [".cline/instructions/bizar-tools.md"],
4
- "model": "9router/minimax/MiniMax-M3",
5
- "small_model": "9router/minimax/MiniMax-M2.7",
4
+ "model": "minimaxcustom/MiniMax-M3",
5
+ "small_model": "minimaxcustom/MiniMax-M2.7",
6
6
  "default_agent": "odin",
7
7
  "permission": "allow",
8
8
  "snapshot": false,
@@ -35,7 +35,7 @@
35
35
  "threshold": 0.5,
36
36
  "preserve_recent": 10,
37
37
  "strategy": "summarize",
38
- "model": "9router/minimax/MiniMax-M3"
38
+ "model": "minimaxcustom/MiniMax-M3"
39
39
  }
40
40
  }]
41
41
  ],
@@ -52,7 +52,7 @@
52
52
  "odin": {
53
53
  "description": "Odin — Pure router that delegates all work to subagents.",
54
54
  "mode": "primary",
55
- "model": "9router/minimax/MiniMax-M3",
55
+ "model": "minimaxcustom/MiniMax-M3",
56
56
  "color": "#6366f1",
57
57
  "permission": {
58
58
  "task": "allow",
@@ -66,7 +66,7 @@
66
66
  "vor": {
67
67
  "description": "Vör — The Questioning One.",
68
68
  "mode": "subagent",
69
- "model": "9router/minimax/MiniMax-M2.7",
69
+ "model": "minimaxcustom/MiniMax-M2.7",
70
70
  "color": "#8b5cf6",
71
71
  "permission": {
72
72
  "read": "allow",
@@ -77,7 +77,7 @@
77
77
  "frigg": {
78
78
  "description": "Frigg — All-knowing Q&A agent.",
79
79
  "mode": "primary",
80
- "model": "9router/minimax/MiniMax-M2.7",
80
+ "model": "minimaxcustom/MiniMax-M2.7",
81
81
  "color": "#06b6d4",
82
82
  "permission": {
83
83
  "read": "allow",
@@ -93,7 +93,7 @@
93
93
  "quick": {
94
94
  "description": "Quick — Fast single-shot tasks.",
95
95
  "mode": "primary",
96
- "model": "9router/minimax/MiniMax-M2.7",
96
+ "model": "minimaxcustom/MiniMax-M2.7",
97
97
  "color": "#22d3ee",
98
98
  "permission": {
99
99
  "read": "allow",
@@ -112,7 +112,7 @@
112
112
  "mimir": {
113
113
  "description": "Mimir — Research and codebase exploration agent.",
114
114
  "mode": "subagent",
115
- "model": "9router/minimax/MiniMax-M2.7",
115
+ "model": "minimaxcustom/MiniMax-M2.7",
116
116
  "color": "#0ea5e9",
117
117
  "permission": {
118
118
  "read": "allow",
@@ -130,7 +130,7 @@
130
130
  "heimdall": {
131
131
  "description": "Heimdall — Simple, routine, deterministic tasks.",
132
132
  "mode": "subagent",
133
- "model": "9router/minimax/MiniMax-M2.7",
133
+ "model": "minimaxcustom/MiniMax-M2.7",
134
134
  "color": "#10b981",
135
135
  "permission": {
136
136
  "read": "allow",
@@ -147,7 +147,7 @@
147
147
  "hermod": {
148
148
  "description": "Hermod — Git and GitHub operations specialist.",
149
149
  "mode": "subagent",
150
- "model": "9router/minimax/MiniMax-M2.7",
150
+ "model": "minimaxcustom/MiniMax-M2.7",
151
151
  "color": "#06b6d4",
152
152
  "permission": {
153
153
  "read": "allow",
@@ -163,7 +163,7 @@
163
163
  "thor": {
164
164
  "description": "Thor — Medium-complexity tasks, strong and reliable.",
165
165
  "mode": "subagent",
166
- "model": "9router/minimax/MiniMax-M2.7",
166
+ "model": "minimaxcustom/MiniMax-M2.7",
167
167
  "color": "#a855f7",
168
168
  "permission": {
169
169
  "read": "allow",
@@ -180,7 +180,7 @@
180
180
  "baldr": {
181
181
  "description": "Baldr — UI/UX design system specialist.",
182
182
  "mode": "subagent",
183
- "model": "9router/minimax/MiniMax-M2.7",
183
+ "model": "minimaxcustom/MiniMax-M2.7",
184
184
  "color": "#ec4899",
185
185
  "permission": {
186
186
  "read": "allow",
@@ -197,7 +197,7 @@
197
197
  "tyr": {
198
198
  "description": "Tyr — Complex implementation, debugging, architecture.",
199
199
  "mode": "subagent",
200
- "model": "9router/minimax/MiniMax-M3",
200
+ "model": "minimaxcustom/MiniMax-M3",
201
201
  "color": "#f59e0b",
202
202
  "permission": {
203
203
  "read": "allow",
@@ -214,7 +214,7 @@
214
214
  "vidarr": {
215
215
  "description": "Vidarr — Ultimate fallback via MiniMax M3.",
216
216
  "mode": "subagent",
217
- "model": "9router/minimax/MiniMax-M3",
217
+ "model": "minimaxcustom/MiniMax-M3",
218
218
  "color": "#dc2626",
219
219
  "permission": {
220
220
  "read": "allow",
@@ -231,7 +231,7 @@
231
231
  "forseti": {
232
232
  "description": "Forseti — Audits and corrects plans before execution.",
233
233
  "mode": "subagent",
234
- "model": "9router/minimax/MiniMax-M3",
234
+ "model": "minimaxcustom/MiniMax-M3",
235
235
  "color": "#ef4444",
236
236
  "permission": {
237
237
  "read": "allow",
@@ -249,7 +249,7 @@
249
249
  "browser-harness": {
250
250
  "description": "browser-harness — Primary agent for browser-driven E2E verification. No-edit permissions. Drives Chrome via CDP for end-to-end testing of web apps.",
251
251
  "mode": "primary",
252
- "model": "9router/minimax/MiniMax-M2.7",
252
+ "model": "minimaxcustom/MiniMax-M2.7",
253
253
  "color": "#84cc16",
254
254
  "permission": {
255
255
  "read": "allow",
@@ -332,84 +332,11 @@
332
332
  "description": "Validate the Bizar install: cline.json, plugin entry, agents, skills, hooks, rules, commands, and provider config.",
333
333
  "agent": "heimdall",
334
334
  "template": "commands-bizar/validate.md\n\n$ARGUMENTS"
335
- }
336
- },
337
- "provider": {
338
- "9router": {
339
- "baseUrl": "http://localhost:20128/v1",
340
- "apiKey": "${env:NINEROUTER_KEY}",
341
- "models": {
342
- "minimax/MiniMax-M3": {
343
- "interleaved": { "field": "reasoning_details" },
344
- "reasoning": true,
345
- "options": {
346
- "thinking": { "type": "enabled" }
347
- }
348
- },
349
- "minimax/MiniMax-M2.7": {
350
- "interleaved": { "field": "reasoning_details" },
351
- "reasoning": true,
352
- "options": {
353
- "thinking": { "type": "enabled" }
354
- }
355
- },
356
- "minimax/MiniMax-M2.5": {
357
- "interleaved": { "field": "reasoning_details" },
358
- "reasoning": true,
359
- "options": {
360
- "thinking": { "type": "enabled" }
361
- }
362
- },
363
- "minimax/MiniMax-M2.1": {
364
- "interleaved": { "field": "reasoning_details" },
365
- "reasoning": true,
366
- "options": {
367
- "thinking": { "type": "enabled" }
368
- }
369
- },
370
- "kr/auto": {
371
- "reasoning": false
372
- },
373
- "kr/auto-thinking": {
374
- "reasoning": true
375
- },
376
- "kr/claude-sonnet-4.5": {
377
- "reasoning": false
378
- },
379
- "kr/claude-haiku-4.5": {
380
- "reasoning": false
381
- },
382
- "kr/deepseek-3.2": {
383
- "reasoning": false
384
- },
385
- "openrouter/cohere/north-mini-code:free": {
386
- "reasoning": false
387
- },
388
- "openrouter/poolside/laguna-m.1:free": {
389
- "reasoning": false
390
- },
391
- "openrouter/nvidia/nemotron-3-super-120b-a12b:free": {
392
- "reasoning": true
393
- }
394
- }
395
335
  },
396
- "minimax": {
397
- "models": {
398
- "MiniMax-M3": {
399
- "interleaved": { "field": "reasoning_details" },
400
- "reasoning": true,
401
- "options": {
402
- "thinking": { "type": "enabled" }
403
- }
404
- },
405
- "MiniMax-M2.7": {
406
- "interleaved": { "field": "reasoning_details" },
407
- "reasoning": true,
408
- "options": {
409
- "thinking": { "type": "enabled" }
410
- }
411
- }
412
- }
336
+ "setup-provider": {
337
+ "description": "Configure a provider in cline.json. Since v6.2.2 the installer no longer touches provider config — use this to add your own.",
338
+ "agent": "heimdall",
339
+ "template": "commands-bizar/setup-provider.md\n\n$ARGUMENTS"
413
340
  }
414
341
  }
415
342
  }
@@ -0,0 +1,95 @@
1
+ ---
2
+ description: Configure a provider in cline.json (apiKey, baseUrl, model catalog). The installer no longer touches provider config — use this command to set one up.
3
+ agent: heimdall
4
+ ---
5
+ # /setup-provider — Configure a provider in cline.json
6
+
7
+ The Bizar installer no longer configures a provider for you (since
8
+ v6.2.2 — the user owns provider config). Use this command to add
9
+ or update a provider in `~/.cline/cline.json`.
10
+
11
+ ## What It Does
12
+
13
+ Interactively (or non-interactively with flags), the setup-provider
14
+ command writes a `provider` block to `~/.cline/cline.json` with:
15
+
16
+ - `baseUrl` — the API endpoint (e.g. `http://localhost:20128/v1` for
17
+ the local 9Router gateway)
18
+ - `apiKey` — the provider's API key (read from `env:` reference or
19
+ direct value)
20
+ - `models` — the model catalog (the IDs returned by
21
+ `GET /v1/models`)
22
+
23
+ ## Default: 9Router Gateway
24
+
25
+ If the user invokes `/setup-provider` with no arguments, default to
26
+ the local 9Router gateway at `http://localhost:20128/v1`. The
27
+ catalog comes from `GET http://localhost:20128/v1/models`. As of
28
+ v6.2.2, that catalog includes:
29
+
30
+ - `minimax/MiniMax-M3` (reasoning)
31
+ - `minimax/MiniMax-M2.7` (reasoning)
32
+ - `nvidia/minimaxai/minimax-m3` (reasoning)
33
+ - `nvidia/minimaxai/minimax-m2.7` (reasoning)
34
+ - `nvidia/z-ai/glm-5.2`
35
+ - `nvidia/deepseek-ai/deepseek-v4-pro`
36
+ - `nvidia/deepseek-ai/deepseek-v4-flash`
37
+ - `nvidia/moonshotai/kimi-k2.6`
38
+ - `nvidia/nemotron-3-ultra-550b-a55b`
39
+ - `openrouter/cohere/north-mini-code:free`
40
+ - `openrouter/poolside/laguna-m.1:free`
41
+ - `openrouter/nvidia/nemotron-3-super-120b-a12b:free`
42
+ - (and several more `minimax/MiniMax-M2.x` variants)
43
+
44
+ ## Flags
45
+
46
+ - `--gateway <url>` — override the 9Router URL (default
47
+ `http://localhost:20128/v1`)
48
+ - `--key <key>` — provider API key (writes `${env:KEY_NAME}` if it
49
+ looks like an env var name, otherwise writes the literal)
50
+ - `--provider <name>` — provider name in cline.json (default `9router`)
51
+ - `--model <id>` — add a single model instead of fetching the catalog
52
+ - `--list` — print the model catalog from `/v1/models` and exit
53
+ - `--remove <name>` — remove a provider by name
54
+
55
+ ## Examples
56
+
57
+ ```
58
+ # Use the default 9Router gateway with the live model catalog
59
+ /setup-provider
60
+
61
+ # Custom provider
62
+ /setup-provider --provider my-anthropic --gateway https://api.anthropic.com/v1 --key sk-ant-...
63
+
64
+ # Just list the available models
65
+ /setup-provider --list
66
+ ```
67
+
68
+ ## Implementation
69
+
70
+ 1. If `--list`, GET `${gateway}/v1/models` and pretty-print the IDs.
71
+ 2. If `--remove`, edit `~/.cline/cline.json` and remove the
72
+ `provider.<name>` block.
73
+ 3. Otherwise, read `~/.cline/cline.json`. If the file doesn't
74
+ exist, error — the user should run `bizar install` first.
75
+ 4. Build the new `provider.<name>` block from the flags + fetched
76
+ catalog.
77
+ 5. Write the file back atomically (write to `cline.json.tmp`,
78
+ then `rename`).
79
+ 6. Run `bizar validate` to confirm everything is wired up.
80
+
81
+ ## Security
82
+
83
+ Never echo or log the full API key. If the user supplies a key on
84
+ the command line, write it as a literal value (or `${env:KEY}`
85
+ reference if it matches a `KEY_NAME` pattern). Never commit
86
+ `~/.cline/cline.json` to source control — it may contain real
87
+ secrets.
88
+
89
+ ## Related
90
+
91
+ - `bizar connect` — interactive TUI for provider setup (alternative)
92
+ - `bizar install` — installs the Bizar scaffolding (NOT provider config
93
+ since v6.2.2)
94
+ - `bizar validate` — confirms provider config is wired correctly
95
+ - Cline provider config: https://docs.cline.bot/customization/providers