[codex] Structure Codex schema generator errors - #3354

Merged
juliusmarminge merged 4 commits into
codex/redact-dpop-request-targetfrom
codex/codex-generator-errors
Jun 20, 2026
Merged

[codex] Structure Codex schema generator errors#3354
juliusmarminge merged 4 commits into
codex/redact-dpop-request-targetfrom
codex/codex-generator-errors

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the generator's free-form error and generic throws with structured Schema errors
  • retain fetch, decode, and process causes while attaching URLs, repository paths, resolution candidates, commands, and exit codes
  • cover fetch/decode/formatter failure boundaries with focused tests

Validation

  • vp test packages/effect-codex-app-server/scripts/generate.test.ts --no-cache
  • vp check (passes with pre-existing warnings)
  • vp run typecheck
  • vpr typecheck

Overlap audit

No current open PR touches either changed path, including previous filenames.


Note

Low Risk
Dev-time codegen script refactor with tests; no runtime app behavior change beyond safer import of generate.ts.

Overview
Replaces the Codex schema generator’s single GeneratorError and ad-hoc throw new Error paths with Effect Schema.TaggedErrorClass types (fetch, directory/schema decode, formatter spawn/exit, generated declaration parsing, type and external-ref resolution). Network-related failures attach redacted URL diagnostics via @t3tools/sharedgetUrlDiagnostics (length, protocol, hostname—no raw URLs or secrets in messages).

Exported helpers (fetchText, fetchDirectoryEntries, decodeSchemaDocument, formatGeneratedFiles, collectSchemaEntries) so failures can be tested in isolation; formatGeneratedFiles centralizes vp fmt and maps nonzero exits to structured errors. Schema JSON handling threads repositoryPath into decode errors.

generateFiles only runs when executed as the script (if (import.meta.main)), so importing generate.ts no longer triggers generation. Adds generate.test.ts covering safe fetch diagnostics, decode context, formatter exit codes, and malformed generator output.

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

Note

Structure Codex schema generator errors into typed, sanitized error classes

  • Replaces the single generic GeneratorError in generate.ts with distinct tagged error classes for each failure mode: fetch, directory decode, schema decode, format process/exit, missing declarations, name parse, type resolution, and external reference resolution.
  • Each error class captures sanitized, structured fields (e.g. URL diagnostics without raw URLs, command args count, exit code, line index) instead of raw error messages.
  • Refactors fetchText, fetchDirectoryEntries, decodeSchemaDocument, formatGeneratedFiles, and collectSchemaEntries into exported Effect.fn functions that propagate typed failures.
  • Adds a comprehensive test suite in generate.test.ts covering error behavior for all new error classes using custom HTTP and process test doubles.
  • Wraps the CLI entrypoint in an import.meta.main guard so importing the module no longer triggers generation.

Macroscope summarized c9cb0c3.

@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: 4fbb68c5-0eef-4958-a57d-e56371b844eb

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/codex-generator-errors

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
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR refactors error handling in the Codex schema generator by replacing a generic error class with multiple specific typed error classes, adds URL sanitization for security, and includes comprehensive tests. The changes are structural improvements to error reporting without altering the generator's core behavior.

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

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 14:31

Dismissing prior approval to re-evaluate 1a4e059

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
juliusmarmingeand others added 2 commits June 20, 2026 09:55
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/codex-generator-errors branch from 1a4e059 to a31eb6fCompareJune 20, 2026 16:56
@juliusmarminge
juliusmarminge changed the base branch from main to codex/redact-dpop-request-targetJune 20, 2026 16:56
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 16:57

Dismissing prior approval to re-evaluate a31eb6f

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/codex-generator-errors branch from a31eb6f to c27e679CompareJune 20, 2026 16:58
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 20, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 17:08

Dismissing prior approval to re-evaluate c9cb0c3

@juliusmarminge
juliusmarminge merged this pull request into codex/redact-dpop-request-targetJun 20, 2026
16 checks passed
@juliusmarminge
juliusmarminge deleted the codex/codex-generator-errors branch June 20, 2026 18:35
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 21, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 21, 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] Structure Codex schema generator errors - #3354

