shennian 0.1.13 → 0.1.15

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.
Files changed (80) hide show
  1. package/dist/src/__experiments__/probe-debug.d.ts +2 -0
  2. package/dist/src/__experiments__/probe-debug.d.ts.map +1 -0
  3. package/dist/src/__experiments__/probe-debug.js +66 -0
  4. package/dist/src/__experiments__/probe-debug.js.map +1 -0
  5. package/dist/src/__experiments__/probe-final-benchmark.d.ts +3 -0
  6. package/dist/src/__experiments__/probe-final-benchmark.d.ts.map +1 -0
  7. package/dist/src/__experiments__/probe-final-benchmark.js +234 -0
  8. package/dist/src/__experiments__/probe-final-benchmark.js.map +1 -0
  9. package/dist/src/__experiments__/probe-models-final.d.ts +19 -0
  10. package/dist/src/__experiments__/probe-models-final.d.ts.map +1 -0
  11. package/dist/src/__experiments__/probe-models-final.js +250 -0
  12. package/dist/src/__experiments__/probe-models-final.js.map +1 -0
  13. package/dist/src/__experiments__/probe-models.d.ts +7 -0
  14. package/dist/src/__experiments__/probe-models.d.ts.map +1 -0
  15. package/dist/src/__experiments__/probe-models.js +251 -0
  16. package/dist/src/__experiments__/probe-models.js.map +1 -0
  17. package/dist/src/__tests__/model-switching.test.d.ts +2 -0
  18. package/dist/src/__tests__/model-switching.test.d.ts.map +1 -0
  19. package/dist/src/__tests__/model-switching.test.js +152 -0
  20. package/dist/src/__tests__/model-switching.test.js.map +1 -0
  21. package/dist/src/__tests__/pi-context.test.js +1 -0
  22. package/dist/src/__tests__/pi-context.test.js.map +1 -1
  23. package/dist/src/__tests__/session-manager.test.js +21 -4
  24. package/dist/src/__tests__/session-manager.test.js.map +1 -1
  25. package/dist/src/agents/adapter.d.ts +1 -1
  26. package/dist/src/agents/adapter.d.ts.map +1 -1
  27. package/dist/src/agents/claude.d.ts +1 -1
  28. package/dist/src/agents/claude.d.ts.map +1 -1
  29. package/dist/src/agents/claude.js +4 -1
  30. package/dist/src/agents/claude.js.map +1 -1
  31. package/dist/src/agents/codex.d.ts +1 -1
  32. package/dist/src/agents/codex.d.ts.map +1 -1
  33. package/dist/src/agents/codex.js +4 -3
  34. package/dist/src/agents/codex.js.map +1 -1
  35. package/dist/src/agents/command-spec.d.ts +10 -0
  36. package/dist/src/agents/command-spec.d.ts.map +1 -0
  37. package/dist/src/agents/command-spec.js +58 -0
  38. package/dist/src/agents/command-spec.js.map +1 -0
  39. package/dist/src/agents/cursor.d.ts +1 -1
  40. package/dist/src/agents/cursor.d.ts.map +1 -1
  41. package/dist/src/agents/cursor.js +11 -2
  42. package/dist/src/agents/cursor.js.map +1 -1
  43. package/dist/src/agents/custom.d.ts +1 -1
  44. package/dist/src/agents/custom.d.ts.map +1 -1
  45. package/dist/src/agents/custom.js +8 -5
  46. package/dist/src/agents/custom.js.map +1 -1
  47. package/dist/src/agents/detect.d.ts +3 -1
  48. package/dist/src/agents/detect.d.ts.map +1 -1
  49. package/dist/src/agents/detect.js +36 -33
  50. package/dist/src/agents/detect.js.map +1 -1
  51. package/dist/src/agents/gemini.d.ts +1 -1
  52. package/dist/src/agents/gemini.d.ts.map +1 -1
  53. package/dist/src/agents/gemini.js +4 -1
  54. package/dist/src/agents/gemini.js.map +1 -1
  55. package/dist/src/agents/model-registry.d.ts +28 -0
  56. package/dist/src/agents/model-registry.d.ts.map +1 -0
  57. package/dist/src/agents/model-registry.js +529 -0
  58. package/dist/src/agents/model-registry.js.map +1 -0
  59. package/dist/src/agents/openclaw.d.ts +3 -1
  60. package/dist/src/agents/openclaw.d.ts.map +1 -1
  61. package/dist/src/agents/openclaw.js +61 -1
  62. package/dist/src/agents/openclaw.js.map +1 -1
  63. package/dist/src/agents/pi.d.ts +1 -1
  64. package/dist/src/agents/pi.d.ts.map +1 -1
  65. package/dist/src/agents/pi.js +18 -15
  66. package/dist/src/agents/pi.js.map +1 -1
  67. package/dist/src/commands/agent.d.ts.map +1 -1
  68. package/dist/src/commands/agent.js +18 -4
  69. package/dist/src/commands/agent.js.map +1 -1
  70. package/dist/src/config/index.d.ts +3 -1
  71. package/dist/src/config/index.d.ts.map +1 -1
  72. package/dist/src/config/index.js.map +1 -1
  73. package/dist/src/index.js +29 -1
  74. package/dist/src/index.js.map +1 -1
  75. package/dist/src/session/manager.d.ts +1 -0
  76. package/dist/src/session/manager.d.ts.map +1 -1
  77. package/dist/src/session/manager.js +48 -2
  78. package/dist/src/session/manager.js.map +1 -1
  79. package/dist/tsconfig.tsbuildinfo +1 -1
  80. package/package.json +9 -9
