@kestrel-agents/ruhroh 0.5.0-beta.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.
- package/LICENSE +21 -0
- package/README.md +114 -0
- package/assets/ruhroh-badge.png +0 -0
- package/assets/ruhroh-logo.png +0 -0
- package/dist/adapters.d.ts +97 -0
- package/dist/adapters.d.ts.map +1 -0
- package/dist/adapters.js +21 -0
- package/dist/adapters.js.map +1 -0
- package/dist/builtin-scenarios.d.ts +8 -0
- package/dist/builtin-scenarios.d.ts.map +1 -0
- package/dist/builtin-scenarios.js +22 -0
- package/dist/builtin-scenarios.js.map +1 -0
- package/dist/cli.d.ts +30 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +313 -0
- package/dist/cli.js.map +1 -0
- package/dist/env.d.ts +6 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +66 -0
- package/dist/env.js.map +1 -0
- package/dist/generate.d.ts +32 -0
- package/dist/generate.d.ts.map +1 -0
- package/dist/generate.js +231 -0
- package/dist/generate.js.map +1 -0
- package/dist/harbor.d.ts +28 -0
- package/dist/harbor.d.ts.map +1 -0
- package/dist/harbor.js +47 -0
- package/dist/harbor.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/results.d.ts +66 -0
- package/dist/results.d.ts.map +1 -0
- package/dist/results.js +31 -0
- package/dist/results.js.map +1 -0
- package/dist/scenarios.d.ts +61 -0
- package/dist/scenarios.d.ts.map +1 -0
- package/dist/scenarios.js +69 -0
- package/dist/scenarios.js.map +1 -0
- package/package.json +66 -0
- package/python/ruhroh/__init__.py +5 -0
- package/python/ruhroh/harbor_agent.py +345 -0
- package/python/ruhroh/loop_controller.py +783 -0
- package/python/ruhroh/setup.sh +12 -0
- package/scenarios/grocery-budget-planner/instruction.md +1 -0
- package/scenarios/grocery-budget-planner/scenario.json +44 -0
- package/scenarios/nextjs-task-board/instruction.md +1 -0
- package/scenarios/nextjs-task-board/scenario.json +45 -0
- package/scenarios/shift-coverage-planner/assets/prompt-assets/shift-coverage/coverage-rules.json +29 -0
- package/scenarios/shift-coverage-planner/assets/prompt-assets/shift-coverage/employees.csv +8 -0
- package/scenarios/shift-coverage-planner/assets/prompt-assets/shift-coverage/existing-schedule.csv +9 -0
- package/scenarios/shift-coverage-planner/assets/prompt-assets/shift-coverage/shift-requirements.csv +8 -0
- package/scenarios/shift-coverage-planner/assets/prompt-assets/shift-coverage/time-off-requests.csv +5 -0
- package/scenarios/shift-coverage-planner/instruction.md +1 -0
- package/scenarios/shift-coverage-planner/scenario.json +47 -0
- package/scenarios/simple-newsletter/instruction.md +1 -0
- package/scenarios/simple-newsletter/scenario.json +40 -0
- package/scenarios/vite-csv-reconciliation/assets/prompt-assets/csv-reconciliation-people/source-a.csv +9 -0
- package/scenarios/vite-csv-reconciliation/assets/prompt-assets/csv-reconciliation-people/source-b.csv +9 -0
- package/scenarios/vite-csv-reconciliation/instruction.md +1 -0
- package/scenarios/vite-csv-reconciliation/scenario.json +48 -0
- package/scenarios/vite-sprint-planner/instruction.md +1 -0
- package/scenarios/vite-sprint-planner/scenario.json +45 -0
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/env.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const RUHROH_AGENT_ENV_KEYS: readonly ["OPENAI_API_KEY", "OPENAI_MODEL", "OPENAI_BASE_URL", "OPENAI_ORG_ID", "OPENAI_PROJECT_ID", "OPENROUTER_API_KEY", "OPENROUTER_MODEL", "OPENROUTER_BASE_URL", "OPENROUTER_SITE_URL", "OPENROUTER_APP_NAME", "ANTHROPIC_API_KEY", "ANTHROPIC_MODEL", "ANTHROPIC_BASE_URL", "ANTHROPIC_VERSION", "TAVILY_API_KEY", "KCHAT_MODEL_PROVIDER", "KCHAT_MODEL", "KCHAT_MODEL_TIMEOUT_MS", "KCHAT_MODEL_RETRY_COUNT", "RUHROH_MODEL_PROVIDER", "RUHROH_MODEL", "RUHROH_AGENT_MODEL", "RUHROH_EVAL_MODEL", "RUHROH_EVAL_MODEL_TIMEOUT_MS", "RUHROH_EVAL_MODEL_RETRY_COUNT", "RUHROH_EVAL_RESULT_FIXTURE", "RUHROH_EVAL_RESULT_FIXTURE_PATH", "RUHROH_EVAL_MAX_STEPS", "RUHROH_ITERATION_TIMEOUT_SEC", "RUHROH_AGENT_TIMEOUT_SEC", "RUHROH_INSTALL_TIMEOUT_SEC", "RUHROH_RUN_AGENT_ADAPTER", "RUHROH_RUN_AGENT_COMMAND", "RUHROH_RUN_AGENT_COMPLETION_PROTOCOL", "RUHROH_EVAL_COMMAND"];
|
|
2
|
+
export declare const RUHROH_RUNNER_ENV_KEYS: readonly ["OPENAI_API_KEY", "OPENAI_MODEL", "OPENAI_BASE_URL", "OPENAI_ORG_ID", "OPENAI_PROJECT_ID", "OPENROUTER_API_KEY", "OPENROUTER_MODEL", "OPENROUTER_BASE_URL", "OPENROUTER_SITE_URL", "OPENROUTER_APP_NAME", "ANTHROPIC_API_KEY", "ANTHROPIC_MODEL", "ANTHROPIC_BASE_URL", "ANTHROPIC_VERSION", "TAVILY_API_KEY", "KCHAT_MODEL_PROVIDER", "KCHAT_MODEL", "KCHAT_MODEL_TIMEOUT_MS", "KCHAT_MODEL_RETRY_COUNT", "RUHROH_MODEL_PROVIDER", "RUHROH_MODEL", "RUHROH_AGENT_MODEL", "RUHROH_EVAL_MODEL", "RUHROH_EVAL_MODEL_TIMEOUT_MS", "RUHROH_EVAL_MODEL_RETRY_COUNT", "RUHROH_EVAL_RESULT_FIXTURE", "RUHROH_EVAL_RESULT_FIXTURE_PATH", "RUHROH_EVAL_MAX_STEPS", "RUHROH_ITERATION_TIMEOUT_SEC", "RUHROH_AGENT_TIMEOUT_SEC", "RUHROH_INSTALL_TIMEOUT_SEC", "RUHROH_RUN_AGENT_ADAPTER", "RUHROH_RUN_AGENT_COMMAND", "RUHROH_RUN_AGENT_COMPLETION_PROTOCOL", "RUHROH_EVAL_COMMAND", "RUHROH_HARBOR_COMMAND_TIMEOUT_MS", "RUHROH_REPO_ROOT"];
|
|
3
|
+
export declare function buildAgentEnvArgs(env: NodeJS.ProcessEnv, keys?: readonly string[]): string[];
|
|
4
|
+
export declare function redactEnvAssignment(assignment: string): string;
|
|
5
|
+
export declare function filterForwardedEnv(env: NodeJS.ProcessEnv, keys?: readonly string[]): NodeJS.ProcessEnv;
|
|
6
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,s1BAoCxB,CAAC;AAEX,eAAO,MAAM,sBAAsB,84BAIzB,CAAC;AAEX,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,GAAE,SAAS,MAAM,EAA0B,GAAG,MAAM,EAAE,CAKnH;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAO9D;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,GAAE,SAAS,MAAM,EAA2B,GAC/C,MAAM,CAAC,UAAU,CAQnB"}
|
package/dist/env.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export const RUHROH_AGENT_ENV_KEYS = [
|
|
2
|
+
"OPENAI_API_KEY",
|
|
3
|
+
"OPENAI_MODEL",
|
|
4
|
+
"OPENAI_BASE_URL",
|
|
5
|
+
"OPENAI_ORG_ID",
|
|
6
|
+
"OPENAI_PROJECT_ID",
|
|
7
|
+
"OPENROUTER_API_KEY",
|
|
8
|
+
"OPENROUTER_MODEL",
|
|
9
|
+
"OPENROUTER_BASE_URL",
|
|
10
|
+
"OPENROUTER_SITE_URL",
|
|
11
|
+
"OPENROUTER_APP_NAME",
|
|
12
|
+
"ANTHROPIC_API_KEY",
|
|
13
|
+
"ANTHROPIC_MODEL",
|
|
14
|
+
"ANTHROPIC_BASE_URL",
|
|
15
|
+
"ANTHROPIC_VERSION",
|
|
16
|
+
"TAVILY_API_KEY",
|
|
17
|
+
"KCHAT_MODEL_PROVIDER",
|
|
18
|
+
"KCHAT_MODEL",
|
|
19
|
+
"KCHAT_MODEL_TIMEOUT_MS",
|
|
20
|
+
"KCHAT_MODEL_RETRY_COUNT",
|
|
21
|
+
"RUHROH_MODEL_PROVIDER",
|
|
22
|
+
"RUHROH_MODEL",
|
|
23
|
+
"RUHROH_AGENT_MODEL",
|
|
24
|
+
"RUHROH_EVAL_MODEL",
|
|
25
|
+
"RUHROH_EVAL_MODEL_TIMEOUT_MS",
|
|
26
|
+
"RUHROH_EVAL_MODEL_RETRY_COUNT",
|
|
27
|
+
"RUHROH_EVAL_RESULT_FIXTURE",
|
|
28
|
+
"RUHROH_EVAL_RESULT_FIXTURE_PATH",
|
|
29
|
+
"RUHROH_EVAL_MAX_STEPS",
|
|
30
|
+
"RUHROH_ITERATION_TIMEOUT_SEC",
|
|
31
|
+
"RUHROH_AGENT_TIMEOUT_SEC",
|
|
32
|
+
"RUHROH_INSTALL_TIMEOUT_SEC",
|
|
33
|
+
"RUHROH_RUN_AGENT_ADAPTER",
|
|
34
|
+
"RUHROH_RUN_AGENT_COMMAND",
|
|
35
|
+
"RUHROH_RUN_AGENT_COMPLETION_PROTOCOL",
|
|
36
|
+
"RUHROH_EVAL_COMMAND",
|
|
37
|
+
];
|
|
38
|
+
export const RUHROH_RUNNER_ENV_KEYS = [
|
|
39
|
+
...RUHROH_AGENT_ENV_KEYS,
|
|
40
|
+
"RUHROH_HARBOR_COMMAND_TIMEOUT_MS",
|
|
41
|
+
"RUHROH_REPO_ROOT",
|
|
42
|
+
];
|
|
43
|
+
export function buildAgentEnvArgs(env, keys = RUHROH_AGENT_ENV_KEYS) {
|
|
44
|
+
return keys.flatMap((key) => {
|
|
45
|
+
const value = env[key];
|
|
46
|
+
return value === undefined || value === "" ? [] : ["--agent-env", `${key}=\${${key}}`];
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
export function redactEnvAssignment(assignment) {
|
|
50
|
+
const index = assignment.indexOf("=");
|
|
51
|
+
if (index < 0) {
|
|
52
|
+
return assignment;
|
|
53
|
+
}
|
|
54
|
+
const key = assignment.slice(0, index);
|
|
55
|
+
return `${key}=\${${key}}`;
|
|
56
|
+
}
|
|
57
|
+
export function filterForwardedEnv(env, keys = RUHROH_RUNNER_ENV_KEYS) {
|
|
58
|
+
const forwarded = {};
|
|
59
|
+
for (const key of keys) {
|
|
60
|
+
if (env[key] !== undefined) {
|
|
61
|
+
forwarded[key] = env[key];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return forwarded;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=env.js.map
|
package/dist/env.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,gBAAgB;IAChB,cAAc;IACd,iBAAiB;IACjB,eAAe;IACf,mBAAmB;IACnB,oBAAoB;IACpB,kBAAkB;IAClB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,mBAAmB;IACnB,iBAAiB;IACjB,oBAAoB;IACpB,mBAAmB;IACnB,gBAAgB;IAChB,sBAAsB;IACtB,aAAa;IACb,wBAAwB;IACxB,yBAAyB;IACzB,uBAAuB;IACvB,cAAc;IACd,oBAAoB;IACpB,mBAAmB;IACnB,8BAA8B;IAC9B,+BAA+B;IAC/B,4BAA4B;IAC5B,iCAAiC;IACjC,uBAAuB;IACvB,8BAA8B;IAC9B,0BAA0B;IAC1B,4BAA4B;IAC5B,0BAA0B;IAC1B,0BAA0B;IAC1B,sCAAsC;IACtC,qBAAqB;CACb,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,GAAG,qBAAqB;IACxB,kCAAkC;IAClC,kBAAkB;CACV,CAAC;AAEX,MAAM,UAAU,iBAAiB,CAAC,GAAsB,EAAE,OAA0B,qBAAqB;IACvG,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACvC,OAAO,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,GAAsB,EACtB,OAA0B,sBAAsB;IAEhD,MAAM,SAAS,GAAsB,EAAE,CAAC;IACxC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type RuhrohScenario, type RuhrohScenarioSource } from "./scenarios.js";
|
|
2
|
+
export interface LoadedRuhrohScenario {
|
|
3
|
+
scenario: RuhrohScenario;
|
|
4
|
+
source: RuhrohScenarioSource;
|
|
5
|
+
}
|
|
6
|
+
export interface GenerateHarborTaskInput {
|
|
7
|
+
scenario: RuhrohScenario;
|
|
8
|
+
scenarioDir: string;
|
|
9
|
+
outputRoot: string;
|
|
10
|
+
agentImportPath?: string | undefined;
|
|
11
|
+
artifacts?: readonly string[] | undefined;
|
|
12
|
+
}
|
|
13
|
+
export interface GenerateHarborTaskResult {
|
|
14
|
+
scenarioId: string;
|
|
15
|
+
taskDir: string;
|
|
16
|
+
filesWritten: string[];
|
|
17
|
+
}
|
|
18
|
+
export interface GenerateHarborDatasetInput {
|
|
19
|
+
scenarios: LoadedRuhrohScenario[];
|
|
20
|
+
outputRoot: string;
|
|
21
|
+
agentImportPath?: string | undefined;
|
|
22
|
+
artifacts?: readonly string[] | undefined;
|
|
23
|
+
}
|
|
24
|
+
export interface GenerateHarborDatasetResult {
|
|
25
|
+
datasetPath: string;
|
|
26
|
+
tasks: GenerateHarborTaskResult[];
|
|
27
|
+
}
|
|
28
|
+
export declare function discoverRuhrohScenarios(scenarioRoot: string): RuhrohScenarioSource[];
|
|
29
|
+
export declare function loadRuhrohScenario(input: string | RuhrohScenarioSource): LoadedRuhrohScenario;
|
|
30
|
+
export declare function generateHarborDataset(input: GenerateHarborDatasetInput): GenerateHarborDatasetResult;
|
|
31
|
+
export declare function generateHarborTask(input: GenerateHarborTaskInput): GenerateHarborTaskResult;
|
|
32
|
+
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAIA,OAAO,EAA0B,KAAK,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAExG,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,oBAAoB,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,wBAAwB,EAAE,CAAC;CACnC;AAkBD,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAcpF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,GAAG,oBAAoB,CAe7F;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG,2BAA2B,CAcpG;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CA2B3F"}
|
package/dist/generate.js
ADDED
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { RUHROH_ARTIFACTS, RUHROH_HARBOR_AGENT_IMPORT_PATH } from "./harbor.js";
|
|
4
|
+
import { validateRuhrohScenario } from "./scenarios.js";
|
|
5
|
+
export function discoverRuhrohScenarios(scenarioRoot) {
|
|
6
|
+
const root = path.resolve(scenarioRoot);
|
|
7
|
+
if (!existsSync(root)) {
|
|
8
|
+
return [];
|
|
9
|
+
}
|
|
10
|
+
const directScenarioPath = path.join(root, "scenario.json");
|
|
11
|
+
if (existsSync(directScenarioPath)) {
|
|
12
|
+
return [scenarioSourceFromDir(root)];
|
|
13
|
+
}
|
|
14
|
+
return readdirSync(root, { withFileTypes: true })
|
|
15
|
+
.filter((entry) => entry.isDirectory())
|
|
16
|
+
.map((entry) => scenarioSourceFromDir(path.join(root, entry.name)))
|
|
17
|
+
.filter((source) => existsSync(source.scenarioPath))
|
|
18
|
+
.sort((left, right) => left.scenarioDir.localeCompare(right.scenarioDir));
|
|
19
|
+
}
|
|
20
|
+
export function loadRuhrohScenario(input) {
|
|
21
|
+
const source = typeof input === "string" ? scenarioSourceFromDir(path.resolve(input)) : input;
|
|
22
|
+
const raw = readJsonRecord(source.scenarioPath);
|
|
23
|
+
const userPrompt = readUserPrompt(raw, source);
|
|
24
|
+
const scenario = {
|
|
25
|
+
...raw,
|
|
26
|
+
version: raw.version,
|
|
27
|
+
userPrompt,
|
|
28
|
+
run: readRunDefaults(raw),
|
|
29
|
+
};
|
|
30
|
+
const errors = validateRuhrohScenario(scenario);
|
|
31
|
+
if (errors.length > 0) {
|
|
32
|
+
throw new Error(`Invalid Ruhroh scenario ${source.scenarioPath}: ${errors.join("; ")}`);
|
|
33
|
+
}
|
|
34
|
+
return { scenario, source };
|
|
35
|
+
}
|
|
36
|
+
export function generateHarborDataset(input) {
|
|
37
|
+
const tasks = input.scenarios.map((loaded) => generateHarborTask({
|
|
38
|
+
scenario: loaded.scenario,
|
|
39
|
+
scenarioDir: loaded.source.scenarioDir,
|
|
40
|
+
outputRoot: input.outputRoot,
|
|
41
|
+
agentImportPath: input.agentImportPath,
|
|
42
|
+
artifacts: input.artifacts,
|
|
43
|
+
}));
|
|
44
|
+
return {
|
|
45
|
+
datasetPath: path.join(path.resolve(input.outputRoot), "harbor"),
|
|
46
|
+
tasks,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export function generateHarborTask(input) {
|
|
50
|
+
const outputRoot = path.resolve(input.outputRoot);
|
|
51
|
+
const taskDir = path.join(outputRoot, "harbor", "tasks", input.scenario.id);
|
|
52
|
+
const filesWritten = [];
|
|
53
|
+
const writeText = (relativePath, content, mode) => {
|
|
54
|
+
const filePath = path.join(taskDir, relativePath);
|
|
55
|
+
mkdirSync(path.dirname(filePath), { recursive: true });
|
|
56
|
+
writeFileSync(filePath, content, { encoding: "utf8", mode });
|
|
57
|
+
filesWritten.push(filePath);
|
|
58
|
+
};
|
|
59
|
+
mkdirSync(taskDir, { recursive: true });
|
|
60
|
+
mkdirSync(path.join(taskDir, "assets"), { recursive: true });
|
|
61
|
+
writeText("instruction.md", `${input.scenario.userPrompt.trim()}\n`);
|
|
62
|
+
writeText("task.toml", renderTaskToml(input));
|
|
63
|
+
writeText("tests/test.sh", renderGenericVerifier(), 0o755);
|
|
64
|
+
writeText("environment/Dockerfile", renderDockerfile());
|
|
65
|
+
writeText("solution/solve.sh", renderSolveScript(), 0o755);
|
|
66
|
+
const assetsDir = path.join(input.scenarioDir, "assets");
|
|
67
|
+
if (existsSync(assetsDir) && statSync(assetsDir).isDirectory()) {
|
|
68
|
+
const targetAssetsDir = path.join(taskDir, "assets");
|
|
69
|
+
cpSync(assetsDir, targetAssetsDir, { recursive: true, force: true });
|
|
70
|
+
filesWritten.push(...listFiles(targetAssetsDir));
|
|
71
|
+
}
|
|
72
|
+
return { scenarioId: input.scenario.id, taskDir, filesWritten: [...new Set(filesWritten)].sort() };
|
|
73
|
+
}
|
|
74
|
+
function scenarioSourceFromDir(scenarioDir) {
|
|
75
|
+
const instructionPath = path.join(scenarioDir, "instruction.md");
|
|
76
|
+
const assetsDir = path.join(scenarioDir, "assets");
|
|
77
|
+
return {
|
|
78
|
+
scenarioDir,
|
|
79
|
+
scenarioPath: path.join(scenarioDir, "scenario.json"),
|
|
80
|
+
...(existsSync(instructionPath) ? { instructionPath } : {}),
|
|
81
|
+
...(existsSync(assetsDir) ? { assetsDir } : {}),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function readUserPrompt(raw, source) {
|
|
85
|
+
if (typeof raw.userPrompt === "string") {
|
|
86
|
+
return raw.userPrompt;
|
|
87
|
+
}
|
|
88
|
+
const promptPath = typeof raw.userPromptPath === "string"
|
|
89
|
+
? path.resolve(source.scenarioDir, raw.userPromptPath)
|
|
90
|
+
: source.instructionPath;
|
|
91
|
+
if (promptPath === undefined || !existsSync(promptPath)) {
|
|
92
|
+
throw new Error(`Ruhroh scenario ${source.scenarioPath} is missing userPrompt or userPromptPath`);
|
|
93
|
+
}
|
|
94
|
+
return readFileSync(promptPath, "utf8").trim();
|
|
95
|
+
}
|
|
96
|
+
function readRunDefaults(raw) {
|
|
97
|
+
if (isRecord(raw.run)) {
|
|
98
|
+
return {
|
|
99
|
+
...(typeof raw.run.mode === "string" ? { mode: raw.run.mode } : {}),
|
|
100
|
+
timeoutSeconds: typeof raw.run.timeoutSeconds === "number" ? raw.run.timeoutSeconds : 600,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
const legacyDriver = isRecord(raw.driver) ? raw.driver : {};
|
|
104
|
+
return {
|
|
105
|
+
...(typeof legacyDriver.mode === "string" ? { mode: legacyDriver.mode } : {}),
|
|
106
|
+
timeoutSeconds: typeof legacyDriver.timeoutSeconds === "number" ? legacyDriver.timeoutSeconds : 600,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function readJsonRecord(filePath) {
|
|
110
|
+
const parsed = JSON.parse(readFileSync(filePath, "utf8"));
|
|
111
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
112
|
+
throw new Error(`Expected JSON object in ${filePath}`);
|
|
113
|
+
}
|
|
114
|
+
return parsed;
|
|
115
|
+
}
|
|
116
|
+
function isRecord(value) {
|
|
117
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
118
|
+
}
|
|
119
|
+
function renderTaskToml(input) {
|
|
120
|
+
const artifacts = input.artifacts ?? RUHROH_ARTIFACTS;
|
|
121
|
+
return [
|
|
122
|
+
'schema_version = "1.3"',
|
|
123
|
+
"artifacts = [",
|
|
124
|
+
...artifacts.map((artifact) => ` ${tomlString(artifact)},`),
|
|
125
|
+
"]",
|
|
126
|
+
"",
|
|
127
|
+
"[task]",
|
|
128
|
+
`name = ${tomlString(`ruhroh/${input.scenario.id}`)}`,
|
|
129
|
+
`description = ${tomlString(`Ruhroh scenario: ${input.scenario.title}`)}`,
|
|
130
|
+
'authors = [{ name = "Ruhroh" }]',
|
|
131
|
+
`keywords = ${tomlStringArray(["ruhroh", input.scenario.tier, input.scenario.kind])}`,
|
|
132
|
+
"",
|
|
133
|
+
"[metadata]",
|
|
134
|
+
`scenario_id = ${tomlString(input.scenario.id)}`,
|
|
135
|
+
`agent_import_path = ${tomlString(input.agentImportPath ?? RUHROH_HARBOR_AGENT_IMPORT_PATH)}`,
|
|
136
|
+
"",
|
|
137
|
+
"[verifier]",
|
|
138
|
+
"timeout_sec = 600.0",
|
|
139
|
+
"",
|
|
140
|
+
"[verifier.env]",
|
|
141
|
+
"",
|
|
142
|
+
"[agent]",
|
|
143
|
+
`timeout_sec = ${input.scenario.run.timeoutSeconds.toFixed(1)}`,
|
|
144
|
+
"",
|
|
145
|
+
"[environment]",
|
|
146
|
+
'network_mode = "public"',
|
|
147
|
+
"build_timeout_sec = 600.0",
|
|
148
|
+
'os = "linux"',
|
|
149
|
+
"mcp_servers = []",
|
|
150
|
+
"",
|
|
151
|
+
"[environment.env]",
|
|
152
|
+
"",
|
|
153
|
+
"[solution.env]",
|
|
154
|
+
"",
|
|
155
|
+
].join("\n");
|
|
156
|
+
}
|
|
157
|
+
function renderGenericVerifier() {
|
|
158
|
+
return `#!/bin/bash
|
|
159
|
+
set -euo pipefail
|
|
160
|
+
|
|
161
|
+
mkdir -p /logs/verifier
|
|
162
|
+
|
|
163
|
+
if python3 - <<'PY'
|
|
164
|
+
import json
|
|
165
|
+
from pathlib import Path
|
|
166
|
+
|
|
167
|
+
path = Path("/installed-agent/ruhroh-loop-result.json")
|
|
168
|
+
if not path.exists():
|
|
169
|
+
raise SystemExit("missing Ruhroh result artifact")
|
|
170
|
+
|
|
171
|
+
result = json.loads(path.read_text(encoding="utf-8"))
|
|
172
|
+
if result.get("status") != "completed":
|
|
173
|
+
raise SystemExit(f"Ruhroh did not complete: {result.get('status')} {result.get('failure_kind')}")
|
|
174
|
+
if result.get("failure_kind") not in (None, "none"):
|
|
175
|
+
raise SystemExit(f"Ruhroh reported failure_kind={result.get('failure_kind')}")
|
|
176
|
+
if result.get("score") != 1:
|
|
177
|
+
raise SystemExit(f"Ruhroh score was not 1: {result.get('score')}")
|
|
178
|
+
if result.get("implementationIterationsUsed", 0) < 1:
|
|
179
|
+
raise SystemExit("Ruhroh did not record implementation iterations")
|
|
180
|
+
if not isinstance(result.get("implementationRuns"), list):
|
|
181
|
+
raise SystemExit("Ruhroh result is missing implementationRuns")
|
|
182
|
+
eval_result = result.get("evalResult")
|
|
183
|
+
if not isinstance(eval_result, dict) or eval_result.get("version") != "ruhroh_eval_result_v1":
|
|
184
|
+
raise SystemExit("Ruhroh result is missing evalResult")
|
|
185
|
+
if eval_result.get("status") != "passed":
|
|
186
|
+
raise SystemExit(f"Ruhroh eval-agent did not pass: {eval_result.get('status')}")
|
|
187
|
+
PY
|
|
188
|
+
then
|
|
189
|
+
echo 1 > /logs/verifier/reward.txt
|
|
190
|
+
else
|
|
191
|
+
echo 0 > /logs/verifier/reward.txt
|
|
192
|
+
exit 1
|
|
193
|
+
fi
|
|
194
|
+
`;
|
|
195
|
+
}
|
|
196
|
+
function renderDockerfile() {
|
|
197
|
+
return `FROM ubuntu:24.04
|
|
198
|
+
|
|
199
|
+
RUN apt-get update \\
|
|
200
|
+
&& apt-get install -y --no-install-recommends bash ca-certificates python3 \\
|
|
201
|
+
&& rm -rf /var/lib/apt/lists/*
|
|
202
|
+
`;
|
|
203
|
+
}
|
|
204
|
+
function renderSolveScript() {
|
|
205
|
+
return `#!/bin/bash
|
|
206
|
+
set -euo pipefail
|
|
207
|
+
|
|
208
|
+
echo "Ruhroh benchmark tasks are solved by the installed agent."
|
|
209
|
+
`;
|
|
210
|
+
}
|
|
211
|
+
function tomlString(value) {
|
|
212
|
+
return JSON.stringify(value);
|
|
213
|
+
}
|
|
214
|
+
function tomlStringArray(values) {
|
|
215
|
+
return `[${values.map(tomlString).join(", ")}]`;
|
|
216
|
+
}
|
|
217
|
+
function listFiles(root) {
|
|
218
|
+
const files = [];
|
|
219
|
+
for (const entry of readdirSync(root, { withFileTypes: true })) {
|
|
220
|
+
const fullPath = path.join(root, entry.name);
|
|
221
|
+
if (entry.isDirectory()) {
|
|
222
|
+
files.push(...listFiles(fullPath));
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
if (entry.isFile()) {
|
|
226
|
+
files.push(fullPath);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return files.sort();
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
|
package/dist/harbor.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { RuhrohScenario } from "./scenarios.js";
|
|
2
|
+
export declare const DEFAULT_RUHROH_DATASET_PATH = ".generated/ruhroh/harbor";
|
|
3
|
+
export declare const RUHROH_HARBOR_AGENT_IMPORT_PATH = "ruhroh.harbor_agent:RuhrohHarborAgent";
|
|
4
|
+
export declare const RUHROH_ARTIFACTS: readonly ["/installed-agent/ruhroh-loop-result.json", "/installed-agent/ruhroh-loop-iterations.jsonl", "/installed-agent/ruhroh-loop-journey.json", "/installed-agent/ruhroh-loop-eval.json", "/installed-agent/ruhroh-loop-bridge.jsonl", "/installed-agent/ruhroh-workspace.tar.gz", "/installed-agent/ruhroh-loop-events.tar.gz", "/installed-agent/ruhroh-loop-transcripts.tar.gz"];
|
|
5
|
+
export interface BuildRuhrohHarborCommandInput {
|
|
6
|
+
scenario: Pick<RuhrohScenario, "id" | "loop">;
|
|
7
|
+
adapter: string;
|
|
8
|
+
datasetPath: string;
|
|
9
|
+
iterations?: number | undefined;
|
|
10
|
+
env?: NodeJS.ProcessEnv | undefined;
|
|
11
|
+
agentImportPath?: string | undefined;
|
|
12
|
+
artifacts?: readonly string[] | undefined;
|
|
13
|
+
}
|
|
14
|
+
export interface RuhrohHarborCommand {
|
|
15
|
+
scenarioId: string;
|
|
16
|
+
args: string[];
|
|
17
|
+
}
|
|
18
|
+
export declare function buildRuhrohHarborCommand(input: BuildRuhrohHarborCommandInput): RuhrohHarborCommand;
|
|
19
|
+
export declare function buildRuhrohHarborCommands(input: {
|
|
20
|
+
scenarios: Array<Pick<RuhrohScenario, "id" | "loop">>;
|
|
21
|
+
adapter: string;
|
|
22
|
+
datasetPath: string;
|
|
23
|
+
iterations?: number | undefined;
|
|
24
|
+
env?: NodeJS.ProcessEnv | undefined;
|
|
25
|
+
agentImportPath?: string | undefined;
|
|
26
|
+
artifacts?: readonly string[] | undefined;
|
|
27
|
+
}): RuhrohHarborCommand[];
|
|
28
|
+
//# sourceMappingURL=harbor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harbor.d.ts","sourceRoot":"","sources":["../src/harbor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,eAAO,MAAM,2BAA2B,6BAA6B,CAAC;AACtE,eAAO,MAAM,+BAA+B,0CAA0C,CAAC;AACvF,eAAO,MAAM,gBAAgB,yXASnB,CAAC;AAEX,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,GAAG,mBAAmB,CAoBlG;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CAC3C,GAAG,mBAAmB,EAAE,CAYxB"}
|
package/dist/harbor.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { buildAgentEnvArgs } from "./env.js";
|
|
3
|
+
export const DEFAULT_RUHROH_DATASET_PATH = ".generated/ruhroh/harbor";
|
|
4
|
+
export const RUHROH_HARBOR_AGENT_IMPORT_PATH = "ruhroh.harbor_agent:RuhrohHarborAgent";
|
|
5
|
+
export const RUHROH_ARTIFACTS = [
|
|
6
|
+
"/installed-agent/ruhroh-loop-result.json",
|
|
7
|
+
"/installed-agent/ruhroh-loop-iterations.jsonl",
|
|
8
|
+
"/installed-agent/ruhroh-loop-journey.json",
|
|
9
|
+
"/installed-agent/ruhroh-loop-eval.json",
|
|
10
|
+
"/installed-agent/ruhroh-loop-bridge.jsonl",
|
|
11
|
+
"/installed-agent/ruhroh-workspace.tar.gz",
|
|
12
|
+
"/installed-agent/ruhroh-loop-events.tar.gz",
|
|
13
|
+
"/installed-agent/ruhroh-loop-transcripts.tar.gz",
|
|
14
|
+
];
|
|
15
|
+
export function buildRuhrohHarborCommand(input) {
|
|
16
|
+
const taskPath = path.join(input.datasetPath, "tasks", input.scenario.id);
|
|
17
|
+
return {
|
|
18
|
+
scenarioId: input.scenario.id,
|
|
19
|
+
args: [
|
|
20
|
+
"run",
|
|
21
|
+
"--path",
|
|
22
|
+
taskPath,
|
|
23
|
+
"--agent-import-path",
|
|
24
|
+
input.agentImportPath ?? RUHROH_HARBOR_AGENT_IMPORT_PATH,
|
|
25
|
+
"--n-concurrent",
|
|
26
|
+
"1",
|
|
27
|
+
"--agent-env",
|
|
28
|
+
`RUHROH_MAX_ITERATIONS=${String(input.iterations ?? input.scenario.loop.defaultMaxIterations)}`,
|
|
29
|
+
"--agent-env",
|
|
30
|
+
`RUHROH_RUN_AGENT_ADAPTER=${input.adapter}`,
|
|
31
|
+
...buildAgentEnvArgs(input.env ?? process.env),
|
|
32
|
+
...(input.artifacts ?? RUHROH_ARTIFACTS).flatMap((artifact) => ["--artifact", artifact]),
|
|
33
|
+
],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export function buildRuhrohHarborCommands(input) {
|
|
37
|
+
return input.scenarios.map((scenario) => buildRuhrohHarborCommand({
|
|
38
|
+
scenario,
|
|
39
|
+
adapter: input.adapter,
|
|
40
|
+
datasetPath: input.datasetPath,
|
|
41
|
+
iterations: input.iterations,
|
|
42
|
+
env: input.env,
|
|
43
|
+
agentImportPath: input.agentImportPath,
|
|
44
|
+
artifacts: input.artifacts,
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=harbor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harbor.js","sourceRoot":"","sources":["../src/harbor.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C,MAAM,CAAC,MAAM,2BAA2B,GAAG,0BAA0B,CAAC;AACtE,MAAM,CAAC,MAAM,+BAA+B,GAAG,uCAAuC,CAAC;AACvF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,0CAA0C;IAC1C,+CAA+C;IAC/C,2CAA2C;IAC3C,wCAAwC;IACxC,2CAA2C;IAC3C,0CAA0C;IAC1C,4CAA4C;IAC5C,iDAAiD;CACzC,CAAC;AAiBX,MAAM,UAAU,wBAAwB,CAAC,KAAoC;IAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1E,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;QAC7B,IAAI,EAAE;YACJ,KAAK;YACL,QAAQ;YACR,QAAQ;YACR,qBAAqB;YACrB,KAAK,CAAC,eAAe,IAAI,+BAA+B;YACxD,gBAAgB;YAChB,GAAG;YACH,aAAa;YACb,yBAAyB,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;YAC/F,aAAa;YACb,4BAA4B,KAAK,CAAC,OAAO,EAAE;YAC3C,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;YAC9C,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;SACzF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAQzC;IACC,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACtC,wBAAwB,CAAC;QACvB,QAAQ;QACR,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC,CACH,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./adapters.js";
|
|
2
|
+
export * from "./builtin-scenarios.js";
|
|
3
|
+
export * from "./env.js";
|
|
4
|
+
export * from "./generate.js";
|
|
5
|
+
export * from "./harbor.js";
|
|
6
|
+
export * from "./results.js";
|
|
7
|
+
export * from "./scenarios.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./adapters.js";
|
|
2
|
+
export * from "./builtin-scenarios.js";
|
|
3
|
+
export * from "./env.js";
|
|
4
|
+
export * from "./generate.js";
|
|
5
|
+
export * from "./harbor.js";
|
|
6
|
+
export * from "./results.js";
|
|
7
|
+
export * from "./scenarios.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { RuhrohEvidenceRef, RunAgentArtifactManifest } from "./adapters.js";
|
|
2
|
+
export type RuhrohEvalStatus = "passed" | "failed" | "review" | "infra_failed";
|
|
3
|
+
export type RuhrohEvalConfidence = "low" | "medium" | "high";
|
|
4
|
+
export interface RuhrohEvalCommandRecord {
|
|
5
|
+
command: string;
|
|
6
|
+
exitCode: number;
|
|
7
|
+
summary: string;
|
|
8
|
+
}
|
|
9
|
+
export interface RuhrohEvalResult {
|
|
10
|
+
version: "ruhroh_eval_result_v1";
|
|
11
|
+
status: RuhrohEvalStatus;
|
|
12
|
+
goalMet: boolean;
|
|
13
|
+
confidence: RuhrohEvalConfidence;
|
|
14
|
+
reasons: string[];
|
|
15
|
+
unmetCriteria: string[];
|
|
16
|
+
evidenceRefs: RuhrohEvidenceRef[];
|
|
17
|
+
commandsRun: RuhrohEvalCommandRecord[];
|
|
18
|
+
artifacts: Record<string, string>;
|
|
19
|
+
finalSummary: string;
|
|
20
|
+
repairBrief?: string | undefined;
|
|
21
|
+
}
|
|
22
|
+
export interface RuhrohLoopResult {
|
|
23
|
+
version: "ruhroh_loop_result_v1";
|
|
24
|
+
adapter: string;
|
|
25
|
+
dataset: string;
|
|
26
|
+
scenarioId: string;
|
|
27
|
+
task_id: string;
|
|
28
|
+
status: "completed" | "failed";
|
|
29
|
+
failure_kind: string;
|
|
30
|
+
failureBucket: string;
|
|
31
|
+
score: number;
|
|
32
|
+
iterationsUsed: number;
|
|
33
|
+
implementationIterationsUsed: number;
|
|
34
|
+
implementationStoppedReason: string;
|
|
35
|
+
stoppedReason: string;
|
|
36
|
+
duration_ms: number;
|
|
37
|
+
runAgent: RunAgentArtifactManifest;
|
|
38
|
+
runAgentAdapterId: string;
|
|
39
|
+
continuityLevel: string;
|
|
40
|
+
sessionHandle: string;
|
|
41
|
+
runIds: string[];
|
|
42
|
+
implementationRuns: Array<Record<string, unknown>>;
|
|
43
|
+
evalResult?: RuhrohEvalResult | undefined;
|
|
44
|
+
artifactPaths?: Record<string, string> | undefined;
|
|
45
|
+
failure_details?: Record<string, unknown> | undefined;
|
|
46
|
+
}
|
|
47
|
+
export interface RuhrohVerdict {
|
|
48
|
+
status: "completed" | "failed";
|
|
49
|
+
failure_kind: string;
|
|
50
|
+
score: number;
|
|
51
|
+
}
|
|
52
|
+
export declare function scoreForEvalStatus(status: RuhrohEvalStatus): number;
|
|
53
|
+
export declare function mapEvalResultToVerdict(evalResult: Pick<RuhrohEvalResult, "status">): RuhrohVerdict;
|
|
54
|
+
export declare function mapRuntimeFailureToVerdict(implementationRuns: Array<{
|
|
55
|
+
status?: string | undefined;
|
|
56
|
+
failureKind?: string | undefined;
|
|
57
|
+
}>, options?: {
|
|
58
|
+
ignoredFailureKinds?: string[] | undefined;
|
|
59
|
+
}): RuhrohVerdict | undefined;
|
|
60
|
+
export declare function deriveRuhrohVerdict(implementationRuns: Array<{
|
|
61
|
+
status?: string | undefined;
|
|
62
|
+
failureKind?: string | undefined;
|
|
63
|
+
}>, evalResult: Pick<RuhrohEvalResult, "status">, options?: {
|
|
64
|
+
ignoredFailureKinds?: string[] | undefined;
|
|
65
|
+
}): RuhrohVerdict;
|
|
66
|
+
//# sourceMappingURL=results.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../src/results.ts"],"names":[],"mappings":"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"}
|
package/dist/results.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export function scoreForEvalStatus(status) {
|
|
2
|
+
return status === "passed" ? 1 : 0;
|
|
3
|
+
}
|
|
4
|
+
export function mapEvalResultToVerdict(evalResult) {
|
|
5
|
+
if (evalResult.status === "passed") {
|
|
6
|
+
return { status: "completed", failure_kind: "none", score: 1 };
|
|
7
|
+
}
|
|
8
|
+
if (evalResult.status === "review") {
|
|
9
|
+
return { status: "failed", failure_kind: "review_required", score: 0 };
|
|
10
|
+
}
|
|
11
|
+
if (evalResult.status === "infra_failed") {
|
|
12
|
+
return { status: "failed", failure_kind: "infra_failed", score: 0 };
|
|
13
|
+
}
|
|
14
|
+
return { status: "failed", failure_kind: "goal_mismatch", score: 0 };
|
|
15
|
+
}
|
|
16
|
+
export function mapRuntimeFailureToVerdict(implementationRuns, options = {}) {
|
|
17
|
+
const ignored = new Set(options.ignoredFailureKinds ?? []);
|
|
18
|
+
const runtimeFailure = implementationRuns.find((run) => run.status !== "completed" && !ignored.has(run.failureKind ?? ""));
|
|
19
|
+
if (runtimeFailure === undefined) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
status: "failed",
|
|
24
|
+
failure_kind: runtimeFailure.failureKind ?? "runtime_failure",
|
|
25
|
+
score: 0,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function deriveRuhrohVerdict(implementationRuns, evalResult, options = {}) {
|
|
29
|
+
return mapRuntimeFailureToVerdict(implementationRuns, options) ?? mapEvalResultToVerdict(evalResult);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=results.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"results.js","sourceRoot":"","sources":["../src/results.ts"],"names":[],"mappings":"AAyDA,MAAM,UAAU,kBAAkB,CAAC,MAAwB;IACzD,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,UAA4C;IACjF,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACzE,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QACzC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACtE,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,kBAA4F,EAC5F,UAA0D,EAAE;IAE5D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3H,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,cAAc,CAAC,WAAW,IAAI,iBAAiB;QAC7D,KAAK,EAAE,CAAC;KACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,kBAA4F,EAC5F,UAA4C,EAC5C,UAA0D,EAAE;IAE5D,OAAO,0BAA0B,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,sBAAsB,CAAC,UAAU,CAAC,CAAC;AACvG,CAAC"}
|