Merged
juliusmarminge merged 4 commits into
codex/redact-dpop-request-targetfrom
codex/codex-generator-errors
Jun 20, 2026
Merged

[codex] Structure Codex schema generator errors#3354
juliusmarminge merged 4 commits into
codex/redact-dpop-request-targetfrom
codex/codex-generator-errors

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the generator's free-form error and generic throws with structured Schema errors
  • retain fetch, decode, and process causes while attaching URLs, repository paths, resolution candidates, commands, and exit codes
  • cover fetch/decode/formatter failure boundaries with focused tests

Validation

  • vp test packages/effect-codex-app-server/scripts/generate.test.ts --no-cache
  • vp check (passes with pre-existing warnings)
  • vp run typecheck
  • vpr typecheck

Overlap audit

No current open PR touches either changed path, including previous filenames.


Note

Low Risk
Dev-time codegen script refactor with tests; no runtime app behavior change beyond safer import of generate.ts.

Overview
Replaces the Codex schema generator’s single GeneratorError and ad-hoc throw new Error paths with Effect Schema.TaggedErrorClass types (fetch, directory/schema decode, formatter spawn/exit, generated declaration parsing, type and external-ref resolution). Network-related failures attach redacted URL diagnostics via @t3tools/sharedgetUrlDiagnostics (length, protocol, hostname—no raw URLs or secrets in messages).

Exported helpers (fetchText, fetchDirectoryEntries, decodeSchemaDocument, formatGeneratedFiles, collectSchemaEntries) so failures can be tested in isolation; formatGeneratedFiles centralizes vp fmt and maps nonzero exits to structured errors. Schema JSON handling threads repositoryPath into decode errors.

generateFiles only runs when executed as the script (if (import.meta.main)), so importing generate.ts no longer triggers generation. Adds generate.test.ts covering safe fetch diagnostics, decode context, formatter exit codes, and malformed generator output.

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

Note

Structure Codex schema generator errors into typed, sanitized error classes

  • Replaces the single generic GeneratorError in generate.ts with distinct tagged error classes for each failure mode: fetch, directory decode, schema decode, format process/exit, missing declarations, name parse, type resolution, and external reference resolution.
  • Each error class captures sanitized, structured fields (e.g. URL diagnostics without raw URLs, command args count, exit code, line index) instead of raw error messages.
  • Refactors fetchText, fetchDirectoryEntries, decodeSchemaDocument, formatGeneratedFiles, and collectSchemaEntries into exported Effect.fn functions that propagate typed failures.
  • Adds a comprehensive test suite in generate.test.ts covering error behavior for all new error classes using custom HTTP and process test doubles.
  • Wraps the CLI entrypoint in an import.meta.main guard so importing the module no longer triggers generation.

Macroscope summarized c9cb0c3.

@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: 4fbb68c5-0eef-4958-a57d-e56371b844eb

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/codex-generator-errors

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
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR refactors error handling in the Codex schema generator by replacing a generic error class with multiple specific typed error classes, adds URL sanitization for security, and includes comprehensive tests. The changes are structural improvements to error reporting without altering the generator's core behavior.

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

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 14:31

Dismissing prior approval to re-evaluate 1a4e059

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
juliusmarmingeand others added 2 commits June 20, 2026 09:55
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/codex-generator-errors branch from 1a4e059 to a31eb6fCompareJune 20, 2026 16:56
@juliusmarminge
juliusmarminge changed the base branch from main to codex/redact-dpop-request-targetJune 20, 2026 16:56
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 16:57

Dismissing prior approval to re-evaluate a31eb6f

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/codex-generator-errors branch from a31eb6f to c27e679CompareJune 20, 2026 16:58
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 20, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 17:08

Dismissing prior approval to re-evaluate c9cb0c3

@juliusmarminge
juliusmarminge merged this pull request into codex/redact-dpop-request-targetJun 20, 2026
16 checks passed
@juliusmarminge
juliusmarminge deleted the codex/codex-generator-errors branch June 20, 2026 18:35
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 21, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 21, 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] Structure Codex schema generator errors - #3354

