[codex] Refactor review and text generation services - #3196

Merged
juliusmarminge merged 1 commit into
mainfrom
codex/effect-service-server-review-text
Jun 20, 2026
Merged

[codex] Refactor review and text generation services#3196
juliusmarminge merged 1 commit into
mainfrom
codex/effect-service-server-review-text

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Defines the ReviewService and TextGeneration service contracts inline on their Context.Service tags.
  • Exposes canonical make and layer exports without synthetic Effect.succeed wrappers.
  • Updates provider-specific text-generation implementations and direct consumers to use namespace imports, module-qualified tags/helpers/errors, and Service["Service"] types.
  • Preserves the plain promise-based TextGenerationService provider contract.
  • Keeps the deprecated TextGenerationShape alias only for the excluded orchestration compatibility harness; this PR does not modify orchestration modules.

Behavior

Provider-instance routing, review diff generation, and text-generation behavior are unchanged. This is a service-module organization and typing refactor.

Validation

  • Eight review/text-generation test files — 53 tests passed
  • vp check — passed; 20 pre-existing unrelated warnings
  • vp run typecheck — passed
  • Review-thread audit — no unresolved or actionable inline threads
  • Orchestration/MCP diff audit — no changes

Note

Low Risk
Import and typing refactors only; provider-instance routing and service behavior are unchanged, with broad test coverage noted in the PR.

Overview
This PR mechanically aligns the review and text-generation domains with the repo’s target Effect Context.Service pattern without changing routing or generation behavior.

TextGeneration now defines its API on the service tag itself (replacing a separate TextGenerationShape interface), builds registry-backed implementations via TextGeneration.of, and exposes a make effect plus a layer wired as Layer.effect(TextGeneration, make). A deprecatedTextGenerationShape alias remains for legacy consumers. ReviewService follows the same move: the standalone shape type is removed, make is a plain Effect.gen, and the layer references that effect directly.

All provider implementations (Claude, Codex, Cursor, Grok, OpenCode) and ProviderDriver now satisfy TextGeneration.TextGeneration["Service"] instead of the old shape type. Tests and harnesses (GitManager, ProviderAdapterRegistry, text-generation tests, etc.) switch to namespace imports (* as Module) for services, config, GitHub CLI, and related helpers so tokens and errors are referenced in a consistent, module-qualified way.

Reviewed by Cursor Bugbot for commit 7fe6a2e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Refactor text generation and review services to use namespace imports

  • Replaces named imports with namespace imports across all text generation providers (ClaudeTextGeneration, CodexTextGeneration, CursorTextGeneration, GrokTextGeneration, OpenCodeTextGeneration) and the ReviewService, aligning import style with Effect.js conventions.
  • Replaces the separate TextGenerationShape interface with an inline Context.Service-based TextGeneration class; exports TextGenerationShape as a deprecated type alias for backward compatibility.
  • Adds a standalone make effect to TextGeneration.ts and simplifies the layer to Layer.effect(TextGeneration, make).
  • Updates ReviewService to inline its service shape via Context.Service generic and changes make from a function returning an Effect to a plain Effect.
  • Updates all test helpers and DI wiring in GitManager.test.ts and ProviderAdapterRegistry.test.ts to use namespaced service tokens (e.g. ServerConfig.ServerConfig.layerTest).

Macroscope summarized 7fe6a2e.

@coderabbitai

coderabbitaiBot commented Jun 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 55b18efe-0143-414e-a719-797dbc348164

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/effect-service-server-review-text

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Jun 20, 2026
@github-actions

github-actionsBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

🚀 Expo continuous deployment is ready!

  • Project → t3-code
  • Platforms → android, ios
  • Scheme → t3code-preview
🤖 Android🍎 iOS
Fingerprintfe5a51f2e189da69dfc4c2cd458e6cfb5fdff2eaae3bd597809dfd7771d0898f735d172973d4c1c8
Build DetailsBuild Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: fe5a51f2e189da69dfc4c2cd458e6cfb5fdff2ea
App version: 0.1.0
Git commit: 92eee17a1337fb6a188937c323e76dae2c386585
Build Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: ae3bd597809dfd7771d0898f735d172973d4c1c8
App version: 0.1.0
Git commit: eb448c5d21d67cc2c283172b1ea3495232588935
Update DetailsUpdate Permalink
DetailsBranch: pr-3196
Runtime version: fe5a51f2e189da69dfc4c2cd458e6cfb5fdff2ea
Git commit: 56de00b8ec482bdc5224f7f4526b3c919da075d2
Update Permalink
DetailsBranch: pr-3196
Runtime version: ae3bd597809dfd7771d0898f735d172973d4c1c8
Git commit: 56de00b8ec482bdc5224f7f4526b3c919da075d2
Update QR

@juliusmarminge
juliusmarminge marked this pull request as ready for review June 20, 2026 02:06
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR contains mechanical refactoring changes - converting named imports to namespace imports and reorganizing type definitions. No runtime behavior is modified; the actual function implementations remain identical.

You can customize Macroscope's approvability policy. Learn more.

@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 349a8f2 to 3d81b95CompareJune 20, 2026 02:34
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 02:34

Dismissing prior approval to re-evaluate 3d81b95

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 3d81b95 to 874c228CompareJune 20, 2026 03:10
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 03:10

Dismissing prior approval to re-evaluate 874c228

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 874c228 to 7fe6a2eCompareJune 20, 2026 03:17
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 03:18

Dismissing prior approval to re-evaluate 7fe6a2e

@juliusmarminge
juliusmarminge merged commit b630278 into mainJun 20, 2026
15 checks passed
@juliusmarminge
juliusmarminge deleted the codex/effect-service-server-review-text branch June 20, 2026 04:04
slan48 pushed a commit to slan48/t3code that referenced this pull request Jun 24, 2026
Fork customization triage:
- Item 2 (AGENTS.md), Item 3 (.gitignore): untouched upstream, kept.
- Item 4 (Cmd+B sidebar.toggle): SUPERSEDED by upstream pingdotgg#3497 'Add main
sidebar toggle'. Adopted upstream's SidebarControl handler + UI wholesale;
dropped our capture-phase SidebarShortcutHandler and orphaned
isSidebarToggleShortcut helper. Pending manual smoke test (composer/terminal
focus).
- Item 5 (sidecar prompt-injection hardening): KEPT. Upstream pingdotgg#3196/pingdotgg#3292
refactored the invocation (resolveSpawnCommand) and reverted to
--dangerously-skip-permissions; auto-merge preserved our
--permission-mode default --allowed-tools StructuredOutput swap + tests.
- Item 6(a) (live token usage in working row): KEPT, re-integrated
activeContextWindow threading onto upstream's reworked MessagesTimeline
(made the prop optional).
- Item 6(b) (in-flight tool-call rows): DROPPED as superseded by upstream
pingdotgg#3022 work-log rework (toolLifecycleStatus + WorkEntryIconSvg). Removed
status field usage, took upstream's session-logic.{ts,test.ts} wholesale.
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, '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

[codex] Refactor review and text generation services - #3196

