@ugm/desiagent 0.1.21

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 (202) hide show
  1. package/README.md +251 -0
  2. package/dist/__tests__/test-utils.d.ts +24 -0
  3. package/dist/__tests__/test-utils.d.ts.map +1 -0
  4. package/dist/__tests__/test-utils.js +32 -0
  5. package/dist/__tests__/test-utils.js.map +1 -0
  6. package/dist/core/execution/agents.d.ts +60 -0
  7. package/dist/core/execution/agents.d.ts.map +1 -0
  8. package/dist/core/execution/agents.js +249 -0
  9. package/dist/core/execution/agents.js.map +1 -0
  10. package/dist/core/execution/artifacts.d.ts +27 -0
  11. package/dist/core/execution/artifacts.d.ts.map +1 -0
  12. package/dist/core/execution/artifacts.js +93 -0
  13. package/dist/core/execution/artifacts.js.map +1 -0
  14. package/dist/core/execution/costs.d.ts +160 -0
  15. package/dist/core/execution/costs.d.ts.map +1 -0
  16. package/dist/core/execution/costs.js +196 -0
  17. package/dist/core/execution/costs.js.map +1 -0
  18. package/dist/core/execution/dagExecutor.d.ts +112 -0
  19. package/dist/core/execution/dagExecutor.d.ts.map +1 -0
  20. package/dist/core/execution/dagExecutor.js +647 -0
  21. package/dist/core/execution/dagExecutor.js.map +1 -0
  22. package/dist/core/execution/dags.d.ts +167 -0
  23. package/dist/core/execution/dags.d.ts.map +1 -0
  24. package/dist/core/execution/dags.js +713 -0
  25. package/dist/core/execution/dags.js.map +1 -0
  26. package/dist/core/execution/executions.d.ts +158 -0
  27. package/dist/core/execution/executions.d.ts.map +1 -0
  28. package/dist/core/execution/executions.js +258 -0
  29. package/dist/core/execution/executions.js.map +1 -0
  30. package/dist/core/execution/goals.d.ts +62 -0
  31. package/dist/core/execution/goals.d.ts.map +1 -0
  32. package/dist/core/execution/goals.js +245 -0
  33. package/dist/core/execution/goals.js.map +1 -0
  34. package/dist/core/execution/runs.d.ts +65 -0
  35. package/dist/core/execution/runs.d.ts.map +1 -0
  36. package/dist/core/execution/runs.js +219 -0
  37. package/dist/core/execution/runs.js.map +1 -0
  38. package/dist/core/execution/tools.d.ts +24 -0
  39. package/dist/core/execution/tools.d.ts.map +1 -0
  40. package/dist/core/execution/tools.js +33 -0
  41. package/dist/core/execution/tools.js.map +1 -0
  42. package/dist/core/orchestration/index.d.ts +7 -0
  43. package/dist/core/orchestration/index.d.ts.map +1 -0
  44. package/dist/core/orchestration/index.js +7 -0
  45. package/dist/core/orchestration/index.js.map +1 -0
  46. package/dist/core/orchestration/orchestrator.d.ts +39 -0
  47. package/dist/core/orchestration/orchestrator.d.ts.map +1 -0
  48. package/dist/core/orchestration/orchestrator.js +141 -0
  49. package/dist/core/orchestration/orchestrator.js.map +1 -0
  50. package/dist/core/orchestration/planner.d.ts +63 -0
  51. package/dist/core/orchestration/planner.d.ts.map +1 -0
  52. package/dist/core/orchestration/planner.js +99 -0
  53. package/dist/core/orchestration/planner.js.map +1 -0
  54. package/dist/core/providers/factory.d.ts +25 -0
  55. package/dist/core/providers/factory.d.ts.map +1 -0
  56. package/dist/core/providers/factory.js +86 -0
  57. package/dist/core/providers/factory.js.map +1 -0
  58. package/dist/core/providers/index.d.ts +11 -0
  59. package/dist/core/providers/index.d.ts.map +1 -0
  60. package/dist/core/providers/index.js +10 -0
  61. package/dist/core/providers/index.js.map +1 -0
  62. package/dist/core/providers/ollama.d.ts +36 -0
  63. package/dist/core/providers/ollama.d.ts.map +1 -0
  64. package/dist/core/providers/ollama.js +123 -0
  65. package/dist/core/providers/ollama.js.map +1 -0
  66. package/dist/core/providers/openai.d.ts +33 -0
  67. package/dist/core/providers/openai.d.ts.map +1 -0
  68. package/dist/core/providers/openai.js +114 -0
  69. package/dist/core/providers/openai.js.map +1 -0
  70. package/dist/core/providers/openrouter.d.ts +38 -0
  71. package/dist/core/providers/openrouter.d.ts.map +1 -0
  72. package/dist/core/providers/openrouter.js +269 -0
  73. package/dist/core/providers/openrouter.js.map +1 -0
  74. package/dist/core/providers/types.d.ts +101 -0
  75. package/dist/core/providers/types.d.ts.map +1 -0
  76. package/dist/core/providers/types.js +7 -0
  77. package/dist/core/providers/types.js.map +1 -0
  78. package/dist/core/tools/base.d.ts +56 -0
  79. package/dist/core/tools/base.d.ts.map +1 -0
  80. package/dist/core/tools/base.js +60 -0
  81. package/dist/core/tools/base.js.map +1 -0
  82. package/dist/core/tools/bash.d.ts +50 -0
  83. package/dist/core/tools/bash.d.ts.map +1 -0
  84. package/dist/core/tools/bash.js +179 -0
  85. package/dist/core/tools/bash.js.map +1 -0
  86. package/dist/core/tools/edit.d.ts +39 -0
  87. package/dist/core/tools/edit.d.ts.map +1 -0
  88. package/dist/core/tools/edit.js +67 -0
  89. package/dist/core/tools/edit.js.map +1 -0
  90. package/dist/core/tools/executor.d.ts +33 -0
  91. package/dist/core/tools/executor.d.ts.map +1 -0
  92. package/dist/core/tools/executor.js +105 -0
  93. package/dist/core/tools/executor.js.map +1 -0
  94. package/dist/core/tools/fetchPage.d.ts +46 -0
  95. package/dist/core/tools/fetchPage.d.ts.map +1 -0
  96. package/dist/core/tools/fetchPage.js +87 -0
  97. package/dist/core/tools/fetchPage.js.map +1 -0
  98. package/dist/core/tools/fetchURLs.d.ts +39 -0
  99. package/dist/core/tools/fetchURLs.d.ts.map +1 -0
  100. package/dist/core/tools/fetchURLs.js +67 -0
  101. package/dist/core/tools/fetchURLs.js.map +1 -0
  102. package/dist/core/tools/glob.d.ts +36 -0
  103. package/dist/core/tools/glob.d.ts.map +1 -0
  104. package/dist/core/tools/glob.js +78 -0
  105. package/dist/core/tools/glob.js.map +1 -0
  106. package/dist/core/tools/grep.d.ts +51 -0
  107. package/dist/core/tools/grep.d.ts.map +1 -0
  108. package/dist/core/tools/grep.js +152 -0
  109. package/dist/core/tools/grep.js.map +1 -0
  110. package/dist/core/tools/index.d.ts +22 -0
  111. package/dist/core/tools/index.d.ts.map +1 -0
  112. package/dist/core/tools/index.js +22 -0
  113. package/dist/core/tools/index.js.map +1 -0
  114. package/dist/core/tools/llmExecute.d.ts +153 -0
  115. package/dist/core/tools/llmExecute.d.ts.map +1 -0
  116. package/dist/core/tools/llmExecute.js +105 -0
  117. package/dist/core/tools/llmExecute.js.map +1 -0
  118. package/dist/core/tools/readEmail.d.ts +68 -0
  119. package/dist/core/tools/readEmail.d.ts.map +1 -0
  120. package/dist/core/tools/readEmail.js +182 -0
  121. package/dist/core/tools/readEmail.js.map +1 -0
  122. package/dist/core/tools/readFile.d.ts +42 -0
  123. package/dist/core/tools/readFile.d.ts.map +1 -0
  124. package/dist/core/tools/readFile.js +79 -0
  125. package/dist/core/tools/readFile.js.map +1 -0
  126. package/dist/core/tools/registry.d.ts +53 -0
  127. package/dist/core/tools/registry.d.ts.map +1 -0
  128. package/dist/core/tools/registry.js +112 -0
  129. package/dist/core/tools/registry.js.map +1 -0
  130. package/dist/core/tools/sendEmail.d.ts +83 -0
  131. package/dist/core/tools/sendEmail.d.ts.map +1 -0
  132. package/dist/core/tools/sendEmail.js +132 -0
  133. package/dist/core/tools/sendEmail.js.map +1 -0
  134. package/dist/core/tools/sendWebhook.d.ts +48 -0
  135. package/dist/core/tools/sendWebhook.d.ts.map +1 -0
  136. package/dist/core/tools/sendWebhook.js +61 -0
  137. package/dist/core/tools/sendWebhook.js.map +1 -0
  138. package/dist/core/tools/webSearch.d.ts +34 -0
  139. package/dist/core/tools/webSearch.d.ts.map +1 -0
  140. package/dist/core/tools/webSearch.js +104 -0
  141. package/dist/core/tools/webSearch.js.map +1 -0
  142. package/dist/core/tools/writeFile.d.ts +49 -0
  143. package/dist/core/tools/writeFile.d.ts.map +1 -0
  144. package/dist/core/tools/writeFile.js +120 -0
  145. package/dist/core/tools/writeFile.js.map +1 -0
  146. package/dist/db/client.d.ts +22 -0
  147. package/dist/db/client.d.ts.map +1 -0
  148. package/dist/db/client.js +178 -0
  149. package/dist/db/client.js.map +1 -0
  150. package/dist/db/schema.d.ts +1846 -0
  151. package/dist/db/schema.d.ts.map +1 -0
  152. package/dist/db/schema.js +175 -0
  153. package/dist/db/schema.js.map +1 -0
  154. package/dist/errors/index.d.ts +80 -0
  155. package/dist/errors/index.d.ts.map +1 -0
  156. package/dist/errors/index.js +135 -0
  157. package/dist/errors/index.js.map +1 -0
  158. package/dist/index.d.ts +52 -0
  159. package/dist/index.d.ts.map +1 -0
  160. package/dist/index.js +172 -0
  161. package/dist/index.js.map +1 -0
  162. package/dist/services/initDB.d.ts +17 -0
  163. package/dist/services/initDB.d.ts.map +1 -0
  164. package/dist/services/initDB.js +212 -0
  165. package/dist/services/initDB.js.map +1 -0
  166. package/dist/types/agent.d.ts +354 -0
  167. package/dist/types/agent.d.ts.map +1 -0
  168. package/dist/types/agent.js +63 -0
  169. package/dist/types/agent.js.map +1 -0
  170. package/dist/types/client.d.ts +309 -0
  171. package/dist/types/client.d.ts.map +1 -0
  172. package/dist/types/client.js +2 -0
  173. package/dist/types/client.js.map +1 -0
  174. package/dist/types/config.d.ts +96 -0
  175. package/dist/types/config.d.ts.map +1 -0
  176. package/dist/types/config.js +33 -0
  177. package/dist/types/config.js.map +1 -0
  178. package/dist/types/dag.d.ts +253 -0
  179. package/dist/types/dag.d.ts.map +1 -0
  180. package/dist/types/dag.js +46 -0
  181. package/dist/types/dag.js.map +1 -0
  182. package/dist/types/execution.d.ts +171 -0
  183. package/dist/types/execution.d.ts.map +1 -0
  184. package/dist/types/execution.js +41 -0
  185. package/dist/types/execution.js.map +1 -0
  186. package/dist/types/index.d.ts +12 -0
  187. package/dist/types/index.d.ts.map +1 -0
  188. package/dist/types/index.js +11 -0
  189. package/dist/types/index.js.map +1 -0
  190. package/dist/util/cron-validator.d.ts +16 -0
  191. package/dist/util/cron-validator.d.ts.map +1 -0
  192. package/dist/util/cron-validator.js +31 -0
  193. package/dist/util/cron-validator.js.map +1 -0
  194. package/dist/util/dag-utils.d.ts +54 -0
  195. package/dist/util/dag-utils.d.ts.map +1 -0
  196. package/dist/util/dag-utils.js +167 -0
  197. package/dist/util/dag-utils.js.map +1 -0
  198. package/dist/util/logger.d.ts +21 -0
  199. package/dist/util/logger.d.ts.map +1 -0
  200. package/dist/util/logger.js +87 -0
  201. package/dist/util/logger.js.map +1 -0
  202. package/package.json +82 -0