Merged
juliusmarminge merged 4 commits into
codex/redact-dpop-request-targetfrom
codex/codex-generator-errors
Jun 20, 2026
Merged

[codex] Structure Codex schema generator errors#3354
juliusmarminge merged 4 commits into
codex/redact-dpop-request-targetfrom
codex/codex-generator-errors

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the generator's free-form error and generic throws with structured Schema errors
  • retain fetch, decode, and process causes while attaching URLs, repository paths, resolution candidates, commands, and exit codes
  • cover fetch/decode/formatter failure boundaries with focused tests

Validation

  • vp test packages/effect-codex-app-server/scripts/generate.test.ts --no-cache
  • vp check (passes with pre-existing warnings)
  • vp run typecheck
  • vpr typecheck

Overlap audit

No current open PR touches either changed path, including previous filenames.


Note

Low Risk
Dev-time codegen script refactor with tests; no runtime app behavior change beyond safer import of generate.ts.

Overview
Replaces the Codex schema generator’s single GeneratorError and ad-hoc throw new Error paths with Effect Schema.TaggedErrorClass types (fetch, directory/schema decode, formatter spawn/exit, generated declaration parsing, type and external-ref resolution). Network-related failures attach redacted URL diagnostics via @t3tools/sharedgetUrlDiagnostics (length, protocol, hostname—no raw URLs or secrets in messages).

Exported helpers (fetchText, fetchDirectoryEntries, decodeSchemaDocument, formatGeneratedFiles, collectSchemaEntries) so failures can be tested in isolation; formatGeneratedFiles centralizes vp fmt and maps nonzero exits to structured errors. Schema JSON handling threads repositoryPath into decode errors.

generateFiles only runs when executed as the script (if (import.meta.main)), so importing generate.ts no longer triggers generation. Adds generate.test.ts covering safe fetch diagnostics, decode context, formatter exit codes, and malformed generator output.

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

Note

Structure Codex schema generator errors into typed, sanitized error classes

  • Replaces the single generic GeneratorError in generate.ts with distinct tagged error classes for each failure mode: fetch, directory decode, schema decode, format process/exit, missing declarations, name parse, type resolution, and external reference resolution.
  • Each error class captures sanitized, structured fields (e.g. URL diagnostics without raw URLs, command args count, exit code, line index) instead of raw error messages.
  • Refactors fetchText, fetchDirectoryEntries, decodeSchemaDocument, formatGeneratedFiles, and collectSchemaEntries into exported Effect.fn functions that propagate typed failures.
  • Adds a comprehensive test suite in generate.test.ts covering error behavior for all new error classes using custom HTTP and process test doubles.
  • Wraps the CLI entrypoint in an import.meta.main guard so importing the module no longer triggers generation.

Macroscope summarized c9cb0c3.

@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: 4fbb68c5-0eef-4958-a57d-e56371b844eb

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/codex-generator-errors

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
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR refactors error handling in the Codex schema generator by replacing a generic error class with multiple specific typed error classes, adds URL sanitization for security, and includes comprehensive tests. The changes are structural improvements to error reporting without altering the generator's core behavior.

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

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 14:31

Dismissing prior approval to re-evaluate 1a4e059

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
juliusmarmingeand others added 2 commits June 20, 2026 09:55
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/codex-generator-errors branch from 1a4e059 to a31eb6fCompareJune 20, 2026 16:56
@juliusmarminge
juliusmarminge changed the base branch from main to codex/redact-dpop-request-targetJune 20, 2026 16:56
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 16:57

Dismissing prior approval to re-evaluate a31eb6f

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/codex-generator-errors branch from a31eb6f to c27e679CompareJune 20, 2026 16:58
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 20, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 17:08

Dismissing prior approval to re-evaluate c9cb0c3

@juliusmarminge
juliusmarminge merged this pull request into codex/redact-dpop-request-targetJun 20, 2026
16 checks passed
@juliusmarminge
juliusmarminge deleted the codex/codex-generator-errors branch June 20, 2026 18:35
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 21, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 21, 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] Structure Codex schema generator errors - #3354

