@paperclipai/adapter-cursor-local 0.3.0-canary.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.
Files changed (54) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cli/format-event.d.ts +2 -0
  3. package/dist/cli/format-event.d.ts.map +1 -0
  4. package/dist/cli/format-event.js +296 -0
  5. package/dist/cli/format-event.js.map +1 -0
  6. package/dist/cli/index.d.ts +2 -0
  7. package/dist/cli/index.d.ts.map +1 -0
  8. package/dist/cli/index.js +2 -0
  9. package/dist/cli/index.js.map +1 -0
  10. package/dist/index.d.ts +9 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +81 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/server/execute.d.ts +10 -0
  15. package/dist/server/execute.d.ts.map +1 -0
  16. package/dist/server/execute.js +392 -0
  17. package/dist/server/execute.js.map +1 -0
  18. package/dist/server/execute.skills.test.d.ts +2 -0
  19. package/dist/server/execute.skills.test.d.ts.map +1 -0
  20. package/dist/server/execute.skills.test.js +79 -0
  21. package/dist/server/execute.skills.test.js.map +1 -0
  22. package/dist/server/index.d.ts +6 -0
  23. package/dist/server/index.d.ts.map +1 -0
  24. package/dist/server/index.js +61 -0
  25. package/dist/server/index.js.map +1 -0
  26. package/dist/server/parse.d.ts +13 -0
  27. package/dist/server/parse.d.ts.map +1 -0
  28. package/dist/server/parse.js +139 -0
  29. package/dist/server/parse.js.map +1 -0
  30. package/dist/server/test.d.ts +3 -0
  31. package/dist/server/test.d.ts.map +1 -0
  32. package/dist/server/test.js +188 -0
  33. package/dist/server/test.js.map +1 -0
  34. package/dist/shared/stream.d.ts +5 -0
  35. package/dist/shared/stream.d.ts.map +1 -0
  36. package/dist/shared/stream.js +13 -0
  37. package/dist/shared/stream.js.map +1 -0
  38. package/dist/shared/trust.d.ts +2 -0
  39. package/dist/shared/trust.d.ts.map +1 -0
  40. package/dist/shared/trust.js +7 -0
  41. package/dist/shared/trust.js.map +1 -0
  42. package/dist/ui/build-config.d.ts +3 -0
  43. package/dist/ui/build-config.d.ts.map +1 -0
  44. package/dist/ui/build-config.js +90 -0
  45. package/dist/ui/build-config.js.map +1 -0
  46. package/dist/ui/index.d.ts +3 -0
  47. package/dist/ui/index.d.ts.map +1 -0
  48. package/dist/ui/index.js +3 -0
  49. package/dist/ui/index.js.map +1 -0
  50. package/dist/ui/parse-stdout.d.ts +3 -0
  51. package/dist/ui/parse-stdout.d.ts.map +1 -0
  52. package/dist/ui/parse-stdout.js +367 -0
  53. package/dist/ui/parse-stdout.js.map +1 -0
  54. package/package.json +45 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Paperclip AI
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,2 @@
1
+ export declare function printCursorStreamEvent(raw: string, _debug: boolean): void;
2
+ //# sourceMappingURL=format-event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-event.d.ts","sourceRoot":"","sources":["../../src/cli/format-event.ts"],"names":[],"mappings":"AAqMA,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAuHzE"}
@@ -0,0 +1,296 @@
1
+ import pc from "picocolors";
2
+ import { normalizeCursorStreamLine } from "../shared/stream.js";
3
+ function asRecord(value) {
4
+ if (typeof value !== "object" || value === null || Array.isArray(value))
5
+ return null;
6
+ return value;
7
+ }
8
+ function asString(value, fallback = "") {
9
+ return typeof value === "string" ? value : fallback;
10
+ }
11
+ function asNumber(value, fallback = 0) {
12
+ return typeof value === "number" && Number.isFinite(value) ? value : fallback;
13
+ }
14
+ function stringifyUnknown(value) {
15
+ if (typeof value === "string")
16
+ return value;
17
+ if (value === null || value === undefined)
18
+ return "";
19
+ try {
20
+ return JSON.stringify(value, null, 2);
21
+ }
22
+ catch {
23
+ return String(value);
24
+ }
25
+ }
26
+ function printUserMessage(messageRaw) {
27
+ if (typeof messageRaw === "string") {
28
+ const text = messageRaw.trim();
29
+ if (text)
30
+ console.log(pc.gray(`user: ${text}`));
31
+ return;
32
+ }
33
+ const message = asRecord(messageRaw);
34
+ if (!message)
35
+ return;
36
+ const directText = asString(message.text).trim();
37
+ if (directText)
38
+ console.log(pc.gray(`user: ${directText}`));
39
+ const content = Array.isArray(message.content) ? message.content : [];
40
+ for (const partRaw of content) {
41
+ const part = asRecord(partRaw);
42
+ if (!part)
43
+ continue;
44
+ const type = asString(part.type).trim();
45
+ if (type !== "output_text" && type !== "text")
46
+ continue;
47
+ const text = asString(part.text).trim();
48
+ if (text)
49
+ console.log(pc.gray(`user: ${text}`));
50
+ }
51
+ }
52
+ function printAssistantMessage(messageRaw) {
53
+ if (typeof messageRaw === "string") {
54
+ const text = messageRaw.trim();
55
+ if (text)
56
+ console.log(pc.green(`assistant: ${text}`));
57
+ return;
58
+ }
59
+ const message = asRecord(messageRaw);
60
+ if (!message)
61
+ return;
62
+ const directText = asString(message.text).trim();
63
+ if (directText)
64
+ console.log(pc.green(`assistant: ${directText}`));
65
+ const content = Array.isArray(message.content) ? message.content : [];
66
+ for (const partRaw of content) {
67
+ const part = asRecord(partRaw);
68
+ if (!part)
69
+ continue;
70
+ const type = asString(part.type).trim();
71
+ if (type === "output_text" || type === "text") {
72
+ const text = asString(part.text).trim();
73
+ if (text)
74
+ console.log(pc.green(`assistant: ${text}`));
75
+ continue;
76
+ }
77
+ if (type === "thinking") {
78
+ const text = asString(part.text).trim();
79
+ if (text)
80
+ console.log(pc.gray(`thinking: ${text}`));
81
+ continue;
82
+ }
83
+ if (type === "tool_call") {
84
+ const name = asString(part.name, asString(part.tool, "tool"));
85
+ console.log(pc.yellow(`tool_call: ${name}`));
86
+ const input = part.input ?? part.arguments ?? part.args;
87
+ if (input !== undefined) {
88
+ try {
89
+ console.log(pc.gray(JSON.stringify(input, null, 2)));
90
+ }
91
+ catch {
92
+ console.log(pc.gray(String(input)));
93
+ }
94
+ }
95
+ continue;
96
+ }
97
+ if (type === "tool_result") {
98
+ const isError = part.is_error === true || asString(part.status).toLowerCase() === "error";
99
+ const contentText = asString(part.output) ||
100
+ asString(part.text) ||
101
+ asString(part.result) ||
102
+ stringifyUnknown(part.output ?? part.result ?? part.text ?? part);
103
+ console.log((isError ? pc.red : pc.cyan)(`tool_result${isError ? " (error)" : ""}`));
104
+ if (contentText)
105
+ console.log((isError ? pc.red : pc.gray)(contentText));
106
+ }
107
+ }
108
+ }
109
+ function printToolCallEventTopLevel(parsed) {
110
+ const subtype = asString(parsed.subtype).trim().toLowerCase();
111
+ const callId = asString(parsed.call_id, asString(parsed.callId, asString(parsed.id, "")));
112
+ const toolCall = asRecord(parsed.tool_call ?? parsed.toolCall);
113
+ if (!toolCall) {
114
+ console.log(pc.yellow(`tool_call${subtype ? `: ${subtype}` : ""}`));
115
+ return;
116
+ }
117
+ const [toolName] = Object.keys(toolCall);
118
+ if (!toolName) {
119
+ console.log(pc.yellow(`tool_call${subtype ? `: ${subtype}` : ""}`));
120
+ return;
121
+ }
122
+ const payload = asRecord(toolCall[toolName]) ?? {};
123
+ const args = payload.args ?? asRecord(payload.function)?.arguments;
124
+ const result = payload.result ??
125
+ payload.output ??
126
+ payload.error ??
127
+ asRecord(payload.function)?.result ??
128
+ asRecord(payload.function)?.output;
129
+ const isError = parsed.is_error === true ||
130
+ payload.is_error === true ||
131
+ subtype === "failed" ||
132
+ subtype === "error" ||
133
+ subtype === "cancelled" ||
134
+ payload.error !== undefined;
135
+ if (subtype === "started" || subtype === "start") {
136
+ console.log(pc.yellow(`tool_call: ${toolName}${callId ? ` (${callId})` : ""}`));
137
+ if (args !== undefined) {
138
+ console.log(pc.gray(stringifyUnknown(args)));
139
+ }
140
+ return;
141
+ }
142
+ if (subtype === "completed" || subtype === "complete" || subtype === "finished") {
143
+ const header = `tool_result${isError ? " (error)" : ""}${callId ? ` (${callId})` : ""}`;
144
+ console.log((isError ? pc.red : pc.cyan)(header));
145
+ if (result !== undefined) {
146
+ console.log((isError ? pc.red : pc.gray)(stringifyUnknown(result)));
147
+ }
148
+ return;
149
+ }
150
+ console.log(pc.yellow(`tool_call: ${toolName}${subtype ? ` (${subtype})` : ""}`));
151
+ }
152
+ function printLegacyToolEvent(part) {
153
+ const tool = asString(part.tool, "tool");
154
+ const callId = asString(part.callID, asString(part.id, ""));
155
+ const state = asRecord(part.state);
156
+ const status = asString(state?.status);
157
+ const input = state?.input;
158
+ const output = asString(state?.output).replace(/\s+$/, "");
159
+ const metadata = asRecord(state?.metadata);
160
+ const exit = asNumber(metadata?.exit, NaN);
161
+ const isError = status === "failed" ||
162
+ status === "error" ||
163
+ status === "cancelled" ||
164
+ (Number.isFinite(exit) && exit !== 0);
165
+ console.log(pc.yellow(`tool_call: ${tool}${callId ? ` (${callId})` : ""}`));
166
+ if (input !== undefined) {
167
+ try {
168
+ console.log(pc.gray(JSON.stringify(input, null, 2)));
169
+ }
170
+ catch {
171
+ console.log(pc.gray(String(input)));
172
+ }
173
+ }
174
+ if (status || output) {
175
+ const summary = [
176
+ "tool_result",
177
+ status ? `status=${status}` : "",
178
+ Number.isFinite(exit) ? `exit=${exit}` : "",
179
+ ]
180
+ .filter(Boolean)
181
+ .join(" ");
182
+ console.log((isError ? pc.red : pc.cyan)(summary));
183
+ if (output) {
184
+ console.log((isError ? pc.red : pc.gray)(output));
185
+ }
186
+ }
187
+ }
188
+ export function printCursorStreamEvent(raw, _debug) {
189
+ const line = normalizeCursorStreamLine(raw).line;
190
+ if (!line)
191
+ return;
192
+ let parsed = null;
193
+ try {
194
+ parsed = JSON.parse(line);
195
+ }
196
+ catch {
197
+ console.log(line);
198
+ return;
199
+ }
200
+ const type = asString(parsed.type);
201
+ if (type === "system") {
202
+ const subtype = asString(parsed.subtype);
203
+ if (subtype === "init") {
204
+ const sessionId = asString(parsed.session_id) ||
205
+ asString(parsed.sessionId) ||
206
+ asString(parsed.sessionID);
207
+ const model = asString(parsed.model);
208
+ const details = [sessionId ? `session: ${sessionId}` : "", model ? `model: ${model}` : ""]
209
+ .filter(Boolean)
210
+ .join(", ");
211
+ console.log(pc.blue(`Cursor init${details ? ` (${details})` : ""}`));
212
+ return;
213
+ }
214
+ console.log(pc.blue(`system: ${subtype || "event"}`));
215
+ return;
216
+ }
217
+ if (type === "assistant") {
218
+ printAssistantMessage(parsed.message);
219
+ return;
220
+ }
221
+ if (type === "user") {
222
+ printUserMessage(parsed.message);
223
+ return;
224
+ }
225
+ if (type === "thinking") {
226
+ const text = asString(parsed.text).trim() || asString(asRecord(parsed.delta)?.text).trim();
227
+ if (text)
228
+ console.log(pc.gray(`thinking: ${text}`));
229
+ return;
230
+ }
231
+ if (type === "tool_call") {
232
+ printToolCallEventTopLevel(parsed);
233
+ return;
234
+ }
235
+ if (type === "result") {
236
+ const usage = asRecord(parsed.usage);
237
+ const input = asNumber(usage?.input_tokens, asNumber(usage?.inputTokens));
238
+ const output = asNumber(usage?.output_tokens, asNumber(usage?.outputTokens));
239
+ const cached = asNumber(usage?.cached_input_tokens, asNumber(usage?.cachedInputTokens, asNumber(usage?.cache_read_input_tokens)));
240
+ const cost = asNumber(parsed.total_cost_usd, asNumber(parsed.cost_usd, asNumber(parsed.cost)));
241
+ const subtype = asString(parsed.subtype, "result");
242
+ const isError = parsed.is_error === true || subtype === "error" || subtype === "failed";
243
+ console.log(pc.blue(`result: subtype=${subtype}`));
244
+ console.log(pc.blue(`tokens: in=${input} out=${output} cached=${cached} cost=$${cost.toFixed(6)}`));
245
+ const resultText = asString(parsed.result).trim();
246
+ if (resultText)
247
+ console.log((isError ? pc.red : pc.green)(`assistant: ${resultText}`));
248
+ const errors = Array.isArray(parsed.errors) ? parsed.errors.map((value) => stringifyUnknown(value)).filter(Boolean) : [];
249
+ if (errors.length > 0)
250
+ console.log(pc.red(`errors: ${errors.join(" | ")}`));
251
+ return;
252
+ }
253
+ if (type === "error") {
254
+ const message = asString(parsed.message) || stringifyUnknown(parsed.error ?? parsed.detail) || line;
255
+ console.log(pc.red(`error: ${message}`));
256
+ return;
257
+ }
258
+ // Compatibility with older stream-json event shapes.
259
+ if (type === "step_start") {
260
+ const sessionId = asString(parsed.sessionID);
261
+ console.log(pc.blue(`step started${sessionId ? ` (session: ${sessionId})` : ""}`));
262
+ return;
263
+ }
264
+ if (type === "text") {
265
+ const part = asRecord(parsed.part);
266
+ const text = asString(part?.text);
267
+ if (text)
268
+ console.log(pc.green(`assistant: ${text}`));
269
+ return;
270
+ }
271
+ if (type === "tool_use") {
272
+ const part = asRecord(parsed.part);
273
+ if (part) {
274
+ printLegacyToolEvent(part);
275
+ }
276
+ else {
277
+ console.log(pc.yellow("tool_use"));
278
+ }
279
+ return;
280
+ }
281
+ if (type === "step_finish") {
282
+ const part = asRecord(parsed.part);
283
+ const tokens = asRecord(part?.tokens);
284
+ const cache = asRecord(tokens?.cache);
285
+ const reason = asString(part?.reason, "step_finish");
286
+ const input = asNumber(tokens?.input);
287
+ const output = asNumber(tokens?.output);
288
+ const cached = asNumber(cache?.read);
289
+ const cost = asNumber(part?.cost);
290
+ console.log(pc.blue(`step finished: reason=${reason}`));
291
+ console.log(pc.blue(`tokens: in=${input} out=${output} cached=${cached} cost=$${cost.toFixed(6)}`));
292
+ return;
293
+ }
294
+ console.log(line);
295
+ }
296
+ //# sourceMappingURL=format-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-event.js","sourceRoot":"","sources":["../../src/cli/format-event.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { printCursorStreamEvent } from "./format-event.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { printCursorStreamEvent } from "./format-event.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare const type = "cursor";
2
+ export declare const label = "Cursor CLI (local)";
3
+ export declare const DEFAULT_CURSOR_LOCAL_MODEL = "auto";
4
+ export declare const models: {
5
+ id: string;
6
+ label: string;
7
+ }[];
8
+ export declare const agentConfigurationDoc = "# cursor agent configuration\n\nAdapter: cursor\n\nUse when:\n- You want Paperclip to run Cursor Agent CLI locally as the agent runtime\n- You want Cursor chat session resume across heartbeats via --resume\n- You want structured stream output in run logs via --output-format stream-json\n\nDon't use when:\n- You need webhook-style external invocation (use openclaw_gateway or http)\n- You only need one-shot shell commands (use process)\n- Cursor Agent CLI is not installed on the machine\n\nCore fields:\n- cwd (string, optional): default absolute working directory fallback for the agent process (created if missing when possible)\n- instructionsFilePath (string, optional): absolute path to a markdown instructions file prepended to the run prompt\n- promptTemplate (string, optional): run prompt template\n- model (string, optional): Cursor model id (for example auto or gpt-5.3-codex)\n- mode (string, optional): Cursor execution mode passed as --mode (plan|ask). Leave unset for normal autonomous runs.\n- command (string, optional): defaults to \"agent\"\n- extraArgs (string[], optional): additional CLI args\n- env (object, optional): KEY=VALUE environment variables\n\nOperational fields:\n- timeoutSec (number, optional): run timeout in seconds\n- graceSec (number, optional): SIGTERM grace period in seconds\n\nNotes:\n- Runs are executed with: agent -p --output-format stream-json ...\n- Prompts are piped to Cursor via stdin.\n- Sessions are resumed with --resume when stored session cwd matches current cwd.\n- Paperclip auto-injects local skills into \"~/.cursor/skills\" when missing, so Cursor can discover \"$paperclip\" and related skills on local runs.\n- Paperclip auto-adds --yolo unless one of --trust/--yolo/-f is already present in extraArgs.\n";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,WAAW,CAAC;AAC7B,eAAO,MAAM,KAAK,uBAAuB,CAAC;AAC1C,eAAO,MAAM,0BAA0B,SAAS,CAAC;AA4CjD,eAAO,MAAM,MAAM;;;GAA6D,CAAC;AAEjF,eAAO,MAAM,qBAAqB,gvDAkCjC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,81 @@
1
+ export const type = "cursor";
2
+ export const label = "Cursor CLI (local)";
3
+ export const DEFAULT_CURSOR_LOCAL_MODEL = "auto";
4
+ const CURSOR_FALLBACK_MODEL_IDS = [
5
+ "auto",
6
+ "composer-1.5",
7
+ "composer-1",
8
+ "gpt-5.3-codex-low",
9
+ "gpt-5.3-codex-low-fast",
10
+ "gpt-5.3-codex",
11
+ "gpt-5.3-codex-fast",
12
+ "gpt-5.3-codex-high",
13
+ "gpt-5.3-codex-high-fast",
14
+ "gpt-5.3-codex-xhigh",
15
+ "gpt-5.3-codex-xhigh-fast",
16
+ "gpt-5.3-codex-spark-preview",
17
+ "gpt-5.2",
18
+ "gpt-5.2-codex-low",
19
+ "gpt-5.2-codex-low-fast",
20
+ "gpt-5.2-codex",
21
+ "gpt-5.2-codex-fast",
22
+ "gpt-5.2-codex-high",
23
+ "gpt-5.2-codex-high-fast",
24
+ "gpt-5.2-codex-xhigh",
25
+ "gpt-5.2-codex-xhigh-fast",
26
+ "gpt-5.1-codex-max",
27
+ "gpt-5.1-codex-max-high",
28
+ "gpt-5.2-high",
29
+ "gpt-5.1-high",
30
+ "gpt-5.1-codex-mini",
31
+ "opus-4.6-thinking",
32
+ "opus-4.6",
33
+ "opus-4.5",
34
+ "opus-4.5-thinking",
35
+ "sonnet-4.6",
36
+ "sonnet-4.6-thinking",
37
+ "sonnet-4.5",
38
+ "sonnet-4.5-thinking",
39
+ "gemini-3.1-pro",
40
+ "gemini-3-pro",
41
+ "gemini-3-flash",
42
+ "grok",
43
+ "kimi-k2.5",
44
+ ];
45
+ export const models = CURSOR_FALLBACK_MODEL_IDS.map((id) => ({ id, label: id }));
46
+ export const agentConfigurationDoc = `# cursor agent configuration
47
+
48
+ Adapter: cursor
49
+
50
+ Use when:
51
+ - You want Paperclip to run Cursor Agent CLI locally as the agent runtime
52
+ - You want Cursor chat session resume across heartbeats via --resume
53
+ - You want structured stream output in run logs via --output-format stream-json
54
+
55
+ Don't use when:
56
+ - You need webhook-style external invocation (use openclaw_gateway or http)
57
+ - You only need one-shot shell commands (use process)
58
+ - Cursor Agent CLI is not installed on the machine
59
+
60
+ Core fields:
61
+ - cwd (string, optional): default absolute working directory fallback for the agent process (created if missing when possible)
62
+ - instructionsFilePath (string, optional): absolute path to a markdown instructions file prepended to the run prompt
63
+ - promptTemplate (string, optional): run prompt template
64
+ - model (string, optional): Cursor model id (for example auto or gpt-5.3-codex)
65
+ - mode (string, optional): Cursor execution mode passed as --mode (plan|ask). Leave unset for normal autonomous runs.
66
+ - command (string, optional): defaults to "agent"
67
+ - extraArgs (string[], optional): additional CLI args
68
+ - env (object, optional): KEY=VALUE environment variables
69
+
70
+ Operational fields:
71
+ - timeoutSec (number, optional): run timeout in seconds
72
+ - graceSec (number, optional): SIGTERM grace period in seconds
73
+
74
+ Notes:
75
+ - Runs are executed with: agent -p --output-format stream-json ...
76
+ - Prompts are piped to Cursor via stdin.
77
+ - Sessions are resumed with --resume when stored session cwd matches current cwd.
78
+ - Paperclip auto-injects local skills into "~/.cursor/skills" when missing, so Cursor can discover "$paperclip" and related skills on local runs.
79
+ - Paperclip auto-adds --yolo unless one of --trust/--yolo/-f is already present in extraArgs.
80
+ `;
81
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAC;AAC7B,MAAM,CAAC,MAAM,KAAK,GAAG,oBAAoB,CAAC;AAC1C,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAEjD,MAAM,yBAAyB,GAAG;IAChC,MAAM;IACN,cAAc;IACd,YAAY;IACZ,mBAAmB;IACnB,wBAAwB;IACxB,eAAe;IACf,oBAAoB;IACpB,oBAAoB;IACpB,yBAAyB;IACzB,qBAAqB;IACrB,0BAA0B;IAC1B,6BAA6B;IAC7B,SAAS;IACT,mBAAmB;IACnB,wBAAwB;IACxB,eAAe;IACf,oBAAoB;IACpB,oBAAoB;IACpB,yBAAyB;IACzB,qBAAqB;IACrB,0BAA0B;IAC1B,mBAAmB;IACnB,wBAAwB;IACxB,cAAc;IACd,cAAc;IACd,oBAAoB;IACpB,mBAAmB;IACnB,UAAU;IACV,UAAU;IACV,mBAAmB;IACnB,YAAY;IACZ,qBAAqB;IACrB,YAAY;IACZ,qBAAqB;IACrB,gBAAgB;IAChB,cAAc;IACd,gBAAgB;IAChB,MAAM;IACN,WAAW;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAEjF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCpC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { AdapterExecutionContext, AdapterExecutionResult } from "@paperclipai/adapter-utils";
2
+ type EnsureCursorSkillsInjectedOptions = {
3
+ skillsDir?: string | null;
4
+ skillsHome?: string;
5
+ linkSkill?: (source: string, target: string) => Promise<void>;
6
+ };
7
+ export declare function ensureCursorSkillsInjected(onLog: AdapterExecutionContext["onLog"], options?: EnsureCursorSkillsInjectedOptions): Promise<void>;
8
+ export declare function execute(ctx: AdapterExecutionContext): Promise<AdapterExecutionResult>;
9
+ export {};
10
+ //# sourceMappingURL=execute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/server/execute.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAuFlG,KAAK,iCAAiC,GAAG;IACvC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D,CAAC;AAEF,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,uBAAuB,CAAC,OAAO,CAAC,EACvC,OAAO,GAAE,iCAAsC,iBAgDhD;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA8U3F"}