@@ -37,11 +37,14 @@ export class GeminiAdapter extends AgentAdapter {
37
37
  if (agentSessionId)
38
38
  this.agentSessionId = agentSessionId;
39
39
  }
40
- async send(text) {
40
+ async send(text, modelId) {
41
41
  await this.killProcess();
42
42
  this.runId = randomUUID();
43
43
  this.seq = 0;
44
44
  const args = ['-p', text, '--output-format', 'stream-json'];
45
+ if (modelId) {
46
+ args.push('-m', modelId);
47
+ }
45
48
  if (this.agentSessionId) {
46
49
  args.push('--resume', this.agentSessionId);
47
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/agents/gemini.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/agents/gemini.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { AgentInfo, ModelInfo } from '@shennian/wire';
2
+ import type { DetectedAgent } from './detect.js';
3
+ type DiscoveryContext = {
4
+ serverUrl?: string;
5
+ authToken?: string;
6
+ };
7
+ declare function stripAnsi(text: string): string;
8
+ declare function parseCursorModels(raw: string): ModelInfo[];
9
+ declare function parseOpenClawModels(raw: string): ModelInfo[];
10
+ /** Parse `/model` TUI output — IDs are CLI aliases (`claude --model <id>`). */
11
+ declare function parseClaudeModels(raw: string): ModelInfo[];
12
+ declare function parseCodexModels(raw: string): ModelInfo[];
13
+ declare function parseGeminiModels(raw: string): ModelInfo[];
14
+ export declare function getCachedAgentInfos(detectedAgents: DetectedAgent[]): AgentInfo[];
15
+ /** Clears cached model lists for the given agents, then re-probes and persists cache. */
16
+ export declare function refreshAgentInfos(detectedAgents: DetectedAgent[], context: DiscoveryContext): Promise<AgentInfo[]>;
17
+ export declare function resolveAgentInfos(detectedAgents: DetectedAgent[], context: DiscoveryContext): Promise<AgentInfo[]>;
18
+ /** Used by Vitest / `model-switching-e2e.ts` — not a stable public API. */
19
+ export declare const modelSwitchingTestExports: {
20
+ readonly parseClaudeModels: typeof parseClaudeModels;
21
+ readonly parseCodexModels: typeof parseCodexModels;
22
+ readonly parseCursorModels: typeof parseCursorModels;
23
+ readonly parseOpenClawModels: typeof parseOpenClawModels;
24
+ readonly parseGeminiModels: typeof parseGeminiModels;
25
+ readonly stripAnsi: typeof stripAnsi;
26
+ };
27
+ export {};
28
+ //# sourceMappingURL=model-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../../src/agents/model-registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAoB,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAmBhD,KAAK,gBAAgB,GAAG;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AA6CD,iBAAS,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKvC;AAuMD,iBAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAgBnD;AAED,iBAAS,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAkBrD;AAED,+EAA+E;AAC/E,iBAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CA4CnD;AAED,iBAAS,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAmBlD;AAED,iBAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,CAuCnD;AAwGD,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,CAMhF;AAED,yFAAyF;AACzF,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,aAAa,EAAE,EAC/B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,SAAS,EAAE,CAAC,CAOtB;AAED,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,aAAa,EAAE,EAC/B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,SAAS,EAAE,CAAC,CAyCtB;AAED,2EAA2E;AAC3E,eAAO,MAAM,yBAAyB;;;;;;;CAO5B,CAAA"}
@@ -0,0 +1,529 @@
1
+ import fs from 'node:fs';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ import { spawn as spawnProcess } from 'node:child_process';
5
+ import { resolveBuiltinCommand } from './command-spec.js';
6
+ const CACHE_VERSION = 1;
7
+ const CACHE_TTL_MS = 24 * 60 * 60 * 1000;
8
+ const MODEL_CACHE_PATH = path.join(os.homedir(), '.shennian', 'model-cache.json');
9
+ const DISCOVERY_WORKDIR = os.tmpdir();
10
+ function ensureDirExists() {
11
+ fs.mkdirSync(path.dirname(MODEL_CACHE_PATH), { recursive: true });
12
+ }
13
+ function readCache() {
14
+ try {
15
+ const parsed = JSON.parse(fs.readFileSync(MODEL_CACHE_PATH, 'utf-8'));
16
+ if (parsed.version === CACHE_VERSION && parsed.agents && typeof parsed.agents === 'object') {
17
+ return parsed;
18
+ }
19
+ }
20
+ catch {
21
+ // fall through
22
+ }
23
+ return { version: CACHE_VERSION, agents: {} };
24
+ }
25
+ function writeCache(cache) {
26
+ try {
27
+ ensureDirExists();
28
+ fs.writeFileSync(MODEL_CACHE_PATH, JSON.stringify(cache, null, 2));
29
+ }
30
+ catch {
31
+ // Cache is best-effort. Discovery should still succeed when local
32
+ // filesystem writes are unavailable (e.g. restricted sandboxes).
33
+ }
34
+ }
35
+ function isCacheFresh(entry, version) {
36
+ if (!entry)
37
+ return false;
38
+ if (entry.version !== version)
39
+ return false;
40
+ return Date.now() - entry.refreshedAt < CACHE_TTL_MS;
41
+ }
42
+ function stripAnsi(text) {
43
+ return text
44
+ .replace(/\u001b\[[0-9;?]*[a-zA-Z]/g, '')
45
+ .replace(/\u001b\][^\u0007]*\u0007/g, '')
46
+ .replace(/[\u0000-\u0008\u000b-\u001f\u007f]/g, '');
47
+ }
48
+ function uniqueModels(models) {
49
+ const seen = new Set();
50
+ const unique = [];
51
+ for (const model of models) {
52
+ if (!model.id || seen.has(model.id))
53
+ continue;
54
+ seen.add(model.id);
55
+ unique.push(model);
56
+ }
57
+ return unique;
58
+ }
59
+ function titleCaseSegment(segment) {
60
+ if (!segment)
61
+ return segment;
62
+ return segment[0].toUpperCase() + segment.slice(1);
63
+ }
64
+ function prettifyCodexModel(id) {
65
+ return id
66
+ .split('-')
67
+ .map((segment) => {
68
+ if (segment === 'gpt')
69
+ return 'GPT';
70
+ if (segment === 'codex')
71
+ return 'Codex';
72
+ return /^\d/.test(segment) ? segment : titleCaseSegment(segment);
73
+ })
74
+ .join('-');
75
+ }
76
+ function prettifyCursorModel(id) {
77
+ return id
78
+ .split('-')
79
+ .map((segment) => (/^\d/.test(segment) ? segment : titleCaseSegment(segment)))
80
+ .join(' ');
81
+ }
82
+ function buildGeminiId(version, flavor, preview = false) {
83
+ const normalizedFlavor = flavor.toLowerCase().replace(/\s+/g, '-');
84
+ return `gemini-${version}-${normalizedFlavor}${preview ? '-preview' : ''}`;
85
+ }
86
+ function runCommand(command, args, timeoutMs = 15_000) {
87
+ return new Promise((resolve, reject) => {
88
+ const proc = spawnProcess(command, args, {
89
+ cwd: DISCOVERY_WORKDIR,
90
+ stdio: ['ignore', 'pipe', 'pipe'],
91
+ env: { ...process.env, NO_COLOR: '1' },
92
+ });
93
+ let stdout = '';
94
+ let stderr = '';
95
+ const timer = setTimeout(() => {
96
+ proc.kill('SIGKILL');
97
+ }, timeoutMs);
98
+ proc.stdout?.on('data', (chunk) => {
99
+ stdout += chunk.toString();
100
+ });
101
+ proc.stderr?.on('data', (chunk) => {
102
+ stderr += chunk.toString();
103
+ });
104
+ proc.on('error', reject);
105
+ proc.on('close', (exitCode) => {
106
+ clearTimeout(timer);
107
+ resolve({ stdout, stderr, exitCode });
108
+ });
109
+ });
110
+ }
111
+ // Lazy-load node-pty so platforms where native compilation fails still work
112
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
113
+ let _ptySpawn;
114
+ async function loadPtySpawn() {
115
+ if (_ptySpawn)
116
+ return _ptySpawn;
117
+ try {
118
+ const pty = await import('@homebridge/node-pty-prebuilt-multiarch');
119
+ _ptySpawn = pty.spawn;
120
+ return _ptySpawn;
121
+ }
122
+ catch {
123
+ return undefined;
124
+ }
125
+ }
126
+ async function runPtyCommand(spec, options) {
127
+ const ptySpawn = await loadPtySpawn();
128
+ if (!ptySpawn)
129
+ return '';
130
+ const initialDelayMs = options.initialDelayMs ?? 2500;
131
+ const timeoutMs = options.timeoutMs ?? 20_000;
132
+ const scrollCount = options.scrollCount ?? 0;
133
+ const scrollIntervalMs = options.scrollIntervalMs ?? 400;
134
+ const scrollAfterOpenMs = options.scrollAfterOpenMs ?? 2000;
135
+ return new Promise((resolve) => {
136
+ const proc = ptySpawn(spec.command, [...spec.args, ...(options.startupArgs ?? [])], {
137
+ name: 'xterm-256color',
138
+ cols: 200,
139
+ rows: 120,
140
+ cwd: DISCOVERY_WORKDIR,
141
+ env: {
142
+ ...process.env,
143
+ TERM: 'xterm-256color',
144
+ COLUMNS: '200',
145
+ LINES: '120',
146
+ NO_COLOR: '1',
147
+ },
148
+ });
149
+ let output = '';
150
+ let opened = false;
151
+ let scrolling = false;
152
+ let closing = false;
153
+ let finished = false;
154
+ const cleanup = () => {
155
+ if (finished)
156
+ return;
157
+ finished = true;
158
+ clearTimeout(forceOpenTimer);
159
+ clearTimeout(forceCloseTimer);
160
+ resolve(output);
161
+ };
162
+ const doClose = () => {
163
+ if (closing)
164
+ return;
165
+ closing = true;
166
+ proc.write('\u001b');
167
+ setTimeout(() => {
168
+ proc.write('\u0003');
169
+ proc.kill();
170
+ }, 300);
171
+ };
172
+ const doScroll = () => {
173
+ if (scrollCount <= 0)
174
+ return;
175
+ scrolling = true;
176
+ let remaining = scrollCount;
177
+ const tick = () => {
178
+ if (remaining <= 0 || closing || finished) {
179
+ scrolling = false;
180
+ setTimeout(doClose, 500);
181
+ return;
182
+ }
183
+ proc.write('\u001b[B');
184
+ remaining--;
185
+ setTimeout(tick, scrollIntervalMs);
186
+ };
187
+ tick();
188
+ };
189
+ const afterOpen = () => {
190
+ if (scrollCount > 0) {
191
+ setTimeout(doScroll, scrollAfterOpenMs);
192
+ }
193
+ };
194
+ const forceOpenTimer = setTimeout(() => {
195
+ if (!opened) {
196
+ opened = true;
197
+ proc.write('/model\r');
198
+ afterOpen();
199
+ }
200
+ }, initialDelayMs);
201
+ const forceCloseTimer = setTimeout(doClose, timeoutMs);
202
+ const maybeOpen = () => {
203
+ if (opened)
204
+ return;
205
+ const clean = stripAnsi(output);
206
+ if (options.readyPatterns.some((p) => p.test(clean))) {
207
+ opened = true;
208
+ proc.write('/model\r');
209
+ afterOpen();
210
+ }
211
+ };
212
+ const maybeClose = () => {
213
+ if (!opened || closing || scrolling)
214
+ return;
215
+ if (scrollCount > 0)
216
+ return;
217
+ const clean = stripAnsi(output);
218
+ if (options.closePatterns.some((p) => p.test(clean))) {
219
+ doClose();
220
+ }
221
+ };
222
+ proc.onData((chunk) => {
223
+ output += chunk;
224
+ if (!finished) {
225
+ maybeOpen();
226
+ maybeClose();
227
+ }
228
+ });
229
+ proc.onExit(cleanup);
230
+ });
231
+ }
232
+ function parseCursorModels(raw) {
233
+ const models = [];
234
+ const clean = stripAnsi(raw);
235
+ for (const line of clean.split('\n')) {
236
+ const match = line.trim().match(/^(\S+)\s+-\s+(.+?)(?:\s+\(([^)]+)\))?$/);
237
+ if (!match)
238
+ continue;
239
+ const [, id, name, flags] = match;
240
+ const tags = flags?.split(',').map((flag) => flag.trim().toLowerCase()) ?? [];
241
+ models.push({
242
+ id,
243
+ name: name.trim() || prettifyCursorModel(id),
244
+ description: flags?.trim(),
245
+ isDefault: tags.includes('default') || tags.includes('current'),
246
+ });
247
+ }
248
+ return uniqueModels(models);
249
+ }
250
+ function parseOpenClawModels(raw) {
251
+ try {
252
+ const data = JSON.parse(raw);
253
+ const models = (data.models ?? [])
254
+ .filter((model) => model.available)
255
+ .map((model) => ({
256
+ id: model.key,
257
+ name: model.name?.trim() || model.key,
258
+ provider: model.key.split('/')[0],
259
+ description: model.tags?.join(', '),
260
+ isDefault: model.tags?.includes('default') ?? false,
261
+ }));
262
+ return uniqueModels(models);
263
+ }
264
+ catch {
265
+ return [];
266
+ }
267
+ }
268
+ /** Parse `/model` TUI output — IDs are CLI aliases (`claude --model <id>`). */
269
+ function parseClaudeModels(raw) {
270
+ const rawClean = stripAnsi(raw).replace(/\s+/g, ' ');
271
+ const patterns = [
272
+ [/\d+\.Default\(recommended\).*?(?:Sonnet|currently\s*Sonnet)\s*([\d.]+)/i, 'default', 'Default (recommended)'],
273
+ [/\d+\.Sonnet.*?Sonnet\s*([\d.]+)/i, 'sonnet', 'Sonnet'],
274
+ [/\d+\.Opus.*?Opus\s*([\d.]+)/i, 'opus', 'Opus'],
275
+ [/\d+\.Haiku.*?Haiku\s*([\d.]+)/i, 'haiku', 'Haiku'],
276
+ ];
277
+ const models = [];
278
+ for (const [re, id, name] of patterns) {
279
+ const m = rawClean.match(re);
280
+ if (m) {
281
+ models.push({
282
+ id,
283
+ name,
284
+ description: `v${m[1]}`,
285
+ provider: 'anthropic',
286
+ isDefault: id === 'default',
287
+ });
288
+ }
289
+ }
290
+ if (models.length > 0)
291
+ return uniqueModels(models);
292
+ const clean = rawClean;
293
+ const fallback = [];
294
+ const defaultMatch = clean.match(/currently\s*(Sonnet|Opus|Haiku)\s*([34](?:\.\d)?)/i);
295
+ const aliasMap = { sonnet: 'sonnet', opus: 'opus', haiku: 'haiku' };
296
+ for (const match of clean.matchAll(/\b(Sonnet|Opus|Haiku)\s*([34](?:\.\d)?)\b/gi)) {
297
+ const fam = (match[1] ?? '').toLowerCase();
298
+ const alias = aliasMap[fam];
299
+ if (!alias)
300
+ continue;
301
+ const version = match[2] ?? '';
302
+ const isDef = defaultMatch &&
303
+ defaultMatch[1]?.toLowerCase() === fam &&
304
+ defaultMatch[2] === version;
305
+ fallback.push({
306
+ id: alias,
307
+ name: `${titleCaseSegment(fam)} ${version}`,
308
+ provider: 'anthropic',
309
+ isDefault: Boolean(isDef),
310
+ });
311
+ }
312
+ return uniqueModels(fallback);
313
+ }
314
+ function parseCodexModels(raw) {
315
+ const clean = stripAnsi(raw);
316
+ const models = [];
317
+ for (const line of clean.split('\n')) {
318
+ const match = line.match(/\b(gpt-[a-z0-9][a-z0-9.-]*)\b/i);
319
+ if (!match)
320
+ continue;
321
+ const id = match[1].trim();
322
+ const description = line.replace(id, '').replace(/^[^\w]+/, '').trim() || undefined;
323
+ models.push({
324
+ id,
325
+ name: prettifyCodexModel(id),
326
+ description,
327
+ provider: 'openai',
328
+ isDefault: /\bcurrent\b/i.test(line) || /\bselected\b/i.test(line),
329
+ });
330
+ }
331
+ return uniqueModels(models);
332
+ }
333
+ function parseGeminiModels(raw) {
334
+ const clean = stripAnsi(raw);
335
+ const models = [];
336
+ for (const match of clean.matchAll(/\b(?:auto-)?gemini-[a-z0-9.-]+\b/gi)) {
337
+ const id = match[0].trim();
338
+ models.push({
339
+ id,
340
+ name: id,
341
+ provider: 'google',
342
+ isDefault: /\bcurrent\b/i.test(clean) && clean.includes(id),
343
+ });
344
+ }
345
+ for (const match of clean.matchAll(/\bGemini\s*(\d(?:\.\d)?)\s*(Pro|Flash(?:[- ]Lite)?)\s*(Preview)?\b/gi)) {
346
+ const version = match[1] ?? '';
347
+ const flavor = (match[2] ?? '').replace(/\s+/g, '-');
348
+ const preview = Boolean(match[3]);
349
+ const id = buildGeminiId(version, flavor, preview);
350
+ models.push({
351
+ id,
352
+ name: `Gemini ${version} ${flavor.replace(/-/g, ' ')}`.trim(),
353
+ provider: 'google',
354
+ isDefault: /\bcurrent\b/i.test(clean) && clean.includes(match[0] ?? ''),
355
+ });
356
+ }
357
+ for (const match of clean.matchAll(/\bAuto\s*Gemini\s*(\d(?:\.\d)?)\b/gi)) {
358
+ const version = match[1] ?? '';
359
+ const id = `auto-gemini-${version}`;
360
+ models.push({
361
+ id,
362
+ name: `Auto Gemini ${version}`,
363
+ provider: 'google',
364
+ isDefault: /\bcurrent\b/i.test(clean) && clean.includes(match[0] ?? ''),
365
+ });
366
+ }
367
+ return uniqueModels(models);
368
+ }
369
+ async function discoverCursorModels() {
370
+ const spec = resolveBuiltinCommand('cursor');
371
+ if (!spec)
372
+ return [];
373
+ const result = await runCommand(spec.command, [...spec.args, '--list-models']);
374
+ return parseCursorModels(result.stdout);
375
+ }
376
+ async function discoverOpenClawModels() {
377
+ const spec = resolveBuiltinCommand('openclaw');
378
+ if (!spec)
379
+ return [];
380
+ const result = await runCommand(spec.command, [...spec.args, 'models', 'list', '--json']);
381
+ return parseOpenClawModels(result.stdout);
382
+ }
383
+ async function discoverClaudeModels() {
384
+ const spec = resolveBuiltinCommand('claude');
385
+ if (!spec)
386
+ return [];
387
+ const raw = await runPtyCommand(spec, {
388
+ startupArgs: ['--bare', '--dangerously-skip-permissions'],
389
+ readyPatterns: [/[>❯]/, /claude/i],
390
+ closePatterns: [/esc/i, /confirm/i, /default/i],
391
+ timeoutMs: 12_000,
392
+ });
393
+ return parseClaudeModels(raw);
394
+ }
395
+ async function discoverCodexModels() {
396
+ const spec = resolveBuiltinCommand('codex');
397
+ if (!spec)
398
+ return [];
399
+ const raw = await runPtyCommand(spec, {
400
+ startupArgs: ['--no-alt-screen', '-C', DISCOVERY_WORKDIR],
401
+ readyPatterns: [/(?:^|\s)\/model\b/i, /codex/i],
402
+ closePatterns: [/enter to select/i, /dismiss/i, /select model/i],
403
+ timeoutMs: 45_000,
404
+ scrollAfterOpenMs: 2500,
405
+ scrollCount: 15,
406
+ scrollIntervalMs: 500,
407
+ });
408
+ return parseCodexModels(raw);
409
+ }
410
+ async function discoverGeminiModels() {
411
+ const spec = resolveBuiltinCommand('gemini');
412
+ if (!spec)
413
+ return [];
414
+ const raw = await runPtyCommand(spec, {
415
+ readyPatterns: [/[>❯]/, /gemini/i],
416
+ closePatterns: [/enter to select/i, /select model/i, /\besc\b/i],
417
+ timeoutMs: 16_000,
418
+ });
419
+ return parseGeminiModels(raw);
420
+ }
421
+ async function discoverPiModels(context) {
422
+ if (!context.serverUrl || !context.authToken)
423
+ return [];
424
+ try {
425
+ const response = await fetch(`${context.serverUrl.replace(/\/$/, '')}/models`, {
426
+ headers: {
427
+ Authorization: `Bearer ${context.authToken}`,
428
+ },
429
+ });
430
+ if (!response.ok)
431
+ return [];
432
+ const data = await response.json();
433
+ return uniqueModels((data.models ?? []).map((model) => ({
434
+ id: model.id,
435
+ name: model.name?.trim() || model.id,
436
+ provider: model.provider,
437
+ isDefault: model.id === data.default,
438
+ })));
439
+ }
440
+ catch {
441
+ return [];
442
+ }
443
+ }
444
+ async function discoverBuiltinModels(type, context) {
445
+ switch (type) {
446
+ case 'claude':
447
+ return discoverClaudeModels();
448
+ case 'codex':
449
+ return discoverCodexModels();
450
+ case 'gemini':
451
+ return discoverGeminiModels();
452
+ case 'cursor':
453
+ return discoverCursorModels();
454
+ case 'openclaw':
455
+ return discoverOpenClawModels();
456
+ case 'pi':
457
+ return discoverPiModels(context);
458
+ }
459
+ }
460
+ async function discoverModelsForAgent(agent, context) {
461
+ if (agent.type.startsWith('custom:')) {
462
+ return uniqueModels(agent.models ?? []);
463
+ }
464
+ return discoverBuiltinModels(agent.type, context);
465
+ }
466
+ export function getCachedAgentInfos(detectedAgents) {
467
+ const cache = readCache();
468
+ return detectedAgents.map((agent) => ({
469
+ type: agent.type,
470
+ models: cache.agents[agent.type]?.models ?? agent.models ?? [],
471
+ }));
472
+ }
473
+ /** Clears cached model lists for the given agents, then re-probes and persists cache. */
474
+ export async function refreshAgentInfos(detectedAgents, context) {
475
+ const cache = readCache();
476
+ for (const agent of detectedAgents) {
477
+ delete cache.agents[agent.type];
478
+ }
479
+ writeCache(cache);
480
+ return resolveAgentInfos(detectedAgents, context);
481
+ }
482
+ export async function resolveAgentInfos(detectedAgents, context) {
483
+ const cache = readCache();
484
+ let changed = false;
485
+ const infos = [];
486
+ for (const agent of detectedAgents) {
487
+ const cached = cache.agents[agent.type];
488
+ let models;
489
+ if (isCacheFresh(cached, agent.version)) {
490
+ models = cached.models;
491
+ }
492
+ else {
493
+ try {
494
+ const discovered = await discoverModelsForAgent(agent, context);
495
+ models = discovered.length > 0 ? discovered : cached?.models ?? agent.models ?? [];
496
+ }
497
+ catch {
498
+ models = cached?.models ?? agent.models ?? [];
499
+ }
500
+ const nextEntry = {
501
+ version: agent.version,
502
+ refreshedAt: Date.now(),
503
+ models,
504
+ };
505
+ if (JSON.stringify(cached) !== JSON.stringify(nextEntry)) {
506
+ cache.agents[agent.type] = nextEntry;
507
+ changed = true;
508
+ }
509
+ }
510
+ infos.push({
511
+ type: agent.type,
512
+ models,
513
+ });
514
+ }
515
+ if (changed) {
516
+ writeCache(cache);
517
+ }
518
+ return infos;
519
+ }
520
+ /** Used by Vitest / `model-switching-e2e.ts` — not a stable public API. */
521
+ export const modelSwitchingTestExports = {
522
+ parseClaudeModels,
523
+ parseCodexModels,
524
+ parseCursorModels,
525
+ parseOpenClawModels,
526
+ parseGeminiModels,
527
+ stripAnsi,
528
+ };
529
+ //# sourceMappingURL=model-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../../src/agents/model-registry.ts"],"names":[],"mappings":"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"}
@@ -5,14 +5,16 @@ export declare class OpenClawAdapter extends AgentAdapter {
5
5
  private sessionId;
6
6
  /** OpenClaw session id from JSON or `resume()`; falls back to app `sessionId`. */
7
7
  private agentSessionId;
8
+ private currentModelId;
8
9
  private workDir;
9
10
  private seq;
10
11
  private runId;
11
12
  start(sessionId: string, workDir: string, agentSessionId?: string | null): Promise<void>;
12
- send(text: string): Promise<void>;
13
+ send(text: string, modelId?: string): Promise<void>;
13
14
  resume(agentSessionId: string): Promise<void>;
14
15
  stop(): Promise<void>;
15
16
  private spawnAgent;
17
+ private runAgentCommand;
16
18
  private emitEvent;
17
19
  private killProcess;
18
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../../src/agents/openclaw.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAkC,MAAM,cAAc,CAAA;AAkE3E,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAS;IACnC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,SAAS,CAAsB;IACvC,kFAAkF;IAClF,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,GAAG,CAAI;IACf,OAAO,CAAC,KAAK,CAAK;IAEZ,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcjC,MAAM,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,OAAO,CAAC,UAAU;IAgFlB,OAAO,CAAC,SAAS;YASH,WAAW;CAa1B"}
1
+ {"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../../src/agents/openclaw.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAkC,MAAM,cAAc,CAAA;AAkE3E,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAS;IACnC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,SAAS,CAAsB;IACvC,kFAAkF;IAClF,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,GAAG,CAAI;IACf,OAAO,CAAC,KAAK,CAAK;IAEZ,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxF,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBnD,MAAM,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,OAAO,CAAC,UAAU;YAgFJ,eAAe;IAsD7B,OAAO,CAAC,SAAS;YASH,WAAW;CAa1B"}