@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.
Files changed (86) hide show
  1. package/README.md +64 -16
  2. package/dist/adapters/index.d.ts +9 -1
  3. package/dist/adapters/index.d.ts.map +1 -1
  4. package/dist/adapters/index.js +88 -6
  5. package/dist/adapters/index.js.map +1 -1
  6. package/dist/auth-mode.d.ts +22 -0
  7. package/dist/auth-mode.d.ts.map +1 -0
  8. package/dist/auth-mode.js +36 -0
  9. package/dist/auth-mode.js.map +1 -0
  10. package/dist/capture.d.ts +0 -2
  11. package/dist/capture.d.ts.map +1 -1
  12. package/dist/capture.js +12 -66
  13. package/dist/capture.js.map +1 -1
  14. package/dist/classifier.d.ts +13 -0
  15. package/dist/classifier.d.ts.map +1 -0
  16. package/dist/classifier.js +91 -0
  17. package/dist/classifier.js.map +1 -0
  18. package/dist/claude-run.d.ts +15 -1
  19. package/dist/claude-run.d.ts.map +1 -1
  20. package/dist/claude-run.js +54 -8
  21. package/dist/claude-run.js.map +1 -1
  22. package/dist/context.d.ts +3 -2
  23. package/dist/context.d.ts.map +1 -1
  24. package/dist/context.js +27 -9
  25. package/dist/context.js.map +1 -1
  26. package/dist/conversation.d.ts +28 -0
  27. package/dist/conversation.d.ts.map +1 -0
  28. package/dist/conversation.js +191 -0
  29. package/dist/conversation.js.map +1 -0
  30. package/dist/cursor-run.d.ts +17 -1
  31. package/dist/cursor-run.d.ts.map +1 -1
  32. package/dist/cursor-run.js +152 -101
  33. package/dist/cursor-run.js.map +1 -1
  34. package/dist/host-registry.d.ts +12 -0
  35. package/dist/host-registry.d.ts.map +1 -0
  36. package/dist/host-registry.js +39 -0
  37. package/dist/host-registry.js.map +1 -0
  38. package/dist/index.d.ts +19 -7
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +28 -7
  41. package/dist/index.js.map +1 -1
  42. package/dist/judge.d.ts +30 -1
  43. package/dist/judge.d.ts.map +1 -1
  44. package/dist/judge.js +137 -17
  45. package/dist/judge.js.map +1 -1
  46. package/dist/live-agent-event.d.ts +17 -0
  47. package/dist/live-agent-event.d.ts.map +1 -0
  48. package/dist/live-agent-event.js +31 -0
  49. package/dist/live-agent-event.js.map +1 -0
  50. package/dist/main.d.ts +1 -1
  51. package/dist/main.d.ts.map +1 -1
  52. package/dist/main.js +1 -1
  53. package/dist/main.js.map +1 -1
  54. package/dist/openai-capture.d.ts +43 -0
  55. package/dist/openai-capture.d.ts.map +1 -0
  56. package/dist/openai-capture.js +164 -0
  57. package/dist/openai-capture.js.map +1 -0
  58. package/dist/openai-run.d.ts +70 -0
  59. package/dist/openai-run.d.ts.map +1 -0
  60. package/dist/openai-run.js +373 -0
  61. package/dist/openai-run.js.map +1 -0
  62. package/dist/sealed-workspace.d.ts +37 -0
  63. package/dist/sealed-workspace.d.ts.map +1 -0
  64. package/dist/sealed-workspace.js +170 -0
  65. package/dist/sealed-workspace.js.map +1 -0
  66. package/dist/skills-context.d.ts +26 -7
  67. package/dist/skills-context.d.ts.map +1 -1
  68. package/dist/skills-context.js +105 -40
  69. package/dist/skills-context.js.map +1 -1
  70. package/dist/types.d.ts +44 -2
  71. package/dist/types.d.ts.map +1 -1
  72. package/dist/types.js +13 -1
  73. package/dist/types.js.map +1 -1
  74. package/dist/user-simulator.d.ts +10 -0
  75. package/dist/user-simulator.d.ts.map +1 -0
  76. package/dist/user-simulator.js +47 -0
  77. package/dist/user-simulator.js.map +1 -0
  78. package/dist/user-skills.d.ts +17 -0
  79. package/dist/user-skills.d.ts.map +1 -0
  80. package/dist/user-skills.js +32 -0
  81. package/dist/user-skills.js.map +1 -0
  82. package/dist/working-tree-guard.d.ts +5 -0
  83. package/dist/working-tree-guard.d.ts.map +1 -1
  84. package/dist/working-tree-guard.js +27 -3
  85. package/dist/working-tree-guard.js.map +1 -1
  86. package/package.json +2 -2
