feat(rpc): add validated desktop Pi RPC command palette
This commit is contained in:
@@ -112,6 +112,70 @@ describe("workspace reducer", () => {
|
||||
});
|
||||
expect(state.runtimesById.a.pendingSubmissions).toEqual([]);
|
||||
});
|
||||
it("reconciles duplicate pending submissions one message at a time and honors Pi queue totals", () => {
|
||||
let state = reconcileWorkspace(initialWorkspaceState, workspace);
|
||||
for (const id of [1, 2])
|
||||
state = workspaceReducer(state, {
|
||||
type: "submissionAdded",
|
||||
runtimeId: "a",
|
||||
submission: {
|
||||
id,
|
||||
text: "Continue",
|
||||
userMessageCount: 0,
|
||||
phase: "sent",
|
||||
},
|
||||
});
|
||||
state = workspaceReducer(state, {
|
||||
type: "snapshotRequested",
|
||||
runtimeId: "a",
|
||||
generation: 1,
|
||||
});
|
||||
state = workspaceReducer(state, {
|
||||
type: "snapshotLoaded",
|
||||
runtimeId: "a",
|
||||
generation: 1,
|
||||
snapshot: {
|
||||
bridgeInstanceId: "epoch",
|
||||
latestSeq: 1,
|
||||
runtime: runtime("a"),
|
||||
transcript: {
|
||||
data: { messages: [{ role: "user", content: "Continue" }] },
|
||||
},
|
||||
extensions: [],
|
||||
},
|
||||
});
|
||||
expect(state.runtimesById.a.pendingSubmissions).toHaveLength(1);
|
||||
state = applyWorkspaceEvent(state, {
|
||||
bridgeInstanceId: "epoch",
|
||||
seq: 1,
|
||||
type: "runtime_event",
|
||||
data: {
|
||||
runtimeId: "a",
|
||||
eventType: "queue",
|
||||
eventData: {
|
||||
event: {
|
||||
pendingMessageCount: 3,
|
||||
followUp: ["one"],
|
||||
steering: ["two"],
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
expect(state.runtimesById.a.summary.queueCount).toBe(3);
|
||||
});
|
||||
it("keeps a hotkey-triggered new-session startup visible until completion", () => {
|
||||
let state = reconcileWorkspace(initialWorkspaceState, workspace);
|
||||
state = workspaceReducer(state, {
|
||||
type: "newSessionLaunch",
|
||||
launch: { phase: "starting", detail: "Starting a new Pi session…" },
|
||||
});
|
||||
expect(state.newSessionLaunch?.phase).toBe("starting");
|
||||
state = workspaceReducer(state, {
|
||||
type: "newSessionLaunch",
|
||||
launch: undefined,
|
||||
});
|
||||
expect(state.newSessionLaunch).toBeUndefined();
|
||||
});
|
||||
it("rejects out-of-order snapshots and detects duplicate/gap/epoch events", () => {
|
||||
let state = reconcileWorkspace(initialWorkspaceState, workspace);
|
||||
state = workspaceReducer(state, {
|
||||
|
||||
Reference in New Issue
Block a user