@anonx3247/universal-agent-harness 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 (106) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +265 -0
  3. package/dist/agent-harness.d.ts +3 -0
  4. package/dist/agent-harness.d.ts.map +1 -0
  5. package/dist/agent-harness.js +326 -0
  6. package/dist/agent-harness.js.map +1 -0
  7. package/dist/db/index.d.ts +6 -0
  8. package/dist/db/index.d.ts.map +1 -0
  9. package/dist/db/index.js +11 -0
  10. package/dist/db/index.js.map +1 -0
  11. package/dist/db/schema.d.ts +335 -0
  12. package/dist/db/schema.d.ts.map +1 -0
  13. package/dist/db/schema.js +39 -0
  14. package/dist/db/schema.js.map +1 -0
  15. package/dist/index.d.ts +99 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +156 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/lib/assert.d.ts +2 -0
  20. package/dist/lib/assert.d.ts.map +1 -0
  21. package/dist/lib/assert.js +4 -0
  22. package/dist/lib/assert.js.map +1 -0
  23. package/dist/lib/async.d.ts +18 -0
  24. package/dist/lib/async.d.ts.map +1 -0
  25. package/dist/lib/async.js +41 -0
  26. package/dist/lib/async.js.map +1 -0
  27. package/dist/lib/error.d.ts +47 -0
  28. package/dist/lib/error.d.ts.map +1 -0
  29. package/dist/lib/error.js +101 -0
  30. package/dist/lib/error.js.map +1 -0
  31. package/dist/lib/fs.d.ts +3 -0
  32. package/dist/lib/fs.d.ts.map +1 -0
  33. package/dist/lib/fs.js +17 -0
  34. package/dist/lib/fs.js.map +1 -0
  35. package/dist/lib/mcp-config.d.ts +62 -0
  36. package/dist/lib/mcp-config.d.ts.map +1 -0
  37. package/dist/lib/mcp-config.js +80 -0
  38. package/dist/lib/mcp-config.js.map +1 -0
  39. package/dist/lib/mcp.d.ts +19 -0
  40. package/dist/lib/mcp.d.ts.map +1 -0
  41. package/dist/lib/mcp.js +105 -0
  42. package/dist/lib/mcp.js.map +1 -0
  43. package/dist/lib/prompts.d.ts +5 -0
  44. package/dist/lib/prompts.d.ts.map +1 -0
  45. package/dist/lib/prompts.js +63 -0
  46. package/dist/lib/prompts.js.map +1 -0
  47. package/dist/lib/utils.d.ts +5 -0
  48. package/dist/lib/utils.d.ts.map +1 -0
  49. package/dist/lib/utils.js +13 -0
  50. package/dist/lib/utils.js.map +1 -0
  51. package/dist/models/anthropic.d.ts +20 -0
  52. package/dist/models/anthropic.d.ts.map +1 -0
  53. package/dist/models/anthropic.js +312 -0
  54. package/dist/models/anthropic.js.map +1 -0
  55. package/dist/models/deepseek/index.d.ts +20 -0
  56. package/dist/models/deepseek/index.d.ts.map +1 -0
  57. package/dist/models/deepseek/index.js +210 -0
  58. package/dist/models/deepseek/index.js.map +1 -0
  59. package/dist/models/gemini.d.ts +20 -0
  60. package/dist/models/gemini.d.ts.map +1 -0
  61. package/dist/models/gemini.js +250 -0
  62. package/dist/models/gemini.js.map +1 -0
  63. package/dist/models/index.d.ts +70 -0
  64. package/dist/models/index.d.ts.map +1 -0
  65. package/dist/models/index.js +30 -0
  66. package/dist/models/index.js.map +1 -0
  67. package/dist/models/mistral.d.ts +19 -0
  68. package/dist/models/mistral.d.ts.map +1 -0
  69. package/dist/models/mistral.js +259 -0
  70. package/dist/models/mistral.js.map +1 -0
  71. package/dist/models/moonshotai.d.ts +20 -0
  72. package/dist/models/moonshotai.d.ts.map +1 -0
  73. package/dist/models/moonshotai.js +220 -0
  74. package/dist/models/moonshotai.js.map +1 -0
  75. package/dist/models/openai.d.ts +21 -0
  76. package/dist/models/openai.d.ts.map +1 -0
  77. package/dist/models/openai.js +302 -0
  78. package/dist/models/openai.js.map +1 -0
  79. package/dist/models/provider.d.ts +19 -0
  80. package/dist/models/provider.d.ts.map +1 -0
  81. package/dist/models/provider.js +95 -0
  82. package/dist/models/provider.js.map +1 -0
  83. package/dist/resources/experiment.d.ts +18 -0
  84. package/dist/resources/experiment.d.ts.map +1 -0
  85. package/dist/resources/experiment.js +55 -0
  86. package/dist/resources/experiment.js.map +1 -0
  87. package/dist/resources/messages.d.ts +23 -0
  88. package/dist/resources/messages.d.ts.map +1 -0
  89. package/dist/resources/messages.js +81 -0
  90. package/dist/resources/messages.js.map +1 -0
  91. package/dist/runner/config.d.ts +4 -0
  92. package/dist/runner/config.d.ts.map +1 -0
  93. package/dist/runner/config.js +2 -0
  94. package/dist/runner/config.js.map +1 -0
  95. package/dist/runner/index.d.ts +41 -0
  96. package/dist/runner/index.d.ts.map +1 -0
  97. package/dist/runner/index.js +370 -0
  98. package/dist/runner/index.js.map +1 -0
  99. package/dist/tools/index.d.ts +2 -0
  100. package/dist/tools/index.d.ts.map +1 -0
  101. package/dist/tools/index.js +4 -0
  102. package/dist/tools/index.js.map +1 -0
  103. package/package.json +57 -0
  104. package/profiles/example/prompt.md +54 -0
  105. package/profiles/example/settings.json +11 -0
  106. package/profiles/example/settings.json.example +38 -0
