@cloudcli-ai/cloudcli 1.37.0 → 1.37.1

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 (112) hide show
  1. package/dist/assets/index-D3jfzuKN.css +32 -0
  2. package/dist/assets/{index-eGqPeIEu.js → index-DTMWjJj8.js} +324 -305
  3. package/dist/index.html +2 -2
  4. package/dist-server/server/modules/commands/commands.routes.js +3 -3
  5. package/dist-server/server/modules/commands/commands.routes.js.map +1 -1
  6. package/dist-server/server/modules/commands/tests/commands.test.js +2 -7
  7. package/dist-server/server/modules/commands/tests/commands.test.js.map +1 -1
  8. package/dist-server/server/modules/database/index.js +2 -0
  9. package/dist-server/server/modules/database/index.js.map +1 -1
  10. package/dist-server/server/modules/database/migrations.js +18 -1
  11. package/dist-server/server/modules/database/migrations.js.map +1 -1
  12. package/dist-server/server/modules/database/repositories/provider-models.js +112 -0
  13. package/dist-server/server/modules/database/repositories/provider-models.js.map +1 -0
  14. package/dist-server/server/modules/database/repositories/sessions.db.js +63 -7
  15. package/dist-server/server/modules/database/repositories/sessions.db.js.map +1 -1
  16. package/dist-server/server/modules/database/schema.js +28 -3
  17. package/dist-server/server/modules/database/schema.js.map +1 -1
  18. package/dist-server/server/modules/database/tests/provider-models.db.integration.test.js +102 -0
  19. package/dist-server/server/modules/database/tests/provider-models.db.integration.test.js.map +1 -0
  20. package/dist-server/server/modules/database/tests/sessions-provider-mapping.test.js +2 -1
  21. package/dist-server/server/modules/database/tests/sessions-provider-mapping.test.js.map +1 -1
  22. package/dist-server/server/modules/database/tests/sessions.db.integration.test.js +22 -0
  23. package/dist-server/server/modules/database/tests/sessions.db.integration.test.js.map +1 -1
  24. package/dist-server/server/modules/file-tree/file-tree.module.js +5 -1
  25. package/dist-server/server/modules/file-tree/file-tree.module.js.map +1 -1
  26. package/dist-server/server/modules/file-tree/file-tree.service.js +50 -18
  27. package/dist-server/server/modules/file-tree/file-tree.service.js.map +1 -1
  28. package/dist-server/server/modules/file-tree/tests/file-tree.service.test.js +83 -7
  29. package/dist-server/server/modules/file-tree/tests/file-tree.service.test.js.map +1 -1
  30. package/dist-server/server/modules/providers/list/claude/claude-models.provider.js +46 -14
  31. package/dist-server/server/modules/providers/list/claude/claude-models.provider.js.map +1 -1
  32. package/dist-server/server/modules/providers/list/claude/claude-runtime.provider.js +8 -15
  33. package/dist-server/server/modules/providers/list/claude/claude-runtime.provider.js.map +1 -1
  34. package/dist-server/server/modules/providers/list/codex/codex-models.provider.js +58 -71
  35. package/dist-server/server/modules/providers/list/codex/codex-models.provider.js.map +1 -1
  36. package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js +1 -54
  37. package/dist-server/server/modules/providers/list/codex/codex-session-synchronizer.provider.js.map +1 -1
  38. package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js +7 -7
  39. package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js.map +1 -1
  40. package/dist-server/server/modules/providers/list/cursor/cursor-models.provider.js +32 -669
  41. package/dist-server/server/modules/providers/list/cursor/cursor-models.provider.js.map +1 -1
  42. package/dist-server/server/modules/providers/list/opencode/opencode-models.provider.js +105 -328
  43. package/dist-server/server/modules/providers/list/opencode/opencode-models.provider.js.map +1 -1
  44. package/dist-server/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.js +0 -12
  45. package/dist-server/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.js.map +1 -1
  46. package/dist-server/server/modules/providers/provider.routes.js +139 -31
  47. package/dist-server/server/modules/providers/provider.routes.js.map +1 -1
  48. package/dist-server/server/modules/providers/services/provider-models.service.js +167 -199
  49. package/dist-server/server/modules/providers/services/provider-models.service.js.map +1 -1
  50. package/dist-server/server/modules/providers/services/provider-runtime.service.js +2 -2
  51. package/dist-server/server/modules/providers/services/provider-runtime.service.js.map +1 -1
  52. package/dist-server/server/modules/providers/services/session-conversations-search.service.js +12 -4
  53. package/dist-server/server/modules/providers/services/session-conversations-search.service.js.map +1 -1
  54. package/dist-server/server/modules/providers/services/sessions.service.js +62 -3
  55. package/dist-server/server/modules/providers/services/sessions.service.js.map +1 -1
  56. package/dist-server/server/modules/providers/tests/codex-sessions.test.js +53 -17
  57. package/dist-server/server/modules/providers/tests/codex-sessions.test.js.map +1 -1
  58. package/dist-server/server/modules/providers/tests/opencode-models.test.js +15 -126
  59. package/dist-server/server/modules/providers/tests/opencode-models.test.js.map +1 -1
  60. package/dist-server/server/modules/providers/tests/opencode-sessions.test.js +5 -5
  61. package/dist-server/server/modules/providers/tests/opencode-sessions.test.js.map +1 -1
  62. package/dist-server/server/modules/providers/tests/provider-models.service.test.js +175 -292
  63. package/dist-server/server/modules/providers/tests/provider-models.service.test.js.map +1 -1
  64. package/dist-server/server/modules/providers/tests/provider-runtime.service.test.js +2 -6
  65. package/dist-server/server/modules/providers/tests/provider-runtime.service.test.js.map +1 -1
  66. package/dist-server/server/modules/providers/tests/provider-token-usage.service.test.js +1 -0
  67. package/dist-server/server/modules/providers/tests/provider-token-usage.service.test.js.map +1 -1
  68. package/dist-server/server/modules/providers/tests/provider.routes.test.js +126 -0
  69. package/dist-server/server/modules/providers/tests/provider.routes.test.js.map +1 -0
  70. package/dist-server/server/modules/providers/tests/sessions.service.test.js +87 -0
  71. package/dist-server/server/modules/providers/tests/sessions.service.test.js.map +1 -0
  72. package/dist-server/server/modules/websocket/services/chat-websocket.service.js +5 -1
  73. package/dist-server/server/modules/websocket/services/chat-websocket.service.js.map +1 -1
  74. package/package.json +3 -3
  75. package/server/modules/commands/commands.routes.ts +3 -3
  76. package/server/modules/commands/tests/commands.test.ts +2 -7
  77. package/server/modules/database/index.ts +2 -0
  78. package/server/modules/database/migrations.ts +20 -0
  79. package/server/modules/database/repositories/provider-models.ts +168 -0
  80. package/server/modules/database/repositories/sessions.db.ts +85 -8
  81. package/server/modules/database/schema.ts +29 -3
  82. package/server/modules/database/tests/provider-models.db.integration.test.ts +125 -0
  83. package/server/modules/database/tests/sessions-provider-mapping.test.ts +2 -1
  84. package/server/modules/database/tests/sessions.db.integration.test.ts +32 -0
  85. package/server/modules/file-tree/file-tree.module.ts +5 -1
  86. package/server/modules/file-tree/file-tree.service.ts +68 -20
  87. package/server/modules/file-tree/tests/file-tree.service.test.ts +104 -7
  88. package/server/modules/providers/list/claude/claude-models.provider.ts +46 -14
  89. package/server/modules/providers/list/claude/claude-runtime.provider.js +8 -16
  90. package/server/modules/providers/list/codex/codex-models.provider.ts +58 -99
  91. package/server/modules/providers/list/codex/codex-session-synchronizer.provider.ts +1 -60
  92. package/server/modules/providers/list/codex/codex-sessions.provider.ts +7 -7
  93. package/server/modules/providers/list/cursor/cursor-models.provider.ts +32 -710
  94. package/server/modules/providers/list/opencode/opencode-models.provider.ts +105 -413
  95. package/server/modules/providers/list/opencode/opencode-session-synchronizer.provider.ts +0 -13
  96. package/server/modules/providers/provider.routes.ts +185 -33
  97. package/server/modules/providers/services/provider-models.service.ts +223 -288
  98. package/server/modules/providers/services/provider-runtime.service.ts +2 -3
  99. package/server/modules/providers/services/session-conversations-search.service.ts +12 -4
  100. package/server/modules/providers/services/sessions.service.ts +87 -3
  101. package/server/modules/providers/tests/codex-sessions.test.ts +57 -18
  102. package/server/modules/providers/tests/opencode-models.test.ts +34 -135
  103. package/server/modules/providers/tests/opencode-sessions.test.ts +5 -5
  104. package/server/modules/providers/tests/provider-models.service.test.ts +353 -450
  105. package/server/modules/providers/tests/provider-runtime.service.test.ts +2 -6
  106. package/server/modules/providers/tests/provider-token-usage.service.test.ts +1 -0
  107. package/server/modules/providers/tests/provider.routes.test.ts +183 -0
  108. package/server/modules/providers/tests/sessions.service.test.ts +127 -0
  109. package/server/modules/websocket/services/chat-websocket.service.ts +5 -1
  110. package/server/shared/interfaces.ts +4 -6
  111. package/server/shared/types.ts +29 -17
  112. package/dist/assets/index-DSlds633.css +0 -32