Merged
juliusmarminge merged 4 commits into
codex/redact-dpop-request-targetfrom
codex/codex-generator-errors
Jun 20, 2026
Merged

[codex] Structure Codex schema generator errors#3354
juliusmarminge merged 4 commits into
codex/redact-dpop-request-targetfrom
codex/codex-generator-errors

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the generator's free-form error and generic throws with structured Schema errors
  • retain fetch, decode, and process causes while attaching URLs, repository paths, resolution candidates, commands, and exit codes
  • cover fetch/decode/formatter failure boundaries with focused tests

Validation

  • vp test packages/effect-codex-app-server/scripts/generate.test.ts --no-cache
  • vp check (passes with pre-existing warnings)
  • vp run typecheck
  • vpr typecheck

Overlap audit

No current open PR touches either changed path, including previous filenames.


Note

Low Risk
Dev-time codegen script refactor with tests; no runtime app behavior change beyond safer import of generate.ts.

Overview
Replaces the Codex schema generator’s single GeneratorError and ad-hoc throw new Error paths with Effect Schema.TaggedErrorClass types (fetch, directory/schema decode, formatter spawn/exit, generated declaration parsing, type and external-ref resolution). Network-related failures attach redacted URL diagnostics via @t3tools/sharedgetUrlDiagnostics (length, protocol, hostname—no raw URLs or secrets in messages).

Exported helpers (fetchText, fetchDirectoryEntries, decodeSchemaDocument, formatGeneratedFiles, collectSchemaEntries) so failures can be tested in isolation; formatGeneratedFiles centralizes vp fmt and maps nonzero exits to structured errors. Schema JSON handling threads repositoryPath into decode errors.

generateFiles only runs when executed as the script (if (import.meta.main)), so importing generate.ts no longer triggers generation. Adds generate.test.ts covering safe fetch diagnostics, decode context, formatter exit codes, and malformed generator output.

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

Note

Structure Codex schema generator errors into typed, sanitized error classes

  • Replaces the single generic GeneratorError in generate.ts with distinct tagged error classes for each failure mode: fetch, directory decode, schema decode, format process/exit, missing declarations, name parse, type resolution, and external reference resolution.
  • Each error class captures sanitized, structured fields (e.g. URL diagnostics without raw URLs, command args count, exit code, line index) instead of raw error messages.
  • Refactors fetchText, fetchDirectoryEntries, decodeSchemaDocument, formatGeneratedFiles, and collectSchemaEntries into exported Effect.fn functions that propagate typed failures.
  • Adds a comprehensive test suite in generate.test.ts covering error behavior for all new error classes using custom HTTP and process test doubles.
  • Wraps the CLI entrypoint in an import.meta.main guard so importing the module no longer triggers generation.

Macroscope summarized c9cb0c3.

@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: 4fbb68c5-0eef-4958-a57d-e56371b844eb

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/codex-generator-errors

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
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR refactors error handling in the Codex schema generator by replacing a generic error class with multiple specific typed error classes, adds URL sanitization for security, and includes comprehensive tests. The changes are structural improvements to error reporting without altering the generator's core behavior.

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

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 14:31

Dismissing prior approval to re-evaluate 1a4e059

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
juliusmarmingeand others added 2 commits June 20, 2026 09:55
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/codex-generator-errors branch from 1a4e059 to a31eb6fCompareJune 20, 2026 16:56
@juliusmarminge
juliusmarminge changed the base branch from main to codex/redact-dpop-request-targetJune 20, 2026 16:56
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 16:57

Dismissing prior approval to re-evaluate a31eb6f

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/codex-generator-errors branch from a31eb6f to c27e679CompareJune 20, 2026 16:58
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 20, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 17:08

Dismissing prior approval to re-evaluate c9cb0c3

@juliusmarminge
juliusmarminge merged this pull request into codex/redact-dpop-request-targetJun 20, 2026
16 checks passed
@juliusmarminge
juliusmarminge deleted the codex/codex-generator-errors branch June 20, 2026 18:35
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 21, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 21, 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] Structure Codex schema generator errors - #3354

