Repository navigation
Conversation
Scan declarations and pending headings with bounded forward progress, preserving quoted types and line or block comments as opaque text. Reject malformed delimiter closure and retain valid comment-heavy declarations below the bound. Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 31 minutes. View limit details
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Merge Risk: ⚪ Minimal · up to
|
|
✅ Deterministic PR hygiene checks passed. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cad577cd90
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| return /^(?:args|input): \S[\s\S]*\): Promise<[^>\s][\s\S]*>; \};$/.test(text.slice(prefix.length)); | ||
| const rest = signature.slice(openParen + 1); | ||
| const typed = rest.startsWith("args: ") ? 6 : rest.startsWith("input: ") ? 7 : -1; | ||
| if (typed < 0 || isSpace(rest[typed])) return undefined; |
There was a problem hiding this comment.
Reject an empty declaration parameter type
When a caller-controlled listing has a matching heading and declare const tools: { multi_agent_v1__spawn_agent(args: ): Promise<unknown>; };, typed points at the ), so this whitespace-only guard passes and the balance loop immediately treats that same character as the function's closer. completeDeclarationName therefore returns the V1 name even though the declaration has no parameter type, newly classifying the request as rendered V1 (and enabling downstream V1 guidance when its other gates pass); reject a closing delimiter at the type start or require actual type content before accepting the balancing ).
Useful? React with 👍 / 👎.
A parameter written as `args: )` or `args: /* note */)` let the balancing scan treat its own closer as the separator and accept the declaration. The previous regex refused that shape; require type content before the closer.
Summary
Verification
f9b02c5ef9f08a49f0377354b6089fa0ab6b36d7is based on currentdev6da2774369aa32552e318e333902499683d053bc. Its three changed files match reviewed source revisionce1fa40b2201e04364cc816ed71282c22520f78abyte for byte.bun test --isolate --parallel=1 --timeout 60000 tests/codex-integration/code-mode-collab-surface.test.ts tests/codex-integration/deferred-collab-surface.test.ts— 93 pass, 0 fail, including comment regressions and existing parser/deferred-state cases.bun run typecheck,bun run structure:check,bun run privacy:scan, andgit diff --checkpassed. Privacy scanning covered the materialized sparse checkout, including all changed files.Checklist
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Summary by CodeRabbit