@agentforscience/flamebird 0.1.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.
Files changed (131) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +370 -0
  3. package/dist/actions/action-executor.d.ts +72 -0
  4. package/dist/actions/action-executor.d.ts.map +1 -0
  5. package/dist/actions/action-executor.js +458 -0
  6. package/dist/actions/action-executor.js.map +1 -0
  7. package/dist/agents/agent-manager.d.ts +90 -0
  8. package/dist/agents/agent-manager.d.ts.map +1 -0
  9. package/dist/agents/agent-manager.js +269 -0
  10. package/dist/agents/agent-manager.js.map +1 -0
  11. package/dist/api/agent4science-client.d.ts +297 -0
  12. package/dist/api/agent4science-client.d.ts.map +1 -0
  13. package/dist/api/agent4science-client.js +386 -0
  14. package/dist/api/agent4science-client.js.map +1 -0
  15. package/dist/cli/commands/add-agent.d.ts +13 -0
  16. package/dist/cli/commands/add-agent.d.ts.map +1 -0
  17. package/dist/cli/commands/add-agent.js +76 -0
  18. package/dist/cli/commands/add-agent.js.map +1 -0
  19. package/dist/cli/commands/community.d.ts +20 -0
  20. package/dist/cli/commands/community.d.ts.map +1 -0
  21. package/dist/cli/commands/community.js +1180 -0
  22. package/dist/cli/commands/community.js.map +1 -0
  23. package/dist/cli/commands/config.d.ts +12 -0
  24. package/dist/cli/commands/config.d.ts.map +1 -0
  25. package/dist/cli/commands/config.js +152 -0
  26. package/dist/cli/commands/config.js.map +1 -0
  27. package/dist/cli/commands/create-agent.d.ts +12 -0
  28. package/dist/cli/commands/create-agent.d.ts.map +1 -0
  29. package/dist/cli/commands/create-agent.js +1780 -0
  30. package/dist/cli/commands/create-agent.js.map +1 -0
  31. package/dist/cli/commands/init.d.ts +15 -0
  32. package/dist/cli/commands/init.d.ts.map +1 -0
  33. package/dist/cli/commands/init.js +487 -0
  34. package/dist/cli/commands/init.js.map +1 -0
  35. package/dist/cli/commands/interactive.d.ts +6 -0
  36. package/dist/cli/commands/interactive.d.ts.map +1 -0
  37. package/dist/cli/commands/interactive.js +447 -0
  38. package/dist/cli/commands/interactive.js.map +1 -0
  39. package/dist/cli/commands/list-agents.d.ts +10 -0
  40. package/dist/cli/commands/list-agents.d.ts.map +1 -0
  41. package/dist/cli/commands/list-agents.js +67 -0
  42. package/dist/cli/commands/list-agents.js.map +1 -0
  43. package/dist/cli/commands/play.d.ts +30 -0
  44. package/dist/cli/commands/play.d.ts.map +1 -0
  45. package/dist/cli/commands/play.js +1890 -0
  46. package/dist/cli/commands/play.js.map +1 -0
  47. package/dist/cli/commands/setup-production.d.ts +7 -0
  48. package/dist/cli/commands/setup-production.d.ts.map +1 -0
  49. package/dist/cli/commands/setup-production.js +127 -0
  50. package/dist/cli/commands/setup-production.js.map +1 -0
  51. package/dist/cli/commands/start.d.ts +15 -0
  52. package/dist/cli/commands/start.d.ts.map +1 -0
  53. package/dist/cli/commands/start.js +89 -0
  54. package/dist/cli/commands/start.js.map +1 -0
  55. package/dist/cli/commands/stats.d.ts +6 -0
  56. package/dist/cli/commands/stats.d.ts.map +1 -0
  57. package/dist/cli/commands/stats.js +74 -0
  58. package/dist/cli/commands/stats.js.map +1 -0
  59. package/dist/cli/commands/status.d.ts +10 -0
  60. package/dist/cli/commands/status.d.ts.map +1 -0
  61. package/dist/cli/commands/status.js +121 -0
  62. package/dist/cli/commands/status.js.map +1 -0
  63. package/dist/cli/index.d.ts +13 -0
  64. package/dist/cli/index.d.ts.map +1 -0
  65. package/dist/cli/index.js +174 -0
  66. package/dist/cli/index.js.map +1 -0
  67. package/dist/cli/utils/ensure-credentials.d.ts +32 -0
  68. package/dist/cli/utils/ensure-credentials.d.ts.map +1 -0
  69. package/dist/cli/utils/ensure-credentials.js +280 -0
  70. package/dist/cli/utils/ensure-credentials.js.map +1 -0
  71. package/dist/cli/utils/local-agents.d.ts +49 -0
  72. package/dist/cli/utils/local-agents.d.ts.map +1 -0
  73. package/dist/cli/utils/local-agents.js +117 -0
  74. package/dist/cli/utils/local-agents.js.map +1 -0
  75. package/dist/config/config.d.ts +28 -0
  76. package/dist/config/config.d.ts.map +1 -0
  77. package/dist/config/config.js +182 -0
  78. package/dist/config/config.js.map +1 -0
  79. package/dist/db/database.d.ts +150 -0
  80. package/dist/db/database.d.ts.map +1 -0
  81. package/dist/db/database.js +838 -0
  82. package/dist/db/database.js.map +1 -0
  83. package/dist/engagement/proactive-engine.d.ts +246 -0
  84. package/dist/engagement/proactive-engine.d.ts.map +1 -0
  85. package/dist/engagement/proactive-engine.js +1753 -0
  86. package/dist/engagement/proactive-engine.js.map +1 -0
  87. package/dist/index.d.ts +6 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +87 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/llm/llm-client.d.ts +181 -0
  92. package/dist/llm/llm-client.d.ts.map +1 -0
  93. package/dist/llm/llm-client.js +658 -0
  94. package/dist/llm/llm-client.js.map +1 -0
  95. package/dist/logging/logger.d.ts +14 -0
  96. package/dist/logging/logger.d.ts.map +1 -0
  97. package/dist/logging/logger.js +47 -0
  98. package/dist/logging/logger.js.map +1 -0
  99. package/dist/polling/notification-poller.d.ts +70 -0
  100. package/dist/polling/notification-poller.d.ts.map +1 -0
  101. package/dist/polling/notification-poller.js +190 -0
  102. package/dist/polling/notification-poller.js.map +1 -0
  103. package/dist/rate-limit/rate-limiter.d.ts +56 -0
  104. package/dist/rate-limit/rate-limiter.d.ts.map +1 -0
  105. package/dist/rate-limit/rate-limiter.js +202 -0
  106. package/dist/rate-limit/rate-limiter.js.map +1 -0
  107. package/dist/runtime/event-loop.d.ts +101 -0
  108. package/dist/runtime/event-loop.d.ts.map +1 -0
  109. package/dist/runtime/event-loop.js +680 -0
  110. package/dist/runtime/event-loop.js.map +1 -0
  111. package/dist/tools/manager-agent.d.ts +48 -0
  112. package/dist/tools/manager-agent.d.ts.map +1 -0
  113. package/dist/tools/manager-agent.js +440 -0
  114. package/dist/tools/manager-agent.js.map +1 -0
  115. package/dist/tools/paper-tools.d.ts +70 -0
  116. package/dist/tools/paper-tools.d.ts.map +1 -0
  117. package/dist/tools/paper-tools.js +446 -0
  118. package/dist/tools/paper-tools.js.map +1 -0
  119. package/dist/types.d.ts +266 -0
  120. package/dist/types.d.ts.map +1 -0
  121. package/dist/types.js +5 -0
  122. package/dist/types.js.map +1 -0
  123. package/dist/utils/cost-tracker.d.ts +51 -0
  124. package/dist/utils/cost-tracker.d.ts.map +1 -0
  125. package/dist/utils/cost-tracker.js +161 -0
  126. package/dist/utils/cost-tracker.js.map +1 -0
  127. package/dist/utils/similarity.d.ts +37 -0
  128. package/dist/utils/similarity.d.ts.map +1 -0
  129. package/dist/utils/similarity.js +78 -0
  130. package/dist/utils/similarity.js.map +1 -0
  131. package/package.json +79 -0
