• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / toolhive-studio / 25725621879
70%

Build:
DEFAULT BRANCH: main
Ran 12 May 2026 09:29AM UTC
Jobs 1
Files 507
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

12 May 2026 09:25AM UTC coverage: 68.448% (+0.5%) from 67.958%
25725621879

push

github

web-flow
feat(api): migrate thv API transport from HTTP to UNIX socket / Windows named pipe (#1694)

* feat(api): move from http to socket

* fix(api): re-register IPC fetch handlers cleanly on dev hot reload

* chore: add start:inspect script for main-process network inspection

* test(toolhive-manager): align tests with socket-based startToolhive

* test(e2e): route thvFetch through UNIX socket via http.request

* fix(api): route main-process workload clients through socket transport

Three sites in main were still building http://localhost:${port} for the thv API: fetchWorkloads() in chat/mcp-tools.ts, the workload-validation step in chat/settings-storage.ts, and defaultBuildClient() in chat/agents/builtin-agent-tools/skills.ts. After the socket migration getToolhivePort() returns undefined for the managed thv, so those calls hit http://localhost:undefined and threw — silently breaking the playground MCP-tools toggle (handleToggleTool catches and toasts), the post-install MCP-tools cleanup, and the skills agent.

Add createMainProcessApiClient() and hasToolhiveConnection() helpers in unix-socket-fetch.ts that wrap createMainProcessFetch(). Callers get a hey-api Client with the live transport (socket or TCP fallback) without having to know which one is in use; the baseUrl is a sentinel that the custom fetch ignores.

Replace the three call sites with the helper. Surfaced by playground.spec.ts which used to time out waiting for the 'N tools' badge after enabling an MCP server.

* feat(toolhive-manager): use Windows named pipes for thv socket transport

Windows AF_UNIX sockets created in %TEMP% fail with EACCES on connect because of the DACLs Go's os.Chmod(0660) sets in pkg/api/server.go — same-user access is not enough on common Windows builds. Named pipes are the canonical Windows IPC (Podman Desktop uses the same approach), have no filesystem ACL semantics to fight, are released by the kernel when the listener closes, and are accepted by Node's http.request... (continued)

4766 of 7529 branches covered (63.3%)

133 of 149 new or added lines in 15 files covered. (89.26%)

17 existing lines in 3 files now uncovered.

7148 of 10443 relevant lines covered (68.45%)

119.51 hits per line

Uncovered Changes

Lines Coverage ∆ File
6
0.0
renderer/src/common/components/custom-socket-banner.tsx
2
68.79
0.23% main/src/chat/agents/builtin-agent-tools/skills.ts
2
0.0
0.0% renderer/src/renderer.tsx
1
0.0
0.0% main/src/app-events/block-quit.ts
1
16.67
2.38% main/src/app-events/process-signals.ts
1
1.64
0.05% main/src/app-events/when-ready.ts
1
3.7
0.03% main/src/chat/settings-storage.ts
1
86.88
-3.42% main/src/toolhive-manager.ts
1
0.0
0.0% renderer/src/lib/client-config.ts

Coverage Regressions

Lines Coverage ∆ File
15
86.88
-3.42% main/src/toolhive-manager.ts
1
1.64
0.05% main/src/app-events/when-ready.ts
1
0.0
0.0% renderer/src/lib/client-config.ts
Jobs
ID Job ID Ran Files Coverage
1 25725621879.1 12 May 2026 09:29AM UTC 507
68.45
GitHub Action Run
Source Files on build 25725621879
  • Tree
  • List 507
  • Changed 13
  • Source Changed 13
  • Coverage Changed 11
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #25725621879
  • 0e7bf2ba on github
  • Prev Build on main (#25723597681)
  • Next Build on main (#25727555259)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc