@exla/rudder 0.0.0-stage → 3.4.1
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 +100 -0
- package/README.md +733 -2
- package/assets/rudder.icns +0 -0
- package/assets/sounds/NOTICE.md +8 -0
- package/assets/sounds/ping.mp3 +0 -0
- package/dist/agent-attention.d.ts +5 -0
- package/dist/agent-attention.js +54 -0
- package/dist/agent-attention.js.map +1 -0
- package/dist/analytics.d.ts +36 -0
- package/dist/analytics.js +178 -0
- package/dist/analytics.js.map +1 -0
- package/dist/attach-session.d.ts +91 -0
- package/dist/attach-session.js +290 -0
- package/dist/attach-session.js.map +1 -0
- package/dist/auth.d.ts +36 -0
- package/dist/auth.js +397 -0
- package/dist/auth.js.map +1 -0
- package/dist/backends.d.ts +3 -0
- package/dist/backends.js +638 -0
- package/dist/backends.js.map +1 -0
- package/dist/board/board.css +1 -0
- package/dist/board/board.js +2 -0
- package/dist/board/daemon.d.ts +39 -0
- package/dist/board/daemon.js +1510 -0
- package/dist/board/daemon.js.map +1 -0
- package/dist/brain.d.ts +24 -0
- package/dist/brain.js +244 -0
- package/dist/brain.js.map +1 -0
- package/dist/bus.d.ts +9 -0
- package/dist/bus.js +23 -0
- package/dist/bus.js.map +1 -0
- package/dist/checkout-sync.d.ts +35 -0
- package/dist/checkout-sync.js +247 -0
- package/dist/checkout-sync.js.map +1 -0
- package/dist/cloud.d.ts +51 -0
- package/dist/cloud.js +4672 -0
- package/dist/cloud.js.map +1 -0
- package/dist/codex-binary.d.ts +12 -0
- package/dist/codex-binary.js +184 -0
- package/dist/codex-binary.js.map +1 -0
- package/dist/context-audit.d.ts +21 -0
- package/dist/context-audit.js +109 -0
- package/dist/context-audit.js.map +1 -0
- package/dist/daemon.d.ts +27 -0
- package/dist/daemon.js +203 -0
- package/dist/daemon.js.map +1 -0
- package/dist/effort.d.ts +9 -0
- package/dist/effort.js +72 -0
- package/dist/effort.js.map +1 -0
- package/dist/feedback.d.ts +46 -0
- package/dist/feedback.js +173 -0
- package/dist/feedback.js.map +1 -0
- package/dist/gc.d.ts +3 -0
- package/dist/gc.js +262 -0
- package/dist/gc.js.map +1 -0
- package/dist/git.d.ts +31 -0
- package/dist/git.js +455 -0
- package/dist/git.js.map +1 -0
- package/dist/goal.d.ts +33 -0
- package/dist/goal.js +95 -0
- package/dist/goal.js.map +1 -0
- package/dist/graph.d.ts +93 -0
- package/dist/graph.js +372 -0
- package/dist/graph.js.map +1 -0
- package/dist/handoff.d.ts +110 -0
- package/dist/handoff.js +565 -0
- package/dist/handoff.js.map +1 -0
- package/dist/improve/advisor.d.ts +10 -0
- package/dist/improve/advisor.js +115 -0
- package/dist/improve/advisor.js.map +1 -0
- package/dist/improve/collect.d.ts +49 -0
- package/dist/improve/collect.js +274 -0
- package/dist/improve/collect.js.map +1 -0
- package/dist/improve/gate.d.ts +17 -0
- package/dist/improve/gate.js +60 -0
- package/dist/improve/gate.js.map +1 -0
- package/dist/improve/index.d.ts +9 -0
- package/dist/improve/index.js +376 -0
- package/dist/improve/index.js.map +1 -0
- package/dist/improve/judge.d.ts +32 -0
- package/dist/improve/judge.js +114 -0
- package/dist/improve/judge.js.map +1 -0
- package/dist/improve/mine.d.ts +31 -0
- package/dist/improve/mine.js +192 -0
- package/dist/improve/mine.js.map +1 -0
- package/dist/improve/propose.d.ts +51 -0
- package/dist/improve/propose.js +150 -0
- package/dist/improve/propose.js.map +1 -0
- package/dist/improve/rank.d.ts +16 -0
- package/dist/improve/rank.js +49 -0
- package/dist/improve/rank.js.map +1 -0
- package/dist/improve/schedule.d.ts +1 -0
- package/dist/improve/schedule.js +95 -0
- package/dist/improve/schedule.js.map +1 -0
- package/dist/improve/ship.d.ts +25 -0
- package/dist/improve/ship.js +82 -0
- package/dist/improve/ship.js.map +1 -0
- package/dist/improve/state.d.ts +157 -0
- package/dist/improve/state.js +264 -0
- package/dist/improve/state.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +88 -0
- package/dist/index.js.map +1 -0
- package/dist/jj-binary.d.ts +36 -0
- package/dist/jj-binary.js +143 -0
- package/dist/jj-binary.js.map +1 -0
- package/dist/jj.d.ts +163 -0
- package/dist/jj.js +926 -0
- package/dist/jj.js.map +1 -0
- package/dist/logger.d.ts +22 -0
- package/dist/logger.js +110 -0
- package/dist/logger.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.js +1366 -0
- package/dist/main.js.map +1 -0
- package/dist/migration.d.ts +82 -0
- package/dist/migration.js +198 -0
- package/dist/migration.js.map +1 -0
- package/dist/models.d.ts +9 -0
- package/dist/models.js +623 -0
- package/dist/models.js.map +1 -0
- package/dist/move-home.d.ts +82 -0
- package/dist/move-home.js +472 -0
- package/dist/move-home.js.map +1 -0
- package/dist/native/darwin-arm64/rudder-native +0 -0
- package/dist/native/darwin-x64/rudder-native +0 -0
- package/dist/native/linux-x64/rudder-native +0 -0
- package/dist/native-agents.d.ts +8 -0
- package/dist/native-agents.js +178 -0
- package/dist/native-agents.js.map +1 -0
- package/dist/native-binary.d.ts +4 -0
- package/dist/native-binary.js +140 -0
- package/dist/native-binary.js.map +1 -0
- package/dist/onboarding.d.ts +11 -0
- package/dist/onboarding.js +111 -0
- package/dist/onboarding.js.map +1 -0
- package/dist/paste-bridge.d.ts +36 -0
- package/dist/paste-bridge.js +279 -0
- package/dist/paste-bridge.js.map +1 -0
- package/dist/plan-mode.d.ts +2 -0
- package/dist/plan-mode.js +22 -0
- package/dist/plan-mode.js.map +1 -0
- package/dist/planner.d.ts +27 -0
- package/dist/planner.js +587 -0
- package/dist/planner.js.map +1 -0
- package/dist/predict.d.ts +67 -0
- package/dist/predict.js +369 -0
- package/dist/predict.js.map +1 -0
- package/dist/qr.d.ts +13 -0
- package/dist/qr.js +377 -0
- package/dist/qr.js.map +1 -0
- package/dist/report.d.ts +74 -0
- package/dist/report.js +412 -0
- package/dist/report.js.map +1 -0
- package/dist/rudder-md.d.ts +33 -0
- package/dist/rudder-md.js +142 -0
- package/dist/rudder-md.js.map +1 -0
- package/dist/run-manager.d.ts +62 -0
- package/dist/run-manager.js +1400 -0
- package/dist/run-manager.js.map +1 -0
- package/dist/scheduler.d.ts +128 -0
- package/dist/scheduler.js +955 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/state.d.ts +127 -0
- package/dist/state.js +704 -0
- package/dist/state.js.map +1 -0
- package/dist/surfaces.d.ts +91 -0
- package/dist/surfaces.js +460 -0
- package/dist/surfaces.js.map +1 -0
- package/dist/task-summary.d.ts +30 -0
- package/dist/task-summary.js +472 -0
- package/dist/task-summary.js.map +1 -0
- package/dist/types.d.ts +492 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/usage.d.ts +198 -0
- package/dist/usage.js +830 -0
- package/dist/usage.js.map +1 -0
- package/dist/util.d.ts +73 -0
- package/dist/util.js +399 -0
- package/dist/util.js.map +1 -0
- package/dist/version-check.d.ts +16 -0
- package/dist/version-check.js +269 -0
- package/dist/version-check.js.map +1 -0
- package/package.json +68 -4
- package/scripts/copy-native.mjs +89 -0
- package/scripts/postinstall.mjs +34 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
// Pasting files from this computer into a dashboard on the cloud machine.
|
|
2
|
+
//
|
|
3
|
+
// An agent on the home machine reads ITS clipboard and ITS disk: Claude Code's
|
|
4
|
+
// Ctrl+V runs xclip there (no clipboard, nothing pasted), and a screenshot
|
|
5
|
+
// dragged into the terminal arrives as a path like /Users/me/Desktop/shot.png
|
|
6
|
+
// that does not exist there. So the attach client looks at what is about to go
|
|
7
|
+
// up, and when it is a clipboard image (Ctrl+V) or a paste made only of local
|
|
8
|
+
// file paths, it uploads the files first (the phone's upload route, into the
|
|
9
|
+
// repo's .rudder/uploads) and sends the cloud paths as a paste instead. Claude
|
|
10
|
+
// Code and Codex both turn a pasted image path into an attached image; the
|
|
11
|
+
// dashboard's task box turns it into an [Image #N] chip.
|
|
12
|
+
//
|
|
13
|
+
// Everything else goes straight through, untouched and unbuffered.
|
|
14
|
+
import { execFile } from "node:child_process";
|
|
15
|
+
import fs from "node:fs";
|
|
16
|
+
import os from "node:os";
|
|
17
|
+
import path from "node:path";
|
|
18
|
+
export const PASTE_UPLOAD_MAX_BYTES = 25 * 1024 * 1024;
|
|
19
|
+
const PASTE_BEGIN = "\x1b[200~";
|
|
20
|
+
const PASTE_END = "\x1b[201~";
|
|
21
|
+
const MAX_FILES = 20;
|
|
22
|
+
/** Ctrl+V, as a plain control byte or in the kitty keyboard encoding. */
|
|
23
|
+
export function isCtrlV(data) {
|
|
24
|
+
if (data.length === 1 && data[0] === 0x16) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
return /^\x1b\[118(?::\d*)*;5(?::1)?u$/.test(data.toString("latin1"));
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The local files a paste names, or null when it is anything else. Every
|
|
31
|
+
* token must be an existing regular file, so a pasted snippet that merely
|
|
32
|
+
* mentions a path is never rewritten. Handles what terminals produce for a
|
|
33
|
+
* drop: 'quoted', "quoted", backslash-escaped spaces, file:// urls.
|
|
34
|
+
*/
|
|
35
|
+
export function pastedLocalFiles(text, home = os.homedir()) {
|
|
36
|
+
const tokens = shellTokens(text.trim());
|
|
37
|
+
if (!tokens || tokens.length === 0 || tokens.length > MAX_FILES) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const files = [];
|
|
41
|
+
for (let token of tokens) {
|
|
42
|
+
if (token.startsWith("file://")) {
|
|
43
|
+
try {
|
|
44
|
+
token = decodeURIComponent(new URL(token).pathname);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (token.startsWith("~/")) {
|
|
51
|
+
token = path.join(home, token.slice(2));
|
|
52
|
+
}
|
|
53
|
+
if (!path.isAbsolute(token)) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const stat = fs.statSync(token);
|
|
58
|
+
if (!stat.isFile() || stat.size === 0 || stat.size > PASTE_UPLOAD_MAX_BYTES) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
files.push(token);
|
|
66
|
+
}
|
|
67
|
+
return files;
|
|
68
|
+
}
|
|
69
|
+
function shellTokens(text) {
|
|
70
|
+
if (!text || /[\x00-\x08\x0b-\x1f\x7f]/.test(text)) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
const tokens = [];
|
|
74
|
+
let current = "";
|
|
75
|
+
let inToken = false;
|
|
76
|
+
let quote = null;
|
|
77
|
+
for (let i = 0; i < text.length; i += 1) {
|
|
78
|
+
const ch = text[i];
|
|
79
|
+
if (quote) {
|
|
80
|
+
if (ch === quote) {
|
|
81
|
+
quote = null;
|
|
82
|
+
}
|
|
83
|
+
else if (ch === "\\" && quote === "\"" && i + 1 < text.length) {
|
|
84
|
+
current += text[++i];
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
current += ch;
|
|
88
|
+
}
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
if (ch === "'" || ch === "\"") {
|
|
92
|
+
quote = ch;
|
|
93
|
+
inToken = true;
|
|
94
|
+
}
|
|
95
|
+
else if (ch === "\\" && i + 1 < text.length) {
|
|
96
|
+
current += text[++i];
|
|
97
|
+
inToken = true;
|
|
98
|
+
}
|
|
99
|
+
else if (/\s/.test(ch)) {
|
|
100
|
+
if (inToken) {
|
|
101
|
+
tokens.push(current);
|
|
102
|
+
}
|
|
103
|
+
current = "";
|
|
104
|
+
inToken = false;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
current += ch;
|
|
108
|
+
inToken = true;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (quote) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
if (inToken) {
|
|
115
|
+
tokens.push(current);
|
|
116
|
+
}
|
|
117
|
+
return tokens;
|
|
118
|
+
}
|
|
119
|
+
export class PasteBridge {
|
|
120
|
+
options;
|
|
121
|
+
/** Pass everything straight through (a target that cannot take uploads). */
|
|
122
|
+
disabled = false;
|
|
123
|
+
busy = false;
|
|
124
|
+
pending = [];
|
|
125
|
+
constructor(options) {
|
|
126
|
+
this.options = options;
|
|
127
|
+
}
|
|
128
|
+
/** Every keystroke chunk for the cloud goes through here, in order. */
|
|
129
|
+
forward(data) {
|
|
130
|
+
if (this.busy) {
|
|
131
|
+
this.pending.push(data);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const job = this.disabled ? null : this.jobFor(data);
|
|
135
|
+
if (!job) {
|
|
136
|
+
this.options.send(data);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
this.busy = true;
|
|
140
|
+
void job.then((replacement) => {
|
|
141
|
+
this.options.send(replacement ?? data);
|
|
142
|
+
}).catch((error) => {
|
|
143
|
+
this.options.send(data);
|
|
144
|
+
this.options.status?.(`Could not send that file to the cloud: ${error.message}`);
|
|
145
|
+
setTimeout(() => this.options.status?.(null), 4000).unref?.();
|
|
146
|
+
}).finally(() => {
|
|
147
|
+
this.busy = false;
|
|
148
|
+
const queued = this.pending;
|
|
149
|
+
this.pending = [];
|
|
150
|
+
for (const chunk of queued) {
|
|
151
|
+
this.forward(chunk);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
jobFor(data) {
|
|
156
|
+
if (isCtrlV(data)) {
|
|
157
|
+
if (!this.options.readClipboard) {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
return this.fromClipboard();
|
|
161
|
+
}
|
|
162
|
+
const text = data.toString("utf8");
|
|
163
|
+
let inner = text;
|
|
164
|
+
let bracketed = false;
|
|
165
|
+
if (text.startsWith(PASTE_BEGIN) && text.endsWith(PASTE_END)) {
|
|
166
|
+
inner = text.slice(PASTE_BEGIN.length, text.length - PASTE_END.length);
|
|
167
|
+
bracketed = true;
|
|
168
|
+
}
|
|
169
|
+
else if (text.length < 4 || !/^['"~\/f]/.test(text)) {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
const files = pastedLocalFiles(inner);
|
|
173
|
+
if (!files) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
const trailing = /\s$/.test(inner) ? " " : "";
|
|
177
|
+
return this.uploadAll(files).then((remote) => {
|
|
178
|
+
const body = remote.join(" ") + trailing;
|
|
179
|
+
return Buffer.from(bracketed ? PASTE_BEGIN + body + PASTE_END : body, "utf8");
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
async fromClipboard() {
|
|
183
|
+
const contents = await this.options.readClipboard().catch(() => null);
|
|
184
|
+
if (!contents) {
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
let remote;
|
|
188
|
+
if ("image" in contents) {
|
|
189
|
+
try {
|
|
190
|
+
remote = await this.uploadAll([contents.image], "image");
|
|
191
|
+
}
|
|
192
|
+
finally {
|
|
193
|
+
fs.rmSync(contents.image, { force: true });
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
remote = await this.uploadAll(contents.files);
|
|
198
|
+
}
|
|
199
|
+
return Buffer.from(PASTE_BEGIN + remote.join(" ") + PASTE_END, "utf8");
|
|
200
|
+
}
|
|
201
|
+
async uploadAll(files, kind = "file") {
|
|
202
|
+
const noun = kind === "image" ? "image" : files.length === 1 ? path.basename(files[0]) : `${files.length} files`;
|
|
203
|
+
this.options.status?.(`Sending ${noun} to the cloud...`);
|
|
204
|
+
try {
|
|
205
|
+
const remote = [];
|
|
206
|
+
for (const file of files) {
|
|
207
|
+
remote.push(await this.options.upload(file, kind === "image" ? "clipboard.png" : path.basename(file)));
|
|
208
|
+
}
|
|
209
|
+
return remote;
|
|
210
|
+
}
|
|
211
|
+
finally {
|
|
212
|
+
this.options.status?.(null);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// The clipboard of THIS computer: files copied in Finder win, then an image
|
|
217
|
+
// (a screenshot, "Copy Image"), the same order Claude Code uses locally.
|
|
218
|
+
export async function readLocalClipboard() {
|
|
219
|
+
const out = path.join(os.tmpdir(), `rudder-clip-${process.pid}-${Date.now()}.png`);
|
|
220
|
+
if (process.platform === "darwin") {
|
|
221
|
+
const raw = await run("osascript", ["-l", "JavaScript", "-e", MAC_CLIPBOARD_SCRIPT, out]).catch(() => "");
|
|
222
|
+
try {
|
|
223
|
+
const parsed = JSON.parse(raw.trim() || "{}");
|
|
224
|
+
const files = (parsed.files ?? []).filter((file) => pastedLocalFiles(JSON.stringify(file)) !== null);
|
|
225
|
+
if (files.length) {
|
|
226
|
+
return { files };
|
|
227
|
+
}
|
|
228
|
+
if (parsed.image && fs.existsSync(parsed.image) && fs.statSync(parsed.image).size > 0) {
|
|
229
|
+
return { image: parsed.image };
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
catch {
|
|
233
|
+
// not JSON: no clipboard we can use
|
|
234
|
+
}
|
|
235
|
+
return null;
|
|
236
|
+
}
|
|
237
|
+
if (process.platform === "linux") {
|
|
238
|
+
for (const [cmd, args] of [["wl-paste", ["--type", "image/png"]], ["xclip", ["-selection", "clipboard", "-t", "image/png", "-o"]]]) {
|
|
239
|
+
const bytes = await runBytes(cmd, [...args]).catch(() => null);
|
|
240
|
+
if (bytes && bytes.length > 8 && bytes.subarray(1, 4).toString("latin1") === "PNG") {
|
|
241
|
+
fs.writeFileSync(out, bytes, { mode: 0o600 });
|
|
242
|
+
return { image: out };
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
248
|
+
const MAC_CLIPBOARD_SCRIPT = `
|
|
249
|
+
ObjC.import('AppKit');
|
|
250
|
+
function run(argv) {
|
|
251
|
+
const pb = $.NSPasteboard.generalPasteboard;
|
|
252
|
+
const opts = $.NSDictionary.dictionaryWithObjectForKey($.NSNumber.numberWithBool(true), $.NSPasteboardURLReadingFileURLsOnlyKey);
|
|
253
|
+
const urls = pb.readObjectsForClassesOptions($.NSArray.arrayWithObject($.NSURL), opts);
|
|
254
|
+
const files = [];
|
|
255
|
+
if (urls && !urls.isNil()) {
|
|
256
|
+
for (let i = 0; i < urls.count; i++) files.push(urls.objectAtIndex(i).path.js);
|
|
257
|
+
}
|
|
258
|
+
if (files.length) return JSON.stringify({ files });
|
|
259
|
+
const types = ObjC.deepUnwrap(pb.types) || [];
|
|
260
|
+
const imageTypes = ['public.png', 'public.tiff', 'public.jpeg', 'com.apple.pict'];
|
|
261
|
+
if (!types.some((t) => imageTypes.includes(t))) return '{}';
|
|
262
|
+
const image = $.NSImage.alloc.initWithPasteboard(pb);
|
|
263
|
+
if (image.isNil()) return '{}';
|
|
264
|
+
const rep = $.NSBitmapImageRep.imageRepWithData(image.TIFFRepresentation);
|
|
265
|
+
const png = rep.representationUsingTypeProperties($.NSBitmapImageFileTypePNG, $({}));
|
|
266
|
+
if (!png.writeToFileAtomically(argv[0], true)) return '{}';
|
|
267
|
+
return JSON.stringify({ image: argv[0] });
|
|
268
|
+
}`;
|
|
269
|
+
function run(cmd, args) {
|
|
270
|
+
return new Promise((resolve, reject) => {
|
|
271
|
+
execFile(cmd, args, { timeout: 5000, maxBuffer: 1024 * 1024 }, (error, stdout) => (error ? reject(error) : resolve(String(stdout))));
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
function runBytes(cmd, args) {
|
|
275
|
+
return new Promise((resolve, reject) => {
|
|
276
|
+
execFile(cmd, args, { timeout: 5000, maxBuffer: PASTE_UPLOAD_MAX_BYTES, encoding: "buffer" }, (error, stdout) => (error ? reject(error) : resolve(stdout)));
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=paste-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paste-bridge.js","sourceRoot":"","sources":["../src/paste-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const PLAN_MODE_CONTRACT = [
|
|
2
|
+
"[RUDDER PLAN MODE]",
|
|
3
|
+
"You are running inside Rudder's own plan mode, not the backend's native implementation mode.",
|
|
4
|
+
"Your job is to investigate and produce a decision-complete implementation plan.",
|
|
5
|
+
"",
|
|
6
|
+
"Rules:",
|
|
7
|
+
"- Do not write, edit, create, delete, move, rename, install, commit, merge, deploy, migrate, or otherwise mutate local or remote state.",
|
|
8
|
+
"- Use only read-only inspection. It is OK to read files, search the repo, inspect git state or read-only CLI state when the active tool profile permits it, and use web search/fetch when it improves the plan.",
|
|
9
|
+
"- If secrets or environment state matter, inspect only what is needed and do not print secret values. Mention presence, absence, names, or configuration shape instead.",
|
|
10
|
+
"- Ask concise follow-up questions when important product or implementation choices cannot be discovered from the environment.",
|
|
11
|
+
"- When the plan is ready, put the final answer in a single <proposed_plan>...</proposed_plan> block.",
|
|
12
|
+
"[END RUDDER PLAN MODE]",
|
|
13
|
+
].join("\n");
|
|
14
|
+
export function buildPlanPrompt(task) {
|
|
15
|
+
return [
|
|
16
|
+
"Plan this task before implementation:",
|
|
17
|
+
task,
|
|
18
|
+
"",
|
|
19
|
+
"First inspect the repository and relevant external/read-only context. Ask follow-up questions if the plan cannot be made decision-complete from inspection alone.",
|
|
20
|
+
].join("\n");
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=plan-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-mode.js","sourceRoot":"","sources":["../src/plan-mode.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,oBAAoB;IACpB,8FAA8F;IAC9F,iFAAiF;IACjF,EAAE;IACF,QAAQ;IACR,yIAAyI;IACzI,iNAAiN;IACjN,yKAAyK;IACzK,+HAA+H;IAC/H,sGAAsG;IACtG,wBAAwB;CACzB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO;QACL,uCAAuC;QACvC,IAAI;QACJ,EAAE;QACF,mKAAmK;KACpK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { BackendId, EffortLevel, PlanDag, PlanNode, ReconcileResult } from "./types.js";
|
|
2
|
+
export { loadInstructionFiles } from "./brain.js";
|
|
3
|
+
export declare const PLANNER_MODEL = "claude-sonnet-5";
|
|
4
|
+
export declare function parsePlanBlock(output: string): PlanDag;
|
|
5
|
+
export declare function gateDecision(dag: PlanDag): {
|
|
6
|
+
autoRun: boolean;
|
|
7
|
+
reason: string;
|
|
8
|
+
};
|
|
9
|
+
export type PlanContext = {
|
|
10
|
+
root: string;
|
|
11
|
+
branch: string;
|
|
12
|
+
};
|
|
13
|
+
export declare function planTask(task: string, ctx: PlanContext): Promise<PlanDag>;
|
|
14
|
+
/**
|
|
15
|
+
* Infer the new node's deps against the current frontier. On any LLM failure
|
|
16
|
+
* (timeout / no model / unparsable), fall back to a SOFT edge to every frontier
|
|
17
|
+
* node: this over-delivers context and never deadlocks. Never a default hard
|
|
18
|
+
* edge.
|
|
19
|
+
*/
|
|
20
|
+
export declare function reconcile(task: string, frontierNodes: PlanNode[], ctx: PlanContext): Promise<ReconcileResult>;
|
|
21
|
+
export type FanoutOptions = {
|
|
22
|
+
backend?: BackendId;
|
|
23
|
+
model?: string;
|
|
24
|
+
effort?: EffortLevel;
|
|
25
|
+
};
|
|
26
|
+
export declare function buildFanoutDag(task: string, n: number, opts?: FanoutOptions): PlanDag;
|
|
27
|
+
export declare function scaffoldPlan(repoRoot: string, dag: PlanDag): Promise<void>;
|