@@ -0,0 +1,191 @@
1
+ import { enrichTrace, mergeAgentUsage } from "./capture.js";
2
+ import { formatTraceForJudge } from "./judge.js";
3
+ import { isUserInputTool } from "./run-guards.js";
4
+ const DEFAULT_MAX_TURNS = 6;
5
+ function questionText(value) {
6
+ if (typeof value === "string" && value.trim()) {
7
+ return value.trim();
8
+ }
9
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
10
+ return undefined;
11
+ }
12
+ const record = value;
13
+ for (const key of ["prompt", "question", "text", "message", "title"]) {
14
+ const text = questionText(record[key]);
15
+ if (text) {
16
+ return text;
17
+ }
18
+ }
19
+ return undefined;
20
+ }
21
+ function optionLabels(value) {
22
+ if (!Array.isArray(value)) {
23
+ return undefined;
24
+ }
25
+ const labels = value
26
+ .map((item) => {
27
+ if (typeof item === "string") {
28
+ return item;
29
+ }
30
+ if (item && typeof item === "object" && "label" in item) {
31
+ const label = item.label;
32
+ return typeof label === "string" ? label : undefined;
33
+ }
34
+ return undefined;
35
+ })
36
+ .filter((item) => Boolean(item));
37
+ return labels.length > 0 ? labels : undefined;
38
+ }
39
+ function questionsFromArgs(toolName, args) {
40
+ if (!args) {
41
+ return [{ toolName, prompt: "(agent asked a question with empty args)" }];
42
+ }
43
+ const nested = args.questions;
44
+ if (Array.isArray(nested) && nested.length > 0) {
45
+ return nested.map((item) => ({
46
+ toolName,
47
+ prompt: questionText(item) ?? "(untitled question)",
48
+ options: optionLabels(item && typeof item === "object" ? item.options : undefined),
49
+ }));
50
+ }
51
+ return [
52
+ {
53
+ toolName,
54
+ prompt: questionText(args) ?? JSON.stringify(args),
55
+ options: optionLabels(args.options),
56
+ },
57
+ ];
58
+ }
59
+ /** Pull AskQuestion-style prompts from a live trace. */
60
+ export function extractUserQuestions(trace) {
61
+ const questions = [];
62
+ for (const call of trace.toolCalls) {
63
+ if (!isUserInputTool(call.name)) {
64
+ continue;
65
+ }
66
+ questions.push(...questionsFromArgs(call.name, call.args));
67
+ }
68
+ return questions;
69
+ }
70
+ function nextSeq(trace) {
71
+ const messageSeq = trace.messages.map((m) => m.seq ?? 0);
72
+ const toolSeq = trace.toolCalls.map((call) => call.seq ?? 0);
73
+ return Math.max(0, ...messageSeq, ...toolSeq) + 1;
74
+ }
75
+ /** Append a user reply and the next agent turn onto the conversation trace. */
76
+ export function mergeConversationTraces(prior, userReply, next) {
77
+ const seq = nextSeq(prior);
78
+ const userMessage = { role: "user", content: userReply, seq };
79
+ const offset = seq + 1;
80
+ const shiftedMessages = next.messages.map((message) => ({
81
+ ...message,
82
+ seq: (message.seq ?? 0) + offset,
83
+ }));
84
+ const shiftedTools = next.toolCalls.map((call) => ({
85
+ ...call,
86
+ seq: (call.seq ?? 0) + offset,
87
+ }));
88
+ return enrichTrace({
89
+ messages: [...prior.messages, userMessage, ...shiftedMessages],
90
+ toolCalls: [...prior.toolCalls, ...shiftedTools],
91
+ shellCommands: [...new Set([...prior.shellCommands, ...next.shellCommands])],
92
+ skillsInvoked: [...new Set([...(prior.skillsInvoked ?? []), ...(next.skillsInvoked ?? [])])],
93
+ gitDiff: next.gitDiff ?? prior.gitDiff,
94
+ prBody: next.prBody ?? prior.prBody,
95
+ artifacts: { ...prior.artifacts, ...next.artifacts },
96
+ routing: next.routing ?? prior.routing,
97
+ assistantTextBeforeTools: prior.assistantTextBeforeTools,
98
+ usage: mergeAgentUsage(prior.usage, next.usage),
99
+ });
100
+ }
101
+ function withConversationMeta(trace, turns) {
102
+ return {
103
+ ...trace,
104
+ artifacts: {
105
+ ...trace.artifacts,
106
+ conversationTurns: String(turns),
107
+ },
108
+ };
109
+ }
110
+ /** Rebuild a follow-up turn so a new host process still sees the conversation. */
111
+ export function composeFollowUpPrompt(initialPrompt, prior, userReply) {
112
+ return [
113
+ `Original task:\n${initialPrompt}`,
114
+ "",
115
+ "Conversation so far:",
116
+ formatTraceForJudge(prior),
117
+ "",
118
+ `User reply to your question:\n${userReply}`,
119
+ "",
120
+ "Continue the task. Do not repeat finished work.",
121
+ ].join("\n");
122
+ }
123
+ /** Drive a test agent and a user simulator until the agent finishes or hits maxTurns. */
124
+ export async function runConversation(options) {
125
+ const maxTurns = options.maxTurns ?? DEFAULT_MAX_TURNS;
126
+ let turnPrompt = options.initialPrompt;
127
+ let lastReply;
128
+ let merged;
129
+ let lastSession;
130
+ let usage;
131
+ const started = performance.now();
132
+ for (let turn = 1; turn <= maxTurns; turn++) {
133
+ const session = await options.runTurn(turnPrompt, turn);
134
+ lastSession = session;
135
+ usage = mergeAgentUsage(usage, session.usage);
136
+ merged =
137
+ lastReply === undefined
138
+ ? enrichTrace(session.trace)
139
+ : mergeConversationTraces(merged ?? session.trace, lastReply, session.trace);
140
+ if (session.status !== "completed" && !extractUserQuestions(session.trace).length) {
141
+ return {
142
+ ...session,
143
+ trace: withConversationMeta(merged, turn),
144
+ usage,
145
+ durationMs: Math.round(performance.now() - started),
146
+ };
147
+ }
148
+ const askedThisTurn = extractUserQuestions(session.trace);
149
+ if (askedThisTurn.length === 0) {
150
+ return {
151
+ ...session,
152
+ status: "completed",
153
+ trace: withConversationMeta(merged, turn),
154
+ usage,
155
+ durationMs: Math.round(performance.now() - started),
156
+ error: undefined,
157
+ };
158
+ }
159
+ if (turn === maxTurns) {
160
+ return {
161
+ host: session.host,
162
+ status: "failed",
163
+ trace: withConversationMeta(merged, turn),
164
+ usage,
165
+ durationMs: Math.round(performance.now() - started),
166
+ error: `agent kept asking questions after maxTurns=${maxTurns}`,
167
+ };
168
+ }
169
+ lastReply = (await options.userSimulator.reply({ questions: askedThisTurn, trace: merged, turn })).trim();
170
+ if (!lastReply) {
171
+ return {
172
+ host: session.host,
173
+ status: "failed",
174
+ trace: withConversationMeta(merged, turn),
175
+ usage,
176
+ durationMs: Math.round(performance.now() - started),
177
+ error: "user simulator returned an empty reply",
178
+ };
179
+ }
180
+ turnPrompt = composeFollowUpPrompt(options.initialPrompt, merged, lastReply);
181
+ }
182
+ return {
183
+ host: lastSession?.host ?? "cursor",
184
+ status: "failed",
185
+ trace: withConversationMeta(merged ?? { messages: [], toolCalls: [], shellCommands: [], artifacts: {} }, maxTurns),
186
+ usage,
187
+ durationMs: Math.round(performance.now() - started),
188
+ error: `agent kept asking questions after maxTurns=${maxTurns}`,
189
+ };
190
+ }
191
+ //# sourceMappingURL=conversation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation.js","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,21 @@
1
+ import { type HostAuthMode } from "./auth-mode.js";
1
2
  import { type SdkMessage } from "./capture.js";
2
3
  import { type McpServerConfig } from "./mcp.js";
3
- import type { AgentTrace, AgentUsage } from "./types.js";
4
+ import type { AgentTrace, AgentUsage, LiveAgentEvent } from "./types.js";
5
+ export type CursorAuthMode = HostAuthMode;
6
+ export declare const CURSOR_AUTH_MODE_ENV = "CURSOR_AUTH_MODE";
7
+ export declare const CURSOR_MISSING_KEY_MESSAGE = "CURSOR_API_KEY required for Cursor agent runs, or set CURSOR_AUTH_MODE=subscription after Cursor.auth.login()";
8
+ export declare function resolveCursorAuthMode(raw?: string | undefined, apiKey?: string): CursorAuthMode;
9
+ /**
10
+ * In-process SDK env. Subscription mode drops CURSOR_API_KEY for the whole
11
+ * run: the SDK prefers that env var over ~/.cursor/sdk/auth.json.
12
+ */
13
+ export declare function withCursorAuthEnv<T>(authMode: CursorAuthMode, run: () => Promise<T> | T): Promise<T>;
4
14
  export interface CursorRunOptions {
5
15
  cwd: string;
6
16
  prompt: string;
7
17
  apiKey?: string;
18
+ authMode?: CursorAuthMode;
8
19
  model?: {
9
20
  id: string;
10
21
  params?: Array<{
@@ -19,11 +30,16 @@ export interface CursorRunOptions {
19
30
  failOnUserInput?: boolean;
20
31
  /** Fires immediately before the harness deadline timer arms (after pre-stream setup). */
21
32
  onDeadlineStart?: () => void | Promise<void>;
33
+ /** Fires as the SDK streams assistant text and tool calls. */
34
+ onAgentEvent?: (event: LiveAgentEvent) => void;
35
+ /** Load `~/.cursor` user skills and settings. Default false. */
36
+ allowUserSkills?: boolean;
22
37
  }
23
38
  export interface JudgeClassifierOptions {
24
39
  cwd: string;
25
40
  prompt: string;
26
41
  apiKey?: string;
42
+ authMode?: CursorAuthMode;
27
43
  model?: {
28
44
  id: string;
29
45
  params?: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"cursor-run.d.ts","sourceRoot":"","sources":["../src/cursor-run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cursor-run.d.ts","sourceRoot":"","sources":["../src/cursor-run.ts"],"names":[],"mappings":"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"}
@@ -50,9 +50,12 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
50
50
  var e = new Error(message);
51
51
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
52
  });
53
+ import { resolveKeyOrLoginAuthMode } from "./auth-mode.js";
53
54
  import { accumulateSdkEvent, createTraceAccumulator, finalizeTraceAccumulator, normalizeAgentUsage, } from "./capture.js";
55
+ import { createLiveNotifyState, emitLiveAgentEvents } from "./live-agent-event.js";
54
56
  import { resolveMcpServers } from "./mcp.js";
55
57
  import { AgentRunTimeoutError, isUserInputTool, UserInputRequiredError, withRunTimeout, } from "./run-guards.js";
58
+ import { cursorSettingSources } from "./user-skills.js";
56
59
  /** Default local agent model; override with CURSOR_AGENT_MODEL or options.model. */
57
60
  const DEFAULT_CURSOR_MODEL = "auto";
58
61
  function judgeModelSelection(override) {
@@ -70,6 +73,38 @@ function judgeModelParamsFromEnv() {
70
73
  }
71
74
  return [{ id: "temperature", value: raw.trim() }];
72
75
  }
76
+ export const CURSOR_AUTH_MODE_ENV = "CURSOR_AUTH_MODE";
77
+ export const CURSOR_MISSING_KEY_MESSAGE = "CURSOR_API_KEY required for Cursor agent runs, or set CURSOR_AUTH_MODE=subscription after Cursor.auth.login()";
78
+ export function resolveCursorAuthMode(raw = process.env[CURSOR_AUTH_MODE_ENV], apiKey) {
79
+ return resolveKeyOrLoginAuthMode({
80
+ envName: CURSOR_AUTH_MODE_ENV,
81
+ raw,
82
+ hasApiKey: Boolean((apiKey ?? process.env.CURSOR_API_KEY)?.trim()),
83
+ missingKeyMessage: CURSOR_MISSING_KEY_MESSAGE,
84
+ });
85
+ }
86
+ /**
87
+ * In-process SDK env. Subscription mode drops CURSOR_API_KEY for the whole
88
+ * run: the SDK prefers that env var over ~/.cursor/sdk/auth.json.
89
+ */
90
+ export async function withCursorAuthEnv(authMode, run) {
91
+ if (authMode === "api-key") {
92
+ return await run();
93
+ }
94
+ const prior = process.env.CURSOR_API_KEY;
95
+ delete process.env.CURSOR_API_KEY;
96
+ try {
97
+ return await run();
98
+ }
99
+ finally {
100
+ if (prior === undefined) {
101
+ delete process.env.CURSOR_API_KEY;
102
+ }
103
+ else {
104
+ process.env.CURSOR_API_KEY = prior;
105
+ }
106
+ }
107
+ }
73
108
  /** Map Cursor SDK terminal status to harness run status. */
74
109
  export function normalizeSdkRunStatus(status) {
75
110
  return status === "finished" || status === "completed" ? "completed" : "failed";
@@ -130,126 +165,142 @@ export function takeLastCursorRunTrace() {
130
165
  }
131
166
  /** Shared Cursor SDK path — Agent.create + send + wait (runs and judge use the same surface). */
132
167
  export async function runCursorAgent(options) {
133
- const env_1 = { stack: [], error: void 0, hasError: false };
134
- try {
135
- const apiKey = options.apiKey ?? process.env.CURSOR_API_KEY;
136
- if (!apiKey) {
137
- throw new Error("CURSOR_API_KEY not set");
138
- }
139
- const sdkModule = await import("@cursor/sdk");
140
- const modelId = options.model?.id ?? process.env.CURSOR_AGENT_MODEL ?? DEFAULT_CURSOR_MODEL;
141
- const mcpServers = resolveMcpServers(options.mcpServers, {
142
- cwd: options.cwd,
143
- });
144
- const agent = __addDisposableResource(env_1, await sdkModule.Agent.create({
145
- apiKey,
146
- model: { id: modelId },
147
- local: { cwd: options.cwd },
148
- ...(mcpServers ? { mcpServers } : {}),
149
- }), true);
150
- const failOnUserInput = options.failOnUserInput !== false;
151
- const acc = createTraceAccumulator();
152
- let timedOut = false;
153
- const stashTrace = (usageOverride) => {
154
- const trace = finalizeTraceAccumulator(acc);
155
- const usage = usageOverride ?? normalizeAgentUsage(acc.usage) ?? trace.usage;
156
- const withUsage = usage ? { ...trace, usage } : trace;
157
- lastCursorRunTrace = withUsage;
158
- return withUsage;
159
- };
160
- const execute = async () => {
161
- const run = (await agent.send(options.prompt));
162
- activeCursorRun = run;
163
- if (timedOut) {
164
- cancelSdkRun(run);
165
- activeCursorRun = undefined;
166
- const timeoutError = new AgentRunTimeoutError(options.timeoutMs ?? 0);
167
- timeoutError.trace = stashTrace();
168
- throw timeoutError;
169
- }
170
- try {
171
- for await (const event of run.stream()) {
172
- accumulateSdkEvent(acc, event);
173
- if (failOnUserInput) {
168
+ const authMode = options.authMode ?? resolveCursorAuthMode(undefined, options.apiKey);
169
+ const apiKey = options.apiKey ?? process.env.CURSOR_API_KEY;
170
+ if (authMode === "api-key" && !apiKey?.trim()) {
171
+ throw new Error(CURSOR_MISSING_KEY_MESSAGE);
172
+ }
173
+ const sdkModule = await import("@cursor/sdk");
174
+ const modelId = options.model?.id ?? process.env.CURSOR_AGENT_MODEL ?? DEFAULT_CURSOR_MODEL;
175
+ const mcpServers = resolveMcpServers(options.mcpServers, {
176
+ cwd: options.cwd,
177
+ });
178
+ return withCursorAuthEnv(authMode, async () => {
179
+ const env_1 = { stack: [], error: void 0, hasError: false };
180
+ try {
181
+ const createOptions = {
182
+ model: { id: modelId },
183
+ local: {
184
+ cwd: options.cwd,
185
+ settingSources: cursorSettingSources(options.allowUserSkills === true),
186
+ },
187
+ ...(mcpServers ? { mcpServers } : {}),
188
+ ...(authMode === "api-key" && apiKey ? { apiKey } : {}),
189
+ };
190
+ const agent = __addDisposableResource(env_1, await sdkModule.Agent.create(createOptions), true);
191
+ const failOnUserInput = options.failOnUserInput !== false;
192
+ const acc = createTraceAccumulator();
193
+ const liveState = createLiveNotifyState();
194
+ let timedOut = false;
195
+ const stashTrace = (usageOverride) => {
196
+ const trace = finalizeTraceAccumulator(acc);
197
+ const usage = usageOverride ?? normalizeAgentUsage(acc.usage) ?? trace.usage;
198
+ const withUsage = usage ? { ...trace, usage } : trace;
199
+ lastCursorRunTrace = withUsage;
200
+ return withUsage;
201
+ };
202
+ const execute = async () => {
203
+ const run = (await agent.send(options.prompt));
204
+ activeCursorRun = run;
205
+ if (timedOut) {
206
+ cancelSdkRun(run);
207
+ activeCursorRun = undefined;
208
+ const timeoutError = new AgentRunTimeoutError(options.timeoutMs ?? 0);
209
+ timeoutError.trace = stashTrace();
210
+ throw timeoutError;
211
+ }
212
+ try {
213
+ for await (const event of run.stream()) {
214
+ accumulateSdkEvent(acc, event);
215
+ emitLiveAgentEvents(acc, liveState, options.onAgentEvent);
174
216
  const lastTool = acc.toolCalls.at(-1);
175
217
  if (lastTool && isUserInputTool(lastTool.name)) {
176
- const userInputError = new UserInputRequiredError(lastTool.name);
177
- userInputError.trace = stashTrace();
178
- throw userInputError;
218
+ if (failOnUserInput) {
219
+ const userInputError = new UserInputRequiredError(lastTool.name);
220
+ userInputError.trace = stashTrace();
221
+ throw userInputError;
222
+ }
223
+ cancelSdkRun(run);
224
+ return {
225
+ status: "completed",
226
+ trace: stashTrace(),
227
+ rawStatus: "user_input",
228
+ };
179
229
  }
180
230
  }
231
+ const result = await run.wait();
232
+ const rawStatus = result.status;
233
+ const status = normalizeSdkRunStatus(rawStatus);
234
+ const sdkError = extractJudgeSdkError(result.error);
235
+ // Prefer wait()/handle cumulative usage over summed stream turns when present.
236
+ const waitUsage = normalizeAgentUsage(result.usage) ?? normalizeAgentUsage(run.usage);
237
+ return {
238
+ status,
239
+ trace: stashTrace(waitUsage),
240
+ rawStatus,
241
+ sdkError,
242
+ usage: waitUsage,
243
+ };
181
244
  }
182
- const result = await run.wait();
183
- const rawStatus = result.status;
184
- const status = normalizeSdkRunStatus(rawStatus);
185
- const sdkError = extractJudgeSdkError(result.error);
186
- // Prefer wait()/handle cumulative usage over summed stream turns when present.
187
- const waitUsage = normalizeAgentUsage(result.usage) ?? normalizeAgentUsage(run.usage);
188
- return {
189
- status,
190
- trace: stashTrace(waitUsage),
191
- rawStatus,
192
- sdkError,
193
- usage: waitUsage,
194
- };
195
- }
196
- catch (error) {
197
- cancelSdkRun(run);
198
- const partial = stashTrace();
199
- if (error instanceof AgentRunTimeoutError || error instanceof UserInputRequiredError) {
200
- error.trace = error.trace ?? partial;
245
+ catch (error) {
246
+ cancelSdkRun(run);
247
+ const partial = stashTrace();
248
+ if (error instanceof AgentRunTimeoutError || error instanceof UserInputRequiredError) {
249
+ error.trace = error.trace ?? partial;
250
+ throw error;
251
+ }
201
252
  throw error;
202
253
  }
203
- throw error;
204
- }
205
- finally {
206
- if (activeCursorRun === run) {
207
- activeCursorRun = undefined;
254
+ finally {
255
+ if (activeCursorRun === run) {
256
+ activeCursorRun = undefined;
257
+ }
208
258
  }
209
- }
210
- };
211
- if (options.timeoutMs && options.timeoutMs > 0) {
212
- await options.onDeadlineStart?.();
213
- try {
214
- return await withRunTimeout(execute, options.timeoutMs, {
215
- onTimeout: () => {
216
- timedOut = true;
217
- cancelSdkRun(activeCursorRun);
218
- },
219
- });
220
- }
221
- catch (error) {
222
- if (error instanceof AgentRunTimeoutError) {
223
- error.trace = error.trace ?? takeLastCursorRunTrace();
259
+ };
260
+ if (options.timeoutMs && options.timeoutMs > 0) {
261
+ await options.onDeadlineStart?.();
262
+ try {
263
+ return await withRunTimeout(execute, options.timeoutMs, {
264
+ onTimeout: () => {
265
+ timedOut = true;
266
+ cancelSdkRun(activeCursorRun);
267
+ },
268
+ });
269
+ }
270
+ catch (error) {
271
+ if (error instanceof AgentRunTimeoutError) {
272
+ error.trace = error.trace ?? takeLastCursorRunTrace();
273
+ }
274
+ throw error;
224
275
  }
225
- throw error;
226
276
  }
277
+ return execute();
227
278
  }
228
- return execute();
229
- }
230
- catch (e_1) {
231
- env_1.error = e_1;
232
- env_1.hasError = true;
233
- }
234
- finally {
235
- const result_1 = __disposeResources(env_1);
236
- if (result_1)
237
- await result_1;
238
- }
279
+ catch (e_1) {
280
+ env_1.error = e_1;
281
+ env_1.hasError = true;
282
+ }
283
+ finally {
284
+ const result_1 = __disposeResources(env_1);
285
+ if (result_1)
286
+ await result_1;
287
+ }
288
+ });
239
289
  }
240
290
  /** Classifier-only judge path — one-shot Agent.prompt, JSON reply, temperature 0 when supported. */
241
291
  export async function runJudgeClassifier(options) {
292
+ const authMode = options.authMode ?? resolveCursorAuthMode(undefined, options.apiKey);
242
293
  const apiKey = options.apiKey ?? process.env.CURSOR_API_KEY;
243
- if (!apiKey) {
244
- throw new Error("CURSOR_API_KEY not set");
294
+ if (authMode === "api-key" && !apiKey?.trim()) {
295
+ throw new Error(CURSOR_MISSING_KEY_MESSAGE);
245
296
  }
246
297
  const sdkModule = await import("@cursor/sdk");
247
- const result = await sdkModule.Agent.prompt(options.prompt, {
248
- apiKey,
298
+ const result = await withCursorAuthEnv(authMode, () => sdkModule.Agent.prompt(options.prompt, {
299
+ ...(authMode === "api-key" && apiKey ? { apiKey } : {}),
249
300
  model: judgeModelSelection(options.model),
250
301
  name: "agent-spec-judge",
251
- local: { cwd: options.cwd },
252
- });
302
+ local: { cwd: options.cwd, settingSources: ["project"] },
303
+ }));
253
304
  const text = result.result?.trim() ?? "";
254
305
  const rawStatus = result.status;
255
306
  const status = rawStatus === "finished" ? "completed" : rawStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"cursor-run.js","sourceRoot":"","sources":["../src/cursor-run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cursor-run.js","sourceRoot":"","sources":["../src/cursor-run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { HostAdapter } from "./types.js";
2
+ import { type AgentHost } from "./types.js";
3
+ export declare function reservedHostIds(): readonly string[];
4
+ export declare function listRegisteredHosts(): AgentHost[];
5
+ export declare function getRegisteredAdapter(host: string): HostAdapter | undefined;
6
+ export declare function knownAgentHosts(): AgentHost[];
7
+ export declare function isKnownAgentHost(value: string): value is AgentHost;
8
+ export declare function clearRegisteredHostAdapters(): void;
9
+ export declare function unregisterHostAdapter(host: string): boolean;
10
+ /** Register a consumer host adapter. Builtin ids stay reserved. */
11
+ export declare function registerHostAdapter(adapter: HostAdapter): void;
12
+ //# sourceMappingURL=host-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-registry.d.ts","sourceRoot":"","sources":["../src/host-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAe,KAAK,SAAS,EAAkC,MAAM,YAAY,CAAC;AAMzF,wBAAgB,eAAe,IAAI,SAAS,MAAM,EAAE,CAEnD;AAED,wBAAgB,mBAAmB,IAAI,SAAS,EAAE,CAEjD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAE1E;AAED,wBAAgB,eAAe,IAAI,SAAS,EAAE,CAE7C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,SAAS,CAElE;AAED,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAc9D"}