@dexto/agent-management 1.5.1 → 1.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/config/discover-prompts.cjs +14 -4
  2. package/dist/config/discover-prompts.d.ts +4 -4
  3. package/dist/config/discover-prompts.d.ts.map +1 -1
  4. package/dist/config/discover-prompts.js +14 -4
  5. package/dist/index.cjs +6 -1
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +2 -0
  9. package/dist/runtime/AgentPool.cjs +181 -0
  10. package/dist/runtime/AgentPool.d.ts +76 -0
  11. package/dist/runtime/AgentPool.d.ts.map +1 -0
  12. package/dist/runtime/AgentPool.js +160 -0
  13. package/dist/runtime/AgentRuntime.cjs +225 -0
  14. package/dist/runtime/AgentRuntime.d.ts +77 -0
  15. package/dist/runtime/AgentRuntime.d.ts.map +1 -0
  16. package/dist/runtime/AgentRuntime.js +201 -0
  17. package/dist/runtime/approval-delegation.cjs +97 -0
  18. package/dist/runtime/approval-delegation.d.ts +30 -0
  19. package/dist/runtime/approval-delegation.d.ts.map +1 -0
  20. package/dist/runtime/approval-delegation.js +73 -0
  21. package/dist/runtime/error-codes.cjs +40 -0
  22. package/dist/runtime/error-codes.d.ts +17 -0
  23. package/dist/runtime/error-codes.d.ts.map +1 -0
  24. package/dist/runtime/error-codes.js +16 -0
  25. package/dist/runtime/errors.cjs +135 -0
  26. package/dist/runtime/errors.d.ts +40 -0
  27. package/dist/runtime/errors.d.ts.map +1 -0
  28. package/dist/runtime/errors.js +111 -0
  29. package/dist/runtime/index.cjs +53 -0
  30. package/dist/runtime/index.d.ts +19 -0
  31. package/dist/runtime/index.d.ts.map +1 -0
  32. package/dist/runtime/index.js +26 -0
  33. package/dist/runtime/schemas.cjs +64 -0
  34. package/dist/runtime/schemas.d.ts +69 -0
  35. package/dist/runtime/schemas.d.ts.map +1 -0
  36. package/dist/runtime/schemas.js +35 -0
  37. package/dist/runtime/types.cjs +16 -0
  38. package/dist/runtime/types.d.ts +94 -0
  39. package/dist/runtime/types.d.ts.map +1 -0
  40. package/dist/runtime/types.js +0 -0
  41. package/dist/tool-provider/error-codes.cjs +35 -0
  42. package/dist/tool-provider/error-codes.d.ts +11 -0
  43. package/dist/tool-provider/error-codes.d.ts.map +1 -0
  44. package/dist/tool-provider/error-codes.js +11 -0
  45. package/dist/tool-provider/errors.cjs +81 -0
  46. package/dist/tool-provider/errors.d.ts +19 -0
  47. package/dist/tool-provider/errors.d.ts.map +1 -0
  48. package/dist/tool-provider/errors.js +57 -0
  49. package/dist/tool-provider/index.cjs +46 -0
  50. package/dist/tool-provider/index.d.ts +16 -0
  51. package/dist/tool-provider/index.d.ts.map +1 -0
  52. package/dist/tool-provider/index.js +16 -0
  53. package/dist/tool-provider/runtime-service.cjs +370 -0
  54. package/dist/tool-provider/runtime-service.d.ts +83 -0
  55. package/dist/tool-provider/runtime-service.d.ts.map +1 -0
  56. package/dist/tool-provider/runtime-service.js +346 -0
  57. package/dist/tool-provider/schemas.cjs +73 -0
  58. package/dist/tool-provider/schemas.d.ts +83 -0
  59. package/dist/tool-provider/schemas.d.ts.map +1 -0
  60. package/dist/tool-provider/schemas.js +48 -0
  61. package/dist/tool-provider/spawn-agent-tool.cjs +89 -0
  62. package/dist/tool-provider/spawn-agent-tool.d.ts +10 -0
  63. package/dist/tool-provider/spawn-agent-tool.d.ts.map +1 -0
  64. package/dist/tool-provider/spawn-agent-tool.js +65 -0
  65. package/dist/tool-provider/tool-provider.cjs +44 -0
  66. package/dist/tool-provider/tool-provider.d.ts +24 -0
  67. package/dist/tool-provider/tool-provider.d.ts.map +1 -0
  68. package/dist/tool-provider/tool-provider.js +20 -0
  69. package/dist/tool-provider/types.cjs +16 -0
  70. package/dist/tool-provider/types.d.ts +17 -0
  71. package/dist/tool-provider/types.d.ts.map +1 -0
  72. package/dist/tool-provider/types.js +0 -0
  73. package/package.json +2 -2
