@tickernelz/paperclip-pro-adapter-cursor-cloud 2026.925.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 +22 -0
- package/dist/cli/format-event.d.ts +2 -0
- package/dist/cli/format-event.d.ts.map +1 -0
- package/dist/cli/format-event.js +42 -0
- package/dist/cli/format-event.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/server/execute.d.ts +3 -0
- package/dist/server/execute.d.ts.map +1 -0
- package/dist/server/execute.js +564 -0
- package/dist/server/execute.js.map +1 -0
- package/dist/server/execute.test.d.ts +2 -0
- package/dist/server/execute.test.d.ts.map +1 -0
- package/dist/server/execute.test.js +426 -0
- package/dist/server/execute.test.js.map +1 -0
- package/dist/server/index.d.ts +6 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +68 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/session.d.ts +3 -0
- package/dist/server/session.d.ts.map +1 -0
- package/dist/server/session.js +61 -0
- package/dist/server/session.js.map +1 -0
- package/dist/server/session.test.d.ts +2 -0
- package/dist/server/session.test.d.ts.map +1 -0
- package/dist/server/session.test.js +28 -0
- package/dist/server/session.test.js.map +1 -0
- package/dist/server/test.d.ts +3 -0
- package/dist/server/test.d.ts.map +1 -0
- package/dist/server/test.js +111 -0
- package/dist/server/test.js.map +1 -0
- package/dist/ui/build-config.d.ts +3 -0
- package/dist/ui/build-config.d.ts.map +1 -0
- package/dist/ui/build-config.js +20 -0
- package/dist/ui/build-config.js.map +1 -0
- package/dist/ui/build-config.test.d.ts +2 -0
- package/dist/ui/build-config.test.d.ts.map +1 -0
- package/dist/ui/build-config.test.js +76 -0
- package/dist/ui/build-config.test.js.map +1 -0
- package/dist/ui/index.d.ts +3 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +3 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/parse-stdout.d.ts +3 -0
- package/dist/ui/parse-stdout.d.ts.map +1 -0
- package/dist/ui/parse-stdout.js +173 -0
- package/dist/ui/parse-stdout.js.map +1 -0
- package/dist/ui/parse-stdout.test.d.ts +2 -0
- package/dist/ui/parse-stdout.test.d.ts.map +1 -0
- package/dist/ui/parse-stdout.test.js +119 -0
- package/dist/ui/parse-stdout.test.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,564 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { Agent, } from "@cursor/sdk";
|
|
4
|
+
import { DEFAULT_PAPERCLIP_AGENT_PROMPT_TEMPLATE, DEFAULT_PAPERCLIP_CONVERSATION_PROMPT_TEMPLATE, asBoolean, asString, buildPaperclipEnv, buildRuntimeToolsEnv, joinPromptSections, parseObject, readPaperclipIssueWorkModeFromContext, renderPaperclipWakePrompt, selectPaperclipTaskMarkdown, selectInitialCommunicationGuidance, isPaperclipRecoveryWakePayload, renderTemplate, } from "@tickernelz/paperclip-pro-adapter-utils/server-utils";
|
|
5
|
+
function asRecord(value) {
|
|
6
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
7
|
+
return null;
|
|
8
|
+
return value;
|
|
9
|
+
}
|
|
10
|
+
function asStringEnvMap(value) {
|
|
11
|
+
const parsed = parseObject(value);
|
|
12
|
+
const env = {};
|
|
13
|
+
for (const [key, entry] of Object.entries(parsed)) {
|
|
14
|
+
if (typeof entry === "string") {
|
|
15
|
+
env[key] = entry;
|
|
16
|
+
}
|
|
17
|
+
else if (typeof entry === "object" && entry !== null && !Array.isArray(entry)) {
|
|
18
|
+
const rec = entry;
|
|
19
|
+
if (rec.type === "plain" && typeof rec.value === "string")
|
|
20
|
+
env[key] = rec.value;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return env;
|
|
24
|
+
}
|
|
25
|
+
function normalizeEnvType(raw) {
|
|
26
|
+
const value = raw.trim().toLowerCase();
|
|
27
|
+
if (value === "pool" || value === "machine")
|
|
28
|
+
return value;
|
|
29
|
+
return "cloud";
|
|
30
|
+
}
|
|
31
|
+
function trimNullable(value) {
|
|
32
|
+
return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
|
|
33
|
+
}
|
|
34
|
+
function firstNonEmptyLine(text) {
|
|
35
|
+
return (text
|
|
36
|
+
.split(/\r?\n/)
|
|
37
|
+
.map((line) => line.trim())
|
|
38
|
+
.find(Boolean) ?? "");
|
|
39
|
+
}
|
|
40
|
+
function toModelSelection(rawModel) {
|
|
41
|
+
const model = rawModel.trim();
|
|
42
|
+
return model ? { id: model } : undefined;
|
|
43
|
+
}
|
|
44
|
+
function toSummary(result) {
|
|
45
|
+
const direct = trimNullable(result.result);
|
|
46
|
+
if (direct)
|
|
47
|
+
return firstNonEmptyLine(direct);
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
function formatRunError(err) {
|
|
51
|
+
if (err instanceof Error && err.message.trim().length > 0)
|
|
52
|
+
return err.message.trim();
|
|
53
|
+
return String(err);
|
|
54
|
+
}
|
|
55
|
+
function buildWakeEnv(ctx, configEnv) {
|
|
56
|
+
const { runId, agent, context, authToken } = ctx;
|
|
57
|
+
const env = {
|
|
58
|
+
...configEnv,
|
|
59
|
+
...buildPaperclipEnv(agent),
|
|
60
|
+
...buildRuntimeToolsEnv(ctx.runtimeTools),
|
|
61
|
+
PAPERCLIP_RUN_ID: runId,
|
|
62
|
+
};
|
|
63
|
+
// PAPERCLIP_API_KEY is never accepted from config — the harness-minted run
|
|
64
|
+
// token is the only source of Paperclip API identity.
|
|
65
|
+
delete env.PAPERCLIP_API_KEY;
|
|
66
|
+
// Wake context travels in the prompt; a configured copy can exceed spawn limits.
|
|
67
|
+
delete env.PAPERCLIP_WAKE_PAYLOAD_JSON;
|
|
68
|
+
const wakeTaskId = trimNullable(context.taskId) ?? trimNullable(context.issueId);
|
|
69
|
+
const wakeReason = trimNullable(context.wakeReason);
|
|
70
|
+
const wakeCommentId = trimNullable(context.wakeCommentId) ?? trimNullable(context.commentId);
|
|
71
|
+
const approvalId = trimNullable(context.approvalId);
|
|
72
|
+
const approvalStatus = trimNullable(context.approvalStatus);
|
|
73
|
+
const linkedIssueIds = Array.isArray(context.issueIds)
|
|
74
|
+
? context.issueIds.filter((value) => typeof value === "string" && value.trim().length > 0)
|
|
75
|
+
: [];
|
|
76
|
+
const issueWorkMode = readPaperclipIssueWorkModeFromContext(context);
|
|
77
|
+
if (wakeTaskId)
|
|
78
|
+
env.PAPERCLIP_TASK_ID = wakeTaskId;
|
|
79
|
+
if (wakeReason)
|
|
80
|
+
env.PAPERCLIP_WAKE_REASON = wakeReason;
|
|
81
|
+
if (wakeCommentId)
|
|
82
|
+
env.PAPERCLIP_WAKE_COMMENT_ID = wakeCommentId;
|
|
83
|
+
if (approvalId)
|
|
84
|
+
env.PAPERCLIP_APPROVAL_ID = approvalId;
|
|
85
|
+
if (approvalStatus)
|
|
86
|
+
env.PAPERCLIP_APPROVAL_STATUS = approvalStatus;
|
|
87
|
+
if (linkedIssueIds.length > 0)
|
|
88
|
+
env.PAPERCLIP_LINKED_ISSUE_IDS = linkedIssueIds.join(",");
|
|
89
|
+
if (issueWorkMode)
|
|
90
|
+
env.PAPERCLIP_ISSUE_WORK_MODE = issueWorkMode;
|
|
91
|
+
if (authToken) {
|
|
92
|
+
env.PAPERCLIP_API_KEY = authToken;
|
|
93
|
+
}
|
|
94
|
+
// cursor_cloud runs remotely in Cursor's cloud and is intentionally not
|
|
95
|
+
// issued a Paperclip run JWT (registry: supportsLocalAgentJwt=false).
|
|
96
|
+
// buildPaperclipEnv always sets PAPERCLIP_API_URL, defaulting to the local
|
|
97
|
+
// runtime host — which a remote worker can neither reach nor authenticate
|
|
98
|
+
// against, so any agent-initiated Paperclip API call would fail with a 401
|
|
99
|
+
// (or be unreachable) and add noise. When there is no usable key, drop the
|
|
100
|
+
// callback wiring so cloud-side Paperclip tools degrade to a clean no-op.
|
|
101
|
+
// Run results are delivered server-side via the Cursor Agent SDK (getRun /
|
|
102
|
+
// wait), not through this callback, so nothing is lost.
|
|
103
|
+
if (!trimNullable(env.PAPERCLIP_API_KEY)) {
|
|
104
|
+
delete env.PAPERCLIP_API_URL;
|
|
105
|
+
delete env.PAPERCLIP_API_BRIDGE_MODE;
|
|
106
|
+
}
|
|
107
|
+
const workspace = parseObject(context.paperclipWorkspace);
|
|
108
|
+
const workspaceMappings = [
|
|
109
|
+
["PAPERCLIP_WORKSPACE_CWD", workspace.cwd],
|
|
110
|
+
["PAPERCLIP_WORKSPACE_SOURCE", workspace.source],
|
|
111
|
+
["PAPERCLIP_WORKSPACE_ID", workspace.workspaceId],
|
|
112
|
+
["PAPERCLIP_WORKSPACE_REPO_URL", workspace.repoUrl],
|
|
113
|
+
["PAPERCLIP_WORKSPACE_REPO_REF", workspace.repoRef],
|
|
114
|
+
["PAPERCLIP_WORKSPACE_BRANCH", workspace.branch],
|
|
115
|
+
["PAPERCLIP_WORKSPACE_WORKTREE_PATH", workspace.worktreePath],
|
|
116
|
+
["AGENT_HOME", workspace.agentHome],
|
|
117
|
+
];
|
|
118
|
+
for (const [key, value] of workspaceMappings) {
|
|
119
|
+
const normalized = trimNullable(value);
|
|
120
|
+
if (normalized)
|
|
121
|
+
env[key] = normalized;
|
|
122
|
+
}
|
|
123
|
+
delete env.CURSOR_API_KEY;
|
|
124
|
+
// Cursor rejects the entire request when any envVars value is empty.
|
|
125
|
+
// Paperclip may use empty values to unset optional host credentials; remote
|
|
126
|
+
// workers do not inherit those host variables, so omit the empty entries.
|
|
127
|
+
return Object.fromEntries(Object.entries(env).filter(([, value]) => value.length > 0));
|
|
128
|
+
}
|
|
129
|
+
async function buildInstructionsPrefix(config, onLog) {
|
|
130
|
+
const instructionsFilePath = asString(config.instructionsFilePath, "").trim();
|
|
131
|
+
if (!instructionsFilePath) {
|
|
132
|
+
return { prefix: "", notes: [], chars: 0 };
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
const contents = await fs.readFile(instructionsFilePath, "utf8");
|
|
136
|
+
const instructionsDir = `${path.dirname(instructionsFilePath)}/`;
|
|
137
|
+
const prefix = `${contents.trim()}\n\nThe above agent instructions were loaded from ${instructionsFilePath}. Resolve any relative file references from ${instructionsDir}.\n`;
|
|
138
|
+
return {
|
|
139
|
+
prefix,
|
|
140
|
+
chars: prefix.length,
|
|
141
|
+
notes: [
|
|
142
|
+
`Loaded agent instructions from ${instructionsFilePath}`,
|
|
143
|
+
`Prepended instructions + path directive to prompt (relative references from ${instructionsDir}).`,
|
|
144
|
+
],
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
149
|
+
await onLog("stderr", `[paperclip] Warning: could not read agent instructions file "${instructionsFilePath}": ${reason}\n`);
|
|
150
|
+
return {
|
|
151
|
+
prefix: "",
|
|
152
|
+
chars: 0,
|
|
153
|
+
notes: [
|
|
154
|
+
`Configured instructionsFilePath ${instructionsFilePath}, but file could not be read; continuing without injected instructions.`,
|
|
155
|
+
],
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
function renderPaperclipEnvNote(env) {
|
|
160
|
+
const keys = Object.keys(env)
|
|
161
|
+
.filter((key) => key.startsWith("PAPERCLIP_"))
|
|
162
|
+
.sort();
|
|
163
|
+
if (keys.length === 0)
|
|
164
|
+
return "";
|
|
165
|
+
return [
|
|
166
|
+
"Paperclip runtime note:",
|
|
167
|
+
`The following PAPERCLIP_* environment variables are available in the cloud agent shell: ${keys.join(", ")}`,
|
|
168
|
+
"Use them directly instead of assuming they are absent.",
|
|
169
|
+
].join("\n");
|
|
170
|
+
}
|
|
171
|
+
function readSession(params) {
|
|
172
|
+
if (!params)
|
|
173
|
+
return null;
|
|
174
|
+
const record = asRecord(params);
|
|
175
|
+
if (!record)
|
|
176
|
+
return null;
|
|
177
|
+
const cursorAgentId = trimNullable(record.cursorAgentId) ??
|
|
178
|
+
trimNullable(record.agentId) ??
|
|
179
|
+
trimNullable(record.sessionId);
|
|
180
|
+
if (!cursorAgentId)
|
|
181
|
+
return null;
|
|
182
|
+
const latestRunId = trimNullable(record.latestRunId) ?? trimNullable(record.runId) ?? undefined;
|
|
183
|
+
const envType = trimNullable(record.envType);
|
|
184
|
+
const envName = trimNullable(record.envName);
|
|
185
|
+
const reposValue = Array.isArray(record.repos) ? record.repos : [];
|
|
186
|
+
const repos = reposValue
|
|
187
|
+
.map((entry) => asRecord(entry))
|
|
188
|
+
.filter((entry) => Boolean(entry))
|
|
189
|
+
.map((entry) => ({
|
|
190
|
+
url: asString(entry.url, "").trim(),
|
|
191
|
+
startingRef: trimNullable(entry.startingRef) ?? undefined,
|
|
192
|
+
prUrl: trimNullable(entry.prUrl) ?? undefined,
|
|
193
|
+
}))
|
|
194
|
+
.filter((entry) => entry.url.length > 0);
|
|
195
|
+
return {
|
|
196
|
+
cursorAgentId,
|
|
197
|
+
...(latestRunId ? { latestRunId } : {}),
|
|
198
|
+
runtime: "cloud",
|
|
199
|
+
...(envType ? { envType: normalizeEnvType(envType) } : {}),
|
|
200
|
+
...(envName ? { envName } : {}),
|
|
201
|
+
repos,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
function sessionMatches(session, envType, envName, repos) {
|
|
205
|
+
if (!session)
|
|
206
|
+
return false;
|
|
207
|
+
if ((session.envType ?? "cloud") !== envType)
|
|
208
|
+
return false;
|
|
209
|
+
if ((session.envName ?? null) !== envName)
|
|
210
|
+
return false;
|
|
211
|
+
if (session.repos.length !== repos.length)
|
|
212
|
+
return false;
|
|
213
|
+
return session.repos.every((repo, index) => {
|
|
214
|
+
const next = repos[index];
|
|
215
|
+
return repo.url === next.url
|
|
216
|
+
&& (repo.startingRef ?? null) === (next.startingRef ?? null)
|
|
217
|
+
&& (repo.prUrl ?? null) === (next.prUrl ?? null);
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
function buildAgentOptions(input) {
|
|
221
|
+
return {
|
|
222
|
+
apiKey: input.apiKey,
|
|
223
|
+
name: input.name,
|
|
224
|
+
...(input.model ? { model: input.model } : {}),
|
|
225
|
+
cloud: {
|
|
226
|
+
env: {
|
|
227
|
+
type: input.envType,
|
|
228
|
+
...(input.envName ? { name: input.envName } : {}),
|
|
229
|
+
},
|
|
230
|
+
repos: input.repos,
|
|
231
|
+
workOnCurrentBranch: input.workOnCurrentBranch,
|
|
232
|
+
autoCreatePR: input.autoCreatePR,
|
|
233
|
+
skipReviewerRequest: input.skipReviewerRequest,
|
|
234
|
+
envVars: input.envVars,
|
|
235
|
+
},
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
function eventLine(event) {
|
|
239
|
+
return `${JSON.stringify(event)}\n`;
|
|
240
|
+
}
|
|
241
|
+
async function emitMessage(onLog, message) {
|
|
242
|
+
await onLog("stdout", eventLine({ type: "cursor_cloud.message", message }));
|
|
243
|
+
}
|
|
244
|
+
async function emitStatus(onLog, status, message) {
|
|
245
|
+
await onLog("stdout", eventLine({ type: "cursor_cloud.status", status, ...(message ? { message } : {}) }));
|
|
246
|
+
}
|
|
247
|
+
async function streamRun(run, onLog) {
|
|
248
|
+
if (!run.supports("stream"))
|
|
249
|
+
return;
|
|
250
|
+
for await (const message of run.stream()) {
|
|
251
|
+
await emitMessage(onLog, message);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
async function getAttachedRun(input) {
|
|
255
|
+
const latestRunId = input.session?.latestRunId;
|
|
256
|
+
const cursorAgentId = input.session?.cursorAgentId;
|
|
257
|
+
if (!latestRunId || !cursorAgentId)
|
|
258
|
+
return null;
|
|
259
|
+
try {
|
|
260
|
+
const run = await Agent.getRun(latestRunId, {
|
|
261
|
+
runtime: "cloud",
|
|
262
|
+
agentId: cursorAgentId,
|
|
263
|
+
apiKey: input.apiKey,
|
|
264
|
+
});
|
|
265
|
+
return run.status === "running" ? run : null;
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
export async function execute(ctx) {
|
|
272
|
+
const { runId, agent, runtime, config, context, onLog, onMeta, onDispatch } = ctx;
|
|
273
|
+
const envConfig = asStringEnvMap(config.env);
|
|
274
|
+
const apiKey = asString(envConfig.CURSOR_API_KEY, "").trim();
|
|
275
|
+
if (!apiKey) {
|
|
276
|
+
return {
|
|
277
|
+
exitCode: 1,
|
|
278
|
+
signal: null,
|
|
279
|
+
timedOut: false,
|
|
280
|
+
errorMessage: "CURSOR_API_KEY is required for cursor_cloud.",
|
|
281
|
+
provider: "cursor",
|
|
282
|
+
biller: "cursor",
|
|
283
|
+
billingType: "api",
|
|
284
|
+
clearSession: false,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
const workspace = parseObject(context.paperclipWorkspace);
|
|
288
|
+
const repoUrl = asString(config.repoUrl, "").trim() ||
|
|
289
|
+
asString(workspace.repoUrl, "").trim();
|
|
290
|
+
if (!repoUrl) {
|
|
291
|
+
return {
|
|
292
|
+
exitCode: 1,
|
|
293
|
+
signal: null,
|
|
294
|
+
timedOut: false,
|
|
295
|
+
errorMessage: "cursor_cloud requires repoUrl in adapterConfig or workspace context.",
|
|
296
|
+
provider: "cursor",
|
|
297
|
+
biller: "cursor",
|
|
298
|
+
billingType: "api",
|
|
299
|
+
clearSession: false,
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
const repoStartingRef = trimNullable(config.repoStartingRef) ??
|
|
303
|
+
trimNullable(workspace.repoRef) ??
|
|
304
|
+
undefined;
|
|
305
|
+
const repoPullRequestUrl = trimNullable(config.repoPullRequestUrl) ?? undefined;
|
|
306
|
+
const envType = normalizeEnvType(asString(config.runtimeEnvType, "cloud"));
|
|
307
|
+
const envName = trimNullable(config.runtimeEnvName);
|
|
308
|
+
const workOnCurrentBranch = asBoolean(config.workOnCurrentBranch, false);
|
|
309
|
+
const autoCreatePR = asBoolean(config.autoCreatePR, false);
|
|
310
|
+
const skipReviewerRequest = asBoolean(config.skipReviewerRequest, false);
|
|
311
|
+
const model = toModelSelection(asString(config.model, ""));
|
|
312
|
+
const repos = [{
|
|
313
|
+
url: repoUrl,
|
|
314
|
+
...(repoStartingRef ? { startingRef: repoStartingRef } : {}),
|
|
315
|
+
...(repoPullRequestUrl ? { prUrl: repoPullRequestUrl } : {}),
|
|
316
|
+
}];
|
|
317
|
+
const remoteEnv = buildWakeEnv(ctx, envConfig);
|
|
318
|
+
const session = readSession(runtime.sessionParams) ?? (runtime.sessionId
|
|
319
|
+
? {
|
|
320
|
+
cursorAgentId: runtime.sessionId,
|
|
321
|
+
runtime: "cloud",
|
|
322
|
+
repos,
|
|
323
|
+
}
|
|
324
|
+
: null);
|
|
325
|
+
const canReuseSession = sessionMatches(session, envType, envName, repos);
|
|
326
|
+
const promptTemplate = asString(config.promptTemplate, context.conversationMode === true
|
|
327
|
+
? DEFAULT_PAPERCLIP_CONVERSATION_PROMPT_TEMPLATE
|
|
328
|
+
: DEFAULT_PAPERCLIP_AGENT_PROMPT_TEMPLATE);
|
|
329
|
+
const bootstrapPromptTemplate = asString(config.bootstrapPromptTemplate, "");
|
|
330
|
+
const templateData = {
|
|
331
|
+
agentId: agent.id,
|
|
332
|
+
companyId: agent.companyId,
|
|
333
|
+
runId,
|
|
334
|
+
company: { id: agent.companyId },
|
|
335
|
+
agent,
|
|
336
|
+
run: { id: runId, source: "on_demand" },
|
|
337
|
+
context,
|
|
338
|
+
};
|
|
339
|
+
const instructions = await buildInstructionsPrefix(config, onLog);
|
|
340
|
+
const taskContextNote = context.conversationMode === true
|
|
341
|
+
? selectPaperclipTaskMarkdown(context, { resumedSession: canReuseSession, includeCommunicationGuidance: false })
|
|
342
|
+
: "";
|
|
343
|
+
const wakePrompt = renderPaperclipWakePrompt(context.paperclipWake, {
|
|
344
|
+
conversationMode: context.conversationMode === true,
|
|
345
|
+
resumedSession: canReuseSession,
|
|
346
|
+
suppressIssueDescription: taskContextNote.length > 0,
|
|
347
|
+
});
|
|
348
|
+
const renderedBootstrapPrompt = !canReuseSession && bootstrapPromptTemplate.trim().length > 0
|
|
349
|
+
? renderTemplate(bootstrapPromptTemplate, templateData).trim()
|
|
350
|
+
: "";
|
|
351
|
+
const renderedPrompt = (canReuseSession && wakePrompt.length > 0) || isPaperclipRecoveryWakePayload(context.paperclipWake)
|
|
352
|
+
? ""
|
|
353
|
+
: renderTemplate(promptTemplate, templateData).trim();
|
|
354
|
+
const paperclipEnvNote = renderPaperclipEnvNote(remoteEnv);
|
|
355
|
+
const prompt = joinPromptSections([
|
|
356
|
+
selectInitialCommunicationGuidance(context, { resumedSession: canReuseSession }),
|
|
357
|
+
instructions.prefix,
|
|
358
|
+
renderedBootstrapPrompt,
|
|
359
|
+
wakePrompt,
|
|
360
|
+
taskContextNote,
|
|
361
|
+
paperclipEnvNote,
|
|
362
|
+
renderedPrompt,
|
|
363
|
+
]);
|
|
364
|
+
const sessionHandoffNote = asString(context.paperclipSessionHandoffMarkdown, "").trim();
|
|
365
|
+
const finalPrompt = joinPromptSections([prompt, sessionHandoffNote]);
|
|
366
|
+
const agentOptions = buildAgentOptions({
|
|
367
|
+
apiKey,
|
|
368
|
+
name: `Paperclip ${agent.name}`,
|
|
369
|
+
model,
|
|
370
|
+
envType,
|
|
371
|
+
envName,
|
|
372
|
+
repos,
|
|
373
|
+
workOnCurrentBranch,
|
|
374
|
+
autoCreatePR,
|
|
375
|
+
skipReviewerRequest,
|
|
376
|
+
envVars: remoteEnv,
|
|
377
|
+
});
|
|
378
|
+
const commandNotes = [
|
|
379
|
+
...instructions.notes,
|
|
380
|
+
canReuseSession
|
|
381
|
+
? `Reusing Cursor cloud agent session ${session?.cursorAgentId ?? "unknown"}`
|
|
382
|
+
: "Creating a new Cursor cloud agent session",
|
|
383
|
+
`Repository: ${repoUrl}${repoStartingRef ? ` @ ${repoStartingRef}` : ""}`,
|
|
384
|
+
`Runtime target: ${envType}${envName ? ` (${envName})` : ""}`,
|
|
385
|
+
];
|
|
386
|
+
if (onMeta) {
|
|
387
|
+
const meta = {
|
|
388
|
+
adapterType: "cursor_cloud",
|
|
389
|
+
command: "@cursor/sdk",
|
|
390
|
+
commandNotes,
|
|
391
|
+
prompt: finalPrompt,
|
|
392
|
+
promptMetrics: {
|
|
393
|
+
promptChars: finalPrompt.length,
|
|
394
|
+
instructionsChars: instructions.chars,
|
|
395
|
+
bootstrapPromptChars: renderedBootstrapPrompt.length,
|
|
396
|
+
wakePromptChars: wakePrompt.length,
|
|
397
|
+
taskContextChars: taskContextNote.length,
|
|
398
|
+
heartbeatPromptChars: renderedPrompt.length,
|
|
399
|
+
},
|
|
400
|
+
context: {
|
|
401
|
+
cursorCloud: {
|
|
402
|
+
envType,
|
|
403
|
+
envName,
|
|
404
|
+
repoUrl,
|
|
405
|
+
repoStartingRef,
|
|
406
|
+
repoPullRequestUrl,
|
|
407
|
+
canReuseSession,
|
|
408
|
+
},
|
|
409
|
+
},
|
|
410
|
+
};
|
|
411
|
+
await onMeta(meta);
|
|
412
|
+
}
|
|
413
|
+
let sdkAgent = null;
|
|
414
|
+
let run = null;
|
|
415
|
+
let streamError = null;
|
|
416
|
+
try {
|
|
417
|
+
// This adapter has no local child process, so crossing into the first SDK
|
|
418
|
+
// request is its dispatch boundary. Report it before any potentially
|
|
419
|
+
// long-running remote reattach/create/send operation.
|
|
420
|
+
onDispatch?.();
|
|
421
|
+
const attachedRun = canReuseSession
|
|
422
|
+
? await getAttachedRun({ apiKey, session })
|
|
423
|
+
: null;
|
|
424
|
+
if (attachedRun) {
|
|
425
|
+
await emitStatus(onLog, "running", `Reattached to existing Cursor run ${attachedRun.id}.`);
|
|
426
|
+
await onLog("stdout", eventLine({
|
|
427
|
+
type: "cursor_cloud.init",
|
|
428
|
+
sessionId: attachedRun.agentId,
|
|
429
|
+
agentId: attachedRun.agentId,
|
|
430
|
+
runId: attachedRun.id,
|
|
431
|
+
...(model?.id ? { model: model.id } : {}),
|
|
432
|
+
}));
|
|
433
|
+
const priorStreamPromise = streamRun(attachedRun, onLog).catch((err) => {
|
|
434
|
+
streamError = formatRunError(err);
|
|
435
|
+
});
|
|
436
|
+
if (attachedRun.supports("wait"))
|
|
437
|
+
await attachedRun.wait();
|
|
438
|
+
await priorStreamPromise;
|
|
439
|
+
streamError = null;
|
|
440
|
+
await emitStatus(onLog, "running", `Prior Cursor run ${attachedRun.id} finished; sending heartbeat follow-up so this wake's context is not dropped.`);
|
|
441
|
+
}
|
|
442
|
+
sdkAgent = canReuseSession && session
|
|
443
|
+
? await Agent.resume(session.cursorAgentId, agentOptions)
|
|
444
|
+
: await Agent.create(agentOptions);
|
|
445
|
+
run = await sdkAgent.send(finalPrompt, {
|
|
446
|
+
...(model ? { model } : {}),
|
|
447
|
+
});
|
|
448
|
+
await onLog("stdout", eventLine({
|
|
449
|
+
type: "cursor_cloud.init",
|
|
450
|
+
sessionId: sdkAgent.agentId,
|
|
451
|
+
agentId: sdkAgent.agentId,
|
|
452
|
+
runId: run.id,
|
|
453
|
+
...(model?.id ? { model: model.id } : {}),
|
|
454
|
+
}));
|
|
455
|
+
await emitStatus(onLog, "running", `Started Cursor run ${run.id}.`);
|
|
456
|
+
const streamPromise = streamRun(run, onLog).catch((err) => {
|
|
457
|
+
streamError = formatRunError(err);
|
|
458
|
+
});
|
|
459
|
+
const result = run.supports("wait")
|
|
460
|
+
? await run.wait()
|
|
461
|
+
: {
|
|
462
|
+
id: run.id,
|
|
463
|
+
status: run.status === "running" ? "error" : run.status,
|
|
464
|
+
result: run.result,
|
|
465
|
+
model: run.model,
|
|
466
|
+
durationMs: run.durationMs,
|
|
467
|
+
git: run.git,
|
|
468
|
+
};
|
|
469
|
+
await streamPromise;
|
|
470
|
+
const modelId = result.model?.id ?? model?.id ?? null;
|
|
471
|
+
await onLog("stdout", eventLine({
|
|
472
|
+
type: "cursor_cloud.result",
|
|
473
|
+
status: result.status,
|
|
474
|
+
...(result.result ? { result: result.result } : {}),
|
|
475
|
+
...(modelId ? { model: modelId } : {}),
|
|
476
|
+
...(typeof result.durationMs === "number" ? { durationMs: result.durationMs } : {}),
|
|
477
|
+
...(result.git ? { git: result.git } : {}),
|
|
478
|
+
...(streamError ? { error: streamError } : {}),
|
|
479
|
+
}));
|
|
480
|
+
const nextSession = {
|
|
481
|
+
cursorAgentId: run.agentId,
|
|
482
|
+
latestRunId: result.id,
|
|
483
|
+
runtime: "cloud",
|
|
484
|
+
envType,
|
|
485
|
+
...(envName ? { envName } : {}),
|
|
486
|
+
repos,
|
|
487
|
+
};
|
|
488
|
+
const isError = result.status !== "finished";
|
|
489
|
+
return {
|
|
490
|
+
exitCode: isError ? 1 : 0,
|
|
491
|
+
signal: null,
|
|
492
|
+
timedOut: false,
|
|
493
|
+
errorMessage: isError ? (trimNullable(result.result) ?? streamError ?? `Cursor run ${result.status}`) : null,
|
|
494
|
+
sessionId: run.agentId,
|
|
495
|
+
sessionDisplayId: run.agentId,
|
|
496
|
+
sessionParams: nextSession,
|
|
497
|
+
provider: "cursor",
|
|
498
|
+
biller: "cursor",
|
|
499
|
+
billingType: "api",
|
|
500
|
+
model: modelId,
|
|
501
|
+
costUsd: null,
|
|
502
|
+
summary: toSummary(result),
|
|
503
|
+
resultJson: {
|
|
504
|
+
status: result.status,
|
|
505
|
+
cursorAgentId: run.agentId,
|
|
506
|
+
cursorRunId: result.id,
|
|
507
|
+
envType,
|
|
508
|
+
envName,
|
|
509
|
+
repos,
|
|
510
|
+
...(result.result ? { result: result.result } : {}),
|
|
511
|
+
...(result.git ? { git: result.git } : {}),
|
|
512
|
+
...(typeof result.durationMs === "number" ? { durationMs: result.durationMs } : {}),
|
|
513
|
+
...(streamError ? { streamError } : {}),
|
|
514
|
+
},
|
|
515
|
+
clearSession: false,
|
|
516
|
+
};
|
|
517
|
+
}
|
|
518
|
+
catch (err) {
|
|
519
|
+
const error = formatRunError(err);
|
|
520
|
+
const reason = !model && error.includes("[invalid_model]")
|
|
521
|
+
? `${error} Cursor rejected its configured default model. Choose an available default at https://cursor.com/dashboard/cloud-agents or set this agent's model explicitly.`
|
|
522
|
+
: error.includes("Failed to determine repository default branch")
|
|
523
|
+
? `${error} Verify that Cursor's GitHub integration can access ${repoUrl} at https://cursor.com/dashboard/cloud-agents. If the repository has no default branch, configure a starting branch for this agent.`
|
|
524
|
+
: error;
|
|
525
|
+
if (run) {
|
|
526
|
+
await onLog("stdout", eventLine({
|
|
527
|
+
type: "cursor_cloud.result",
|
|
528
|
+
status: "error",
|
|
529
|
+
error: reason,
|
|
530
|
+
}));
|
|
531
|
+
}
|
|
532
|
+
return {
|
|
533
|
+
exitCode: 1,
|
|
534
|
+
signal: null,
|
|
535
|
+
timedOut: false,
|
|
536
|
+
errorMessage: reason,
|
|
537
|
+
sessionId: session?.cursorAgentId ?? null,
|
|
538
|
+
sessionDisplayId: session?.cursorAgentId ?? null,
|
|
539
|
+
sessionParams: session,
|
|
540
|
+
provider: "cursor",
|
|
541
|
+
biller: "cursor",
|
|
542
|
+
billingType: "api",
|
|
543
|
+
costUsd: null,
|
|
544
|
+
clearSession: false,
|
|
545
|
+
resultJson: {
|
|
546
|
+
status: "error",
|
|
547
|
+
...(run ? { cursorRunId: run.id } : {}),
|
|
548
|
+
...(session?.cursorAgentId ? { cursorAgentId: session.cursorAgentId } : {}),
|
|
549
|
+
error: reason,
|
|
550
|
+
},
|
|
551
|
+
};
|
|
552
|
+
}
|
|
553
|
+
finally {
|
|
554
|
+
if (sdkAgent) {
|
|
555
|
+
try {
|
|
556
|
+
await sdkAgent[Symbol.asyncDispose]();
|
|
557
|
+
}
|
|
558
|
+
catch {
|
|
559
|
+
// Best effort only.
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
//# sourceMappingURL=execute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/server/execute.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute.test.d.ts","sourceRoot":"","sources":["../../src/server/execute.test.ts"],"names":[],"mappings":""}
|