@anonx3247/universal-agent-harness 0.1.0 → 0.1.1

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 (77) hide show
  1. package/dist/agent-harness.js +143 -143
  2. package/dist/agent-harness.js.map +1 -1
  3. package/dist/db/schema.d.ts +125 -14
  4. package/dist/db/schema.d.ts.map +1 -1
  5. package/dist/db/schema.js +19 -5
  6. package/dist/db/schema.js.map +1 -1
  7. package/dist/index.d.ts +43 -33
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +67 -53
  10. package/dist/index.js.map +1 -1
  11. package/dist/lib/advisory.d.ts +21 -0
  12. package/dist/lib/advisory.d.ts.map +1 -0
  13. package/dist/lib/advisory.js +47 -0
  14. package/dist/lib/advisory.js.map +1 -0
  15. package/dist/lib/problems.d.ts +43 -0
  16. package/dist/lib/problems.d.ts.map +1 -0
  17. package/dist/lib/problems.js +96 -0
  18. package/dist/lib/problems.js.map +1 -0
  19. package/dist/lib/profiles.d.ts +44 -0
  20. package/dist/lib/profiles.d.ts.map +1 -0
  21. package/dist/lib/profiles.js +97 -0
  22. package/dist/lib/profiles.js.map +1 -0
  23. package/dist/models/anthropic.d.ts +1 -1
  24. package/dist/models/anthropic.d.ts.map +1 -1
  25. package/dist/models/anthropic.js +2 -2
  26. package/dist/models/anthropic.js.map +1 -1
  27. package/dist/models/deepseek/index.d.ts +1 -1
  28. package/dist/models/deepseek/index.d.ts.map +1 -1
  29. package/dist/models/deepseek/index.js +2 -2
  30. package/dist/models/deepseek/index.js.map +1 -1
  31. package/dist/models/gemini.d.ts +1 -1
  32. package/dist/models/gemini.d.ts.map +1 -1
  33. package/dist/models/gemini.js +2 -2
  34. package/dist/models/gemini.js.map +1 -1
  35. package/dist/models/index.d.ts +1 -1
  36. package/dist/models/index.d.ts.map +1 -1
  37. package/dist/models/mistral.d.ts +1 -1
  38. package/dist/models/mistral.d.ts.map +1 -1
  39. package/dist/models/mistral.js +2 -2
  40. package/dist/models/mistral.js.map +1 -1
  41. package/dist/models/moonshotai.d.ts +1 -1
  42. package/dist/models/moonshotai.d.ts.map +1 -1
  43. package/dist/models/moonshotai.js +2 -2
  44. package/dist/models/moonshotai.js.map +1 -1
  45. package/dist/models/openai.d.ts +1 -1
  46. package/dist/models/openai.d.ts.map +1 -1
  47. package/dist/models/openai.js +2 -2
  48. package/dist/models/openai.js.map +1 -1
  49. package/dist/models/provider.d.ts +4 -3
  50. package/dist/models/provider.d.ts.map +1 -1
  51. package/dist/models/provider.js +13 -1
  52. package/dist/models/provider.js.map +1 -1
  53. package/dist/models/redpill.d.ts +20 -0
  54. package/dist/models/redpill.d.ts.map +1 -0
  55. package/dist/models/redpill.js +224 -0
  56. package/dist/models/redpill.js.map +1 -0
  57. package/dist/resources/advisory.d.ts +13 -0
  58. package/dist/resources/advisory.d.ts.map +1 -0
  59. package/dist/resources/advisory.js +32 -0
  60. package/dist/resources/advisory.js.map +1 -0
  61. package/dist/resources/messages.d.ts +19 -8
  62. package/dist/resources/messages.d.ts.map +1 -1
  63. package/dist/resources/messages.js +41 -19
  64. package/dist/resources/messages.js.map +1 -1
  65. package/dist/resources/run.d.ts +23 -0
  66. package/dist/resources/run.d.ts.map +1 -0
  67. package/dist/resources/run.js +73 -0
  68. package/dist/resources/run.js.map +1 -0
  69. package/dist/runner/index.d.ts +4 -4
  70. package/dist/runner/index.d.ts.map +1 -1
  71. package/dist/runner/index.js +26 -18
  72. package/dist/runner/index.js.map +1 -1
  73. package/package.json +2 -2
  74. package/dist/resources/experiment.d.ts +0 -18
  75. package/dist/resources/experiment.d.ts.map +0 -1
  76. package/dist/resources/experiment.js +0 -55
  77. package/dist/resources/experiment.js.map +0 -1
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
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { EventEmitter } from "events";
2
+ export interface AdvisoryMessage {
3
+ id: number;
4
+ runId: number;
5
+ agentIndex: number | null;
6
+ content: string;
7
+ timestamp: Date;
8
+ delivered: boolean;
9
+ }
10
+ export interface AdvisoryEvents {
11
+ message: (message: AdvisoryMessage) => void;
12
+ }
13
+ export declare class TypedEventEmitter extends EventEmitter {
14
+ on<K extends keyof AdvisoryEvents>(event: K, listener: AdvisoryEvents[K]): this;
15
+ emit<K extends keyof AdvisoryEvents>(event: K, ...args: Parameters<AdvisoryEvents[K]>): boolean;
16
+ off<K extends keyof AdvisoryEvents>(event: K, listener: AdvisoryEvents[K]): this;
17
+ }
18
+ export declare const advisoryEmitter: TypedEventEmitter;
19
+ export declare function sendAdvisory(runId: number, content: string, agentIndex?: number): Promise<AdvisoryMessage>;
20
+ export declare function getPendingAdvisories(runId: number, agentIndex: number): Promise<AdvisoryMessage[]>;
21
+ //# sourceMappingURL=advisory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advisory.d.ts","sourceRoot":"","sources":["../../src/lib/advisory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;CAC7C;AAED,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,EAAE,CAAC,CAAC,SAAS,MAAM,cAAc,EAC/B,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAC1B,IAAI;IAIP,IAAI,CAAC,CAAC,SAAS,MAAM,cAAc,EACjC,KAAK,EAAE,CAAC,EACR,GAAG,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GACrC,OAAO;IAIV,GAAG,CAAC,CAAC,SAAS,MAAM,cAAc,EAChC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAC1B,IAAI;CAGR;AAED,eAAO,MAAM,eAAe,mBAA0B,CAAC;AAEvD,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CAoB1B;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,EAAE,CAAC,CAc5B"}
@@ -0,0 +1,47 @@
1
+ import { EventEmitter } from "events";
2
+ import { AdvisoryResource } from "@app/resources/advisory";
3
+ export class TypedEventEmitter extends EventEmitter {
4
+ on(event, listener) {
5
+ return super.on(event, listener);
6
+ }
7
+ emit(event, ...args) {
8
+ return super.emit(event, ...args);
9
+ }
10
+ off(event, listener) {
11
+ return super.off(event, listener);
12
+ }
13
+ }
14
+ export const advisoryEmitter = new TypedEventEmitter();
15
+ export async function sendAdvisory(runId, content, agentIndex) {
16
+ const resource = await AdvisoryResource.create({
17
+ run_id: runId,
18
+ content,
19
+ agent_index: agentIndex ?? null,
20
+ });
21
+ const data = resource.toJSON();
22
+ const message = {
23
+ id: data.id,
24
+ runId: data.run_id,
25
+ agentIndex: data.agent_index,
26
+ content: data.content,
27
+ timestamp: data.created,
28
+ delivered: data.delivered,
29
+ };
30
+ advisoryEmitter.emit("message", message);
31
+ return message;
32
+ }
33
+ export async function getPendingAdvisories(runId, agentIndex) {
34
+ const resources = await AdvisoryResource.listPending(runId, agentIndex);
35
+ return resources.map((resource) => {
36
+ const data = resource.toJSON();
37
+ return {
38
+ id: data.id,
39
+ runId: data.run_id,
40
+ agentIndex: data.agent_index,
41
+ content: data.content,
42
+ timestamp: data.created,
43
+ delivered: data.delivered,
44
+ };
45
+ });
46
+ }
47
+ //# sourceMappingURL=advisory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advisory.js","sourceRoot":"","sources":["../../src/lib/advisory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAe3D,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACjD,EAAE,CACA,KAAQ,EACR,QAA2B;QAE3B,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CACF,KAAQ,EACR,GAAG,IAAmC;QAEtC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,GAAG,CACD,KAAQ,EACR,QAA2B;QAE3B,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAa,EACb,OAAe,EACf,UAAmB;IAEnB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC;QAC7C,MAAM,EAAE,KAAK;QACb,OAAO;QACP,WAAW,EAAE,UAAU,IAAI,IAAI;KAChC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAoB;QAC/B,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,KAAK,EAAE,IAAI,CAAC,MAAM;QAClB,UAAU,EAAE,IAAI,CAAC,WAAW;QAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,OAAO;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;IAEF,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEzC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAa,EACb,UAAkB;IAElB,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAExE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC/B,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,OAAO;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { Result } from "./error";
2
+ /**
3
+ * Get the problems directory path
4
+ * Can be configured via PROBLEMS_DIR environment variable
5
+ */
6
+ export declare function getProblemsDir(): string;
7
+ /**
8
+ * List all available problems by reading the problems directory
9
+ * A problem is valid if it's a directory containing a problem.md file
10
+ */
11
+ export declare function listProblems(): Result<string[]>;
12
+ /**
13
+ * Check if a problem exists and is valid
14
+ */
15
+ export declare function problemExists(problemId: string): boolean;
16
+ /**
17
+ * Get the problem content from problem.md
18
+ */
19
+ export declare function getProblemContent(problemId: string): Result<string>;
20
+ /**
21
+ * Get the absolute path to a problem directory
22
+ */
23
+ export declare function getProblemDir(problemId: string): string;
24
+ /**
25
+ * Get the absolute path to a file within a problem directory
26
+ *
27
+ * @param problemId - Problem ID (directory name)
28
+ * @param relativePath - Path relative to problem directory (e.g., "data.json", "files/input.txt")
29
+ * @returns Absolute path to the file
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * // Get path to data.json in problem1
34
+ * const dataPath = getProblemPath("problem1", "data.json");
35
+ * // Returns: /path/to/problems/problem1/data.json
36
+ *
37
+ * // Get path to nested file
38
+ * const inputPath = getProblemPath("problem1", "files/input.txt");
39
+ * // Returns: /path/to/problems/problem1/files/input.txt
40
+ * ```
41
+ */
42
+ export declare function getProblemPath(problemId: string, relativePath: string): string;
43
+ //# sourceMappingURL=problems.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"problems.d.ts","sourceRoot":"","sources":["../../src/lib/problems.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAW,MAAM,SAAS,CAAC;AAK1C;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAiC/C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAUxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAenE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAG9E"}