@dexto/agent-management 1.6.0 → 1.6.2
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/agent-creation.cjs +2 -1
- package/dist/agent-creation.d.ts.map +1 -1
- package/dist/agent-creation.js +2 -1
- package/dist/config/config-enrichment.cjs +8 -3
- package/dist/config/config-enrichment.d.ts +6 -0
- package/dist/config/config-enrichment.d.ts.map +1 -1
- package/dist/config/config-enrichment.js +8 -3
- package/dist/index.cjs +3 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/models/custom-models.cjs +4 -3
- package/dist/models/custom-models.d.ts +26 -5
- package/dist/models/custom-models.d.ts.map +1 -1
- package/dist/models/custom-models.js +4 -3
- package/dist/preferences/loader.cjs +23 -8
- package/dist/preferences/loader.d.ts +7 -3
- package/dist/preferences/loader.d.ts.map +1 -1
- package/dist/preferences/loader.js +23 -8
- package/dist/preferences/schemas.cjs +47 -12
- package/dist/preferences/schemas.d.ts +92 -12
- package/dist/preferences/schemas.d.ts.map +1 -1
- package/dist/preferences/schemas.js +48 -8
- package/dist/registry/types.cjs +4 -0
- package/dist/registry/types.d.ts +8 -0
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry/types.js +4 -0
- package/dist/runtime/AgentRuntime.cjs +23 -15
- package/dist/runtime/AgentRuntime.d.ts.map +1 -1
- package/dist/runtime/AgentRuntime.js +23 -15
- package/dist/runtime/approval-delegation.cjs +6 -3
- package/dist/runtime/approval-delegation.d.ts +2 -1
- package/dist/runtime/approval-delegation.d.ts.map +1 -1
- package/dist/runtime/approval-delegation.js +6 -3
- package/dist/runtime/schemas.cjs +1 -1
- package/dist/runtime/schemas.js +1 -1
- package/dist/runtime/types.d.ts +1 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/tool-factories/agent-spawner/factory.cjs +63 -26
- package/dist/tool-factories/agent-spawner/factory.d.ts.map +1 -1
- package/dist/tool-factories/agent-spawner/factory.js +61 -24
- package/dist/tool-factories/agent-spawner/runtime.cjs +166 -15
- package/dist/tool-factories/agent-spawner/runtime.d.ts +8 -1
- package/dist/tool-factories/agent-spawner/runtime.d.ts.map +1 -1
- package/dist/tool-factories/agent-spawner/runtime.js +173 -17
- package/dist/tool-factories/agent-spawner/schemas.cjs +14 -2
- package/dist/tool-factories/agent-spawner/schemas.d.ts +10 -1
- package/dist/tool-factories/agent-spawner/schemas.d.ts.map +1 -1
- package/dist/tool-factories/agent-spawner/schemas.js +12 -2
- package/dist/tool-factories/agent-spawner/spawn-agent-tool.cjs +10 -1
- package/dist/tool-factories/agent-spawner/spawn-agent-tool.d.ts.map +1 -1
- package/dist/tool-factories/agent-spawner/spawn-agent-tool.js +10 -1
- package/dist/tool-factories/creator-tools/factory.cjs +434 -0
- package/dist/tool-factories/creator-tools/factory.d.ts +4 -0
- package/dist/tool-factories/creator-tools/factory.d.ts.map +1 -0
- package/dist/tool-factories/creator-tools/factory.js +407 -0
- package/dist/tool-factories/creator-tools/index.cjs +33 -0
- package/dist/tool-factories/creator-tools/index.d.ts +3 -0
- package/dist/tool-factories/creator-tools/index.d.ts.map +1 -0
- package/dist/tool-factories/creator-tools/index.js +10 -0
- package/dist/tool-factories/creator-tools/schemas.cjs +41 -0
- package/dist/tool-factories/creator-tools/schemas.d.ts +15 -0
- package/dist/tool-factories/creator-tools/schemas.d.ts.map +1 -0
- package/dist/tool-factories/creator-tools/schemas.js +16 -0
- package/dist/utils/path.cjs +10 -1
- package/dist/utils/path.d.ts +5 -2
- package/dist/utils/path.d.ts.map +1 -1
- package/dist/utils/path.js +10 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,0DAA0D;IAC1D,WAAW,EAAE,WAAW,CAAC;IAEzB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7F;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAEhB,8BAA8B;IAC9B,KAAK,EAAE,UAAU,CAAC;IAElB,kCAAkC;IAClC,MAAM,EAAE,WAAW,CAAC;IAEpB,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAC;IAEnB,kCAAkC;IAClC,SAAS,EAAE,IAAI,CAAC;IAEhB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAElB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IAEjB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAEhB,+BAA+B;IAC/B,UAAU,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,0DAA0D;IAC1D,WAAW,EAAE,WAAW,CAAC;IAEzB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7F;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAEhB,8BAA8B;IAC9B,KAAK,EAAE,UAAU,CAAC;IAElB,kCAAkC;IAClC,MAAM,EAAE,WAAW,CAAC;IAEpB,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAC;IAEnB,kCAAkC;IAClC,SAAS,EAAE,IAAI,CAAC;IAEhB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAElB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IAEjB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAEhB,+BAA+B;IAC/B,UAAU,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qFAAqF;IACrF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,uBAAuB;IACvB,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;IAErC,+BAA+B;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB"}
|
|
@@ -22,16 +22,17 @@ __export(factory_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(factory_exports);
|
|
24
24
|
var import_core = require("@dexto/core");
|
|
25
|
+
var import_core2 = require("@dexto/core");
|
|
25
26
|
var import_orchestration = require("@dexto/orchestration");
|
|
26
27
|
var import_schemas = require("./schemas.js");
|
|
27
28
|
var import_runtime = require("./runtime.js");
|
|
28
29
|
var import_spawn_agent_tool = require("./spawn-agent-tool.js");
|
|
29
30
|
function requireAgentContext(context) {
|
|
30
31
|
if (!context.agent) {
|
|
31
|
-
throw
|
|
32
|
+
throw import_core2.ToolError.configInvalid("agent-spawner tools require ToolExecutionContext.agent");
|
|
32
33
|
}
|
|
33
34
|
if (!context.services) {
|
|
34
|
-
throw
|
|
35
|
+
throw import_core2.ToolError.configInvalid("agent-spawner tools require ToolExecutionContext.services");
|
|
35
36
|
}
|
|
36
37
|
return { agent: context.agent, logger: context.logger, toolServices: context.services };
|
|
37
38
|
}
|
|
@@ -227,58 +228,94 @@ const agentSpawnerToolsFactory = {
|
|
|
227
228
|
return [
|
|
228
229
|
{
|
|
229
230
|
id: "spawn_agent",
|
|
230
|
-
displayName: "Agent",
|
|
231
231
|
description: "Spawn a sub-agent to handle a task and return its result.",
|
|
232
232
|
inputSchema: import_schemas.SpawnAgentInputSchema,
|
|
233
233
|
execute: (input, context) => ensureToolsInitialized(context).spawnAgent.execute(input, context),
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
234
|
+
presentation: {
|
|
235
|
+
describeHeader: (input) => {
|
|
236
|
+
const agentId = typeof input.agentId === "string" ? input.agentId : void 0;
|
|
237
|
+
const agentLabel = agentId ? agentId.replace(/-agent$/, "") : void 0;
|
|
238
|
+
const title = agentLabel ? agentLabel.charAt(0).toUpperCase() + agentLabel.slice(1) : "Agent";
|
|
239
|
+
const task = typeof input.task === "string" ? input.task : "";
|
|
240
|
+
const argsText = task ? (0, import_core.truncateForHeader)(task, 120) : void 0;
|
|
241
|
+
return (0, import_core.createLocalToolCallHeader)({
|
|
242
|
+
title,
|
|
243
|
+
...argsText ? { argsText } : {}
|
|
244
|
+
});
|
|
245
|
+
},
|
|
246
|
+
preview: async (input, context) => {
|
|
247
|
+
const tool = ensureToolsInitialized(context).spawnAgent;
|
|
248
|
+
const previewFn = tool.presentation?.preview;
|
|
249
|
+
if (!previewFn) {
|
|
250
|
+
return null;
|
|
251
|
+
}
|
|
252
|
+
return await previewFn(input, context);
|
|
238
253
|
}
|
|
239
|
-
return await tool.generatePreview(input, context);
|
|
240
254
|
}
|
|
241
255
|
},
|
|
242
256
|
{
|
|
243
257
|
id: "wait_for",
|
|
244
|
-
displayName: "Wait",
|
|
245
258
|
description: "Wait for background task(s) to complete.",
|
|
246
259
|
inputSchema: import_orchestration.WaitForInputSchema,
|
|
247
260
|
execute: (input, context) => ensureToolsInitialized(context).waitFor.execute(input, context),
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
return
|
|
261
|
+
presentation: {
|
|
262
|
+
describeHeader: (input) => {
|
|
263
|
+
const argsText = input.taskId ? (0, import_core.truncateForHeader)(input.taskId, 80) : input.taskIds && input.taskIds.length > 0 ? (0, import_core.truncateForHeader)(`${input.taskIds.length} tasks`, 80) : void 0;
|
|
264
|
+
return (0, import_core.createLocalToolCallHeader)({
|
|
265
|
+
title: "Wait",
|
|
266
|
+
...argsText ? { argsText } : {}
|
|
267
|
+
});
|
|
268
|
+
},
|
|
269
|
+
preview: async (input, context) => {
|
|
270
|
+
const tool = ensureToolsInitialized(context).waitFor;
|
|
271
|
+
const previewFn = tool.presentation?.preview;
|
|
272
|
+
if (!previewFn) {
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
return await previewFn(input, context);
|
|
252
276
|
}
|
|
253
|
-
return await tool.generatePreview(input, context);
|
|
254
277
|
}
|
|
255
278
|
},
|
|
256
279
|
{
|
|
257
280
|
id: "check_task",
|
|
258
|
-
displayName: "Check Task",
|
|
259
281
|
description: "Check the status of a background task.",
|
|
260
282
|
inputSchema: import_orchestration.CheckTaskInputSchema,
|
|
261
283
|
execute: (input, context) => ensureToolsInitialized(context).checkTask.execute(input, context),
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
return
|
|
284
|
+
presentation: {
|
|
285
|
+
describeHeader: (input) => {
|
|
286
|
+
const argsText = (0, import_core.truncateForHeader)(input.taskId, 80);
|
|
287
|
+
return (0, import_core.createLocalToolCallHeader)({
|
|
288
|
+
title: "Check Task",
|
|
289
|
+
...argsText ? { argsText } : {}
|
|
290
|
+
});
|
|
291
|
+
},
|
|
292
|
+
preview: async (input, context) => {
|
|
293
|
+
const tool = ensureToolsInitialized(context).checkTask;
|
|
294
|
+
const previewFn = tool.presentation?.preview;
|
|
295
|
+
if (!previewFn) {
|
|
296
|
+
return null;
|
|
297
|
+
}
|
|
298
|
+
return await previewFn(input, context);
|
|
266
299
|
}
|
|
267
|
-
return await tool.generatePreview(input, context);
|
|
268
300
|
}
|
|
269
301
|
},
|
|
270
302
|
{
|
|
271
303
|
id: "list_tasks",
|
|
272
|
-
displayName: "List Tasks",
|
|
273
304
|
description: "List background tasks and their statuses.",
|
|
274
305
|
inputSchema: import_orchestration.ListTasksInputSchema,
|
|
275
306
|
execute: (input, context) => ensureToolsInitialized(context).listTasks.execute(input, context),
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
307
|
+
presentation: {
|
|
308
|
+
describeHeader: () => (0, import_core.createLocalToolCallHeader)({
|
|
309
|
+
title: "List Tasks"
|
|
310
|
+
}),
|
|
311
|
+
preview: async (input, context) => {
|
|
312
|
+
const tool = ensureToolsInitialized(context).listTasks;
|
|
313
|
+
const previewFn = tool.presentation?.preview;
|
|
314
|
+
if (!previewFn) {
|
|
315
|
+
return null;
|
|
316
|
+
}
|
|
317
|
+
return await previewFn(input, context);
|
|
280
318
|
}
|
|
281
|
-
return await tool.generatePreview(input, context);
|
|
282
319
|
}
|
|
283
320
|
}
|
|
284
321
|
];
|
|
@@ -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;
|
|
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,CA8VpE,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createLocalToolCallHeader, truncateForHeader } from "@dexto/core";
|
|
1
2
|
import { ToolError } from "@dexto/core";
|
|
2
3
|
import {
|
|
3
4
|
ConditionEngine,
|
|
@@ -217,58 +218,94 @@ const agentSpawnerToolsFactory = {
|
|
|
217
218
|
return [
|
|
218
219
|
{
|
|
219
220
|
id: "spawn_agent",
|
|
220
|
-
displayName: "Agent",
|
|
221
221
|
description: "Spawn a sub-agent to handle a task and return its result.",
|
|
222
222
|
inputSchema: SpawnAgentInputSchema,
|
|
223
223
|
execute: (input, context) => ensureToolsInitialized(context).spawnAgent.execute(input, context),
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
224
|
+
presentation: {
|
|
225
|
+
describeHeader: (input) => {
|
|
226
|
+
const agentId = typeof input.agentId === "string" ? input.agentId : void 0;
|
|
227
|
+
const agentLabel = agentId ? agentId.replace(/-agent$/, "") : void 0;
|
|
228
|
+
const title = agentLabel ? agentLabel.charAt(0).toUpperCase() + agentLabel.slice(1) : "Agent";
|
|
229
|
+
const task = typeof input.task === "string" ? input.task : "";
|
|
230
|
+
const argsText = task ? truncateForHeader(task, 120) : void 0;
|
|
231
|
+
return createLocalToolCallHeader({
|
|
232
|
+
title,
|
|
233
|
+
...argsText ? { argsText } : {}
|
|
234
|
+
});
|
|
235
|
+
},
|
|
236
|
+
preview: async (input, context) => {
|
|
237
|
+
const tool = ensureToolsInitialized(context).spawnAgent;
|
|
238
|
+
const previewFn = tool.presentation?.preview;
|
|
239
|
+
if (!previewFn) {
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
return await previewFn(input, context);
|
|
228
243
|
}
|
|
229
|
-
return await tool.generatePreview(input, context);
|
|
230
244
|
}
|
|
231
245
|
},
|
|
232
246
|
{
|
|
233
247
|
id: "wait_for",
|
|
234
|
-
displayName: "Wait",
|
|
235
248
|
description: "Wait for background task(s) to complete.",
|
|
236
249
|
inputSchema: WaitForInputSchema,
|
|
237
250
|
execute: (input, context) => ensureToolsInitialized(context).waitFor.execute(input, context),
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
return
|
|
251
|
+
presentation: {
|
|
252
|
+
describeHeader: (input) => {
|
|
253
|
+
const argsText = input.taskId ? truncateForHeader(input.taskId, 80) : input.taskIds && input.taskIds.length > 0 ? truncateForHeader(`${input.taskIds.length} tasks`, 80) : void 0;
|
|
254
|
+
return createLocalToolCallHeader({
|
|
255
|
+
title: "Wait",
|
|
256
|
+
...argsText ? { argsText } : {}
|
|
257
|
+
});
|
|
258
|
+
},
|
|
259
|
+
preview: async (input, context) => {
|
|
260
|
+
const tool = ensureToolsInitialized(context).waitFor;
|
|
261
|
+
const previewFn = tool.presentation?.preview;
|
|
262
|
+
if (!previewFn) {
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
return await previewFn(input, context);
|
|
242
266
|
}
|
|
243
|
-
return await tool.generatePreview(input, context);
|
|
244
267
|
}
|
|
245
268
|
},
|
|
246
269
|
{
|
|
247
270
|
id: "check_task",
|
|
248
|
-
displayName: "Check Task",
|
|
249
271
|
description: "Check the status of a background task.",
|
|
250
272
|
inputSchema: CheckTaskInputSchema,
|
|
251
273
|
execute: (input, context) => ensureToolsInitialized(context).checkTask.execute(input, context),
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
return
|
|
274
|
+
presentation: {
|
|
275
|
+
describeHeader: (input) => {
|
|
276
|
+
const argsText = truncateForHeader(input.taskId, 80);
|
|
277
|
+
return createLocalToolCallHeader({
|
|
278
|
+
title: "Check Task",
|
|
279
|
+
...argsText ? { argsText } : {}
|
|
280
|
+
});
|
|
281
|
+
},
|
|
282
|
+
preview: async (input, context) => {
|
|
283
|
+
const tool = ensureToolsInitialized(context).checkTask;
|
|
284
|
+
const previewFn = tool.presentation?.preview;
|
|
285
|
+
if (!previewFn) {
|
|
286
|
+
return null;
|
|
287
|
+
}
|
|
288
|
+
return await previewFn(input, context);
|
|
256
289
|
}
|
|
257
|
-
return await tool.generatePreview(input, context);
|
|
258
290
|
}
|
|
259
291
|
},
|
|
260
292
|
{
|
|
261
293
|
id: "list_tasks",
|
|
262
|
-
displayName: "List Tasks",
|
|
263
294
|
description: "List background tasks and their statuses.",
|
|
264
295
|
inputSchema: ListTasksInputSchema,
|
|
265
296
|
execute: (input, context) => ensureToolsInitialized(context).listTasks.execute(input, context),
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
297
|
+
presentation: {
|
|
298
|
+
describeHeader: () => createLocalToolCallHeader({
|
|
299
|
+
title: "List Tasks"
|
|
300
|
+
}),
|
|
301
|
+
preview: async (input, context) => {
|
|
302
|
+
const tool = ensureToolsInitialized(context).listTasks;
|
|
303
|
+
const previewFn = tool.presentation?.preview;
|
|
304
|
+
if (!previewFn) {
|
|
305
|
+
return null;
|
|
306
|
+
}
|
|
307
|
+
return await previewFn(input, context);
|
|
270
308
|
}
|
|
271
|
-
return await tool.generatePreview(input, context);
|
|
272
309
|
}
|
|
273
310
|
}
|
|
274
311
|
];
|
|
@@ -31,6 +31,7 @@ __export(runtime_exports, {
|
|
|
31
31
|
AgentSpawnerRuntime: () => AgentSpawnerRuntime
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(runtime_exports);
|
|
34
|
+
var import_crypto = require("crypto");
|
|
34
35
|
var import_core = require("@dexto/core");
|
|
35
36
|
var import_AgentRuntime = require("../../runtime/AgentRuntime.js");
|
|
36
37
|
var import_approval_delegation = require("../../runtime/approval-delegation.js");
|
|
@@ -40,12 +41,58 @@ var import_types = require("../../registry/types.js");
|
|
|
40
41
|
var import_path = require("../../utils/path.js");
|
|
41
42
|
var path = __toESM(require("path"), 1);
|
|
42
43
|
var import_llm_resolution = require("./llm-resolution.js");
|
|
44
|
+
const REASONING_VARIANT_FALLBACK_ORDER = [
|
|
45
|
+
"disabled",
|
|
46
|
+
"none",
|
|
47
|
+
"minimal",
|
|
48
|
+
"low",
|
|
49
|
+
"enabled",
|
|
50
|
+
"medium",
|
|
51
|
+
"high",
|
|
52
|
+
"max",
|
|
53
|
+
"xhigh"
|
|
54
|
+
];
|
|
43
55
|
class AgentSpawnerRuntime {
|
|
44
56
|
runtime;
|
|
45
57
|
parentId;
|
|
46
58
|
parentAgent;
|
|
47
59
|
config;
|
|
48
60
|
logger;
|
|
61
|
+
selectLowestReasoningVariant(provider, model, preferredVariant) {
|
|
62
|
+
const profile = (0, import_core.getReasoningProfile)(provider, model);
|
|
63
|
+
if (!profile.capable || profile.supportedVariants.length === 0) {
|
|
64
|
+
return void 0;
|
|
65
|
+
}
|
|
66
|
+
if ((0, import_core.supportsReasoningVariant)(profile, preferredVariant)) {
|
|
67
|
+
return preferredVariant;
|
|
68
|
+
}
|
|
69
|
+
for (const variant of REASONING_VARIANT_FALLBACK_ORDER) {
|
|
70
|
+
if ((0, import_core.supportsReasoningVariant)(profile, variant)) {
|
|
71
|
+
return variant;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return profile.defaultVariant ?? profile.supportedVariants[0];
|
|
75
|
+
}
|
|
76
|
+
applySubAgentLlmPolicy(llm) {
|
|
77
|
+
const maxIterationsCap = this.config.subAgentMaxIterations;
|
|
78
|
+
const preferredReasoningVariant = this.config.subAgentReasoningVariant;
|
|
79
|
+
const reasoningVariant = this.selectLowestReasoningVariant(
|
|
80
|
+
llm.provider,
|
|
81
|
+
llm.model,
|
|
82
|
+
preferredReasoningVariant
|
|
83
|
+
);
|
|
84
|
+
const existingMaxIterations = llm.maxIterations;
|
|
85
|
+
const cappedMaxIterations = typeof existingMaxIterations === "number" ? Math.min(existingMaxIterations, maxIterationsCap) : maxIterationsCap;
|
|
86
|
+
const adjusted = {
|
|
87
|
+
...llm,
|
|
88
|
+
maxIterations: cappedMaxIterations,
|
|
89
|
+
...reasoningVariant !== void 0 ? { reasoning: { variant: reasoningVariant } } : { reasoning: void 0 }
|
|
90
|
+
};
|
|
91
|
+
this.logger.debug(
|
|
92
|
+
`[AgentSpawnerRuntime] Applied sub-agent LLM policy: maxIterations=${adjusted.maxIterations}, preferredReasoning=${preferredReasoningVariant}, selectedReasoning=${reasoningVariant ?? "none"}`
|
|
93
|
+
);
|
|
94
|
+
return adjusted;
|
|
95
|
+
}
|
|
49
96
|
resolveBundledAgentConfig(agentId) {
|
|
50
97
|
const baseDir = "agents";
|
|
51
98
|
const normalizedPath = path.relative(baseDir, path.join(baseDir, agentId));
|
|
@@ -187,6 +234,10 @@ class AgentSpawnerRuntime {
|
|
|
187
234
|
const tokenUsage = { input: 0, output: 0, total: 0 };
|
|
188
235
|
let currentTool = "";
|
|
189
236
|
const emitProgress = (tool, args) => {
|
|
237
|
+
const subAgentLogFilePath = this.getSubAgentLogFilePath({
|
|
238
|
+
runtimeAgentId: subAgentHandle.agentId,
|
|
239
|
+
sessionId
|
|
240
|
+
});
|
|
190
241
|
this.parentAgent.emit("service:event", {
|
|
191
242
|
service: "agent-spawner",
|
|
192
243
|
event: "progress",
|
|
@@ -195,6 +246,8 @@ class AgentSpawnerRuntime {
|
|
|
195
246
|
data: {
|
|
196
247
|
task: input.task,
|
|
197
248
|
agentId: input.agentId ?? "default",
|
|
249
|
+
runtimeAgentId: subAgentHandle.agentId,
|
|
250
|
+
...subAgentLogFilePath ? { subAgentLogFilePath } : {},
|
|
198
251
|
toolsCalled: toolCount,
|
|
199
252
|
currentTool: tool,
|
|
200
253
|
currentArgs: args,
|
|
@@ -234,6 +287,44 @@ class AgentSpawnerRuntime {
|
|
|
234
287
|
subAgentHandle.agent.off("llm:response", responseHandler);
|
|
235
288
|
};
|
|
236
289
|
}
|
|
290
|
+
/**
|
|
291
|
+
* Ensure spawned agent inherits the parent's workspace context.
|
|
292
|
+
*/
|
|
293
|
+
async applyParentWorkspace(agent) {
|
|
294
|
+
let parentWorkspace;
|
|
295
|
+
try {
|
|
296
|
+
parentWorkspace = await this.parentAgent.getWorkspace();
|
|
297
|
+
} catch (error) {
|
|
298
|
+
this.logger.warn(
|
|
299
|
+
`Failed to read parent workspace for sub-agent: ${error instanceof Error ? error.message : String(error)}`
|
|
300
|
+
);
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
if (!parentWorkspace?.path) {
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
try {
|
|
307
|
+
await agent.setWorkspace({
|
|
308
|
+
path: parentWorkspace.path,
|
|
309
|
+
...parentWorkspace.name ? { name: parentWorkspace.name } : {}
|
|
310
|
+
});
|
|
311
|
+
} catch (error) {
|
|
312
|
+
this.logger.warn(
|
|
313
|
+
`Failed to apply parent workspace to sub-agent: ${error instanceof Error ? error.message : String(error)}`
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
getSubAgentLogFilePath(options) {
|
|
318
|
+
const { runtimeAgentId, sessionId } = options;
|
|
319
|
+
if (!sessionId) {
|
|
320
|
+
return null;
|
|
321
|
+
}
|
|
322
|
+
const safeSessionId = sessionId.replace(/[^a-zA-Z0-9._-]/g, "_");
|
|
323
|
+
return (0, import_path.getDextoPath)(
|
|
324
|
+
"logs",
|
|
325
|
+
path.join(this.parentId, `${safeSessionId}.subagent.${runtimeAgentId}.log`)
|
|
326
|
+
);
|
|
327
|
+
}
|
|
237
328
|
/**
|
|
238
329
|
* Check if an error is LLM-related (API errors, credit issues, model not found, etc.)
|
|
239
330
|
*/
|
|
@@ -255,7 +346,10 @@ class AgentSpawnerRuntime {
|
|
|
255
346
|
let llmMode = "subagent";
|
|
256
347
|
let cleanupProgressTracking;
|
|
257
348
|
try {
|
|
258
|
-
const buildOptions = {
|
|
349
|
+
const buildOptions = {
|
|
350
|
+
// Pre-generate the runtime agentId so we can deterministically route logs.
|
|
351
|
+
runtimeAgentId: `agent-${(0, import_crypto.randomUUID)().slice(0, 8)}`
|
|
352
|
+
};
|
|
259
353
|
if (input.agentId !== void 0) {
|
|
260
354
|
buildOptions.agentId = input.agentId;
|
|
261
355
|
}
|
|
@@ -266,6 +360,7 @@ class AgentSpawnerRuntime {
|
|
|
266
360
|
let handle;
|
|
267
361
|
try {
|
|
268
362
|
handle = await this.runtime.spawnAgent({
|
|
363
|
+
agentId: buildOptions.runtimeAgentId,
|
|
269
364
|
agentConfig: subAgentConfig,
|
|
270
365
|
ephemeral: true,
|
|
271
366
|
group: this.parentId,
|
|
@@ -280,6 +375,7 @@ class AgentSpawnerRuntime {
|
|
|
280
375
|
const delegatingHandler = (0, import_approval_delegation.createDelegatingApprovalHandler)(
|
|
281
376
|
this.parentAgent.services.approvalManager,
|
|
282
377
|
agent.config.agentId ?? "unknown",
|
|
378
|
+
sessionId,
|
|
283
379
|
this.logger
|
|
284
380
|
);
|
|
285
381
|
agent.setApprovalHandler(delegatingHandler);
|
|
@@ -287,6 +383,7 @@ class AgentSpawnerRuntime {
|
|
|
287
383
|
}
|
|
288
384
|
});
|
|
289
385
|
spawnedAgentId = handle.agentId;
|
|
386
|
+
await this.applyParentWorkspace(handle.agent);
|
|
290
387
|
} catch (spawnError) {
|
|
291
388
|
const isLlmError = this.isLLMError(spawnError);
|
|
292
389
|
if (isLlmError && input.agentId && llmMode === "subagent") {
|
|
@@ -298,6 +395,7 @@ class AgentSpawnerRuntime {
|
|
|
298
395
|
buildOptions.inheritLlm = true;
|
|
299
396
|
subAgentConfig = await this.buildSubAgentConfig(buildOptions, sessionId);
|
|
300
397
|
handle = await this.runtime.spawnAgent({
|
|
398
|
+
agentId: buildOptions.runtimeAgentId,
|
|
301
399
|
agentConfig: subAgentConfig,
|
|
302
400
|
ephemeral: true,
|
|
303
401
|
group: this.parentId,
|
|
@@ -314,6 +412,7 @@ class AgentSpawnerRuntime {
|
|
|
314
412
|
const delegatingHandler = (0, import_approval_delegation.createDelegatingApprovalHandler)(
|
|
315
413
|
this.parentAgent.services.approvalManager,
|
|
316
414
|
agent.config.agentId ?? "unknown",
|
|
415
|
+
sessionId,
|
|
317
416
|
this.logger
|
|
318
417
|
);
|
|
319
418
|
agent.setApprovalHandler(delegatingHandler);
|
|
@@ -321,6 +420,7 @@ class AgentSpawnerRuntime {
|
|
|
321
420
|
}
|
|
322
421
|
});
|
|
323
422
|
spawnedAgentId = handle.agentId;
|
|
423
|
+
await this.applyParentWorkspace(handle.agent);
|
|
324
424
|
} else {
|
|
325
425
|
throw spawnError;
|
|
326
426
|
}
|
|
@@ -328,6 +428,23 @@ class AgentSpawnerRuntime {
|
|
|
328
428
|
this.logger.info(
|
|
329
429
|
`Spawned sub-agent '${spawnedAgentId}' for task: ${input.task}${autoApprove ? " (auto-approve)" : ""}${llmMode === "parent" ? " (using parent LLM)" : ""}`
|
|
330
430
|
);
|
|
431
|
+
const subAgentLogFilePath = this.getSubAgentLogFilePath(
|
|
432
|
+
sessionId ? { runtimeAgentId: buildOptions.runtimeAgentId, sessionId } : { runtimeAgentId: buildOptions.runtimeAgentId }
|
|
433
|
+
);
|
|
434
|
+
if (subAgentLogFilePath) {
|
|
435
|
+
this.logger.info(`Sub-agent logs: ${subAgentLogFilePath}`);
|
|
436
|
+
}
|
|
437
|
+
if (sessionId) {
|
|
438
|
+
const parentSession = await this.parentAgent.getSession(sessionId);
|
|
439
|
+
if (parentSession) {
|
|
440
|
+
parentSession.logger.info("Sub-agent spawned", {
|
|
441
|
+
runtimeAgentId: spawnedAgentId,
|
|
442
|
+
registryAgentId: input.agentId ?? "default",
|
|
443
|
+
task: input.task,
|
|
444
|
+
...subAgentLogFilePath ? { subAgentLogFilePath } : {}
|
|
445
|
+
});
|
|
446
|
+
}
|
|
447
|
+
}
|
|
331
448
|
cleanupProgressTracking = this.setupProgressTracking(
|
|
332
449
|
handle,
|
|
333
450
|
input,
|
|
@@ -361,6 +478,7 @@ class AgentSpawnerRuntime {
|
|
|
361
478
|
buildOptions.inheritLlm = true;
|
|
362
479
|
subAgentConfig = await this.buildSubAgentConfig(buildOptions, sessionId);
|
|
363
480
|
handle = await this.runtime.spawnAgent({
|
|
481
|
+
agentId: buildOptions.runtimeAgentId,
|
|
364
482
|
agentConfig: subAgentConfig,
|
|
365
483
|
ephemeral: true,
|
|
366
484
|
group: this.parentId,
|
|
@@ -377,6 +495,7 @@ class AgentSpawnerRuntime {
|
|
|
377
495
|
const delegatingHandler = (0, import_approval_delegation.createDelegatingApprovalHandler)(
|
|
378
496
|
this.parentAgent.services.approvalManager,
|
|
379
497
|
agent.config.agentId ?? "unknown",
|
|
498
|
+
sessionId,
|
|
380
499
|
this.logger
|
|
381
500
|
);
|
|
382
501
|
agent.setApprovalHandler(delegatingHandler);
|
|
@@ -384,6 +503,7 @@ class AgentSpawnerRuntime {
|
|
|
384
503
|
}
|
|
385
504
|
});
|
|
386
505
|
spawnedAgentId = handle.agentId;
|
|
506
|
+
await this.applyParentWorkspace(handle.agent);
|
|
387
507
|
this.logger.info(
|
|
388
508
|
`Re-spawned sub-agent '${spawnedAgentId}' for task: ${input.task} (using parent LLM)`
|
|
389
509
|
);
|
|
@@ -443,13 +563,49 @@ class AgentSpawnerRuntime {
|
|
|
443
563
|
* @param sessionId - Optional session ID to get session-specific LLM config
|
|
444
564
|
*/
|
|
445
565
|
async buildSubAgentConfig(options, sessionId) {
|
|
446
|
-
const { agentId, inheritLlm, autoApprove } = options;
|
|
566
|
+
const { agentId, inheritLlm, autoApprove, runtimeAgentId } = options;
|
|
447
567
|
const parentSettings = this.parentAgent.config;
|
|
448
568
|
const currentParentLLM = this.parentAgent.getCurrentLLMConfig(sessionId);
|
|
449
569
|
this.logger.debug(
|
|
450
570
|
`[AgentSpawnerRuntime] Building sub-agent config with LLM: ${currentParentLLM.provider}/${currentParentLLM.model}` + (sessionId ? ` (sessionId: ${sessionId})` : " (no sessionId)")
|
|
451
571
|
);
|
|
452
572
|
const permissionsMode = autoApprove ? "auto-approve" : "manual";
|
|
573
|
+
const parentToolPolicies = parentSettings.permissions?.toolPolicies;
|
|
574
|
+
const mergeToolPolicies = (subAgentPolicies) => {
|
|
575
|
+
const alwaysAllow = [
|
|
576
|
+
...parentToolPolicies?.alwaysAllow ?? [],
|
|
577
|
+
...subAgentPolicies?.alwaysAllow ?? []
|
|
578
|
+
];
|
|
579
|
+
const alwaysDeny = [
|
|
580
|
+
...parentToolPolicies?.alwaysDeny ?? [],
|
|
581
|
+
...subAgentPolicies?.alwaysDeny ?? []
|
|
582
|
+
];
|
|
583
|
+
return {
|
|
584
|
+
alwaysAllow: Array.from(new Set(alwaysAllow)),
|
|
585
|
+
alwaysDeny: Array.from(new Set(alwaysDeny))
|
|
586
|
+
};
|
|
587
|
+
};
|
|
588
|
+
const inheritedLoggerConfig = await (async () => {
|
|
589
|
+
if (!sessionId) {
|
|
590
|
+
return void 0;
|
|
591
|
+
}
|
|
592
|
+
const session = await this.parentAgent.getSession(sessionId);
|
|
593
|
+
if (!session) {
|
|
594
|
+
return void 0;
|
|
595
|
+
}
|
|
596
|
+
const parentSessionLogPath = session.logger.getLogFilePath();
|
|
597
|
+
if (!parentSessionLogPath) {
|
|
598
|
+
return void 0;
|
|
599
|
+
}
|
|
600
|
+
const subAgentLogFilePath = this.getSubAgentLogFilePath({ runtimeAgentId, sessionId });
|
|
601
|
+
if (!subAgentLogFilePath) {
|
|
602
|
+
return void 0;
|
|
603
|
+
}
|
|
604
|
+
return {
|
|
605
|
+
level: session.logger.getLevel(),
|
|
606
|
+
transports: [{ type: "file", path: subAgentLogFilePath }]
|
|
607
|
+
};
|
|
608
|
+
})();
|
|
453
609
|
if (agentId) {
|
|
454
610
|
let configPath = null;
|
|
455
611
|
try {
|
|
@@ -487,18 +643,16 @@ class AgentSpawnerRuntime {
|
|
|
487
643
|
this.logger.debug(`Sub-agent LLM resolution: ${resolution.reason}`);
|
|
488
644
|
llmConfig = resolution.llm;
|
|
489
645
|
}
|
|
646
|
+
llmConfig = this.applySubAgentLlmPolicy(llmConfig);
|
|
490
647
|
return {
|
|
491
648
|
...loadedConfig,
|
|
492
649
|
llm: llmConfig,
|
|
493
650
|
permissions: {
|
|
494
651
|
...loadedConfig.permissions,
|
|
495
|
-
mode: permissionsMode
|
|
652
|
+
mode: permissionsMode,
|
|
653
|
+
toolPolicies: mergeToolPolicies(loadedConfig.permissions?.toolPolicies)
|
|
496
654
|
},
|
|
497
|
-
|
|
498
|
-
logger: {
|
|
499
|
-
level: "error",
|
|
500
|
-
transports: [{ type: "silent" }]
|
|
501
|
-
}
|
|
655
|
+
...inheritedLoggerConfig !== void 0 && { logger: inheritedLoggerConfig }
|
|
502
656
|
};
|
|
503
657
|
}
|
|
504
658
|
this.logger.warn(
|
|
@@ -506,19 +660,16 @@ class AgentSpawnerRuntime {
|
|
|
506
660
|
);
|
|
507
661
|
}
|
|
508
662
|
const config = {
|
|
509
|
-
llm: { ...currentParentLLM },
|
|
663
|
+
llm: this.applySubAgentLlmPolicy({ ...currentParentLLM }),
|
|
510
664
|
// Default system prompt for sub-agents
|
|
511
665
|
systemPrompt: "You are a helpful sub-agent. Complete the task given to you efficiently and concisely.",
|
|
512
666
|
permissions: {
|
|
513
|
-
mode: permissionsMode
|
|
667
|
+
mode: permissionsMode,
|
|
668
|
+
toolPolicies: mergeToolPolicies(void 0)
|
|
514
669
|
},
|
|
515
670
|
// Inherit MCP servers from parent so subagent has tool access
|
|
516
671
|
mcpServers: parentSettings.mcpServers ? { ...parentSettings.mcpServers } : {},
|
|
517
|
-
|
|
518
|
-
logger: {
|
|
519
|
-
level: "error",
|
|
520
|
-
transports: [{ type: "silent" }]
|
|
521
|
-
}
|
|
672
|
+
...inheritedLoggerConfig !== void 0 && { logger: inheritedLoggerConfig }
|
|
522
673
|
};
|
|
523
674
|
return config;
|
|
524
675
|
}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import type { DextoAgent, Logger, TaskForker } from '@dexto/core';
|
|
14
14
|
import type { AgentRegistryEntry } from '../../registry/types.js';
|
|
15
|
-
import type
|
|
15
|
+
import { type AgentSpawnerConfig } from './schemas.js';
|
|
16
16
|
import type { SpawnAgentOutput } from './types.js';
|
|
17
17
|
export declare class AgentSpawnerRuntime implements TaskForker {
|
|
18
18
|
private runtime;
|
|
@@ -20,6 +20,8 @@ export declare class AgentSpawnerRuntime implements TaskForker {
|
|
|
20
20
|
private parentAgent;
|
|
21
21
|
private config;
|
|
22
22
|
private logger;
|
|
23
|
+
private selectLowestReasoningVariant;
|
|
24
|
+
private applySubAgentLlmPolicy;
|
|
23
25
|
private resolveBundledAgentConfig;
|
|
24
26
|
private createFallbackRegistryEntry;
|
|
25
27
|
constructor(parentAgent: DextoAgent, config: AgentSpawnerConfig, logger: Logger);
|
|
@@ -85,6 +87,11 @@ export declare class AgentSpawnerRuntime implements TaskForker {
|
|
|
85
87
|
* @returns Cleanup function to unsubscribe from events
|
|
86
88
|
*/
|
|
87
89
|
private setupProgressTracking;
|
|
90
|
+
/**
|
|
91
|
+
* Ensure spawned agent inherits the parent's workspace context.
|
|
92
|
+
*/
|
|
93
|
+
private applyParentWorkspace;
|
|
94
|
+
private getSubAgentLogFilePath;
|
|
88
95
|
/**
|
|
89
96
|
* Check if an error is LLM-related (API errors, credit issues, model not found, etc.)
|
|
90
97
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/tool-factories/agent-spawner/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/tool-factories/agent-spawner/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAWlE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAIlE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAenD,qBAAa,mBAAoB,YAAW,UAAU;IAClD,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,4BAA4B;IAuBpC,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,yBAAyB;IAyBjC,OAAO,CAAC,2BAA2B;gBAYvB,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM;IAuB/E;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAIhB;;;;;;;;;;;;;;OAcG;IACG,eAAe,CAAC,KAAK,EAAE;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA8C7B;;;;;;;;;;OAUG;IACG,IAAI,CAAC,OAAO,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAIpE;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IA+G7B;;OAEG;YACW,oBAAoB;IA2BlC,OAAO,CAAC,sBAAsB;IAuB9B;;OAEG;IACH,OAAO,CAAC,UAAU;IAsBlB;;OAEG;YACW,oBAAoB;IA4RlC;;;;;;;OAOG;YACW,mBAAmB;IAmKjC;;;OAGG;IACH,kBAAkB,IAAI,kBAAkB,EAAE;IA6B1C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAIjC"}
|