@post-print/agent-harness 0.3.4 → 0.3.6
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/README.md +64 -16
- package/dist/adapters/index.d.ts +9 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +88 -6
- package/dist/adapters/index.js.map +1 -1
- package/dist/auth-mode.d.ts +22 -0
- package/dist/auth-mode.d.ts.map +1 -0
- package/dist/auth-mode.js +36 -0
- package/dist/auth-mode.js.map +1 -0
- package/dist/capture.d.ts +0 -2
- package/dist/capture.d.ts.map +1 -1
- package/dist/capture.js +12 -66
- package/dist/capture.js.map +1 -1
- package/dist/classifier.d.ts +13 -0
- package/dist/classifier.d.ts.map +1 -0
- package/dist/classifier.js +91 -0
- package/dist/classifier.js.map +1 -0
- package/dist/claude-run.d.ts +15 -1
- package/dist/claude-run.d.ts.map +1 -1
- package/dist/claude-run.js +54 -8
- package/dist/claude-run.js.map +1 -1
- package/dist/context.d.ts +3 -2
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +27 -9
- package/dist/context.js.map +1 -1
- package/dist/conversation.d.ts +28 -0
- package/dist/conversation.d.ts.map +1 -0
- package/dist/conversation.js +191 -0
- package/dist/conversation.js.map +1 -0
- package/dist/cursor-run.d.ts +17 -1
- package/dist/cursor-run.d.ts.map +1 -1
- package/dist/cursor-run.js +152 -101
- package/dist/cursor-run.js.map +1 -1
- package/dist/host-registry.d.ts +12 -0
- package/dist/host-registry.d.ts.map +1 -0
- package/dist/host-registry.js +39 -0
- package/dist/host-registry.js.map +1 -0
- package/dist/index.d.ts +19 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -7
- package/dist/index.js.map +1 -1
- package/dist/judge.d.ts +30 -1
- package/dist/judge.d.ts.map +1 -1
- package/dist/judge.js +137 -17
- package/dist/judge.js.map +1 -1
- package/dist/live-agent-event.d.ts +17 -0
- package/dist/live-agent-event.d.ts.map +1 -0
- package/dist/live-agent-event.js +31 -0
- package/dist/live-agent-event.js.map +1 -0
- package/dist/main.d.ts +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/openai-capture.d.ts +43 -0
- package/dist/openai-capture.d.ts.map +1 -0
- package/dist/openai-capture.js +164 -0
- package/dist/openai-capture.js.map +1 -0
- package/dist/openai-run.d.ts +70 -0
- package/dist/openai-run.d.ts.map +1 -0
- package/dist/openai-run.js +373 -0
- package/dist/openai-run.js.map +1 -0
- package/dist/sealed-workspace.d.ts +37 -0
- package/dist/sealed-workspace.d.ts.map +1 -0
- package/dist/sealed-workspace.js +170 -0
- package/dist/sealed-workspace.js.map +1 -0
- package/dist/skills-context.d.ts +26 -7
- package/dist/skills-context.d.ts.map +1 -1
- package/dist/skills-context.js +105 -40
- package/dist/skills-context.js.map +1 -1
- package/dist/types.d.ts +44 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +13 -1
- package/dist/types.js.map +1 -1
- package/dist/user-simulator.d.ts +10 -0
- package/dist/user-simulator.d.ts.map +1 -0
- package/dist/user-simulator.js +47 -0
- package/dist/user-simulator.js.map +1 -0
- package/dist/user-skills.d.ts +17 -0
- package/dist/user-skills.d.ts.map +1 -0
- package/dist/user-skills.js +32 -0
- package/dist/user-skills.js.map +1 -0
- package/dist/working-tree-guard.d.ts +5 -0
- package/dist/working-tree-guard.d.ts.map +1 -1
- package/dist/working-tree-guard.js +27 -3
- package/dist/working-tree-guard.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills-context.d.ts","sourceRoot":"","sources":["../src/skills-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skills-context.d.ts","sourceRoot":"","sources":["../src/skills-context.ts"],"names":[],"mappings":"AAGA,4EAA4E;AAC5E,eAAO,MAAM,WAAW,YACvB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,CACP,CAAC;AAQX,0EAA0E;AAC1E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG1E;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAE3D,MAAM,MAAM,mBAAmB,GAC5B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC7C;IAAE,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAE7D,iFAAiF;AACjF,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,mBAAmB,CAAC;AAEnF,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,EAAE,OAAO,CAAC;CAChC;AAsBD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,6EAA6E;AAC7E,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAS5D;AAED,uDAAuD;AACvD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIvD;AAaD,gEAAgE;AAChE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,GAAG,MAAM,EAAE,CAExF;AAED,iBAAS,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,GAAG;IACzE,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;CAClB,CAoBA;AAgED,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAED,+EAA+E;AAC/E,wBAAsB,gBAAgB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,mBAAmB,GAAG,SAAS,GACtC,OAAO,CAAC,kBAAkB,CAAC,CA8B7B;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
package/dist/skills-context.js
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { isAbsolute, join } from "node:path";
|
|
3
|
+
/** Project skill trees used by Cursor, Claude, Codex, and similar hosts. */
|
|
4
|
+
export const SKILL_ROOTS = [
|
|
5
|
+
".agents/skills",
|
|
6
|
+
".cursor/skills",
|
|
7
|
+
".codex/skills",
|
|
8
|
+
".claude/skills",
|
|
9
|
+
];
|
|
10
|
+
const SKILL_WORKFLOW_PATH_PATTERN = /(?:^|[/\\])(?:\.agents|\.cursor|\.codex|\.claude)[/\\]skills[/\\]([^/\\]+)[/\\](?:SKILL\.md|references[/\\])/i;
|
|
4
11
|
const INTERNAL_SKILL_NAMES = new Set(["align-commands"]);
|
|
5
12
|
const FRONTMATTER_PATTERN = /^---\r?\n([\s\S]*?)\r?\n---/;
|
|
13
|
+
/** Skill folder name from a host-agnostic SKILL.md or references path. */
|
|
14
|
+
export function skillNameFromWorkflowPath(path) {
|
|
15
|
+
const match = path.match(SKILL_WORKFLOW_PATH_PATTERN);
|
|
16
|
+
return match?.[1]?.toLowerCase();
|
|
17
|
+
}
|
|
6
18
|
function parseFrontmatter(raw) {
|
|
7
19
|
const match = FRONTMATTER_PATTERN.exec(raw);
|
|
8
20
|
if (!match?.[1]) {
|
|
@@ -22,56 +34,110 @@ function parseFrontmatter(raw) {
|
|
|
22
34
|
}
|
|
23
35
|
return fields;
|
|
24
36
|
}
|
|
37
|
+
export function normalizeRelSkillPath(raw) {
|
|
38
|
+
return raw.replace(/\\/g, "/").replace(/^\.\//, "").replace(/\/+$/, "").trim();
|
|
39
|
+
}
|
|
40
|
+
/** True for a repo-relative skill file or folder. Bare names are invalid. */
|
|
41
|
+
export function isRepoRelativeSkillPath(raw) {
|
|
42
|
+
const rel = normalizeRelSkillPath(raw);
|
|
43
|
+
if (!rel || isAbsolute(raw) || rel.startsWith("/")) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
if (rel.split("/").includes("..") || rel.split("/").includes(".")) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
return rel.includes("/");
|
|
50
|
+
}
|
|
51
|
+
/** SKILL.md path for a listed skill file or folder. */
|
|
52
|
+
export function skillManifestRelPath(raw) {
|
|
53
|
+
const rel = normalizeRelSkillPath(raw);
|
|
54
|
+
if (/\/skill\.md$/i.test(rel)) {
|
|
55
|
+
return rel.replace(/skill\.md$/i, "SKILL.md");
|
|
56
|
+
}
|
|
57
|
+
return `${rel}/SKILL.md`;
|
|
58
|
+
}
|
|
59
|
+
/** Folder copied into the sealed workspace for a listed skill path. */
|
|
60
|
+
export function skillOverlayRelPath(raw) {
|
|
61
|
+
const manifest = skillManifestRelPath(raw);
|
|
62
|
+
const slash = manifest.lastIndexOf("/");
|
|
63
|
+
return slash === -1 ? manifest : manifest.slice(0, slash);
|
|
64
|
+
}
|
|
65
|
+
function normalizePaths(paths) {
|
|
66
|
+
const include = (paths ?? []).map((item) => normalizeRelSkillPath(item)).filter(Boolean);
|
|
67
|
+
const invalid = include.filter((item) => !isRepoRelativeSkillPath(item));
|
|
68
|
+
if (invalid.length > 0) {
|
|
69
|
+
throw new Error(`skills must be repo-relative paths (for example [".agents/skills/skeleton/SKILL.md"]), got ${JSON.stringify(invalid)}`);
|
|
70
|
+
}
|
|
71
|
+
return include;
|
|
72
|
+
}
|
|
73
|
+
/** Skill paths this run may load. Empty when skills are off. */
|
|
74
|
+
export function skillPathsFromSetting(setting) {
|
|
75
|
+
return normalizeSkillContext(setting).include ?? [];
|
|
76
|
+
}
|
|
25
77
|
function normalizeSkillContext(setting) {
|
|
26
|
-
if (!setting) {
|
|
27
|
-
return { mode: "none" };
|
|
78
|
+
if (!setting || setting === "none") {
|
|
79
|
+
return { mode: "none", include: [] };
|
|
80
|
+
}
|
|
81
|
+
if (Array.isArray(setting)) {
|
|
82
|
+
const include = normalizePaths(setting);
|
|
83
|
+
return { mode: include.length > 0 ? "catalog" : "none", include };
|
|
28
84
|
}
|
|
29
85
|
if (typeof setting === "string") {
|
|
30
|
-
|
|
86
|
+
throw new Error(`skills "${setting}" is invalid — pass a list of skill paths (for example [".agents/skills/skeleton/SKILL.md"])`);
|
|
87
|
+
}
|
|
88
|
+
const options = setting;
|
|
89
|
+
const include = normalizePaths(options.include);
|
|
90
|
+
const mode = options.mode ?? (include.length > 0 ? "catalog" : "none");
|
|
91
|
+
if (mode !== "none" && include.length === 0) {
|
|
92
|
+
throw new Error("skills.include must list the skill paths for this run");
|
|
31
93
|
}
|
|
32
|
-
return
|
|
94
|
+
return { mode: mode === "none" ? "none" : mode, include };
|
|
33
95
|
}
|
|
34
|
-
async function
|
|
35
|
-
const
|
|
36
|
-
|
|
96
|
+
async function resolveSkillPath(cwd, raw) {
|
|
97
|
+
const relPath = skillManifestRelPath(raw);
|
|
98
|
+
const dir = skillOverlayRelPath(raw).split("/").pop() ?? relPath;
|
|
99
|
+
const absPath = join(cwd, relPath);
|
|
100
|
+
let rawText;
|
|
37
101
|
try {
|
|
38
|
-
|
|
102
|
+
rawText = await readFile(absPath, "utf8");
|
|
39
103
|
}
|
|
40
104
|
catch {
|
|
41
|
-
return
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
const frontmatter = parseFrontmatter(rawText);
|
|
108
|
+
const name = frontmatter.name ?? dir;
|
|
109
|
+
if (INTERNAL_SKILL_NAMES.has(name) || INTERNAL_SKILL_NAMES.has(dir)) {
|
|
110
|
+
return undefined;
|
|
42
111
|
}
|
|
112
|
+
return {
|
|
113
|
+
name,
|
|
114
|
+
dir,
|
|
115
|
+
relPath,
|
|
116
|
+
description: frontmatter.description ?? "",
|
|
117
|
+
disableModelInvocation: frontmatter["disable-model-invocation"] === "true",
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
async function resolveSkillPaths(cwd, include) {
|
|
43
121
|
const skills = [];
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
raw = await readFile(absPath, "utf8");
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
122
|
+
const seen = new Set();
|
|
123
|
+
const missing = [];
|
|
124
|
+
for (const raw of include) {
|
|
125
|
+
const key = skillManifestRelPath(raw).toLowerCase();
|
|
126
|
+
if (seen.has(key)) {
|
|
52
127
|
continue;
|
|
53
128
|
}
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
129
|
+
const skill = await resolveSkillPath(cwd, raw);
|
|
130
|
+
if (!skill) {
|
|
131
|
+
missing.push(raw);
|
|
57
132
|
continue;
|
|
58
133
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
dir,
|
|
62
|
-
relPath,
|
|
63
|
-
description: frontmatter.description ?? "",
|
|
64
|
-
disableModelInvocation: frontmatter["disable-model-invocation"] === "true",
|
|
65
|
-
});
|
|
134
|
+
seen.add(key);
|
|
135
|
+
skills.push(skill);
|
|
66
136
|
}
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
function filterSkills(skills, include) {
|
|
70
|
-
if (!include?.length) {
|
|
71
|
-
return skills;
|
|
137
|
+
if (missing.length > 0) {
|
|
138
|
+
throw new Error(`skill not found: ${missing.join(", ")}`);
|
|
72
139
|
}
|
|
73
|
-
|
|
74
|
-
return skills.filter((skill) => wanted.has(skill.name.toLowerCase()) || wanted.has(skill.dir));
|
|
140
|
+
return skills;
|
|
75
141
|
}
|
|
76
142
|
function buildCatalogSection(skills) {
|
|
77
143
|
const lines = [
|
|
@@ -93,13 +159,12 @@ export async function loadSkillContext(cwd, setting) {
|
|
|
93
159
|
if (options.mode === "none") {
|
|
94
160
|
return { mode: "none", sources: [], preamble: "", catalog: [] };
|
|
95
161
|
}
|
|
96
|
-
const
|
|
97
|
-
const skills = filterSkills(allSkills, options.include);
|
|
162
|
+
const skills = await resolveSkillPaths(cwd, options.include ?? []);
|
|
98
163
|
const sources = [];
|
|
99
164
|
const parts = [];
|
|
100
165
|
if (options.mode === "catalog" || options.mode === "full") {
|
|
101
166
|
parts.push(buildCatalogSection(skills));
|
|
102
|
-
sources.push(
|
|
167
|
+
sources.push("skills/catalog");
|
|
103
168
|
}
|
|
104
169
|
if (options.mode === "full") {
|
|
105
170
|
for (const skill of skills) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills-context.js","sourceRoot":"","sources":["../src/skills-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"skills-context.js","sourceRoot":"","sources":["../src/skills-context.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
export
|
|
1
|
+
export declare const AGENT_HOSTS: readonly ["cursor", "claude", "openai"];
|
|
2
|
+
export type BuiltinAgentHost = (typeof AGENT_HOSTS)[number];
|
|
3
|
+
/** Builtin host or a registered consumer slug. */
|
|
4
|
+
export type AgentHost = BuiltinAgentHost | (string & {});
|
|
5
|
+
export declare function isBuiltinAgentHost(value: string): value is BuiltinAgentHost;
|
|
6
|
+
/** Lowercase slug: starts with a letter, then letters, digits, or hyphens. */
|
|
7
|
+
export declare function isHostSlug(value: string): boolean;
|
|
8
|
+
/** True for a builtin host id. Registered slugs use `isKnownAgentHost`. */
|
|
9
|
+
export declare function isAgentHost(value: string): value is AgentHost;
|
|
2
10
|
import type { McpServerConfig } from "./mcp.js";
|
|
3
11
|
import type { RoutingContract } from "./routing-contract.js";
|
|
4
12
|
import type { SkillContextMode } from "./skills-context.js";
|
|
@@ -65,6 +73,14 @@ export interface LoadedContext {
|
|
|
65
73
|
/** Skill catalog / full SKILL.md loading mode when enabled. */
|
|
66
74
|
skillsMode?: SkillContextMode;
|
|
67
75
|
}
|
|
76
|
+
export type LiveAgentEvent = {
|
|
77
|
+
type: "tool";
|
|
78
|
+
name: string;
|
|
79
|
+
args?: Record<string, unknown>;
|
|
80
|
+
} | {
|
|
81
|
+
type: "text";
|
|
82
|
+
text: string;
|
|
83
|
+
};
|
|
68
84
|
export interface RunAgentOptions {
|
|
69
85
|
host: AgentHost;
|
|
70
86
|
cwd: string;
|
|
@@ -78,8 +94,17 @@ export interface RunAgentOptions {
|
|
|
78
94
|
timeoutMs?: number;
|
|
79
95
|
/** Fail fast when the agent invokes AskQuestion-style tools (default true for live). */
|
|
80
96
|
failOnUserInput?: boolean;
|
|
97
|
+
/** Max agent turns when failOnUserInput is false (default 6). */
|
|
98
|
+
maxConversationTurns?: number;
|
|
81
99
|
/** Fires when the live harness deadline clock starts (after pre-stream SDK setup). */
|
|
82
100
|
onDeadlineStart?: () => void | Promise<void>;
|
|
101
|
+
/** Fires as the host streams assistant text and tool calls. */
|
|
102
|
+
onAgentEvent?: (event: LiveAgentEvent) => void;
|
|
103
|
+
/**
|
|
104
|
+
* Load host-global user skills (`~/.cursor/skills`, `~/.claude/skills`,
|
|
105
|
+
* `~/.codex/skills`, `~/.agents/skills`). Default false.
|
|
106
|
+
*/
|
|
107
|
+
allowUserSkills?: boolean;
|
|
83
108
|
env?: Record<string, string>;
|
|
84
109
|
}
|
|
85
110
|
export type RunStatus = "completed" | "failed" | "skipped";
|
|
@@ -93,7 +118,24 @@ export interface AgentSession {
|
|
|
93
118
|
error?: string;
|
|
94
119
|
}
|
|
95
120
|
export interface HostAdapter {
|
|
96
|
-
readonly host:
|
|
121
|
+
readonly host: string;
|
|
97
122
|
run(options: RunAgentOptions): Promise<AgentSession>;
|
|
123
|
+
/** Missing credential or binary. Undefined when this host can run. */
|
|
124
|
+
missingAuth?(): string | undefined;
|
|
125
|
+
/** Builtin judge family when this adapter does not implement `classify`. */
|
|
126
|
+
classifierHost?: BuiltinAgentHost;
|
|
127
|
+
/** Optional judge/classifier. Use this or `classifierHost`. */
|
|
128
|
+
classify?(options: {
|
|
129
|
+
cwd: string;
|
|
130
|
+
prompt: string;
|
|
131
|
+
apiKey?: string;
|
|
132
|
+
}): Promise<{
|
|
133
|
+
status: string;
|
|
134
|
+
text: string;
|
|
135
|
+
rawStatus?: string;
|
|
136
|
+
usage?: AgentUsage;
|
|
137
|
+
}>;
|
|
138
|
+
/** Missing classifier auth. Undefined when the judge can run. */
|
|
139
|
+
missingClassifierAuth?(): string | undefined;
|
|
98
140
|
}
|
|
99
141
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -1,2 +1,14 @@
|
|
|
1
|
-
export
|
|
1
|
+
export const AGENT_HOSTS = ["cursor", "claude", "openai"];
|
|
2
|
+
const HOST_SLUG = /^[a-z][a-z0-9-]{0,31}$/;
|
|
3
|
+
export function isBuiltinAgentHost(value) {
|
|
4
|
+
return AGENT_HOSTS.includes(value);
|
|
5
|
+
}
|
|
6
|
+
/** Lowercase slug: starts with a letter, then letters, digits, or hyphens. */
|
|
7
|
+
export function isHostSlug(value) {
|
|
8
|
+
return HOST_SLUG.test(value);
|
|
9
|
+
}
|
|
10
|
+
/** True for a builtin host id. Registered slugs use `isKnownAgentHost`. */
|
|
11
|
+
export function isAgentHost(value) {
|
|
12
|
+
return isBuiltinAgentHost(value);
|
|
13
|
+
}
|
|
2
14
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAKnE,MAAM,SAAS,GAAG,wBAAwB,CAAC;AAE3C,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC/C,OAAQ,WAAiC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,UAAU,CAAC,KAAa;IACvC,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,WAAW,CAAC,KAAa;IACxC,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { UserSimulator } from "./conversation.js";
|
|
2
|
+
import type { AgentHost } from "./types.js";
|
|
3
|
+
export interface JudgeUserSimulatorOptions {
|
|
4
|
+
cwd: string;
|
|
5
|
+
apiKey?: string;
|
|
6
|
+
host?: AgentHost;
|
|
7
|
+
}
|
|
8
|
+
/** Default user agent: a one-shot classifier that answers AskQuestion prompts. */
|
|
9
|
+
export declare function createJudgeUserSimulator(options: JudgeUserSimulatorOptions): UserSimulator;
|
|
10
|
+
//# sourceMappingURL=user-simulator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-simulator.d.ts","sourceRoot":"","sources":["../src/user-simulator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,yBAAyB;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,SAAS,CAAC;CACjB;AAyBD,kFAAkF;AAClF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,aAAa,CAqB1F"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { missingClassifierAuth, runClassifier } from "./classifier.js";
|
|
2
|
+
import { formatTraceForJudge } from "./judge.js";
|
|
3
|
+
function formatQuestions(questions) {
|
|
4
|
+
return questions
|
|
5
|
+
.map((question, index) => {
|
|
6
|
+
const options = question.options?.length ? ` Options: ${question.options.join("; ")}` : "";
|
|
7
|
+
return `${index + 1}. ${question.prompt}${options}`;
|
|
8
|
+
})
|
|
9
|
+
.join("\n");
|
|
10
|
+
}
|
|
11
|
+
function buildUserPrompt(questions, transcript) {
|
|
12
|
+
return [
|
|
13
|
+
"You are the human user in a coding-agent test.",
|
|
14
|
+
"Answer the agent question so the task can continue.",
|
|
15
|
+
"Keep the answer short and concrete. Do not use tools.",
|
|
16
|
+
"",
|
|
17
|
+
"Questions:",
|
|
18
|
+
formatQuestions(questions),
|
|
19
|
+
"",
|
|
20
|
+
"Transcript:",
|
|
21
|
+
transcript,
|
|
22
|
+
].join("\n");
|
|
23
|
+
}
|
|
24
|
+
/** Default user agent: a one-shot classifier that answers AskQuestion prompts. */
|
|
25
|
+
export function createJudgeUserSimulator(options) {
|
|
26
|
+
return {
|
|
27
|
+
async reply({ questions, trace }) {
|
|
28
|
+
const host = options.host ?? "cursor";
|
|
29
|
+
const missing = missingClassifierAuth(host, options.apiKey);
|
|
30
|
+
if (missing) {
|
|
31
|
+
throw new Error(`${missing} — required for the default user simulator`);
|
|
32
|
+
}
|
|
33
|
+
const result = await runClassifier({
|
|
34
|
+
host,
|
|
35
|
+
cwd: options.cwd,
|
|
36
|
+
prompt: buildUserPrompt(questions, formatTraceForJudge(trace)),
|
|
37
|
+
apiKey: options.apiKey,
|
|
38
|
+
});
|
|
39
|
+
const text = result.text.trim();
|
|
40
|
+
if (result.status !== "completed" || !text) {
|
|
41
|
+
throw new Error(result.sdkError?.message ?? "user simulator failed");
|
|
42
|
+
}
|
|
43
|
+
return text;
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=user-simulator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-simulator.js","sourceRoot":"","sources":["../src/user-simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AASjD,SAAS,eAAe,CAAC,SAAyB;IACjD,OAAO,SAAS;SACd,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3F,OAAO,GAAG,KAAK,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;IACrD,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,SAAyB,EAAE,UAAkB;IACrE,OAAO;QACN,gDAAgD;QAChD,qDAAqD;QACrD,uDAAuD;QACvD,EAAE;QACF,YAAY;QACZ,eAAe,CAAC,SAAS,CAAC;QAC1B,EAAE;QACF,aAAa;QACb,UAAU;KACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,wBAAwB,CAAC,OAAkC;IAC1E,OAAO;QACN,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE;YAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC;YACtC,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,4CAA4C,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;gBAClC,IAAI;gBACJ,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,MAAM,EAAE,eAAe,CAAC,SAAS,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBAC9D,MAAM,EAAE,OAAO,CAAC,MAAM;aACtB,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,uBAAuB,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Cursor on-disk layers that can feed skills and settings. */
|
|
2
|
+
export type CursorSettingSource = "project" | "user" | "plugins";
|
|
3
|
+
/**
|
|
4
|
+
* Host-global user skills stay out unless the caller sets true.
|
|
5
|
+
* Scenario value wins over suite defaults. Omitted values are false.
|
|
6
|
+
*/
|
|
7
|
+
export declare function resolveAllowUserSkills(scenarioValue?: boolean, defaultValue?: boolean): boolean;
|
|
8
|
+
/** Cursor SDK `local.settingSources`. Deny keeps project files only. */
|
|
9
|
+
export declare function cursorSettingSources(allowUserSkills: boolean): CursorSettingSource[];
|
|
10
|
+
/**
|
|
11
|
+
* Claude CLI isolation flags after `-p`.
|
|
12
|
+
* Deny + api-key keeps `--bare`. Deny + subscription loads project only.
|
|
13
|
+
*/
|
|
14
|
+
export declare function claudeSessionFlags(authMode: "api-key" | "subscription", allowUserSkills: boolean): string[];
|
|
15
|
+
/** Codex `--ignore-user-config` when user skills stay out. */
|
|
16
|
+
export declare function openaiUserConfigArgs(allowUserSkills: boolean): string[];
|
|
17
|
+
//# sourceMappingURL=user-skills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-skills.d.ts","sourceRoot":"","sources":["../src/user-skills.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAEjE;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAK/F;AAED,wEAAwE;AACxE,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,OAAO,GAAG,mBAAmB,EAAE,CAEpF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,SAAS,GAAG,cAAc,EACpC,eAAe,EAAE,OAAO,GACtB,MAAM,EAAE,CAQV;AAED,8DAA8D;AAC9D,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,OAAO,GAAG,MAAM,EAAE,CAEvE"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host-global user skills stay out unless the caller sets true.
|
|
3
|
+
* Scenario value wins over suite defaults. Omitted values are false.
|
|
4
|
+
*/
|
|
5
|
+
export function resolveAllowUserSkills(scenarioValue, defaultValue) {
|
|
6
|
+
if (scenarioValue !== undefined) {
|
|
7
|
+
return scenarioValue === true;
|
|
8
|
+
}
|
|
9
|
+
return defaultValue === true;
|
|
10
|
+
}
|
|
11
|
+
/** Cursor SDK `local.settingSources`. Deny keeps project files only. */
|
|
12
|
+
export function cursorSettingSources(allowUserSkills) {
|
|
13
|
+
return allowUserSkills ? ["project", "user"] : ["project"];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Claude CLI isolation flags after `-p`.
|
|
17
|
+
* Deny + api-key keeps `--bare`. Deny + subscription loads project only.
|
|
18
|
+
*/
|
|
19
|
+
export function claudeSessionFlags(authMode, allowUserSkills) {
|
|
20
|
+
if (allowUserSkills) {
|
|
21
|
+
return ["--strict-mcp-config", "--setting-sources", "user,project"];
|
|
22
|
+
}
|
|
23
|
+
if (authMode === "api-key") {
|
|
24
|
+
return ["--bare"];
|
|
25
|
+
}
|
|
26
|
+
return ["--strict-mcp-config", "--setting-sources", "project"];
|
|
27
|
+
}
|
|
28
|
+
/** Codex `--ignore-user-config` when user skills stay out. */
|
|
29
|
+
export function openaiUserConfigArgs(allowUserSkills) {
|
|
30
|
+
return allowUserSkills ? [] : ["--ignore-user-config"];
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=user-skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-skills.js","sourceRoot":"","sources":["../src/user-skills.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,aAAuB,EAAE,YAAsB;IACrF,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,aAAa,KAAK,IAAI,CAAC;IAC/B,CAAC;IACD,OAAO,YAAY,KAAK,IAAI,CAAC;AAC9B,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,oBAAoB,CAAC,eAAwB;IAC5D,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CACjC,QAAoC,EACpC,eAAwB;IAExB,IAAI,eAAe,EAAE,CAAC;QACrB,OAAO,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,SAAS,CAAC,CAAC;AAChE,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,oBAAoB,CAAC,eAAwB;IAC5D,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -10,6 +10,11 @@ export declare function captureWorkingTreeStatus(repoRoot: string): Promise<stri
|
|
|
10
10
|
export declare function findWorkingTreeLeak(before: string, after: string): string[];
|
|
11
11
|
/** Extract the path portion from a git status --porcelain line. */
|
|
12
12
|
export declare function porcelainPathFromStatusLine(line: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Resolve a path, then follow existing ancestors so `/var` and `/private/var`
|
|
15
|
+
* compare as the same workspace on macOS.
|
|
16
|
+
*/
|
|
17
|
+
export declare function canonicalizePath(target: string): string;
|
|
13
18
|
/** True when `target` is the same as or nested under `root`. */
|
|
14
19
|
export declare function isPathUnderRoot(target: string, root: string): boolean;
|
|
15
20
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"working-tree-guard.d.ts","sourceRoot":"","sources":["../src/working-tree-guard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"working-tree-guard.d.ts","sourceRoot":"","sources":["../src/working-tree-guard.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,oFAAoF;AACpF,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhF;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAM3E;AAED,mEAAmE;AACnE,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAShE;AAoBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAiBvD;AAED,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAKrE;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAChD,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,GACvB,MAAM,EAAE,CASV;AAED,sFAAsF;AACtF,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,MAAM,EAAE,EAChB,WAAW,EAAE,MAAM,EAAE,EACrB,QAAQ,EAAE,MAAM,GACd,MAAM,EAAE,CAaV;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAE7D;AAED,4EAA4E;AAC5E,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ9F"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
|
-
import {
|
|
2
|
+
import { realpathSync } from "node:fs";
|
|
3
|
+
import { basename, dirname, join, resolve, sep } from "node:path";
|
|
3
4
|
import { promisify } from "node:util";
|
|
4
5
|
const execFileAsync = promisify(execFile);
|
|
5
6
|
/**
|
|
@@ -51,10 +52,33 @@ function unquoteGitPath(token) {
|
|
|
51
52
|
}
|
|
52
53
|
return token;
|
|
53
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Resolve a path, then follow existing ancestors so `/var` and `/private/var`
|
|
57
|
+
* compare as the same workspace on macOS.
|
|
58
|
+
*/
|
|
59
|
+
export function canonicalizePath(target) {
|
|
60
|
+
const abs = resolve(target);
|
|
61
|
+
const missing = [];
|
|
62
|
+
let current = abs;
|
|
63
|
+
for (;;) {
|
|
64
|
+
try {
|
|
65
|
+
const real = realpathSync(current);
|
|
66
|
+
return missing.length === 0 ? real : join(real, ...missing);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
const parent = dirname(current);
|
|
70
|
+
if (parent === current) {
|
|
71
|
+
return abs;
|
|
72
|
+
}
|
|
73
|
+
missing.unshift(basename(current));
|
|
74
|
+
current = parent;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
54
78
|
/** True when `target` is the same as or nested under `root`. */
|
|
55
79
|
export function isPathUnderRoot(target, root) {
|
|
56
|
-
const absTarget =
|
|
57
|
-
const absRoot =
|
|
80
|
+
const absTarget = canonicalizePath(target);
|
|
81
|
+
const absRoot = canonicalizePath(root);
|
|
58
82
|
const prefix = absRoot.endsWith(sep) ? absRoot : `${absRoot}${sep}`;
|
|
59
83
|
return absTarget === absRoot || absTarget.startsWith(prefix);
|
|
60
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"working-tree-guard.js","sourceRoot":"","sources":["../src/working-tree-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"working-tree-guard.js","sourceRoot":"","sources":["../src/working-tree-guard.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@post-print/agent-harness",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"lint": "bunx biome check .",
|
|
20
20
|
"lint:fix": "bunx biome check . --write",
|
|
21
21
|
"test": "bun test",
|
|
22
|
-
"test:sandbox-safe": "bun test --path-ignore-patterns '**/{worktree-judge,harness}.test.ts'",
|
|
22
|
+
"test:sandbox-safe": "bun test --path-ignore-patterns '**/{worktree-judge,harness,sealed-workspace}.test.ts'",
|
|
23
23
|
"test:coverage": "bun test --coverage --coverage-reporter=text --coverage-reporter=lcov",
|
|
24
24
|
"clean": "rm -rf dist tsconfig.tsbuildinfo"
|
|
25
25
|
},
|