Merged
juliusmarminge merged 1 commit into
mainfrom
codex/effect-service-server-review-text
Jun 20, 2026
Merged

[codex] Refactor review and text generation services#3196
juliusmarminge merged 1 commit into
mainfrom
codex/effect-service-server-review-text

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Defines the ReviewService and TextGeneration service contracts inline on their Context.Service tags.
  • Exposes canonical make and layer exports without synthetic Effect.succeed wrappers.
  • Updates provider-specific text-generation implementations and direct consumers to use namespace imports, module-qualified tags/helpers/errors, and Service["Service"] types.
  • Preserves the plain promise-based TextGenerationService provider contract.
  • Keeps the deprecated TextGenerationShape alias only for the excluded orchestration compatibility harness; this PR does not modify orchestration modules.

Behavior

Provider-instance routing, review diff generation, and text-generation behavior are unchanged. This is a service-module organization and typing refactor.

Validation

  • Eight review/text-generation test files — 53 tests passed
  • vp check — passed; 20 pre-existing unrelated warnings
  • vp run typecheck — passed
  • Review-thread audit — no unresolved or actionable inline threads
  • Orchestration/MCP diff audit — no changes

Note

Low Risk
Import and typing refactors only; provider-instance routing and service behavior are unchanged, with broad test coverage noted in the PR.

Overview
This PR mechanically aligns the review and text-generation domains with the repo’s target Effect Context.Service pattern without changing routing or generation behavior.

TextGeneration now defines its API on the service tag itself (replacing a separate TextGenerationShape interface), builds registry-backed implementations via TextGeneration.of, and exposes a make effect plus a layer wired as Layer.effect(TextGeneration, make). A deprecatedTextGenerationShape alias remains for legacy consumers. ReviewService follows the same move: the standalone shape type is removed, make is a plain Effect.gen, and the layer references that effect directly.

All provider implementations (Claude, Codex, Cursor, Grok, OpenCode) and ProviderDriver now satisfy TextGeneration.TextGeneration["Service"] instead of the old shape type. Tests and harnesses (GitManager, ProviderAdapterRegistry, text-generation tests, etc.) switch to namespace imports (* as Module) for services, config, GitHub CLI, and related helpers so tokens and errors are referenced in a consistent, module-qualified way.

Reviewed by Cursor Bugbot for commit 7fe6a2e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Refactor text generation and review services to use namespace imports

  • Replaces named imports with namespace imports across all text generation providers (ClaudeTextGeneration, CodexTextGeneration, CursorTextGeneration, GrokTextGeneration, OpenCodeTextGeneration) and the ReviewService, aligning import style with Effect.js conventions.
  • Replaces the separate TextGenerationShape interface with an inline Context.Service-based TextGeneration class; exports TextGenerationShape as a deprecated type alias for backward compatibility.
  • Adds a standalone make effect to TextGeneration.ts and simplifies the layer to Layer.effect(TextGeneration, make).
  • Updates ReviewService to inline its service shape via Context.Service generic and changes make from a function returning an Effect to a plain Effect.
  • Updates all test helpers and DI wiring in GitManager.test.ts and ProviderAdapterRegistry.test.ts to use namespaced service tokens (e.g. ServerConfig.ServerConfig.layerTest).

Macroscope summarized 7fe6a2e.

@coderabbitai

coderabbitaiBot commented Jun 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 55b18efe-0143-414e-a719-797dbc348164

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/effect-service-server-review-text

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Jun 20, 2026
@github-actions

github-actionsBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

🚀 Expo continuous deployment is ready!

  • Project → t3-code
  • Platforms → android, ios
  • Scheme → t3code-preview
🤖 Android🍎 iOS
Fingerprintfe5a51f2e189da69dfc4c2cd458e6cfb5fdff2eaae3bd597809dfd7771d0898f735d172973d4c1c8
Build DetailsBuild Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: fe5a51f2e189da69dfc4c2cd458e6cfb5fdff2ea
App version: 0.1.0
Git commit: 92eee17a1337fb6a188937c323e76dae2c386585
Build Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: ae3bd597809dfd7771d0898f735d172973d4c1c8
App version: 0.1.0
Git commit: eb448c5d21d67cc2c283172b1ea3495232588935
Update DetailsUpdate Permalink
DetailsBranch: pr-3196
Runtime version: fe5a51f2e189da69dfc4c2cd458e6cfb5fdff2ea
Git commit: 56de00b8ec482bdc5224f7f4526b3c919da075d2
Update Permalink
DetailsBranch: pr-3196
Runtime version: ae3bd597809dfd7771d0898f735d172973d4c1c8
Git commit: 56de00b8ec482bdc5224f7f4526b3c919da075d2
Update QR

@juliusmarminge
juliusmarminge marked this pull request as ready for review June 20, 2026 02:06
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR contains mechanical refactoring changes - converting named imports to namespace imports and reorganizing type definitions. No runtime behavior is modified; the actual function implementations remain identical.

You can customize Macroscope's approvability policy. Learn more.

@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 349a8f2 to 3d81b95CompareJune 20, 2026 02:34
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 02:34

Dismissing prior approval to re-evaluate 3d81b95

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 3d81b95 to 874c228CompareJune 20, 2026 03:10
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 03:10

Dismissing prior approval to re-evaluate 874c228

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 874c228 to 7fe6a2eCompareJune 20, 2026 03:17
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 03:18

Dismissing prior approval to re-evaluate 7fe6a2e

@juliusmarminge
juliusmarminge merged commit b630278 into mainJun 20, 2026
15 checks passed
@juliusmarminge
juliusmarminge deleted the codex/effect-service-server-review-text branch June 20, 2026 04:04
slan48 pushed a commit to slan48/t3code that referenced this pull request Jun 24, 2026
Fork customization triage:
- Item 2 (AGENTS.md), Item 3 (.gitignore): untouched upstream, kept.
- Item 4 (Cmd+B sidebar.toggle): SUPERSEDED by upstream pingdotgg#3497 'Add main
sidebar toggle'. Adopted upstream's SidebarControl handler + UI wholesale;
dropped our capture-phase SidebarShortcutHandler and orphaned
isSidebarToggleShortcut helper. Pending manual smoke test (composer/terminal
focus).
- Item 5 (sidecar prompt-injection hardening): KEPT. Upstream pingdotgg#3196/pingdotgg#3292
refactored the invocation (resolveSpawnCommand) and reverted to
--dangerously-skip-permissions; auto-merge preserved our
--permission-mode default --allowed-tools StructuredOutput swap + tests.
- Item 6(a) (live token usage in working row): KEPT, re-integrated
activeContextWindow threading onto upstream's reworked MessagesTimeline
(made the prop optional).
- Item 6(b) (in-flight tool-call rows): DROPPED as superseded by upstream
pingdotgg#3022 work-log rework (toolLifecycleStatus + WorkEntryIconSvg). Removed
status field usage, took upstream's session-logic.{ts,test.ts} wholesale.
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, '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

[codex] Refactor review and text generation services - #3196

Merged
juliusmarminge merged 1 commit into
mainfrom
codex/effect-service-server-review-text
Jun 20, 2026
Merged

[codex] Refactor review and text generation services#3196
juliusmarminge merged 1 commit into
mainfrom
codex/effect-service-server-review-text

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Defines the ReviewService and TextGeneration service contracts inline on their Context.Service tags.
  • Exposes canonical make and layer exports without synthetic Effect.succeed wrappers.
  • Updates provider-specific text-generation implementations and direct consumers to use namespace imports, module-qualified tags/helpers/errors, and Service["Service"] types.
  • Preserves the plain promise-based TextGenerationService provider contract.
  • Keeps the deprecated TextGenerationShape alias only for the excluded orchestration compatibility harness; this PR does not modify orchestration modules.

Behavior

Provider-instance routing, review diff generation, and text-generation behavior are unchanged. This is a service-module organization and typing refactor.

Validation

  • Eight review/text-generation test files — 53 tests passed
  • vp check — passed; 20 pre-existing unrelated warnings
  • vp run typecheck — passed
  • Review-thread audit — no unresolved or actionable inline threads
  • Orchestration/MCP diff audit — no changes

Note

Low Risk
Import and typing refactors only; provider-instance routing and service behavior are unchanged, with broad test coverage noted in the PR.

Overview
This PR mechanically aligns the review and text-generation domains with the repo’s target Effect Context.Service pattern without changing routing or generation behavior.

TextGeneration now defines its API on the service tag itself (replacing a separate TextGenerationShape interface), builds registry-backed implementations via TextGeneration.of, and exposes a make effect plus a layer wired as Layer.effect(TextGeneration, make). A deprecatedTextGenerationShape alias remains for legacy consumers. ReviewService follows the same move: the standalone shape type is removed, make is a plain Effect.gen, and the layer references that effect directly.

All provider implementations (Claude, Codex, Cursor, Grok, OpenCode) and ProviderDriver now satisfy TextGeneration.TextGeneration["Service"] instead of the old shape type. Tests and harnesses (GitManager, ProviderAdapterRegistry, text-generation tests, etc.) switch to namespace imports (* as Module) for services, config, GitHub CLI, and related helpers so tokens and errors are referenced in a consistent, module-qualified way.

Reviewed by Cursor Bugbot for commit 7fe6a2e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Refactor text generation and review services to use namespace imports

  • Replaces named imports with namespace imports across all text generation providers (ClaudeTextGeneration, CodexTextGeneration, CursorTextGeneration, GrokTextGeneration, OpenCodeTextGeneration) and the ReviewService, aligning import style with Effect.js conventions.
  • Replaces the separate TextGenerationShape interface with an inline Context.Service-based TextGeneration class; exports TextGenerationShape as a deprecated type alias for backward compatibility.
  • Adds a standalone make effect to TextGeneration.ts and simplifies the layer to Layer.effect(TextGeneration, make).
  • Updates ReviewService to inline its service shape via Context.Service generic and changes make from a function returning an Effect to a plain Effect.
  • Updates all test helpers and DI wiring in GitManager.test.ts and ProviderAdapterRegistry.test.ts to use namespaced service tokens (e.g. ServerConfig.ServerConfig.layerTest).

Macroscope summarized 7fe6a2e.

@coderabbitai

coderabbitaiBot commented Jun 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 55b18efe-0143-414e-a719-797dbc348164

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/effect-service-server-review-text

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Jun 20, 2026
@github-actions

github-actionsBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

🚀 Expo continuous deployment is ready!

  • Project → t3-code
  • Platforms → android, ios
  • Scheme → t3code-preview
🤖 Android🍎 iOS
Fingerprintfe5a51f2e189da69dfc4c2cd458e6cfb5fdff2eaae3bd597809dfd7771d0898f735d172973d4c1c8
Build DetailsBuild Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: fe5a51f2e189da69dfc4c2cd458e6cfb5fdff2ea
App version: 0.1.0
Git commit: 92eee17a1337fb6a188937c323e76dae2c386585
Build Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: ae3bd597809dfd7771d0898f735d172973d4c1c8
App version: 0.1.0
Git commit: eb448c5d21d67cc2c283172b1ea3495232588935
Update DetailsUpdate Permalink
DetailsBranch: pr-3196
Runtime version: fe5a51f2e189da69dfc4c2cd458e6cfb5fdff2ea
Git commit: 56de00b8ec482bdc5224f7f4526b3c919da075d2
Update Permalink
DetailsBranch: pr-3196
Runtime version: ae3bd597809dfd7771d0898f735d172973d4c1c8
Git commit: 56de00b8ec482bdc5224f7f4526b3c919da075d2
Update QR

@juliusmarminge
juliusmarminge marked this pull request as ready for review June 20, 2026 02:06
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR contains mechanical refactoring changes - converting named imports to namespace imports and reorganizing type definitions. No runtime behavior is modified; the actual function implementations remain identical.

You can customize Macroscope's approvability policy. Learn more.

@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 349a8f2 to 3d81b95CompareJune 20, 2026 02:34
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 02:34

Dismissing prior approval to re-evaluate 3d81b95

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 3d81b95 to 874c228CompareJune 20, 2026 03:10
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 03:10

Dismissing prior approval to re-evaluate 874c228

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 874c228 to 7fe6a2eCompareJune 20, 2026 03:17
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 03:18

Dismissing prior approval to re-evaluate 7fe6a2e

@juliusmarminge
juliusmarminge merged commit b630278 into mainJun 20, 2026
15 checks passed
@juliusmarminge
juliusmarminge deleted the codex/effect-service-server-review-text branch June 20, 2026 04:04
slan48 pushed a commit to slan48/t3code that referenced this pull request Jun 24, 2026
Fork customization triage:
- Item 2 (AGENTS.md), Item 3 (.gitignore): untouched upstream, kept.
- Item 4 (Cmd+B sidebar.toggle): SUPERSEDED by upstream pingdotgg#3497 'Add main
sidebar toggle'. Adopted upstream's SidebarControl handler + UI wholesale;
dropped our capture-phase SidebarShortcutHandler and orphaned
isSidebarToggleShortcut helper. Pending manual smoke test (composer/terminal
focus).
- Item 5 (sidecar prompt-injection hardening): KEPT. Upstream pingdotgg#3196/pingdotgg#3292
refactored the invocation (resolveSpawnCommand) and reverted to
--dangerously-skip-permissions; auto-merge preserved our
--permission-mode default --allowed-tools StructuredOutput swap + tests.
- Item 6(a) (live token usage in working row): KEPT, re-integrated
activeContextWindow threading onto upstream's reworked MessagesTimeline
(made the prop optional).
- Item 6(b) (in-flight tool-call rows): DROPPED as superseded by upstream
pingdotgg#3022 work-log rework (toolLifecycleStatus + WorkEntryIconSvg). Removed
status field usage, took upstream's session-logic.{ts,test.ts} wholesale.
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, '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

[codex] Refactor review and text generation services - #3196

Merged
juliusmarminge merged 1 commit into
mainfrom
codex/effect-service-server-review-text
Jun 20, 2026
Merged

[codex] Refactor review and text generation services#3196
juliusmarminge merged 1 commit into
mainfrom
codex/effect-service-server-review-text

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Defines the ReviewService and TextGeneration service contracts inline on their Context.Service tags.
  • Exposes canonical make and layer exports without synthetic Effect.succeed wrappers.
  • Updates provider-specific text-generation implementations and direct consumers to use namespace imports, module-qualified tags/helpers/errors, and Service["Service"] types.
  • Preserves the plain promise-based TextGenerationService provider contract.
  • Keeps the deprecated TextGenerationShape alias only for the excluded orchestration compatibility harness; this PR does not modify orchestration modules.

Behavior

Provider-instance routing, review diff generation, and text-generation behavior are unchanged. This is a service-module organization and typing refactor.

Validation

  • Eight review/text-generation test files — 53 tests passed
  • vp check — passed; 20 pre-existing unrelated warnings
  • vp run typecheck — passed
  • Review-thread audit — no unresolved or actionable inline threads
  • Orchestration/MCP diff audit — no changes

Note

Low Risk
Import and typing refactors only; provider-instance routing and service behavior are unchanged, with broad test coverage noted in the PR.

Overview
This PR mechanically aligns the review and text-generation domains with the repo’s target Effect Context.Service pattern without changing routing or generation behavior.

TextGeneration now defines its API on the service tag itself (replacing a separate TextGenerationShape interface), builds registry-backed implementations via TextGeneration.of, and exposes a make effect plus a layer wired as Layer.effect(TextGeneration, make). A deprecatedTextGenerationShape alias remains for legacy consumers. ReviewService follows the same move: the standalone shape type is removed, make is a plain Effect.gen, and the layer references that effect directly.

All provider implementations (Claude, Codex, Cursor, Grok, OpenCode) and ProviderDriver now satisfy TextGeneration.TextGeneration["Service"] instead of the old shape type. Tests and harnesses (GitManager, ProviderAdapterRegistry, text-generation tests, etc.) switch to namespace imports (* as Module) for services, config, GitHub CLI, and related helpers so tokens and errors are referenced in a consistent, module-qualified way.

Reviewed by Cursor Bugbot for commit 7fe6a2e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Refactor text generation and review services to use namespace imports

  • Replaces named imports with namespace imports across all text generation providers (ClaudeTextGeneration, CodexTextGeneration, CursorTextGeneration, GrokTextGeneration, OpenCodeTextGeneration) and the ReviewService, aligning import style with Effect.js conventions.
  • Replaces the separate TextGenerationShape interface with an inline Context.Service-based TextGeneration class; exports TextGenerationShape as a deprecated type alias for backward compatibility.
  • Adds a standalone make effect to TextGeneration.ts and simplifies the layer to Layer.effect(TextGeneration, make).
  • Updates ReviewService to inline its service shape via Context.Service generic and changes make from a function returning an Effect to a plain Effect.
  • Updates all test helpers and DI wiring in GitManager.test.ts and ProviderAdapterRegistry.test.ts to use namespaced service tokens (e.g. ServerConfig.ServerConfig.layerTest).

Macroscope summarized 7fe6a2e.

@coderabbitai

coderabbitaiBot commented Jun 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 55b18efe-0143-414e-a719-797dbc348164

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/effect-service-server-review-text

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Jun 20, 2026
@github-actions

github-actionsBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

🚀 Expo continuous deployment is ready!

  • Project → t3-code
  • Platforms → android, ios
  • Scheme → t3code-preview
🤖 Android🍎 iOS
Fingerprintfe5a51f2e189da69dfc4c2cd458e6cfb5fdff2eaae3bd597809dfd7771d0898f735d172973d4c1c8
Build DetailsBuild Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: fe5a51f2e189da69dfc4c2cd458e6cfb5fdff2ea
App version: 0.1.0
Git commit: 92eee17a1337fb6a188937c323e76dae2c386585
Build Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: ae3bd597809dfd7771d0898f735d172973d4c1c8
App version: 0.1.0
Git commit: eb448c5d21d67cc2c283172b1ea3495232588935
Update DetailsUpdate Permalink
DetailsBranch: pr-3196
Runtime version: fe5a51f2e189da69dfc4c2cd458e6cfb5fdff2ea
Git commit: 56de00b8ec482bdc5224f7f4526b3c919da075d2
Update Permalink
DetailsBranch: pr-3196
Runtime version: ae3bd597809dfd7771d0898f735d172973d4c1c8
Git commit: 56de00b8ec482bdc5224f7f4526b3c919da075d2
Update QR

@juliusmarminge
juliusmarminge marked this pull request as ready for review June 20, 2026 02:06
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR contains mechanical refactoring changes - converting named imports to namespace imports and reorganizing type definitions. No runtime behavior is modified; the actual function implementations remain identical.

You can customize Macroscope's approvability policy. Learn more.

@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 349a8f2 to 3d81b95CompareJune 20, 2026 02:34
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 02:34

Dismissing prior approval to re-evaluate 3d81b95

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 3d81b95 to 874c228CompareJune 20, 2026 03:10
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 03:10

Dismissing prior approval to re-evaluate 874c228

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 874c228 to 7fe6a2eCompareJune 20, 2026 03:17
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 03:18

Dismissing prior approval to re-evaluate 7fe6a2e

@juliusmarminge
juliusmarminge merged commit b630278 into mainJun 20, 2026
15 checks passed
@juliusmarminge
juliusmarminge deleted the codex/effect-service-server-review-text branch June 20, 2026 04:04
slan48 pushed a commit to slan48/t3code that referenced this pull request Jun 24, 2026
Fork customization triage:
- Item 2 (AGENTS.md), Item 3 (.gitignore): untouched upstream, kept.
- Item 4 (Cmd+B sidebar.toggle): SUPERSEDED by upstream pingdotgg#3497 'Add main
sidebar toggle'. Adopted upstream's SidebarControl handler + UI wholesale;
dropped our capture-phase SidebarShortcutHandler and orphaned
isSidebarToggleShortcut helper. Pending manual smoke test (composer/terminal
focus).
- Item 5 (sidecar prompt-injection hardening): KEPT. Upstream pingdotgg#3196/pingdotgg#3292
refactored the invocation (resolveSpawnCommand) and reverted to
--dangerously-skip-permissions; auto-merge preserved our
--permission-mode default --allowed-tools StructuredOutput swap + tests.
- Item 6(a) (live token usage in working row): KEPT, re-integrated
activeContextWindow threading onto upstream's reworked MessagesTimeline
(made the prop optional).
- Item 6(b) (in-flight tool-call rows): DROPPED as superseded by upstream
pingdotgg#3022 work-log rework (toolLifecycleStatus + WorkEntryIconSvg). Removed
status field usage, took upstream's session-logic.{ts,test.ts} wholesale.
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, '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

[codex] Refactor review and text generation services - #3196

Merged
juliusmarminge merged 1 commit into
mainfrom
codex/effect-service-server-review-text
Jun 20, 2026
Merged

