Merge branch 'main' into dev

Resolve 38 conflicts preserving both sides' work:
- Server: DB-based registries (dev) + WorkspaceGitService/DaemonConfigStore (main)
- App: script proxy/voice MCP (dev) + pin/hide tabs/bootstrap boundary (main)
- Shared: WorkspaceScriptPayload (dev) + git/GitHub runtime schemas (main)
- Deleted workspace-registry-bootstrap.ts (dev's DB approach supersedes)
This commit is contained in:
Mohamed Boudra
2026-04-14 03:05:45 +07:00
333 changed files with 13490 additions and 6317 deletions
@@ -142,6 +142,46 @@ describe("shared tool-call display mapping", () => {
});
});
it("humanizes Paseo MCP tool names (Claude Code format)", () => {
const display = buildToolCallDisplayModel({
name: "mcp__paseo__create_agent",
status: "running",
error: null,
detail: { type: "unknown", input: null, output: null },
});
expect(display.displayName).toBe("Create Agent");
});
it("humanizes Paseo MCP tool names (Codex format)", () => {
const display = buildToolCallDisplayModel({
name: "paseo.create_agent",
status: "running",
error: null,
detail: { type: "unknown", input: null, output: null },
});
expect(display.displayName).toBe("Create Agent");
});
it("humanizes list_agents Paseo tool", () => {
const display = buildToolCallDisplayModel({
name: "mcp__paseo__list_agents",
status: "running",
error: null,
detail: { type: "unknown", input: null, output: null },
});
expect(display.displayName).toBe("List Agents");
});
it("does not override speak tool display name", () => {
const display = buildToolCallDisplayModel({
name: "speak",
status: "running",
error: null,
detail: { type: "unknown", input: null, output: null },
});
expect(display.displayName).toBe("Speak");
});
it("labels plan detail rows as Plan", () => {
const display = buildToolCallDisplayModel({
name: "plan",