@@ -0,0 +1,245 @@
1
+ /**
2
+ * Goals Service
3
+ *
4
+ * Manages goal creation, updates, listing, and execution.
5
+ * Goals represent high-level objectives for agents to accomplish.
6
+ */
7
+ import { eq, and, desc } from 'drizzle-orm';
8
+ import { nanoid } from 'nanoid';
9
+ import { goals, schedules, runs } from '../../db/schema.js';
10
+ import { NotFoundError, ValidationError } from '../../errors/index.js';
11
+ import { getLogger } from '../../util/logger.js';
12
+ /**
13
+ * Create a goal ID with 'goal_' prefix
14
+ */
15
+ export function generateGoalId() {
16
+ return `goal_${nanoid(21)}`;
17
+ }
18
+ /**
19
+ * Create a schedule ID with 'sched_' prefix
20
+ */
21
+ export function generateScheduleId() {
22
+ return `sched_${nanoid(21)}`;
23
+ }
24
+ /**
25
+ * GoalsService handles all goal-related operations
26
+ */
27
+ export class GoalsService {
28
+ db;
29
+ logger = getLogger();
30
+ constructor(db) {
31
+ this.db = db;
32
+ }
33
+ /**
34
+ * Create a new goal
35
+ */
36
+ async create(objective, params) {
37
+ this.logger.debug(`Creating goal: ${objective}`);
38
+ const goalId = generateGoalId();
39
+ const now = new Date();
40
+ await this.db.insert(goals).values({
41
+ id: goalId,
42
+ objective,
43
+ params: params || {},
44
+ status: 'active',
45
+ createdAt: now,
46
+ updatedAt: now,
47
+ });
48
+ const goal = await this.db.query.goals.findFirst({
49
+ where: eq(goals.id, goalId),
50
+ });
51
+ if (!goal) {
52
+ throw new Error('Failed to create goal');
53
+ }
54
+ return this.mapGoal(goal);
55
+ }
56
+ /**
57
+ * Get a goal by ID
58
+ */
59
+ async get(id) {
60
+ const goal = await this.db.query.goals.findFirst({
61
+ where: eq(goals.id, id),
62
+ with: {
63
+ schedules: true,
64
+ },
65
+ });
66
+ if (!goal) {
67
+ throw new NotFoundError('Goal', id);
68
+ }
69
+ return this.mapGoal(goal);
70
+ }
71
+ /**
72
+ * List all goals with optional filtering
73
+ */
74
+ async list(filter) {
75
+ const conditions = [];
76
+ if (filter?.status) {
77
+ conditions.push(eq(goals.status, filter.status));
78
+ }
79
+ const query = this.db.query.goals.findMany({
80
+ where: conditions.length > 0 ? and(...conditions) : undefined,
81
+ orderBy: [desc(goals.createdAt)],
82
+ with: {
83
+ schedules: true,
84
+ },
85
+ limit: filter?.limit || 100,
86
+ offset: filter?.offset || 0,
87
+ });
88
+ const allGoals = await query;
89
+ return allGoals.map((g) => this.mapGoal(g));
90
+ }
91
+ /**
92
+ * Update a goal
93
+ */
94
+ async update(id, updates) {
95
+ const existing = await this.db.query.goals.findFirst({
96
+ where: eq(goals.id, id),
97
+ });
98
+ if (!existing) {
99
+ throw new NotFoundError('Goal', id);
100
+ }
101
+ const updateData = {
102
+ updatedAt: new Date(),
103
+ };
104
+ if (updates.objective !== undefined) {
105
+ updateData.objective = updates.objective;
106
+ }
107
+ if (updates.params !== undefined) {
108
+ updateData.params = updates.params;
109
+ }
110
+ if (updates.status !== undefined) {
111
+ updateData.status = updates.status;
112
+ }
113
+ await this.db.update(goals).set(updateData).where(eq(goals.id, id));
114
+ const updated = await this.db.query.goals.findFirst({
115
+ where: eq(goals.id, id),
116
+ });
117
+ if (!updated) {
118
+ throw new Error('Failed to update goal');
119
+ }
120
+ return this.mapGoal(updated);
121
+ }
122
+ /**
123
+ * Delete a goal
124
+ */
125
+ async delete(id) {
126
+ const existing = await this.db.query.goals.findFirst({
127
+ where: eq(goals.id, id),
128
+ });
129
+ if (!existing) {
130
+ throw new NotFoundError('Goal', id);
131
+ }
132
+ await this.db.delete(goals).where(eq(goals.id, id));
133
+ this.logger.debug(`Deleted goal: ${id}`);
134
+ }
135
+ /**
136
+ * Pause a goal (deactivate schedules)
137
+ */
138
+ async pause(id) {
139
+ const existing = await this.db.query.goals.findFirst({
140
+ where: eq(goals.id, id),
141
+ });
142
+ if (!existing) {
143
+ throw new NotFoundError('Goal', id);
144
+ }
145
+ await this.db.update(goals)
146
+ .set({ status: 'paused', updatedAt: new Date() })
147
+ .where(eq(goals.id, id));
148
+ // Mark all schedules as inactive
149
+ await this.db.update(schedules)
150
+ .set({ active: false })
151
+ .where(eq(schedules.goalId, id));
152
+ const updated = await this.db.query.goals.findFirst({
153
+ where: eq(goals.id, id),
154
+ });
155
+ if (!updated) {
156
+ throw new Error('Failed to pause goal');
157
+ }
158
+ return this.mapGoal(updated);
159
+ }
160
+ /**
161
+ * Resume a paused goal (reactivate schedules)
162
+ */
163
+ async resume(id) {
164
+ const existing = await this.db.query.goals.findFirst({
165
+ where: eq(goals.id, id),
166
+ });
167
+ if (!existing) {
168
+ throw new NotFoundError('Goal', id);
169
+ }
170
+ await this.db.update(goals)
171
+ .set({ status: 'active', updatedAt: new Date() })
172
+ .where(eq(goals.id, id));
173
+ // Mark all schedules as active
174
+ await this.db.update(schedules)
175
+ .set({ active: true })
176
+ .where(eq(schedules.goalId, id));
177
+ const updated = await this.db.query.goals.findFirst({
178
+ where: eq(goals.id, id),
179
+ });
180
+ if (!updated) {
181
+ throw new Error('Failed to resume goal');
182
+ }
183
+ return this.mapGoal(updated);
184
+ }
185
+ /**
186
+ * Trigger goal execution (creates a run)
187
+ * Note: Actual execution is handled by the orchestrator
188
+ */
189
+ async run(id) {
190
+ const goal = await this.get(id);
191
+ if (goal.status !== 'active') {
192
+ throw new ValidationError(`Cannot run goal with status: ${goal.status}`, 'status', goal.status);
193
+ }
194
+ // Create a new run
195
+ const runId = `run_${nanoid(21)}`;
196
+ const now = new Date();
197
+ const stepBudget = goal.metadata?.stepBudget || 20;
198
+ await this.db.insert(runs).values({
199
+ id: runId,
200
+ goalId: id,
201
+ status: 'pending',
202
+ stepBudget,
203
+ stepsExecuted: 0,
204
+ workingMemory: {},
205
+ createdAt: now,
206
+ });
207
+ const run = await this.db.query.runs.findFirst({
208
+ where: eq(runs.id, runId),
209
+ });
210
+ if (!run) {
211
+ throw new Error('Failed to create run');
212
+ }
213
+ this.logger.info(`Created run: ${runId} for goal: ${id}`);
214
+ // Run is now in orchestrator's hands
215
+ // The orchestrator will execute it asynchronously
216
+ return {
217
+ id: run.id,
218
+ goalId: run.goalId,
219
+ status: run.status,
220
+ createdAt: run.createdAt,
221
+ updatedAt: run.createdAt,
222
+ metadata: {
223
+ stepsExecuted: run.stepsExecuted,
224
+ stepBudget: run.stepBudget,
225
+ },
226
+ };
227
+ }
228
+ /**
229
+ * Map database record to Goal type
230
+ */
231
+ mapGoal(record) {
232
+ return {
233
+ id: record.id,
234
+ objective: record.objective,
235
+ status: record.status,
236
+ createdAt: record.createdAt,
237
+ updatedAt: record.updatedAt,
238
+ metadata: {
239
+ ...record.params,
240
+ ...record.metadata,
241
+ },
242
+ };
243
+ }
244
+ }
245
+ //# sourceMappingURL=goals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goals.js","sourceRoot":"","sources":["../../../src/core/execution/goals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Runs Service
3
+ *
4
+ * Manages run tracking, step retrieval, and run lifecycle.
5
+ * Runs represent individual executions of goals.
6
+ */
7
+ import type { DrizzleDB } from '../../db/client.js';
8
+ import type { Run, Step } from '../../types/index.js';
9
+ /**
10
+ * Create a run ID with 'run_' prefix
11
+ */
12
+ export declare function generateRunId(): string;
13
+ /**
14
+ * Create a step ID with 'step_' prefix
15
+ */
16
+ export declare function generateStepId(): string;
17
+ /**
18
+ * RunsService handles all run-related operations
19
+ */
20
+ export declare class RunsService {
21
+ private db;
22
+ private logger;
23
+ constructor(db: DrizzleDB);
24
+ /**
25
+ * Get a run by ID
26
+ */
27
+ get(id: string): Promise<Run>;
28
+ /**
29
+ * List runs with optional filtering
30
+ */
31
+ list(filter?: Record<string, any>): Promise<Run[]>;
32
+ /**
33
+ * Get steps for a run
34
+ */
35
+ getSteps(runId: string): Promise<Step[]>;
36
+ /**
37
+ * Delete a run
38
+ */
39
+ delete(id: string): Promise<void>;
40
+ /**
41
+ * Internal: Create a new run (used by orchestrator)
42
+ */
43
+ _create(goalId: string, stepBudget: number): Promise<Run>;
44
+ /**
45
+ * Internal: Add a step to a run
46
+ */
47
+ _addStep(runId: string, stepNo: number, thought: string, toolName?: string, toolInput?: Record<string, any>, observation?: string, durationMs?: number, error?: string): Promise<Step>;
48
+ /**
49
+ * Internal: Update run status
50
+ */
51
+ _updateStatus(runId: string, status: 'pending' | 'running' | 'completed' | 'failed', error?: string): Promise<void>;
52
+ /**
53
+ * Internal: Update working memory
54
+ */
55
+ _updateWorkingMemory(runId: string, memory: Record<string, any>): Promise<void>;
56
+ /**
57
+ * Map database record to Run type
58
+ */
59
+ private mapRun;
60
+ /**
61
+ * Map database record to Step type
62
+ */
63
+ private mapStep;
64
+ }
65
+ //# sourceMappingURL=runs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../../src/core/execution/runs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAItD;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAY;IACtB,OAAO,CAAC,MAAM,CAAe;gBAEjB,EAAE,EAAE,SAAS;IAIzB;;OAEG;IACG,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAenC;;OAEG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAwBxD;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAiB9C;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAavC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAyB/D;;OAEG;IACG,QAAQ,CACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,WAAW,CAAC,EAAE,MAAM,EACpB,UAAU,GAAE,MAAU,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IA4BhB;;OAEG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,EACtD,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IAoBhB;;OAEG;IACG,oBAAoB,CACxB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC;IAMhB;;OAEG;IACH,OAAO,CAAC,MAAM;IAgBd;;OAEG;IACH,OAAO,CAAC,OAAO;CAsBhB"}
@@ -0,0 +1,219 @@
1
+ /**
2
+ * Runs Service
3
+ *
4
+ * Manages run tracking, step retrieval, and run lifecycle.
5
+ * Runs represent individual executions of goals.
6
+ */
7
+ import { eq, and, desc } from 'drizzle-orm';
8
+ import { nanoid } from 'nanoid';
9
+ import { runs, steps } from '../../db/schema.js';
10
+ import { NotFoundError } from '../../errors/index.js';
11
+ import { getLogger } from '../../util/logger.js';
12
+ /**
13
+ * Create a run ID with 'run_' prefix
14
+ */
15
+ export function generateRunId() {
16
+ return `run_${nanoid(21)}`;
17
+ }
18
+ /**
19
+ * Create a step ID with 'step_' prefix
20
+ */
21
+ export function generateStepId() {
22
+ return `step_${nanoid(21)}`;
23
+ }
24
+ /**
25
+ * RunsService handles all run-related operations
26
+ */
27
+ export class RunsService {
28
+ db;
29
+ logger = getLogger();
30
+ constructor(db) {
31
+ this.db = db;
32
+ }
33
+ /**
34
+ * Get a run by ID
35
+ */
36
+ async get(id) {
37
+ const run = await this.db.query.runs.findFirst({
38
+ where: eq(runs.id, id),
39
+ with: {
40
+ goal: true,
41
+ },
42
+ });
43
+ if (!run) {
44
+ throw new NotFoundError('Run', id);
45
+ }
46
+ return this.mapRun(run);
47
+ }
48
+ /**
49
+ * List runs with optional filtering
50
+ */
51
+ async list(filter) {
52
+ const conditions = [];
53
+ if (filter?.goalId) {
54
+ conditions.push(eq(runs.goalId, filter.goalId));
55
+ }
56
+ if (filter?.status) {
57
+ conditions.push(eq(runs.status, filter.status));
58
+ }
59
+ const allRuns = await this.db.query.runs.findMany({
60
+ where: conditions.length > 0 ? and(...conditions) : undefined,
61
+ with: {
62
+ goal: true,
63
+ },
64
+ orderBy: [desc(runs.createdAt)],
65
+ limit: filter?.limit || 50,
66
+ offset: filter?.offset || 0,
67
+ });
68
+ return allRuns.map((r) => this.mapRun(r));
69
+ }
70
+ /**
71
+ * Get steps for a run
72
+ */
73
+ async getSteps(runId) {
74
+ const run = await this.db.query.runs.findFirst({
75
+ where: eq(runs.id, runId),
76
+ });
77
+ if (!run) {
78
+ throw new NotFoundError('Run', runId);
79
+ }
80
+ const runSteps = await this.db.query.steps.findMany({
81
+ where: eq(steps.runId, runId),
82
+ orderBy: [steps.stepNo],
83
+ });
84
+ return runSteps.map((s) => this.mapStep(s));
85
+ }
86
+ /**
87
+ * Delete a run
88
+ */
89
+ async delete(id) {
90
+ const existing = await this.db.query.runs.findFirst({
91
+ where: eq(runs.id, id),
92
+ });
93
+ if (!existing) {
94
+ throw new NotFoundError('Run', id);
95
+ }
96
+ await this.db.delete(runs).where(eq(runs.id, id));
97
+ this.logger.debug(`Deleted run: ${id}`);
98
+ }
99
+ /**
100
+ * Internal: Create a new run (used by orchestrator)
101
+ */
102
+ async _create(goalId, stepBudget) {
103
+ const runId = generateRunId();
104
+ const now = new Date();
105
+ await this.db.insert(runs).values({
106
+ id: runId,
107
+ goalId,
108
+ status: 'pending',
109
+ stepBudget,
110
+ stepsExecuted: 0,
111
+ workingMemory: {},
112
+ createdAt: now,
113
+ });
114
+ const run = await this.db.query.runs.findFirst({
115
+ where: eq(runs.id, runId),
116
+ });
117
+ if (!run) {
118
+ throw new Error('Failed to create run');
119
+ }
120
+ return this.mapRun(run);
121
+ }
122
+ /**
123
+ * Internal: Add a step to a run
124
+ */
125
+ async _addStep(runId, stepNo, thought, toolName, toolInput, observation, durationMs = 0, error) {
126
+ const stepId = generateStepId();
127
+ const now = new Date();
128
+ await this.db.insert(steps).values({
129
+ id: stepId,
130
+ runId,
131
+ stepNo,
132
+ thought,
133
+ toolName,
134
+ toolInput,
135
+ observation,
136
+ durationMs,
137
+ error,
138
+ createdAt: now,
139
+ });
140
+ const step = await this.db.query.steps.findFirst({
141
+ where: eq(steps.id, stepId),
142
+ });
143
+ if (!step) {
144
+ throw new Error('Failed to create step');
145
+ }
146
+ return this.mapStep(step);
147
+ }
148
+ /**
149
+ * Internal: Update run status
150
+ */
151
+ async _updateStatus(runId, status, error) {
152
+ const updateData = {
153
+ status,
154
+ };
155
+ if (status === 'running') {
156
+ updateData.startedAt = new Date();
157
+ }
158
+ else if (status === 'completed' || status === 'failed') {
159
+ updateData.endedAt = new Date();
160
+ }
161
+ if (error) {
162
+ updateData.error = error;
163
+ }
164
+ await this.db.update(runs)
165
+ .set(updateData)
166
+ .where(eq(runs.id, runId));
167
+ }
168
+ /**
169
+ * Internal: Update working memory
170
+ */
171
+ async _updateWorkingMemory(runId, memory) {
172
+ await this.db.update(runs)
173
+ .set({ workingMemory: memory })
174
+ .where(eq(runs.id, runId));
175
+ }
176
+ /**
177
+ * Map database record to Run type
178
+ */
179
+ mapRun(record) {
180
+ return {
181
+ id: record.id,
182
+ goalId: record.goalId,
183
+ status: record.status,
184
+ createdAt: record.createdAt,
185
+ updatedAt: record.updatedAt,
186
+ completedAt: record.endedAt,
187
+ failureReason: record.error,
188
+ metadata: {
189
+ stepsExecuted: record.stepsExecuted,
190
+ stepBudget: record.stepBudget,
191
+ },
192
+ };
193
+ }
194
+ /**
195
+ * Map database record to Step type
196
+ */
197
+ mapStep(record) {
198
+ return {
199
+ id: record.id,
200
+ runId: record.runId,
201
+ index: record.stepNo,
202
+ type: record.observation ?
203
+ 'tool_result'
204
+ : record.toolName ?
205
+ 'tool_call'
206
+ : 'thought',
207
+ content: record.thought,
208
+ toolName: record.toolName,
209
+ toolInput: record.toolInput,
210
+ toolOutput: record.observation,
211
+ timestamp: record.createdAt,
212
+ metadata: {
213
+ durationMs: record.durationMs,
214
+ error: record.error,
215
+ },
216
+ };
217
+ }
218
+ }
219
+ //# sourceMappingURL=runs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runs.js","sourceRoot":"","sources":["../../../src/core/execution/runs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Tools Service
3
+ *
4
+ * Lists available tools for agents.
5
+ * Tools are registered at initialization and exposed through this service.
6
+ */
7
+ import type { ToolDefinition } from '../../types/index.js';
8
+ import type { ToolRegistry } from '../tools/registry.js';
9
+ /**
10
+ * ToolsService handles tool listing and queries
11
+ */
12
+ export declare class ToolsService {
13
+ private registry;
14
+ constructor(registry: ToolRegistry);
15
+ /**
16
+ * List all available tools
17
+ */
18
+ list(filter?: Record<string, any>): Promise<ToolDefinition[]>;
19
+ /**
20
+ * Get a specific tool by name
21
+ */
22
+ get(name: string): Promise<ToolDefinition | null>;
23
+ }
24
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/core/execution/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAe;gBAEnB,QAAQ,EAAE,YAAY;IAIlC;;OAEG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAUnE;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAIxD"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Tools Service
3
+ *
4
+ * Lists available tools for agents.
5
+ * Tools are registered at initialization and exposed through this service.
6
+ */
7
+ /**
8
+ * ToolsService handles tool listing and queries
9
+ */
10
+ export class ToolsService {
11
+ registry;
12
+ constructor(registry) {
13
+ this.registry = registry;
14
+ }
15
+ /**
16
+ * List all available tools
17
+ */
18
+ async list(filter) {
19
+ let tools = this.registry.getAllDefinitions();
20
+ if (filter?.name) {
21
+ tools = tools.filter((t) => t.function.name === filter.name);
22
+ }
23
+ return tools;
24
+ }
25
+ /**
26
+ * Get a specific tool by name
27
+ */
28
+ async get(name) {
29
+ const tool = this.registry.get(name);
30
+ return tool ? tool.toJSONSchema() : null;
31
+ }
32
+ }
33
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/core/execution/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;GAEG;AACH,MAAM,OAAO,YAAY;IACf,QAAQ,CAAe;IAE/B,YAAY,QAAsB;QAChC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,MAA4B;QACrC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAE9C,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;YACjB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Orchestration Module
3
+ *
4
+ * Agent planning and prompt generation
5
+ */
6
+ export { AgentPlanner, type PlannerContext, type PlannerResult } from './planner.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Orchestration Module
3
+ *
4
+ * Agent planning and prompt generation
5
+ */
6
+ export { AgentPlanner } from './planner.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/orchestration/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAA2C,MAAM,cAAc,CAAC"}