feat: add multi-session desktop workspace
This commit is contained in:
@@ -108,6 +108,98 @@ test("accepts bridge-managed directory and session operations", () => {
|
||||
);
|
||||
});
|
||||
|
||||
test("accepts additive multi-session runtime operations and numeric workspace cursors", () => {
|
||||
const worktreePath = "/home/alex/project";
|
||||
const sessionPath = "/home/alex/project/sessions/one.jsonl";
|
||||
for (const value of [
|
||||
{ op: "get_workspace" },
|
||||
{ op: "get_workspace_summary" },
|
||||
{ op: "create_session_runtime", payload: { worktreePath } },
|
||||
{ op: "open_session_runtime", payload: { worktreePath, sessionPath } },
|
||||
{ op: "close_session_runtime", payload: { runtimeId: "runtime-1" } },
|
||||
{ op: "list_directory_sessions", payload: { worktreePath } },
|
||||
{
|
||||
op: "get_session_runtime_snapshot",
|
||||
payload: { runtimeId: "runtime-1" },
|
||||
},
|
||||
{ op: "subscribe_workspace", payload: { cursor: 42 } },
|
||||
])
|
||||
assert.equal(parseRequestFrame(request(value)).op, value.op);
|
||||
assert.throws(
|
||||
() =>
|
||||
parseRequestFrame(
|
||||
request({
|
||||
op: "subscribe_workspace",
|
||||
payload: { cursor: "opaque" },
|
||||
}),
|
||||
),
|
||||
/cursor must be a non-negative integer/,
|
||||
);
|
||||
});
|
||||
|
||||
test("accepts native session naming and manual compaction requests", () => {
|
||||
assert.deepEqual(
|
||||
parseRequestFrame(
|
||||
request({
|
||||
op: "set_session_name",
|
||||
agentId: "agent-main",
|
||||
payload: { name: "Release UI" },
|
||||
}),
|
||||
),
|
||||
{
|
||||
version: "v1",
|
||||
id: "request-1",
|
||||
op: "set_session_name",
|
||||
agentId: "agent-main",
|
||||
payload: { name: "Release UI" },
|
||||
},
|
||||
);
|
||||
assert.deepEqual(
|
||||
parseRequestFrame(request({ op: "compact", agentId: "agent-main" })),
|
||||
{
|
||||
version: "v1",
|
||||
id: "request-1",
|
||||
op: "compact",
|
||||
agentId: "agent-main",
|
||||
},
|
||||
);
|
||||
assert.deepEqual(
|
||||
parseRequestFrame(
|
||||
request({
|
||||
op: "compact",
|
||||
agentId: "agent-main",
|
||||
payload: { customInstructions: "Preserve implementation details" },
|
||||
}),
|
||||
),
|
||||
{
|
||||
version: "v1",
|
||||
id: "request-1",
|
||||
op: "compact",
|
||||
agentId: "agent-main",
|
||||
payload: { customInstructions: "Preserve implementation details" },
|
||||
},
|
||||
);
|
||||
for (const invalidRequest of [
|
||||
request({
|
||||
op: "set_session_name",
|
||||
agentId: "agent-main",
|
||||
payload: { name: " " },
|
||||
}),
|
||||
request({
|
||||
op: "set_session_name",
|
||||
agentId: "agent-main",
|
||||
payload: { name: "Valid", extra: true },
|
||||
}),
|
||||
request({
|
||||
op: "compact",
|
||||
agentId: "agent-main",
|
||||
payload: { customInstructions: " " },
|
||||
}),
|
||||
request({ op: "compact", agentId: "agent-main", payload: { extra: true } }),
|
||||
])
|
||||
assert.throws(() => parseRequestFrame(invalidRequest), ProtocolError);
|
||||
});
|
||||
|
||||
test("accepts an agent session-statistics request", () => {
|
||||
assert.deepEqual(
|
||||
parseRequestFrame(
|
||||
|
||||
Reference in New Issue
Block a user