Skip to content

Replace fake registry SDK client in ChatGPT extension with projectless RegistryClient - #4354

Draft
ScriptedAlchemy with Copilot wants to merge 2 commits into
masterfrom
copilot/simplify-daemon-client-boundary
Draft

ScriptedAlchemy with Copilot wants to merge 2 commits into
masterfrom
copilot/simplify-daemon-client-boundary

Conversation

Copilot AI commented Oct 19, 2026 •

Copy link
Copy Markdown

Summary

  • The ChatGPT extension's registry reads went through an HTTP-shaped SDK client built with placeholder baseUrl, projectId and token values, only to satisfy its config type. This PR replaces that with an explicit projectless registry capability.
  • This is the first step of the daemon-client boundary cleanup. Project-scoped operations, session ownership and the native SDK work are not changed here.

Motivation

The registry client was created with http://127.0.0.1, "registry" and "unused-registry-reads-use-mcp", so a valid operation needed a fictitious endpoint and credential to be invoked. Registry scope should be expressed directly rather than through values that are never used.

Changes

  • src/server/registry-client.ts (new): RegistryClient exposes projectList and projectContext. It takes no URL, project ID or token.
    • Tool names and request/result decoders come from the generated OPERATIONS catalog in @tracedecay/sdk. Nothing is redefined by hand.
    • The constructor throws if either operation is missing from the catalog or is no longer MCP-backed.
    • Abort, transport and malformed-result errors map to the same SDK error classes as before. failureFromSdk therefore needs no change.
  • src/server/bridge.ts: #registryClient() now returns a RegistryClient wired to the existing projectless ServeSession. listProjects and resolveProject call it directly. Project handles are unchanged.
  • README.md: documents the registry path separately from the MCP and HTTP project operations.

Test plan

  • The affected Bazel targets pass
  • bazel build //... passes when the change crosses package boundaries
  • Tested manually (describe below if applicable)

Run locally with npx after building the SDK with rslib, since this environment has no Bazel build:

  • tsc --noEmit is clean.
  • test/adapter.test.ts passes.
  • test/extension.test.ts needs the Bazel-built tracedecay binary, which was not available. Its registry and project journeys have not been run against a real daemon, so please run them in CI.

Checklist

  • CHANGELOG.md updated (under [Unreleased] if no version bump)
  • No secrets, credentials, or .env files included
  • Breaking changes documented (if any)

@changeset-bot

changeset-bot Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: de75bec

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Co-authored-by: ScriptedAlchemy <25274700+ScriptedAlchemy@users.noreply.github.com>
Copilot AI changed the title [WIP] Simplify the daemon client boundary across HTTP and MCP operations Replace fake registry SDK client in ChatGPT extension with projectless RegistryClient Oct 19, 2026
Copilot AI requested a review from ScriptedAlchemy October 19, 2026 04:13

This branch has not been deployed

No deployments
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.

Simplify the extension's daemon client boundary across HTTP and MCP operations

2 participants