Merged
juliusmarminge merged 4 commits into
codex/redact-dpop-request-targetfrom
codex/codex-generator-errors
Jun 20, 2026
Merged

[codex] Structure Codex schema generator errors#3354
juliusmarminge merged 4 commits into
codex/redact-dpop-request-targetfrom
codex/codex-generator-errors

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the generator's free-form error and generic throws with structured Schema errors
  • retain fetch, decode, and process causes while attaching URLs, repository paths, resolution candidates, commands, and exit codes
  • cover fetch/decode/formatter failure boundaries with focused tests

Validation

  • vp test packages/effect-codex-app-server/scripts/generate.test.ts --no-cache
  • vp check (passes with pre-existing warnings)
  • vp run typecheck
  • vpr typecheck

Overlap audit

No current open PR touches either changed path, including previous filenames.


Note

Low Risk
Dev-time codegen script refactor with tests; no runtime app behavior change beyond safer import of generate.ts.

Overview
Replaces the Codex schema generator’s single GeneratorError and ad-hoc throw new Error paths with Effect Schema.TaggedErrorClass types (fetch, directory/schema decode, formatter spawn/exit, generated declaration parsing, type and external-ref resolution). Network-related failures attach redacted URL diagnostics via @t3tools/sharedgetUrlDiagnostics (length, protocol, hostname—no raw URLs or secrets in messages).

Exported helpers (fetchText, fetchDirectoryEntries, decodeSchemaDocument, formatGeneratedFiles, collectSchemaEntries) so failures can be tested in isolation; formatGeneratedFiles centralizes vp fmt and maps nonzero exits to structured errors. Schema JSON handling threads repositoryPath into decode errors.

generateFiles only runs when executed as the script (if (import.meta.main)), so importing generate.ts no longer triggers generation. Adds generate.test.ts covering safe fetch diagnostics, decode context, formatter exit codes, and malformed generator output.

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

Note

Structure Codex schema generator errors into typed, sanitized error classes

  • Replaces the single generic GeneratorError in generate.ts with distinct tagged error classes for each failure mode: fetch, directory decode, schema decode, format process/exit, missing declarations, name parse, type resolution, and external reference resolution.
  • Each error class captures sanitized, structured fields (e.g. URL diagnostics without raw URLs, command args count, exit code, line index) instead of raw error messages.
  • Refactors fetchText, fetchDirectoryEntries, decodeSchemaDocument, formatGeneratedFiles, and collectSchemaEntries into exported Effect.fn functions that propagate typed failures.
  • Adds a comprehensive test suite in generate.test.ts covering error behavior for all new error classes using custom HTTP and process test doubles.
  • Wraps the CLI entrypoint in an import.meta.main guard so importing the module no longer triggers generation.

Macroscope summarized c9cb0c3.

@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: 4fbb68c5-0eef-4958-a57d-e56371b844eb

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/codex-generator-errors

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
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR refactors error handling in the Codex schema generator by replacing a generic error class with multiple specific typed error classes, adds URL sanitization for security, and includes comprehensive tests. The changes are structural improvements to error reporting without altering the generator's core behavior.

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

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 14:31

Dismissing prior approval to re-evaluate 1a4e059

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
juliusmarmingeand others added 2 commits June 20, 2026 09:55
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/codex-generator-errors branch from 1a4e059 to a31eb6fCompareJune 20, 2026 16:56
@juliusmarminge
juliusmarminge changed the base branch from main to codex/redact-dpop-request-targetJune 20, 2026 16:56
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 16:57

Dismissing prior approval to re-evaluate a31eb6f

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/codex-generator-errors branch from a31eb6f to c27e679CompareJune 20, 2026 16:58
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 20, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 17:08

Dismissing prior approval to re-evaluate c9cb0c3

@juliusmarminge
juliusmarminge merged this pull request into codex/redact-dpop-request-targetJun 20, 2026
16 checks passed
@juliusmarminge
juliusmarminge deleted the codex/codex-generator-errors branch June 20, 2026 18:35
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 21, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 21, 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] Structure Codex schema generator errors - #3354

