fix(run): plumb the recorded prompt back into live runs, fix lane routing when the cwd doesn't match the selected lane
- pty-run.js's publicRun() now reads promptPreview back from the dashboard_runs row it already wrote at spawn time (was persisted, never read back) — RunHandle carries it through to the client. - Workspace.tsx's onStartFromSetup no longer trusts RunSetup's always-populated laneId prop to decide whether a new lane needs ensuring — it re-resolves the target lane from the cwd the user actually typed, so starting a run with a different cwd than the currently-selected lane correctly ensures/creates the right lane instead of silently starting in the wrong one. Fixes findings from the Task 8+9+10 review that a prior fix attempt left unresolved (2f39f4e's --no-verify commit, and an incomplete diagnosis of the lane-routing bug as a test-harness artifact).
This commit is contained in:
@@ -135,4 +135,32 @@ describe("pty-run", () => {
|
||||
assert.equal(pty.laneIdFromRunId("ccam-lane-42"), 42);
|
||||
assert.equal(pty.laneIdFromRunId("not-a-run-id"), null);
|
||||
});
|
||||
|
||||
it("getRun returns the recorded prompt for a live run", () => {
|
||||
let sessionExists = false;
|
||||
tmux.__setExecImpl((args) => {
|
||||
if (args[0] === "has-session") {
|
||||
if (sessionExists) {
|
||||
return ""; // session exists
|
||||
}
|
||||
// Session doesn't exist yet
|
||||
const e = new Error("no such session");
|
||||
e.status = 1;
|
||||
throw e;
|
||||
}
|
||||
if (args[0] === "new-session") {
|
||||
sessionExists = true; // Mark session as created
|
||||
}
|
||||
return "";
|
||||
});
|
||||
const handle = pty.spawnRun({
|
||||
laneId: 99,
|
||||
cwd: "/tmp/test",
|
||||
initialPrompt: "the live prompt",
|
||||
});
|
||||
const retrieved = pty.getRun(handle.id);
|
||||
assert.equal(retrieved.id, "ccam-lane-99");
|
||||
assert.equal(retrieved.promptPreview, "the live prompt");
|
||||
assert.equal(retrieved.status, "running");
|
||||
});
|
||||
});
|
||||
|
||||
@@ -152,6 +152,7 @@ function publicRun(id) {
|
||||
resumeSessionId: row?.resume_session_id || null,
|
||||
sessionId: row?.session_id || null,
|
||||
startedAt: row?.started_at || null,
|
||||
promptPreview: row?.prompt_preview || null,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user