@dexto/agent-management 1.6.7 → 1.6.9

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/dist/index.cjs CHANGED
@@ -26,6 +26,9 @@ __export(index_exports, {
26
26
  ConfigErrorCode: () => import_config.ConfigErrorCode,
27
27
  CustomModelSchema: () => import_custom_models.CustomModelSchema,
28
28
  DEFAULT_MARKETPLACES: () => import_plugins.DEFAULT_MARKETPLACES,
29
+ MODEL_PICKER_FAVORITES_LIMIT: () => import_models.MODEL_PICKER_FAVORITES_LIMIT,
30
+ MODEL_PICKER_RECENTS_LIMIT: () => import_models.MODEL_PICKER_RECENTS_LIMIT,
31
+ MODEL_PICKER_STATE_VERSION: () => import_models.MODEL_PICKER_STATE_VERSION,
29
32
  MarketplaceError: () => import_plugins.MarketplaceError,
30
33
  MarketplaceErrorCode: () => import_plugins.MarketplaceErrorCode,
31
34
  PROVIDER_API_KEY_MAP: () => import_api_key_resolver.PROVIDER_API_KEY_MAP,
@@ -87,6 +90,7 @@ __export(index_exports, {
87
90
  getModelDirectory: () => import_models.getModelDirectory,
88
91
  getModelFilePath: () => import_models.getModelFilePath,
89
92
  getModelFileSize: () => import_models.getModelFileSize,
93
+ getModelPickerStatePath: () => import_models.getModelPickerStatePath,
90
94
  getModelStatePath: () => import_models.getModelStatePath,
91
95
  getModelTempDirectory: () => import_models.getModelTempDirectory,
92
96
  getModelsDirectory: () => import_models.getModelsDirectory,
@@ -122,9 +126,12 @@ __export(index_exports, {
122
126
  loadDextoInstalledPlugins: () => import_plugins.loadDextoInstalledPlugins,
123
127
  loadGlobalPreferences: () => import_loader.loadGlobalPreferences,
124
128
  loadImageRegistry: () => import_image_store.loadImageRegistry,
129
+ loadModelPickerState: () => import_models.loadModelPickerState,
125
130
  loadModelState: () => import_models.loadModelState,
126
131
  modelFileExists: () => import_models.modelFileExists,
127
132
  parseImageSpecifier: () => import_image_store.parseImageSpecifier,
133
+ pruneModelPickerState: () => import_models.pruneModelPickerState,
134
+ recordRecentModel: () => import_models.recordRecentModel,
128
135
  registerManualModel: () => import_models.registerManualModel,
129
136
  reloadAgentConfigFromFile: () => import_config.reloadAgentConfigFromFile,
130
137
  removeFromDownloadQueue: () => import_models.removeFromDownloadQueue,
@@ -144,11 +151,15 @@ __export(index_exports, {
144
151
  saveDextoInstalledPlugins: () => import_plugins.saveDextoInstalledPlugins,
145
152
  saveGlobalPreferences: () => import_loader.saveGlobalPreferences,
146
153
  saveImageRegistry: () => import_image_store.saveImageRegistry,
154
+ saveModelPickerState: () => import_models.saveModelPickerState,
147
155
  saveModelState: () => import_models.saveModelState,
148
156
  saveProviderApiKey: () => import_api_key_store.saveProviderApiKey,
149
157
  setActiveImageVersion: () => import_image_store.setActiveImageVersion,
150
158
  setActiveModel: () => import_models.setActiveModel,
159
+ setFavoriteModels: () => import_models.setFavoriteModels,
151
160
  syncStateWithFilesystem: () => import_models.syncStateWithFilesystem,
161
+ toModelPickerKey: () => import_models.toModelPickerKey,
162
+ toggleFavoriteModel: () => import_models.toggleFavoriteModel,
152
163
  tryLoadManifest: () => import_plugins.tryLoadManifest,
153
164
  uninstallAgent: () => import_installation.uninstallAgent,
154
165
  uninstallPlugin: () => import_plugins.uninstallPlugin,
@@ -205,6 +216,9 @@ var import_plugins = require("./plugins/index.js");
205
216
  ConfigErrorCode,
206
217
  CustomModelSchema,
207
218
  DEFAULT_MARKETPLACES,
219
+ MODEL_PICKER_FAVORITES_LIMIT,
220
+ MODEL_PICKER_RECENTS_LIMIT,
221
+ MODEL_PICKER_STATE_VERSION,
208
222
  MarketplaceError,
209
223
  MarketplaceErrorCode,
210
224
  PROVIDER_API_KEY_MAP,
@@ -266,6 +280,7 @@ var import_plugins = require("./plugins/index.js");
266
280
  getModelDirectory,
267
281
  getModelFilePath,
268
282
  getModelFileSize,
283
+ getModelPickerStatePath,
269
284
  getModelStatePath,
270
285
  getModelTempDirectory,
271
286
  getModelsDirectory,
@@ -301,9 +316,12 @@ var import_plugins = require("./plugins/index.js");
301
316
  loadDextoInstalledPlugins,
302
317
  loadGlobalPreferences,
303
318
  loadImageRegistry,
319
+ loadModelPickerState,
304
320
  loadModelState,
305
321
  modelFileExists,
306
322
  parseImageSpecifier,
323
+ pruneModelPickerState,
324
+ recordRecentModel,
307
325
  registerManualModel,
308
326
  reloadAgentConfigFromFile,
309
327
  removeFromDownloadQueue,
@@ -323,11 +341,15 @@ var import_plugins = require("./plugins/index.js");
323
341
  saveDextoInstalledPlugins,
324
342
  saveGlobalPreferences,
325
343
  saveImageRegistry,
344
+ saveModelPickerState,
326
345
  saveModelState,
327
346
  saveProviderApiKey,
328
347
  setActiveImageVersion,
329
348
  setActiveModel,
349
+ setFavoriteModels,
330
350
  syncStateWithFilesystem,
351
+ toModelPickerKey,
352
+ toggleFavoriteModel,
331
353
  tryLoadManifest,
332
354
  uninstallAgent,
333
355
  uninstallPlugin,
package/dist/index.d.ts CHANGED
@@ -24,7 +24,7 @@ export { updateAgentConfigFile, reloadAgentConfigFromFile, loadAgentConfig, enri
24
24
  export { saveProviderApiKey, getProviderKeyStatus, listProviderKeyStatus, determineApiKeyStorage, SHARED_API_KEY_PROVIDERS, type ApiKeyStorageStrategy, } from './utils/api-key-store.js';
25
25
  export { resolveApiKeyForProvider, getPrimaryApiKeyEnvVar, PROVIDER_API_KEY_MAP, } from './utils/api-key-resolver.js';
26
26
  export { loadCustomModels, saveCustomModel, deleteCustomModel, getCustomModel, getCustomModelsPath, CustomModelSchema, CUSTOM_MODEL_PROVIDERS, type CustomModel, type CustomModelProvider, } from './models/custom-models.js';
27
- export { getModelsDirectory, getModelFilePath, getModelDirectory, getModelStatePath, getModelTempDirectory, ensureModelsDirectory, ensureModelDirectory, modelFileExists, getModelFileSize, deleteModelDirectory, listModelDirectories, getModelsDiskUsage, formatSize, type ModelSource, type InstalledModel, type ModelState, loadModelState, saveModelState, addInstalledModel, removeInstalledModel, getInstalledModel, getAllInstalledModels, isModelInstalled, updateModelLastUsed, setActiveModel, getActiveModelId, getActiveModel, addToDownloadQueue, removeFromDownloadQueue, getDownloadQueue, syncStateWithFilesystem, getTotalInstalledSize, getInstalledModelCount, registerManualModel, } from './models/index.js';
27
+ export { getModelsDirectory, getModelFilePath, getModelDirectory, getModelStatePath, getModelPickerStatePath, getModelTempDirectory, ensureModelsDirectory, ensureModelDirectory, modelFileExists, getModelFileSize, deleteModelDirectory, listModelDirectories, getModelsDiskUsage, formatSize, type ModelSource, type InstalledModel, type ModelState, loadModelState, saveModelState, addInstalledModel, removeInstalledModel, getInstalledModel, getAllInstalledModels, isModelInstalled, updateModelLastUsed, setActiveModel, getActiveModelId, getActiveModel, addToDownloadQueue, removeFromDownloadQueue, getDownloadQueue, syncStateWithFilesystem, getTotalInstalledSize, getInstalledModelCount, registerManualModel, MODEL_PICKER_STATE_VERSION, MODEL_PICKER_RECENTS_LIMIT, MODEL_PICKER_FAVORITES_LIMIT, toModelPickerKey, pruneModelPickerState, loadModelPickerState, saveModelPickerState, recordRecentModel, toggleFavoriteModel, setFavoriteModels, type ModelPickerModel, type ModelPickerEntry, type ModelPickerState, type SetFavoriteModelsInput, } from './models/index.js';
28
28
  export * from './runtime/index.js';
29
29
  export * from './tool-factories/agent-spawner/index.js';
30
30
  export * from './tool-factories/creator-tools/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -112,6 +112,7 @@ import {
112
112
  getModelFilePath,
113
113
  getModelDirectory,
114
114
  getModelStatePath,
115
+ getModelPickerStatePath,
115
116
  getModelTempDirectory,
116
117
  ensureModelsDirectory,
117
118
  ensureModelDirectory,
@@ -138,7 +139,17 @@ import {
138
139
  syncStateWithFilesystem,
139
140
  getTotalInstalledSize,
140
141
  getInstalledModelCount,
141
- registerManualModel
142
+ registerManualModel,
143
+ MODEL_PICKER_STATE_VERSION,
144
+ MODEL_PICKER_RECENTS_LIMIT,
145
+ MODEL_PICKER_FAVORITES_LIMIT,
146
+ toModelPickerKey,
147
+ pruneModelPickerState,
148
+ loadModelPickerState,
149
+ saveModelPickerState,
150
+ recordRecentModel,
151
+ toggleFavoriteModel,
152
+ setFavoriteModels
142
153
  } from "./models/index.js";
143
154
  export * from "./runtime/index.js";
144
155
  export * from "./tool-factories/agent-spawner/index.js";
@@ -180,6 +191,9 @@ export {
180
191
  ConfigErrorCode,
181
192
  CustomModelSchema,
182
193
  DEFAULT_MARKETPLACES,
194
+ MODEL_PICKER_FAVORITES_LIMIT,
195
+ MODEL_PICKER_RECENTS_LIMIT,
196
+ MODEL_PICKER_STATE_VERSION,
183
197
  MarketplaceError,
184
198
  MarketplaceErrorCode,
185
199
  PROVIDER_API_KEY_MAP,
@@ -241,6 +255,7 @@ export {
241
255
  getModelDirectory,
242
256
  getModelFilePath,
243
257
  getModelFileSize,
258
+ getModelPickerStatePath,
244
259
  getModelStatePath,
245
260
  getModelTempDirectory,
246
261
  getModelsDirectory,
@@ -276,9 +291,12 @@ export {
276
291
  loadDextoInstalledPlugins,
277
292
  loadGlobalPreferences,
278
293
  loadImageRegistry,
294
+ loadModelPickerState,
279
295
  loadModelState,
280
296
  modelFileExists,
281
297
  parseImageSpecifier,
298
+ pruneModelPickerState,
299
+ recordRecentModel,
282
300
  registerManualModel,
283
301
  reloadAgentConfigFromFile,
284
302
  removeFromDownloadQueue,
@@ -298,11 +316,15 @@ export {
298
316
  saveDextoInstalledPlugins,
299
317
  saveGlobalPreferences,
300
318
  saveImageRegistry,
319
+ saveModelPickerState,
301
320
  saveModelState,
302
321
  saveProviderApiKey,
303
322
  setActiveImageVersion,
304
323
  setActiveModel,
324
+ setFavoriteModels,
305
325
  syncStateWithFilesystem,
326
+ toModelPickerKey,
327
+ toggleFavoriteModel,
306
328
  tryLoadManifest,
307
329
  uninstallAgent,
308
330
  uninstallPlugin,
@@ -18,6 +18,9 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var models_exports = {};
20
20
  __export(models_exports, {
21
+ MODEL_PICKER_FAVORITES_LIMIT: () => import_model_picker_state.MODEL_PICKER_FAVORITES_LIMIT,
22
+ MODEL_PICKER_RECENTS_LIMIT: () => import_model_picker_state.MODEL_PICKER_RECENTS_LIMIT,
23
+ MODEL_PICKER_STATE_VERSION: () => import_model_picker_state.MODEL_PICKER_STATE_VERSION,
21
24
  addInstalledModel: () => import_state_manager.addInstalledModel,
22
25
  addToDownloadQueue: () => import_state_manager.addToDownloadQueue,
23
26
  deleteModelDirectory: () => import_path_resolver.deleteModelDirectory,
@@ -33,6 +36,7 @@ __export(models_exports, {
33
36
  getModelDirectory: () => import_path_resolver.getModelDirectory,
34
37
  getModelFilePath: () => import_path_resolver.getModelFilePath,
35
38
  getModelFileSize: () => import_path_resolver.getModelFileSize,
39
+ getModelPickerStatePath: () => import_path_resolver.getModelPickerStatePath,
36
40
  getModelStatePath: () => import_path_resolver.getModelStatePath,
37
41
  getModelTempDirectory: () => import_path_resolver.getModelTempDirectory,
38
42
  getModelsDirectory: () => import_path_resolver.getModelsDirectory,
@@ -40,21 +44,32 @@ __export(models_exports, {
40
44
  getTotalInstalledSize: () => import_state_manager.getTotalInstalledSize,
41
45
  isModelInstalled: () => import_state_manager.isModelInstalled,
42
46
  listModelDirectories: () => import_path_resolver.listModelDirectories,
47
+ loadModelPickerState: () => import_model_picker_state.loadModelPickerState,
43
48
  loadModelState: () => import_state_manager.loadModelState,
44
49
  modelFileExists: () => import_path_resolver.modelFileExists,
50
+ pruneModelPickerState: () => import_model_picker_state.pruneModelPickerState,
51
+ recordRecentModel: () => import_model_picker_state.recordRecentModel,
45
52
  registerManualModel: () => import_state_manager.registerManualModel,
46
53
  removeFromDownloadQueue: () => import_state_manager.removeFromDownloadQueue,
47
54
  removeInstalledModel: () => import_state_manager.removeInstalledModel,
55
+ saveModelPickerState: () => import_model_picker_state.saveModelPickerState,
48
56
  saveModelState: () => import_state_manager.saveModelState,
49
57
  setActiveModel: () => import_state_manager.setActiveModel,
58
+ setFavoriteModels: () => import_model_picker_state.setFavoriteModels,
50
59
  syncStateWithFilesystem: () => import_state_manager.syncStateWithFilesystem,
60
+ toModelPickerKey: () => import_model_picker_state.toModelPickerKey,
61
+ toggleFavoriteModel: () => import_model_picker_state.toggleFavoriteModel,
51
62
  updateModelLastUsed: () => import_state_manager.updateModelLastUsed
52
63
  });
53
64
  module.exports = __toCommonJS(models_exports);
54
65
  var import_path_resolver = require("./path-resolver.js");
55
66
  var import_state_manager = require("./state-manager.js");
67
+ var import_model_picker_state = require("./model-picker-state.js");
56
68
  // Annotate the CommonJS export names for ESM import in node:
57
69
  0 && (module.exports = {
70
+ MODEL_PICKER_FAVORITES_LIMIT,
71
+ MODEL_PICKER_RECENTS_LIMIT,
72
+ MODEL_PICKER_STATE_VERSION,
58
73
  addInstalledModel,
59
74
  addToDownloadQueue,
60
75
  deleteModelDirectory,
@@ -70,6 +85,7 @@ var import_state_manager = require("./state-manager.js");
70
85
  getModelDirectory,
71
86
  getModelFilePath,
72
87
  getModelFileSize,
88
+ getModelPickerStatePath,
73
89
  getModelStatePath,
74
90
  getModelTempDirectory,
75
91
  getModelsDirectory,
@@ -77,13 +93,20 @@ var import_state_manager = require("./state-manager.js");
77
93
  getTotalInstalledSize,
78
94
  isModelInstalled,
79
95
  listModelDirectories,
96
+ loadModelPickerState,
80
97
  loadModelState,
81
98
  modelFileExists,
99
+ pruneModelPickerState,
100
+ recordRecentModel,
82
101
  registerManualModel,
83
102
  removeFromDownloadQueue,
84
103
  removeInstalledModel,
104
+ saveModelPickerState,
85
105
  saveModelState,
86
106
  setActiveModel,
107
+ setFavoriteModels,
87
108
  syncStateWithFilesystem,
109
+ toModelPickerKey,
110
+ toggleFavoriteModel,
88
111
  updateModelLastUsed
89
112
  });
@@ -6,6 +6,7 @@
6
6
  * - State tracking for installed models
7
7
  * - Download queue management
8
8
  */
9
- export { getModelsDirectory, getModelFilePath, getModelDirectory, getModelStatePath, getModelTempDirectory, ensureModelsDirectory, ensureModelDirectory, modelFileExists, getModelFileSize, deleteModelDirectory, listModelDirectories, getModelsDiskUsage, formatSize, } from './path-resolver.js';
9
+ export { getModelsDirectory, getModelFilePath, getModelDirectory, getModelStatePath, getModelPickerStatePath, getModelTempDirectory, ensureModelsDirectory, ensureModelDirectory, modelFileExists, getModelFileSize, deleteModelDirectory, listModelDirectories, getModelsDiskUsage, formatSize, } from './path-resolver.js';
10
10
  export { type ModelSource, type InstalledModel, type ModelState, loadModelState, saveModelState, addInstalledModel, removeInstalledModel, getInstalledModel, getAllInstalledModels, isModelInstalled, updateModelLastUsed, setActiveModel, getActiveModelId, getActiveModel, addToDownloadQueue, removeFromDownloadQueue, getDownloadQueue, syncStateWithFilesystem, getTotalInstalledSize, getInstalledModelCount, registerManualModel, } from './state-manager.js';
11
+ export { MODEL_PICKER_STATE_VERSION, MODEL_PICKER_RECENTS_LIMIT, MODEL_PICKER_FAVORITES_LIMIT, toModelPickerKey, pruneModelPickerState, loadModelPickerState, saveModelPickerState, recordRecentModel, toggleFavoriteModel, setFavoriteModels, type ModelPickerModel, type ModelPickerEntry, type ModelPickerState, type SetFavoriteModelsInput, } from './model-picker-state.js';
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACH,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,GACb,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACtB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACH,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,GACb,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACH,0BAA0B,EAC1B,0BAA0B,EAC1B,4BAA4B,EAC5B,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,GAC9B,MAAM,yBAAyB,CAAC"}
@@ -3,6 +3,7 @@ import {
3
3
  getModelFilePath,
4
4
  getModelDirectory,
5
5
  getModelStatePath,
6
+ getModelPickerStatePath,
6
7
  getModelTempDirectory,
7
8
  ensureModelsDirectory,
8
9
  ensureModelDirectory,
@@ -33,7 +34,22 @@ import {
33
34
  getInstalledModelCount,
34
35
  registerManualModel
35
36
  } from "./state-manager.js";
37
+ import {
38
+ MODEL_PICKER_STATE_VERSION,
39
+ MODEL_PICKER_RECENTS_LIMIT,
40
+ MODEL_PICKER_FAVORITES_LIMIT,
41
+ toModelPickerKey,
42
+ pruneModelPickerState,
43
+ loadModelPickerState,
44
+ saveModelPickerState,
45
+ recordRecentModel,
46
+ toggleFavoriteModel,
47
+ setFavoriteModels
48
+ } from "./model-picker-state.js";
36
49
  export {
50
+ MODEL_PICKER_FAVORITES_LIMIT,
51
+ MODEL_PICKER_RECENTS_LIMIT,
52
+ MODEL_PICKER_STATE_VERSION,
37
53
  addInstalledModel,
38
54
  addToDownloadQueue,
39
55
  deleteModelDirectory,
@@ -49,6 +65,7 @@ export {
49
65
  getModelDirectory,
50
66
  getModelFilePath,
51
67
  getModelFileSize,
68
+ getModelPickerStatePath,
52
69
  getModelStatePath,
53
70
  getModelTempDirectory,
54
71
  getModelsDirectory,
@@ -56,13 +73,20 @@ export {
56
73
  getTotalInstalledSize,
57
74
  isModelInstalled,
58
75
  listModelDirectories,
76
+ loadModelPickerState,
59
77
  loadModelState,
60
78
  modelFileExists,
79
+ pruneModelPickerState,
80
+ recordRecentModel,
61
81
  registerManualModel,
62
82
  removeFromDownloadQueue,
63
83
  removeInstalledModel,
84
+ saveModelPickerState,
64
85
  saveModelState,
65
86
  setActiveModel,
87
+ setFavoriteModels,
66
88
  syncStateWithFilesystem,
89
+ toModelPickerKey,
90
+ toggleFavoriteModel,
67
91
  updateModelLastUsed
68
92
  };
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var model_picker_state_exports = {};
30
+ __export(model_picker_state_exports, {
31
+ MODEL_PICKER_FAVORITES_LIMIT: () => MODEL_PICKER_FAVORITES_LIMIT,
32
+ MODEL_PICKER_RECENTS_LIMIT: () => MODEL_PICKER_RECENTS_LIMIT,
33
+ MODEL_PICKER_STATE_VERSION: () => MODEL_PICKER_STATE_VERSION,
34
+ loadModelPickerState: () => loadModelPickerState,
35
+ pruneModelPickerState: () => pruneModelPickerState,
36
+ recordRecentModel: () => recordRecentModel,
37
+ saveModelPickerState: () => saveModelPickerState,
38
+ setFavoriteModels: () => setFavoriteModels,
39
+ toModelPickerKey: () => toModelPickerKey,
40
+ toggleFavoriteModel: () => toggleFavoriteModel
41
+ });
42
+ module.exports = __toCommonJS(model_picker_state_exports);
43
+ var import_fs = require("fs");
44
+ var import_path = __toESM(require("path"), 1);
45
+ var import_zod = require("zod");
46
+ var import_core = require("@dexto/core");
47
+ var import_path_resolver = require("./path-resolver.js");
48
+ const MODEL_PICKER_STATE_VERSION = 1;
49
+ const MODEL_PICKER_RECENTS_LIMIT = 10;
50
+ const MODEL_PICKER_FAVORITES_LIMIT = 100;
51
+ const ModelPickerModelSchema = import_zod.z.object({
52
+ provider: import_zod.z.enum(import_core.LLM_PROVIDERS),
53
+ model: import_zod.z.string().trim().min(1)
54
+ }).strict();
55
+ const ModelPickerEntrySchema = ModelPickerModelSchema.extend({
56
+ updatedAt: import_zod.z.string().datetime()
57
+ }).strict();
58
+ const ModelPickerStateSchema = import_zod.z.object({
59
+ version: import_zod.z.literal(MODEL_PICKER_STATE_VERSION),
60
+ recents: import_zod.z.array(ModelPickerEntrySchema).default([]),
61
+ favorites: import_zod.z.array(ModelPickerEntrySchema).default([])
62
+ }).strict();
63
+ const SetFavoriteModelsInputSchema = import_zod.z.object({
64
+ favorites: import_zod.z.array(ModelPickerModelSchema)
65
+ }).strict();
66
+ function createDefaultState() {
67
+ return {
68
+ version: MODEL_PICKER_STATE_VERSION,
69
+ recents: [],
70
+ favorites: []
71
+ };
72
+ }
73
+ function normalizeEntries(input) {
74
+ const normalized = [];
75
+ const seen = /* @__PURE__ */ new Set();
76
+ for (const entry of input.entries) {
77
+ const parsed = ModelPickerEntrySchema.safeParse(entry);
78
+ if (!parsed.success) {
79
+ continue;
80
+ }
81
+ const key = toModelPickerKey(parsed.data);
82
+ if (seen.has(key)) {
83
+ continue;
84
+ }
85
+ seen.add(key);
86
+ normalized.push(parsed.data);
87
+ if (normalized.length >= input.limit) {
88
+ break;
89
+ }
90
+ }
91
+ return normalized;
92
+ }
93
+ function normalizeState(input) {
94
+ return {
95
+ version: MODEL_PICKER_STATE_VERSION,
96
+ recents: normalizeEntries({
97
+ entries: input.state.recents,
98
+ limit: MODEL_PICKER_RECENTS_LIMIT
99
+ }),
100
+ favorites: normalizeEntries({
101
+ entries: input.state.favorites,
102
+ limit: MODEL_PICKER_FAVORITES_LIMIT
103
+ })
104
+ };
105
+ }
106
+ function createEntry(input) {
107
+ return {
108
+ provider: input.model.provider,
109
+ model: input.model.model,
110
+ updatedAt: input.updatedAt
111
+ };
112
+ }
113
+ function toModelPickerKey(input) {
114
+ return `${input.provider}|${input.model}`;
115
+ }
116
+ function pruneModelPickerState(input) {
117
+ const recents = input.state.recents.filter(
118
+ (entry) => input.allowedKeys.has(toModelPickerKey(entry))
119
+ );
120
+ const favorites = input.state.favorites.filter(
121
+ (entry) => input.allowedKeys.has(toModelPickerKey(entry))
122
+ );
123
+ return normalizeState({
124
+ state: {
125
+ version: MODEL_PICKER_STATE_VERSION,
126
+ recents,
127
+ favorites
128
+ }
129
+ });
130
+ }
131
+ async function loadModelPickerState() {
132
+ const filePath = (0, import_path_resolver.getModelPickerStatePath)();
133
+ try {
134
+ const raw = await import_fs.promises.readFile(filePath, "utf-8");
135
+ const parsed = ModelPickerStateSchema.safeParse(JSON.parse(raw));
136
+ if (!parsed.success) {
137
+ return createDefaultState();
138
+ }
139
+ return normalizeState({ state: parsed.data });
140
+ } catch (error) {
141
+ if (error.code === "ENOENT") {
142
+ return createDefaultState();
143
+ }
144
+ return createDefaultState();
145
+ }
146
+ }
147
+ async function saveModelPickerState(state) {
148
+ const parsed = ModelPickerStateSchema.safeParse(state);
149
+ if (!parsed.success) {
150
+ throw new Error(
151
+ `Invalid model picker state: ${parsed.error.issues.map((issue) => issue.message).join(", ")}`
152
+ );
153
+ }
154
+ const filePath = (0, import_path_resolver.getModelPickerStatePath)();
155
+ const normalized = normalizeState({ state: parsed.data });
156
+ await import_fs.promises.mkdir(import_path.default.dirname(filePath), { recursive: true });
157
+ await import_fs.promises.writeFile(filePath, JSON.stringify(normalized, null, 2), "utf-8");
158
+ }
159
+ async function recordRecentModel(model) {
160
+ const parsedModel = ModelPickerModelSchema.parse(model);
161
+ const now = (/* @__PURE__ */ new Date()).toISOString();
162
+ const state = await loadModelPickerState();
163
+ const recents = normalizeEntries({
164
+ entries: [createEntry({ model: parsedModel, updatedAt: now }), ...state.recents],
165
+ limit: MODEL_PICKER_RECENTS_LIMIT
166
+ });
167
+ const nextState = {
168
+ version: MODEL_PICKER_STATE_VERSION,
169
+ recents,
170
+ favorites: state.favorites
171
+ };
172
+ await saveModelPickerState(nextState);
173
+ return nextState;
174
+ }
175
+ async function toggleFavoriteModel(model) {
176
+ const parsedModel = ModelPickerModelSchema.parse(model);
177
+ const state = await loadModelPickerState();
178
+ const key = toModelPickerKey(parsedModel);
179
+ const exists = state.favorites.some((entry) => toModelPickerKey(entry) === key);
180
+ const favorites = exists ? state.favorites.filter((entry) => toModelPickerKey(entry) !== key) : normalizeEntries({
181
+ entries: [
182
+ createEntry({
183
+ model: parsedModel,
184
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
185
+ }),
186
+ ...state.favorites
187
+ ],
188
+ limit: MODEL_PICKER_FAVORITES_LIMIT
189
+ });
190
+ const nextState = {
191
+ version: MODEL_PICKER_STATE_VERSION,
192
+ recents: state.recents,
193
+ favorites
194
+ };
195
+ await saveModelPickerState(nextState);
196
+ return {
197
+ state: nextState,
198
+ isFavorite: !exists
199
+ };
200
+ }
201
+ async function setFavoriteModels(input) {
202
+ const parsed = SetFavoriteModelsInputSchema.parse(input);
203
+ const state = await loadModelPickerState();
204
+ const now = (/* @__PURE__ */ new Date()).toISOString();
205
+ const favorites = normalizeEntries({
206
+ entries: parsed.favorites.map(
207
+ (favorite) => createEntry({ model: favorite, updatedAt: now })
208
+ ),
209
+ limit: MODEL_PICKER_FAVORITES_LIMIT
210
+ });
211
+ const nextState = {
212
+ version: MODEL_PICKER_STATE_VERSION,
213
+ recents: state.recents,
214
+ favorites
215
+ };
216
+ await saveModelPickerState(nextState);
217
+ return nextState;
218
+ }
219
+ // Annotate the CommonJS export names for ESM import in node:
220
+ 0 && (module.exports = {
221
+ MODEL_PICKER_FAVORITES_LIMIT,
222
+ MODEL_PICKER_RECENTS_LIMIT,
223
+ MODEL_PICKER_STATE_VERSION,
224
+ loadModelPickerState,
225
+ pruneModelPickerState,
226
+ recordRecentModel,
227
+ saveModelPickerState,
228
+ setFavoriteModels,
229
+ toModelPickerKey,
230
+ toggleFavoriteModel
231
+ });
@@ -0,0 +1,128 @@
1
+ import { z } from 'zod';
2
+ import { type LLMProvider } from '@dexto/core';
3
+ export declare const MODEL_PICKER_STATE_VERSION = 1;
4
+ export declare const MODEL_PICKER_RECENTS_LIMIT = 10;
5
+ export declare const MODEL_PICKER_FAVORITES_LIMIT = 100;
6
+ declare const ModelPickerModelSchema: z.ZodObject<{
7
+ provider: z.ZodEnum<["openai", "openai-compatible", "anthropic", "google", "groq", "xai", "cohere", "minimax", "glm", "openrouter", "litellm", "glama", "vertex", "bedrock", "local", "ollama", "dexto-nova"]>;
8
+ model: z.ZodString;
9
+ }, "strict", z.ZodTypeAny, {
10
+ provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | "minimax" | "glm" | "openrouter" | "litellm" | "glama" | "vertex" | "bedrock" | "local" | "ollama" | "dexto-nova";
11
+ model: string;
12
+ }, {
13
+ provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | "minimax" | "glm" | "openrouter" | "litellm" | "glama" | "vertex" | "bedrock" | "local" | "ollama" | "dexto-nova";
14
+ model: string;
15
+ }>;
16
+ declare const ModelPickerEntrySchema: z.ZodObject<{
17
+ provider: z.ZodEnum<["openai", "openai-compatible", "anthropic", "google", "groq", "xai", "cohere", "minimax", "glm", "openrouter", "litellm", "glama", "vertex", "bedrock", "local", "ollama", "dexto-nova"]>;
18
+ model: z.ZodString;
19
+ } & {
20
+ updatedAt: z.ZodString;
21
+ }, "strict", z.ZodTypeAny, {
22
+ provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | "minimax" | "glm" | "openrouter" | "litellm" | "glama" | "vertex" | "bedrock" | "local" | "ollama" | "dexto-nova";
23
+ model: string;
24
+ updatedAt: string;
25
+ }, {
26
+ provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | "minimax" | "glm" | "openrouter" | "litellm" | "glama" | "vertex" | "bedrock" | "local" | "ollama" | "dexto-nova";
27
+ model: string;
28
+ updatedAt: string;
29
+ }>;
30
+ declare const ModelPickerStateSchema: z.ZodObject<{
31
+ version: z.ZodLiteral<1>;
32
+ recents: z.ZodDefault<z.ZodArray<z.ZodObject<{
33
+ provider: z.ZodEnum<["openai", "openai-compatible", "anthropic", "google", "groq", "xai", "cohere", "minimax", "glm", "openrouter", "litellm", "glama", "vertex", "bedrock", "local", "ollama", "dexto-nova"]>;
34
+ model: z.ZodString;
35
+ } & {
36
+ updatedAt: z.ZodString;
37
+ }, "strict", z.ZodTypeAny, {
38
+ provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | "minimax" | "glm" | "openrouter" | "litellm" | "glama" | "vertex" | "bedrock" | "local" | "ollama" | "dexto-nova";
39
+ model: string;
40
+ updatedAt: string;
41
+ }, {
42
+ provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | "minimax" | "glm" | "openrouter" | "litellm" | "glama" | "vertex" | "bedrock" | "local" | "ollama" | "dexto-nova";
43
+ model: string;
44
+ updatedAt: string;
45
+ }>, "many">>;
46
+ favorites: z.ZodDefault<z.ZodArray<z.ZodObject<{
47
+ provider: z.ZodEnum<["openai", "openai-compatible", "anthropic", "google", "groq", "xai", "cohere", "minimax", "glm", "openrouter", "litellm", "glama", "vertex", "bedrock", "local", "ollama", "dexto-nova"]>;
48
+ model: z.ZodString;
49
+ } & {
50
+ updatedAt: z.ZodString;
51
+ }, "strict", z.ZodTypeAny, {
52
+ provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | "minimax" | "glm" | "openrouter" | "litellm" | "glama" | "vertex" | "bedrock" | "local" | "ollama" | "dexto-nova";
53
+ model: string;
54
+ updatedAt: string;
55
+ }, {
56
+ provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | "minimax" | "glm" | "openrouter" | "litellm" | "glama" | "vertex" | "bedrock" | "local" | "ollama" | "dexto-nova";
57
+ model: string;
58
+ updatedAt: string;
59
+ }>, "many">>;
60
+ }, "strict", z.ZodTypeAny, {
61
+ version: 1;
62
+ recents: {
63
+ provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | "minimax" | "glm" | "openrouter" | "litellm" | "glama" | "vertex" | "bedrock" | "local" | "ollama" | "dexto-nova";
64
+ model: string;
65
+ updatedAt: string;
66
+ }[];
67
+ favorites: {
68
+ provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | "minimax" | "glm" | "openrouter" | "litellm" | "glama" | "vertex" | "bedrock" | "local" | "ollama" | "dexto-nova";
69
+ model: string;
70
+ updatedAt: string;
71
+ }[];
72
+ }, {
73
+ version: 1;
74
+ recents?: {
75
+ provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | "minimax" | "glm" | "openrouter" | "litellm" | "glama" | "vertex" | "bedrock" | "local" | "ollama" | "dexto-nova";
76
+ model: string;
77
+ updatedAt: string;
78
+ }[] | undefined;
79
+ favorites?: {
80
+ provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | "minimax" | "glm" | "openrouter" | "litellm" | "glama" | "vertex" | "bedrock" | "local" | "ollama" | "dexto-nova";
81
+ model: string;
82
+ updatedAt: string;
83
+ }[] | undefined;
84
+ }>;
85
+ declare const SetFavoriteModelsInputSchema: z.ZodObject<{
86
+ favorites: z.ZodArray<z.ZodObject<{
87
+ provider: z.ZodEnum<["openai", "openai-compatible", "anthropic", "google", "groq", "xai", "cohere", "minimax", "glm", "openrouter", "litellm", "glama", "vertex", "bedrock", "local", "ollama", "dexto-nova"]>;
88
+ model: z.ZodString;
89
+ }, "strict", z.ZodTypeAny, {
90
+ provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | "minimax" | "glm" | "openrouter" | "litellm" | "glama" | "vertex" | "bedrock" | "local" | "ollama" | "dexto-nova";
91
+ model: string;
92
+ }, {
93
+ provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | "minimax" | "glm" | "openrouter" | "litellm" | "glama" | "vertex" | "bedrock" | "local" | "ollama" | "dexto-nova";
94
+ model: string;
95
+ }>, "many">;
96
+ }, "strict", z.ZodTypeAny, {
97
+ favorites: {
98
+ provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | "minimax" | "glm" | "openrouter" | "litellm" | "glama" | "vertex" | "bedrock" | "local" | "ollama" | "dexto-nova";
99
+ model: string;
100
+ }[];
101
+ }, {
102
+ favorites: {
103
+ provider: "openai" | "openai-compatible" | "anthropic" | "google" | "groq" | "xai" | "cohere" | "minimax" | "glm" | "openrouter" | "litellm" | "glama" | "vertex" | "bedrock" | "local" | "ollama" | "dexto-nova";
104
+ model: string;
105
+ }[];
106
+ }>;
107
+ export type ModelPickerModel = z.output<typeof ModelPickerModelSchema>;
108
+ export type ModelPickerEntry = z.output<typeof ModelPickerEntrySchema>;
109
+ export type ModelPickerState = z.output<typeof ModelPickerStateSchema>;
110
+ export type SetFavoriteModelsInput = z.output<typeof SetFavoriteModelsInputSchema>;
111
+ export declare function toModelPickerKey(input: {
112
+ provider: LLMProvider;
113
+ model: string;
114
+ }): string;
115
+ export declare function pruneModelPickerState(input: {
116
+ state: ModelPickerState;
117
+ allowedKeys: Set<string>;
118
+ }): ModelPickerState;
119
+ export declare function loadModelPickerState(): Promise<ModelPickerState>;
120
+ export declare function saveModelPickerState(state: ModelPickerState): Promise<void>;
121
+ export declare function recordRecentModel(model: ModelPickerModel): Promise<ModelPickerState>;
122
+ export declare function toggleFavoriteModel(model: ModelPickerModel): Promise<{
123
+ state: ModelPickerState;
124
+ isFavorite: boolean;
125
+ }>;
126
+ export declare function setFavoriteModels(input: SetFavoriteModelsInput): Promise<ModelPickerState>;
127
+ export {};
128
+ //# sourceMappingURL=model-picker-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-picker-state.d.ts","sourceRoot":"","sources":["../../src/models/model-picker-state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAG9D,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAEhD,QAAA,MAAM,sBAAsB;;;;;;;;;EAKf,CAAC;AAEd,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;EAEjB,CAAC;AAEZ,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMf,CAAC;AAEd,QAAA,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;EAIrB,CAAC;AAEd,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACvE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACvE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACvE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,4BAA4B,CAAC,CAAC;AA6DnF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAExF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IACzC,KAAK,EAAE,gBAAgB,CAAC;IACxB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B,GAAG,gBAAgB,CAenB;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAkBtE;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAajF;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkB1F;AAED,wBAAsB,mBAAmB,CACrC,KAAK,EAAE,gBAAgB,GACxB,OAAO,CAAC;IAAE,KAAK,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC,CA+B3D;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoBhG"}
@@ -0,0 +1,188 @@
1
+ import { promises as fs } from "fs";
2
+ import path from "path";
3
+ import { z } from "zod";
4
+ import { LLM_PROVIDERS } from "@dexto/core";
5
+ import { getModelPickerStatePath } from "./path-resolver.js";
6
+ const MODEL_PICKER_STATE_VERSION = 1;
7
+ const MODEL_PICKER_RECENTS_LIMIT = 10;
8
+ const MODEL_PICKER_FAVORITES_LIMIT = 100;
9
+ const ModelPickerModelSchema = z.object({
10
+ provider: z.enum(LLM_PROVIDERS),
11
+ model: z.string().trim().min(1)
12
+ }).strict();
13
+ const ModelPickerEntrySchema = ModelPickerModelSchema.extend({
14
+ updatedAt: z.string().datetime()
15
+ }).strict();
16
+ const ModelPickerStateSchema = z.object({
17
+ version: z.literal(MODEL_PICKER_STATE_VERSION),
18
+ recents: z.array(ModelPickerEntrySchema).default([]),
19
+ favorites: z.array(ModelPickerEntrySchema).default([])
20
+ }).strict();
21
+ const SetFavoriteModelsInputSchema = z.object({
22
+ favorites: z.array(ModelPickerModelSchema)
23
+ }).strict();
24
+ function createDefaultState() {
25
+ return {
26
+ version: MODEL_PICKER_STATE_VERSION,
27
+ recents: [],
28
+ favorites: []
29
+ };
30
+ }
31
+ function normalizeEntries(input) {
32
+ const normalized = [];
33
+ const seen = /* @__PURE__ */ new Set();
34
+ for (const entry of input.entries) {
35
+ const parsed = ModelPickerEntrySchema.safeParse(entry);
36
+ if (!parsed.success) {
37
+ continue;
38
+ }
39
+ const key = toModelPickerKey(parsed.data);
40
+ if (seen.has(key)) {
41
+ continue;
42
+ }
43
+ seen.add(key);
44
+ normalized.push(parsed.data);
45
+ if (normalized.length >= input.limit) {
46
+ break;
47
+ }
48
+ }
49
+ return normalized;
50
+ }
51
+ function normalizeState(input) {
52
+ return {
53
+ version: MODEL_PICKER_STATE_VERSION,
54
+ recents: normalizeEntries({
55
+ entries: input.state.recents,
56
+ limit: MODEL_PICKER_RECENTS_LIMIT
57
+ }),
58
+ favorites: normalizeEntries({
59
+ entries: input.state.favorites,
60
+ limit: MODEL_PICKER_FAVORITES_LIMIT
61
+ })
62
+ };
63
+ }
64
+ function createEntry(input) {
65
+ return {
66
+ provider: input.model.provider,
67
+ model: input.model.model,
68
+ updatedAt: input.updatedAt
69
+ };
70
+ }
71
+ function toModelPickerKey(input) {
72
+ return `${input.provider}|${input.model}`;
73
+ }
74
+ function pruneModelPickerState(input) {
75
+ const recents = input.state.recents.filter(
76
+ (entry) => input.allowedKeys.has(toModelPickerKey(entry))
77
+ );
78
+ const favorites = input.state.favorites.filter(
79
+ (entry) => input.allowedKeys.has(toModelPickerKey(entry))
80
+ );
81
+ return normalizeState({
82
+ state: {
83
+ version: MODEL_PICKER_STATE_VERSION,
84
+ recents,
85
+ favorites
86
+ }
87
+ });
88
+ }
89
+ async function loadModelPickerState() {
90
+ const filePath = getModelPickerStatePath();
91
+ try {
92
+ const raw = await fs.readFile(filePath, "utf-8");
93
+ const parsed = ModelPickerStateSchema.safeParse(JSON.parse(raw));
94
+ if (!parsed.success) {
95
+ return createDefaultState();
96
+ }
97
+ return normalizeState({ state: parsed.data });
98
+ } catch (error) {
99
+ if (error.code === "ENOENT") {
100
+ return createDefaultState();
101
+ }
102
+ return createDefaultState();
103
+ }
104
+ }
105
+ async function saveModelPickerState(state) {
106
+ const parsed = ModelPickerStateSchema.safeParse(state);
107
+ if (!parsed.success) {
108
+ throw new Error(
109
+ `Invalid model picker state: ${parsed.error.issues.map((issue) => issue.message).join(", ")}`
110
+ );
111
+ }
112
+ const filePath = getModelPickerStatePath();
113
+ const normalized = normalizeState({ state: parsed.data });
114
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
115
+ await fs.writeFile(filePath, JSON.stringify(normalized, null, 2), "utf-8");
116
+ }
117
+ async function recordRecentModel(model) {
118
+ const parsedModel = ModelPickerModelSchema.parse(model);
119
+ const now = (/* @__PURE__ */ new Date()).toISOString();
120
+ const state = await loadModelPickerState();
121
+ const recents = normalizeEntries({
122
+ entries: [createEntry({ model: parsedModel, updatedAt: now }), ...state.recents],
123
+ limit: MODEL_PICKER_RECENTS_LIMIT
124
+ });
125
+ const nextState = {
126
+ version: MODEL_PICKER_STATE_VERSION,
127
+ recents,
128
+ favorites: state.favorites
129
+ };
130
+ await saveModelPickerState(nextState);
131
+ return nextState;
132
+ }
133
+ async function toggleFavoriteModel(model) {
134
+ const parsedModel = ModelPickerModelSchema.parse(model);
135
+ const state = await loadModelPickerState();
136
+ const key = toModelPickerKey(parsedModel);
137
+ const exists = state.favorites.some((entry) => toModelPickerKey(entry) === key);
138
+ const favorites = exists ? state.favorites.filter((entry) => toModelPickerKey(entry) !== key) : normalizeEntries({
139
+ entries: [
140
+ createEntry({
141
+ model: parsedModel,
142
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
143
+ }),
144
+ ...state.favorites
145
+ ],
146
+ limit: MODEL_PICKER_FAVORITES_LIMIT
147
+ });
148
+ const nextState = {
149
+ version: MODEL_PICKER_STATE_VERSION,
150
+ recents: state.recents,
151
+ favorites
152
+ };
153
+ await saveModelPickerState(nextState);
154
+ return {
155
+ state: nextState,
156
+ isFavorite: !exists
157
+ };
158
+ }
159
+ async function setFavoriteModels(input) {
160
+ const parsed = SetFavoriteModelsInputSchema.parse(input);
161
+ const state = await loadModelPickerState();
162
+ const now = (/* @__PURE__ */ new Date()).toISOString();
163
+ const favorites = normalizeEntries({
164
+ entries: parsed.favorites.map(
165
+ (favorite) => createEntry({ model: favorite, updatedAt: now })
166
+ ),
167
+ limit: MODEL_PICKER_FAVORITES_LIMIT
168
+ });
169
+ const nextState = {
170
+ version: MODEL_PICKER_STATE_VERSION,
171
+ recents: state.recents,
172
+ favorites
173
+ };
174
+ await saveModelPickerState(nextState);
175
+ return nextState;
176
+ }
177
+ export {
178
+ MODEL_PICKER_FAVORITES_LIMIT,
179
+ MODEL_PICKER_RECENTS_LIMIT,
180
+ MODEL_PICKER_STATE_VERSION,
181
+ loadModelPickerState,
182
+ pruneModelPickerState,
183
+ recordRecentModel,
184
+ saveModelPickerState,
185
+ setFavoriteModels,
186
+ toModelPickerKey,
187
+ toggleFavoriteModel
188
+ };
@@ -35,6 +35,7 @@ __export(path_resolver_exports, {
35
35
  getModelDirectory: () => getModelDirectory,
36
36
  getModelFilePath: () => getModelFilePath,
37
37
  getModelFileSize: () => getModelFileSize,
38
+ getModelPickerStatePath: () => getModelPickerStatePath,
38
39
  getModelStatePath: () => getModelStatePath,
39
40
  getModelTempDirectory: () => getModelTempDirectory,
40
41
  getModelsDirectory: () => getModelsDirectory,
@@ -58,6 +59,9 @@ function getModelDirectory(modelId) {
58
59
  function getModelStatePath() {
59
60
  return path.join(getModelsDirectory(), "state.json");
60
61
  }
62
+ function getModelPickerStatePath() {
63
+ return path.join(getModelsDirectory(), "model-picker-state.json");
64
+ }
61
65
  function getModelTempDirectory() {
62
66
  return path.join(getModelsDirectory(), ".tmp");
63
67
  }
@@ -145,6 +149,7 @@ function formatSize(bytes) {
145
149
  getModelDirectory,
146
150
  getModelFilePath,
147
151
  getModelFileSize,
152
+ getModelPickerStatePath,
148
153
  getModelStatePath,
149
154
  getModelTempDirectory,
150
155
  getModelsDirectory,
@@ -25,6 +25,11 @@ export declare function getModelDirectory(modelId: string): string;
25
25
  * Stores download status, hashes, and usage metadata.
26
26
  */
27
27
  export declare function getModelStatePath(): string;
28
+ /**
29
+ * Get the path to the model picker state file.
30
+ * Stores recents/favorites shared by CLI and WebUI.
31
+ */
32
+ export declare function getModelPickerStatePath(): string;
28
33
  /**
29
34
  * Get the path to the model download temp directory.
30
35
  * Used for in-progress downloads.
@@ -1 +1 @@
1
- {"version":3,"file":"path-resolver.d.ts","sourceRoot":"","sources":["../../src/models/path-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAM3D;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI3E;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQzF;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQhG;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ5E;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAQ9D;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAuB1D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhD"}
1
+ {"version":3,"file":"path-resolver.d.ts","sourceRoot":"","sources":["../../src/models/path-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAM3D;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI3E;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQzF;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQhG;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ5E;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAQ9D;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAuB1D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhD"}
@@ -13,6 +13,9 @@ function getModelDirectory(modelId) {
13
13
  function getModelStatePath() {
14
14
  return path.join(getModelsDirectory(), "state.json");
15
15
  }
16
+ function getModelPickerStatePath() {
17
+ return path.join(getModelsDirectory(), "model-picker-state.json");
18
+ }
16
19
  function getModelTempDirectory() {
17
20
  return path.join(getModelsDirectory(), ".tmp");
18
21
  }
@@ -99,6 +102,7 @@ export {
99
102
  getModelDirectory,
100
103
  getModelFilePath,
101
104
  getModelFileSize,
105
+ getModelPickerStatePath,
102
106
  getModelStatePath,
103
107
  getModelTempDirectory,
104
108
  getModelsDirectory,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dexto/agent-management",
3
- "version": "1.6.7",
3
+ "version": "1.6.9",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -16,10 +16,10 @@
16
16
  "dependencies": {
17
17
  "yaml": "^2.7.1",
18
18
  "zod": "^3.25.0",
19
- "@dexto/agent-config": "1.6.7",
20
- "@dexto/core": "1.6.7",
21
- "@dexto/orchestration": "1.6.7",
22
- "@dexto/tools-builtins": "1.6.7"
19
+ "@dexto/agent-config": "1.6.9",
20
+ "@dexto/core": "1.6.9",
21
+ "@dexto/orchestration": "1.6.9",
22
+ "@dexto/tools-builtins": "1.6.9"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/node": "^22.13.5"