@@ -0,0 +1,335 @@
1
+ export declare const experiments: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2
+ name: "experiments";
3
+ schema: undefined;
4
+ columns: {
5
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6
+ name: "id";
7
+ tableName: "experiments";
8
+ dataType: "number";
9
+ columnType: "SQLiteInteger";
10
+ data: number;
11
+ driverParam: number;
12
+ notNull: true;
13
+ hasDefault: true;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: undefined;
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {}>;
22
+ created: import("drizzle-orm/sqlite-core").SQLiteColumn<{
23
+ name: "created";
24
+ tableName: "experiments";
25
+ dataType: "date";
26
+ columnType: "SQLiteTimestamp";
27
+ data: Date;
28
+ driverParam: number;
29
+ notNull: true;
30
+ hasDefault: true;
31
+ isPrimaryKey: false;
32
+ isAutoincrement: false;
33
+ hasRuntimeDefault: true;
34
+ enumValues: undefined;
35
+ baseColumn: never;
36
+ identity: undefined;
37
+ generated: undefined;
38
+ }, {}, {}>;
39
+ updated: import("drizzle-orm/sqlite-core").SQLiteColumn<{
40
+ name: "updated";
41
+ tableName: "experiments";
42
+ dataType: "date";
43
+ columnType: "SQLiteTimestamp";
44
+ data: Date;
45
+ driverParam: number;
46
+ notNull: true;
47
+ hasDefault: true;
48
+ isPrimaryKey: false;
49
+ isAutoincrement: false;
50
+ hasRuntimeDefault: true;
51
+ enumValues: undefined;
52
+ baseColumn: never;
53
+ identity: undefined;
54
+ generated: undefined;
55
+ }, {}, {}>;
56
+ name: import("drizzle-orm/sqlite-core").SQLiteColumn<{
57
+ name: "name";
58
+ tableName: "experiments";
59
+ dataType: "string";
60
+ columnType: "SQLiteText";
61
+ data: string;
62
+ driverParam: string;
63
+ notNull: true;
64
+ hasDefault: false;
65
+ isPrimaryKey: false;
66
+ isAutoincrement: false;
67
+ hasRuntimeDefault: false;
68
+ enumValues: [string, ...string[]];
69
+ baseColumn: never;
70
+ identity: undefined;
71
+ generated: undefined;
72
+ }, {}, {
73
+ length: number | undefined;
74
+ }>;
75
+ problem: import("drizzle-orm/sqlite-core").SQLiteColumn<{
76
+ name: "problem";
77
+ tableName: "experiments";
78
+ dataType: "string";
79
+ columnType: "SQLiteText";
80
+ data: string;
81
+ driverParam: string;
82
+ notNull: true;
83
+ hasDefault: false;
84
+ isPrimaryKey: false;
85
+ isAutoincrement: false;
86
+ hasRuntimeDefault: false;
87
+ enumValues: [string, ...string[]];
88
+ baseColumn: never;
89
+ identity: undefined;
90
+ generated: undefined;
91
+ }, {}, {
92
+ length: number | undefined;
93
+ }>;
94
+ profile: import("drizzle-orm/sqlite-core").SQLiteColumn<{
95
+ name: "profile";
96
+ tableName: "experiments";
97
+ dataType: "string";
98
+ columnType: "SQLiteText";
99
+ data: string;
100
+ driverParam: string;
101
+ notNull: true;
102
+ hasDefault: true;
103
+ isPrimaryKey: false;
104
+ isAutoincrement: false;
105
+ hasRuntimeDefault: false;
106
+ enumValues: [string, ...string[]];
107
+ baseColumn: never;
108
+ identity: undefined;
109
+ generated: undefined;
110
+ }, {}, {
111
+ length: number | undefined;
112
+ }>;
113
+ model: import("drizzle-orm/sqlite-core").SQLiteColumn<{
114
+ name: "model";
115
+ tableName: "experiments";
116
+ dataType: "string";
117
+ columnType: "SQLiteText";
118
+ data: Model;
119
+ driverParam: string;
120
+ notNull: true;
121
+ hasDefault: false;
122
+ isPrimaryKey: false;
123
+ isAutoincrement: false;
124
+ hasRuntimeDefault: false;
125
+ enumValues: [string, ...string[]];
126
+ baseColumn: never;
127
+ identity: undefined;
128
+ generated: undefined;
129
+ }, {}, {
130
+ length: number | undefined;
131
+ $type: Model;
132
+ }>;
133
+ agent_count: import("drizzle-orm/sqlite-core").SQLiteColumn<{
134
+ name: "agent_count";
135
+ tableName: "experiments";
136
+ dataType: "number";
137
+ columnType: "SQLiteInteger";
138
+ data: number;
139
+ driverParam: number;
140
+ notNull: true;
141
+ hasDefault: true;
142
+ isPrimaryKey: false;
143
+ isAutoincrement: false;
144
+ hasRuntimeDefault: false;
145
+ enumValues: undefined;
146
+ baseColumn: never;
147
+ identity: undefined;
148
+ generated: undefined;
149
+ }, {}, {}>;
150
+ };
151
+ dialect: "sqlite";
152
+ }>;
153
+ export declare const messages: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
154
+ name: "messages";
155
+ schema: undefined;
156
+ columns: {
157
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
158
+ name: "id";
159
+ tableName: "messages";
160
+ dataType: "number";
161
+ columnType: "SQLiteInteger";
162
+ data: number;
163
+ driverParam: number;
164
+ notNull: true;
165
+ hasDefault: true;
166
+ isPrimaryKey: true;
167
+ isAutoincrement: false;
168
+ hasRuntimeDefault: false;
169
+ enumValues: undefined;
170
+ baseColumn: never;
171
+ identity: undefined;
172
+ generated: undefined;
173
+ }, {}, {}>;
174
+ created: import("drizzle-orm/sqlite-core").SQLiteColumn<{
175
+ name: "created";
176
+ tableName: "messages";
177
+ dataType: "date";
178
+ columnType: "SQLiteTimestamp";
179
+ data: Date;
180
+ driverParam: number;
181
+ notNull: true;
182
+ hasDefault: true;
183
+ isPrimaryKey: false;
184
+ isAutoincrement: false;
185
+ hasRuntimeDefault: true;
186
+ enumValues: undefined;
187
+ baseColumn: never;
188
+ identity: undefined;
189
+ generated: undefined;
190
+ }, {}, {}>;
191
+ updated: import("drizzle-orm/sqlite-core").SQLiteColumn<{
192
+ name: "updated";
193
+ tableName: "messages";
194
+ dataType: "date";
195
+ columnType: "SQLiteTimestamp";
196
+ data: Date;
197
+ driverParam: number;
198
+ notNull: true;
199
+ hasDefault: true;
200
+ isPrimaryKey: false;
201
+ isAutoincrement: false;
202
+ hasRuntimeDefault: true;
203
+ enumValues: undefined;
204
+ baseColumn: never;
205
+ identity: undefined;
206
+ generated: undefined;
207
+ }, {}, {}>;
208
+ experiment: import("drizzle-orm/sqlite-core").SQLiteColumn<{
209
+ name: "experiment";
210
+ tableName: "messages";
211
+ dataType: "number";
212
+ columnType: "SQLiteInteger";
213
+ data: number;
214
+ driverParam: number;
215
+ notNull: true;
216
+ hasDefault: false;
217
+ isPrimaryKey: false;
218
+ isAutoincrement: false;
219
+ hasRuntimeDefault: false;
220
+ enumValues: undefined;
221
+ baseColumn: never;
222
+ identity: undefined;
223
+ generated: undefined;
224
+ }, {}, {}>;
225
+ agent: import("drizzle-orm/sqlite-core").SQLiteColumn<{
226
+ name: "agent";
227
+ tableName: "messages";
228
+ dataType: "number";
229
+ columnType: "SQLiteInteger";
230
+ data: number;
231
+ driverParam: number;
232
+ notNull: true;
233
+ hasDefault: false;
234
+ isPrimaryKey: false;
235
+ isAutoincrement: false;
236
+ hasRuntimeDefault: false;
237
+ enumValues: undefined;
238
+ baseColumn: never;
239
+ identity: undefined;
240
+ generated: undefined;
241
+ }, {}, {}>;
242
+ position: import("drizzle-orm/sqlite-core").SQLiteColumn<{
243
+ name: "position";
244
+ tableName: "messages";
245
+ dataType: "number";
246
+ columnType: "SQLiteInteger";
247
+ data: number;
248
+ driverParam: number;
249
+ notNull: true;
250
+ hasDefault: false;
251
+ isPrimaryKey: false;
252
+ isAutoincrement: false;
253
+ hasRuntimeDefault: false;
254
+ enumValues: undefined;
255
+ baseColumn: never;
256
+ identity: undefined;
257
+ generated: undefined;
258
+ }, {}, {}>;
259
+ role: import("drizzle-orm/sqlite-core").SQLiteColumn<{
260
+ name: "role";
261
+ tableName: "messages";
262
+ dataType: "string";
263
+ columnType: "SQLiteText";
264
+ data: Message;
265
+ driverParam: string;
266
+ notNull: true;
267
+ hasDefault: false;
268
+ isPrimaryKey: false;
269
+ isAutoincrement: false;
270
+ hasRuntimeDefault: false;
271
+ enumValues: ["user", "agent"];
272
+ baseColumn: never;
273
+ identity: undefined;
274
+ generated: undefined;
275
+ }, {}, {
276
+ length: number | undefined;
277
+ $type: Message;
278
+ }>;
279
+ content: import("drizzle-orm/sqlite-core").SQLiteColumn<{
280
+ name: "content";
281
+ tableName: "messages";
282
+ dataType: "json";
283
+ columnType: "SQLiteTextJson";
284
+ data: Message;
285
+ driverParam: string;
286
+ notNull: true;
287
+ hasDefault: false;
288
+ isPrimaryKey: false;
289
+ isAutoincrement: false;
290
+ hasRuntimeDefault: false;
291
+ enumValues: undefined;
292
+ baseColumn: never;
293
+ identity: undefined;
294
+ generated: undefined;
295
+ }, {}, {
296
+ $type: Message;
297
+ }>;
298
+ total_tokens: import("drizzle-orm/sqlite-core").SQLiteColumn<{
299
+ name: "total_tokens";
300
+ tableName: "messages";
301
+ dataType: "number";
302
+ columnType: "SQLiteInteger";
303
+ data: number;
304
+ driverParam: number;
305
+ notNull: true;
306
+ hasDefault: true;
307
+ isPrimaryKey: false;
308
+ isAutoincrement: false;
309
+ hasRuntimeDefault: false;
310
+ enumValues: undefined;
311
+ baseColumn: never;
312
+ identity: undefined;
313
+ generated: undefined;
314
+ }, {}, {}>;
315
+ cost: import("drizzle-orm/sqlite-core").SQLiteColumn<{
316
+ name: "cost";
317
+ tableName: "messages";
318
+ dataType: "number";
319
+ columnType: "SQLiteReal";
320
+ data: number;
321
+ driverParam: number;
322
+ notNull: true;
323
+ hasDefault: true;
324
+ isPrimaryKey: false;
325
+ isAutoincrement: false;
326
+ hasRuntimeDefault: false;
327
+ enumValues: undefined;
328
+ baseColumn: never;
329
+ identity: undefined;
330
+ generated: undefined;
331
+ }, {}, {}>;
332
+ };
333
+ dialect: "sqlite";
334
+ }>;
335
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBvB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BpB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { sqliteTable, text, integer, real, unique, } from "drizzle-orm/sqlite-core";
2
+ export const experiments = sqliteTable("experiments", {
3
+ id: integer("id").primaryKey(),
4
+ created: integer("created", { mode: "timestamp" })
5
+ .notNull()
6
+ .$defaultFn(() => new Date()),
7
+ updated: integer("updated", { mode: "timestamp" })
8
+ .notNull()
9
+ .$defaultFn(() => new Date()),
10
+ name: text("name").notNull(),
11
+ problem: text("problem").notNull(),
12
+ profile: text("profile").notNull().default("example"),
13
+ model: text("model").$type().notNull(),
14
+ agent_count: integer("agent_count").notNull().default(0),
15
+ }, (t) => [unique().on(t.name)]);
16
+ export const messages = sqliteTable("messages", {
17
+ id: integer("id").primaryKey(),
18
+ created: integer("created", { mode: "timestamp" })
19
+ .notNull()
20
+ .$defaultFn(() => new Date()),
21
+ updated: integer("updated", { mode: "timestamp" })
22
+ .notNull()
23
+ .$defaultFn(() => new Date()),
24
+ experiment: integer("experiment")
25
+ .notNull()
26
+ .references(() => experiments.id),
27
+ agent: integer("agent").notNull(),
28
+ position: integer("position").notNull(),
29
+ role: text("role", { enum: ["user", "agent"] })
30
+ .$type()
31
+ .notNull(),
32
+ content: text("content", { mode: "json" })
33
+ .$type()
34
+ .notNull(),
35
+ // Token tracking
36
+ total_tokens: integer("total_tokens").notNull().default(0),
37
+ cost: real("cost").notNull().default(0),
38
+ }, (t) => [unique().on(t.experiment, t.agent, t.position)]);
39
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,MAAM,GACP,MAAM,yBAAyB,CAAC;AAIjC,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CACpC,aAAa,EACb;IACE,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC9B,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;SAC/C,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;SAC/C,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;IAE/B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;IAC5B,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;IAElC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACrD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAS,CAAC,OAAO,EAAE;IAC7C,WAAW,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;CACzD,EACD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CACjC,UAAU,EACV;IACE,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;IAC9B,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;SAC/C,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;SAC/C,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;IAE/B,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC;SAC9B,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;IACnC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAEjC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IAEvC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAU,EAAE,CAAC;SACrD,KAAK,EAAmB;SACxB,OAAO,EAAE;IACZ,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;SACvC,KAAK,EAAsB;SAC3B,OAAO,EAAE;IAEZ,iBAAiB;IACjB,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;CACxC,EACD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CACxD,CAAC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Universal Agent Harness Library
3
+ *
4
+ * A multi-agent orchestration system with MCP server support.
5
+ * This library allows you to create and run AI agents that can connect to
6
+ * MCP (Model Context Protocol) servers for various capabilities.
7
+ */
8
+ import { ExperimentResource } from "./resources/experiment";
9
+ import { Model } from "./models/provider";
10
+ import { Result } from "./lib/error";
11
+ /**
12
+ * Configuration for creating a new experiment
13
+ */
14
+ export interface CreateExperimentConfig {
15
+ /** Unique name for the experiment */
16
+ name: string;
17
+ /** Problem statement or task description */
18
+ problem: string;
19
+ /** AI model to use (e.g., "claude-sonnet-4-5") */
20
+ model: Model;
21
+ /** Number of agents to create (default: 1) */
22
+ agentCount?: number;
23
+ /** Profile name (default: "example") */
24
+ profile?: string;
25
+ }
26
+ /**
27
+ * Configuration for running an experiment
28
+ */
29
+ export interface RunExperimentConfig {
30
+ /** Name of the experiment to run */
31
+ experimentName: string;
32
+ /** Optional: Run only specific agent (0-indexed) */
33
+ agentIndex?: number;
34
+ /** Optional: Run only one tick instead of continuous */
35
+ singleTick?: boolean;
36
+ /** Optional: Maximum cost in dollars before stopping */
37
+ maxCost?: number;
38
+ /** Optional: Enable extended thinking (default: true) */
39
+ thinking?: boolean;
40
+ /** Optional: Callback for each agent message */
41
+ onMessage?: (message: any) => void;
42
+ /** Optional: Callback for cost updates */
43
+ onCostUpdate?: (cost: number) => void;
44
+ }
45
+ /**
46
+ * Create a new experiment
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const experiment = await createExperiment({
51
+ * name: "my-experiment",
52
+ * problem: "Calculate the factorial of 10",
53
+ * model: "claude-sonnet-4-5",
54
+ * agentCount: 1,
55
+ * profile: "example"
56
+ * });
57
+ * ```
58
+ */
59
+ export declare function createExperiment(config: CreateExperimentConfig): Promise<ExperimentResource>;
60
+ /**
61
+ * Run an experiment
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * await runExperiment({
66
+ * experimentName: "my-experiment",
67
+ * singleTick: true,
68
+ * onMessage: (msg) => console.log("Agent:", msg)
69
+ * });
70
+ * ```
71
+ */
72
+ export declare function runExperiment(config: RunExperimentConfig): Promise<Result<void>>;
73
+ /**
74
+ * Get experiment by name
75
+ */
76
+ export declare function getExperiment(name: string): Promise<Result<ExperimentResource>>;
77
+ /**
78
+ * List all experiments
79
+ */
80
+ export declare function listExperiments(): Promise<ExperimentResource[]>;
81
+ /**
82
+ * Get total cost for an experiment
83
+ */
84
+ export declare function getExperimentCost(experiment: ExperimentResource): Promise<number>;
85
+ /**
86
+ * Get total tokens for an experiment
87
+ */
88
+ export declare function getExperimentTokens(experiment: ExperimentResource): Promise<number>;
89
+ /**
90
+ * Delete an experiment and all its data
91
+ */
92
+ export declare function deleteExperiment(name: string): Promise<Result<void>>;
93
+ export { ExperimentResource } from "./resources/experiment";
94
+ export { MessageResource } from "./resources/messages";
95
+ export { Runner } from "./runner";
96
+ export { Model } from "./models/provider";
97
+ export { MCPServerConfig } from "./lib/mcp-config";
98
+ export { Result } from "./lib/error";
99
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,KAAK,EAAE,KAAK,CAAC;IACb,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,oCAAoC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IACnC,0CAA0C;IAC1C,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAU7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CA6EvB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAErC;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAErE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,kBAAkB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,kBAAkB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAU1E;AAGD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Universal Agent Harness Library
3
+ *
4
+ * A multi-agent orchestration system with MCP server support.
5
+ * This library allows you to create and run AI agents that can connect to
6
+ * MCP (Model Context Protocol) servers for various capabilities.
7
+ */
8
+ import { ExperimentResource } from "./resources/experiment";
9
+ import { MessageResource } from "./resources/messages";
10
+ import { Runner } from "./runner";
11
+ /**
12
+ * Create a new experiment
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const experiment = await createExperiment({
17
+ * name: "my-experiment",
18
+ * problem: "Calculate the factorial of 10",
19
+ * model: "claude-sonnet-4-5",
20
+ * agentCount: 1,
21
+ * profile: "example"
22
+ * });
23
+ * ```
24
+ */
25
+ export async function createExperiment(config) {
26
+ const experiment = await ExperimentResource.create({
27
+ name: config.name,
28
+ problem: config.problem,
29
+ model: config.model,
30
+ agent_count: config.agentCount ?? 1,
31
+ profile: config.profile ?? "example",
32
+ });
33
+ return experiment;
34
+ }
35
+ /**
36
+ * Run an experiment
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * await runExperiment({
41
+ * experimentName: "my-experiment",
42
+ * singleTick: true,
43
+ * onMessage: (msg) => console.log("Agent:", msg)
44
+ * });
45
+ * ```
46
+ */
47
+ export async function runExperiment(config) {
48
+ // Find experiment
49
+ const experimentRes = await ExperimentResource.findByName(config.experimentName);
50
+ if (experimentRes.isErr()) {
51
+ return experimentRes;
52
+ }
53
+ const experiment = experimentRes.value;
54
+ const expData = experiment.toJSON();
55
+ // Determine which agents to run
56
+ const agentIndices = [];
57
+ if (config.agentIndex !== undefined) {
58
+ agentIndices.push(config.agentIndex);
59
+ }
60
+ else {
61
+ for (let i = 0; i < expData.agent_count; i++) {
62
+ agentIndices.push(i);
63
+ }
64
+ }
65
+ // Build runners
66
+ const builderResults = await Promise.all(agentIndices.map((agentIndex) => Runner.builder(experiment, agentIndex, {
67
+ thinking: config.thinking ?? true,
68
+ })));
69
+ // Check for errors
70
+ for (const res of builderResults) {
71
+ if (res.isErr()) {
72
+ return res;
73
+ }
74
+ }
75
+ const runners = builderResults
76
+ .filter((r) => r.isOk())
77
+ .map((r) => r.value);
78
+ // Run single tick if requested
79
+ if (config.singleTick) {
80
+ const tickResults = await Promise.all(runners.map((r) => r.tick()));
81
+ for (const tick of tickResults) {
82
+ if (tick.isErr()) {
83
+ return tick;
84
+ }
85
+ }
86
+ return { isOk: () => true, isErr: () => false, value: undefined };
87
+ }
88
+ // Run continuously
89
+ let tickCount = 0;
90
+ let lastCost = await MessageResource.totalCostForExperiment(experiment);
91
+ const runnerPromises = runners.map(async (runner) => {
92
+ while (true) {
93
+ // Check cost limit
94
+ if (config.maxCost && tickCount % 20 === 0) {
95
+ lastCost = await MessageResource.totalCostForExperiment(experiment);
96
+ if (config.onCostUpdate) {
97
+ config.onCostUpdate(lastCost);
98
+ }
99
+ if (lastCost > config.maxCost) {
100
+ return;
101
+ }
102
+ }
103
+ const tick = await runner.tick();
104
+ tickCount++;
105
+ if (tick.isErr()) {
106
+ return tick;
107
+ }
108
+ }
109
+ });
110
+ await Promise.all(runnerPromises);
111
+ return { isOk: () => true, isErr: () => false, value: undefined };
112
+ }
113
+ /**
114
+ * Get experiment by name
115
+ */
116
+ export async function getExperiment(name) {
117
+ return await ExperimentResource.findByName(name);
118
+ }
119
+ /**
120
+ * List all experiments
121
+ */
122
+ export async function listExperiments() {
123
+ return await ExperimentResource.all();
124
+ }
125
+ /**
126
+ * Get total cost for an experiment
127
+ */
128
+ export async function getExperimentCost(experiment) {
129
+ return await MessageResource.totalCostForExperiment(experiment);
130
+ }
131
+ /**
132
+ * Get total tokens for an experiment
133
+ */
134
+ export async function getExperimentTokens(experiment) {
135
+ return await MessageResource.totalTokensForExperiment(experiment);
136
+ }
137
+ /**
138
+ * Delete an experiment and all its data
139
+ */
140
+ export async function deleteExperiment(name) {
141
+ const experimentRes = await ExperimentResource.findByName(name);
142
+ if (experimentRes.isErr()) {
143
+ return experimentRes;
144
+ }
145
+ const experiment = experimentRes.value;
146
+ await experiment.delete();
147
+ return { isOk: () => true, isErr: () => false, value: undefined };
148
+ }
149
+ // Re-export types and utilities
150
+ export { ExperimentResource } from "./resources/experiment";
151
+ export { MessageResource } from "./resources/messages";
152
+ export { Runner } from "./runner";
153
+ export { Model } from "./models/provider";
154
+ export { MCPServerConfig } from "./lib/mcp-config";
155
+ export { Result } from "./lib/error";
156
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function assertNever(x: never): never;
2
+ //# sourceMappingURL=assert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../src/lib/assert.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAM3C"}
@@ -0,0 +1,4 @@
1
+ export function assertNever(x) {
2
+ throw new Error(`${typeof x === "object" ? JSON.stringify(x) : x} is not of type never. This should never happen.`);
3
+ }
4
+ //# sourceMappingURL=assert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.js","sourceRoot":"","sources":["../../src/lib/assert.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CAAC,CAAQ;IAClC,MAAM,IAAI,KAAK,CACb,GACE,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9C,kDAAkD,CACnD,CAAC;AACJ,CAAC"}