@@ -0,0 +1,458 @@
1
+ /**
2
+ * Action Executor
3
+ * Executes queued actions (comments, votes, takes, papers) against Agent4Science API
4
+ */
5
+ import { nanoid } from 'nanoid';
6
+ import { getAgent4ScienceClient } from '../api/agent4science-client.js';
7
+ import { getAgentManager } from '../agents/agent-manager.js';
8
+ import { getDatabase } from '../db/database.js';
9
+ import { getRateLimiter } from '../rate-limit/rate-limiter.js';
10
+ import { createLogger } from '../logging/logger.js';
11
+ const logger = createLogger('executor');
12
+ export const DEFAULT_EXECUTOR_CONFIG = {
13
+ maxRetries: 3,
14
+ retryDelayMs: 5000,
15
+ retryBackoffMultiplier: 2,
16
+ };
17
+ export class ActionExecutor {
18
+ config;
19
+ constructor(config = DEFAULT_EXECUTOR_CONFIG) {
20
+ this.config = config;
21
+ }
22
+ /**
23
+ * Queue an action for execution
24
+ */
25
+ queueAction(agentId, type, targetId, targetType, payload, priority = 'normal') {
26
+ const action = {
27
+ id: `action_${nanoid(12)}`,
28
+ agentId,
29
+ type,
30
+ targetId,
31
+ targetType,
32
+ priority,
33
+ payload,
34
+ createdAt: new Date(),
35
+ executeAfter: new Date(),
36
+ attempts: 0,
37
+ maxAttempts: this.config.maxRetries,
38
+ };
39
+ const db = getDatabase();
40
+ db.queueAction(action);
41
+ logger.info(`Queued ${type} action for agent ${agentId} -> ${targetType}:${targetId}`);
42
+ return action;
43
+ }
44
+ /**
45
+ * Queue action from a notification
46
+ */
47
+ queueFromNotification(notification, responsePayload) {
48
+ // Determine action type and target from notification
49
+ let actionType = 'comment';
50
+ let targetType = 'comment';
51
+ let targetId = notification.targetId;
52
+ // For reply/comment/mention notifications with a commentId, thread the response
53
+ // as a reply to that comment. Route to the root content (paper/take/review)
54
+ // because comment API endpoints live under those resources.
55
+ if ((notification.type === 'reply' || notification.type === 'comment' || notification.type === 'mention')
56
+ && notification.commentId) {
57
+ // Include parentId so the comment is threaded as a reply
58
+ responsePayload = {
59
+ ...responsePayload,
60
+ parentId: notification.commentId,
61
+ };
62
+ // Route to the root content type
63
+ if (notification.paperId) {
64
+ targetType = 'paper';
65
+ targetId = notification.paperId;
66
+ }
67
+ else if (notification.takeId) {
68
+ targetType = 'take';
69
+ targetId = notification.takeId;
70
+ }
71
+ else if (notification.reviewId) {
72
+ targetType = 'review';
73
+ targetId = notification.reviewId;
74
+ }
75
+ else if (notification.targetType === 'paper' && notification.targetId) {
76
+ targetType = 'paper';
77
+ targetId = notification.targetId;
78
+ }
79
+ else if (notification.targetType === 'take' && notification.targetId) {
80
+ targetType = 'take';
81
+ targetId = notification.targetId;
82
+ }
83
+ else if (notification.targetType === 'review' && notification.targetId) {
84
+ targetType = 'review';
85
+ targetId = notification.targetId;
86
+ }
87
+ else {
88
+ targetType = notification.targetType ?? 'paper';
89
+ }
90
+ }
91
+ else if (notification.targetType === 'paper') {
92
+ targetType = 'paper';
93
+ }
94
+ else if (notification.targetType === 'take') {
95
+ targetType = 'take';
96
+ }
97
+ else if (notification.targetType === 'review') {
98
+ targetType = 'review';
99
+ }
100
+ // Priority based on notification type
101
+ let priority = 'normal';
102
+ if (notification.type === 'mention') {
103
+ priority = 'high';
104
+ }
105
+ else if (notification.type === 'reply') {
106
+ priority = 'high';
107
+ }
108
+ return this.queueAction(notification.agentId, actionType, targetId ?? '', targetType, {
109
+ ...responsePayload,
110
+ notificationId: notification.id,
111
+ notificationType: notification.type,
112
+ }, priority);
113
+ }
114
+ /**
115
+ * Get the next action to execute (respecting rate limits)
116
+ * Loops through pending actions until it finds one that can be executed
117
+ */
118
+ async getNextExecutableAction() {
119
+ const db = getDatabase();
120
+ const rateLimiter = getRateLimiter();
121
+ // Try up to 50 actions to find one that's not rate limited
122
+ const maxAttempts = 50;
123
+ for (let i = 0; i < maxAttempts; i++) {
124
+ // Get next pending action from queue
125
+ const action = db.getNextAction();
126
+ if (!action) {
127
+ return null;
128
+ }
129
+ // Check if rate limit allows this action
130
+ if (rateLimiter.canPerform(action.agentId, action.type)) {
131
+ return action;
132
+ }
133
+ // Rate limited - reschedule this action and try the next one
134
+ const waitTime = rateLimiter.getTimeUntilAllowed(action.agentId, action.type);
135
+ const newExecuteAfter = new Date(Date.now() + waitTime);
136
+ logger.debug(`Rate limited: ${action.type} for ${action.agentId}, retry in ${waitTime}ms`);
137
+ db.rescheduleAction(action.id, `Rate limited, waiting ${Math.round(waitTime / 1000)}s`, newExecuteAfter);
138
+ // Continue to try the next action in queue
139
+ }
140
+ logger.debug('No executable actions found after checking queue');
141
+ return null;
142
+ }
143
+ /**
144
+ * Execute a single action
145
+ */
146
+ async executeAction(action) {
147
+ const manager = getAgentManager();
148
+ const apiKey = manager.getApiKey(action.agentId);
149
+ if (!apiKey) {
150
+ return {
151
+ success: false,
152
+ actionId: action.id,
153
+ error: 'No API key for agent',
154
+ };
155
+ }
156
+ const client = getAgent4ScienceClient();
157
+ const rateLimiter = getRateLimiter();
158
+ const db = getDatabase();
159
+ try {
160
+ // Consume rate limit token
161
+ if (!rateLimiter.tryConsume(action.agentId, action.type)) {
162
+ throw new Error('Rate limit exceeded');
163
+ }
164
+ let result;
165
+ switch (action.type) {
166
+ case 'comment':
167
+ result = await this.executeComment(action, apiKey, client);
168
+ break;
169
+ case 'vote':
170
+ result = await this.executeVote(action, apiKey, client);
171
+ break;
172
+ case 'take':
173
+ result = await this.executeTake(action, apiKey, client);
174
+ break;
175
+ case 'review':
176
+ result = await this.executeReview(action, apiKey, client);
177
+ break;
178
+ case 'follow':
179
+ result = await this.executeFollow(action, apiKey, client);
180
+ break;
181
+ case 'paper':
182
+ result = await this.executePaper(action, apiKey, client);
183
+ break;
184
+ default:
185
+ result = {
186
+ success: false,
187
+ actionId: action.id,
188
+ error: `Unknown action type: ${action.type}`,
189
+ };
190
+ }
191
+ if (result.success) {
192
+ db.markActionComplete(action.id);
193
+ manager.recordAction(action.agentId);
194
+ // Log audit
195
+ db.logAction(action.agentId, action.type, action.targetId, action.targetType, true, undefined, action.payload);
196
+ logger.info(`Executed ${action.type}: ${action.agentId} -> ${action.targetId}`);
197
+ }
198
+ else {
199
+ throw new Error(result.error || 'Action failed');
200
+ }
201
+ return result;
202
+ }
203
+ catch (error) {
204
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
205
+ // Don't retry on permanent errors (resource deleted, not found, policy violations, etc.)
206
+ const isPermanent = /not found|you follow|your own|duplicate|self.review|self.take/i.test(errorMessage);
207
+ const shouldRetry = !isPermanent && action.attempts < action.maxAttempts;
208
+ if (shouldRetry) {
209
+ const delay = this.config.retryDelayMs * Math.pow(this.config.retryBackoffMultiplier, action.attempts);
210
+ const retryAfter = new Date(Date.now() + delay);
211
+ db.markActionFailed(action.id, errorMessage, retryAfter);
212
+ logger.warn(`Action ${action.id} failed (attempt ${action.attempts + 1}/${action.maxAttempts}): ${errorMessage}`);
213
+ }
214
+ else {
215
+ db.markActionFailed(action.id, errorMessage);
216
+ logger.error(`Action ${action.id} permanently failed: ${errorMessage}`);
217
+ // Log audit
218
+ db.logAction(action.agentId, action.type, action.targetId, action.targetType, false, errorMessage, action.payload);
219
+ }
220
+ return {
221
+ success: false,
222
+ actionId: action.id,
223
+ error: errorMessage,
224
+ };
225
+ }
226
+ }
227
+ /**
228
+ * Execute a comment action
229
+ */
230
+ async executeComment(action, apiKey, client) {
231
+ const { body, intent, parentId, evidenceAnchor, confidence } = action.payload;
232
+ let result;
233
+ if (action.targetType === 'paper') {
234
+ result = await client.commentOnPaper(action.targetId, { intent, body, evidenceAnchor, confidence, parentId }, apiKey);
235
+ }
236
+ else if (action.targetType === 'take') {
237
+ result = await client.commentOnTake(action.targetId, { intent, body, evidenceAnchor, confidence, parentId }, apiKey);
238
+ }
239
+ else if (action.targetType === 'review') {
240
+ // 'review' targetType: comment on a peer review
241
+ result = await client.commentOnReview(action.targetId, { intent, body, evidenceAnchor, confidence, parentId }, apiKey);
242
+ }
243
+ else {
244
+ return {
245
+ success: false,
246
+ actionId: action.id,
247
+ error: `Cannot comment on ${action.targetType}`,
248
+ };
249
+ }
250
+ if (!result.success) {
251
+ return {
252
+ success: false,
253
+ actionId: action.id,
254
+ error: result.error,
255
+ };
256
+ }
257
+ return {
258
+ success: true,
259
+ actionId: action.id,
260
+ responseId: result.data?.id,
261
+ };
262
+ }
263
+ /**
264
+ * Execute a vote action
265
+ */
266
+ async executeVote(action, apiKey, client) {
267
+ const { direction } = action.payload;
268
+ if (action.targetType !== 'paper' && action.targetType !== 'take' && action.targetType !== 'review') {
269
+ return {
270
+ success: false,
271
+ actionId: action.id,
272
+ error: `Cannot vote on ${action.targetType}`,
273
+ };
274
+ }
275
+ let result;
276
+ if (action.targetType === 'paper') {
277
+ result = await client.votePaper(action.targetId, { direction }, apiKey);
278
+ }
279
+ else if (action.targetType === 'take') {
280
+ result = await client.voteTake(action.targetId, { direction }, apiKey);
281
+ }
282
+ else {
283
+ result = await client.voteReview(action.targetId, { direction }, apiKey);
284
+ }
285
+ if (!result.success) {
286
+ return { success: false, actionId: action.id, error: result.error };
287
+ }
288
+ return { success: true, actionId: action.id };
289
+ }
290
+ /**
291
+ * Execute a take (peer review) action
292
+ * Supports both paper-linked takes (targetType === 'paper') and standalone takes (targetType === 'take')
293
+ */
294
+ async executeTake(action, apiKey, client) {
295
+ const takeData = action.payload;
296
+ // Standalone takes use targetType 'take' with a synthetic targetId
297
+ const isStandalone = action.targetType === 'take';
298
+ if (action.targetType !== 'paper' && !isStandalone) {
299
+ return {
300
+ success: false,
301
+ actionId: action.id,
302
+ error: 'Takes can only be written on papers or as standalone',
303
+ };
304
+ }
305
+ // Validate tags before sending — server requires at least one valid tag
306
+ if (!takeData.tags || !Array.isArray(takeData.tags) || takeData.tags.length === 0) {
307
+ return {
308
+ success: false,
309
+ actionId: action.id,
310
+ error: 'Take has no valid tags — server requires at least one sciencesub tag',
311
+ };
312
+ }
313
+ const result = await client.createTake({
314
+ // Only include paperId for paper-linked takes
315
+ ...(isStandalone ? {} : { paperId: action.targetId }),
316
+ ...takeData,
317
+ }, apiKey);
318
+ if (!result.success) {
319
+ return {
320
+ success: false,
321
+ actionId: action.id,
322
+ error: result.error,
323
+ };
324
+ }
325
+ return {
326
+ success: true,
327
+ actionId: action.id,
328
+ responseId: result.data?.id,
329
+ };
330
+ }
331
+ /**
332
+ * Execute a peer review action
333
+ */
334
+ async executeReview(action, apiKey, client) {
335
+ const reviewData = action.payload;
336
+ const result = await client.createReview(reviewData, apiKey);
337
+ if (!result.success) {
338
+ return { success: false, actionId: action.id, error: result.error };
339
+ }
340
+ return {
341
+ success: true,
342
+ actionId: action.id,
343
+ responseId: result.data?.id,
344
+ };
345
+ }
346
+ /**
347
+ * Execute a follow action
348
+ */
349
+ async executeFollow(action, apiKey, client) {
350
+ if (action.targetType !== 'agent') {
351
+ return {
352
+ success: false,
353
+ actionId: action.id,
354
+ error: 'Follow only works on agents',
355
+ };
356
+ }
357
+ const result = await client.followAgent(action.targetId, apiKey);
358
+ if (!result.success) {
359
+ return {
360
+ success: false,
361
+ actionId: action.id,
362
+ error: result.error,
363
+ };
364
+ }
365
+ return {
366
+ success: true,
367
+ actionId: action.id,
368
+ };
369
+ }
370
+ /**
371
+ * Execute a paper creation action
372
+ */
373
+ async executePaper(action, apiKey, client) {
374
+ const paperData = action.payload;
375
+ // Validate required URLs before attempting paper creation
376
+ const githubUrl = paperData.githubUrl;
377
+ const pdfUrl = paperData.pdfUrl;
378
+ if (!githubUrl || !githubUrl.startsWith('https://')) {
379
+ return {
380
+ success: false,
381
+ actionId: action.id,
382
+ error: `Cannot create paper without valid githubUrl (got: ${githubUrl || 'empty'})`,
383
+ };
384
+ }
385
+ if (!pdfUrl || !pdfUrl.startsWith('https://')) {
386
+ return {
387
+ success: false,
388
+ actionId: action.id,
389
+ error: `Cannot create paper without valid pdfUrl (got: ${pdfUrl || 'empty'})`,
390
+ };
391
+ }
392
+ const paperPayload = {
393
+ title: paperData.title,
394
+ abstract: paperData.abstract,
395
+ tldr: paperData.tldr || paperData.title,
396
+ hypothesis: paperData.hypothesis ?? paperData.claims?.[0] ?? 'This work investigates a novel approach',
397
+ experimentPlan: paperData.experimentPlan,
398
+ conclusion: paperData.conclusion ?? 'Results demonstrate the validity of the proposed approach',
399
+ tags: paperData.tags,
400
+ claims: paperData.claims,
401
+ githubUrl,
402
+ pdfUrl,
403
+ limitations: paperData.limitations,
404
+ inspirations: paperData.inspirations,
405
+ };
406
+ const result = await client.createPaper(paperPayload, apiKey);
407
+ if (!result.success) {
408
+ return {
409
+ success: false,
410
+ actionId: action.id,
411
+ error: result.error,
412
+ };
413
+ }
414
+ logger.info(`Created paper: ${result.data?.id} - ${paperData.title}`);
415
+ return {
416
+ success: true,
417
+ actionId: action.id,
418
+ responseId: result.data?.id,
419
+ };
420
+ }
421
+ /**
422
+ * Process all pending actions
423
+ */
424
+ async processQueue() {
425
+ let processed = 0;
426
+ while (true) {
427
+ const action = await this.getNextExecutableAction();
428
+ if (!action) {
429
+ break;
430
+ }
431
+ await this.executeAction(action);
432
+ processed++;
433
+ // Small delay between actions to be nice to the API
434
+ await new Promise(resolve => setTimeout(resolve, 100));
435
+ }
436
+ return processed;
437
+ }
438
+ /**
439
+ * Get queue statistics
440
+ */
441
+ getQueueStats() {
442
+ const db = getDatabase();
443
+ return db.getQueueStats();
444
+ }
445
+ }
446
+ // Singleton
447
+ let instance = null;
448
+ export function createActionExecutor(config) {
449
+ instance = new ActionExecutor(config);
450
+ return instance;
451
+ }
452
+ export function getActionExecutor() {
453
+ if (!instance) {
454
+ instance = new ActionExecutor();
455
+ }
456
+ return instance;
457
+ }
458
+ //# sourceMappingURL=action-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-executor.js","sourceRoot":"","sources":["../../src/actions/action-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Agent Manager
3
+ * Manages the lifecycle of multiple AI agents in the runtime
4
+ */
5
+ import type { AgentCapability, AgentConfig, AgentRuntime, AgentState } from '../types.js';
6
+ export declare function encryptApiKey(apiKey: string, encryptionKey: string): string;
7
+ export declare class AgentManager {
8
+ private agents;
9
+ private encryptionKey;
10
+ private apiKeys;
11
+ constructor(encryptionKey: string);
12
+ /**
13
+ * Load all enabled agents from database
14
+ */
15
+ loadAgents(): Promise<void>;
16
+ /**
17
+ * Add a new agent to the runtime
18
+ */
19
+ addAgent(apiKey: string, options?: {
20
+ enabled?: boolean;
21
+ capability?: AgentCapability;
22
+ researchDomain?: string;
23
+ }): Promise<AgentConfig>;
24
+ /**
25
+ * Remove an agent from the runtime
26
+ */
27
+ removeAgent(agentId: string): void;
28
+ /**
29
+ * Enable/disable an agent
30
+ */
31
+ setAgentEnabled(agentId: string, enabled: boolean): void;
32
+ /**
33
+ * Get all agents
34
+ */
35
+ getAgents(): AgentRuntime[];
36
+ /**
37
+ * Get enabled agents only
38
+ */
39
+ getEnabledAgents(): AgentRuntime[];
40
+ /**
41
+ * Get an agent by ID
42
+ */
43
+ getAgent(agentId: string): AgentRuntime | undefined;
44
+ /**
45
+ * Alias for getAgent (for compatibility)
46
+ */
47
+ getRuntime(agentId: string): AgentRuntime | undefined;
48
+ /**
49
+ * Get all agent IDs
50
+ */
51
+ getAgentIds(): string[];
52
+ /**
53
+ * Get an agent's API key
54
+ */
55
+ getApiKey(agentId: string): string | undefined;
56
+ /**
57
+ * Update agent state
58
+ */
59
+ updateState(agentId: string, state: AgentState, error?: string): void;
60
+ /**
61
+ * Record that agent polled for notifications
62
+ */
63
+ recordPoll(agentId: string): void;
64
+ /**
65
+ * Record that agent took an action
66
+ */
67
+ recordAction(agentId: string): void;
68
+ /**
69
+ * Get status summary for all agents
70
+ */
71
+ getStatus(): {
72
+ total: number;
73
+ enabled: number;
74
+ idle: number;
75
+ active: number;
76
+ errored: number;
77
+ agents: Array<{
78
+ id: string;
79
+ handle: string;
80
+ state: AgentState;
81
+ enabled: boolean;
82
+ errorCount: number;
83
+ lastPollTime: Date | null;
84
+ lastActionTime: Date | null;
85
+ }>;
86
+ };
87
+ }
88
+ export declare function createAgentManager(encryptionKey: string): AgentManager;
89
+ export declare function getAgentManager(): AgentManager;
90
+ //# sourceMappingURL=agent-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-manager.d.ts","sourceRoot":"","sources":["../../src/agents/agent-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACZ,UAAU,EAEX,MAAM,aAAa,CAAC;AAUrB,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAU3E;AAcD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAkC;gBAErC,aAAa,EAAE,MAAM;IAIjC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2CjC;;OAEG;IACG,QAAQ,CACZ,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,eAAe,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GACrF,OAAO,CAAC,WAAW,CAAC;IAsDvB;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAkBlC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAaxD;;OAEG;IACH,SAAS,IAAI,YAAY,EAAE;IAI3B;;OAEG;IACH,gBAAgB,IAAI,YAAY,EAAE;IAIlC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAInD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIrD;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE;IAIvB;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9C;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAsBrE;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAYjC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAYnC;;OAEG;IACH,SAAS,IAAI;QACX,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,KAAK,CAAC;YACZ,EAAE,EAAE,MAAM,CAAC;YACX,MAAM,EAAE,MAAM,CAAC;YACf,KAAK,EAAE,UAAU,CAAC;YAClB,OAAO,EAAE,OAAO,CAAC;YACjB,UAAU,EAAE,MAAM,CAAC;YACnB,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;YAC1B,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC;SAC7B,CAAC,CAAC;KACJ;CAoBF;AAKD,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,YAAY,CAGtE;AAED,wBAAgB,eAAe,IAAI,YAAY,CAK9C"}