@@ -1,200 +1,146 @@
1
- import { mkdir, readFile, writeFile } from 'node:fs/promises';
2
- import os from 'node:os';
3
- import path from 'node:path';
4
- import { sessionsDb } from '../../../modules/database/index.js';
1
+ import { providerModelsDb, sessionsDb } from '../../../modules/database/index.js';
5
2
  import { providerRegistry } from '../../../modules/providers/provider.registry.js';
6
- export const PROVIDER_MODELS_CACHE_TTL_MS = 3 * 24 * 60 * 60 * 1000;
7
- const PROVIDER_MODELS_CACHE_VERSION = 2;
8
- const UNCACHED_PROVIDERS = new Set(['claude']);
9
- const getProviderModelsCachePath = () => path.join(os.homedir(), '.cloudcli', 'provider-models-cache.json');
10
- const toProviderModelsCacheInfo = (entry, source) => ({
11
- updatedAt: new Date(entry.updatedAt).toISOString(),
12
- expiresAt: new Date(entry.expiresAt).toISOString(),
13
- source,
3
+ import { AppError } from '../../../shared/utils.js';
4
+ const toCustomProviderModelOption = (record) => ({
5
+ value: record.modelId,
6
+ label: record.model,
7
+ recordId: record.recordId,
8
+ isCustom: true,
14
9
  });
15
- const isProviderModelOption = (value) => (Boolean(value)
16
- && typeof value === 'object'
17
- && typeof value.value === 'string'
18
- && typeof value.label === 'string'
19
- && (typeof value.description === 'undefined'
20
- || typeof value.description === 'string'));
21
- const isProviderModelsDefinition = (value) => (Boolean(value)
22
- && typeof value === 'object'
23
- && Array.isArray(value.OPTIONS)
24
- && value.OPTIONS.every(isProviderModelOption)
25
- && typeof value.DEFAULT === 'string');
26
- const isProviderModelsCacheEntry = (value) => (Boolean(value)
27
- && typeof value === 'object'
28
- && typeof value.updatedAt === 'number'
29
- && typeof value.expiresAt === 'number'
30
- && isProviderModelsDefinition(value.models));
31
- const readProviderModelsCacheFile = async (cachePath) => {
32
- try {
33
- const raw = await readFile(cachePath, 'utf8');
34
- const parsed = JSON.parse(raw);
35
- if (parsed.version !== PROVIDER_MODELS_CACHE_VERSION || !parsed.entries || typeof parsed.entries !== 'object') {
36
- return null;
37
- }
38
- const entries = Object.fromEntries(Object.entries(parsed.entries).filter((entry) => isProviderModelsCacheEntry(entry[1])));
39
- return {
40
- version: PROVIDER_MODELS_CACHE_VERSION,
41
- entries,
42
- };
43
- }
44
- catch {
45
- return null;
46
- }
47
- };
48
- const writeProviderModelsCacheFile = async (cachePath, entries, now) => {
49
- const serializableEntries = Object.fromEntries([...entries.entries()].filter(([, entry]) => entry.expiresAt > now));
50
- const payload = {
51
- version: PROVIDER_MODELS_CACHE_VERSION,
52
- entries: serializableEntries,
10
+ const mergeProviderModels = (predefined, custom) => {
11
+ return {
12
+ OPTIONS: [
13
+ ...predefined.OPTIONS.map((option) => ({ ...option, isCustom: false })),
14
+ ...custom.map(toCustomProviderModelOption),
15
+ ],
16
+ DEFAULT: predefined.DEFAULT,
53
17
  };
54
- await mkdir(path.dirname(cachePath), { recursive: true });
55
- await writeFile(cachePath, `${JSON.stringify(payload, null, 2)}\n`, 'utf8');
56
18
  };
19
+ const normalizeCustomModelInput = (input) => ({
20
+ id: input.id.trim(),
21
+ model: input.model.trim(),
22
+ });
23
+ const isUniqueConstraintError = (error) => (error !== null
24
+ && error !== undefined
25
+ && typeof error === 'object'
26
+ && 'code' in error
27
+ && String(error.code).startsWith('SQLITE_CONSTRAINT'));
57
28
  /**
58
- * Provider model lookup service.
29
+ * Creates the provider model application service used by Providers routes,
30
+ * Commands, and provider runtimes.
59
31
  *
60
- * Routes and other service callers use this layer instead of resolving provider
61
- * classes directly so the provider-registry dependency stays centralized in one
62
- * place.
32
+ * Curated adapter definitions stay source-controlled and are merged at read
33
+ * time with custom SQLite rows. This deliberately has no predefined-model
34
+ * persistence, memory cache, disk cache, TTL, or provider-native discovery.
35
+ * Tests inject a small custom-model store through the same boundary.
63
36
  */
64
37
  export const createProviderModelsService = (dependencies = {}) => {
65
38
  const resolveProvider = dependencies.resolveProvider ?? providerRegistry.resolveProvider;
66
- const cachePath = dependencies.cachePath ?? getProviderModelsCachePath();
39
+ const catalog = dependencies.catalog ?? providerModelsDb;
67
40
  const sessions = dependencies.sessions ?? sessionsDb;
68
- const now = dependencies.now ?? (() => Date.now());
69
- const memoryCache = new Map();
70
- const pendingRequests = new Map();
71
- let persistedCacheLoaded = false;
72
- let persistedCacheLoadPromise = null;
73
- const pruneExpiredMemoryEntry = (provider, currentTime, source) => {
74
- const cachedEntry = memoryCache.get(provider);
75
- if (!cachedEntry) {
76
- return null;
77
- }
78
- if (cachedEntry.expiresAt > currentTime) {
79
- return {
80
- models: cachedEntry.models,
81
- cache: toProviderModelsCacheInfo(cachedEntry, source),
82
- };
41
+ const getProviderModels = async (provider) => {
42
+ const predefined = await resolveProvider(provider).models.getSupportedModels();
43
+ return mergeProviderModels(predefined, catalog.listCustomProviderModels(provider));
44
+ };
45
+ const getCurrentActiveModel = async (provider, sessionId) => resolveProvider(provider).models.getCurrentActiveModel(sessionId);
46
+ const readCustomModel = (provider, recordId) => {
47
+ const existing = catalog.getCustomProviderModel(provider, recordId);
48
+ if (!existing) {
49
+ throw new AppError('Model not found.', {
50
+ code: 'MODEL_NOT_FOUND',
51
+ statusCode: 404,
52
+ });
83
53
  }
84
- memoryCache.delete(provider);
85
- return null;
54
+ return existing;
86
55
  };
87
- const loadPersistedCache = async () => {
88
- if (persistedCacheLoaded) {
89
- return;
56
+ const assertModelIdAvailable = (provider, predefined, modelId, currentRecordId) => {
57
+ if (predefined.OPTIONS.some((option) => option.value === modelId)) {
58
+ throw new AppError(`A ${provider} model with this ID already exists.`, {
59
+ code: 'MODEL_ID_ALREADY_EXISTS',
60
+ statusCode: 409,
61
+ });
90
62
  }
91
- if (!persistedCacheLoadPromise) {
92
- persistedCacheLoadPromise = (async () => {
93
- const cacheFile = await readProviderModelsCacheFile(cachePath);
94
- const currentTime = now();
95
- for (const [provider, entry] of Object.entries(cacheFile?.entries ?? {})) {
96
- if (entry.expiresAt > currentTime) {
97
- memoryCache.set(provider, entry);
98
- }
99
- }
100
- persistedCacheLoaded = true;
101
- })().finally(() => {
102
- persistedCacheLoadPromise = null;
63
+ const duplicate = catalog.findCustomProviderModelByModelId(provider, modelId);
64
+ if (duplicate && duplicate.recordId !== currentRecordId) {
65
+ throw new AppError(`A ${provider} model with this ID already exists.`, {
66
+ code: 'MODEL_ID_ALREADY_EXISTS',
67
+ statusCode: 409,
103
68
  });
104
69
  }
105
- await persistedCacheLoadPromise;
106
70
  };
107
- const persistCache = async () => {
71
+ const createCustomModel = async (provider, input) => {
72
+ const predefined = await resolveProvider(provider).models.getSupportedModels();
73
+ const normalized = normalizeCustomModelInput(input);
74
+ assertModelIdAvailable(provider, predefined, normalized.id);
108
75
  try {
109
- await writeProviderModelsCacheFile(cachePath, memoryCache, now());
76
+ const created = catalog.createCustomProviderModel(provider, normalized);
77
+ return {
78
+ model: toCustomProviderModelOption(created),
79
+ models: mergeProviderModels(predefined, catalog.listCustomProviderModels(provider)),
80
+ };
110
81
  }
111
82
  catch (error) {
112
- console.warn('Unable to persist provider models cache:', error);
83
+ if (isUniqueConstraintError(error)) {
84
+ throw new AppError(`A ${provider} model with this ID already exists.`, {
85
+ code: 'MODEL_ID_ALREADY_EXISTS',
86
+ statusCode: 409,
87
+ });
88
+ }
89
+ throw error;
113
90
  }
114
91
  };
115
- const setCacheEntry = async (provider, models) => {
116
- const currentTime = now();
117
- const entry = {
118
- updatedAt: currentTime,
119
- expiresAt: currentTime + PROVIDER_MODELS_CACHE_TTL_MS,
120
- models,
121
- };
122
- memoryCache.set(provider, entry);
123
- await persistCache();
124
- return entry;
125
- };
126
- const loadAndCacheModels = (provider) => {
127
- const request = resolveProvider(provider).models.getSupportedModels()
128
- .then(async (models) => {
129
- const entry = await setCacheEntry(provider, models);
130
- return {
131
- models,
132
- cache: toProviderModelsCacheInfo(entry, 'fresh'),
133
- };
134
- })
135
- .finally(() => {
136
- pendingRequests.delete(provider);
137
- });
138
- pendingRequests.set(provider, request);
139
- return request;
140
- };
141
- const loadDirectModels = (provider) => {
142
- const request = resolveProvider(provider).models.getSupportedModels()
143
- .then((models) => {
144
- const currentTime = now();
92
+ const updateCustomModel = async (provider, recordId, input) => {
93
+ const predefined = await resolveProvider(provider).models.getSupportedModels();
94
+ readCustomModel(provider, recordId);
95
+ const normalized = normalizeCustomModelInput(input);
96
+ assertModelIdAvailable(provider, predefined, normalized.id, recordId);
97
+ try {
98
+ const updated = catalog.updateCustomProviderModel(provider, recordId, normalized);
99
+ if (!updated) {
100
+ throw new AppError('Model not found.', {
101
+ code: 'MODEL_NOT_FOUND',
102
+ statusCode: 404,
103
+ });
104
+ }
145
105
  return {
146
- models,
147
- cache: {
148
- updatedAt: new Date(currentTime).toISOString(),
149
- expiresAt: new Date(currentTime).toISOString(),
150
- source: 'fresh',
151
- },
106
+ model: toCustomProviderModelOption(updated),
107
+ models: mergeProviderModels(predefined, catalog.listCustomProviderModels(provider)),
152
108
  };
153
- })
154
- .finally(() => {
155
- pendingRequests.delete(provider);
156
- });
157
- pendingRequests.set(provider, request);
158
- return request;
159
- };
160
- const getProviderModels = async (provider, options = {}) => {
161
- if (UNCACHED_PROVIDERS.has(provider)) {
162
- const pendingRequest = pendingRequests.get(provider);
163
- if (pendingRequest) {
164
- return pendingRequest;
165
- }
166
- return loadDirectModels(provider);
167
109
  }
168
- if (options.bypassCache) {
169
- const pendingRequest = pendingRequests.get(provider);
170
- if (pendingRequest) {
171
- return pendingRequest;
110
+ catch (error) {
111
+ if (isUniqueConstraintError(error)) {
112
+ throw new AppError(`A ${provider} model with this ID already exists.`, {
113
+ code: 'MODEL_ID_ALREADY_EXISTS',
114
+ statusCode: 409,
115
+ });
172
116
  }
173
- return loadAndCacheModels(provider);
117
+ throw error;
174
118
  }
175
- const cachedModels = pruneExpiredMemoryEntry(provider, now(), 'memory');
176
- if (cachedModels) {
177
- return cachedModels;
178
- }
179
- const pendingRequest = pendingRequests.get(provider);
180
- if (pendingRequest) {
181
- return pendingRequest;
182
- }
183
- await loadPersistedCache();
184
- const persistedModels = pruneExpiredMemoryEntry(provider, now(), 'disk');
185
- if (persistedModels) {
186
- return persistedModels;
187
- }
188
- const postLoadPendingRequest = pendingRequests.get(provider);
189
- if (postLoadPendingRequest) {
190
- return postLoadPendingRequest;
119
+ };
120
+ const deleteCustomModel = async (provider, recordId) => {
121
+ const predefined = await resolveProvider(provider).models.getSupportedModels();
122
+ readCustomModel(provider, recordId);
123
+ const removed = catalog.deleteCustomProviderModel(provider, recordId, predefined.DEFAULT);
124
+ if (!removed) {
125
+ throw new AppError('Model not found.', {
126
+ code: 'MODEL_NOT_FOUND',
127
+ statusCode: 404,
128
+ });
191
129
  }
192
- return loadAndCacheModels(provider);
130
+ return {
131
+ model: toCustomProviderModelOption(removed),
132
+ models: mergeProviderModels(predefined, catalog.listCustomProviderModels(provider)),
133
+ };
193
134
  };
194
- const getCurrentActiveModel = async (provider, sessionId) => resolveProvider(provider).models.getCurrentActiveModel(sessionId);
195
- const readRecordedSessionModel = (sessionId) => {
135
+ const readRecordedSessionSelection = (sessionId) => {
196
136
  const session = sessions.getSessionById(sessionId);
197
- return session?.model?.trim() || null;
137
+ if (!session) {
138
+ return null;
139
+ }
140
+ return {
141
+ model: session.model?.trim() || null,
142
+ effort: session.effort?.trim() || null,
143
+ };
198
144
  };
199
145
  /**
200
146
  * Records the model one session runs with.
@@ -211,7 +157,8 @@ export const createProviderModelsService = (dependencies = {}) => {
211
157
  if (!normalizedSessionId || !normalizedModel) {
212
158
  return null;
213
159
  }
214
- if (!sessions.getSessionById(normalizedSessionId)) {
160
+ const recordedSelection = readRecordedSessionSelection(normalizedSessionId);
161
+ if (!recordedSelection) {
215
162
  return null;
216
163
  }
217
164
  sessions.setSessionModel(normalizedSessionId, normalizedModel);
@@ -219,6 +166,31 @@ export const createProviderModelsService = (dependencies = {}) => {
219
166
  provider,
220
167
  sessionId: normalizedSessionId,
221
168
  model: normalizedModel,
169
+ effort: recordedSelection.effort,
170
+ source: 'session',
171
+ };
172
+ };
173
+ /**
174
+ * Records the reasoning effort one session runs with.
175
+ *
176
+ * Like `setSessionModel`, this ignores an id that has not been allocated by
177
+ * the session gateway yet. The websocket send path records it once the row
178
+ * exists, so a pre-session composer choice is not lost.
179
+ */
180
+ const setSessionEffort = (provider, sessionId, effort) => {
181
+ const normalizedSessionId = sessionId.trim();
182
+ const normalizedEffort = effort.trim();
183
+ if (!normalizedSessionId || !normalizedEffort) {
184
+ return null;
185
+ }
186
+ if (!readRecordedSessionSelection(normalizedSessionId)) {
187
+ return null;
188
+ }
189
+ sessions.setSessionEffort(normalizedSessionId, normalizedEffort);
190
+ return {
191
+ provider,
192
+ sessionId: normalizedSessionId,
193
+ effort: normalizedEffort,
222
194
  source: 'session',
223
195
  };
224
196
  };
@@ -226,13 +198,10 @@ export const createProviderModelsService = (dependencies = {}) => {
226
198
  * Answers "which model is this session using?" for every display surface.
227
199
  *
228
200
  * Precedence, highest first:
229
- * 1. the model recorded on the session row — the user's pick, or whatever
230
- * the last send used;
231
- * 2. the provider's own session state, for sessions started outside the app
232
- * that we have never recorded a model for;
233
- * 3. `requestedModel`, the client's current default, for a chat that has no
234
- * session yet;
235
- * 4. the provider catalog default.
201
+ * 1. the model recorded on the session row;
202
+ * 2. the provider's own session state for externally-created sessions;
203
+ * 3. `requestedModel`, the client's current default;
204
+ * 4. the source-controlled provider catalog default.
236
205
  */
237
206
  const resolveSessionModel = async (provider, options = {}) => {
238
207
  const normalizedSessionId = typeof options.sessionId === 'string' ? options.sessionId.trim() : '';
@@ -240,32 +209,33 @@ export const createProviderModelsService = (dependencies = {}) => {
240
209
  ? options.requestedModel.trim()
241
210
  : '';
242
211
  if (normalizedSessionId) {
243
- const recordedModel = readRecordedSessionModel(normalizedSessionId);
244
- if (recordedModel) {
212
+ const recordedSelection = readRecordedSessionSelection(normalizedSessionId);
213
+ if (recordedSelection?.model) {
245
214
  return {
246
215
  provider,
247
216
  sessionId: normalizedSessionId,
248
- model: recordedModel,
217
+ model: recordedSelection.model,
218
+ effort: recordedSelection.effort,
249
219
  source: 'session',
250
220
  };
251
221
  }
252
- // Never sent on through the app. Ask the provider what its own session
253
- // state says before falling back to anything client-supplied.
254
- const catalog = (await getProviderModels(provider)).models;
222
+ const providerCatalog = await getProviderModels(provider);
255
223
  const providerModel = await getCurrentActiveModel(provider, normalizedSessionId);
256
224
  const resolvedProviderModel = providerModel.model?.trim();
257
- if (resolvedProviderModel && resolvedProviderModel !== catalog.DEFAULT) {
225
+ if (resolvedProviderModel && resolvedProviderModel !== providerCatalog.DEFAULT) {
258
226
  return {
259
227
  provider,
260
228
  sessionId: normalizedSessionId,
261
229
  model: resolvedProviderModel,
230
+ effort: recordedSelection?.effort ?? null,
262
231
  source: 'provider',
263
232
  };
264
233
  }
265
234
  return {
266
235
  provider,
267
236
  sessionId: normalizedSessionId,
268
- model: normalizedRequestedModel || catalog.DEFAULT,
237
+ model: normalizedRequestedModel || providerCatalog.DEFAULT,
238
+ effort: recordedSelection?.effort ?? null,
269
239
  source: normalizedRequestedModel ? 'session' : 'default',
270
240
  };
271
241
  }
@@ -274,24 +244,24 @@ export const createProviderModelsService = (dependencies = {}) => {
274
244
  provider,
275
245
  sessionId: null,
276
246
  model: normalizedRequestedModel,
247
+ effort: null,
277
248
  source: 'session',
278
249
  };
279
250
  }
280
- const catalog = (await getProviderModels(provider)).models;
251
+ const providerCatalog = await getProviderModels(provider);
281
252
  return {
282
253
  provider,
283
254
  sessionId: null,
284
- model: catalog.DEFAULT,
255
+ model: providerCatalog.DEFAULT,
256
+ effort: null,
285
257
  source: 'default',
286
258
  };
287
259
  };
288
260
  /**
289
- * Picks the model one run should use, for provider runtime adapters.
261
+ * Picks the model one resumed provider run should use.
290
262
  *
291
- * Deliberately narrower than `resolveSessionModel`: the provider's own
292
- * session state is not consulted here. Codex reports a global config value
293
- * from `getCurrentActiveModel`, which would silently override the model the
294
- * user picked in the composer on every single run.
263
+ * Provider-global state is deliberately ignored because it must never
264
+ * override the model explicitly selected in the composer.
295
265
  */
296
266
  const resolveResumeModel = async (provider, sessionId, requestedModel) => {
297
267
  void provider;
@@ -300,22 +270,20 @@ export const createProviderModelsService = (dependencies = {}) => {
300
270
  if (!normalizedSessionId) {
301
271
  return normalizedRequestedModel || undefined;
302
272
  }
303
- const recordedModel = readRecordedSessionModel(normalizedSessionId);
273
+ const recordedModel = readRecordedSessionSelection(normalizedSessionId)?.model;
304
274
  return recordedModel || normalizedRequestedModel || undefined;
305
275
  };
306
- const clearCache = () => {
307
- memoryCache.clear();
308
- pendingRequests.clear();
309
- persistedCacheLoaded = false;
310
- persistedCacheLoadPromise = null;
311
- };
312
276
  return {
313
277
  getProviderModels,
278
+ createCustomModel,
279
+ updateCustomModel,
280
+ deleteCustomModel,
314
281
  setSessionModel,
282
+ setSessionEffort,
315
283
  resolveSessionModel,
316
284
  resolveResumeModel,
317
- clearCache,
318
285
  };
319
286
  };
287
+ /** Shared Providers service used by routes, Commands, and provider runtimes. */
320
288
  export const providerModelsService = createProviderModelsService();
321
289
  //# sourceMappingURL=provider-models.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider-models.service.js","sourceRoot":"","sources":["../../../../../server/modules/providers/services/provider-models.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-models.service.js","sourceRoot":"","sources":["../../../../../server/modules/providers/services/provider-models.service.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ const defaultDependencies = {
6
6
  resolveProvider: (provider) => providerRegistry.resolveProvider(provider),
7
7
  resolveProviderSessionId: (sessionId) => sessionsService.resolveProviderSessionId(sessionId),
8
8
  resolveResumeModel: (provider, sessionId, requestedModel) => providerModelsService.resolveResumeModel(provider, sessionId, requestedModel),
9
- getProviderModels: (provider, options) => providerModelsService.getProviderModels(provider, options),
9
+ getProviderModels: (provider) => providerModelsService.getProviderModels(provider),
10
10
  };
11
11
  /**
12
12
  * Creates the application-facing provider runtime dispatcher.
@@ -20,7 +20,7 @@ export function createProviderRuntimeService(dependencyOverrides = {}) {
20
20
  const createRuntimeContext = (provider) => ({
21
21
  resolveProviderSessionId: dependencies.resolveProviderSessionId,
22
22
  resolveResumeModel: (sessionId, requestedModel) => dependencies.resolveResumeModel(provider.id, sessionId, requestedModel),
23
- getProviderModels: async () => (await dependencies.getProviderModels(provider.id)).models,
23
+ getProviderModels: async () => dependencies.getProviderModels(provider.id),
24
24
  normalizeMessage: (raw, sessionId) => provider.sessions.normalizeMessage(raw, sessionId),
25
25
  async isProviderInstalled() {
26
26
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"provider-runtime.service.js","sourceRoot":"","sources":["../../../../../server/modules/providers/services/provider-runtime.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yDAAyD,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AAuBnF,MAAM,mBAAmB,GAAuC;IAC9D,aAAa,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE;IACrD,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,gBAAgB,CAAC,eAAe,CAAC,QAAQ,CAAC;IACzE,wBAAwB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,wBAAwB,CAAC,SAAS,CAAC;IAC5F,kBAAkB,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,CAC1D,qBAAqB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC;IAC/E,iBAAiB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC;CACrG,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAC1C,sBAAmE,EAAE;IAErE,MAAM,YAAY,GAAG,EAAE,GAAG,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAExE,MAAM,oBAAoB,GAAG,CAC3B,QAAmB,EACK,EAAE,CAAC,CAAC;QAC5B,wBAAwB,EAAE,YAAY,CAAC,wBAAwB;QAC/D,kBAAkB,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,CAChD,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC;QACzE,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAC5B,CAAC,MAAM,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;QAC5D,gBAAgB,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC;QACxF,KAAK,CAAC,mBAAmB;YACvB,IAAI,CAAC;gBACH,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC;YACrD,CAAC;YAAC,MAAM,CAAC;gBACP,yEAAyE;gBACzE,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,CACV,YAAyB,EACzB,OAAe,EACf,OAAkB,EAClB,MAA6B,EACX,EAAE;QACpB,MAAM,QAAQ,GAAG,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAC5D,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxF,CAAC,CAAC;IAEF,OAAO;QACL,GAAG;QAEH,UAAU,CAAC,YAAoB;YAC7B,IAAI,CAAC;gBACH,OAAO,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;YACrE,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,SAAS,CAAC,QAAqB;YAC7B,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/E,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,YAAyB,EAAE,SAAiB;YACtD,OAAO,OAAO,CAAC,MAAM,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5F,CAAC;QAED,mBAAmB,CAAC,SAAiB,EAAE,QAAoC;YACzE,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,aAAa,EAAE,EAAE,CAAC;gBACpD,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,6BAA6B,CAAC,SAAiB;YAC7C,OAAO,YAAY,CAAC,aAAa,EAAE,CAAC,OAAO,CACzC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,CACzE,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,4BAA4B,EAAE,CAAC"}
1
+ {"version":3,"file":"provider-runtime.service.js","sourceRoot":"","sources":["../../../../../server/modules/providers/services/provider-runtime.service.ts"],"names":[],"mappings":"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"}
@@ -551,11 +551,18 @@ async function parseClaudeSessionMatches(session, runtime) {
551
551
  const targetSessions = matchedSessionsForFile.length > 0
552
552
  ? matchedSessionsForFile
553
553
  : [session];
554
- const targetSessionIds = new Set(targetSessions.map((candidate) => candidate.session_id));
554
+ // Transcript lines are tagged with the provider session id (e.g. Claude's own
555
+ // conversation UUID), which is not necessarily the app-facing `session_id`.
556
+ // Match and attribute by the provider id, but map results back to the
557
+ // internal `session_id` the rest of the app uses to identify sessions.
558
+ const providerToInternalId = new Map();
555
559
  const customNameBySessionId = new Map();
556
560
  for (const candidate of targetSessions) {
557
- customNameBySessionId.set(candidate.session_id, candidate.custom_name ?? null);
561
+ const providerId = candidate.provider_session_id || candidate.session_id;
562
+ providerToInternalId.set(providerId, candidate.session_id);
563
+ customNameBySessionId.set(providerId, candidate.custom_name ?? null);
558
564
  }
565
+ const targetSessionIds = new Set(providerToInternalId.keys());
559
566
  const sessionStateById = new Map();
560
567
  const getSessionState = (sessionId) => {
561
568
  if (!sessionStateById.has(sessionId)) {
@@ -655,8 +662,9 @@ async function parseClaudeSessionMatches(session, runtime) {
655
662
  if (state.matches.length === 0) {
656
663
  continue;
657
664
  }
658
- fileResults.set(sessionId, {
659
- sessionId,
665
+ const internalSessionId = providerToInternalId.get(sessionId) ?? sessionId;
666
+ fileResults.set(internalSessionId, {
667
+ sessionId: internalSessionId,
660
668
  provider: 'claude',
661
669
  sessionSummary: toSummaryText(customNameBySessionId.get(sessionId) ?? null, state.resolvedSummary || state.fallbackUserText || state.fallbackAssistantText, 'New Session'),
662
670
  matches: state.matches,