Repository navigation
[pull] main from UsefulSoftwareCo:main - #36
Merged
Merged
Conversation
…se (#1623) * Redact all non-allowlisted headers on spans Effect's HttpClient tracer records every request and response header on the span, masking only a four-name default blocklist. Upstream integrations carry credentials in provider-specific headers, so any name outside the list shipped verbatim to the trace backend. Invert the model: redact everything except a short allowlist of structurally safe headers. * Parent DO tool spans under the live request currentParentSpan() was a stub returning undefined, so runToolEffect always fell back to the Effect context captured when the session server was built. Every tool execution span in a legacy session parented under the long-closed construction span instead of the request that triggered it. Track the most recent request's traceparent in the DO and resolve it to an external parent span. The grammar moves to do-headers beside the producer; the worker edge parser delegates to it. * Drop zero-duration bootstrap and annotation spans mcp.host.register_tool, mcp.host.register_resource, mcp.host.create_server, mcp.request.annotate, and the executor.stack sub-spans wrap synchronous context lookups and registrations. Together they were about a fifth of weekly span ingest at exactly 0ms each, with zero recorded errors. The stack keeps its executor.stack.build umbrella span; mcp.request keeps the fingerprint attributes the annotate wrapper was duplicating onto itself. * Name workos and user_store spans by operation The two highest-volume span names in the corpus were bare "workos" and "user_store" wrappers with no attributes, swallowing every distinct SDK and store call. use() now takes the operation name, so spans read workos.userManagement.getUser and user_store.getOrganization, and failure logs say which call failed. The WorkOSClient layer construction span goes away with them: synchronous, per-build, and told us nothing. * Record exceptions on worker http.server error spans The worker-boundary catch set ERROR with no message and no exception event, leaving those spans with zero diagnostic content. Record the exception and a status message, and stamp HTTP <status> on the 5xx path. * Clarify where header-name lowercasing happens
* test: repro sign-out answering with a raw Unauthorized page
* fix: sign out browsers whose session has already ended
Sign-out was declared on the session-authenticated API group, so a browser
whose sealed session no longer authenticated at click time got a 401 from
SessionAuth instead of being signed out. The console posts sign-out as a
top-level form navigation, so that error body was rendered as the page:
a screenful of {"_tag":"Unauthorized"}.
Move the endpoint to the public group and read the sealed session off the
request cookie. Nothing here needs authorizing — the request can only end
the session whose cookie it presents — and the handler already fell back to
"/" when the cookie would not unseal.
Cookies are dropped only when the request actually presented one, so the
now-public endpoint cannot be used cross-site to sign a user out.
The account Logpush job exports workers_trace_events to Axiom, but the script-level logpush flag was lost in the July deploy migration and the export silently stopped. Pin it in config so deploys preserve it; the flag was re-enabled via API today.
* Bind span header redaction to the hosted HTTP client Live verification after the telemetry-layer redaction shipped showed post-deploy http.client spans still recording non-allowlisted headers: consumers capture the client value at construction and execute requests on fibers a host telemetry layer never reaches, so providing the redaction reference by layer was not enough. Bind it to the client itself so every request effect carries it, and keep the cloud layer as the server-side half. Regression test drives a request through the real client and asserts on the recorded span attributes. * Add DOM.Iterable to the mcp plugin tsconfig The package's tsc build failed on Headers.entries() and the iterable protocol: its lib had DOM without DOM.Iterable, so the fetch Headers type lacked both. Latent on main; every CI run served the package build from the turbo cache until the sdk change invalidated it. Same lib pairing hosts/cloudflare already uses.
* Add first-party OAuth clients (host-operated GitHub/Google apps) * Allow endpoint overrides for the first-party GitHub app in tests/dev * Launch built-in Google OAuth for Calendar and Sheets
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )