@dexto/agent-management 1.3.0 → 1.5.0
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/AgentFactory.cjs +152 -0
- package/dist/AgentFactory.d.ts +121 -0
- package/dist/AgentFactory.d.ts.map +1 -0
- package/dist/AgentFactory.js +132 -0
- package/dist/AgentManager.cjs +226 -0
- package/dist/AgentManager.d.ts +191 -0
- package/dist/AgentManager.d.ts.map +1 -0
- package/dist/AgentManager.js +192 -0
- package/dist/config/config-enrichment.cjs +23 -3
- package/dist/config/config-enrichment.d.ts +20 -5
- package/dist/config/config-enrichment.d.ts.map +1 -1
- package/dist/config/config-enrichment.js +22 -3
- package/dist/config/config-manager.cjs +340 -3
- package/dist/config/config-manager.d.ts +158 -7
- package/dist/config/config-manager.d.ts.map +1 -1
- package/dist/config/config-manager.js +325 -3
- package/dist/config/discover-prompts.cjs +103 -0
- package/dist/config/discover-prompts.d.ts +28 -0
- package/dist/config/discover-prompts.d.ts.map +1 -0
- package/dist/config/discover-prompts.js +73 -0
- package/dist/config/errors.cjs +2 -2
- package/dist/config/errors.js +2 -2
- package/dist/config/index.cjs +14 -2
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +21 -3
- package/dist/index.cjs +109 -6
- package/dist/index.d.ts +9 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +111 -6
- package/dist/installation.cjs +239 -0
- package/dist/installation.d.ts +72 -0
- package/dist/installation.d.ts.map +1 -0
- package/dist/installation.js +202 -0
- package/dist/models/custom-models.cjs +157 -0
- package/dist/models/custom-models.d.ts +94 -0
- package/dist/models/custom-models.d.ts.map +1 -0
- package/dist/models/custom-models.js +117 -0
- package/dist/models/index.cjs +89 -0
- package/dist/models/index.d.ts +11 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +68 -0
- package/dist/models/path-resolver.cjs +154 -0
- package/dist/models/path-resolver.d.ts +77 -0
- package/dist/models/path-resolver.d.ts.map +1 -0
- package/dist/models/path-resolver.js +108 -0
- package/dist/models/state-manager.cjs +220 -0
- package/dist/models/state-manager.d.ts +138 -0
- package/dist/models/state-manager.d.ts.map +1 -0
- package/dist/models/state-manager.js +184 -0
- package/dist/preferences/error-codes.cjs +2 -0
- package/dist/preferences/error-codes.d.ts +3 -1
- package/dist/preferences/error-codes.d.ts.map +1 -1
- package/dist/preferences/error-codes.js +2 -0
- package/dist/preferences/index.d.ts +1 -1
- package/dist/preferences/index.d.ts.map +1 -1
- package/dist/preferences/loader.cjs +32 -6
- package/dist/preferences/loader.d.ts +23 -4
- package/dist/preferences/loader.d.ts.map +1 -1
- package/dist/preferences/loader.js +32 -6
- package/dist/preferences/schemas.cjs +21 -3
- package/dist/preferences/schemas.d.ts +52 -24
- package/dist/preferences/schemas.d.ts.map +1 -1
- package/dist/preferences/schemas.js +28 -4
- package/dist/registry/registry.cjs +28 -45
- package/dist/registry/registry.d.ts +8 -6
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/registry/registry.js +26 -44
- package/dist/registry/types.d.ts +11 -13
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/resolver.cjs +82 -43
- package/dist/resolver.d.ts +7 -5
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +83 -44
- package/dist/utils/api-key-resolver.cjs +19 -1
- package/dist/utils/api-key-resolver.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.js +19 -1
- package/dist/utils/api-key-store.cjs +46 -0
- package/dist/utils/api-key-store.d.ts +27 -0
- package/dist/utils/api-key-store.d.ts.map +1 -1
- package/dist/utils/api-key-store.js +44 -0
- package/dist/utils/env-file.cjs +20 -68
- package/dist/utils/env-file.d.ts +2 -1
- package/dist/utils/env-file.d.ts.map +1 -1
- package/dist/utils/env-file.js +20 -68
- package/dist/writer.cjs +20 -2
- package/dist/writer.d.ts +1 -0
- package/dist/writer.d.ts.map +1 -1
- package/dist/writer.js +20 -2
- package/package.json +2 -2
- package/dist/AgentOrchestrator.cjs +0 -263
- package/dist/AgentOrchestrator.d.ts +0 -191
- package/dist/AgentOrchestrator.d.ts.map +0 -1
- package/dist/AgentOrchestrator.js +0 -239
package/dist/index.cjs
CHANGED
|
@@ -18,47 +18,97 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var index_exports = {};
|
|
20
20
|
__export(index_exports, {
|
|
21
|
-
|
|
21
|
+
AgentFactory: () => import_AgentFactory.AgentFactory,
|
|
22
|
+
AgentManager: () => import_AgentManager.AgentManager,
|
|
23
|
+
CUSTOM_MODEL_PROVIDERS: () => import_custom_models.CUSTOM_MODEL_PROVIDERS,
|
|
22
24
|
ConfigError: () => import_config.ConfigError,
|
|
23
25
|
ConfigErrorCode: () => import_config.ConfigErrorCode,
|
|
24
|
-
|
|
26
|
+
CustomModelSchema: () => import_custom_models.CustomModelSchema,
|
|
25
27
|
PROVIDER_API_KEY_MAP: () => import_api_key_resolver.PROVIDER_API_KEY_MAP,
|
|
26
28
|
PreferenceError: () => import_errors2.PreferenceError,
|
|
27
29
|
PreferenceErrorCode: () => import_errors2.PreferenceErrorCode,
|
|
28
30
|
RegistryError: () => import_errors.RegistryError,
|
|
29
31
|
RegistryErrorCode: () => import_error_codes.RegistryErrorCode,
|
|
32
|
+
SHARED_API_KEY_PROVIDERS: () => import_api_key_store.SHARED_API_KEY_PROVIDERS,
|
|
33
|
+
addInstalledModel: () => import_models.addInstalledModel,
|
|
34
|
+
addPromptToAgentConfig: () => import_config.addPromptToAgentConfig,
|
|
35
|
+
addToDownloadQueue: () => import_models.addToDownloadQueue,
|
|
30
36
|
copyDirectory: () => import_path.copyDirectory,
|
|
31
37
|
createInitialPreferences: () => import_loader.createInitialPreferences,
|
|
38
|
+
deleteCustomModel: () => import_custom_models.deleteCustomModel,
|
|
39
|
+
deleteModelDirectory: () => import_models.deleteModelDirectory,
|
|
40
|
+
deletePromptByMetadata: () => import_config.deletePromptByMetadata,
|
|
32
41
|
deriveAgentId: () => import_config.deriveAgentId,
|
|
33
42
|
deriveDisplayName: () => import_types.deriveDisplayName,
|
|
43
|
+
determineApiKeyStorage: () => import_api_key_store.determineApiKeyStorage,
|
|
34
44
|
enrichAgentConfig: () => import_config.enrichAgentConfig,
|
|
35
45
|
ensureDextoGlobalDirectory: () => import_path.ensureDextoGlobalDirectory,
|
|
46
|
+
ensureModelDirectory: () => import_models.ensureModelDirectory,
|
|
47
|
+
ensureModelsDirectory: () => import_models.ensureModelsDirectory,
|
|
36
48
|
findDextoProjectRoot: () => import_execution_context.findDextoProjectRoot,
|
|
37
49
|
findDextoSourceRoot: () => import_execution_context.findDextoSourceRoot,
|
|
38
50
|
findPackageRoot: () => import_path.findPackageRoot,
|
|
51
|
+
formatSize: () => import_models.formatSize,
|
|
52
|
+
getActiveModel: () => import_models.getActiveModel,
|
|
53
|
+
getActiveModelId: () => import_models.getActiveModelId,
|
|
39
54
|
getAgentRegistry: () => import_registry.getAgentRegistry,
|
|
55
|
+
getAllInstalledModels: () => import_models.getAllInstalledModels,
|
|
56
|
+
getCustomModel: () => import_custom_models.getCustomModel,
|
|
57
|
+
getCustomModelsPath: () => import_custom_models.getCustomModelsPath,
|
|
40
58
|
getDextoEnvPath: () => import_path.getDextoEnvPath,
|
|
41
59
|
getDextoGlobalPath: () => import_path.getDextoGlobalPath,
|
|
42
60
|
getDextoPath: () => import_path.getDextoPath,
|
|
61
|
+
getDownloadQueue: () => import_models.getDownloadQueue,
|
|
43
62
|
getExecutionContext: () => import_execution_context.getExecutionContext,
|
|
44
63
|
getGlobalPreferencesPath: () => import_loader.getGlobalPreferencesPath,
|
|
64
|
+
getInstalledModel: () => import_models.getInstalledModel,
|
|
65
|
+
getInstalledModelCount: () => import_models.getInstalledModelCount,
|
|
66
|
+
getModelDirectory: () => import_models.getModelDirectory,
|
|
67
|
+
getModelFilePath: () => import_models.getModelFilePath,
|
|
68
|
+
getModelFileSize: () => import_models.getModelFileSize,
|
|
69
|
+
getModelStatePath: () => import_models.getModelStatePath,
|
|
70
|
+
getModelTempDirectory: () => import_models.getModelTempDirectory,
|
|
71
|
+
getModelsDirectory: () => import_models.getModelsDirectory,
|
|
72
|
+
getModelsDiskUsage: () => import_models.getModelsDiskUsage,
|
|
45
73
|
getPrimaryApiKeyEnvVar: () => import_api_key_resolver.getPrimaryApiKeyEnvVar,
|
|
46
74
|
getProviderKeyStatus: () => import_api_key_store.getProviderKeyStatus,
|
|
75
|
+
getTotalInstalledSize: () => import_models.getTotalInstalledSize,
|
|
47
76
|
globalPreferencesExist: () => import_loader.globalPreferencesExist,
|
|
77
|
+
installBundledAgent: () => import_installation.installBundledAgent,
|
|
78
|
+
installCustomAgent: () => import_installation.installCustomAgent,
|
|
79
|
+
isModelInstalled: () => import_models.isModelInstalled,
|
|
48
80
|
isPath: () => import_path.isPath,
|
|
81
|
+
listInstalledAgents: () => import_installation.listInstalledAgents,
|
|
82
|
+
listModelDirectories: () => import_models.listModelDirectories,
|
|
49
83
|
listProviderKeyStatus: () => import_api_key_store.listProviderKeyStatus,
|
|
50
84
|
loadAgentConfig: () => import_config.loadAgentConfig,
|
|
85
|
+
loadBundledRegistryAgents: () => import_registry.loadBundledRegistryAgents,
|
|
86
|
+
loadCustomModels: () => import_custom_models.loadCustomModels,
|
|
51
87
|
loadGlobalPreferences: () => import_loader.loadGlobalPreferences,
|
|
88
|
+
loadModelState: () => import_models.loadModelState,
|
|
89
|
+
modelFileExists: () => import_models.modelFileExists,
|
|
90
|
+
registerManualModel: () => import_models.registerManualModel,
|
|
52
91
|
reloadAgentConfigFromFile: () => import_config.reloadAgentConfigFromFile,
|
|
92
|
+
removeFromDownloadQueue: () => import_models.removeFromDownloadQueue,
|
|
93
|
+
removeInstalledModel: () => import_models.removeInstalledModel,
|
|
94
|
+
removeMcpServerFromConfig: () => import_config.removeMcpServerFromConfig,
|
|
95
|
+
removePromptFromAgentConfig: () => import_config.removePromptFromAgentConfig,
|
|
53
96
|
resolveAgentPath: () => import_resolver.resolveAgentPath,
|
|
54
97
|
resolveApiKeyForProvider: () => import_api_key_resolver.resolveApiKeyForProvider,
|
|
55
98
|
resolveBundledScript: () => import_path.resolveBundledScript,
|
|
99
|
+
saveCustomModel: () => import_custom_models.saveCustomModel,
|
|
56
100
|
saveGlobalPreferences: () => import_loader.saveGlobalPreferences,
|
|
101
|
+
saveModelState: () => import_models.saveModelState,
|
|
57
102
|
saveProviderApiKey: () => import_api_key_store.saveProviderApiKey,
|
|
103
|
+
setActiveModel: () => import_models.setActiveModel,
|
|
104
|
+
syncStateWithFilesystem: () => import_models.syncStateWithFilesystem,
|
|
105
|
+
uninstallAgent: () => import_installation.uninstallAgent,
|
|
58
106
|
updateAgentConfigFile: () => import_config.updateAgentConfigFile,
|
|
59
107
|
updateDefaultAgentPreference: () => import_resolver.updateDefaultAgentPreference,
|
|
60
108
|
updateEnvFile: () => import_env_file.updateEnvFile,
|
|
61
109
|
updateGlobalPreferences: () => import_loader.updateGlobalPreferences,
|
|
110
|
+
updateMcpServerField: () => import_config.updateMcpServerField,
|
|
111
|
+
updateModelLastUsed: () => import_models.updateModelLastUsed,
|
|
62
112
|
walkUpDirectories: () => import_fs_walk.walkUpDirectories,
|
|
63
113
|
writeConfigFile: () => import_writer.writeConfigFile,
|
|
64
114
|
writeLLMPreferences: () => import_writer.writeLLMPreferences,
|
|
@@ -73,8 +123,9 @@ var import_loader = require("./preferences/loader.js");
|
|
|
73
123
|
var import_errors2 = require("./preferences/errors.js");
|
|
74
124
|
var import_resolver = require("./resolver.js");
|
|
75
125
|
var import_writer = require("./writer.js");
|
|
76
|
-
var
|
|
77
|
-
var
|
|
126
|
+
var import_AgentManager = require("./AgentManager.js");
|
|
127
|
+
var import_installation = require("./installation.js");
|
|
128
|
+
var import_AgentFactory = require("./AgentFactory.js");
|
|
78
129
|
var import_path = require("./utils/path.js");
|
|
79
130
|
var import_execution_context = require("./utils/execution-context.js");
|
|
80
131
|
var import_fs_walk = require("./utils/fs-walk.js");
|
|
@@ -82,49 +133,101 @@ var import_env_file = require("./utils/env-file.js");
|
|
|
82
133
|
var import_config = require("./config/index.js");
|
|
83
134
|
var import_api_key_store = require("./utils/api-key-store.js");
|
|
84
135
|
var import_api_key_resolver = require("./utils/api-key-resolver.js");
|
|
136
|
+
var import_custom_models = require("./models/custom-models.js");
|
|
137
|
+
var import_models = require("./models/index.js");
|
|
85
138
|
// Annotate the CommonJS export names for ESM import in node:
|
|
86
139
|
0 && (module.exports = {
|
|
87
|
-
|
|
140
|
+
AgentFactory,
|
|
141
|
+
AgentManager,
|
|
142
|
+
CUSTOM_MODEL_PROVIDERS,
|
|
88
143
|
ConfigError,
|
|
89
144
|
ConfigErrorCode,
|
|
90
|
-
|
|
145
|
+
CustomModelSchema,
|
|
91
146
|
PROVIDER_API_KEY_MAP,
|
|
92
147
|
PreferenceError,
|
|
93
148
|
PreferenceErrorCode,
|
|
94
149
|
RegistryError,
|
|
95
150
|
RegistryErrorCode,
|
|
151
|
+
SHARED_API_KEY_PROVIDERS,
|
|
152
|
+
addInstalledModel,
|
|
153
|
+
addPromptToAgentConfig,
|
|
154
|
+
addToDownloadQueue,
|
|
96
155
|
copyDirectory,
|
|
97
156
|
createInitialPreferences,
|
|
157
|
+
deleteCustomModel,
|
|
158
|
+
deleteModelDirectory,
|
|
159
|
+
deletePromptByMetadata,
|
|
98
160
|
deriveAgentId,
|
|
99
161
|
deriveDisplayName,
|
|
162
|
+
determineApiKeyStorage,
|
|
100
163
|
enrichAgentConfig,
|
|
101
164
|
ensureDextoGlobalDirectory,
|
|
165
|
+
ensureModelDirectory,
|
|
166
|
+
ensureModelsDirectory,
|
|
102
167
|
findDextoProjectRoot,
|
|
103
168
|
findDextoSourceRoot,
|
|
104
169
|
findPackageRoot,
|
|
170
|
+
formatSize,
|
|
171
|
+
getActiveModel,
|
|
172
|
+
getActiveModelId,
|
|
105
173
|
getAgentRegistry,
|
|
174
|
+
getAllInstalledModels,
|
|
175
|
+
getCustomModel,
|
|
176
|
+
getCustomModelsPath,
|
|
106
177
|
getDextoEnvPath,
|
|
107
178
|
getDextoGlobalPath,
|
|
108
179
|
getDextoPath,
|
|
180
|
+
getDownloadQueue,
|
|
109
181
|
getExecutionContext,
|
|
110
182
|
getGlobalPreferencesPath,
|
|
183
|
+
getInstalledModel,
|
|
184
|
+
getInstalledModelCount,
|
|
185
|
+
getModelDirectory,
|
|
186
|
+
getModelFilePath,
|
|
187
|
+
getModelFileSize,
|
|
188
|
+
getModelStatePath,
|
|
189
|
+
getModelTempDirectory,
|
|
190
|
+
getModelsDirectory,
|
|
191
|
+
getModelsDiskUsage,
|
|
111
192
|
getPrimaryApiKeyEnvVar,
|
|
112
193
|
getProviderKeyStatus,
|
|
194
|
+
getTotalInstalledSize,
|
|
113
195
|
globalPreferencesExist,
|
|
196
|
+
installBundledAgent,
|
|
197
|
+
installCustomAgent,
|
|
198
|
+
isModelInstalled,
|
|
114
199
|
isPath,
|
|
200
|
+
listInstalledAgents,
|
|
201
|
+
listModelDirectories,
|
|
115
202
|
listProviderKeyStatus,
|
|
116
203
|
loadAgentConfig,
|
|
204
|
+
loadBundledRegistryAgents,
|
|
205
|
+
loadCustomModels,
|
|
117
206
|
loadGlobalPreferences,
|
|
207
|
+
loadModelState,
|
|
208
|
+
modelFileExists,
|
|
209
|
+
registerManualModel,
|
|
118
210
|
reloadAgentConfigFromFile,
|
|
211
|
+
removeFromDownloadQueue,
|
|
212
|
+
removeInstalledModel,
|
|
213
|
+
removeMcpServerFromConfig,
|
|
214
|
+
removePromptFromAgentConfig,
|
|
119
215
|
resolveAgentPath,
|
|
120
216
|
resolveApiKeyForProvider,
|
|
121
217
|
resolveBundledScript,
|
|
218
|
+
saveCustomModel,
|
|
122
219
|
saveGlobalPreferences,
|
|
220
|
+
saveModelState,
|
|
123
221
|
saveProviderApiKey,
|
|
222
|
+
setActiveModel,
|
|
223
|
+
syncStateWithFilesystem,
|
|
224
|
+
uninstallAgent,
|
|
124
225
|
updateAgentConfigFile,
|
|
125
226
|
updateDefaultAgentPreference,
|
|
126
227
|
updateEnvFile,
|
|
127
228
|
updateGlobalPreferences,
|
|
229
|
+
updateMcpServerField,
|
|
230
|
+
updateModelLastUsed,
|
|
128
231
|
walkUpDirectories,
|
|
129
232
|
writeConfigFile,
|
|
130
233
|
writeLLMPreferences,
|
package/dist/index.d.ts
CHANGED
|
@@ -1,20 +1,23 @@
|
|
|
1
|
-
export { getAgentRegistry } from './registry/registry.js';
|
|
1
|
+
export { getAgentRegistry, loadBundledRegistryAgents } from './registry/registry.js';
|
|
2
2
|
export type { AgentRegistry, AgentRegistryEntry, Registry } from './registry/types.js';
|
|
3
3
|
export { deriveDisplayName } from './registry/types.js';
|
|
4
4
|
export { RegistryError } from './registry/errors.js';
|
|
5
5
|
export { RegistryErrorCode } from './registry/error-codes.js';
|
|
6
|
-
export { loadGlobalPreferences, saveGlobalPreferences, globalPreferencesExist, getGlobalPreferencesPath, createInitialPreferences, updateGlobalPreferences, type GlobalPreferencesUpdates, } from './preferences/loader.js';
|
|
6
|
+
export { loadGlobalPreferences, saveGlobalPreferences, globalPreferencesExist, getGlobalPreferencesPath, createInitialPreferences, updateGlobalPreferences, type GlobalPreferencesUpdates, type CreatePreferencesOptions, } from './preferences/loader.js';
|
|
7
7
|
export type { GlobalPreferences } from './preferences/schemas.js';
|
|
8
8
|
export { PreferenceError, PreferenceErrorCode } from './preferences/errors.js';
|
|
9
9
|
export { resolveAgentPath, updateDefaultAgentPreference } from './resolver.js';
|
|
10
10
|
export { writeConfigFile, writeLLMPreferences, writePreferencesToAgent, type LLMOverrides, } from './writer.js';
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
11
|
+
export { AgentManager, type AgentMetadata } from './AgentManager.js';
|
|
12
|
+
export { installBundledAgent, installCustomAgent, uninstallAgent, listInstalledAgents, type InstallOptions, } from './installation.js';
|
|
13
|
+
export { AgentFactory, type CreateAgentOptions } from './AgentFactory.js';
|
|
13
14
|
export { getDextoPath, getDextoGlobalPath, getDextoEnvPath, copyDirectory, isPath, findPackageRoot, resolveBundledScript, ensureDextoGlobalDirectory, } from './utils/path.js';
|
|
14
15
|
export { getExecutionContext, findDextoSourceRoot, findDextoProjectRoot, type ExecutionContext, } from './utils/execution-context.js';
|
|
15
16
|
export { walkUpDirectories } from './utils/fs-walk.js';
|
|
16
17
|
export { updateEnvFile } from './utils/env-file.js';
|
|
17
|
-
export { updateAgentConfigFile, reloadAgentConfigFromFile, loadAgentConfig, enrichAgentConfig, deriveAgentId, ConfigError, ConfigErrorCode, } from './config/index.js';
|
|
18
|
-
export { saveProviderApiKey, getProviderKeyStatus, listProviderKeyStatus, } from './utils/api-key-store.js';
|
|
18
|
+
export { updateAgentConfigFile, reloadAgentConfigFromFile, loadAgentConfig, enrichAgentConfig, deriveAgentId, addPromptToAgentConfig, removePromptFromAgentConfig, deletePromptByMetadata, updateMcpServerField, removeMcpServerFromConfig, ConfigError, ConfigErrorCode, type FilePromptInput, type InlinePromptInput, type PromptInput, type PromptMetadataForDeletion, type PromptDeletionResult, } from './config/index.js';
|
|
19
|
+
export { saveProviderApiKey, getProviderKeyStatus, listProviderKeyStatus, determineApiKeyStorage, SHARED_API_KEY_PROVIDERS, type ApiKeyStorageStrategy, } from './utils/api-key-store.js';
|
|
19
20
|
export { resolveApiKeyForProvider, getPrimaryApiKeyEnvVar, PROVIDER_API_KEY_MAP, } from './utils/api-key-resolver.js';
|
|
21
|
+
export { loadCustomModels, saveCustomModel, deleteCustomModel, getCustomModel, getCustomModelsPath, CustomModelSchema, CUSTOM_MODEL_PROVIDERS, type CustomModel, type CustomModelProvider, } from './models/custom-models.js';
|
|
22
|
+
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';
|
|
20
23
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getAgentRegistry } from "./registry/registry.js";
|
|
1
|
+
import { getAgentRegistry, loadBundledRegistryAgents } from "./registry/registry.js";
|
|
2
2
|
import { deriveDisplayName } from "./registry/types.js";
|
|
3
3
|
import { RegistryError } from "./registry/errors.js";
|
|
4
4
|
import { RegistryErrorCode } from "./registry/error-codes.js";
|
|
@@ -17,8 +17,14 @@ import {
|
|
|
17
17
|
writeLLMPreferences,
|
|
18
18
|
writePreferencesToAgent
|
|
19
19
|
} from "./writer.js";
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
20
|
+
import { AgentManager } from "./AgentManager.js";
|
|
21
|
+
import {
|
|
22
|
+
installBundledAgent,
|
|
23
|
+
installCustomAgent,
|
|
24
|
+
uninstallAgent,
|
|
25
|
+
listInstalledAgents
|
|
26
|
+
} from "./installation.js";
|
|
27
|
+
import { AgentFactory } from "./AgentFactory.js";
|
|
22
28
|
import {
|
|
23
29
|
getDextoPath,
|
|
24
30
|
getDextoGlobalPath,
|
|
@@ -42,61 +48,160 @@ import {
|
|
|
42
48
|
loadAgentConfig,
|
|
43
49
|
enrichAgentConfig,
|
|
44
50
|
deriveAgentId,
|
|
51
|
+
addPromptToAgentConfig,
|
|
52
|
+
removePromptFromAgentConfig,
|
|
53
|
+
deletePromptByMetadata,
|
|
54
|
+
updateMcpServerField,
|
|
55
|
+
removeMcpServerFromConfig,
|
|
45
56
|
ConfigError,
|
|
46
57
|
ConfigErrorCode
|
|
47
58
|
} from "./config/index.js";
|
|
48
59
|
import {
|
|
49
60
|
saveProviderApiKey,
|
|
50
61
|
getProviderKeyStatus,
|
|
51
|
-
listProviderKeyStatus
|
|
62
|
+
listProviderKeyStatus,
|
|
63
|
+
determineApiKeyStorage,
|
|
64
|
+
SHARED_API_KEY_PROVIDERS
|
|
52
65
|
} from "./utils/api-key-store.js";
|
|
53
66
|
import {
|
|
54
67
|
resolveApiKeyForProvider,
|
|
55
68
|
getPrimaryApiKeyEnvVar,
|
|
56
69
|
PROVIDER_API_KEY_MAP
|
|
57
70
|
} from "./utils/api-key-resolver.js";
|
|
71
|
+
import {
|
|
72
|
+
loadCustomModels,
|
|
73
|
+
saveCustomModel,
|
|
74
|
+
deleteCustomModel,
|
|
75
|
+
getCustomModel,
|
|
76
|
+
getCustomModelsPath,
|
|
77
|
+
CustomModelSchema,
|
|
78
|
+
CUSTOM_MODEL_PROVIDERS
|
|
79
|
+
} from "./models/custom-models.js";
|
|
80
|
+
import {
|
|
81
|
+
getModelsDirectory,
|
|
82
|
+
getModelFilePath,
|
|
83
|
+
getModelDirectory,
|
|
84
|
+
getModelStatePath,
|
|
85
|
+
getModelTempDirectory,
|
|
86
|
+
ensureModelsDirectory,
|
|
87
|
+
ensureModelDirectory,
|
|
88
|
+
modelFileExists,
|
|
89
|
+
getModelFileSize,
|
|
90
|
+
deleteModelDirectory,
|
|
91
|
+
listModelDirectories,
|
|
92
|
+
getModelsDiskUsage,
|
|
93
|
+
formatSize,
|
|
94
|
+
loadModelState,
|
|
95
|
+
saveModelState,
|
|
96
|
+
addInstalledModel,
|
|
97
|
+
removeInstalledModel,
|
|
98
|
+
getInstalledModel,
|
|
99
|
+
getAllInstalledModels,
|
|
100
|
+
isModelInstalled,
|
|
101
|
+
updateModelLastUsed,
|
|
102
|
+
setActiveModel,
|
|
103
|
+
getActiveModelId,
|
|
104
|
+
getActiveModel,
|
|
105
|
+
addToDownloadQueue,
|
|
106
|
+
removeFromDownloadQueue,
|
|
107
|
+
getDownloadQueue,
|
|
108
|
+
syncStateWithFilesystem,
|
|
109
|
+
getTotalInstalledSize,
|
|
110
|
+
getInstalledModelCount,
|
|
111
|
+
registerManualModel
|
|
112
|
+
} from "./models/index.js";
|
|
58
113
|
export {
|
|
59
|
-
|
|
114
|
+
AgentFactory,
|
|
115
|
+
AgentManager,
|
|
116
|
+
CUSTOM_MODEL_PROVIDERS,
|
|
60
117
|
ConfigError,
|
|
61
118
|
ConfigErrorCode,
|
|
62
|
-
|
|
119
|
+
CustomModelSchema,
|
|
63
120
|
PROVIDER_API_KEY_MAP,
|
|
64
121
|
PreferenceError,
|
|
65
122
|
PreferenceErrorCode,
|
|
66
123
|
RegistryError,
|
|
67
124
|
RegistryErrorCode,
|
|
125
|
+
SHARED_API_KEY_PROVIDERS,
|
|
126
|
+
addInstalledModel,
|
|
127
|
+
addPromptToAgentConfig,
|
|
128
|
+
addToDownloadQueue,
|
|
68
129
|
copyDirectory,
|
|
69
130
|
createInitialPreferences,
|
|
131
|
+
deleteCustomModel,
|
|
132
|
+
deleteModelDirectory,
|
|
133
|
+
deletePromptByMetadata,
|
|
70
134
|
deriveAgentId,
|
|
71
135
|
deriveDisplayName,
|
|
136
|
+
determineApiKeyStorage,
|
|
72
137
|
enrichAgentConfig,
|
|
73
138
|
ensureDextoGlobalDirectory,
|
|
139
|
+
ensureModelDirectory,
|
|
140
|
+
ensureModelsDirectory,
|
|
74
141
|
findDextoProjectRoot,
|
|
75
142
|
findDextoSourceRoot,
|
|
76
143
|
findPackageRoot,
|
|
144
|
+
formatSize,
|
|
145
|
+
getActiveModel,
|
|
146
|
+
getActiveModelId,
|
|
77
147
|
getAgentRegistry,
|
|
148
|
+
getAllInstalledModels,
|
|
149
|
+
getCustomModel,
|
|
150
|
+
getCustomModelsPath,
|
|
78
151
|
getDextoEnvPath,
|
|
79
152
|
getDextoGlobalPath,
|
|
80
153
|
getDextoPath,
|
|
154
|
+
getDownloadQueue,
|
|
81
155
|
getExecutionContext,
|
|
82
156
|
getGlobalPreferencesPath,
|
|
157
|
+
getInstalledModel,
|
|
158
|
+
getInstalledModelCount,
|
|
159
|
+
getModelDirectory,
|
|
160
|
+
getModelFilePath,
|
|
161
|
+
getModelFileSize,
|
|
162
|
+
getModelStatePath,
|
|
163
|
+
getModelTempDirectory,
|
|
164
|
+
getModelsDirectory,
|
|
165
|
+
getModelsDiskUsage,
|
|
83
166
|
getPrimaryApiKeyEnvVar,
|
|
84
167
|
getProviderKeyStatus,
|
|
168
|
+
getTotalInstalledSize,
|
|
85
169
|
globalPreferencesExist,
|
|
170
|
+
installBundledAgent,
|
|
171
|
+
installCustomAgent,
|
|
172
|
+
isModelInstalled,
|
|
86
173
|
isPath,
|
|
174
|
+
listInstalledAgents,
|
|
175
|
+
listModelDirectories,
|
|
87
176
|
listProviderKeyStatus,
|
|
88
177
|
loadAgentConfig,
|
|
178
|
+
loadBundledRegistryAgents,
|
|
179
|
+
loadCustomModels,
|
|
89
180
|
loadGlobalPreferences,
|
|
181
|
+
loadModelState,
|
|
182
|
+
modelFileExists,
|
|
183
|
+
registerManualModel,
|
|
90
184
|
reloadAgentConfigFromFile,
|
|
185
|
+
removeFromDownloadQueue,
|
|
186
|
+
removeInstalledModel,
|
|
187
|
+
removeMcpServerFromConfig,
|
|
188
|
+
removePromptFromAgentConfig,
|
|
91
189
|
resolveAgentPath,
|
|
92
190
|
resolveApiKeyForProvider,
|
|
93
191
|
resolveBundledScript,
|
|
192
|
+
saveCustomModel,
|
|
94
193
|
saveGlobalPreferences,
|
|
194
|
+
saveModelState,
|
|
95
195
|
saveProviderApiKey,
|
|
196
|
+
setActiveModel,
|
|
197
|
+
syncStateWithFilesystem,
|
|
198
|
+
uninstallAgent,
|
|
96
199
|
updateAgentConfigFile,
|
|
97
200
|
updateDefaultAgentPreference,
|
|
98
201
|
updateEnvFile,
|
|
99
202
|
updateGlobalPreferences,
|
|
203
|
+
updateMcpServerField,
|
|
204
|
+
updateModelLastUsed,
|
|
100
205
|
walkUpDirectories,
|
|
101
206
|
writeConfigFile,
|
|
102
207
|
writeLLMPreferences,
|
|
@@ -0,0 +1,239 @@
|
|
|
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 installation_exports = {};
|
|
30
|
+
__export(installation_exports, {
|
|
31
|
+
installBundledAgent: () => installBundledAgent,
|
|
32
|
+
installCustomAgent: () => installCustomAgent,
|
|
33
|
+
listInstalledAgents: () => listInstalledAgents,
|
|
34
|
+
uninstallAgent: () => uninstallAgent
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(installation_exports);
|
|
37
|
+
var import_fs = require("fs");
|
|
38
|
+
var import_path = __toESM(require("path"), 1);
|
|
39
|
+
var import_core = require("@dexto/core");
|
|
40
|
+
var import_path2 = require("./utils/path.js");
|
|
41
|
+
var import_errors = require("./registry/errors.js");
|
|
42
|
+
var import_errors2 = require("./config/errors.js");
|
|
43
|
+
function getAgentsDir(options) {
|
|
44
|
+
return options?.agentsDir ?? (0, import_path2.getDextoGlobalPath)("agents");
|
|
45
|
+
}
|
|
46
|
+
function getUserRegistryPath(agentsDir) {
|
|
47
|
+
return import_path.default.join(agentsDir, "registry.json");
|
|
48
|
+
}
|
|
49
|
+
async function loadUserRegistry(registryPath) {
|
|
50
|
+
try {
|
|
51
|
+
const content = await import_fs.promises.readFile(registryPath, "utf-8");
|
|
52
|
+
return JSON.parse(content);
|
|
53
|
+
} catch (error) {
|
|
54
|
+
if (error.code === "ENOENT") {
|
|
55
|
+
return { agents: [] };
|
|
56
|
+
}
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async function saveUserRegistry(registryPath, registry) {
|
|
61
|
+
await import_fs.promises.mkdir(import_path.default.dirname(registryPath), { recursive: true });
|
|
62
|
+
await import_fs.promises.writeFile(registryPath, JSON.stringify(registry, null, 2));
|
|
63
|
+
}
|
|
64
|
+
async function installBundledAgent(agentId, options) {
|
|
65
|
+
const agentsDir = getAgentsDir(options);
|
|
66
|
+
const bundledRegistryPath = (0, import_path2.resolveBundledScript)("agents/agent-registry.json");
|
|
67
|
+
import_core.logger.info(`Installing agent: ${agentId}`);
|
|
68
|
+
let bundledRegistry;
|
|
69
|
+
try {
|
|
70
|
+
const content = await import_fs.promises.readFile(bundledRegistryPath, "utf-8");
|
|
71
|
+
bundledRegistry = JSON.parse(content);
|
|
72
|
+
} catch (error) {
|
|
73
|
+
throw import_errors.RegistryError.registryParseError(
|
|
74
|
+
bundledRegistryPath,
|
|
75
|
+
error instanceof Error ? error.message : String(error)
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
const agentEntry = bundledRegistry.agents[agentId];
|
|
79
|
+
if (!agentEntry) {
|
|
80
|
+
const available = Object.keys(bundledRegistry.agents);
|
|
81
|
+
throw import_errors.RegistryError.agentNotFound(agentId, available);
|
|
82
|
+
}
|
|
83
|
+
const targetDir = import_path.default.join(agentsDir, agentId);
|
|
84
|
+
try {
|
|
85
|
+
await import_fs.promises.access(targetDir);
|
|
86
|
+
import_core.logger.info(`Agent '${agentId}' already installed`);
|
|
87
|
+
const mainFile = agentEntry.main || import_path.default.basename(agentEntry.source);
|
|
88
|
+
return import_path.default.join(targetDir, mainFile);
|
|
89
|
+
} catch {
|
|
90
|
+
}
|
|
91
|
+
await import_fs.promises.mkdir(agentsDir, { recursive: true });
|
|
92
|
+
const sourcePath = (0, import_path2.resolveBundledScript)(`agents/${agentEntry.source}`);
|
|
93
|
+
const tempDir = `${targetDir}.tmp.${Date.now()}`;
|
|
94
|
+
try {
|
|
95
|
+
if (agentEntry.source.endsWith("/")) {
|
|
96
|
+
await (0, import_path2.copyDirectory)(sourcePath, tempDir);
|
|
97
|
+
} else {
|
|
98
|
+
await import_fs.promises.mkdir(tempDir, { recursive: true });
|
|
99
|
+
const targetFile = import_path.default.join(tempDir, import_path.default.basename(sourcePath));
|
|
100
|
+
await import_fs.promises.copyFile(sourcePath, targetFile);
|
|
101
|
+
}
|
|
102
|
+
await import_fs.promises.rename(tempDir, targetDir);
|
|
103
|
+
import_core.logger.info(`\u2713 Installed agent '${agentId}' to ${targetDir}`);
|
|
104
|
+
const userRegistryPath = getUserRegistryPath(agentsDir);
|
|
105
|
+
const userRegistry = await loadUserRegistry(userRegistryPath);
|
|
106
|
+
if (!userRegistry.agents.some((a) => a.id === agentId)) {
|
|
107
|
+
const mainFile = agentEntry.main || import_path.default.basename(agentEntry.source);
|
|
108
|
+
userRegistry.agents.push({
|
|
109
|
+
id: agentId,
|
|
110
|
+
name: agentEntry.name,
|
|
111
|
+
description: agentEntry.description,
|
|
112
|
+
configPath: `./${agentId}/${mainFile}`,
|
|
113
|
+
author: agentEntry.author,
|
|
114
|
+
tags: agentEntry.tags
|
|
115
|
+
});
|
|
116
|
+
await saveUserRegistry(userRegistryPath, userRegistry);
|
|
117
|
+
}
|
|
118
|
+
return import_path.default.join(targetDir, agentEntry.main || import_path.default.basename(agentEntry.source));
|
|
119
|
+
} catch (error) {
|
|
120
|
+
try {
|
|
121
|
+
await import_fs.promises.rm(tempDir, { recursive: true, force: true });
|
|
122
|
+
} catch {
|
|
123
|
+
}
|
|
124
|
+
throw import_errors.RegistryError.installationFailed(
|
|
125
|
+
agentId,
|
|
126
|
+
error instanceof Error ? error.message : String(error)
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
async function installCustomAgent(agentId, sourcePath, metadata, options) {
|
|
131
|
+
const agentsDir = getAgentsDir(options);
|
|
132
|
+
const targetDir = import_path.default.join(agentsDir, agentId);
|
|
133
|
+
import_core.logger.info(`Installing custom agent: ${agentId}`);
|
|
134
|
+
try {
|
|
135
|
+
const bundledRegistryPath = (0, import_path2.resolveBundledScript)("agents/agent-registry.json");
|
|
136
|
+
const bundledContent = await import_fs.promises.readFile(bundledRegistryPath, "utf-8");
|
|
137
|
+
const bundledRegistry = JSON.parse(bundledContent);
|
|
138
|
+
if (agentId in bundledRegistry.agents) {
|
|
139
|
+
throw import_errors.RegistryError.customAgentNameConflict(agentId);
|
|
140
|
+
}
|
|
141
|
+
} catch (error) {
|
|
142
|
+
if (error instanceof Error && error.message.includes("conflicts with builtin")) {
|
|
143
|
+
throw error;
|
|
144
|
+
}
|
|
145
|
+
import_core.logger.debug(
|
|
146
|
+
`Could not validate against bundled registry: ${error instanceof Error ? error.message : String(error)}`
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
try {
|
|
150
|
+
await import_fs.promises.access(targetDir);
|
|
151
|
+
throw import_errors.RegistryError.agentAlreadyExists(agentId);
|
|
152
|
+
} catch (error) {
|
|
153
|
+
if (error.code !== "ENOENT") {
|
|
154
|
+
throw error;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
const resolvedSource = import_path.default.resolve(sourcePath);
|
|
158
|
+
let stat;
|
|
159
|
+
try {
|
|
160
|
+
stat = await import_fs.promises.stat(resolvedSource);
|
|
161
|
+
} catch (_error) {
|
|
162
|
+
throw import_errors2.ConfigError.fileNotFound(resolvedSource);
|
|
163
|
+
}
|
|
164
|
+
await import_fs.promises.mkdir(agentsDir, { recursive: true });
|
|
165
|
+
try {
|
|
166
|
+
if (stat.isDirectory()) {
|
|
167
|
+
await (0, import_path2.copyDirectory)(resolvedSource, targetDir);
|
|
168
|
+
} else {
|
|
169
|
+
await import_fs.promises.mkdir(targetDir, { recursive: true });
|
|
170
|
+
const filename = import_path.default.basename(resolvedSource);
|
|
171
|
+
await import_fs.promises.copyFile(resolvedSource, import_path.default.join(targetDir, filename));
|
|
172
|
+
}
|
|
173
|
+
import_core.logger.info(`\u2713 Installed custom agent '${agentId}' to ${targetDir}`);
|
|
174
|
+
const userRegistryPath = getUserRegistryPath(agentsDir);
|
|
175
|
+
const userRegistry = await loadUserRegistry(userRegistryPath);
|
|
176
|
+
const configFile = stat.isDirectory() ? "agent.yml" : import_path.default.basename(resolvedSource);
|
|
177
|
+
userRegistry.agents.push({
|
|
178
|
+
id: agentId,
|
|
179
|
+
name: metadata.name || agentId,
|
|
180
|
+
description: metadata.description,
|
|
181
|
+
configPath: `./${agentId}/${configFile}`,
|
|
182
|
+
author: metadata.author,
|
|
183
|
+
tags: metadata.tags || []
|
|
184
|
+
});
|
|
185
|
+
await saveUserRegistry(userRegistryPath, userRegistry);
|
|
186
|
+
return import_path.default.join(targetDir, configFile);
|
|
187
|
+
} catch (error) {
|
|
188
|
+
try {
|
|
189
|
+
await import_fs.promises.rm(targetDir, { recursive: true, force: true });
|
|
190
|
+
} catch {
|
|
191
|
+
}
|
|
192
|
+
throw import_errors.RegistryError.installationFailed(
|
|
193
|
+
agentId,
|
|
194
|
+
error instanceof Error ? error.message : String(error)
|
|
195
|
+
);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
async function uninstallAgent(agentId, options) {
|
|
199
|
+
const agentsDir = getAgentsDir(options);
|
|
200
|
+
const targetDir = import_path.default.join(agentsDir, agentId);
|
|
201
|
+
import_core.logger.info(`Uninstalling agent: ${agentId}`);
|
|
202
|
+
try {
|
|
203
|
+
await import_fs.promises.access(targetDir);
|
|
204
|
+
} catch (_error) {
|
|
205
|
+
throw import_errors.RegistryError.agentNotInstalled(agentId);
|
|
206
|
+
}
|
|
207
|
+
await import_fs.promises.rm(targetDir, { recursive: true, force: true });
|
|
208
|
+
import_core.logger.info(`\u2713 Removed agent directory: ${targetDir}`);
|
|
209
|
+
const userRegistryPath = getUserRegistryPath(agentsDir);
|
|
210
|
+
try {
|
|
211
|
+
const userRegistry = await loadUserRegistry(userRegistryPath);
|
|
212
|
+
userRegistry.agents = userRegistry.agents.filter((a) => a.id !== agentId);
|
|
213
|
+
await saveUserRegistry(userRegistryPath, userRegistry);
|
|
214
|
+
import_core.logger.info(`\u2713 Removed '${agentId}' from user registry`);
|
|
215
|
+
} catch (error) {
|
|
216
|
+
import_core.logger.warn(
|
|
217
|
+
`Failed to update user registry: ${error instanceof Error ? error.message : String(error)}`
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
async function listInstalledAgents(options) {
|
|
222
|
+
const agentsDir = getAgentsDir(options);
|
|
223
|
+
try {
|
|
224
|
+
const entries = await import_fs.promises.readdir(agentsDir, { withFileTypes: true });
|
|
225
|
+
return entries.filter((e) => e.isDirectory()).map((e) => e.name);
|
|
226
|
+
} catch (error) {
|
|
227
|
+
if (error.code === "ENOENT") {
|
|
228
|
+
return [];
|
|
229
|
+
}
|
|
230
|
+
throw error;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
234
|
+
0 && (module.exports = {
|
|
235
|
+
installBundledAgent,
|
|
236
|
+
installCustomAgent,
|
|
237
|
+
listInstalledAgents,
|
|
238
|
+
uninstallAgent
|
|
239
|
+
});
|