Merged
juliusmarminge merged 4 commits into
codex/redact-dpop-request-targetfrom
codex/codex-generator-errors
Jun 20, 2026
Merged

[codex] Structure Codex schema generator errors#3354
juliusmarminge merged 4 commits into
codex/redact-dpop-request-targetfrom
codex/codex-generator-errors

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the generator's free-form error and generic throws with structured Schema errors
  • retain fetch, decode, and process causes while attaching URLs, repository paths, resolution candidates, commands, and exit codes
  • cover fetch/decode/formatter failure boundaries with focused tests

Validation

  • vp test packages/effect-codex-app-server/scripts/generate.test.ts --no-cache
  • vp check (passes with pre-existing warnings)
  • vp run typecheck
  • vpr typecheck

Overlap audit

No current open PR touches either changed path, including previous filenames.


Note

Low Risk
Dev-time codegen script refactor with tests; no runtime app behavior change beyond safer import of generate.ts.

Overview
Replaces the Codex schema generator’s single GeneratorError and ad-hoc throw new Error paths with Effect Schema.TaggedErrorClass types (fetch, directory/schema decode, formatter spawn/exit, generated declaration parsing, type and external-ref resolution). Network-related failures attach redacted URL diagnostics via @t3tools/sharedgetUrlDiagnostics (length, protocol, hostname—no raw URLs or secrets in messages).

Exported helpers (fetchText, fetchDirectoryEntries, decodeSchemaDocument, formatGeneratedFiles, collectSchemaEntries) so failures can be tested in isolation; formatGeneratedFiles centralizes vp fmt and maps nonzero exits to structured errors. Schema JSON handling threads repositoryPath into decode errors.

generateFiles only runs when executed as the script (if (import.meta.main)), so importing generate.ts no longer triggers generation. Adds generate.test.ts covering safe fetch diagnostics, decode context, formatter exit codes, and malformed generator output.

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

Note

Structure Codex schema generator errors into typed, sanitized error classes

  • Replaces the single generic GeneratorError in generate.ts with distinct tagged error classes for each failure mode: fetch, directory decode, schema decode, format process/exit, missing declarations, name parse, type resolution, and external reference resolution.
  • Each error class captures sanitized, structured fields (e.g. URL diagnostics without raw URLs, command args count, exit code, line index) instead of raw error messages.
  • Refactors fetchText, fetchDirectoryEntries, decodeSchemaDocument, formatGeneratedFiles, and collectSchemaEntries into exported Effect.fn functions that propagate typed failures.
  • Adds a comprehensive test suite in generate.test.ts covering error behavior for all new error classes using custom HTTP and process test doubles.
  • Wraps the CLI entrypoint in an import.meta.main guard so importing the module no longer triggers generation.

Macroscope summarized c9cb0c3.

@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: 4fbb68c5-0eef-4958-a57d-e56371b844eb

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/codex-generator-errors

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
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR refactors error handling in the Codex schema generator by replacing a generic error class with multiple specific typed error classes, adds URL sanitization for security, and includes comprehensive tests. The changes are structural improvements to error reporting without altering the generator's core behavior.

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

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 14:31

Dismissing prior approval to re-evaluate 1a4e059

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
juliusmarmingeand others added 2 commits June 20, 2026 09:55
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/codex-generator-errors branch from 1a4e059 to a31eb6fCompareJune 20, 2026 16:56
@juliusmarminge
juliusmarminge changed the base branch from main to codex/redact-dpop-request-targetJune 20, 2026 16:56
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 16:57

Dismissing prior approval to re-evaluate a31eb6f

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/codex-generator-errors branch from a31eb6f to c27e679CompareJune 20, 2026 16:58
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 20, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 17:08

Dismissing prior approval to re-evaluate c9cb0c3

@juliusmarminge
juliusmarminge merged this pull request into codex/redact-dpop-request-targetJun 20, 2026
16 checks passed
@juliusmarminge
juliusmarminge deleted the codex/codex-generator-errors branch June 20, 2026 18:35
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 21, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 21, 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] Structure Codex schema generator errors - #3354

Merged
juliusmarminge merged 4 commits into
codex/redact-dpop-request-targetfrom
codex/codex-generator-errors
Jun 20, 2026
Merged