@@ -98,13 +98,23 @@ function scanCommandsDirectory(dir) {
98
98
  }
99
99
  return files;
100
100
  }
101
- const AGENT_INSTRUCTION_FILES = ["agent.md", "claude.md", "gemini.md"];
101
+ const AGENT_INSTRUCTION_FILES = ["agents.md", "claude.md", "gemini.md"];
102
102
  function discoverAgentInstructionFile() {
103
103
  const cwd = process.cwd();
104
+ let dirEntries;
105
+ try {
106
+ dirEntries = (0, import_fs.readdirSync)(cwd);
107
+ } catch {
108
+ return null;
109
+ }
110
+ const lowercaseMap = /* @__PURE__ */ new Map();
111
+ for (const entry of dirEntries) {
112
+ lowercaseMap.set(entry.toLowerCase(), entry);
113
+ }
104
114
  for (const filename of AGENT_INSTRUCTION_FILES) {
105
- const filePath = path.join(cwd, filename);
106
- if ((0, import_fs.existsSync)(filePath)) {
107
- return filePath;
115
+ const actualFilename = lowercaseMap.get(filename);
116
+ if (actualFilename) {
117
+ return path.join(cwd, actualFilename);
108
118
  }
109
119
  }
110
120
  return null;
@@ -28,10 +28,10 @@ export declare function discoverCommandPrompts(): FilePromptEntry[];
28
28
  /**
29
29
  * Discovers agent instruction files from the current working directory.
30
30
  *
31
- * Looks for files in this order of priority:
32
- * 1. agent.md
33
- * 2. claude.md
34
- * 3. gemini.md
31
+ * Looks for files in this order of priority (case-insensitive):
32
+ * 1. AGENTS.md (or agents.md, Agents.md, etc.)
33
+ * 2. CLAUDE.md (or claude.md, Claude.md, etc.)
34
+ * 3. GEMINI.md (or gemini.md, Gemini.md, etc.)
35
35
  *
36
36
  * Only the first found file is returned (we don't want multiple instruction files).
37
37
  *
@@ -1 +1 @@
1
- {"version":3,"file":"discover-prompts.d.ts","sourceRoot":"","sources":["../../src/config/discover-prompts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,IAAI,eAAe,EAAE,CA8D1D;AA4BD;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,GAAG,IAAI,CAW5D"}
1
+ {"version":3,"file":"discover-prompts.d.ts","sourceRoot":"","sources":["../../src/config/discover-prompts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,IAAI,eAAe,EAAE,CA8D1D;AAiCD;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,GAAG,IAAI,CA0B5D"}
@@ -68,13 +68,23 @@ function scanCommandsDirectory(dir) {
68
68
  }
69
69
  return files;
70
70
  }
71
- const AGENT_INSTRUCTION_FILES = ["agent.md", "claude.md", "gemini.md"];
71
+ const AGENT_INSTRUCTION_FILES = ["agents.md", "claude.md", "gemini.md"];
72
72
  function discoverAgentInstructionFile() {
73
73
  const cwd = process.cwd();
74
+ let dirEntries;
75
+ try {
76
+ dirEntries = readdirSync(cwd);
77
+ } catch {
78
+ return null;
79
+ }
80
+ const lowercaseMap = /* @__PURE__ */ new Map();
81
+ for (const entry of dirEntries) {
82
+ lowercaseMap.set(entry.toLowerCase(), entry);
83
+ }
74
84
  for (const filename of AGENT_INSTRUCTION_FILES) {
75
- const filePath = path.join(cwd, filename);
76
- if (existsSync(filePath)) {
77
- return filePath;
85
+ const actualFilename = lowercaseMap.get(filename);
86
+ if (actualFilename) {
87
+ return path.join(cwd, actualFilename);
78
88
  }
79
89
  }
80
90
  return null;
package/dist/index.cjs CHANGED
@@ -15,6 +15,7 @@ var __copyProps = (to, from, except, desc) => {
15
15
  }
16
16
  return to;
17
17
  };
18
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
18
19
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
20
  var index_exports = {};
20
21
  __export(index_exports, {
@@ -135,6 +136,8 @@ var import_api_key_store = require("./utils/api-key-store.js");
135
136
  var import_api_key_resolver = require("./utils/api-key-resolver.js");
136
137
  var import_custom_models = require("./models/custom-models.js");
137
138
  var import_models = require("./models/index.js");
139
+ __reExport(index_exports, require("./runtime/index.js"), module.exports);
140
+ __reExport(index_exports, require("./tool-provider/index.js"), module.exports);
138
141
  // Annotate the CommonJS export names for ESM import in node:
139
142
  0 && (module.exports = {
140
143
  AgentFactory,
@@ -231,5 +234,7 @@ var import_models = require("./models/index.js");
231
234
  walkUpDirectories,
232
235
  writeConfigFile,
233
236
  writeLLMPreferences,
234
- writePreferencesToAgent
237
+ writePreferencesToAgent,
238
+ ...require("./runtime/index.js"),
239
+ ...require("./tool-provider/index.js")
235
240
  });
package/dist/index.d.ts CHANGED
@@ -20,4 +20,6 @@ export { saveProviderApiKey, getProviderKeyStatus, listProviderKeyStatus, determ
20
20
  export { resolveApiKeyForProvider, getPrimaryApiKeyEnvVar, PROVIDER_API_KEY_MAP, } from './utils/api-key-resolver.js';
21
21
  export { loadCustomModels, saveCustomModel, deleteCustomModel, getCustomModel, getCustomModelsPath, CustomModelSchema, CUSTOM_MODEL_PROVIDERS, type CustomModel, type CustomModelProvider, } from './models/custom-models.js';
22
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';
23
+ export * from './runtime/index.js';
24
+ export * from './tool-provider/index.js';
23
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACrF,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,EACH,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,GAChC,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG/E,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAG/E,OAAO,EACH,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,YAAY,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGrE,OAAO,EACH,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,KAAK,cAAc,GACtB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG1E,OAAO,EACH,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,MAAM,EACN,eAAe,EACf,oBAAoB,EACpB,0BAA0B,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,gBAAgB,GACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EACH,qBAAqB,EACrB,yBAAyB,EACzB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,WAAW,EACX,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,GAC5B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACH,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,KAAK,qBAAqB,GAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,GACvB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACH,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,WAAW,EAChB,KAAK,mBAAmB,GAC3B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAEH,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,EAEV,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACtB,MAAM,mBAAmB,CAAC;AAG3B,cAAc,oBAAoB,CAAC;AAGnC,cAAc,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -110,6 +110,8 @@ import {
110
110
  getInstalledModelCount,
111
111
  registerManualModel
112
112
  } from "./models/index.js";
113
+ export * from "./runtime/index.js";
114
+ export * from "./tool-provider/index.js";
113
115
  export {
114
116
  AgentFactory,
115
117
  AgentManager,
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var AgentPool_exports = {};
20
+ __export(AgentPool_exports, {
21
+ AgentPool: () => AgentPool
22
+ });
23
+ module.exports = __toCommonJS(AgentPool_exports);
24
+ var import_schemas = require("./schemas.js");
25
+ var import_errors = require("./errors.js");
26
+ class AgentPool {
27
+ agents = /* @__PURE__ */ new Map();
28
+ config;
29
+ logger;
30
+ constructor(config, logger) {
31
+ this.config = {
32
+ maxAgents: config.maxAgents ?? import_schemas.DEFAULT_MAX_AGENTS,
33
+ defaultTaskTimeout: config.defaultTaskTimeout ?? import_schemas.DEFAULT_TASK_TIMEOUT
34
+ };
35
+ this.logger = logger;
36
+ }
37
+ /**
38
+ * Add an agent handle to the pool
39
+ * @throws RuntimeError if agent with same ID already exists or limit exceeded
40
+ */
41
+ add(handle) {
42
+ if (this.agents.has(handle.agentId)) {
43
+ throw import_errors.RuntimeError.agentAlreadyExists(handle.agentId);
44
+ }
45
+ if (this.agents.size >= this.config.maxAgents) {
46
+ throw import_errors.RuntimeError.maxAgentsExceeded(this.agents.size, this.config.maxAgents);
47
+ }
48
+ this.agents.set(handle.agentId, handle);
49
+ this.logger.debug(
50
+ `Added agent '${handle.agentId}' to pool${handle.group ? ` (group: ${handle.group})` : ""}`
51
+ );
52
+ }
53
+ /**
54
+ * Remove an agent from the pool
55
+ * @returns The removed handle, or undefined if not found
56
+ */
57
+ remove(agentId) {
58
+ const handle = this.agents.get(agentId);
59
+ if (handle) {
60
+ this.agents.delete(agentId);
61
+ this.logger.debug(`Removed agent '${agentId}' from pool`);
62
+ }
63
+ return handle;
64
+ }
65
+ /**
66
+ * Get an agent handle by ID
67
+ */
68
+ get(agentId) {
69
+ return this.agents.get(agentId);
70
+ }
71
+ /**
72
+ * Check if another agent can be spawned
73
+ */
74
+ canSpawn() {
75
+ return this.agents.size < this.config.maxAgents;
76
+ }
77
+ /**
78
+ * List agents matching the given filter
79
+ */
80
+ list(filter) {
81
+ if (!filter) {
82
+ return Array.from(this.agents.values());
83
+ }
84
+ const results = [];
85
+ for (const handle of this.agents.values()) {
86
+ if (this.matchesFilter(handle, filter)) {
87
+ results.push(handle);
88
+ }
89
+ }
90
+ return results;
91
+ }
92
+ /**
93
+ * Get all agents in a specific group
94
+ */
95
+ getByGroup(group) {
96
+ return this.list({ group });
97
+ }
98
+ /**
99
+ * Get the count of agents in a specific group
100
+ */
101
+ getGroupCount(group) {
102
+ return this.getByGroup(group).length;
103
+ }
104
+ /**
105
+ * Update the status of an agent
106
+ * @throws RuntimeError if agent not found
107
+ */
108
+ updateStatus(agentId, status, error) {
109
+ const handle = this.agents.get(agentId);
110
+ if (!handle) {
111
+ throw import_errors.RuntimeError.agentNotFound(agentId);
112
+ }
113
+ const previousStatus = handle.status;
114
+ handle.status = status;
115
+ if (status !== "error") {
116
+ delete handle.error;
117
+ } else if (error !== void 0) {
118
+ handle.error = error;
119
+ }
120
+ this.logger.debug(
121
+ `Agent '${agentId}' status changed: ${previousStatus} -> ${status}${error ? ` (error: ${error})` : ""}`
122
+ );
123
+ }
124
+ /**
125
+ * Check if an agent exists in the pool
126
+ */
127
+ has(agentId) {
128
+ return this.agents.has(agentId);
129
+ }
130
+ /**
131
+ * Get all agent handles in the pool
132
+ */
133
+ getAll() {
134
+ return Array.from(this.agents.values());
135
+ }
136
+ /**
137
+ * Get the total count of agents in the pool
138
+ */
139
+ get size() {
140
+ return this.agents.size;
141
+ }
142
+ /**
143
+ * Get the configuration
144
+ */
145
+ getConfig() {
146
+ return { ...this.config };
147
+ }
148
+ /**
149
+ * Clear all agents from the pool
150
+ * Note: This does NOT stop the agents - use AgentRuntime.stopAll instead
151
+ */
152
+ clear() {
153
+ const count = this.agents.size;
154
+ this.agents.clear();
155
+ if (count > 0) {
156
+ this.logger.debug(`Cleared ${count} agents from pool`);
157
+ }
158
+ }
159
+ /**
160
+ * Check if an agent handle matches a filter
161
+ */
162
+ matchesFilter(handle, filter) {
163
+ if (filter.group !== void 0 && handle.group !== filter.group) {
164
+ return false;
165
+ }
166
+ if (filter.status !== void 0) {
167
+ const statuses = Array.isArray(filter.status) ? filter.status : [filter.status];
168
+ if (!statuses.includes(handle.status)) {
169
+ return false;
170
+ }
171
+ }
172
+ if (filter.ephemeral !== void 0 && handle.ephemeral !== filter.ephemeral) {
173
+ return false;
174
+ }
175
+ return true;
176
+ }
177
+ }
178
+ // Annotate the CommonJS export names for ESM import in node:
179
+ 0 && (module.exports = {
180
+ AgentPool
181
+ });
@@ -0,0 +1,76 @@
1
+ /**
2
+ * AgentPool - Manages a pool of agent instances
3
+ *
4
+ * Tracks active agents, enforces resource limits, and provides
5
+ * lookup and lifecycle management capabilities.
6
+ */
7
+ import type { IDextoLogger } from '@dexto/core';
8
+ import type { AgentHandle, AgentStatus, AgentFilter } from './types.js';
9
+ import { type ValidatedAgentRuntimeConfig } from './schemas.js';
10
+ export declare class AgentPool {
11
+ private agents;
12
+ private config;
13
+ private logger;
14
+ constructor(config: Partial<ValidatedAgentRuntimeConfig>, logger: IDextoLogger);
15
+ /**
16
+ * Add an agent handle to the pool
17
+ * @throws RuntimeError if agent with same ID already exists or limit exceeded
18
+ */
19
+ add(handle: AgentHandle): void;
20
+ /**
21
+ * Remove an agent from the pool
22
+ * @returns The removed handle, or undefined if not found
23
+ */
24
+ remove(agentId: string): AgentHandle | undefined;
25
+ /**
26
+ * Get an agent handle by ID
27
+ */
28
+ get(agentId: string): AgentHandle | undefined;
29
+ /**
30
+ * Check if another agent can be spawned
31
+ */
32
+ canSpawn(): boolean;
33
+ /**
34
+ * List agents matching the given filter
35
+ */
36
+ list(filter?: AgentFilter): AgentHandle[];
37
+ /**
38
+ * Get all agents in a specific group
39
+ */
40
+ getByGroup(group: string): AgentHandle[];
41
+ /**
42
+ * Get the count of agents in a specific group
43
+ */
44
+ getGroupCount(group: string): number;
45
+ /**
46
+ * Update the status of an agent
47
+ * @throws RuntimeError if agent not found
48
+ */
49
+ updateStatus(agentId: string, status: AgentStatus, error?: string): void;
50
+ /**
51
+ * Check if an agent exists in the pool
52
+ */
53
+ has(agentId: string): boolean;
54
+ /**
55
+ * Get all agent handles in the pool
56
+ */
57
+ getAll(): AgentHandle[];
58
+ /**
59
+ * Get the total count of agents in the pool
60
+ */
61
+ get size(): number;
62
+ /**
63
+ * Get the configuration
64
+ */
65
+ getConfig(): ValidatedAgentRuntimeConfig;
66
+ /**
67
+ * Clear all agents from the pool
68
+ * Note: This does NOT stop the agents - use AgentRuntime.stopAll instead
69
+ */
70
+ clear(): void;
71
+ /**
72
+ * Check if an agent handle matches a filter
73
+ */
74
+ private matchesFilter;
75
+ }
76
+ //# sourceMappingURL=AgentPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentPool.d.ts","sourceRoot":"","sources":["../../src/runtime/AgentPool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAGH,KAAK,2BAA2B,EACnC,MAAM,cAAc,CAAC;AAGtB,qBAAa,SAAS;IAClB,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,OAAO,CAAC,2BAA2B,CAAC,EAAE,MAAM,EAAE,YAAY;IAQ9E;;;OAGG;IACH,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAe9B;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAShD;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI7C;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE;IAczC;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE;IAIxC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIpC;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAmBxE;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7B;;OAEG;IACH,MAAM,IAAI,WAAW,EAAE;IAIvB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,SAAS,IAAI,2BAA2B;IAIxC;;;OAGG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,OAAO,CAAC,aAAa;CAqBxB"}
@@ -0,0 +1,160 @@
1
+ import {
2
+ DEFAULT_MAX_AGENTS,
3
+ DEFAULT_TASK_TIMEOUT
4
+ } from "./schemas.js";
5
+ import { RuntimeError } from "./errors.js";
6
+ class AgentPool {
7
+ agents = /* @__PURE__ */ new Map();
8
+ config;
9
+ logger;
10
+ constructor(config, logger) {
11
+ this.config = {
12
+ maxAgents: config.maxAgents ?? DEFAULT_MAX_AGENTS,
13
+ defaultTaskTimeout: config.defaultTaskTimeout ?? DEFAULT_TASK_TIMEOUT
14
+ };
15
+ this.logger = logger;
16
+ }
17
+ /**
18
+ * Add an agent handle to the pool
19
+ * @throws RuntimeError if agent with same ID already exists or limit exceeded
20
+ */
21
+ add(handle) {
22
+ if (this.agents.has(handle.agentId)) {
23
+ throw RuntimeError.agentAlreadyExists(handle.agentId);
24
+ }
25
+ if (this.agents.size >= this.config.maxAgents) {
26
+ throw RuntimeError.maxAgentsExceeded(this.agents.size, this.config.maxAgents);
27
+ }
28
+ this.agents.set(handle.agentId, handle);
29
+ this.logger.debug(
30
+ `Added agent '${handle.agentId}' to pool${handle.group ? ` (group: ${handle.group})` : ""}`
31
+ );
32
+ }
33
+ /**
34
+ * Remove an agent from the pool
35
+ * @returns The removed handle, or undefined if not found
36
+ */
37
+ remove(agentId) {
38
+ const handle = this.agents.get(agentId);
39
+ if (handle) {
40
+ this.agents.delete(agentId);
41
+ this.logger.debug(`Removed agent '${agentId}' from pool`);
42
+ }
43
+ return handle;
44
+ }
45
+ /**
46
+ * Get an agent handle by ID
47
+ */
48
+ get(agentId) {
49
+ return this.agents.get(agentId);
50
+ }
51
+ /**
52
+ * Check if another agent can be spawned
53
+ */
54
+ canSpawn() {
55
+ return this.agents.size < this.config.maxAgents;
56
+ }
57
+ /**
58
+ * List agents matching the given filter
59
+ */
60
+ list(filter) {
61
+ if (!filter) {
62
+ return Array.from(this.agents.values());
63
+ }
64
+ const results = [];
65
+ for (const handle of this.agents.values()) {
66
+ if (this.matchesFilter(handle, filter)) {
67
+ results.push(handle);
68
+ }
69
+ }
70
+ return results;
71
+ }
72
+ /**
73
+ * Get all agents in a specific group
74
+ */
75
+ getByGroup(group) {
76
+ return this.list({ group });
77
+ }
78
+ /**
79
+ * Get the count of agents in a specific group
80
+ */
81
+ getGroupCount(group) {
82
+ return this.getByGroup(group).length;
83
+ }
84
+ /**
85
+ * Update the status of an agent
86
+ * @throws RuntimeError if agent not found
87
+ */
88
+ updateStatus(agentId, status, error) {
89
+ const handle = this.agents.get(agentId);
90
+ if (!handle) {
91
+ throw RuntimeError.agentNotFound(agentId);
92
+ }
93
+ const previousStatus = handle.status;
94
+ handle.status = status;
95
+ if (status !== "error") {
96
+ delete handle.error;
97
+ } else if (error !== void 0) {
98
+ handle.error = error;
99
+ }
100
+ this.logger.debug(
101
+ `Agent '${agentId}' status changed: ${previousStatus} -> ${status}${error ? ` (error: ${error})` : ""}`
102
+ );
103
+ }
104
+ /**
105
+ * Check if an agent exists in the pool
106
+ */
107
+ has(agentId) {
108
+ return this.agents.has(agentId);
109
+ }
110
+ /**
111
+ * Get all agent handles in the pool
112
+ */
113
+ getAll() {
114
+ return Array.from(this.agents.values());
115
+ }
116
+ /**
117
+ * Get the total count of agents in the pool
118
+ */
119
+ get size() {
120
+ return this.agents.size;
121
+ }
122
+ /**
123
+ * Get the configuration
124
+ */
125
+ getConfig() {
126
+ return { ...this.config };
127
+ }
128
+ /**
129
+ * Clear all agents from the pool
130
+ * Note: This does NOT stop the agents - use AgentRuntime.stopAll instead
131
+ */
132
+ clear() {
133
+ const count = this.agents.size;
134
+ this.agents.clear();
135
+ if (count > 0) {
136
+ this.logger.debug(`Cleared ${count} agents from pool`);
137
+ }
138
+ }
139
+ /**
140
+ * Check if an agent handle matches a filter
141
+ */
142
+ matchesFilter(handle, filter) {
143
+ if (filter.group !== void 0 && handle.group !== filter.group) {
144
+ return false;
145
+ }
146
+ if (filter.status !== void 0) {
147
+ const statuses = Array.isArray(filter.status) ? filter.status : [filter.status];
148
+ if (!statuses.includes(handle.status)) {
149
+ return false;
150
+ }
151
+ }
152
+ if (filter.ephemeral !== void 0 && handle.ephemeral !== filter.ephemeral) {
153
+ return false;
154
+ }
155
+ return true;
156
+ }
157
+ }
158
+ export {
159
+ AgentPool
160
+ };