[codex] Refactor review and text generation services#3196
juliusmarminge merged 1 commit into
mainfrom
codex/effect-service-server-review-text

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Defines the ReviewService and TextGeneration service contracts inline on their Context.Service tags.
  • Exposes canonical make and layer exports without synthetic Effect.succeed wrappers.
  • Updates provider-specific text-generation implementations and direct consumers to use namespace imports, module-qualified tags/helpers/errors, and Service["Service"] types.
  • Preserves the plain promise-based TextGenerationService provider contract.
  • Keeps the deprecated TextGenerationShape alias only for the excluded orchestration compatibility harness; this PR does not modify orchestration modules.

Behavior

Provider-instance routing, review diff generation, and text-generation behavior are unchanged. This is a service-module organization and typing refactor.

Validation

  • Eight review/text-generation test files — 53 tests passed
  • vp check — passed; 20 pre-existing unrelated warnings
  • vp run typecheck — passed
  • Review-thread audit — no unresolved or actionable inline threads
  • Orchestration/MCP diff audit — no changes

Note

Low Risk
Import and typing refactors only; provider-instance routing and service behavior are unchanged, with broad test coverage noted in the PR.

Overview
This PR mechanically aligns the review and text-generation domains with the repo’s target Effect Context.Service pattern without changing routing or generation behavior.

TextGeneration now defines its API on the service tag itself (replacing a separate TextGenerationShape interface), builds registry-backed implementations via TextGeneration.of, and exposes a make effect plus a layer wired as Layer.effect(TextGeneration, make). A deprecatedTextGenerationShape alias remains for legacy consumers. ReviewService follows the same move: the standalone shape type is removed, make is a plain Effect.gen, and the layer references that effect directly.

All provider implementations (Claude, Codex, Cursor, Grok, OpenCode) and ProviderDriver now satisfy TextGeneration.TextGeneration["Service"] instead of the old shape type. Tests and harnesses (GitManager, ProviderAdapterRegistry, text-generation tests, etc.) switch to namespace imports (* as Module) for services, config, GitHub CLI, and related helpers so tokens and errors are referenced in a consistent, module-qualified way.

Reviewed by Cursor Bugbot for commit 7fe6a2e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Refactor text generation and review services to use namespace imports

  • Replaces named imports with namespace imports across all text generation providers (ClaudeTextGeneration, CodexTextGeneration, CursorTextGeneration, GrokTextGeneration, OpenCodeTextGeneration) and the ReviewService, aligning import style with Effect.js conventions.
  • Replaces the separate TextGenerationShape interface with an inline Context.Service-based TextGeneration class; exports TextGenerationShape as a deprecated type alias for backward compatibility.
  • Adds a standalone make effect to TextGeneration.ts and simplifies the layer to Layer.effect(TextGeneration, make).
  • Updates ReviewService to inline its service shape via Context.Service generic and changes make from a function returning an Effect to a plain Effect.
  • Updates all test helpers and DI wiring in GitManager.test.ts and ProviderAdapterRegistry.test.ts to use namespaced service tokens (e.g. ServerConfig.ServerConfig.layerTest).

Macroscope summarized 7fe6a2e.

@coderabbitai

coderabbitaiBot commented Jun 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 55b18efe-0143-414e-a719-797dbc348164

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/effect-service-server-review-text

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Jun 20, 2026
@github-actions

github-actionsBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

🚀 Expo continuous deployment is ready!

  • Project → t3-code
  • Platforms → android, ios
  • Scheme → t3code-preview
🤖 Android🍎 iOS
Fingerprintfe5a51f2e189da69dfc4c2cd458e6cfb5fdff2eaae3bd597809dfd7771d0898f735d172973d4c1c8
Build DetailsBuild Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: fe5a51f2e189da69dfc4c2cd458e6cfb5fdff2ea
App version: 0.1.0
Git commit: 92eee17a1337fb6a188937c323e76dae2c386585
Build Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: ae3bd597809dfd7771d0898f735d172973d4c1c8
App version: 0.1.0
Git commit: eb448c5d21d67cc2c283172b1ea3495232588935
Update DetailsUpdate Permalink
DetailsBranch: pr-3196
Runtime version: fe5a51f2e189da69dfc4c2cd458e6cfb5fdff2ea
Git commit: 56de00b8ec482bdc5224f7f4526b3c919da075d2
Update Permalink
DetailsBranch: pr-3196
Runtime version: ae3bd597809dfd7771d0898f735d172973d4c1c8
Git commit: 56de00b8ec482bdc5224f7f4526b3c919da075d2
Update QR

@juliusmarminge
juliusmarminge marked this pull request as ready for review June 20, 2026 02:06
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR contains mechanical refactoring changes - converting named imports to namespace imports and reorganizing type definitions. No runtime behavior is modified; the actual function implementations remain identical.

You can customize Macroscope's approvability policy. Learn more.

@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 349a8f2 to 3d81b95CompareJune 20, 2026 02:34
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 02:34

Dismissing prior approval to re-evaluate 3d81b95

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 3d81b95 to 874c228CompareJune 20, 2026 03:10
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 03:10

Dismissing prior approval to re-evaluate 874c228

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 874c228 to 7fe6a2eCompareJune 20, 2026 03:17
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 03:18

Dismissing prior approval to re-evaluate 7fe6a2e

@juliusmarminge
juliusmarminge merged commit b630278 into mainJun 20, 2026
15 checks passed
@juliusmarminge
juliusmarminge deleted the codex/effect-service-server-review-text branch June 20, 2026 04:04
slan48 pushed a commit to slan48/t3code that referenced this pull request Jun 24, 2026
Fork customization triage:
- Item 2 (AGENTS.md), Item 3 (.gitignore): untouched upstream, kept.
- Item 4 (Cmd+B sidebar.toggle): SUPERSEDED by upstream pingdotgg#3497 'Add main
sidebar toggle'. Adopted upstream's SidebarControl handler + UI wholesale;
dropped our capture-phase SidebarShortcutHandler and orphaned
isSidebarToggleShortcut helper. Pending manual smoke test (composer/terminal
focus).
- Item 5 (sidecar prompt-injection hardening): KEPT. Upstream pingdotgg#3196/pingdotgg#3292
refactored the invocation (resolveSpawnCommand) and reverted to
--dangerously-skip-permissions; auto-merge preserved our
--permission-mode default --allowed-tools StructuredOutput swap + tests.
- Item 6(a) (live token usage in working row): KEPT, re-integrated
activeContextWindow threading onto upstream's reworked MessagesTimeline
(made the prop optional).
- Item 6(b) (in-flight tool-call rows): DROPPED as superseded by upstream
pingdotgg#3022 work-log rework (toolLifecycleStatus + WorkEntryIconSvg). Removed
status field usage, took upstream's session-logic.{ts,test.ts} wholesale.
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, '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

[codex] Refactor review and text generation services - #3196

Merged
juliusmarminge merged 1 commit into
mainfrom
codex/effect-service-server-review-text
Jun 20, 2026
Merged

