@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.
- package/dist/agent-harness.js +143 -143
- package/dist/agent-harness.js.map +1 -1
- package/dist/db/schema.d.ts +125 -14
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +19 -5
- package/dist/db/schema.js.map +1 -1
- package/dist/index.d.ts +43 -33
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +67 -53
- package/dist/index.js.map +1 -1
- package/dist/lib/advisory.d.ts +21 -0
- package/dist/lib/advisory.d.ts.map +1 -0
- package/dist/lib/advisory.js +47 -0
- package/dist/lib/advisory.js.map +1 -0
- package/dist/lib/problems.d.ts +43 -0
- package/dist/lib/problems.d.ts.map +1 -0
- package/dist/lib/problems.js +96 -0
- package/dist/lib/problems.js.map +1 -0
- package/dist/lib/profiles.d.ts +44 -0
- package/dist/lib/profiles.d.ts.map +1 -0
- package/dist/lib/profiles.js +97 -0
- package/dist/lib/profiles.js.map +1 -0
- package/dist/models/anthropic.d.ts +1 -1
- package/dist/models/anthropic.d.ts.map +1 -1
- package/dist/models/anthropic.js +2 -2
- package/dist/models/anthropic.js.map +1 -1
- package/dist/models/deepseek/index.d.ts +1 -1
- package/dist/models/deepseek/index.d.ts.map +1 -1
- package/dist/models/deepseek/index.js +2 -2
- package/dist/models/deepseek/index.js.map +1 -1
- package/dist/models/gemini.d.ts +1 -1
- package/dist/models/gemini.d.ts.map +1 -1
- package/dist/models/gemini.js +2 -2
- package/dist/models/gemini.js.map +1 -1
- package/dist/models/index.d.ts +1 -1
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/mistral.d.ts +1 -1
- package/dist/models/mistral.d.ts.map +1 -1
- package/dist/models/mistral.js +2 -2
- package/dist/models/mistral.js.map +1 -1
- package/dist/models/moonshotai.d.ts +1 -1
- package/dist/models/moonshotai.d.ts.map +1 -1
- package/dist/models/moonshotai.js +2 -2
- package/dist/models/moonshotai.js.map +1 -1
- package/dist/models/openai.d.ts +1 -1
- package/dist/models/openai.d.ts.map +1 -1
- package/dist/models/openai.js +2 -2
- package/dist/models/openai.js.map +1 -1
- package/dist/models/provider.d.ts +4 -3
- package/dist/models/provider.d.ts.map +1 -1
- package/dist/models/provider.js +13 -1
- package/dist/models/provider.js.map +1 -1
- package/dist/models/redpill.d.ts +20 -0
- package/dist/models/redpill.d.ts.map +1 -0
- package/dist/models/redpill.js +224 -0
- package/dist/models/redpill.js.map +1 -0
- package/dist/resources/advisory.d.ts +13 -0
- package/dist/resources/advisory.d.ts.map +1 -0
- package/dist/resources/advisory.js +32 -0
- package/dist/resources/advisory.js.map +1 -0
- package/dist/resources/messages.d.ts +19 -8
- package/dist/resources/messages.d.ts.map +1 -1
- package/dist/resources/messages.js +41 -19
- package/dist/resources/messages.js.map +1 -1
- package/dist/resources/run.d.ts +23 -0
- package/dist/resources/run.d.ts.map +1 -0
- package/dist/resources/run.js +73 -0
- package/dist/resources/run.js.map +1 -0
- package/dist/runner/index.d.ts +4 -4
- package/dist/runner/index.d.ts.map +1 -1
- package/dist/runner/index.js +26 -18
- package/dist/runner/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/resources/experiment.d.ts +0 -18
- package/dist/resources/experiment.d.ts.map +0 -1
- package/dist/resources/experiment.js +0 -55
- 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
|
|
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
|
-
|
|
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
|
-
|
|
24
|
+
run: integer("run")
|
|
25
25
|
.notNull()
|
|
26
|
-
.references(() =>
|
|
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.
|
|
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
|
package/dist/db/schema.js.map
CHANGED
|
@@ -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,
|
|
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 {
|
|
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
|
|
12
|
+
* Configuration for creating a new run
|
|
13
13
|
*/
|
|
14
|
-
export interface
|
|
15
|
-
/** Unique name for the
|
|
14
|
+
export interface CreateRunConfig {
|
|
15
|
+
/** Unique name for the run */
|
|
16
16
|
name: string;
|
|
17
|
-
/** Problem
|
|
18
|
-
|
|
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
|
|
27
|
+
* Configuration for running (starting or continuing) a run
|
|
28
28
|
*/
|
|
29
|
-
export interface
|
|
30
|
-
/** Name of the
|
|
31
|
-
|
|
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
|
|
46
|
+
* Create a new run
|
|
47
47
|
*
|
|
48
48
|
* @example
|
|
49
49
|
* ```typescript
|
|
50
|
-
* const
|
|
51
|
-
* name: "my-
|
|
52
|
-
*
|
|
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
|
|
59
|
+
export declare function createRun(config: CreateRunConfig): Promise<Result<RunResource>>;
|
|
60
60
|
/**
|
|
61
|
-
*
|
|
61
|
+
* Continue a run
|
|
62
62
|
*
|
|
63
63
|
* @example
|
|
64
64
|
* ```typescript
|
|
65
|
-
* await
|
|
66
|
-
*
|
|
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
|
|
72
|
+
export declare function run(config: RunConfig): Promise<Result<{
|
|
73
|
+
cost: number;
|
|
74
|
+
} | void>>;
|
|
73
75
|
/**
|
|
74
|
-
* Get
|
|
76
|
+
* Get run by name
|
|
75
77
|
*/
|
|
76
|
-
export declare function
|
|
78
|
+
export declare function getRun(name: string): Promise<Result<RunResource>>;
|
|
77
79
|
/**
|
|
78
|
-
* List all
|
|
80
|
+
* List all runs
|
|
79
81
|
*/
|
|
80
|
-
export declare function
|
|
82
|
+
export declare function listRuns(): Promise<RunResource[]>;
|
|
81
83
|
/**
|
|
82
|
-
* Get total cost for
|
|
84
|
+
* Get total cost for a run
|
|
83
85
|
*/
|
|
84
|
-
export declare function
|
|
86
|
+
export declare function getRunCost(run: RunResource): Promise<number>;
|
|
85
87
|
/**
|
|
86
|
-
* Get total tokens for
|
|
88
|
+
* Get total tokens for a run
|
|
87
89
|
*/
|
|
88
|
-
export declare function
|
|
90
|
+
export declare function getRunTokens(run: RunResource): Promise<number>;
|
|
89
91
|
/**
|
|
90
|
-
* Delete
|
|
92
|
+
* Delete a run and all its data
|
|
91
93
|
*/
|
|
92
|
-
export declare function
|
|
93
|
-
export {
|
|
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 {
|
|
97
|
-
export {
|
|
98
|
-
export {
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,
|
|
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 {
|
|
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
|
|
13
|
+
* Create a new run
|
|
13
14
|
*
|
|
14
15
|
* @example
|
|
15
16
|
* ```typescript
|
|
16
|
-
* const
|
|
17
|
-
* name: "my-
|
|
18
|
-
*
|
|
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
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
*
|
|
42
|
+
* Continue a run
|
|
37
43
|
*
|
|
38
44
|
* @example
|
|
39
45
|
* ```typescript
|
|
40
|
-
* await
|
|
41
|
-
*
|
|
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
|
|
48
|
-
// Find
|
|
49
|
-
const
|
|
50
|
-
if (
|
|
51
|
-
return
|
|
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
|
|
54
|
-
const
|
|
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 <
|
|
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(
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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 {
|
|
119
|
+
return { success: true, data: undefined };
|
|
112
120
|
}
|
|
113
121
|
/**
|
|
114
|
-
* Get
|
|
122
|
+
* Get run by name
|
|
115
123
|
*/
|
|
116
|
-
export async function
|
|
117
|
-
return await
|
|
124
|
+
export async function getRun(name) {
|
|
125
|
+
return await RunResource.findByName(name);
|
|
118
126
|
}
|
|
119
127
|
/**
|
|
120
|
-
* List all
|
|
128
|
+
* List all runs
|
|
121
129
|
*/
|
|
122
|
-
export async function
|
|
123
|
-
return await
|
|
130
|
+
export async function listRuns() {
|
|
131
|
+
return await RunResource.all();
|
|
124
132
|
}
|
|
125
133
|
/**
|
|
126
|
-
* Get total cost for
|
|
134
|
+
* Get total cost for a run
|
|
127
135
|
*/
|
|
128
|
-
export async function
|
|
129
|
-
return await MessageResource.totalCostForExperiment(
|
|
136
|
+
export async function getRunCost(run) {
|
|
137
|
+
return await MessageResource.totalCostForExperiment(run);
|
|
130
138
|
}
|
|
131
139
|
/**
|
|
132
|
-
* Get total tokens for
|
|
140
|
+
* Get total tokens for a run
|
|
133
141
|
*/
|
|
134
|
-
export async function
|
|
135
|
-
return await MessageResource.totalTokensForExperiment(
|
|
142
|
+
export async function getRunTokens(run) {
|
|
143
|
+
return await MessageResource.totalTokensForExperiment(run);
|
|
136
144
|
}
|
|
137
145
|
/**
|
|
138
|
-
* Delete
|
|
146
|
+
* Delete a run and all its data
|
|
139
147
|
*/
|
|
140
|
-
export async function
|
|
141
|
-
const
|
|
142
|
-
if (
|
|
143
|
-
return
|
|
148
|
+
export async function deleteRun(name) {
|
|
149
|
+
const runRes = await RunResource.findByName(name);
|
|
150
|
+
if (runRes.isErr()) {
|
|
151
|
+
return runRes;
|
|
144
152
|
}
|
|
145
|
-
const
|
|
146
|
-
await
|
|
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 {
|
|
158
|
+
export { RunResource } from "./resources/run";
|
|
151
159
|
export { MessageResource } from "./resources/messages";
|
|
152
160
|
export { Runner } from "./runner";
|
|
153
|
-
|
|
154
|
-
export {
|
|
155
|
-
export {
|
|
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":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,
|
|
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"}
|