[codex] Structure Codex schema generator errors#3354
juliusmarminge merged 4 commits into
codex/redact-dpop-request-targetfrom
codex/codex-generator-errors

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the generator's free-form error and generic throws with structured Schema errors
  • retain fetch, decode, and process causes while attaching URLs, repository paths, resolution candidates, commands, and exit codes
  • cover fetch/decode/formatter failure boundaries with focused tests

Validation

  • vp test packages/effect-codex-app-server/scripts/generate.test.ts --no-cache
  • vp check (passes with pre-existing warnings)
  • vp run typecheck
  • vpr typecheck

Overlap audit

No current open PR touches either changed path, including previous filenames.


Note

Low Risk
Dev-time codegen script refactor with tests; no runtime app behavior change beyond safer import of generate.ts.

Overview
Replaces the Codex schema generator’s single GeneratorError and ad-hoc throw new Error paths with Effect Schema.TaggedErrorClass types (fetch, directory/schema decode, formatter spawn/exit, generated declaration parsing, type and external-ref resolution). Network-related failures attach redacted URL diagnostics via @t3tools/sharedgetUrlDiagnostics (length, protocol, hostname—no raw URLs or secrets in messages).

Exported helpers (fetchText, fetchDirectoryEntries, decodeSchemaDocument, formatGeneratedFiles, collectSchemaEntries) so failures can be tested in isolation; formatGeneratedFiles centralizes vp fmt and maps nonzero exits to structured errors. Schema JSON handling threads repositoryPath into decode errors.

generateFiles only runs when executed as the script (if (import.meta.main)), so importing generate.ts no longer triggers generation. Adds generate.test.ts covering safe fetch diagnostics, decode context, formatter exit codes, and malformed generator output.

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

Note

Structure Codex schema generator errors into typed, sanitized error classes

  • Replaces the single generic GeneratorError in generate.ts with distinct tagged error classes for each failure mode: fetch, directory decode, schema decode, format process/exit, missing declarations, name parse, type resolution, and external reference resolution.
  • Each error class captures sanitized, structured fields (e.g. URL diagnostics without raw URLs, command args count, exit code, line index) instead of raw error messages.
  • Refactors fetchText, fetchDirectoryEntries, decodeSchemaDocument, formatGeneratedFiles, and collectSchemaEntries into exported Effect.fn functions that propagate typed failures.
  • Adds a comprehensive test suite in generate.test.ts covering error behavior for all new error classes using custom HTTP and process test doubles.
  • Wraps the CLI entrypoint in an import.meta.main guard so importing the module no longer triggers generation.

Macroscope summarized c9cb0c3.

@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: 4fbb68c5-0eef-4958-a57d-e56371b844eb

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/codex-generator-errors

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
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR refactors error handling in the Codex schema generator by replacing a generic error class with multiple specific typed error classes, adds URL sanitization for security, and includes comprehensive tests. The changes are structural improvements to error reporting without altering the generator's core behavior.

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

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 14:31

Dismissing prior approval to re-evaluate 1a4e059

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
juliusmarmingeand others added 2 commits June 20, 2026 09:55
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/codex-generator-errors branch from 1a4e059 to a31eb6fCompareJune 20, 2026 16:56
@juliusmarminge
juliusmarminge changed the base branch from main to codex/redact-dpop-request-targetJune 20, 2026 16:56
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 16:57

Dismissing prior approval to re-evaluate a31eb6f

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/codex-generator-errors branch from a31eb6f to c27e679CompareJune 20, 2026 16:58
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 20, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 17:08

Dismissing prior approval to re-evaluate c9cb0c3

@juliusmarminge
juliusmarminge merged this pull request into codex/redact-dpop-request-targetJun 20, 2026
16 checks passed
@juliusmarminge
juliusmarminge deleted the codex/codex-generator-errors branch June 20, 2026 18:35
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 21, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 21, 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] Structure Codex schema generator errors - #3354

Merged
juliusmarminge merged 4 commits into
codex/redact-dpop-request-targetfrom
codex/codex-generator-errors
Jun 20, 2026
Merged