[codex] Refactor review and text generation services#3196
juliusmarminge merged 1 commit into
mainfrom
codex/effect-service-server-review-text

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Defines the ReviewService and TextGeneration service contracts inline on their Context.Service tags.
  • Exposes canonical make and layer exports without synthetic Effect.succeed wrappers.
  • Updates provider-specific text-generation implementations and direct consumers to use namespace imports, module-qualified tags/helpers/errors, and Service["Service"] types.
  • Preserves the plain promise-based TextGenerationService provider contract.
  • Keeps the deprecated TextGenerationShape alias only for the excluded orchestration compatibility harness; this PR does not modify orchestration modules.

Behavior

Provider-instance routing, review diff generation, and text-generation behavior are unchanged. This is a service-module organization and typing refactor.

Validation

  • Eight review/text-generation test files — 53 tests passed
  • vp check — passed; 20 pre-existing unrelated warnings
  • vp run typecheck — passed
  • Review-thread audit — no unresolved or actionable inline threads
  • Orchestration/MCP diff audit — no changes

Note

Low Risk
Import and typing refactors only; provider-instance routing and service behavior are unchanged, with broad test coverage noted in the PR.

Overview
This PR mechanically aligns the review and text-generation domains with the repo’s target Effect Context.Service pattern without changing routing or generation behavior.

TextGeneration now defines its API on the service tag itself (replacing a separate TextGenerationShape interface), builds registry-backed implementations via TextGeneration.of, and exposes a make effect plus a layer wired as Layer.effect(TextGeneration, make). A deprecatedTextGenerationShape alias remains for legacy consumers. ReviewService follows the same move: the standalone shape type is removed, make is a plain Effect.gen, and the layer references that effect directly.

All provider implementations (Claude, Codex, Cursor, Grok, OpenCode) and ProviderDriver now satisfy TextGeneration.TextGeneration["Service"] instead of the old shape type. Tests and harnesses (GitManager, ProviderAdapterRegistry, text-generation tests, etc.) switch to namespace imports (* as Module) for services, config, GitHub CLI, and related helpers so tokens and errors are referenced in a consistent, module-qualified way.

Reviewed by Cursor Bugbot for commit 7fe6a2e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Refactor text generation and review services to use namespace imports

  • Replaces named imports with namespace imports across all text generation providers (ClaudeTextGeneration, CodexTextGeneration, CursorTextGeneration, GrokTextGeneration, OpenCodeTextGeneration) and the ReviewService, aligning import style with Effect.js conventions.
  • Replaces the separate TextGenerationShape interface with an inline Context.Service-based TextGeneration class; exports TextGenerationShape as a deprecated type alias for backward compatibility.
  • Adds a standalone make effect to TextGeneration.ts and simplifies the layer to Layer.effect(TextGeneration, make).
  • Updates ReviewService to inline its service shape via Context.Service generic and changes make from a function returning an Effect to a plain Effect.
  • Updates all test helpers and DI wiring in GitManager.test.ts and ProviderAdapterRegistry.test.ts to use namespaced service tokens (e.g. ServerConfig.ServerConfig.layerTest).

Macroscope summarized 7fe6a2e.

@coderabbitai

coderabbitaiBot commented Jun 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 55b18efe-0143-414e-a719-797dbc348164

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/effect-service-server-review-text

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Jun 20, 2026
@github-actions

github-actionsBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

🚀 Expo continuous deployment is ready!

  • Project → t3-code
  • Platforms → android, ios
  • Scheme → t3code-preview
🤖 Android🍎 iOS
Fingerprintfe5a51f2e189da69dfc4c2cd458e6cfb5fdff2eaae3bd597809dfd7771d0898f735d172973d4c1c8
Build DetailsBuild Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: fe5a51f2e189da69dfc4c2cd458e6cfb5fdff2ea
App version: 0.1.0
Git commit: 92eee17a1337fb6a188937c323e76dae2c386585
Build Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: ae3bd597809dfd7771d0898f735d172973d4c1c8
App version: 0.1.0
Git commit: eb448c5d21d67cc2c283172b1ea3495232588935
Update DetailsUpdate Permalink
DetailsBranch: pr-3196
Runtime version: fe5a51f2e189da69dfc4c2cd458e6cfb5fdff2ea
Git commit: 56de00b8ec482bdc5224f7f4526b3c919da075d2
Update Permalink
DetailsBranch: pr-3196
Runtime version: ae3bd597809dfd7771d0898f735d172973d4c1c8
Git commit: 56de00b8ec482bdc5224f7f4526b3c919da075d2
Update QR

@juliusmarminge
juliusmarminge marked this pull request as ready for review June 20, 2026 02:06
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR contains mechanical refactoring changes - converting named imports to namespace imports and reorganizing type definitions. No runtime behavior is modified; the actual function implementations remain identical.

You can customize Macroscope's approvability policy. Learn more.

@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 349a8f2 to 3d81b95CompareJune 20, 2026 02:34
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 02:34

Dismissing prior approval to re-evaluate 3d81b95

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 3d81b95 to 874c228CompareJune 20, 2026 03:10
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 03:10

Dismissing prior approval to re-evaluate 874c228

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 874c228 to 7fe6a2eCompareJune 20, 2026 03:17
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 03:18

Dismissing prior approval to re-evaluate 7fe6a2e

@juliusmarminge
juliusmarminge merged commit b630278 into mainJun 20, 2026
15 checks passed
@juliusmarminge
juliusmarminge deleted the codex/effect-service-server-review-text branch June 20, 2026 04:04
slan48 pushed a commit to slan48/t3code that referenced this pull request Jun 24, 2026
Fork customization triage:
- Item 2 (AGENTS.md), Item 3 (.gitignore): untouched upstream, kept.
- Item 4 (Cmd+B sidebar.toggle): SUPERSEDED by upstream pingdotgg#3497 'Add main
sidebar toggle'. Adopted upstream's SidebarControl handler + UI wholesale;
dropped our capture-phase SidebarShortcutHandler and orphaned
isSidebarToggleShortcut helper. Pending manual smoke test (composer/terminal
focus).
- Item 5 (sidecar prompt-injection hardening): KEPT. Upstream pingdotgg#3196/pingdotgg#3292
refactored the invocation (resolveSpawnCommand) and reverted to
--dangerously-skip-permissions; auto-merge preserved our
--permission-mode default --allowed-tools StructuredOutput swap + tests.
- Item 6(a) (live token usage in working row): KEPT, re-integrated
activeContextWindow threading onto upstream's reworked MessagesTimeline
(made the prop optional).
- Item 6(b) (in-flight tool-call rows): DROPPED as superseded by upstream
pingdotgg#3022 work-log rework (toolLifecycleStatus + WorkEntryIconSvg). Removed
status field usage, took upstream's session-logic.{ts,test.ts} wholesale.
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, '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

[codex] Refactor review and text generation services - #3196

Merged
juliusmarminge merged 1 commit into
mainfrom
codex/effect-service-server-review-text
Jun 20, 2026
Merged

[codex] Refactor review and text generation services#3196
juliusmarminge merged 1 commit into
mainfrom
codex/effect-service-server-review-text

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Defines the ReviewService and TextGeneration service contracts inline on their Context.Service tags.
  • Exposes canonical make and layer exports without synthetic Effect.succeed wrappers.
  • Updates provider-specific text-generation implementations and direct consumers to use namespace imports, module-qualified tags/helpers/errors, and Service["Service"] types.
  • Preserves the plain promise-based TextGenerationService provider contract.
  • Keeps the deprecated TextGenerationShape alias only for the excluded orchestration compatibility harness; this PR does not modify orchestration modules.

Behavior

Provider-instance routing, review diff generation, and text-generation behavior are unchanged. This is a service-module organization and typing refactor.

Validation

  • Eight review/text-generation test files — 53 tests passed
  • vp check — passed; 20 pre-existing unrelated warnings
  • vp run typecheck — passed
  • Review-thread audit — no unresolved or actionable inline threads
  • Orchestration/MCP diff audit — no changes

Note

Low Risk
Import and typing refactors only; provider-instance routing and service behavior are unchanged, with broad test coverage noted in the PR.

Overview
This PR mechanically aligns the review and text-generation domains with the repo’s target Effect Context.Service pattern without changing routing or generation behavior.

TextGeneration now defines its API on the service tag itself (replacing a separate TextGenerationShape interface), builds registry-backed implementations via TextGeneration.of, and exposes a make effect plus a layer wired as Layer.effect(TextGeneration, make). A deprecatedTextGenerationShape alias remains for legacy consumers. ReviewService follows the same move: the standalone shape type is removed, make is a plain Effect.gen, and the layer references that effect directly.

All provider implementations (Claude, Codex, Cursor, Grok, OpenCode) and ProviderDriver now satisfy TextGeneration.TextGeneration["Service"] instead of the old shape type. Tests and harnesses (GitManager, ProviderAdapterRegistry, text-generation tests, etc.) switch to namespace imports (* as Module) for services, config, GitHub CLI, and related helpers so tokens and errors are referenced in a consistent, module-qualified way.

Reviewed by Cursor Bugbot for commit 7fe6a2e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Refactor text generation and review services to use namespace imports

  • Replaces named imports with namespace imports across all text generation providers (ClaudeTextGeneration, CodexTextGeneration, CursorTextGeneration, GrokTextGeneration, OpenCodeTextGeneration) and the ReviewService, aligning import style with Effect.js conventions.
  • Replaces the separate TextGenerationShape interface with an inline Context.Service-based TextGeneration class; exports TextGenerationShape as a deprecated type alias for backward compatibility.
  • Adds a standalone make effect to TextGeneration.ts and simplifies the layer to Layer.effect(TextGeneration, make).
  • Updates ReviewService to inline its service shape via Context.Service generic and changes make from a function returning an Effect to a plain Effect.
  • Updates all test helpers and DI wiring in GitManager.test.ts and ProviderAdapterRegistry.test.ts to use namespaced service tokens (e.g. ServerConfig.ServerConfig.layerTest).

Macroscope summarized 7fe6a2e.

@coderabbitai

coderabbitaiBot commented Jun 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 55b18efe-0143-414e-a719-797dbc348164

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/effect-service-server-review-text

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Jun 20, 2026
@github-actions

github-actionsBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

🚀 Expo continuous deployment is ready!

  • Project → t3-code
  • Platforms → android, ios
  • Scheme → t3code-preview
🤖 Android🍎 iOS
Fingerprintfe5a51f2e189da69dfc4c2cd458e6cfb5fdff2eaae3bd597809dfd7771d0898f735d172973d4c1c8
Build DetailsBuild Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: fe5a51f2e189da69dfc4c2cd458e6cfb5fdff2ea
App version: 0.1.0
Git commit: 92eee17a1337fb6a188937c323e76dae2c386585
Build Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: ae3bd597809dfd7771d0898f735d172973d4c1c8
App version: 0.1.0
Git commit: eb448c5d21d67cc2c283172b1ea3495232588935
Update DetailsUpdate Permalink
DetailsBranch: pr-3196
Runtime version: fe5a51f2e189da69dfc4c2cd458e6cfb5fdff2ea
Git commit: 56de00b8ec482bdc5224f7f4526b3c919da075d2
Update Permalink
DetailsBranch: pr-3196
Runtime version: ae3bd597809dfd7771d0898f735d172973d4c1c8
Git commit: 56de00b8ec482bdc5224f7f4526b3c919da075d2
Update QR

@juliusmarminge
juliusmarminge marked this pull request as ready for review June 20, 2026 02:06
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR contains mechanical refactoring changes - converting named imports to namespace imports and reorganizing type definitions. No runtime behavior is modified; the actual function implementations remain identical.

You can customize Macroscope's approvability policy. Learn more.

@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 349a8f2 to 3d81b95CompareJune 20, 2026 02:34
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 02:34

Dismissing prior approval to re-evaluate 3d81b95

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 3d81b95 to 874c228CompareJune 20, 2026 03:10
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 03:10

Dismissing prior approval to re-evaluate 874c228

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 874c228 to 7fe6a2eCompareJune 20, 2026 03:17
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 03:18

Dismissing prior approval to re-evaluate 7fe6a2e

@juliusmarminge
juliusmarminge merged commit b630278 into mainJun 20, 2026
15 checks passed
@juliusmarminge
juliusmarminge deleted the codex/effect-service-server-review-text branch June 20, 2026 04:04
slan48 pushed a commit to slan48/t3code that referenced this pull request Jun 24, 2026
Fork customization triage:
- Item 2 (AGENTS.md), Item 3 (.gitignore): untouched upstream, kept.
- Item 4 (Cmd+B sidebar.toggle): SUPERSEDED by upstream pingdotgg#3497 'Add main
sidebar toggle'. Adopted upstream's SidebarControl handler + UI wholesale;
dropped our capture-phase SidebarShortcutHandler and orphaned
isSidebarToggleShortcut helper. Pending manual smoke test (composer/terminal
focus).
- Item 5 (sidecar prompt-injection hardening): KEPT. Upstream pingdotgg#3196/pingdotgg#3292
refactored the invocation (resolveSpawnCommand) and reverted to
--dangerously-skip-permissions; auto-merge preserved our
--permission-mode default --allowed-tools StructuredOutput swap + tests.
- Item 6(a) (live token usage in working row): KEPT, re-integrated
activeContextWindow threading onto upstream's reworked MessagesTimeline
(made the prop optional).
- Item 6(b) (in-flight tool-call rows): DROPPED as superseded by upstream
pingdotgg#3022 work-log rework (toolLifecycleStatus + WorkEntryIconSvg). Removed
status field usage, took upstream's session-logic.{ts,test.ts} wholesale.
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, '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

[codex] Refactor review and text generation services - #3196

Merged
juliusmarminge merged 1 commit into
mainfrom
codex/effect-service-server-review-text
Jun 20, 2026
Merged

