@dexto/agent-management 1.6.25 → 1.6.27
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 +1 -0
- package/dist/AgentFactory.d.ts +3 -1
- package/dist/AgentFactory.d.ts.map +1 -1
- package/dist/AgentFactory.js +1 -0
- package/dist/agent-creation.cjs +4 -2
- package/dist/agent-creation.d.ts +2 -1
- package/dist/agent-creation.d.ts.map +1 -1
- package/dist/agent-creation.js +4 -2
- package/dist/tool-factories/agent-spawner/factory.cjs +18 -5
- package/dist/tool-factories/agent-spawner/factory.d.ts.map +1 -1
- package/dist/tool-factories/agent-spawner/factory.js +18 -5
- package/package.json +5 -5
package/dist/AgentFactory.cjs
CHANGED
|
@@ -137,6 +137,7 @@ const AgentFactory = {
|
|
|
137
137
|
return await (0, import_agent_creation.createDextoAgentFromConfig)({
|
|
138
138
|
config: configToEnrich,
|
|
139
139
|
enrichOptions: { isInteractiveCli: options?.isInteractiveCli ?? false },
|
|
140
|
+
hostContext: options?.hostContext,
|
|
140
141
|
runtimeOverrides: options?.runtimeOverrides
|
|
141
142
|
});
|
|
142
143
|
}
|
package/dist/AgentFactory.d.ts
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* @see AgentManager for registry-based agent management
|
|
24
24
|
* @see https://docs.dexto.ai/api/sdk/agent-factory for full documentation
|
|
25
25
|
*/
|
|
26
|
-
import type { AgentConfig } from '@dexto/agent-config';
|
|
26
|
+
import type { AgentConfig, DextoHostContext } from '@dexto/agent-config';
|
|
27
27
|
import type { DextoAgent, DextoAgentConfigInput } from '@dexto/core';
|
|
28
28
|
import { type InstallOptions } from './installation.js';
|
|
29
29
|
import type { AgentMetadata } from './AgentManager.js';
|
|
@@ -44,6 +44,8 @@ export interface CreateAgentOptions {
|
|
|
44
44
|
agentId?: string;
|
|
45
45
|
/** Whether this is interactive CLI mode (affects logger defaults) */
|
|
46
46
|
isInteractiveCli?: boolean;
|
|
47
|
+
/** Optional host-owned resolution context for hosted runtimes */
|
|
48
|
+
hostContext?: DextoHostContext | undefined;
|
|
47
49
|
/** Explicit runtime overrides applied outside the validated agent config */
|
|
48
50
|
runtimeOverrides?: Pick<DextoAgentConfigInput, 'usageScopeId'> | undefined;
|
|
49
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentFactory.d.ts","sourceRoot":"","sources":["../src/AgentFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentFactory.d.ts","sourceRoot":"","sources":["../src/AgentFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAIrE,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,6CAA6C;IAC7C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,6CAA6C;IAC7C,8BAA8B,CAAC,EAAE,MAAM,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,8FAA8F;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iEAAiE;IACjE,WAAW,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC3C,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,cAAc,CAAC,GAAG,SAAS,CAAC;CAC9E;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY;IACrB;;;OAGG;yBACwB,iBAAiB;;;;;;;;;;;;;;;;;;IAyC5C;;OAEG;0BACyB,MAAM,YAAY,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAI9E;;OAEG;gCAEU,MAAM,cACH,MAAM,YACR,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,MAAM,CAAC,YAC/D,cAAc,GACzB,OAAO,CAAC,MAAM,CAAC;IAelB;;;;OAIG;4BAC2B,MAAM,WAAW,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAItE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;wBACuB,WAAW,YAAY,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC;CAqB5F,CAAC"}
|
package/dist/AgentFactory.js
CHANGED
|
@@ -114,6 +114,7 @@ const AgentFactory = {
|
|
|
114
114
|
return await createDextoAgentFromConfig({
|
|
115
115
|
config: configToEnrich,
|
|
116
116
|
enrichOptions: { isInteractiveCli: options?.isInteractiveCli ?? false },
|
|
117
|
+
hostContext: options?.hostContext,
|
|
117
118
|
runtimeOverrides: options?.runtimeOverrides
|
|
118
119
|
});
|
|
119
120
|
}
|
package/dist/agent-creation.cjs
CHANGED
|
@@ -61,7 +61,7 @@ function applySubAgentToolConstraints(config) {
|
|
|
61
61
|
return { ...config, tools: constrainedTools };
|
|
62
62
|
}
|
|
63
63
|
async function createDextoAgentFromConfig(options) {
|
|
64
|
-
const { configPath, enrichOptions, agentIdOverride, overrides, runtimeOverrides } = options;
|
|
64
|
+
const { configPath, enrichOptions, agentIdOverride, hostContext, overrides, runtimeOverrides } = options;
|
|
65
65
|
const cleanedConfig = (0, import_agent_config.cleanNullValues)(options.config);
|
|
66
66
|
const { image } = await loadImageForConfig({
|
|
67
67
|
config: cleanedConfig,
|
|
@@ -80,12 +80,14 @@ async function createDextoAgentFromConfig(options) {
|
|
|
80
80
|
enrichedConfig.agentId = agentIdOverride;
|
|
81
81
|
}
|
|
82
82
|
const validatedConfig = import_agent_config.AgentConfigSchema.parse(enrichedConfig);
|
|
83
|
-
const services = await (0, import_agent_config.resolveServicesFromConfig)(validatedConfig, image);
|
|
83
|
+
const services = await (0, import_agent_config.resolveServicesFromConfig)(validatedConfig, image, hostContext);
|
|
84
84
|
const mergedOverrides = overrides ? { ...overrides } : void 0;
|
|
85
85
|
return new import_core.DextoAgent(
|
|
86
86
|
(0, import_agent_config.toDextoAgentOptions)({
|
|
87
87
|
config: validatedConfig,
|
|
88
88
|
services,
|
|
89
|
+
image,
|
|
90
|
+
...hostContext ? { hostContext } : {},
|
|
89
91
|
...runtimeOverrides ? { runtimeOverrides } : {},
|
|
90
92
|
overrides: mergedOverrides
|
|
91
93
|
})
|
package/dist/agent-creation.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AgentConfig } from '@dexto/agent-config';
|
|
1
|
+
import type { AgentConfig, DextoHostContext } from '@dexto/agent-config';
|
|
2
2
|
import { DextoAgent, type DextoAgentConfigInput, type InitializeServicesOptions } from '@dexto/core';
|
|
3
3
|
import { type EnrichAgentConfigOptions } from './config/index.js';
|
|
4
4
|
type CreateDextoAgentFromConfigOptions = {
|
|
@@ -8,6 +8,7 @@ type CreateDextoAgentFromConfigOptions = {
|
|
|
8
8
|
agentIdOverride?: string | undefined;
|
|
9
9
|
imageNameOverride?: string | undefined;
|
|
10
10
|
agentContext?: 'subagent' | undefined;
|
|
11
|
+
hostContext?: DextoHostContext | undefined;
|
|
11
12
|
overrides?: InitializeServicesOptions | undefined;
|
|
12
13
|
runtimeOverrides?: Pick<DextoAgentConfigInput, 'usageScopeId'> | undefined;
|
|
13
14
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-creation.d.ts","sourceRoot":"","sources":["../src/agent-creation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-creation.d.ts","sourceRoot":"","sources":["../src/agent-creation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAc,MAAM,qBAAqB,CAAC;AASrF,OAAO,EACH,UAAU,EAEV,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EACjC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAqB,KAAK,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAGrF,KAAK,iCAAiC,GAAG;IACrC,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,aAAa,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACrD,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,YAAY,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACtC,WAAW,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC3C,SAAS,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;IAClD,gBAAgB,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,cAAc,CAAC,GAAG,SAAS,CAAC;CAC9E,CAAC;AA0DF,wBAAsB,0BAA0B,CAC5C,OAAO,EAAE,iCAAiC,GAC3C,OAAO,CAAC,UAAU,CAAC,CA0CrB"}
|
package/dist/agent-creation.js
CHANGED
|
@@ -48,7 +48,7 @@ function applySubAgentToolConstraints(config) {
|
|
|
48
48
|
return { ...config, tools: constrainedTools };
|
|
49
49
|
}
|
|
50
50
|
async function createDextoAgentFromConfig(options) {
|
|
51
|
-
const { configPath, enrichOptions, agentIdOverride, overrides, runtimeOverrides } = options;
|
|
51
|
+
const { configPath, enrichOptions, agentIdOverride, hostContext, overrides, runtimeOverrides } = options;
|
|
52
52
|
const cleanedConfig = cleanNullValues(options.config);
|
|
53
53
|
const { image } = await loadImageForConfig({
|
|
54
54
|
config: cleanedConfig,
|
|
@@ -67,12 +67,14 @@ async function createDextoAgentFromConfig(options) {
|
|
|
67
67
|
enrichedConfig.agentId = agentIdOverride;
|
|
68
68
|
}
|
|
69
69
|
const validatedConfig = AgentConfigSchema.parse(enrichedConfig);
|
|
70
|
-
const services = await resolveServicesFromConfig(validatedConfig, image);
|
|
70
|
+
const services = await resolveServicesFromConfig(validatedConfig, image, hostContext);
|
|
71
71
|
const mergedOverrides = overrides ? { ...overrides } : void 0;
|
|
72
72
|
return new DextoAgent(
|
|
73
73
|
toDextoAgentOptions({
|
|
74
74
|
config: validatedConfig,
|
|
75
75
|
services,
|
|
76
|
+
image,
|
|
77
|
+
...hostContext ? { hostContext } : {},
|
|
76
78
|
...runtimeOverrides ? { runtimeOverrides } : {},
|
|
77
79
|
overrides: mergedOverrides
|
|
78
80
|
})
|
|
@@ -78,6 +78,7 @@ const agentSpawnerToolsFactory = {
|
|
|
78
78
|
updateWorkspaceRootHint(spawnerRuntime, context);
|
|
79
79
|
attachTaskForker({ toolServices, taskForker: spawnerRuntime, logger });
|
|
80
80
|
const taskSessions = /* @__PURE__ */ new Map();
|
|
81
|
+
const taskHostRuntimeContexts = /* @__PURE__ */ new Map();
|
|
81
82
|
const emitTasksUpdate = (sessionId) => {
|
|
82
83
|
const tasks = taskRegistry.list({
|
|
83
84
|
status: ["running", "completed", "failed", "cancelled"]
|
|
@@ -100,13 +101,14 @@ const agentSpawnerToolsFactory = {
|
|
|
100
101
|
}
|
|
101
102
|
});
|
|
102
103
|
};
|
|
103
|
-
const triggerBackgroundCompletion = (taskId, sessionId) => {
|
|
104
|
+
const triggerBackgroundCompletion = (taskId, sessionId, hostRuntime) => {
|
|
104
105
|
if (!sessionId) {
|
|
105
106
|
return;
|
|
106
107
|
}
|
|
107
108
|
agent.emit("tool:background-completed", {
|
|
108
109
|
toolCallId: taskId,
|
|
109
|
-
sessionId
|
|
110
|
+
sessionId,
|
|
111
|
+
...hostRuntime !== void 0 && { hostRuntime }
|
|
110
112
|
});
|
|
111
113
|
const taskInfo = taskRegistry.getInfo(taskId);
|
|
112
114
|
const resultText = (() => {
|
|
@@ -154,9 +156,14 @@ const agentSpawnerToolsFactory = {
|
|
|
154
156
|
sessionId,
|
|
155
157
|
content,
|
|
156
158
|
source: "external",
|
|
157
|
-
metadata: { taskId }
|
|
159
|
+
metadata: { taskId },
|
|
160
|
+
...hostRuntime !== void 0 && { hostRuntime }
|
|
158
161
|
});
|
|
159
|
-
agent.generate(content, sessionId
|
|
162
|
+
agent.generate(content, sessionId, {
|
|
163
|
+
...hostRuntime !== void 0 && {
|
|
164
|
+
executionContext: hostRuntime
|
|
165
|
+
}
|
|
166
|
+
}).catch(() => void 0);
|
|
160
167
|
}
|
|
161
168
|
}).catch(() => {
|
|
162
169
|
});
|
|
@@ -169,6 +176,9 @@ const agentSpawnerToolsFactory = {
|
|
|
169
176
|
if (event.sessionId) {
|
|
170
177
|
taskSessions.set(taskId, event.sessionId);
|
|
171
178
|
}
|
|
179
|
+
if (event.hostRuntime !== void 0) {
|
|
180
|
+
taskHostRuntimeContexts.set(taskId, event.hostRuntime);
|
|
181
|
+
}
|
|
172
182
|
try {
|
|
173
183
|
taskRegistry.register(
|
|
174
184
|
{
|
|
@@ -186,6 +196,7 @@ const agentSpawnerToolsFactory = {
|
|
|
186
196
|
);
|
|
187
197
|
} catch (error) {
|
|
188
198
|
taskSessions.delete(taskId);
|
|
199
|
+
taskHostRuntimeContexts.delete(taskId);
|
|
189
200
|
event.promise.catch(() => void 0);
|
|
190
201
|
logger.warn(
|
|
191
202
|
`Failed to register background task ${taskId}: ${error instanceof Error ? error.message : String(error)}`,
|
|
@@ -196,8 +207,10 @@ const agentSpawnerToolsFactory = {
|
|
|
196
207
|
emitTasksUpdate(event.sessionId);
|
|
197
208
|
event.promise.finally(() => {
|
|
198
209
|
taskSessions.delete(taskId);
|
|
210
|
+
const hostRuntime = taskHostRuntimeContexts.get(taskId);
|
|
211
|
+
taskHostRuntimeContexts.delete(taskId);
|
|
199
212
|
emitTasksUpdate(event.sessionId);
|
|
200
|
-
triggerBackgroundCompletion(taskId, event.sessionId);
|
|
213
|
+
triggerBackgroundCompletion(taskId, event.sessionId, hostRuntime);
|
|
201
214
|
});
|
|
202
215
|
};
|
|
203
216
|
const abortController = new AbortController();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/tool-factories/agent-spawner/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAiBvD,OAAO,EAGH,KAAK,kBAAkB,EAC1B,MAAM,cAAc,CAAC;AAqCtB,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/tool-factories/agent-spawner/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAiBvD,OAAO,EAGH,KAAK,kBAAkB,EAC1B,MAAM,cAAc,CAAC;AAqCtB,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,kBAAkB,CAiYpE,CAAC"}
|
|
@@ -68,6 +68,7 @@ const agentSpawnerToolsFactory = {
|
|
|
68
68
|
updateWorkspaceRootHint(spawnerRuntime, context);
|
|
69
69
|
attachTaskForker({ toolServices, taskForker: spawnerRuntime, logger });
|
|
70
70
|
const taskSessions = /* @__PURE__ */ new Map();
|
|
71
|
+
const taskHostRuntimeContexts = /* @__PURE__ */ new Map();
|
|
71
72
|
const emitTasksUpdate = (sessionId) => {
|
|
72
73
|
const tasks = taskRegistry.list({
|
|
73
74
|
status: ["running", "completed", "failed", "cancelled"]
|
|
@@ -90,13 +91,14 @@ const agentSpawnerToolsFactory = {
|
|
|
90
91
|
}
|
|
91
92
|
});
|
|
92
93
|
};
|
|
93
|
-
const triggerBackgroundCompletion = (taskId, sessionId) => {
|
|
94
|
+
const triggerBackgroundCompletion = (taskId, sessionId, hostRuntime) => {
|
|
94
95
|
if (!sessionId) {
|
|
95
96
|
return;
|
|
96
97
|
}
|
|
97
98
|
agent.emit("tool:background-completed", {
|
|
98
99
|
toolCallId: taskId,
|
|
99
|
-
sessionId
|
|
100
|
+
sessionId,
|
|
101
|
+
...hostRuntime !== void 0 && { hostRuntime }
|
|
100
102
|
});
|
|
101
103
|
const taskInfo = taskRegistry.getInfo(taskId);
|
|
102
104
|
const resultText = (() => {
|
|
@@ -144,9 +146,14 @@ const agentSpawnerToolsFactory = {
|
|
|
144
146
|
sessionId,
|
|
145
147
|
content,
|
|
146
148
|
source: "external",
|
|
147
|
-
metadata: { taskId }
|
|
149
|
+
metadata: { taskId },
|
|
150
|
+
...hostRuntime !== void 0 && { hostRuntime }
|
|
148
151
|
});
|
|
149
|
-
agent.generate(content, sessionId
|
|
152
|
+
agent.generate(content, sessionId, {
|
|
153
|
+
...hostRuntime !== void 0 && {
|
|
154
|
+
executionContext: hostRuntime
|
|
155
|
+
}
|
|
156
|
+
}).catch(() => void 0);
|
|
150
157
|
}
|
|
151
158
|
}).catch(() => {
|
|
152
159
|
});
|
|
@@ -159,6 +166,9 @@ const agentSpawnerToolsFactory = {
|
|
|
159
166
|
if (event.sessionId) {
|
|
160
167
|
taskSessions.set(taskId, event.sessionId);
|
|
161
168
|
}
|
|
169
|
+
if (event.hostRuntime !== void 0) {
|
|
170
|
+
taskHostRuntimeContexts.set(taskId, event.hostRuntime);
|
|
171
|
+
}
|
|
162
172
|
try {
|
|
163
173
|
taskRegistry.register(
|
|
164
174
|
{
|
|
@@ -176,6 +186,7 @@ const agentSpawnerToolsFactory = {
|
|
|
176
186
|
);
|
|
177
187
|
} catch (error) {
|
|
178
188
|
taskSessions.delete(taskId);
|
|
189
|
+
taskHostRuntimeContexts.delete(taskId);
|
|
179
190
|
event.promise.catch(() => void 0);
|
|
180
191
|
logger.warn(
|
|
181
192
|
`Failed to register background task ${taskId}: ${error instanceof Error ? error.message : String(error)}`,
|
|
@@ -186,8 +197,10 @@ const agentSpawnerToolsFactory = {
|
|
|
186
197
|
emitTasksUpdate(event.sessionId);
|
|
187
198
|
event.promise.finally(() => {
|
|
188
199
|
taskSessions.delete(taskId);
|
|
200
|
+
const hostRuntime = taskHostRuntimeContexts.get(taskId);
|
|
201
|
+
taskHostRuntimeContexts.delete(taskId);
|
|
189
202
|
emitTasksUpdate(event.sessionId);
|
|
190
|
-
triggerBackgroundCompletion(taskId, event.sessionId);
|
|
203
|
+
triggerBackgroundCompletion(taskId, event.sessionId, hostRuntime);
|
|
191
204
|
});
|
|
192
205
|
};
|
|
193
206
|
const abortController = new AbortController();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dexto/agent-management",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.27",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"yaml": "^2.8.3",
|
|
19
19
|
"zod": "^3.25.0",
|
|
20
|
-
"@dexto/agent-config": "1.6.
|
|
21
|
-
"@dexto/core": "1.6.
|
|
22
|
-
"@dexto/orchestration": "1.6.
|
|
23
|
-
"@dexto/tools-builtins": "1.6.
|
|
20
|
+
"@dexto/agent-config": "1.6.27",
|
|
21
|
+
"@dexto/core": "1.6.27",
|
|
22
|
+
"@dexto/orchestration": "1.6.27",
|
|
23
|
+
"@dexto/tools-builtins": "1.6.27"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@types/node": "^22.13.5"
|