[codex] Structure Codex schema generator errors#3354
juliusmarminge merged 4 commits into
codex/redact-dpop-request-targetfrom
codex/codex-generator-errors

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the generator's free-form error and generic throws with structured Schema errors
  • retain fetch, decode, and process causes while attaching URLs, repository paths, resolution candidates, commands, and exit codes
  • cover fetch/decode/formatter failure boundaries with focused tests

Validation

  • vp test packages/effect-codex-app-server/scripts/generate.test.ts --no-cache
  • vp check (passes with pre-existing warnings)
  • vp run typecheck
  • vpr typecheck

Overlap audit

No current open PR touches either changed path, including previous filenames.


Note

Low Risk
Dev-time codegen script refactor with tests; no runtime app behavior change beyond safer import of generate.ts.

Overview
Replaces the Codex schema generator’s single GeneratorError and ad-hoc throw new Error paths with Effect Schema.TaggedErrorClass types (fetch, directory/schema decode, formatter spawn/exit, generated declaration parsing, type and external-ref resolution). Network-related failures attach redacted URL diagnostics via @t3tools/sharedgetUrlDiagnostics (length, protocol, hostname—no raw URLs or secrets in messages).

Exported helpers (fetchText, fetchDirectoryEntries, decodeSchemaDocument, formatGeneratedFiles, collectSchemaEntries) so failures can be tested in isolation; formatGeneratedFiles centralizes vp fmt and maps nonzero exits to structured errors. Schema JSON handling threads repositoryPath into decode errors.

generateFiles only runs when executed as the script (if (import.meta.main)), so importing generate.ts no longer triggers generation. Adds generate.test.ts covering safe fetch diagnostics, decode context, formatter exit codes, and malformed generator output.

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

Note

Structure Codex schema generator errors into typed, sanitized error classes

  • Replaces the single generic GeneratorError in generate.ts with distinct tagged error classes for each failure mode: fetch, directory decode, schema decode, format process/exit, missing declarations, name parse, type resolution, and external reference resolution.
  • Each error class captures sanitized, structured fields (e.g. URL diagnostics without raw URLs, command args count, exit code, line index) instead of raw error messages.
  • Refactors fetchText, fetchDirectoryEntries, decodeSchemaDocument, formatGeneratedFiles, and collectSchemaEntries into exported Effect.fn functions that propagate typed failures.
  • Adds a comprehensive test suite in generate.test.ts covering error behavior for all new error classes using custom HTTP and process test doubles.
  • Wraps the CLI entrypoint in an import.meta.main guard so importing the module no longer triggers generation.

Macroscope summarized c9cb0c3.

@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: 4fbb68c5-0eef-4958-a57d-e56371b844eb

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/codex-generator-errors

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
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR refactors error handling in the Codex schema generator by replacing a generic error class with multiple specific typed error classes, adds URL sanitization for security, and includes comprehensive tests. The changes are structural improvements to error reporting without altering the generator's core behavior.

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

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 14:31

Dismissing prior approval to re-evaluate 1a4e059

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
juliusmarmingeand others added 2 commits June 20, 2026 09:55
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/codex-generator-errors branch from 1a4e059 to a31eb6fCompareJune 20, 2026 16:56
@juliusmarminge
juliusmarminge changed the base branch from main to codex/redact-dpop-request-targetJune 20, 2026 16:56
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 16:57

Dismissing prior approval to re-evaluate a31eb6f

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:L 100-499 changed lines (additions + deletions). labels Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/codex-generator-errors branch from a31eb6f to c27e679CompareJune 20, 2026 16:58
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 20, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 17:08

Dismissing prior approval to re-evaluate c9cb0c3

@juliusmarminge
juliusmarminge merged this pull request into codex/redact-dpop-request-targetJun 20, 2026
16 checks passed
@juliusmarminge
juliusmarminge deleted the codex/codex-generator-errors branch June 20, 2026 18:35
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 20, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 21, 2026
Co-authored-by: codex <codex@users.noreply.github.com>
juliusmarminge added a commit that referenced this pull request Jun 21, 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