[codex] Refactor review and text generation services#3196
juliusmarminge merged 1 commit into
mainfrom
codex/effect-service-server-review-text

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • Defines the ReviewService and TextGeneration service contracts inline on their Context.Service tags.
  • Exposes canonical make and layer exports without synthetic Effect.succeed wrappers.
  • Updates provider-specific text-generation implementations and direct consumers to use namespace imports, module-qualified tags/helpers/errors, and Service["Service"] types.
  • Preserves the plain promise-based TextGenerationService provider contract.
  • Keeps the deprecated TextGenerationShape alias only for the excluded orchestration compatibility harness; this PR does not modify orchestration modules.

Behavior

Provider-instance routing, review diff generation, and text-generation behavior are unchanged. This is a service-module organization and typing refactor.

Validation

  • Eight review/text-generation test files — 53 tests passed
  • vp check — passed; 20 pre-existing unrelated warnings
  • vp run typecheck — passed
  • Review-thread audit — no unresolved or actionable inline threads
  • Orchestration/MCP diff audit — no changes

Note

Low Risk
Import and typing refactors only; provider-instance routing and service behavior are unchanged, with broad test coverage noted in the PR.

Overview
This PR mechanically aligns the review and text-generation domains with the repo’s target Effect Context.Service pattern without changing routing or generation behavior.

TextGeneration now defines its API on the service tag itself (replacing a separate TextGenerationShape interface), builds registry-backed implementations via TextGeneration.of, and exposes a make effect plus a layer wired as Layer.effect(TextGeneration, make). A deprecatedTextGenerationShape alias remains for legacy consumers. ReviewService follows the same move: the standalone shape type is removed, make is a plain Effect.gen, and the layer references that effect directly.

All provider implementations (Claude, Codex, Cursor, Grok, OpenCode) and ProviderDriver now satisfy TextGeneration.TextGeneration["Service"] instead of the old shape type. Tests and harnesses (GitManager, ProviderAdapterRegistry, text-generation tests, etc.) switch to namespace imports (* as Module) for services, config, GitHub CLI, and related helpers so tokens and errors are referenced in a consistent, module-qualified way.

Reviewed by Cursor Bugbot for commit 7fe6a2e. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Refactor text generation and review services to use namespace imports

  • Replaces named imports with namespace imports across all text generation providers (ClaudeTextGeneration, CodexTextGeneration, CursorTextGeneration, GrokTextGeneration, OpenCodeTextGeneration) and the ReviewService, aligning import style with Effect.js conventions.
  • Replaces the separate TextGenerationShape interface with an inline Context.Service-based TextGeneration class; exports TextGenerationShape as a deprecated type alias for backward compatibility.
  • Adds a standalone make effect to TextGeneration.ts and simplifies the layer to Layer.effect(TextGeneration, make).
  • Updates ReviewService to inline its service shape via Context.Service generic and changes make from a function returning an Effect to a plain Effect.
  • Updates all test helpers and DI wiring in GitManager.test.ts and ProviderAdapterRegistry.test.ts to use namespaced service tokens (e.g. ServerConfig.ServerConfig.layerTest).

Macroscope summarized 7fe6a2e.

@coderabbitai

coderabbitaiBot commented Jun 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 55b18efe-0143-414e-a719-797dbc348164

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/effect-service-server-review-text

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Jun 20, 2026
@github-actions

github-actionsBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

🚀 Expo continuous deployment is ready!

  • Project → t3-code
  • Platforms → android, ios
  • Scheme → t3code-preview
🤖 Android🍎 iOS
Fingerprintfe5a51f2e189da69dfc4c2cd458e6cfb5fdff2eaae3bd597809dfd7771d0898f735d172973d4c1c8
Build DetailsBuild Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: fe5a51f2e189da69dfc4c2cd458e6cfb5fdff2ea
App version: 0.1.0
Git commit: 92eee17a1337fb6a188937c323e76dae2c386585
Build Permalink
DetailsDistribution: INTERNAL
Build profile: preview:dev
Runtime version: ae3bd597809dfd7771d0898f735d172973d4c1c8
App version: 0.1.0
Git commit: eb448c5d21d67cc2c283172b1ea3495232588935
Update DetailsUpdate Permalink
DetailsBranch: pr-3196
Runtime version: fe5a51f2e189da69dfc4c2cd458e6cfb5fdff2ea
Git commit: 56de00b8ec482bdc5224f7f4526b3c919da075d2
Update Permalink
DetailsBranch: pr-3196
Runtime version: ae3bd597809dfd7771d0898f735d172973d4c1c8
Git commit: 56de00b8ec482bdc5224f7f4526b3c919da075d2
Update QR

@juliusmarminge
juliusmarminge marked this pull request as ready for review June 20, 2026 02:06
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR contains mechanical refactoring changes - converting named imports to namespace imports and reorganizing type definitions. No runtime behavior is modified; the actual function implementations remain identical.

You can customize Macroscope's approvability policy. Learn more.

@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 349a8f2 to 3d81b95CompareJune 20, 2026 02:34
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 02:34

Dismissing prior approval to re-evaluate 3d81b95

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 3d81b95 to 874c228CompareJune 20, 2026 03:10
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 03:10

Dismissing prior approval to re-evaluate 874c228

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/effect-service-server-review-text branch from 874c228 to 7fe6a2eCompareJune 20, 2026 03:17
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 03:18

Dismissing prior approval to re-evaluate 7fe6a2e

@juliusmarminge
juliusmarminge merged commit b630278 into mainJun 20, 2026
15 checks passed
@juliusmarminge
juliusmarminge deleted the codex/effect-service-server-review-text branch June 20, 2026 04:04
slan48 pushed a commit to slan48/t3code that referenced this pull request Jun 24, 2026
Fork customization triage:
- Item 2 (AGENTS.md), Item 3 (.gitignore): untouched upstream, kept.
- Item 4 (Cmd+B sidebar.toggle): SUPERSEDED by upstream pingdotgg#3497 'Add main
sidebar toggle'. Adopted upstream's SidebarControl handler + UI wholesale;
dropped our capture-phase SidebarShortcutHandler and orphaned
isSidebarToggleShortcut helper. Pending manual smoke test (composer/terminal
focus).
- Item 5 (sidecar prompt-injection hardening): KEPT. Upstream pingdotgg#3196/pingdotgg#3292
refactored the invocation (resolveSpawnCommand) and reverted to
--dangerously-skip-permissions; auto-merge preserved our
--permission-mode default --allowed-tools StructuredOutput swap + tests.
- Item 6(a) (live token usage in working row): KEPT, re-integrated
activeContextWindow threading onto upstream's reworked MessagesTimeline
(made the prop optional).
- Item 6(b) (in-flight tool-call rows): DROPPED as superseded by upstream
pingdotgg#3022 work-log rework (toolLifecycleStatus + WorkEntryIconSvg). Removed
status field usage, took upstream's session-logic.{ts,test.ts} wholesale.
NeilTheFisher pushed a commit to NeilTheFisher/t3code that referenced this pull request Aug 18, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
darjss pushed a commit to darjss/t3code that referenced this pull request Aug 26, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge