Skip to content

Release utcp-http 1.1.15, utcp-websocket 1.2.1 - #117

Merged
h3xxit merged 7 commits into
mainfrom
dev
Oct 25, 2026
Merged

h3xxit merged 7 commits into
mainfrom
dev

Conversation

@h3xxit

@h3xxit h3xxit commented Oct 25, 2026

Copy link
Copy Markdown
Member

Release: utcp-http 1.1.15 and utcp-websocket 1.2.1 (#116).

Loopback hardening: a host chosen after registration can never be loopback (call-time rule), remote manuals and specs may not route the OAuth2 token POST at loopback, OpenAPI server variables resolve to their defaults, the WebSocket upgrade never follows a redirect, and WebSocket discovery applies the remote-loopback manual rule.

🤖 Generated with Claude Code

h3xxit and others added 5 commits October 25, 2026 13:55
utcp-http 1.1.15: at call time a resolved URL may be loopback only when the
template literally names a loopback host, so a `{host}` placeholder filled
with 127.0.0.1 is refused before any request leaves; a remote manual or
OpenAPI spec may not route the OAuth2 token POST at loopback either; server
variables resolve to their defaults; the converter judges the spec by its
final post-redirect URL.

utcp-websocket 1.2.1: the upgrade never follows a redirect, and a manual
discovered from a remote origin may not point tool calls or a token URL at
loopback.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- the remote-manual and converter loopback rules also classify templates
  whose port is a placeholder (``http://localhost:{port}/x``), which do not
  parse as URLs yet name loopback literally
- an explicit ``base_url`` override lifts the OpenAPI token-URL rule, as it
  lifts the server-URL rule
- a failed WebSocket discovery closes the socket and session it opened
- README: name the override that actually exists

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
A socket already in the pool may be carrying another registration's or a
tool call's traffic, so the cleanup added for failed discoveries is scoped
to connections the discovery itself opened.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…arse error

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…back-via-placeholders-and-token-url

http/websocket: a host chosen after registration can never be loopback

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 15 files

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic

h3xxit and others added 2 commits October 25, 2026 15:05
Two gaps in the cleanup added for failed discoveries: a peer that closed
(or sent an error frame) before any manual arrived left the ``try`` block
without raising and skipped the cleanup; and the cleanup judged ownership
by a pre-await snapshot alone. The no-manual case now raises inside the
``try``, and the cleanup closes the pooled socket only if this discovery
opened it and it is still the one in the pool.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Parity with typescript-utcp #60; the behaviour was already correct here.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@h3xxit
h3xxit merged commit bb8e2f6 into main Oct 25, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant