@anonx3247/universal-agent-harness 0.1.0 → 1.0.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 (81) hide show
  1. package/dist/agent-harness.js +143 -143
  2. package/dist/agent-harness.js.map +1 -1
  3. package/dist/db/index.d.ts +2 -1
  4. package/dist/db/index.d.ts.map +1 -1
  5. package/dist/db/schema.d.ts +130 -18
  6. package/dist/db/schema.d.ts.map +1 -1
  7. package/dist/db/schema.js +19 -5
  8. package/dist/db/schema.js.map +1 -1
  9. package/dist/index.d.ts +43 -33
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +67 -53
  12. package/dist/index.js.map +1 -1
  13. package/dist/lib/advisory.d.ts +21 -0
  14. package/dist/lib/advisory.d.ts.map +1 -0
  15. package/dist/lib/advisory.js +47 -0
  16. package/dist/lib/advisory.js.map +1 -0
  17. package/dist/lib/problems.d.ts +43 -0
  18. package/dist/lib/problems.d.ts.map +1 -0
  19. package/dist/lib/problems.js +96 -0
  20. package/dist/lib/problems.js.map +1 -0
  21. package/dist/lib/profiles.d.ts +44 -0
  22. package/dist/lib/profiles.d.ts.map +1 -0
  23. package/dist/lib/profiles.js +97 -0
  24. package/dist/lib/profiles.js.map +1 -0
  25. package/dist/models/anthropic.d.ts +2 -2
  26. package/dist/models/anthropic.d.ts.map +1 -1
  27. package/dist/models/anthropic.js +5 -5
  28. package/dist/models/anthropic.js.map +1 -1
  29. package/dist/models/deepseek/index.d.ts +2 -2
  30. package/dist/models/deepseek/index.d.ts.map +1 -1
  31. package/dist/models/deepseek/index.js +5 -5
  32. package/dist/models/deepseek/index.js.map +1 -1
  33. package/dist/models/gemini.d.ts +2 -2
  34. package/dist/models/gemini.d.ts.map +1 -1
  35. package/dist/models/gemini.js +5 -5
  36. package/dist/models/gemini.js.map +1 -1
  37. package/dist/models/index.d.ts +2 -2
  38. package/dist/models/index.d.ts.map +1 -1
  39. package/dist/models/mistral.d.ts +11 -3
  40. package/dist/models/mistral.d.ts.map +1 -1
  41. package/dist/models/mistral.js +5 -5
  42. package/dist/models/mistral.js.map +1 -1
  43. package/dist/models/moonshotai.d.ts +2 -2
  44. package/dist/models/moonshotai.d.ts.map +1 -1
  45. package/dist/models/moonshotai.js +5 -5
  46. package/dist/models/moonshotai.js.map +1 -1
  47. package/dist/models/openai.d.ts +2 -2
  48. package/dist/models/openai.d.ts.map +1 -1
  49. package/dist/models/openai.js +4 -4
  50. package/dist/models/openai.js.map +1 -1
  51. package/dist/models/provider.d.ts +4 -3
  52. package/dist/models/provider.d.ts.map +1 -1
  53. package/dist/models/provider.js +14 -2
  54. package/dist/models/provider.js.map +1 -1
  55. package/dist/models/redpill.d.ts +20 -0
  56. package/dist/models/redpill.d.ts.map +1 -0
  57. package/dist/models/redpill.js +224 -0
  58. package/dist/models/redpill.js.map +1 -0
  59. package/dist/resources/advisory.d.ts +13 -0
  60. package/dist/resources/advisory.d.ts.map +1 -0
  61. package/dist/resources/advisory.js +32 -0
  62. package/dist/resources/advisory.js.map +1 -0
  63. package/dist/resources/messages.d.ts +21 -10
  64. package/dist/resources/messages.d.ts.map +1 -1
  65. package/dist/resources/messages.js +43 -21
  66. package/dist/resources/messages.js.map +1 -1
  67. package/dist/resources/run.d.ts +30 -0
  68. package/dist/resources/run.d.ts.map +1 -0
  69. package/dist/resources/run.js +73 -0
  70. package/dist/resources/run.js.map +1 -0
  71. package/dist/runner/index.d.ts +7 -7
  72. package/dist/runner/index.d.ts.map +1 -1
  73. package/dist/runner/index.js +33 -25
  74. package/dist/runner/index.js.map +1 -1
  75. package/dist/tools/index.d.ts +0 -1
  76. package/dist/tools/index.js +1 -1
  77. package/package.json +3 -5
  78. package/dist/resources/experiment.d.ts +0 -18
  79. package/dist/resources/experiment.d.ts.map +0 -1
  80. package/dist/resources/experiment.js +0 -55
  81. package/dist/resources/experiment.js.map +0 -1
@@ -1,10 +1,11 @@
1
- export declare const experiments: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2
- name: "experiments";
1
+ import { Model } from "../models/provider";
2
+ export declare const runs: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
3
+ name: "runs";
3
4
  schema: undefined;
4
5
  columns: {
5
6
  id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
6
7
  name: "id";
7
- tableName: "experiments";
8
+ tableName: "runs";
8
9
  dataType: "number";
9
10
  columnType: "SQLiteInteger";
10
11
  data: number;
@@ -21,7 +22,7 @@ export declare const experiments: import("drizzle-orm/sqlite-core").SQLiteTableW
21
22
  }, {}, {}>;
22
23
  created: import("drizzle-orm/sqlite-core").SQLiteColumn<{
23
24
  name: "created";
24
- tableName: "experiments";
25
+ tableName: "runs";
25
26
  dataType: "date";
26
27
  columnType: "SQLiteTimestamp";
27
28
  data: Date;
@@ -38,7 +39,7 @@ export declare const experiments: import("drizzle-orm/sqlite-core").SQLiteTableW
38
39
  }, {}, {}>;
39
40
  updated: import("drizzle-orm/sqlite-core").SQLiteColumn<{
40
41
  name: "updated";
41
- tableName: "experiments";
42
+ tableName: "runs";
42
43
  dataType: "date";
43
44
  columnType: "SQLiteTimestamp";
44
45
  data: Date;
@@ -55,7 +56,7 @@ export declare const experiments: import("drizzle-orm/sqlite-core").SQLiteTableW
55
56
  }, {}, {}>;
56
57
  name: import("drizzle-orm/sqlite-core").SQLiteColumn<{
57
58
  name: "name";
58
- tableName: "experiments";
59
+ tableName: "runs";
59
60
  dataType: "string";
60
61
  columnType: "SQLiteText";
61
62
  data: string;
@@ -72,9 +73,9 @@ export declare const experiments: import("drizzle-orm/sqlite-core").SQLiteTableW
72
73
  }, {}, {
73
74
  length: number | undefined;
74
75
  }>;
75
- problem: import("drizzle-orm/sqlite-core").SQLiteColumn<{
76
- name: "problem";
77
- tableName: "experiments";
76
+ problem_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
77
+ name: "problem_id";
78
+ tableName: "runs";
78
79
  dataType: "string";
79
80
  columnType: "SQLiteText";
80
81
  data: string;
@@ -93,7 +94,7 @@ export declare const experiments: import("drizzle-orm/sqlite-core").SQLiteTableW
93
94
  }>;
94
95
  profile: import("drizzle-orm/sqlite-core").SQLiteColumn<{
95
96
  name: "profile";
96
- tableName: "experiments";
97
+ tableName: "runs";
97
98
  dataType: "string";
98
99
  columnType: "SQLiteText";
99
100
  data: string;
@@ -112,7 +113,7 @@ export declare const experiments: import("drizzle-orm/sqlite-core").SQLiteTableW
112
113
  }>;
113
114
  model: import("drizzle-orm/sqlite-core").SQLiteColumn<{
114
115
  name: "model";
115
- tableName: "experiments";
116
+ tableName: "runs";
116
117
  dataType: "string";
117
118
  columnType: "SQLiteText";
118
119
  data: Model;
@@ -132,7 +133,7 @@ export declare const experiments: import("drizzle-orm/sqlite-core").SQLiteTableW
132
133
  }>;
133
134
  agent_count: import("drizzle-orm/sqlite-core").SQLiteColumn<{
134
135
  name: "agent_count";
135
- tableName: "experiments";
136
+ tableName: "runs";
136
137
  dataType: "number";
137
138
  columnType: "SQLiteInteger";
138
139
  data: number;
@@ -205,8 +206,8 @@ export declare const messages: import("drizzle-orm/sqlite-core").SQLiteTableWith
205
206
  identity: undefined;
206
207
  generated: undefined;
207
208
  }, {}, {}>;
208
- experiment: import("drizzle-orm/sqlite-core").SQLiteColumn<{
209
- name: "experiment";
209
+ run: import("drizzle-orm/sqlite-core").SQLiteColumn<{
210
+ name: "run";
210
211
  tableName: "messages";
211
212
  dataType: "number";
212
213
  columnType: "SQLiteInteger";
@@ -261,7 +262,7 @@ export declare const messages: import("drizzle-orm/sqlite-core").SQLiteTableWith
261
262
  tableName: "messages";
262
263
  dataType: "string";
263
264
  columnType: "SQLiteText";
264
- data: Message;
265
+ data: "agent" | "user";
265
266
  driverParam: string;
266
267
  notNull: true;
267
268
  hasDefault: false;
@@ -274,14 +275,14 @@ export declare const messages: import("drizzle-orm/sqlite-core").SQLiteTableWith
274
275
  generated: undefined;
275
276
  }, {}, {
276
277
  length: number | undefined;
277
- $type: Message;
278
+ $type: "agent" | "user";
278
279
  }>;
279
280
  content: import("drizzle-orm/sqlite-core").SQLiteColumn<{
280
281
  name: "content";
281
282
  tableName: "messages";
282
283
  dataType: "json";
283
284
  columnType: "SQLiteTextJson";
284
- data: Message;
285
+ data: (import("../models").TextContent | import("../models").ToolUse | import("../models").ToolResult | import("../models").Thinking)[];
285
286
  driverParam: string;
286
287
  notNull: true;
287
288
  hasDefault: false;
@@ -293,7 +294,7 @@ export declare const messages: import("drizzle-orm/sqlite-core").SQLiteTableWith
293
294
  identity: undefined;
294
295
  generated: undefined;
295
296
  }, {}, {
296
- $type: Message;
297
+ $type: (import("../models").TextContent | import("../models").ToolUse | import("../models").ToolResult | import("../models").Thinking)[];
297
298
  }>;
298
299
  total_tokens: import("drizzle-orm/sqlite-core").SQLiteColumn<{
299
300
  name: "total_tokens";
@@ -332,4 +333,115 @@ export declare const messages: import("drizzle-orm/sqlite-core").SQLiteTableWith
332
333
  };
333
334
  dialect: "sqlite";
334
335
  }>;
