feat(providers): add Muse Code - #51

Merged
logancsack merged 2 commits into
mainfrom
feature/muse-code-provider
Aug 6, 2026
Merged

feat(providers): add Muse Code#51
logancsack merged 2 commits into
mainfrom
feature/muse-code-provider

Conversation

@logancsack

@logancsacklogancsack commented Aug 5, 2026

Copy link
Copy Markdown
Owner

What Changed

  • Add Muse Code as a first-class provider across contracts, runtime discovery, model selection, text generation, session handling, reviews, and provider settings.
  • Support both Meta sign-in and Meta API-key authentication, including auth-state refresh and actionable errors.
  • Add a managed-runtime gate: standalone T3 exposes Muse by default, while managed DevPC builds fail closed unless T3CODE_MUSE_ENABLED is explicitly enabled.
  • Make production relay deployment and public releases explicit-only in this fork by removing automatic push/scheduled publication triggers, with regression tests for both workflow boundaries.

Why

Aldo needs a Codex-quality Muse integration for an internal staging evaluation. Meta's CLI and guidance are still early, so the provider must remain unavailable in managed production and must not leak into an automatic relay or public nightly release.

UI Changes

Browser QA used the production build with the exact pinned Muse CLI (0.1.0-R708.1) at desktop (1440x1000) and mobile (390x844). Verified the provider row, Beta badge, CLI version/auth status, Meta sign-in/API-key chooser, API-key flow, and additional-provider dialog. Mobile had no horizontal overflow and the browser console had no errors. Screenshots are attached in a PR comment.

Verification

  • Original changed-test suite: 25 files, 351 tests passed
  • ProviderRegistry.test.ts after the CI fixture update: 44 tests passed
  • pnpm --filter t3 typecheck
  • pnpm --filter @t3tools/web typecheck
  • pnpm --filter @t3tools/contracts typecheck
  • pnpm --filter @t3tools/scripts typecheck
  • Targeted lint and format checks
  • Managed and standalone production builds
  • Exact Muse binary checksum/version verification
  • Managed production-style browser QA at desktop and mobile viewports
  • git diff --check origin/main

Local Node was 22.23.2 versus the repository's declared ^24.13.1; all commands above passed, and GitHub Actions remains the release gate.

Deployment Boundary

  • Merging does not deploy the production relay or publish a public nightly.
  • Managed Muse defaults off. Aldo staging explicitly opts in; Aldo production explicitly opts out and removes the CLI.
  • No production deployment is part of this change.

Checklist

  • The change is scoped to the Muse provider and the publication controls needed to keep it staging-only
  • I explained what changed and why
  • Desktop and mobile screenshots are attached
  • Interactive flows were exercised at both viewports

@cursor

cursorBot commented Aug 5, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 5, 2026
@coderabbitai

coderabbitaiBot commented Aug 5, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@logancsack, you've reached your PR review limit, so we couldn't start this review.

Next review available in:48 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 49dd83a9-f83e-4b4a-84f6-bd42c82dc5b5

📥 Commits

Reviewing files that changed from the base of the PR and between 82f2ad0 and 7bf653c.

📒 Files selected for processing (59)
  • .github/workflows/deploy-relay.yml
  • .github/workflows/release.yml
  • README.md
  • apps/server/src/authConnector/AuthConnectorManager.test.ts
  • apps/server/src/authConnector/AuthConnectorManager.ts
  • apps/server/src/bin.test.ts
  • apps/server/src/cli/config.test.ts
  • apps/server/src/cli/config.ts
  • apps/server/src/config.ts
  • apps/server/src/environment/ServerEnvironment.test.ts
  • apps/server/src/provider/Drivers/MuseDriver.test.ts
  • apps/server/src/provider/Drivers/MuseDriver.ts
  • apps/server/src/provider/Layers/CodexAdapter.test.ts
  • apps/server/src/provider/Layers/MuseAdapter.test.ts
  • apps/server/src/provider/Layers/MuseAdapter.ts
  • apps/server/src/provider/Layers/MuseProtocol.test.ts
  • apps/server/src/provider/Layers/MuseProtocol.ts
  • apps/server/src/provider/Layers/MuseProvider.test.ts
  • apps/server/src/provider/Layers/MuseProvider.ts
  • apps/server/src/provider/Layers/OpenCodeAdapter.test.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.test.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryLive.test.ts
  • apps/server/src/provider/Layers/ProviderRegistry.test.ts
  • apps/server/src/provider/Layers/ProviderService.test.ts
  • apps/server/src/provider/Layers/ProviderService.ts
  • apps/server/src/provider/Layers/ProviderSessionDirectory.test.ts
  • apps/server/src/provider/Layers/ProviderSessionDirectory.ts
  • apps/server/src/provider/Services/MuseAdapter.ts
  • apps/server/src/provider/Services/ProviderSessionDirectory.ts
  • apps/server/src/provider/builtInDrivers.ts
  • apps/server/src/server.test.ts
  • apps/server/src/textGeneration/MuseTextGeneration.test.ts
  • apps/server/src/textGeneration/MuseTextGeneration.ts
  • apps/server/src/textGeneration/TextGeneration.ts
  • apps/web/src/components/Icons.tsx
  • apps/web/src/components/chat/providerIconUtils.test.ts
  • apps/web/src/components/chat/providerIconUtils.ts
  • apps/web/src/components/settings/AddProviderInstanceDialog.tsx
  • apps/web/src/components/settings/ProviderModelsSection.tsx
  • apps/web/src/components/settings/ProviderSettingsForm.test.ts
  • apps/web/src/components/settings/SettingsPanels.tsx
  • apps/web/src/components/settings/authConnectorMethods.test.ts
  • apps/web/src/components/settings/authConnectorMethods.ts
  • apps/web/src/components/settings/providerDriverMeta.ts
  • apps/web/src/lib/contextWindow.test.ts
  • apps/web/src/lib/contextWindow.ts
  • apps/web/src/session-logic.ts
  • docs/README.md
  • docs/providers/muse.md
  • packages/contracts/src/authConnector.test.ts
  • packages/contracts/src/authConnector.ts
  • packages/contracts/src/model.test.ts
  • packages/contracts/src/model.ts
  • packages/contracts/src/providerRuntime.ts
  • packages/contracts/src/settings.test.ts
  • packages/contracts/src/settings.ts
  • scripts/deploy-relay-workflow.test.ts
  • scripts/release-workflow.test.ts
📝 Walkthrough

Walkthrough

This PR adds Muse Code as a provider. It adds contracts, authentication, CLI execution, provider status checks, text generation, session safety, runtime gating, web settings, documentation, and manual deployment triggers.

Changes

Muse Code provider integration

Layer / File(s)Summary
Contracts, configuration, and authentication
packages/contracts/..., apps/server/src/config.ts, apps/server/src/cli/..., apps/server/src/authConnector/..., .github/workflows/...
Muse settings, provider metadata, runtime configuration, authentication flows, host validation, and manual workflow triggers are added.
Muse protocol and adapter
apps/server/src/provider/Layers/MuseProtocol.*, apps/server/src/provider/Layers/MuseAdapter.*, apps/server/src/provider/Services/MuseAdapter.ts
Muse JSONL events, launch arguments, sessions, streaming, tools, planning, interruption, failures, and unsupported operations are implemented.
Provider status and driver wiring
apps/server/src/provider/Layers/MuseProvider.*, apps/server/src/provider/Drivers/MuseDriver.*, apps/server/src/provider/builtInDrivers.ts, apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.*
The provider probes the CLI, discovers skills and credentials, creates instances, and respects the museCodeEnabled runtime gate.
Text generation
apps/server/src/textGeneration/*
Muse-backed generation supports Git content, thread titles, branch names, structured output, timeouts, sanitization, and normalized errors.
Session lifecycle safety
apps/server/src/provider/Layers/ProviderService.*, apps/server/src/provider/Layers/ProviderSessionDirectory.*, apps/server/src/provider/Services/ProviderSessionDirectory.ts
Session generations, conditional persistence, lifecycle locks, race handling, and uninterruptible stop cleanup are added.
Web support and documentation
apps/web/..., README.md, docs/...
Muse appears in provider metadata, icons, settings, authentication methods, display names, setup documentation, and provider guides.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

Suggested reviewers:juliusmarminge

Poem

I hopped through JSON lines bright,
Muse sessions start just right.
Locks guard turns from race and fuss,
New icons bloom for all of us.
The rabbit stamps the docs with cheer.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/muse-code-provider

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@logancsack

logancsack commented Aug 5, 2026

Copy link
Copy Markdown
OwnerAuthor

Browser QA on the production build with Muse Code 0.1.0-R708.1:

  • Desktop provider settings and additional-provider picker
  • Mobile Meta API-key flow at 390x844 with no horizontal overflow
providers-desktopadd-provider-desktopmuse-api-key-mobile

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:b4cb428600

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

if (input.method !== "account" && input.method !== "api-key") return null;
return input.method === "api-key"
? {
command: "muse",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Honor the configured Muse binary during authentication

When a Muse instance uses the supported binaryPath setting because muse is not on PATH, its health checks and turns use that configured executable, but both Connect flows still spawn the literal muse command here. Consequently, the provider can appear installed and usable while Meta sign-in and API-key setup fail to start; pass the target instance/configuration through the connector and resolve the same binary path used by MuseDriver.

Useful? React with 👍 / 👎.

@logancsacklogancsack reopened this Aug 6, 2026

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:7bf653c5c6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +114 to +117
driver !== MUSE_DRIVER_KIND ||
providers.some(
(provider) => provider.driver === MUSE_DRIVER_KIND && provider.availability !== "unavailable",
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Distinguish a disabled driver from a failed Muse instance

When a standalone Muse instance fails config decoding or driver creation, ProviderInstanceRegistryLive.ts emits the same availability: "unavailable" shadow used for an unregistered driver (see lines 137–192). If that is the only Muse instance, this predicate treats the entire driver as unsupported, causing both the provider settings row and add-instance option to disappear; the user therefore cannot see the reported failure or edit/delete the broken configuration. Gate Muse using an explicit server capability rather than the availability of its current instances.

Useful? React with 👍 / 👎.

@logancsack
logancsack merged commit 5043537 into mainAug 6, 2026
14 of 15 checks passed
@coderabbitaicoderabbitaiBot mentioned this pull request Aug 6, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXLvouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@logancsack@codex
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(providers): add Muse Code - #51

Merged
logancsack merged 2 commits into
mainfrom
feature/muse-code-provider
Aug 6, 2026
Merged

feat(providers): add Muse Code#51
logancsack merged 2 commits into
mainfrom
feature/muse-code-provider

Conversation

@logancsack

@logancsacklogancsack commented Aug 5, 2026

Copy link
Copy Markdown
Owner

What Changed

  • Add Muse Code as a first-class provider across contracts, runtime discovery, model selection, text generation, session handling, reviews, and provider settings.
  • Support both Meta sign-in and Meta API-key authentication, including auth-state refresh and actionable errors.
  • Add a managed-runtime gate: standalone T3 exposes Muse by default, while managed DevPC builds fail closed unless T3CODE_MUSE_ENABLED is explicitly enabled.
  • Make production relay deployment and public releases explicit-only in this fork by removing automatic push/scheduled publication triggers, with regression tests for both workflow boundaries.

Why

Aldo needs a Codex-quality Muse integration for an internal staging evaluation. Meta's CLI and guidance are still early, so the provider must remain unavailable in managed production and must not leak into an automatic relay or public nightly release.

UI Changes

Browser QA used the production build with the exact pinned Muse CLI (0.1.0-R708.1) at desktop (1440x1000) and mobile (390x844). Verified the provider row, Beta badge, CLI version/auth status, Meta sign-in/API-key chooser, API-key flow, and additional-provider dialog. Mobile had no horizontal overflow and the browser console had no errors. Screenshots are attached in a PR comment.

Verification

  • Original changed-test suite: 25 files, 351 tests passed
  • ProviderRegistry.test.ts after the CI fixture update: 44 tests passed
  • pnpm --filter t3 typecheck
  • pnpm --filter @t3tools/web typecheck
  • pnpm --filter @t3tools/contracts typecheck
  • pnpm --filter @t3tools/scripts typecheck
  • Targeted lint and format checks
  • Managed and standalone production builds
  • Exact Muse binary checksum/version verification
  • Managed production-style browser QA at desktop and mobile viewports
  • git diff --check origin/main

Local Node was 22.23.2 versus the repository's declared ^24.13.1; all commands above passed, and GitHub Actions remains the release gate.

Deployment Boundary

  • Merging does not deploy the production relay or publish a public nightly.
  • Managed Muse defaults off. Aldo staging explicitly opts in; Aldo production explicitly opts out and removes the CLI.
  • No production deployment is part of this change.

Checklist

  • The change is scoped to the Muse provider and the publication controls needed to keep it staging-only
  • I explained what changed and why
  • Desktop and mobile screenshots are attached
  • Interactive flows were exercised at both viewports

@cursor

cursorBot commented Aug 5, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 5, 2026
@coderabbitai

coderabbitaiBot commented Aug 5, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@logancsack, you've reached your PR review limit, so we couldn't start this review.

Next review available in:48 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 49dd83a9-f83e-4b4a-84f6-bd42c82dc5b5

📥 Commits

Reviewing files that changed from the base of the PR and between 82f2ad0 and 7bf653c.

📒 Files selected for processing (59)
  • .github/workflows/deploy-relay.yml
  • .github/workflows/release.yml
  • README.md
  • apps/server/src/authConnector/AuthConnectorManager.test.ts
  • apps/server/src/authConnector/AuthConnectorManager.ts
  • apps/server/src/bin.test.ts
  • apps/server/src/cli/config.test.ts
  • apps/server/src/cli/config.ts
  • apps/server/src/config.ts
  • apps/server/src/environment/ServerEnvironment.test.ts
  • apps/server/src/provider/Drivers/MuseDriver.test.ts
  • apps/server/src/provider/Drivers/MuseDriver.ts
  • apps/server/src/provider/Layers/CodexAdapter.test.ts
  • apps/server/src/provider/Layers/MuseAdapter.test.ts
  • apps/server/src/provider/Layers/MuseAdapter.ts
  • apps/server/src/provider/Layers/MuseProtocol.test.ts
  • apps/server/src/provider/Layers/MuseProtocol.ts
  • apps/server/src/provider/Layers/MuseProvider.test.ts
  • apps/server/src/provider/Layers/MuseProvider.ts
  • apps/server/src/provider/Layers/OpenCodeAdapter.test.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.test.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryLive.test.ts
  • apps/server/src/provider/Layers/ProviderRegistry.test.ts
  • apps/server/src/provider/Layers/ProviderService.test.ts
  • apps/server/src/provider/Layers/ProviderService.ts
  • apps/server/src/provider/Layers/ProviderSessionDirectory.test.ts
  • apps/server/src/provider/Layers/ProviderSessionDirectory.ts
  • apps/server/src/provider/Services/MuseAdapter.ts
  • apps/server/src/provider/Services/ProviderSessionDirectory.ts
  • apps/server/src/provider/builtInDrivers.ts
  • apps/server/src/server.test.ts
  • apps/server/src/textGeneration/MuseTextGeneration.test.ts
  • apps/server/src/textGeneration/MuseTextGeneration.ts
  • apps/server/src/textGeneration/TextGeneration.ts
  • apps/web/src/components/Icons.tsx
  • apps/web/src/components/chat/providerIconUtils.test.ts
  • apps/web/src/components/chat/providerIconUtils.ts
  • apps/web/src/components/settings/AddProviderInstanceDialog.tsx
  • apps/web/src/components/settings/ProviderModelsSection.tsx
  • apps/web/src/components/settings/ProviderSettingsForm.test.ts
  • apps/web/src/components/settings/SettingsPanels.tsx
  • apps/web/src/components/settings/authConnectorMethods.test.ts
  • apps/web/src/components/settings/authConnectorMethods.ts
  • apps/web/src/components/settings/providerDriverMeta.ts
  • apps/web/src/lib/contextWindow.test.ts
  • apps/web/src/lib/contextWindow.ts
  • apps/web/src/session-logic.ts
  • docs/README.md
  • docs/providers/muse.md
  • packages/contracts/src/authConnector.test.ts
  • packages/contracts/src/authConnector.ts
  • packages/contracts/src/model.test.ts
  • packages/contracts/src/model.ts
  • packages/contracts/src/providerRuntime.ts
  • packages/contracts/src/settings.test.ts
  • packages/contracts/src/settings.ts
  • scripts/deploy-relay-workflow.test.ts
  • scripts/release-workflow.test.ts
📝 Walkthrough

Walkthrough

This PR adds Muse Code as a provider. It adds contracts, authentication, CLI execution, provider status checks, text generation, session safety, runtime gating, web settings, documentation, and manual deployment triggers.

Changes

Muse Code provider integration

Layer / File(s)Summary
Contracts, configuration, and authentication
packages/contracts/..., apps/server/src/config.ts, apps/server/src/cli/..., apps/server/src/authConnector/..., .github/workflows/...
Muse settings, provider metadata, runtime configuration, authentication flows, host validation, and manual workflow triggers are added.
Muse protocol and adapter
apps/server/src/provider/Layers/MuseProtocol.*, apps/server/src/provider/Layers/MuseAdapter.*, apps/server/src/provider/Services/MuseAdapter.ts
Muse JSONL events, launch arguments, sessions, streaming, tools, planning, interruption, failures, and unsupported operations are implemented.
Provider status and driver wiring
apps/server/src/provider/Layers/MuseProvider.*, apps/server/src/provider/Drivers/MuseDriver.*, apps/server/src/provider/builtInDrivers.ts, apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.*
The provider probes the CLI, discovers skills and credentials, creates instances, and respects the museCodeEnabled runtime gate.
Text generation
apps/server/src/textGeneration/*
Muse-backed generation supports Git content, thread titles, branch names, structured output, timeouts, sanitization, and normalized errors.
Session lifecycle safety
apps/server/src/provider/Layers/ProviderService.*, apps/server/src/provider/Layers/ProviderSessionDirectory.*, apps/server/src/provider/Services/ProviderSessionDirectory.ts
Session generations, conditional persistence, lifecycle locks, race handling, and uninterruptible stop cleanup are added.
Web support and documentation
apps/web/..., README.md, docs/...
Muse appears in provider metadata, icons, settings, authentication methods, display names, setup documentation, and provider guides.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

Suggested reviewers:juliusmarminge

Poem

I hopped through JSON lines bright,
Muse sessions start just right.
Locks guard turns from race and fuss,
New icons bloom for all of us.
The rabbit stamps the docs with cheer.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/muse-code-provider

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@logancsack

logancsack commented Aug 5, 2026

Copy link
Copy Markdown
OwnerAuthor

Browser QA on the production build with Muse Code 0.1.0-R708.1:

  • Desktop provider settings and additional-provider picker
  • Mobile Meta API-key flow at 390x844 with no horizontal overflow
providers-desktopadd-provider-desktopmuse-api-key-mobile

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:b4cb428600

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

if (input.method !== "account" && input.method !== "api-key") return null;
return input.method === "api-key"
? {
command: "muse",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Honor the configured Muse binary during authentication

When a Muse instance uses the supported binaryPath setting because muse is not on PATH, its health checks and turns use that configured executable, but both Connect flows still spawn the literal muse command here. Consequently, the provider can appear installed and usable while Meta sign-in and API-key setup fail to start; pass the target instance/configuration through the connector and resolve the same binary path used by MuseDriver.

Useful? React with 👍 / 👎.

@logancsacklogancsack reopened this Aug 6, 2026

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:7bf653c5c6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +114 to +117
driver !== MUSE_DRIVER_KIND ||
providers.some(
(provider) => provider.driver === MUSE_DRIVER_KIND && provider.availability !== "unavailable",
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Distinguish a disabled driver from a failed Muse instance

When a standalone Muse instance fails config decoding or driver creation, ProviderInstanceRegistryLive.ts emits the same availability: "unavailable" shadow used for an unregistered driver (see lines 137–192). If that is the only Muse instance, this predicate treats the entire driver as unsupported, causing both the provider settings row and add-instance option to disappear; the user therefore cannot see the reported failure or edit/delete the broken configuration. Gate Muse using an explicit server capability rather than the availability of its current instances.

Useful? React with 👍 / 👎.

@logancsack
logancsack merged commit 5043537 into mainAug 6, 2026
14 of 15 checks passed
@coderabbitaicoderabbitaiBot mentioned this pull request Aug 6, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXLvouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@logancsack@codex
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(providers): add Muse Code - #51

Merged
logancsack merged 2 commits into
mainfrom
feature/muse-code-provider
Aug 6, 2026
Merged

feat(providers): add Muse Code#51
logancsack merged 2 commits into
mainfrom
feature/muse-code-provider

Conversation

@logancsack

@logancsacklogancsack commented Aug 5, 2026

Copy link
Copy Markdown
Owner

What Changed

  • Add Muse Code as a first-class provider across contracts, runtime discovery, model selection, text generation, session handling, reviews, and provider settings.
  • Support both Meta sign-in and Meta API-key authentication, including auth-state refresh and actionable errors.
  • Add a managed-runtime gate: standalone T3 exposes Muse by default, while managed DevPC builds fail closed unless T3CODE_MUSE_ENABLED is explicitly enabled.
  • Make production relay deployment and public releases explicit-only in this fork by removing automatic push/scheduled publication triggers, with regression tests for both workflow boundaries.

Why

Aldo needs a Codex-quality Muse integration for an internal staging evaluation. Meta's CLI and guidance are still early, so the provider must remain unavailable in managed production and must not leak into an automatic relay or public nightly release.

UI Changes

Browser QA used the production build with the exact pinned Muse CLI (0.1.0-R708.1) at desktop (1440x1000) and mobile (390x844). Verified the provider row, Beta badge, CLI version/auth status, Meta sign-in/API-key chooser, API-key flow, and additional-provider dialog. Mobile had no horizontal overflow and the browser console had no errors. Screenshots are attached in a PR comment.

Verification

  • Original changed-test suite: 25 files, 351 tests passed
  • ProviderRegistry.test.ts after the CI fixture update: 44 tests passed
  • pnpm --filter t3 typecheck
  • pnpm --filter @t3tools/web typecheck
  • pnpm --filter @t3tools/contracts typecheck
  • pnpm --filter @t3tools/scripts typecheck
  • Targeted lint and format checks
  • Managed and standalone production builds
  • Exact Muse binary checksum/version verification
  • Managed production-style browser QA at desktop and mobile viewports
  • git diff --check origin/main

Local Node was 22.23.2 versus the repository's declared ^24.13.1; all commands above passed, and GitHub Actions remains the release gate.

Deployment Boundary

  • Merging does not deploy the production relay or publish a public nightly.
  • Managed Muse defaults off. Aldo staging explicitly opts in; Aldo production explicitly opts out and removes the CLI.
  • No production deployment is part of this change.

Checklist

  • The change is scoped to the Muse provider and the publication controls needed to keep it staging-only
  • I explained what changed and why
  • Desktop and mobile screenshots are attached
  • Interactive flows were exercised at both viewports

@cursor

cursorBot commented Aug 5, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 5, 2026
@coderabbitai

coderabbitaiBot commented Aug 5, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@logancsack, you've reached your PR review limit, so we couldn't start this review.

Next review available in:48 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 49dd83a9-f83e-4b4a-84f6-bd42c82dc5b5

📥 Commits

Reviewing files that changed from the base of the PR and between 82f2ad0 and 7bf653c.

📒 Files selected for processing (59)
  • .github/workflows/deploy-relay.yml
  • .github/workflows/release.yml
  • README.md
  • apps/server/src/authConnector/AuthConnectorManager.test.ts
  • apps/server/src/authConnector/AuthConnectorManager.ts
  • apps/server/src/bin.test.ts
  • apps/server/src/cli/config.test.ts
  • apps/server/src/cli/config.ts
  • apps/server/src/config.ts
  • apps/server/src/environment/ServerEnvironment.test.ts
  • apps/server/src/provider/Drivers/MuseDriver.test.ts
  • apps/server/src/provider/Drivers/MuseDriver.ts
  • apps/server/src/provider/Layers/CodexAdapter.test.ts
  • apps/server/src/provider/Layers/MuseAdapter.test.ts
  • apps/server/src/provider/Layers/MuseAdapter.ts
  • apps/server/src/provider/Layers/MuseProtocol.test.ts
  • apps/server/src/provider/Layers/MuseProtocol.ts
  • apps/server/src/provider/Layers/MuseProvider.test.ts
  • apps/server/src/provider/Layers/MuseProvider.ts
  • apps/server/src/provider/Layers/OpenCodeAdapter.test.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.test.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryLive.test.ts
  • apps/server/src/provider/Layers/ProviderRegistry.test.ts
  • apps/server/src/provider/Layers/ProviderService.test.ts
  • apps/server/src/provider/Layers/ProviderService.ts
  • apps/server/src/provider/Layers/ProviderSessionDirectory.test.ts
  • apps/server/src/provider/Layers/ProviderSessionDirectory.ts
  • apps/server/src/provider/Services/MuseAdapter.ts
  • apps/server/src/provider/Services/ProviderSessionDirectory.ts
  • apps/server/src/provider/builtInDrivers.ts
  • apps/server/src/server.test.ts
  • apps/server/src/textGeneration/MuseTextGeneration.test.ts
  • apps/server/src/textGeneration/MuseTextGeneration.ts
  • apps/server/src/textGeneration/TextGeneration.ts
  • apps/web/src/components/Icons.tsx
  • apps/web/src/components/chat/providerIconUtils.test.ts
  • apps/web/src/components/chat/providerIconUtils.ts
  • apps/web/src/components/settings/AddProviderInstanceDialog.tsx
  • apps/web/src/components/settings/ProviderModelsSection.tsx
  • apps/web/src/components/settings/ProviderSettingsForm.test.ts
  • apps/web/src/components/settings/SettingsPanels.tsx
  • apps/web/src/components/settings/authConnectorMethods.test.ts
  • apps/web/src/components/settings/authConnectorMethods.ts
  • apps/web/src/components/settings/providerDriverMeta.ts
  • apps/web/src/lib/contextWindow.test.ts
  • apps/web/src/lib/contextWindow.ts
  • apps/web/src/session-logic.ts
  • docs/README.md
  • docs/providers/muse.md
  • packages/contracts/src/authConnector.test.ts
  • packages/contracts/src/authConnector.ts
  • packages/contracts/src/model.test.ts
  • packages/contracts/src/model.ts
  • packages/contracts/src/providerRuntime.ts
  • packages/contracts/src/settings.test.ts
  • packages/contracts/src/settings.ts
  • scripts/deploy-relay-workflow.test.ts
  • scripts/release-workflow.test.ts
📝 Walkthrough

Walkthrough

This PR adds Muse Code as a provider. It adds contracts, authentication, CLI execution, provider status checks, text generation, session safety, runtime gating, web settings, documentation, and manual deployment triggers.

Changes

Muse Code provider integration

Layer / File(s)Summary
Contracts, configuration, and authentication
packages/contracts/..., apps/server/src/config.ts, apps/server/src/cli/..., apps/server/src/authConnector/..., .github/workflows/...
Muse settings, provider metadata, runtime configuration, authentication flows, host validation, and manual workflow triggers are added.
Muse protocol and adapter
apps/server/src/provider/Layers/MuseProtocol.*, apps/server/src/provider/Layers/MuseAdapter.*, apps/server/src/provider/Services/MuseAdapter.ts
Muse JSONL events, launch arguments, sessions, streaming, tools, planning, interruption, failures, and unsupported operations are implemented.
Provider status and driver wiring
apps/server/src/provider/Layers/MuseProvider.*, apps/server/src/provider/Drivers/MuseDriver.*, apps/server/src/provider/builtInDrivers.ts, apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.*
The provider probes the CLI, discovers skills and credentials, creates instances, and respects the museCodeEnabled runtime gate.
Text generation
apps/server/src/textGeneration/*
Muse-backed generation supports Git content, thread titles, branch names, structured output, timeouts, sanitization, and normalized errors.
Session lifecycle safety
apps/server/src/provider/Layers/ProviderService.*, apps/server/src/provider/Layers/ProviderSessionDirectory.*, apps/server/src/provider/Services/ProviderSessionDirectory.ts
Session generations, conditional persistence, lifecycle locks, race handling, and uninterruptible stop cleanup are added.
Web support and documentation
apps/web/..., README.md, docs/...
Muse appears in provider metadata, icons, settings, authentication methods, display names, setup documentation, and provider guides.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

Suggested reviewers:juliusmarminge

Poem

I hopped through JSON lines bright,
Muse sessions start just right.
Locks guard turns from race and fuss,
New icons bloom for all of us.
The rabbit stamps the docs with cheer.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/muse-code-provider

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@logancsack

logancsack commented Aug 5, 2026

Copy link
Copy Markdown
OwnerAuthor

Browser QA on the production build with Muse Code 0.1.0-R708.1:

  • Desktop provider settings and additional-provider picker
  • Mobile Meta API-key flow at 390x844 with no horizontal overflow
providers-desktopadd-provider-desktopmuse-api-key-mobile

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:b4cb428600

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

if (input.method !== "account" && input.method !== "api-key") return null;
return input.method === "api-key"
? {
command: "muse",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Honor the configured Muse binary during authentication

When a Muse instance uses the supported binaryPath setting because muse is not on PATH, its health checks and turns use that configured executable, but both Connect flows still spawn the literal muse command here. Consequently, the provider can appear installed and usable while Meta sign-in and API-key setup fail to start; pass the target instance/configuration through the connector and resolve the same binary path used by MuseDriver.

Useful? React with 👍 / 👎.

@logancsacklogancsack reopened this Aug 6, 2026

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:7bf653c5c6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +114 to +117
driver !== MUSE_DRIVER_KIND ||
providers.some(
(provider) => provider.driver === MUSE_DRIVER_KIND && provider.availability !== "unavailable",
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Distinguish a disabled driver from a failed Muse instance

When a standalone Muse instance fails config decoding or driver creation, ProviderInstanceRegistryLive.ts emits the same availability: "unavailable" shadow used for an unregistered driver (see lines 137–192). If that is the only Muse instance, this predicate treats the entire driver as unsupported, causing both the provider settings row and add-instance option to disappear; the user therefore cannot see the reported failure or edit/delete the broken configuration. Gate Muse using an explicit server capability rather than the availability of its current instances.

Useful? React with 👍 / 👎.

@logancsack
logancsack merged commit 5043537 into mainAug 6, 2026
14 of 15 checks passed
@coderabbitaicoderabbitaiBot mentioned this pull request Aug 6, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXLvouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@logancsack@codex
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(providers): add Muse Code - #51

Merged
logancsack merged 2 commits into
mainfrom
feature/muse-code-provider
Aug 6, 2026
Merged

feat(providers): add Muse Code#51
logancsack merged 2 commits into
mainfrom
feature/muse-code-provider

Conversation

@logancsack

@logancsacklogancsack commented Aug 5, 2026

Copy link
Copy Markdown
Owner

What Changed

  • Add Muse Code as a first-class provider across contracts, runtime discovery, model selection, text generation, session handling, reviews, and provider settings.
  • Support both Meta sign-in and Meta API-key authentication, including auth-state refresh and actionable errors.
  • Add a managed-runtime gate: standalone T3 exposes Muse by default, while managed DevPC builds fail closed unless T3CODE_MUSE_ENABLED is explicitly enabled.
  • Make production relay deployment and public releases explicit-only in this fork by removing automatic push/scheduled publication triggers, with regression tests for both workflow boundaries.

Why

Aldo needs a Codex-quality Muse integration for an internal staging evaluation. Meta's CLI and guidance are still early, so the provider must remain unavailable in managed production and must not leak into an automatic relay or public nightly release.

UI Changes

Browser QA used the production build with the exact pinned Muse CLI (0.1.0-R708.1) at desktop (1440x1000) and mobile (390x844). Verified the provider row, Beta badge, CLI version/auth status, Meta sign-in/API-key chooser, API-key flow, and additional-provider dialog. Mobile had no horizontal overflow and the browser console had no errors. Screenshots are attached in a PR comment.

Verification

  • Original changed-test suite: 25 files, 351 tests passed
  • ProviderRegistry.test.ts after the CI fixture update: 44 tests passed
  • pnpm --filter t3 typecheck
  • pnpm --filter @t3tools/web typecheck
  • pnpm --filter @t3tools/contracts typecheck
  • pnpm --filter @t3tools/scripts typecheck
  • Targeted lint and format checks
  • Managed and standalone production builds
  • Exact Muse binary checksum/version verification
  • Managed production-style browser QA at desktop and mobile viewports
  • git diff --check origin/main

Local Node was 22.23.2 versus the repository's declared ^24.13.1; all commands above passed, and GitHub Actions remains the release gate.

Deployment Boundary

  • Merging does not deploy the production relay or publish a public nightly.
  • Managed Muse defaults off. Aldo staging explicitly opts in; Aldo production explicitly opts out and removes the CLI.
  • No production deployment is part of this change.

Checklist

  • The change is scoped to the Muse provider and the publication controls needed to keep it staging-only
  • I explained what changed and why
  • Desktop and mobile screenshots are attached
  • Interactive flows were exercised at both viewports

@cursor

cursorBot commented Aug 5, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 5, 2026
@coderabbitai

coderabbitaiBot commented Aug 5, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@logancsack, you've reached your PR review limit, so we couldn't start this review.

Next review available in:48 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 49dd83a9-f83e-4b4a-84f6-bd42c82dc5b5

📥 Commits

Reviewing files that changed from the base of the PR and between 82f2ad0 and 7bf653c.

📒 Files selected for processing (59)
  • .github/workflows/deploy-relay.yml
  • .github/workflows/release.yml
  • README.md
  • apps/server/src/authConnector/AuthConnectorManager.test.ts
  • apps/server/src/authConnector/AuthConnectorManager.ts
  • apps/server/src/bin.test.ts
  • apps/server/src/cli/config.test.ts
  • apps/server/src/cli/config.ts
  • apps/server/src/config.ts
  • apps/server/src/environment/ServerEnvironment.test.ts
  • apps/server/src/provider/Drivers/MuseDriver.test.ts
  • apps/server/src/provider/Drivers/MuseDriver.ts
  • apps/server/src/provider/Layers/CodexAdapter.test.ts
  • apps/server/src/provider/Layers/MuseAdapter.test.ts
  • apps/server/src/provider/Layers/MuseAdapter.ts
  • apps/server/src/provider/Layers/MuseProtocol.test.ts
  • apps/server/src/provider/Layers/MuseProtocol.ts
  • apps/server/src/provider/Layers/MuseProvider.test.ts
  • apps/server/src/provider/Layers/MuseProvider.ts
  • apps/server/src/provider/Layers/OpenCodeAdapter.test.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.test.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryLive.test.ts
  • apps/server/src/provider/Layers/ProviderRegistry.test.ts
  • apps/server/src/provider/Layers/ProviderService.test.ts
  • apps/server/src/provider/Layers/ProviderService.ts
  • apps/server/src/provider/Layers/ProviderSessionDirectory.test.ts
  • apps/server/src/provider/Layers/ProviderSessionDirectory.ts
  • apps/server/src/provider/Services/MuseAdapter.ts
  • apps/server/src/provider/Services/ProviderSessionDirectory.ts
  • apps/server/src/provider/builtInDrivers.ts
  • apps/server/src/server.test.ts
  • apps/server/src/textGeneration/MuseTextGeneration.test.ts
  • apps/server/src/textGeneration/MuseTextGeneration.ts
  • apps/server/src/textGeneration/TextGeneration.ts
  • apps/web/src/components/Icons.tsx
  • apps/web/src/components/chat/providerIconUtils.test.ts
  • apps/web/src/components/chat/providerIconUtils.ts
  • apps/web/src/components/settings/AddProviderInstanceDialog.tsx
  • apps/web/src/components/settings/ProviderModelsSection.tsx
  • apps/web/src/components/settings/ProviderSettingsForm.test.ts
  • apps/web/src/components/settings/SettingsPanels.tsx
  • apps/web/src/components/settings/authConnectorMethods.test.ts
  • apps/web/src/components/settings/authConnectorMethods.ts
  • apps/web/src/components/settings/providerDriverMeta.ts
  • apps/web/src/lib/contextWindow.test.ts
  • apps/web/src/lib/contextWindow.ts
  • apps/web/src/session-logic.ts
  • docs/README.md
  • docs/providers/muse.md
  • packages/contracts/src/authConnector.test.ts
  • packages/contracts/src/authConnector.ts
  • packages/contracts/src/model.test.ts
  • packages/contracts/src/model.ts
  • packages/contracts/src/providerRuntime.ts
  • packages/contracts/src/settings.test.ts
  • packages/contracts/src/settings.ts
  • scripts/deploy-relay-workflow.test.ts
  • scripts/release-workflow.test.ts
📝 Walkthrough

Walkthrough

This PR adds Muse Code as a provider. It adds contracts, authentication, CLI execution, provider status checks, text generation, session safety, runtime gating, web settings, documentation, and manual deployment triggers.

Changes

Muse Code provider integration

Layer / File(s)Summary
Contracts, configuration, and authentication
packages/contracts/..., apps/server/src/config.ts, apps/server/src/cli/..., apps/server/src/authConnector/..., .github/workflows/...
Muse settings, provider metadata, runtime configuration, authentication flows, host validation, and manual workflow triggers are added.
Muse protocol and adapter
apps/server/src/provider/Layers/MuseProtocol.*, apps/server/src/provider/Layers/MuseAdapter.*, apps/server/src/provider/Services/MuseAdapter.ts
Muse JSONL events, launch arguments, sessions, streaming, tools, planning, interruption, failures, and unsupported operations are implemented.
Provider status and driver wiring
apps/server/src/provider/Layers/MuseProvider.*, apps/server/src/provider/Drivers/MuseDriver.*, apps/server/src/provider/builtInDrivers.ts, apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.*
The provider probes the CLI, discovers skills and credentials, creates instances, and respects the museCodeEnabled runtime gate.
Text generation
apps/server/src/textGeneration/*
Muse-backed generation supports Git content, thread titles, branch names, structured output, timeouts, sanitization, and normalized errors.
Session lifecycle safety
apps/server/src/provider/Layers/ProviderService.*, apps/server/src/provider/Layers/ProviderSessionDirectory.*, apps/server/src/provider/Services/ProviderSessionDirectory.ts
Session generations, conditional persistence, lifecycle locks, race handling, and uninterruptible stop cleanup are added.
Web support and documentation
apps/web/..., README.md, docs/...
Muse appears in provider metadata, icons, settings, authentication methods, display names, setup documentation, and provider guides.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

Suggested reviewers:juliusmarminge

Poem

I hopped through JSON lines bright,
Muse sessions start just right.
Locks guard turns from race and fuss,
New icons bloom for all of us.
The rabbit stamps the docs with cheer.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/muse-code-provider

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@logancsack

logancsack commented Aug 5, 2026

Copy link
Copy Markdown
OwnerAuthor

Browser QA on the production build with Muse Code 0.1.0-R708.1:

  • Desktop provider settings and additional-provider picker
  • Mobile Meta API-key flow at 390x844 with no horizontal overflow
providers-desktopadd-provider-desktopmuse-api-key-mobile

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:b4cb428600

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

if (input.method !== "account" && input.method !== "api-key") return null;
return input.method === "api-key"
? {
command: "muse",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Honor the configured Muse binary during authentication

When a Muse instance uses the supported binaryPath setting because muse is not on PATH, its health checks and turns use that configured executable, but both Connect flows still spawn the literal muse command here. Consequently, the provider can appear installed and usable while Meta sign-in and API-key setup fail to start; pass the target instance/configuration through the connector and resolve the same binary path used by MuseDriver.

Useful? React with 👍 / 👎.

@logancsacklogancsack reopened this Aug 6, 2026

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:7bf653c5c6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +114 to +117
driver !== MUSE_DRIVER_KIND ||
providers.some(
(provider) => provider.driver === MUSE_DRIVER_KIND && provider.availability !== "unavailable",
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Distinguish a disabled driver from a failed Muse instance

When a standalone Muse instance fails config decoding or driver creation, ProviderInstanceRegistryLive.ts emits the same availability: "unavailable" shadow used for an unregistered driver (see lines 137–192). If that is the only Muse instance, this predicate treats the entire driver as unsupported, causing both the provider settings row and add-instance option to disappear; the user therefore cannot see the reported failure or edit/delete the broken configuration. Gate Muse using an explicit server capability rather than the availability of its current instances.

Useful? React with 👍 / 👎.

@logancsack
logancsack merged commit 5043537 into mainAug 6, 2026
14 of 15 checks passed
@coderabbitaicoderabbitaiBot mentioned this pull request Aug 6, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXLvouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@logancsack@codex
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(providers): add Muse Code - #51

Merged
logancsack merged 2 commits into
mainfrom
feature/muse-code-provider
Aug 6, 2026
Merged

feat(providers): add Muse Code#51
logancsack merged 2 commits into
mainfrom
feature/muse-code-provider

Conversation

@logancsack

@logancsacklogancsack commented Aug 5, 2026

Copy link
Copy Markdown
Owner

What Changed

  • Add Muse Code as a first-class provider across contracts, runtime discovery, model selection, text generation, session handling, reviews, and provider settings.
  • Support both Meta sign-in and Meta API-key authentication, including auth-state refresh and actionable errors.
  • Add a managed-runtime gate: standalone T3 exposes Muse by default, while managed DevPC builds fail closed unless T3CODE_MUSE_ENABLED is explicitly enabled.
  • Make production relay deployment and public releases explicit-only in this fork by removing automatic push/scheduled publication triggers, with regression tests for both workflow boundaries.

Why

Aldo needs a Codex-quality Muse integration for an internal staging evaluation. Meta's CLI and guidance are still early, so the provider must remain unavailable in managed production and must not leak into an automatic relay or public nightly release.

UI Changes

Browser QA used the production build with the exact pinned Muse CLI (0.1.0-R708.1) at desktop (1440x1000) and mobile (390x844). Verified the provider row, Beta badge, CLI version/auth status, Meta sign-in/API-key chooser, API-key flow, and additional-provider dialog. Mobile had no horizontal overflow and the browser console had no errors. Screenshots are attached in a PR comment.

Verification

  • Original changed-test suite: 25 files, 351 tests passed
  • ProviderRegistry.test.ts after the CI fixture update: 44 tests passed
  • pnpm --filter t3 typecheck
  • pnpm --filter @t3tools/web typecheck
  • pnpm --filter @t3tools/contracts typecheck
  • pnpm --filter @t3tools/scripts typecheck
  • Targeted lint and format checks
  • Managed and standalone production builds
  • Exact Muse binary checksum/version verification
  • Managed production-style browser QA at desktop and mobile viewports
  • git diff --check origin/main

Local Node was 22.23.2 versus the repository's declared ^24.13.1; all commands above passed, and GitHub Actions remains the release gate.

Deployment Boundary

  • Merging does not deploy the production relay or publish a public nightly.
  • Managed Muse defaults off. Aldo staging explicitly opts in; Aldo production explicitly opts out and removes the CLI.
  • No production deployment is part of this change.

Checklist

  • The change is scoped to the Muse provider and the publication controls needed to keep it staging-only
  • I explained what changed and why
  • Desktop and mobile screenshots are attached
  • Interactive flows were exercised at both viewports

@cursor

cursorBot commented Aug 5, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 5, 2026
@coderabbitai

coderabbitaiBot commented Aug 5, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@logancsack, you've reached your PR review limit, so we couldn't start this review.

Next review available in:48 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 49dd83a9-f83e-4b4a-84f6-bd42c82dc5b5

📥 Commits

Reviewing files that changed from the base of the PR and between 82f2ad0 and 7bf653c.

📒 Files selected for processing (59)
  • .github/workflows/deploy-relay.yml
  • .github/workflows/release.yml
  • README.md
  • apps/server/src/authConnector/AuthConnectorManager.test.ts
  • apps/server/src/authConnector/AuthConnectorManager.ts
  • apps/server/src/bin.test.ts
  • apps/server/src/cli/config.test.ts
  • apps/server/src/cli/config.ts
  • apps/server/src/config.ts
  • apps/server/src/environment/ServerEnvironment.test.ts
  • apps/server/src/provider/Drivers/MuseDriver.test.ts
  • apps/server/src/provider/Drivers/MuseDriver.ts
  • apps/server/src/provider/Layers/CodexAdapter.test.ts
  • apps/server/src/provider/Layers/MuseAdapter.test.ts
  • apps/server/src/provider/Layers/MuseAdapter.ts
  • apps/server/src/provider/Layers/MuseProtocol.test.ts
  • apps/server/src/provider/Layers/MuseProtocol.ts
  • apps/server/src/provider/Layers/MuseProvider.test.ts
  • apps/server/src/provider/Layers/MuseProvider.ts
  • apps/server/src/provider/Layers/OpenCodeAdapter.test.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.test.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryLive.test.ts
  • apps/server/src/provider/Layers/ProviderRegistry.test.ts
  • apps/server/src/provider/Layers/ProviderService.test.ts
  • apps/server/src/provider/Layers/ProviderService.ts
  • apps/server/src/provider/Layers/ProviderSessionDirectory.test.ts
  • apps/server/src/provider/Layers/ProviderSessionDirectory.ts
  • apps/server/src/provider/Services/MuseAdapter.ts
  • apps/server/src/provider/Services/ProviderSessionDirectory.ts
  • apps/server/src/provider/builtInDrivers.ts
  • apps/server/src/server.test.ts
  • apps/server/src/textGeneration/MuseTextGeneration.test.ts
  • apps/server/src/textGeneration/MuseTextGeneration.ts
  • apps/server/src/textGeneration/TextGeneration.ts
  • apps/web/src/components/Icons.tsx
  • apps/web/src/components/chat/providerIconUtils.test.ts
  • apps/web/src/components/chat/providerIconUtils.ts
  • apps/web/src/components/settings/AddProviderInstanceDialog.tsx
  • apps/web/src/components/settings/ProviderModelsSection.tsx
  • apps/web/src/components/settings/ProviderSettingsForm.test.ts
  • apps/web/src/components/settings/SettingsPanels.tsx
  • apps/web/src/components/settings/authConnectorMethods.test.ts
  • apps/web/src/components/settings/authConnectorMethods.ts
  • apps/web/src/components/settings/providerDriverMeta.ts
  • apps/web/src/lib/contextWindow.test.ts
  • apps/web/src/lib/contextWindow.ts
  • apps/web/src/session-logic.ts
  • docs/README.md
  • docs/providers/muse.md
  • packages/contracts/src/authConnector.test.ts
  • packages/contracts/src/authConnector.ts
  • packages/contracts/src/model.test.ts
  • packages/contracts/src/model.ts
  • packages/contracts/src/providerRuntime.ts
  • packages/contracts/src/settings.test.ts
  • packages/contracts/src/settings.ts
  • scripts/deploy-relay-workflow.test.ts
  • scripts/release-workflow.test.ts
📝 Walkthrough

Walkthrough

This PR adds Muse Code as a provider. It adds contracts, authentication, CLI execution, provider status checks, text generation, session safety, runtime gating, web settings, documentation, and manual deployment triggers.

Changes

Muse Code provider integration

Layer / File(s)Summary
Contracts, configuration, and authentication
packages/contracts/..., apps/server/src/config.ts, apps/server/src/cli/..., apps/server/src/authConnector/..., .github/workflows/...
Muse settings, provider metadata, runtime configuration, authentication flows, host validation, and manual workflow triggers are added.
Muse protocol and adapter
apps/server/src/provider/Layers/MuseProtocol.*, apps/server/src/provider/Layers/MuseAdapter.*, apps/server/src/provider/Services/MuseAdapter.ts
Muse JSONL events, launch arguments, sessions, streaming, tools, planning, interruption, failures, and unsupported operations are implemented.
Provider status and driver wiring
apps/server/src/provider/Layers/MuseProvider.*, apps/server/src/provider/Drivers/MuseDriver.*, apps/server/src/provider/builtInDrivers.ts, apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.*
The provider probes the CLI, discovers skills and credentials, creates instances, and respects the museCodeEnabled runtime gate.
Text generation
apps/server/src/textGeneration/*
Muse-backed generation supports Git content, thread titles, branch names, structured output, timeouts, sanitization, and normalized errors.
Session lifecycle safety
apps/server/src/provider/Layers/ProviderService.*, apps/server/src/provider/Layers/ProviderSessionDirectory.*, apps/server/src/provider/Services/ProviderSessionDirectory.ts
Session generations, conditional persistence, lifecycle locks, race handling, and uninterruptible stop cleanup are added.
Web support and documentation
apps/web/..., README.md, docs/...
Muse appears in provider metadata, icons, settings, authentication methods, display names, setup documentation, and provider guides.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

Suggested reviewers:juliusmarminge

Poem

I hopped through JSON lines bright,
Muse sessions start just right.
Locks guard turns from race and fuss,
New icons bloom for all of us.
The rabbit stamps the docs with cheer.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/muse-code-provider

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@logancsack

logancsack commented Aug 5, 2026

Copy link
Copy Markdown
OwnerAuthor

Browser QA on the production build with Muse Code 0.1.0-R708.1:

  • Desktop provider settings and additional-provider picker
  • Mobile Meta API-key flow at 390x844 with no horizontal overflow
providers-desktopadd-provider-desktopmuse-api-key-mobile

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:b4cb428600

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

if (input.method !== "account" && input.method !== "api-key") return null;
return input.method === "api-key"
? {
command: "muse",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Honor the configured Muse binary during authentication

When a Muse instance uses the supported binaryPath setting because muse is not on PATH, its health checks and turns use that configured executable, but both Connect flows still spawn the literal muse command here. Consequently, the provider can appear installed and usable while Meta sign-in and API-key setup fail to start; pass the target instance/configuration through the connector and resolve the same binary path used by MuseDriver.

Useful? React with 👍 / 👎.

@logancsacklogancsack reopened this Aug 6, 2026

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:7bf653c5c6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +114 to +117
driver !== MUSE_DRIVER_KIND ||
providers.some(
(provider) => provider.driver === MUSE_DRIVER_KIND && provider.availability !== "unavailable",
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Distinguish a disabled driver from a failed Muse instance

When a standalone Muse instance fails config decoding or driver creation, ProviderInstanceRegistryLive.ts emits the same availability: "unavailable" shadow used for an unregistered driver (see lines 137–192). If that is the only Muse instance, this predicate treats the entire driver as unsupported, causing both the provider settings row and add-instance option to disappear; the user therefore cannot see the reported failure or edit/delete the broken configuration. Gate Muse using an explicit server capability rather than the availability of its current instances.

Useful? React with 👍 / 👎.

@logancsack
logancsack merged commit 5043537 into mainAug 6, 2026
14 of 15 checks passed
@coderabbitaicoderabbitaiBot mentioned this pull request Aug 6, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXLvouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@logancsack@codex
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(providers): add Muse Code - #51

Merged
logancsack merged 2 commits into
mainfrom
feature/muse-code-provider
Aug 6, 2026
Merged

feat(providers): add Muse Code#51
logancsack merged 2 commits into
mainfrom
feature/muse-code-provider

Conversation

@logancsack

@logancsacklogancsack commented Aug 5, 2026

Copy link
Copy Markdown
Owner

What Changed

  • Add Muse Code as a first-class provider across contracts, runtime discovery, model selection, text generation, session handling, reviews, and provider settings.
  • Support both Meta sign-in and Meta API-key authentication, including auth-state refresh and actionable errors.
  • Add a managed-runtime gate: standalone T3 exposes Muse by default, while managed DevPC builds fail closed unless T3CODE_MUSE_ENABLED is explicitly enabled.
  • Make production relay deployment and public releases explicit-only in this fork by removing automatic push/scheduled publication triggers, with regression tests for both workflow boundaries.

Why

Aldo needs a Codex-quality Muse integration for an internal staging evaluation. Meta's CLI and guidance are still early, so the provider must remain unavailable in managed production and must not leak into an automatic relay or public nightly release.

UI Changes

Browser QA used the production build with the exact pinned Muse CLI (0.1.0-R708.1) at desktop (1440x1000) and mobile (390x844). Verified the provider row, Beta badge, CLI version/auth status, Meta sign-in/API-key chooser, API-key flow, and additional-provider dialog. Mobile had no horizontal overflow and the browser console had no errors. Screenshots are attached in a PR comment.

Verification

  • Original changed-test suite: 25 files, 351 tests passed
  • ProviderRegistry.test.ts after the CI fixture update: 44 tests passed
  • pnpm --filter t3 typecheck
  • pnpm --filter @t3tools/web typecheck
  • pnpm --filter @t3tools/contracts typecheck
  • pnpm --filter @t3tools/scripts typecheck
  • Targeted lint and format checks
  • Managed and standalone production builds
  • Exact Muse binary checksum/version verification
  • Managed production-style browser QA at desktop and mobile viewports
  • git diff --check origin/main

Local Node was 22.23.2 versus the repository's declared ^24.13.1; all commands above passed, and GitHub Actions remains the release gate.

Deployment Boundary

  • Merging does not deploy the production relay or publish a public nightly.
  • Managed Muse defaults off. Aldo staging explicitly opts in; Aldo production explicitly opts out and removes the CLI.
  • No production deployment is part of this change.

Checklist

  • The change is scoped to the Muse provider and the publication controls needed to keep it staging-only
  • I explained what changed and why
  • Desktop and mobile screenshots are attached
  • Interactive flows were exercised at both viewports

@cursor

cursorBot commented Aug 5, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 5, 2026
@coderabbitai

coderabbitaiBot commented Aug 5, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@logancsack, you've reached your PR review limit, so we couldn't start this review.

Next review available in:48 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 49dd83a9-f83e-4b4a-84f6-bd42c82dc5b5

📥 Commits

Reviewing files that changed from the base of the PR and between 82f2ad0 and 7bf653c.

📒 Files selected for processing (59)
  • .github/workflows/deploy-relay.yml
  • .github/workflows/release.yml
  • README.md
  • apps/server/src/authConnector/AuthConnectorManager.test.ts
  • apps/server/src/authConnector/AuthConnectorManager.ts
  • apps/server/src/bin.test.ts
  • apps/server/src/cli/config.test.ts
  • apps/server/src/cli/config.ts
  • apps/server/src/config.ts
  • apps/server/src/environment/ServerEnvironment.test.ts
  • apps/server/src/provider/Drivers/MuseDriver.test.ts
  • apps/server/src/provider/Drivers/MuseDriver.ts
  • apps/server/src/provider/Layers/CodexAdapter.test.ts
  • apps/server/src/provider/Layers/MuseAdapter.test.ts
  • apps/server/src/provider/Layers/MuseAdapter.ts
  • apps/server/src/provider/Layers/MuseProtocol.test.ts
  • apps/server/src/provider/Layers/MuseProtocol.ts
  • apps/server/src/provider/Layers/MuseProvider.test.ts
  • apps/server/src/provider/Layers/MuseProvider.ts
  • apps/server/src/provider/Layers/OpenCodeAdapter.test.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.test.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryLive.test.ts
  • apps/server/src/provider/Layers/ProviderRegistry.test.ts
  • apps/server/src/provider/Layers/ProviderService.test.ts
  • apps/server/src/provider/Layers/ProviderService.ts
  • apps/server/src/provider/Layers/ProviderSessionDirectory.test.ts
  • apps/server/src/provider/Layers/ProviderSessionDirectory.ts
  • apps/server/src/provider/Services/MuseAdapter.ts
  • apps/server/src/provider/Services/ProviderSessionDirectory.ts
  • apps/server/src/provider/builtInDrivers.ts
  • apps/server/src/server.test.ts
  • apps/server/src/textGeneration/MuseTextGeneration.test.ts
  • apps/server/src/textGeneration/MuseTextGeneration.ts
  • apps/server/src/textGeneration/TextGeneration.ts
  • apps/web/src/components/Icons.tsx
  • apps/web/src/components/chat/providerIconUtils.test.ts
  • apps/web/src/components/chat/providerIconUtils.ts
  • apps/web/src/components/settings/AddProviderInstanceDialog.tsx
  • apps/web/src/components/settings/ProviderModelsSection.tsx
  • apps/web/src/components/settings/ProviderSettingsForm.test.ts
  • apps/web/src/components/settings/SettingsPanels.tsx
  • apps/web/src/components/settings/authConnectorMethods.test.ts
  • apps/web/src/components/settings/authConnectorMethods.ts
  • apps/web/src/components/settings/providerDriverMeta.ts
  • apps/web/src/lib/contextWindow.test.ts
  • apps/web/src/lib/contextWindow.ts
  • apps/web/src/session-logic.ts
  • docs/README.md
  • docs/providers/muse.md
  • packages/contracts/src/authConnector.test.ts
  • packages/contracts/src/authConnector.ts
  • packages/contracts/src/model.test.ts
  • packages/contracts/src/model.ts
  • packages/contracts/src/providerRuntime.ts
  • packages/contracts/src/settings.test.ts
  • packages/contracts/src/settings.ts
  • scripts/deploy-relay-workflow.test.ts
  • scripts/release-workflow.test.ts
📝 Walkthrough

Walkthrough

This PR adds Muse Code as a provider. It adds contracts, authentication, CLI execution, provider status checks, text generation, session safety, runtime gating, web settings, documentation, and manual deployment triggers.

Changes

Muse Code provider integration

Layer / File(s)Summary
Contracts, configuration, and authentication
packages/contracts/..., apps/server/src/config.ts, apps/server/src/cli/..., apps/server/src/authConnector/..., .github/workflows/...
Muse settings, provider metadata, runtime configuration, authentication flows, host validation, and manual workflow triggers are added.
Muse protocol and adapter
apps/server/src/provider/Layers/MuseProtocol.*, apps/server/src/provider/Layers/MuseAdapter.*, apps/server/src/provider/Services/MuseAdapter.ts
Muse JSONL events, launch arguments, sessions, streaming, tools, planning, interruption, failures, and unsupported operations are implemented.
Provider status and driver wiring
apps/server/src/provider/Layers/MuseProvider.*, apps/server/src/provider/Drivers/MuseDriver.*, apps/server/src/provider/builtInDrivers.ts, apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.*
The provider probes the CLI, discovers skills and credentials, creates instances, and respects the museCodeEnabled runtime gate.
Text generation
apps/server/src/textGeneration/*
Muse-backed generation supports Git content, thread titles, branch names, structured output, timeouts, sanitization, and normalized errors.
Session lifecycle safety
apps/server/src/provider/Layers/ProviderService.*, apps/server/src/provider/Layers/ProviderSessionDirectory.*, apps/server/src/provider/Services/ProviderSessionDirectory.ts
Session generations, conditional persistence, lifecycle locks, race handling, and uninterruptible stop cleanup are added.
Web support and documentation
apps/web/..., README.md, docs/...
Muse appears in provider metadata, icons, settings, authentication methods, display names, setup documentation, and provider guides.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

Suggested reviewers:juliusmarminge

Poem

I hopped through JSON lines bright,
Muse sessions start just right.
Locks guard turns from race and fuss,
New icons bloom for all of us.
The rabbit stamps the docs with cheer.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/muse-code-provider

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@logancsack

logancsack commented Aug 5, 2026

Copy link
Copy Markdown
OwnerAuthor

Browser QA on the production build with Muse Code 0.1.0-R708.1:

  • Desktop provider settings and additional-provider picker
  • Mobile Meta API-key flow at 390x844 with no horizontal overflow
providers-desktopadd-provider-desktopmuse-api-key-mobile

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:b4cb428600

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

if (input.method !== "account" && input.method !== "api-key") return null;
return input.method === "api-key"
? {
command: "muse",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Honor the configured Muse binary during authentication

When a Muse instance uses the supported binaryPath setting because muse is not on PATH, its health checks and turns use that configured executable, but both Connect flows still spawn the literal muse command here. Consequently, the provider can appear installed and usable while Meta sign-in and API-key setup fail to start; pass the target instance/configuration through the connector and resolve the same binary path used by MuseDriver.

Useful? React with 👍 / 👎.

@logancsacklogancsack reopened this Aug 6, 2026

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:7bf653c5c6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +114 to +117
driver !== MUSE_DRIVER_KIND ||
providers.some(
(provider) => provider.driver === MUSE_DRIVER_KIND && provider.availability !== "unavailable",
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Distinguish a disabled driver from a failed Muse instance

When a standalone Muse instance fails config decoding or driver creation, ProviderInstanceRegistryLive.ts emits the same availability: "unavailable" shadow used for an unregistered driver (see lines 137–192). If that is the only Muse instance, this predicate treats the entire driver as unsupported, causing both the provider settings row and add-instance option to disappear; the user therefore cannot see the reported failure or edit/delete the broken configuration. Gate Muse using an explicit server capability rather than the availability of its current instances.

Useful? React with 👍 / 👎.

@logancsack
logancsack merged commit 5043537 into mainAug 6, 2026
14 of 15 checks passed
@coderabbitaicoderabbitaiBot mentioned this pull request Aug 6, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXLvouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@logancsack@codex
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(providers): add Muse Code - #51

Merged
logancsack merged 2 commits into
mainfrom
feature/muse-code-provider
Aug 6, 2026
Merged

feat(providers): add Muse Code#51
logancsack merged 2 commits into
mainfrom
feature/muse-code-provider

Conversation

@logancsack

@logancsacklogancsack commented Aug 5, 2026

Copy link
Copy Markdown
Owner

What Changed

  • Add Muse Code as a first-class provider across contracts, runtime discovery, model selection, text generation, session handling, reviews, and provider settings.
  • Support both Meta sign-in and Meta API-key authentication, including auth-state refresh and actionable errors.
  • Add a managed-runtime gate: standalone T3 exposes Muse by default, while managed DevPC builds fail closed unless T3CODE_MUSE_ENABLED is explicitly enabled.
  • Make production relay deployment and public releases explicit-only in this fork by removing automatic push/scheduled publication triggers, with regression tests for both workflow boundaries.

Why

Aldo needs a Codex-quality Muse integration for an internal staging evaluation. Meta's CLI and guidance are still early, so the provider must remain unavailable in managed production and must not leak into an automatic relay or public nightly release.

UI Changes

Browser QA used the production build with the exact pinned Muse CLI (0.1.0-R708.1) at desktop (1440x1000) and mobile (390x844). Verified the provider row, Beta badge, CLI version/auth status, Meta sign-in/API-key chooser, API-key flow, and additional-provider dialog. Mobile had no horizontal overflow and the browser console had no errors. Screenshots are attached in a PR comment.

Verification

  • Original changed-test suite: 25 files, 351 tests passed
  • ProviderRegistry.test.ts after the CI fixture update: 44 tests passed
  • pnpm --filter t3 typecheck
  • pnpm --filter @t3tools/web typecheck
  • pnpm --filter @t3tools/contracts typecheck
  • pnpm --filter @t3tools/scripts typecheck
  • Targeted lint and format checks
  • Managed and standalone production builds
  • Exact Muse binary checksum/version verification
  • Managed production-style browser QA at desktop and mobile viewports
  • git diff --check origin/main

Local Node was 22.23.2 versus the repository's declared ^24.13.1; all commands above passed, and GitHub Actions remains the release gate.

Deployment Boundary

  • Merging does not deploy the production relay or publish a public nightly.
  • Managed Muse defaults off. Aldo staging explicitly opts in; Aldo production explicitly opts out and removes the CLI.
  • No production deployment is part of this change.

Checklist

  • The change is scoped to the Muse provider and the publication controls needed to keep it staging-only
  • I explained what changed and why
  • Desktop and mobile screenshots are attached
  • Interactive flows were exercised at both viewports

@cursor

cursorBot commented Aug 5, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 5, 2026
@coderabbitai

coderabbitaiBot commented Aug 5, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@logancsack, you've reached your PR review limit, so we couldn't start this review.

Next review available in:48 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 49dd83a9-f83e-4b4a-84f6-bd42c82dc5b5

📥 Commits

Reviewing files that changed from the base of the PR and between 82f2ad0 and 7bf653c.

📒 Files selected for processing (59)
  • .github/workflows/deploy-relay.yml
  • .github/workflows/release.yml
  • README.md
  • apps/server/src/authConnector/AuthConnectorManager.test.ts
  • apps/server/src/authConnector/AuthConnectorManager.ts
  • apps/server/src/bin.test.ts
  • apps/server/src/cli/config.test.ts
  • apps/server/src/cli/config.ts
  • apps/server/src/config.ts
  • apps/server/src/environment/ServerEnvironment.test.ts
  • apps/server/src/provider/Drivers/MuseDriver.test.ts
  • apps/server/src/provider/Drivers/MuseDriver.ts
  • apps/server/src/provider/Layers/CodexAdapter.test.ts
  • apps/server/src/provider/Layers/MuseAdapter.test.ts
  • apps/server/src/provider/Layers/MuseAdapter.ts
  • apps/server/src/provider/Layers/MuseProtocol.test.ts
  • apps/server/src/provider/Layers/MuseProtocol.ts
  • apps/server/src/provider/Layers/MuseProvider.test.ts
  • apps/server/src/provider/Layers/MuseProvider.ts
  • apps/server/src/provider/Layers/OpenCodeAdapter.test.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.test.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryLive.test.ts
  • apps/server/src/provider/Layers/ProviderRegistry.test.ts
  • apps/server/src/provider/Layers/ProviderService.test.ts
  • apps/server/src/provider/Layers/ProviderService.ts
  • apps/server/src/provider/Layers/ProviderSessionDirectory.test.ts
  • apps/server/src/provider/Layers/ProviderSessionDirectory.ts
  • apps/server/src/provider/Services/MuseAdapter.ts
  • apps/server/src/provider/Services/ProviderSessionDirectory.ts
  • apps/server/src/provider/builtInDrivers.ts
  • apps/server/src/server.test.ts
  • apps/server/src/textGeneration/MuseTextGeneration.test.ts
  • apps/server/src/textGeneration/MuseTextGeneration.ts
  • apps/server/src/textGeneration/TextGeneration.ts
  • apps/web/src/components/Icons.tsx
  • apps/web/src/components/chat/providerIconUtils.test.ts
  • apps/web/src/components/chat/providerIconUtils.ts
  • apps/web/src/components/settings/AddProviderInstanceDialog.tsx
  • apps/web/src/components/settings/ProviderModelsSection.tsx
  • apps/web/src/components/settings/ProviderSettingsForm.test.ts
  • apps/web/src/components/settings/SettingsPanels.tsx
  • apps/web/src/components/settings/authConnectorMethods.test.ts
  • apps/web/src/components/settings/authConnectorMethods.ts
  • apps/web/src/components/settings/providerDriverMeta.ts
  • apps/web/src/lib/contextWindow.test.ts
  • apps/web/src/lib/contextWindow.ts
  • apps/web/src/session-logic.ts
  • docs/README.md
  • docs/providers/muse.md
  • packages/contracts/src/authConnector.test.ts
  • packages/contracts/src/authConnector.ts
  • packages/contracts/src/model.test.ts
  • packages/contracts/src/model.ts
  • packages/contracts/src/providerRuntime.ts
  • packages/contracts/src/settings.test.ts
  • packages/contracts/src/settings.ts
  • scripts/deploy-relay-workflow.test.ts
  • scripts/release-workflow.test.ts
📝 Walkthrough

Walkthrough

This PR adds Muse Code as a provider. It adds contracts, authentication, CLI execution, provider status checks, text generation, session safety, runtime gating, web settings, documentation, and manual deployment triggers.

Changes

Muse Code provider integration

Layer / File(s)Summary
Contracts, configuration, and authentication
packages/contracts/..., apps/server/src/config.ts, apps/server/src/cli/..., apps/server/src/authConnector/..., .github/workflows/...
Muse settings, provider metadata, runtime configuration, authentication flows, host validation, and manual workflow triggers are added.
Muse protocol and adapter
apps/server/src/provider/Layers/MuseProtocol.*, apps/server/src/provider/Layers/MuseAdapter.*, apps/server/src/provider/Services/MuseAdapter.ts
Muse JSONL events, launch arguments, sessions, streaming, tools, planning, interruption, failures, and unsupported operations are implemented.
Provider status and driver wiring
apps/server/src/provider/Layers/MuseProvider.*, apps/server/src/provider/Drivers/MuseDriver.*, apps/server/src/provider/builtInDrivers.ts, apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.*
The provider probes the CLI, discovers skills and credentials, creates instances, and respects the museCodeEnabled runtime gate.
Text generation
apps/server/src/textGeneration/*
Muse-backed generation supports Git content, thread titles, branch names, structured output, timeouts, sanitization, and normalized errors.
Session lifecycle safety
apps/server/src/provider/Layers/ProviderService.*, apps/server/src/provider/Layers/ProviderSessionDirectory.*, apps/server/src/provider/Services/ProviderSessionDirectory.ts
Session generations, conditional persistence, lifecycle locks, race handling, and uninterruptible stop cleanup are added.
Web support and documentation
apps/web/..., README.md, docs/...
Muse appears in provider metadata, icons, settings, authentication methods, display names, setup documentation, and provider guides.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

Suggested reviewers:juliusmarminge

Poem

I hopped through JSON lines bright,
Muse sessions start just right.
Locks guard turns from race and fuss,
New icons bloom for all of us.
The rabbit stamps the docs with cheer.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/muse-code-provider

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@logancsack

logancsack commented Aug 5, 2026

Copy link
Copy Markdown
OwnerAuthor

Browser QA on the production build with Muse Code 0.1.0-R708.1:

  • Desktop provider settings and additional-provider picker
  • Mobile Meta API-key flow at 390x844 with no horizontal overflow
providers-desktopadd-provider-desktopmuse-api-key-mobile

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:b4cb428600

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

if (input.method !== "account" && input.method !== "api-key") return null;
return input.method === "api-key"
? {
command: "muse",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Honor the configured Muse binary during authentication

When a Muse instance uses the supported binaryPath setting because muse is not on PATH, its health checks and turns use that configured executable, but both Connect flows still spawn the literal muse command here. Consequently, the provider can appear installed and usable while Meta sign-in and API-key setup fail to start; pass the target instance/configuration through the connector and resolve the same binary path used by MuseDriver.

Useful? React with 👍 / 👎.

@logancsacklogancsack reopened this Aug 6, 2026

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:7bf653c5c6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +114 to +117
driver !== MUSE_DRIVER_KIND ||
providers.some(
(provider) => provider.driver === MUSE_DRIVER_KIND && provider.availability !== "unavailable",
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Distinguish a disabled driver from a failed Muse instance

When a standalone Muse instance fails config decoding or driver creation, ProviderInstanceRegistryLive.ts emits the same availability: "unavailable" shadow used for an unregistered driver (see lines 137–192). If that is the only Muse instance, this predicate treats the entire driver as unsupported, causing both the provider settings row and add-instance option to disappear; the user therefore cannot see the reported failure or edit/delete the broken configuration. Gate Muse using an explicit server capability rather than the availability of its current instances.

Useful? React with 👍 / 👎.

@logancsack
logancsack merged commit 5043537 into mainAug 6, 2026
14 of 15 checks passed
@coderabbitaicoderabbitaiBot mentioned this pull request Aug 6, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXLvouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@logancsack@codex
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(providers): add Muse Code - #51

Merged
logancsack merged 2 commits into
mainfrom
feature/muse-code-provider
Aug 6, 2026
Merged

feat(providers): add Muse Code#51
logancsack merged 2 commits into
mainfrom
feature/muse-code-provider

Conversation

@logancsack

@logancsacklogancsack commented Aug 5, 2026

Copy link
Copy Markdown
Owner

What Changed

  • Add Muse Code as a first-class provider across contracts, runtime discovery, model selection, text generation, session handling, reviews, and provider settings.
  • Support both Meta sign-in and Meta API-key authentication, including auth-state refresh and actionable errors.
  • Add a managed-runtime gate: standalone T3 exposes Muse by default, while managed DevPC builds fail closed unless T3CODE_MUSE_ENABLED is explicitly enabled.
  • Make production relay deployment and public releases explicit-only in this fork by removing automatic push/scheduled publication triggers, with regression tests for both workflow boundaries.

Why

Aldo needs a Codex-quality Muse integration for an internal staging evaluation. Meta's CLI and guidance are still early, so the provider must remain unavailable in managed production and must not leak into an automatic relay or public nightly release.

UI Changes

Browser QA used the production build with the exact pinned Muse CLI (0.1.0-R708.1) at desktop (1440x1000) and mobile (390x844). Verified the provider row, Beta badge, CLI version/auth status, Meta sign-in/API-key chooser, API-key flow, and additional-provider dialog. Mobile had no horizontal overflow and the browser console had no errors. Screenshots are attached in a PR comment.

Verification

  • Original changed-test suite: 25 files, 351 tests passed
  • ProviderRegistry.test.ts after the CI fixture update: 44 tests passed
  • pnpm --filter t3 typecheck
  • pnpm --filter @t3tools/web typecheck
  • pnpm --filter @t3tools/contracts typecheck
  • pnpm --filter @t3tools/scripts typecheck
  • Targeted lint and format checks
  • Managed and standalone production builds
  • Exact Muse binary checksum/version verification
  • Managed production-style browser QA at desktop and mobile viewports
  • git diff --check origin/main

Local Node was 22.23.2 versus the repository's declared ^24.13.1; all commands above passed, and GitHub Actions remains the release gate.

Deployment Boundary

  • Merging does not deploy the production relay or publish a public nightly.
  • Managed Muse defaults off. Aldo staging explicitly opts in; Aldo production explicitly opts out and removes the CLI.
  • No production deployment is part of this change.

Checklist

  • The change is scoped to the Muse provider and the publication controls needed to keep it staging-only
  • I explained what changed and why
  • Desktop and mobile screenshots are attached
  • Interactive flows were exercised at both viewports

@cursor

cursorBot commented Aug 5, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Aug 5, 2026
@coderabbitai

coderabbitaiBot commented Aug 5, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@logancsack, you've reached your PR review limit, so we couldn't start this review.

Next review available in:48 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 49dd83a9-f83e-4b4a-84f6-bd42c82dc5b5

📥 Commits

Reviewing files that changed from the base of the PR and between 82f2ad0 and 7bf653c.

📒 Files selected for processing (59)
  • .github/workflows/deploy-relay.yml
  • .github/workflows/release.yml
  • README.md
  • apps/server/src/authConnector/AuthConnectorManager.test.ts
  • apps/server/src/authConnector/AuthConnectorManager.ts
  • apps/server/src/bin.test.ts
  • apps/server/src/cli/config.test.ts
  • apps/server/src/cli/config.ts
  • apps/server/src/config.ts
  • apps/server/src/environment/ServerEnvironment.test.ts
  • apps/server/src/provider/Drivers/MuseDriver.test.ts
  • apps/server/src/provider/Drivers/MuseDriver.ts
  • apps/server/src/provider/Layers/CodexAdapter.test.ts
  • apps/server/src/provider/Layers/MuseAdapter.test.ts
  • apps/server/src/provider/Layers/MuseAdapter.ts
  • apps/server/src/provider/Layers/MuseProtocol.test.ts
  • apps/server/src/provider/Layers/MuseProtocol.ts
  • apps/server/src/provider/Layers/MuseProvider.test.ts
  • apps/server/src/provider/Layers/MuseProvider.ts
  • apps/server/src/provider/Layers/OpenCodeAdapter.test.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.test.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.ts
  • apps/server/src/provider/Layers/ProviderInstanceRegistryLive.test.ts
  • apps/server/src/provider/Layers/ProviderRegistry.test.ts
  • apps/server/src/provider/Layers/ProviderService.test.ts
  • apps/server/src/provider/Layers/ProviderService.ts
  • apps/server/src/provider/Layers/ProviderSessionDirectory.test.ts
  • apps/server/src/provider/Layers/ProviderSessionDirectory.ts
  • apps/server/src/provider/Services/MuseAdapter.ts
  • apps/server/src/provider/Services/ProviderSessionDirectory.ts
  • apps/server/src/provider/builtInDrivers.ts
  • apps/server/src/server.test.ts
  • apps/server/src/textGeneration/MuseTextGeneration.test.ts
  • apps/server/src/textGeneration/MuseTextGeneration.ts
  • apps/server/src/textGeneration/TextGeneration.ts
  • apps/web/src/components/Icons.tsx
  • apps/web/src/components/chat/providerIconUtils.test.ts
  • apps/web/src/components/chat/providerIconUtils.ts
  • apps/web/src/components/settings/AddProviderInstanceDialog.tsx
  • apps/web/src/components/settings/ProviderModelsSection.tsx
  • apps/web/src/components/settings/ProviderSettingsForm.test.ts
  • apps/web/src/components/settings/SettingsPanels.tsx
  • apps/web/src/components/settings/authConnectorMethods.test.ts
  • apps/web/src/components/settings/authConnectorMethods.ts
  • apps/web/src/components/settings/providerDriverMeta.ts
  • apps/web/src/lib/contextWindow.test.ts
  • apps/web/src/lib/contextWindow.ts
  • apps/web/src/session-logic.ts
  • docs/README.md
  • docs/providers/muse.md
  • packages/contracts/src/authConnector.test.ts
  • packages/contracts/src/authConnector.ts
  • packages/contracts/src/model.test.ts
  • packages/contracts/src/model.ts
  • packages/contracts/src/providerRuntime.ts
  • packages/contracts/src/settings.test.ts
  • packages/contracts/src/settings.ts
  • scripts/deploy-relay-workflow.test.ts
  • scripts/release-workflow.test.ts
📝 Walkthrough

Walkthrough

This PR adds Muse Code as a provider. It adds contracts, authentication, CLI execution, provider status checks, text generation, session safety, runtime gating, web settings, documentation, and manual deployment triggers.

Changes

Muse Code provider integration

Layer / File(s)Summary
Contracts, configuration, and authentication
packages/contracts/..., apps/server/src/config.ts, apps/server/src/cli/..., apps/server/src/authConnector/..., .github/workflows/...
Muse settings, provider metadata, runtime configuration, authentication flows, host validation, and manual workflow triggers are added.
Muse protocol and adapter
apps/server/src/provider/Layers/MuseProtocol.*, apps/server/src/provider/Layers/MuseAdapter.*, apps/server/src/provider/Services/MuseAdapter.ts
Muse JSONL events, launch arguments, sessions, streaming, tools, planning, interruption, failures, and unsupported operations are implemented.
Provider status and driver wiring
apps/server/src/provider/Layers/MuseProvider.*, apps/server/src/provider/Drivers/MuseDriver.*, apps/server/src/provider/builtInDrivers.ts, apps/server/src/provider/Layers/ProviderInstanceRegistryHydration.*
The provider probes the CLI, discovers skills and credentials, creates instances, and respects the museCodeEnabled runtime gate.
Text generation
apps/server/src/textGeneration/*
Muse-backed generation supports Git content, thread titles, branch names, structured output, timeouts, sanitization, and normalized errors.
Session lifecycle safety
apps/server/src/provider/Layers/ProviderService.*, apps/server/src/provider/Layers/ProviderSessionDirectory.*, apps/server/src/provider/Services/ProviderSessionDirectory.ts
Session generations, conditional persistence, lifecycle locks, race handling, and uninterruptible stop cleanup are added.
Web support and documentation
apps/web/..., README.md, docs/...
Muse appears in provider metadata, icons, settings, authentication methods, display names, setup documentation, and provider guides.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

Suggested reviewers:juliusmarminge

Poem

I hopped through JSON lines bright,
Muse sessions start just right.
Locks guard turns from race and fuss,
New icons bloom for all of us.
The rabbit stamps the docs with cheer.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/muse-code-provider

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@logancsack

logancsack commented Aug 5, 2026

Copy link
Copy Markdown
OwnerAuthor

Browser QA on the production build with Muse Code 0.1.0-R708.1:

  • Desktop provider settings and additional-provider picker
  • Mobile Meta API-key flow at 390x844 with no horizontal overflow
providers-desktopadd-provider-desktopmuse-api-key-mobile

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:b4cb428600

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

if (input.method !== "account" && input.method !== "api-key") return null;
return input.method === "api-key"
? {
command: "muse",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Honor the configured Muse binary during authentication

When a Muse instance uses the supported binaryPath setting because muse is not on PATH, its health checks and turns use that configured executable, but both Connect flows still spawn the literal muse command here. Consequently, the provider can appear installed and usable while Meta sign-in and API-key setup fail to start; pass the target instance/configuration through the connector and resolve the same binary path used by MuseDriver.

Useful? React with 👍 / 👎.

@logancsacklogancsack reopened this Aug 6, 2026

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:7bf653c5c6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +114 to +117
driver !== MUSE_DRIVER_KIND ||
providers.some(
(provider) => provider.driver === MUSE_DRIVER_KIND && provider.availability !== "unavailable",
)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Distinguish a disabled driver from a failed Muse instance

When a standalone Muse instance fails config decoding or driver creation, ProviderInstanceRegistryLive.ts emits the same availability: "unavailable" shadow used for an unregistered driver (see lines 137–192). If that is the only Muse instance, this predicate treats the entire driver as unsupported, causing both the provider settings row and add-instance option to disappear; the user therefore cannot see the reported failure or edit/delete the broken configuration. Gate Muse using an explicit server capability rather than the availability of its current instances.

Useful? React with 👍 / 👎.

@logancsack
logancsack merged commit 5043537 into mainAug 6, 2026
14 of 15 checks passed
@coderabbitaicoderabbitaiBot mentioned this pull request Aug 6, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXLvouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@logancsack@codex