@viraatdas/rudder 1.0.5 → 1.0.7

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 (45) hide show
  1. package/README.md +369 -23
  2. package/dist/agent-attention.d.ts +5 -0
  3. package/dist/agent-attention.js +54 -0
  4. package/dist/agent-attention.js.map +1 -0
  5. package/dist/backends.js +58 -10
  6. package/dist/backends.js.map +1 -1
  7. package/dist/brain.js +3 -3
  8. package/dist/brain.js.map +1 -1
  9. package/dist/cloud.d.ts +9 -0
  10. package/dist/cloud.js +2255 -0
  11. package/dist/cloud.js.map +1 -0
  12. package/dist/main.js +112 -2
  13. package/dist/main.js.map +1 -1
  14. package/dist/migration.d.ts +82 -0
  15. package/dist/migration.js +174 -0
  16. package/dist/migration.js.map +1 -0
  17. package/dist/native/rudder-native +0 -0
  18. package/dist/native-agents.d.ts +1 -0
  19. package/dist/native-agents.js +126 -8
  20. package/dist/native-agents.js.map +1 -1
  21. package/dist/plan-mode.d.ts +2 -0
  22. package/dist/plan-mode.js +22 -0
  23. package/dist/plan-mode.js.map +1 -0
  24. package/dist/repl.js +11 -3
  25. package/dist/repl.js.map +1 -1
  26. package/dist/run-manager.d.ts +11 -1
  27. package/dist/run-manager.js +164 -19
  28. package/dist/run-manager.js.map +1 -1
  29. package/dist/state.d.ts +10 -1
  30. package/dist/state.js +51 -1
  31. package/dist/state.js.map +1 -1
  32. package/dist/task-summary.d.ts +5 -0
  33. package/dist/task-summary.js +128 -0
  34. package/dist/task-summary.js.map +1 -0
  35. package/dist/tmux-dashboard.js +248 -64
  36. package/dist/tmux-dashboard.js.map +1 -1
  37. package/dist/tmux.js +1 -0
  38. package/dist/tmux.js.map +1 -1
  39. package/dist/tui.js +228 -46
  40. package/dist/tui.js.map +1 -1
  41. package/dist/types.d.ts +23 -0
  42. package/dist/util.d.ts +1 -0
  43. package/dist/util.js +23 -1
  44. package/dist/util.js.map +1 -1
  45. package/package.json +4 -2
@@ -0,0 +1,174 @@
1
+ import fsp from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { pathExists, readJson } from "./util.js";
5
+ /**
6
+ * Build a compact "you're picking up from a paused session" prompt for a
7
+ * migrated agent whose conversation can't be replayed verbatim.
8
+ */
9
+ export function buildFreshHandoffPrompt(candidate, recentTurns) {
10
+ const lines = [];
11
+ lines.push("Resuming a paused agent session. Carry on the work below.");
12
+ lines.push("");
13
+ lines.push(`Original task: ${candidate.task || candidate.taskSummary || candidate.runId}`);
14
+ const userTurns = recentTurns.filter((t) => t.source === "user").slice(-3);
15
+ if (userTurns.length > 1) {
16
+ lines.push("");
17
+ lines.push("Recent user steering (most recent last):");
18
+ for (const turn of userTurns) {
19
+ const compact = turn.prompt.replace(/\s+/g, " ").trim().slice(0, 240);
20
+ if (compact) {
21
+ lines.push(`- ${compact}`);
22
+ }
23
+ }
24
+ }
25
+ lines.push("");
26
+ lines.push("The earlier conversation transcript is not available. Re-establish context from the repo state and continue.");
27
+ return lines.join("\n");
28
+ }
29
+ const RESUMABLE_BACKENDS = new Set(["claude"]);
30
+ /**
31
+ * Discover candidate local agents that could be migrated to the cloud.
32
+ *
33
+ * "Running" is interpreted loosely: any run record whose worktree still exists
34
+ * on disk and whose backend is resumable. We can't tell whether the PTY is
35
+ * literally alive (the dashboard quits before this runs), but the Claude
36
+ * session jsonl is persisted, so anything with a session id and an existing
37
+ * jsonl can be resumed in the cloud via `claude --resume <id>`.
38
+ */
39
+ export async function findMigrationCandidates(repoRoot) {
40
+ const runsDir = path.join(repoRoot, ".rudder", "runs");
41
+ const entries = await fsp.readdir(runsDir, { withFileTypes: true }).catch(() => []);
42
+ const out = [];
43
+ for (const entry of entries) {
44
+ if (!entry.isDirectory()) {
45
+ continue;
46
+ }
47
+ const runJsonPath = path.join(runsDir, entry.name, "run.json");
48
+ const record = await readJson(runJsonPath);
49
+ if (!record || record.id !== entry.name) {
50
+ continue;
51
+ }
52
+ const candidate = await classify(record);
53
+ if (candidate) {
54
+ out.push(candidate);
55
+ }
56
+ }
57
+ return out;
58
+ }
59
+ async function classify(record) {
60
+ const status = record.status;
61
+ // Only consider agents the user might care about migrating: anything that is
62
+ // not already terminal. We include "running"/"steering"/"verifying"/"created".
63
+ if (status === "completed" || status === "merged" || status === "cancelled" || status === "failed") {
64
+ return null;
65
+ }
66
+ const worktreePath = record.worktree?.path;
67
+ if (!worktreePath) {
68
+ return null;
69
+ }
70
+ const worktreeExists = await pathExists(worktreePath);
71
+ const base = {
72
+ runId: record.id,
73
+ task: record.task,
74
+ taskSummary: record.taskSummary,
75
+ backend: record.backend,
76
+ status,
77
+ worktreePath,
78
+ worktreeBranch: record.worktree?.branch,
79
+ sessionId: record.session?.nativeSessionId,
80
+ };
81
+ if (!worktreeExists) {
82
+ return { ...base, reason: "missing-worktree", decision: "stay" };
83
+ }
84
+ if (!RESUMABLE_BACKENDS.has(record.backend)) {
85
+ // Non-Claude backends can't resume a conversation, but we can still move
86
+ // them to the cloud by restarting fresh from the original task.
87
+ return { ...base, reason: "unsupported-backend", decision: "migrate-fresh" };
88
+ }
89
+ const sessionId = record.session?.nativeSessionId;
90
+ if (!sessionId) {
91
+ return { ...base, reason: "no-session", decision: "migrate-fresh" };
92
+ }
93
+ const jsonl = claudeSessionJsonlPath(worktreePath, sessionId);
94
+ if (!(await pathExists(jsonl))) {
95
+ return { ...base, reason: "no-jsonl", sessionJsonlPath: jsonl, decision: "migrate-fresh" };
96
+ }
97
+ return { ...base, sessionJsonlPath: jsonl, reason: "resumable", decision: "migrate" };
98
+ }
99
+ /**
100
+ * Encode an absolute filesystem path the way Claude Code does for its session
101
+ * jsonl directory layout: every non-alphanumeric, non-hyphen character becomes
102
+ * a single hyphen, including the leading slash.
103
+ */
104
+ export function encodeClaudeProjectsCwd(absolutePath) {
105
+ return absolutePath.replace(/[^A-Za-z0-9-]/g, "-");
106
+ }
107
+ export function claudeSessionJsonlPath(cwd, sessionId) {
108
+ return path.join(os.homedir(), ".claude", "projects", encodeClaudeProjectsCwd(path.resolve(cwd)), `${sessionId}.jsonl`);
109
+ }
110
+ /**
111
+ * Cloud-side absolute worktree path that the supervisor will stage a migrated
112
+ * agent's worktree at. Mirrors the layout in supervisor.mjs.
113
+ */
114
+ export function cloudWorkspacePath(repoName) {
115
+ return path.posix.join("/workspace", repoName);
116
+ }
117
+ export function cloudWorktreeAbsolutePath(repoName, runId) {
118
+ // Mirrors src/state.ts worktreePath() but rooted at the cloud workspace.
119
+ return path.posix.join("/workspace", ".rudder-worktrees", repoName, runId);
120
+ }
121
+ export function formatCandidateReason(candidate) {
122
+ switch (candidate.reason) {
123
+ case "resumable":
124
+ return "resumable";
125
+ case "no-session":
126
+ return "no Claude session id";
127
+ case "no-jsonl":
128
+ return "Claude session jsonl missing locally";
129
+ case "unsupported-backend":
130
+ return `${candidate.backend} not resumable`;
131
+ case "missing-worktree":
132
+ return "worktree gone";
133
+ case "not-running":
134
+ return "not running";
135
+ default:
136
+ return "skipped";
137
+ }
138
+ }
139
+ export function applyDefaultDecisions(candidates) {
140
+ const migrated = candidates.filter((c) => c.decision === "migrate" || c.decision === "migrate-fresh");
141
+ const stayedLocal = candidates.filter((c) => c.decision !== "migrate" && c.decision !== "migrate-fresh");
142
+ return { candidates, migrated, stayedLocal };
143
+ }
144
+ export function migrationSummary(plan) {
145
+ const lines = [];
146
+ lines.push(`${plan.migrated.length} agent${plan.migrated.length === 1 ? "" : "s"} will move to cloud, ${plan.stayedLocal.length} will stay local.`);
147
+ for (const c of plan.migrated) {
148
+ const short = (c.taskSummary || c.task || c.runId).slice(0, 72);
149
+ const tag = c.decision === "migrate-fresh" ? "move*" : "move ";
150
+ lines.push(` ${tag} ${c.runId} ${short}`);
151
+ }
152
+ for (const c of plan.stayedLocal) {
153
+ const short = (c.taskSummary || c.task || c.runId).slice(0, 60);
154
+ lines.push(` stay ${c.runId} ${short} (${formatCandidateReason(c)})`);
155
+ }
156
+ if (plan.migrated.some((c) => c.decision === "migrate-fresh")) {
157
+ lines.push(" (* fresh restart in cloud; conversation not preserved)");
158
+ }
159
+ return lines.join("\n");
160
+ }
161
+ export function summaryAsJson(plan) {
162
+ return {
163
+ moved: plan.migrated.length,
164
+ stayedLocal: plan.stayedLocal.length,
165
+ agents: plan.candidates.map((c) => ({
166
+ runId: c.runId,
167
+ backend: c.backend,
168
+ decision: c.decision,
169
+ reason: c.reason,
170
+ task: c.taskSummary || c.task,
171
+ })),
172
+ };
173
+ }
174
+ //# sourceMappingURL=migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../src/migration.ts"],"names":[],"mappings":"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"}
Binary file
@@ -3,4 +3,5 @@ export declare function nativeAgentCommand(params: {
3
3
  run: RunRecord;
4
4
  prompt: string;
5
5
  contract: string;
6
+ mode?: "execute" | "plan";
6
7
  }): string;
@@ -1,9 +1,15 @@
1
1
  import { normalizeEffortForBackend } from "./effort.js";
2
+ import { PLAN_MODE_CONTRACT } from "./plan-mode.js";
3
+ import { taskDisplayLabel } from "./task-summary.js";
2
4
  import { shellQuote } from "./util.js";
3
5
  export function nativeAgentCommand(params) {
4
- const args = params.run.backend === "codex"
5
- ? codexArgs(params.run, params.prompt, params.contract)
6
- : claudeArgs(params.run, params.prompt, params.contract);
6
+ const mode = params.mode ?? params.run.mode ?? "execute";
7
+ const prompt = stripRudderPromptWrappers(params.prompt);
8
+ const args = mode === "plan"
9
+ ? planArgs(params.run, prompt)
10
+ : params.run.backend === "codex"
11
+ ? codexArgs(params.run, prompt, params.contract)
12
+ : claudeArgs(params.run, prompt, params.contract);
7
13
  return args.map(shellQuote).join(" ");
8
14
  }
9
15
  function claudeArgs(run, prompt, contract) {
@@ -11,6 +17,8 @@ function claudeArgs(run, prompt, contract) {
11
17
  const effort = normalizeEffortForBackend("claude", run.effort);
12
18
  const sessionId = run.session?.nativeSessionId;
13
19
  return compact([
20
+ "env",
21
+ "CLAUDE_CODE_NO_FLICKER=0",
14
22
  "claude",
15
23
  "--model",
16
24
  model,
@@ -33,12 +41,9 @@ function codexArgs(run, prompt, contract) {
33
41
  const effort = normalizeEffortForBackend("codex", run.effort);
34
42
  return [
35
43
  "codex",
44
+ "--no-alt-screen",
36
45
  "--model",
37
46
  model,
38
- "--sandbox",
39
- "danger-full-access",
40
- "--ask-for-approval",
41
- "never",
42
47
  "--dangerously-bypass-approvals-and-sandbox",
43
48
  "--enable",
44
49
  "goals",
@@ -53,11 +58,124 @@ function codexArgs(run, prompt, contract) {
53
58
  [contract, "", prompt].join("\n"),
54
59
  ].filter((value) => Boolean(value));
55
60
  }
61
+ function planArgs(run, prompt) {
62
+ return run.backend === "codex"
63
+ ? codexPlanArgs(run, prompt)
64
+ : claudePlanArgs(run, prompt);
65
+ }
66
+ function claudePlanArgs(run, prompt) {
67
+ const model = run.model || "sonnet";
68
+ const effort = normalizeEffortForBackend("claude", run.effort);
69
+ return compact([
70
+ "env",
71
+ "CLAUDE_CODE_NO_FLICKER=0",
72
+ "claude",
73
+ "--model",
74
+ model,
75
+ effort ? "--effort" : undefined,
76
+ effort,
77
+ "--permission-mode",
78
+ "default",
79
+ "--tools",
80
+ CLAUDE_PLAN_TOOLS.join(","),
81
+ "--allowedTools",
82
+ CLAUDE_PLAN_TOOLS.join(","),
83
+ "--disallowedTools",
84
+ CLAUDE_PLAN_DISALLOWED_TOOLS.join(","),
85
+ "--append-system-prompt",
86
+ PLAN_MODE_CONTRACT,
87
+ "--name",
88
+ `plan:${paneTitle(run)}`,
89
+ prompt,
90
+ ]);
91
+ }
92
+ function codexPlanArgs(run, prompt) {
93
+ const model = run.model || "gpt-5.5";
94
+ const effort = normalizeEffortForBackend("codex", run.effort);
95
+ return compact([
96
+ "codex",
97
+ "--no-alt-screen",
98
+ "--model",
99
+ model,
100
+ "--sandbox",
101
+ "read-only",
102
+ "--ask-for-approval",
103
+ "never",
104
+ "--search",
105
+ effort ? "-c" : undefined,
106
+ effort ? `model_reasoning_effort="${effort}"` : undefined,
107
+ "-c",
108
+ 'model_reasoning_summary="detailed"',
109
+ "-c",
110
+ "model_supports_reasoning_summaries=true",
111
+ "--cd",
112
+ run.worktree.path,
113
+ `${PLAN_MODE_CONTRACT}\n\n${prompt}`,
114
+ ]);
115
+ }
56
116
  function paneTitle(run) {
57
- const words = run.task.replace(/\s+/g, " ").trim().slice(0, 34);
117
+ const words = taskDisplayLabel(run, 34);
58
118
  return `${run.backend}:${words || run.id.slice(0, 12)}`;
59
119
  }
60
120
  function compact(values) {
61
121
  return values.filter((value) => Boolean(value));
62
122
  }
123
+ function stripRudderPromptWrappers(prompt) {
124
+ const start = "[RUDDER PROMPT INJECTION]";
125
+ const endMarker = "[END RUDDER PROMPT INJECTION]";
126
+ let value = prompt.trimStart();
127
+ for (;;) {
128
+ if (value.startsWith("USER TASK:")) {
129
+ value = value.slice("USER TASK:".length).trimStart();
130
+ continue;
131
+ }
132
+ if (value.startsWith(start)) {
133
+ const afterStart = value.slice(start.length);
134
+ const end = afterStart.indexOf(endMarker);
135
+ if (end >= 0) {
136
+ const body = afterStart.slice(0, end).trim();
137
+ const rest = afterStart.slice(end + endMarker.length).trimStart();
138
+ value = rest.length ? rest : body;
139
+ continue;
140
+ }
141
+ }
142
+ return value;
143
+ }
144
+ }
145
+ const CLAUDE_PLAN_TOOLS = [
146
+ "Read",
147
+ "Grep",
148
+ "Glob",
149
+ "LS",
150
+ "WebSearch",
151
+ "WebFetch",
152
+ ];
153
+ const CLAUDE_PLAN_DISALLOWED_TOOLS = [
154
+ "Edit",
155
+ "Write",
156
+ "MultiEdit",
157
+ "NotebookEdit",
158
+ "Bash",
159
+ "Bash(rm *)",
160
+ "Bash(mv *)",
161
+ "Bash(cp *)",
162
+ "Bash(mkdir *)",
163
+ "Bash(touch *)",
164
+ "Bash(chmod *)",
165
+ "Bash(chown *)",
166
+ "Bash(git add*)",
167
+ "Bash(git commit*)",
168
+ "Bash(git checkout*)",
169
+ "Bash(git switch*)",
170
+ "Bash(git reset*)",
171
+ "Bash(git clean*)",
172
+ "Bash(git merge*)",
173
+ "Bash(git rebase*)",
174
+ "Bash(git push*)",
175
+ "Bash(fly deploy*)",
176
+ "Bash(fly secrets set*)",
177
+ "Bash(fly secrets unset*)",
178
+ "Bash(fly scale*)",
179
+ "Bash(fly apps destroy*)",
180
+ ];
63
181
  //# sourceMappingURL=native-agents.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"native-agents.js","sourceRoot":"","sources":["../src/native-agents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,UAAU,kBAAkB,CAAC,MAIlC;IACC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO;QACzC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;QACvD,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,UAAU,CAAC,GAAc,EAAE,MAAc,EAAE,QAAgB;IAClE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,QAAQ,CAAC;IACpC,MAAM,MAAM,GAAG,yBAAyB,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC;IAC/C,OAAO,OAAO,CAAC;QACb,QAAQ;QACR,SAAS;QACT,KAAK;QACL,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QAC/B,MAAM;QACN,mBAAmB;QACnB,mBAAmB;QACnB,gCAAgC;QAChC,wBAAwB;QACxB,QAAQ;QACR,QAAQ;QACR,SAAS,CAAC,GAAG,CAAC;QACd,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;QACtC,SAAS;QACT,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,GAAc,EAAE,MAAc,EAAE,QAAgB;IACjE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC;IACrC,MAAM,MAAM,GAAG,yBAAyB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9D,OAAO;QACL,OAAO;QACP,SAAS;QACT,KAAK;QACL,WAAW;QACX,oBAAoB;QACpB,oBAAoB;QACpB,OAAO;QACP,4CAA4C;QAC5C,UAAU;QACV,OAAO;QACP,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACzB,MAAM,CAAC,CAAC,CAAC,2BAA2B,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS;QACzD,IAAI;QACJ,oCAAoC;QACpC,IAAI;QACJ,yCAAyC;QACzC,MAAM;QACN,GAAG,CAAC,QAAQ,CAAC,IAAI;QACjB,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;KAClC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,SAAS,CAAC,GAAc;IAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChE,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,KAAK,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,OAAO,CAAC,MAAiC;IAChD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"native-agents.js","sourceRoot":"","sources":["../src/native-agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const PLAN_MODE_CONTRACT: string;
2
+ export declare function buildPlanPrompt(task: string): string;
@@ -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"}
package/dist/repl.js CHANGED
@@ -3,7 +3,7 @@ import { stdin as input, stdout as output } from "node:process";
3
3
  import { runDoctor } from "./auth.js";
4
4
  import { currentBranch, findRepoRoot } from "./git.js";
5
5
  import { cleanupRuns, listProjectRuns, mergeRun, printLogs, startRun, statusRuns, stopRun, watchRun, } from "./run-manager.js";
6
- import { loadConfig } from "./state.js";
6
+ import { loadConfig, rememberBackendSelection } from "./state.js";
7
7
  import { shortenHome } from "./util.js";
8
8
  export async function runInteractiveShell(defaults) {
9
9
  const config = await loadConfig();
@@ -58,10 +58,17 @@ async function handleSlashCommand(line, state) {
58
58
  case "q":
59
59
  return true;
60
60
  case "backend":
61
- setBackend(state, args[0]);
61
+ if (setBackend(state, args[0])) {
62
+ await rememberBackendSelection({ backend: state.backend });
63
+ }
62
64
  return false;
63
65
  case "model":
64
66
  state.model = args.join(" ") || undefined;
67
+ await rememberBackendSelection({
68
+ backend: state.backend,
69
+ model: state.model,
70
+ updateModel: true,
71
+ });
65
72
  console.log(`model: ${state.model || "(backend default)"}`);
66
73
  return false;
67
74
  case "worktree":
@@ -158,11 +165,12 @@ async function watchFromShell(runId) {
158
165
  function setBackend(state, value) {
159
166
  if (value !== "claude" && value !== "codex" && value !== "acpx") {
160
167
  console.log("usage: /backend claude|codex|acpx");
161
- return;
168
+ return false;
162
169
  }
163
170
  state.backend = value;
164
171
  state.model = undefined;
165
172
  console.log(`backend: ${formatBackend(state)}`);
173
+ return true;
166
174
  }
167
175
  function setWorktree(state, value) {
168
176
  if (value === "auto" || value === undefined) {
package/dist/repl.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EACL,WAAW,EACX,eAAe,EACf,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,UAAU,EACV,OAAO,EACP,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AASxC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAKzC;IACC,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,cAAc,CAAC;IACrF,MAAM,KAAK,GAAe;QACxB,OAAO;QACP,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC;QAC1D,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;QAChD,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;KAClC,CAAC;IACF,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;IAE7C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3H,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;IAEhF,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBAChF,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC5B,OAAO,OAAO,CAAC;gBACjB,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC5D,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO;gBACT,CAAC;gBACD,SAAS;YACX,CAAC;YACD,MAAM,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAAY,EAAE,KAAiB;IAC/D,MAAM,CAAC,OAAO,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClF,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,GAAG,CAAC;QACT,KAAK,MAAM;YACT,cAAc,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,GAAG;YACN,OAAO,IAAI,CAAC;QACd,KAAK,SAAS;YACZ,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,KAAK,OAAO;YACV,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,KAAK,IAAI,mBAAmB,EAAE,CAAC,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,KAAK,UAAU;YACb,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ;YACX,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ;YACX,MAAM,UAAU,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,KAAK,MAAM;YACT,MAAM,eAAe,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,KAAK,OAAO;YACV,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,KAAK,MAAM;YACT,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3E,OAAO,KAAK,CAAC;QACf,KAAK,MAAM;YACT,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAClC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,KAAK,OAAO;YACV,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACnC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;YACxD,OAAO,KAAK,CAAC;QACf,KAAK,SAAS;YACZ,MAAM,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;YAC5C,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ;YACX,MAAM,SAAS,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,KAAK,OAAO;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf;YACE,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAiB;IAC7D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,gBAAgB,GAAG,IAAI,CAAC;QACxB,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACvE,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC;YACb,IAAI;YACJ,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,QAAQ;YACrC,cAAc,EAAE,KAAK;YACrB,WAAW,EAAE,UAAU,CAAC,MAAM;YAC9B,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,IAAI,gBAAgB,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,KAAc;IAC1C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3G,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB,EAAE,KAAc;IACnD,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IACD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,YAAY,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,WAAW,CAAC,KAAiB,EAAE,KAAc;IACpD,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5C,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC1B,CAAC;SAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,UAAU,CAAC,KAAyB,EAAE,QAAiB;IAC9D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC9D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;2CAe6B,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,WAAW,CAAC,KAAiB;IACpC,KAAK,KAAK,CAAC;IACX,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,KAAiB;IACtC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACrE,CAAC;AAED,SAAS,eAAe,CAAC,OAAkB,EAAE,MAA8C;IACzF,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;IACvC,CAAC;IACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;AACrC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AACjF,CAAC"}
1
+ {"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,16 @@ export declare function startNativeRun(params: {
24
24
  focus?: boolean;
25
25
  silent?: boolean;
26
26
  }): Promise<RunRecord>;
27
+ export declare function startNativePlan(params: {
28
+ task: string;
29
+ tmuxSessionName: string;
30
+ backend?: Exclude<BackendId, "acpx">;
31
+ model?: string;
32
+ effort?: EffortLevel;
33
+ workerPaneId?: string;
34
+ focus?: boolean;
35
+ silent?: boolean;
36
+ }): Promise<RunRecord>;
27
37
  export declare function continueRun(params: {
28
38
  runId: string;
29
39
  prompt: string;
@@ -52,7 +62,7 @@ export declare function stopRun(runId: string, options?: {
52
62
  }): Promise<void>;
53
63
  export declare function mergeRun(runId: string, allowDirty?: boolean, options?: {
54
64
  silent?: boolean;
55
- }): Promise<void>;
65
+ }): Promise<RunRecord>;
56
66
  export declare function deleteRun(runId: string, options?: {
57
67
  mergeFirst?: boolean;
58
68
  force?: boolean;