336
+ export declare const advisories: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
337
+ name: "advisories";
338
+ schema: undefined;
339
+ columns: {
340
+ id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
341
+ name: "id";
342
+ tableName: "advisories";
343
+ dataType: "number";
344
+ columnType: "SQLiteInteger";
345
+ data: number;
346
+ driverParam: number;
347
+ notNull: true;
348
+ hasDefault: true;
349
+ isPrimaryKey: true;
350
+ isAutoincrement: false;
351
+ hasRuntimeDefault: false;
352
+ enumValues: undefined;
353
+ baseColumn: never;
354
+ identity: undefined;
355
+ generated: undefined;
356
+ }, {}, {}>;
357
+ created: import("drizzle-orm/sqlite-core").SQLiteColumn<{
358
+ name: "created";
359
+ tableName: "advisories";
360
+ dataType: "date";
361
+ columnType: "SQLiteTimestamp";
362
+ data: Date;
363
+ driverParam: number;
364
+ notNull: true;
365
+ hasDefault: true;
366
+ isPrimaryKey: false;
367
+ isAutoincrement: false;
368
+ hasRuntimeDefault: true;
369
+ enumValues: undefined;
370
+ baseColumn: never;
371
+ identity: undefined;
372
+ generated: undefined;
373
+ }, {}, {}>;
374
+ run_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
375
+ name: "run_id";
376
+ tableName: "advisories";
377
+ dataType: "number";
378
+ columnType: "SQLiteInteger";
379
+ data: number;
380
+ driverParam: number;
381
+ notNull: true;
382
+ hasDefault: false;
383
+ isPrimaryKey: false;
384
+ isAutoincrement: false;
385
+ hasRuntimeDefault: false;
386
+ enumValues: undefined;
387
+ baseColumn: never;
388
+ identity: undefined;
389
+ generated: undefined;
390
+ }, {}, {}>;
391
+ agent_index: import("drizzle-orm/sqlite-core").SQLiteColumn<{
392
+ name: "agent_index";
393
+ tableName: "advisories";
394
+ dataType: "number";
395
+ columnType: "SQLiteInteger";
396
+ data: number;
397
+ driverParam: number;
398
+ notNull: false;
399
+ hasDefault: false;
400
+ isPrimaryKey: false;
401
+ isAutoincrement: false;
402
+ hasRuntimeDefault: false;
403
+ enumValues: undefined;
404
+ baseColumn: never;
405
+ identity: undefined;
406
+ generated: undefined;
407
+ }, {}, {}>;
408
+ content: import("drizzle-orm/sqlite-core").SQLiteColumn<{
409
+ name: "content";
410
+ tableName: "advisories";
411
+ dataType: "string";
412
+ columnType: "SQLiteText";
413
+ data: string;
414
+ driverParam: string;
415
+ notNull: true;
416
+ hasDefault: false;
417
+ isPrimaryKey: false;
418
+ isAutoincrement: false;
419
+ hasRuntimeDefault: false;
420
+ enumValues: [string, ...string[]];
421
+ baseColumn: never;
422
+ identity: undefined;
423
+ generated: undefined;
424
+ }, {}, {
425
+ length: number | undefined;
426
+ }>;
427
+ delivered: import("drizzle-orm/sqlite-core").SQLiteColumn<{
428
+ name: "delivered";
429
+ tableName: "advisories";
430
+ dataType: "boolean";
431
+ columnType: "SQLiteBoolean";
432
+ data: boolean;
433
+ driverParam: number;
434
+ notNull: true;
435
+ hasDefault: true;
436
+ isPrimaryKey: false;
437
+ isAutoincrement: false;
438
+ hasRuntimeDefault: false;
439
+ enumValues: undefined;
440
+ baseColumn: never;
441
+ identity: undefined;
442
+ generated: undefined;
443
+ }, {}, {}>;
444
+ };
445
+ dialect: "sqlite";
446
+ }>;
335
447
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7C,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBhB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BpB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAarB,CAAC"}
package/dist/db/schema.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { sqliteTable, text, integer, real, unique, } from "drizzle-orm/sqlite-core";
2
- export const experiments = sqliteTable("experiments", {
2
+ export const runs = sqliteTable("runs", {
3
3
  id: integer("id").primaryKey(),
4
4
  created: integer("created", { mode: "timestamp" })
5
5
  .notNull()
@@ -8,7 +8,7 @@ export const experiments = sqliteTable("experiments", {
8
8
  .notNull()
9
9
  .$defaultFn(() => new Date()),
10
10
  name: text("name").notNull(),
11
- problem: text("problem").notNull(),
11
+ problem_id: text("problem_id").notNull(),
12
12
  profile: text("profile").notNull().default("example"),
13
13
  model: text("model").$type().notNull(),
14
14
  agent_count: integer("agent_count").notNull().default(0),
@@ -21,9 +21,9 @@ export const messages = sqliteTable("messages", {
21
21
  updated: integer("updated", { mode: "timestamp" })
22
22
  .notNull()
23
23
  .$defaultFn(() => new Date()),
24
- experiment: integer("experiment")
24
+ run: integer("run")
25
25
  .notNull()
26
- .references(() => experiments.id),
26
+ .references(() => runs.id),
27
27
  agent: integer("agent").notNull(),
28
28
  position: integer("position").notNull(),
29
29
  role: text("role", { enum: ["user", "agent"] })
@@ -35,5 +35,19 @@ export const messages = sqliteTable("messages", {
35
35
  // Token tracking
36
36
  total_tokens: integer("total_tokens").notNull().default(0),
37
37
  cost: real("cost").notNull().default(0),
38
- }, (t) => [unique().on(t.experiment, t.agent, t.position)]);
38
+ }, (t) => [unique().on(t.run, t.agent, t.position)]);
39
+ export const advisories = sqliteTable("advisories", {
40
+ id: integer("id").primaryKey(),
41
+ created: integer("created", { mode: "timestamp" })
42
+ .notNull()
43
+ .$defaultFn(() => new Date()),
44
+ run_id: integer("run_id")
45
+ .notNull()
46
+ .references(() => runs.id),
47
+ agent_index: integer("agent_index"), // null means broadcast
48
+ content: text("content").notNull(),
49
+ delivered: integer("delivered", { mode: "boolean" })
50
+ .notNull()
51
+ .default(false),
52
+ });
39
53
  //# sourceMappingURL=schema.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5,17 +5,17 @@
5
5
  * This library allows you to create and run AI agents that can connect to
6
6
  * MCP (Model Context Protocol) servers for various capabilities.
7
7
  */
8
- import { ExperimentResource } from "./resources/experiment";
8
+ import { RunResource } from "./resources/run";
9
9
  import { Model } from "./models/provider";
10
10
  import { Result } from "./lib/error";
11
11
  /**
12
- * Configuration for creating a new experiment
12
+ * Configuration for creating a new run
13
13
  */
14
- export interface CreateExperimentConfig {
15
- /** Unique name for the experiment */
14
+ export interface CreateRunConfig {
15
+ /** Unique name for the run */
16
16
  name: string;
17
- /** Problem statement or task description */
18
- problem: string;
17
+ /** Problem ID (directory name in problems/) */
18
+ problemId: string;
19
19
  /** AI model to use (e.g., "claude-sonnet-4-5") */
20
20
  model: Model;
21
21
  /** Number of agents to create (default: 1) */
@@ -24,11 +24,11 @@ export interface CreateExperimentConfig {
24
24
  profile?: string;
25
25
  }
26
26
  /**
27
- * Configuration for running an experiment
27
+ * Configuration for running (starting or continuing) a run
28
28
  */
29
- export interface RunExperimentConfig {
30
- /** Name of the experiment to run */
31
- experimentName: string;
29
+ export interface RunConfig {
30
+ /** Name of the run to continue */
31
+ runName: string;
32
32
  /** Optional: Run only specific agent (0-indexed) */
33
33
  agentIndex?: number;
34
34
  /** Optional: Run only one tick instead of continuous */
@@ -43,57 +43,67 @@ export interface RunExperimentConfig {
43
43
  onCostUpdate?: (cost: number) => void;
44
44
  }
45
45
  /**
46
- * Create a new experiment
46
+ * Create a new run
47
47
  *
48
48
  * @example
49
49
  * ```typescript
50
- * const experiment = await createExperiment({
51
- * name: "my-experiment",
52
- * problem: "Calculate the factorial of 10",
50
+ * const run = await createRun({
51
+ * name: "my-run",
52
+ * problemId: "factorial-problem",
53
53
  * model: "claude-sonnet-4-5",
54
54
  * agentCount: 1,
55
55
  * profile: "example"
56
56
  * });
57
57
  * ```
58
58
  */
59
- export declare function createExperiment(config: CreateExperimentConfig): Promise<ExperimentResource>;
59
+ export declare function createRun(config: CreateRunConfig): Promise<Result<RunResource>>;
60
60
  /**
61
- * Run an experiment
61
+ * Continue a run
62
62
  *
63
63
  * @example
64
64
  * ```typescript
65
- * await runExperiment({
66
- * experimentName: "my-experiment",
65
+ * await run({
66
+ * runName: "my-run",
67
67
  * singleTick: true,
68
68
  * onMessage: (msg) => console.log("Agent:", msg)
69
69
  * });
70
70
  * ```
71
71
  */
72
- export declare function runExperiment(config: RunExperimentConfig): Promise<Result<void>>;
72
+ export declare function run(config: RunConfig): Promise<Result<{
73
+ cost: number;
74
+ } | void>>;
73
75
  /**
74
- * Get experiment by name
76
+ * Get run by name
75
77
  */
76
- export declare function getExperiment(name: string): Promise<Result<ExperimentResource>>;
78
+ export declare function getRun(name: string): Promise<Result<RunResource>>;
77
79
  /**
78
- * List all experiments
80
+ * List all runs
79
81
  */
80
- export declare function listExperiments(): Promise<ExperimentResource[]>;
82
+ export declare function listRuns(): Promise<RunResource[]>;
81
83
  /**
82
- * Get total cost for an experiment
84
+ * Get total cost for a run
83
85
  */
84
- export declare function getExperimentCost(experiment: ExperimentResource): Promise<number>;
86
+ export declare function getRunCost(run: RunResource): Promise<number>;
85
87
  /**
86
- * Get total tokens for an experiment
88
+ * Get total tokens for a run
87
89
  */
88
- export declare function getExperimentTokens(experiment: ExperimentResource): Promise<number>;
90
+ export declare function getRunTokens(run: RunResource): Promise<number>;
89
91
  /**
90
- * Delete an experiment and all its data
92
+ * Delete a run and all its data
91
93
  */
92
- export declare function deleteExperiment(name: string): Promise<Result<void>>;
93
- export { ExperimentResource } from "./resources/experiment";
94
+ export declare function deleteRun(name: string): Promise<Result<void>>;
95
+ export { RunResource } from "./resources/run";
94
96
  export { MessageResource } from "./resources/messages";
95
97
  export { Runner } from "./runner";
96
- export { Model } from "./models/provider";
97
- export { MCPServerConfig } from "./lib/mcp-config";
98
- export { Result } from "./lib/error";
98
+ export { sendAdvisory, getPendingAdvisories, advisoryEmitter } from "./lib/advisory";
99
+ export type { AdvisoryMessage } from "./lib/advisory";
100
+ export { AdvisoryResource } from "./resources/advisory";
101
+ export type { Model } from "./models/provider";
102
+ export { createLLM, MODELS } from "./models/provider";
103
+ export type { Message, TextContent, ToolUse, ToolResult, Thinking, Tool, TokenUsage, ModelConfig, ProviderData, } from "./models";
104
+ export { LLM } from "./models";
105
+ export type { MCPServerConfig, ProfileConfig } from "./lib/mcp-config";
106
+ export type { Result } from "./lib/error";
107
+ export { listProfiles, getDefaultProfile, profileExists, getProfilesDir, getProfilePath, getProfileDir } from "./lib/profiles";
108
+ export { listProblems, problemExists, getProblemContent, getProblemPath, getProblemDir, getProblemsDir } from "./lib/problems";
99
109
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -5,65 +5,71 @@
5
5
  * This library allows you to create and run AI agents that can connect to
6
6
  * MCP (Model Context Protocol) servers for various capabilities.
7
7
  */
8
- import { ExperimentResource } from "./resources/experiment";
8
+ import { RunResource } from "./resources/run";
9
9
  import { MessageResource } from "./resources/messages";
10
10
  import { Runner } from "./runner";
11
+ import { ok, err } from "./lib/error";
11
12
  /**
12
- * Create a new experiment
13
+ * Create a new run
13
14
  *
14
15
  * @example
15
16
  * ```typescript
16
- * const experiment = await createExperiment({
17
- * name: "my-experiment",
18
- * problem: "Calculate the factorial of 10",
17
+ * const run = await createRun({
18
+ * name: "my-run",
19
+ * problemId: "factorial-problem",
19
20
  * model: "claude-sonnet-4-5",
20
21
  * agentCount: 1,
21
22
  * profile: "example"
22
23
  * });
23
24
  * ```
24
25
  */
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;
26
+ export async function createRun(config) {
27
+ try {
28
+ const run = await RunResource.create({
29
+ name: config.name,
30
+ problem_id: config.problemId,
31
+ model: config.model,
32
+ agent_count: config.agentCount ?? 1,
33
+ profile: config.profile ?? "example",
34
+ });
35
+ return ok(run);
36
+ }
37
+ catch (error) {
38
+ return err("resource_creation_error", error?.message || "Failed to create run", error);
39
+ }
34
40
  }
35
41
  /**
36
- * Run an experiment
42
+ * Continue a run
37
43
  *
38
44
  * @example
39
45
  * ```typescript
40
- * await runExperiment({
41
- * experimentName: "my-experiment",
46
+ * await run({
47
+ * runName: "my-run",
42
48
  * singleTick: true,
43
49
  * onMessage: (msg) => console.log("Agent:", msg)
44
50
  * });
45
51
  * ```
46
52
  */
47
- export async function runExperiment(config) {
48
- // Find experiment
49
- const experimentRes = await ExperimentResource.findByName(config.experimentName);
50
- if (experimentRes.isErr()) {
51
- return experimentRes;
53
+ export async function run(config) {
54
+ // Find run
55
+ const runRes = await RunResource.findByName(config.runName);
56
+ if (runRes.isErr()) {
57
+ return runRes;
52
58
  }
53
- const experiment = experimentRes.value;
54
- const expData = experiment.toJSON();
59
+ const run = runRes.value;
60
+ const runData = run.toJSON();
55
61
  // Determine which agents to run
56
62
  const agentIndices = [];
57
63
  if (config.agentIndex !== undefined) {
58
64
  agentIndices.push(config.agentIndex);
59
65
  }
60
66
  else {
61
- for (let i = 0; i < expData.agent_count; i++) {
67
+ for (let i = 0; i < runData.agent_count; i++) {
62
68
  agentIndices.push(i);
63
69
  }
64
70
  }
65
71
  // Build runners
66
- const builderResults = await Promise.all(agentIndices.map((agentIndex) => Runner.builder(experiment, agentIndex, {
72
+ const builderResults = await Promise.all(agentIndices.map((agentIndex) => Runner.builder(run, agentIndex, {
67
73
  thinking: config.thinking ?? true,
68
74
  })));
69
75
  // Check for errors
@@ -83,16 +89,18 @@ export async function runExperiment(config) {
83
89
  return tick;
84
90
  }
85
91
  }
86
- return { isOk: () => true, isErr: () => false, value: undefined };
92
+ // Calculate total cost
93
+ const totalCost = await MessageResource.totalCostForRun(run);
94
+ return ok({ cost: totalCost });
87
95
  }
88
96
  // Run continuously
89
97
  let tickCount = 0;
90
- let lastCost = await MessageResource.totalCostForExperiment(experiment);
98
+ let lastCost = await MessageResource.totalCostForRun(run);
91
99
  const runnerPromises = runners.map(async (runner) => {
92
100
  while (true) {
93
101
  // Check cost limit
94
102
  if (config.maxCost && tickCount % 20 === 0) {
95
- lastCost = await MessageResource.totalCostForExperiment(experiment);
103
+ lastCost = await MessageResource.totalCostForRun(run);
96
104
  if (config.onCostUpdate) {
97
105
  config.onCostUpdate(lastCost);
98
106
  }
@@ -108,49 +116,55 @@ export async function runExperiment(config) {
108
116
  }
109
117
  });
110
118
  await Promise.all(runnerPromises);
111
- return { isOk: () => true, isErr: () => false, value: undefined };
119
+ return { success: true, data: undefined };
112
120
  }
113
121
  /**
114
- * Get experiment by name
122
+ * Get run by name
115
123
  */
116
- export async function getExperiment(name) {
117
- return await ExperimentResource.findByName(name);
124
+ export async function getRun(name) {
125
+ return await RunResource.findByName(name);
118
126
  }
119
127
  /**
120
- * List all experiments
128
+ * List all runs
121
129
  */
122
- export async function listExperiments() {
123
- return await ExperimentResource.all();
130
+ export async function listRuns() {
131
+ return await RunResource.all();
124
132
  }
125
133
  /**
126
- * Get total cost for an experiment
134
+ * Get total cost for a run
127
135
  */
128
- export async function getExperimentCost(experiment) {
129
- return await MessageResource.totalCostForExperiment(experiment);
136
+ export async function getRunCost(run) {
137
+ return await MessageResource.totalCostForExperiment(run);
130
138
  }
131
139
  /**
132
- * Get total tokens for an experiment
140
+ * Get total tokens for a run
133
141
  */
134
- export async function getExperimentTokens(experiment) {
135
- return await MessageResource.totalTokensForExperiment(experiment);
142
+ export async function getRunTokens(run) {
143
+ return await MessageResource.totalTokensForExperiment(run);
136
144
  }
137
145
  /**
138
- * Delete an experiment and all its data
146
+ * Delete a run and all its data
139
147
  */
140
- export async function deleteExperiment(name) {
141
- const experimentRes = await ExperimentResource.findByName(name);
142
- if (experimentRes.isErr()) {
143
- return experimentRes;
148
+ export async function deleteRun(name) {
149
+ const runRes = await RunResource.findByName(name);
150
+ if (runRes.isErr()) {
151
+ return runRes;
144
152
  }
145
- const experiment = experimentRes.value;
146
- await experiment.delete();
153
+ const run = runRes.value;
154
+ await run.delete();
147
155
  return { isOk: () => true, isErr: () => false, value: undefined };
148
156
  }
149
157
  // Re-export types and utilities
150
- export { ExperimentResource } from "./resources/experiment";
158
+ export { RunResource } from "./resources/run";
151
159
  export { MessageResource } from "./resources/messages";
152
160
  export { Runner } from "./runner";
153
- export { Model } from "./models/provider";
154
- export { MCPServerConfig } from "./lib/mcp-config";
155
- export { Result } from "./lib/error";
161
+ // Advisory API
162
+ export { sendAdvisory, getPendingAdvisories, advisoryEmitter } from "./lib/advisory";
163
+ export { AdvisoryResource } from "./resources/advisory";
164
+ export { createLLM, MODELS } from "./models/provider";
165
+ export { LLM } from "./models";
166
+ // Profile utilities
167
+ export { listProfiles, getDefaultProfile, profileExists, getProfilesDir, getProfilePath, getProfileDir } from "./lib/profiles";
168
+ // Problem utilities
169
+ export { listProblems, problemExists, getProblemContent, getProblemPath, getProblemDir, getProblemsDir } from "./lib/problems";
156
170
  //# sourceMappingURL=index.js.map