Skip to content

feat(cursor): Cursor ACP reliability, tuning, and prompt hygiene - #432

Merged
chuks-qua merged 10 commits into
mainfrom
feat/improve-cursor-tool-calls
May 9, 2026
Merged

chuks-qua merged 10 commits into
mainfrom
feat/improve-cursor-tool-calls

Conversation

@chuks-qua

@chuks-qua chuks-qua commented May 9, 2026 •

Copy link
Copy Markdown
Contributor

What

Improves the Cursor CLI (ACP) provider with user-tunable behaviour, clearer failures, tighter stuck instruction handling for token use, protocol fixes around tool lifecycle, plus a merge from upstream main.

Why

ACP sessions benefit from pacing full preambles, retrying flaky prompts, resetting skills after registry changes, and answering blocking Cursor extension calls so threads do not wedge. Operators need settings rather than constants. Redundant RPCs to Cursor should stay minimal.

Key Changes

  • Add provider.cursor settings in contracts (sticky vs full preamble, idle TTL, transient retry, verbose logs, cursor/ask_question defaults, timeline echo option) and document them in docs/settings/reference.md.
  • Wire those settings through CursorProvider: prompt retry heuristic, eviction TTL, richer error logs with stderr tails, periodic full preamble, cursor/ask_question auto/skip behaviour, and skill registry debounced invalidation to refresh sticky preamble.
  • perf(cursor): skip unstable_setSessionModel when MCP session id and model id unchanged after a successful apply.
  • Fix deferred ACP tool_call markers so ToolUse events surface correctly (fix(cursor)).
  • Normalize upstream Cursor errors for broadcasts (fix(server)).
  • Earlier related work on sticky instruction and skill catalogue caps stays in branch history (perf(cursor)).
  • Merge origin/main to keep CI and product changes current.

No issue linked.


View in Codesmith
Need help on this PR? Tag @codesmith with what you need.

  • Let Codesmith autofix CI failures and bot reviews

Summary by CodeRabbit

  • New Features

    • Auto-answering for Cursor interactive questions with optional timeline echo; synthesized answer summaries.
    • Sticky instructions with heavy/ resume behavior, per-session pacing, stderr tail capture, and session TTL handling.
    • Improved tool-call lifecycle handling to better link tool start and result events.
  • Configuration

    • Seven new Cursor settings for instruction mode, preamble cadence, idle TTL, retry, verbose logs, auto-answer, and timeline echo.
  • Bug Fixes

    • Standardized provider error messages and transient-failure retry for improved reliability.
  • Tests

    • Expanded test coverage for Cursor behaviors, guidance formatting, transient heuristics, and ask-question flows.

chuks-qua and others added 8 commits May 8, 2026 23:01
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@coderabbitai

coderabbitai Bot commented May 9, 2026 •

Copy link
Copy Markdown

Review Change Stack
No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d219f51e-3daf-4034-ac1d-8101568a5320

📥 Commits

Reviewing files that changed from the base of the PR and between 7df1c9b and 7949e19.

📒 Files selected for processing (1)
  • apps/server/src/services/skill-watcher-service.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/server/src/services/skill-watcher-service.ts

📝 Walkthrough

Walkthrough

Adds Cursor ACP utilities (ask-question auto-answering, sticky instruction resolver, transient-failure heuristic, guidance sizing), centralizes provider error normalization, extends CursorProvider session/state and runTurn logic (retry, stderr tail, model dedupe, sticky instructions), adjusts event mapper, wires skill-watcher callbacks to CursorProvider, updates settings/schema/docs, and integrates normalization and CursorProvider wiring in server startup.

Changes

Cursor Provider ACP Enhancements

Layer / File(s) Summary
Settings Schema
packages/contracts/src/models/settings.ts, packages/contracts/src/models/__tests__/settings.test.ts, docs/settings/reference.md
Seven new Cursor tuning options added to schema and documented: alwaysSendFullInstructions, fullPreambleEveryNTurns, idleSessionTtlMinutes, retryTransientFailuresOnce, verboseFailureLogs, autoAnswerAskQuestions, echoAskQuestionsToTimeline.
Error Normalization
apps/server/src/services/provider-agent-error-normalize.ts, apps/server/src/services/__tests__/provider-agent-error-normalize.test.ts, apps/server/src/services/agent-service.ts
New shared normalizeAgentProviderError centralizes provider-specific error formatting and replaces inline normalization in AgentService.
Cursor ACP Utilities
apps/server/src/providers/cursor/cursor-acp-ask-question.ts, apps/server/src/providers/cursor/__tests__/cursor-acp-ask-question.test.ts, apps/server/src/providers/cursor/cursor-acp-sticky-instructions.ts, apps/server/src/providers/cursor/__tests__/cursor-acp-sticky-instructions.test.ts, apps/server/src/providers/cursor/cursor-acp-transient-retry.ts, apps/server/src/providers/cursor/__tests__/cursor-acp-transient-retry.test.ts, apps/server/src/providers/cursor/cursor-agent-guidance.ts, apps/server/src/providers/cursor/__tests__/cursor-agent-guidance.test.ts
Utility modules for ask-question auto-answering, sticky-instruction resolution with heavy-payload detection and resume hints, transient prompt-failure detection, and guidance truncation; includes unit tests.
Event Mapper
apps/server/src/providers/cursor/cursor-acp-event-mapper.ts, apps/server/src/providers/cursor/__tests__/cursor-acp-event-mapper.test.ts
Tool start-time tracking moved to ToolUse emission point, enabling orphan-synthesized ToolUse when tool_call is deferred with no rawInput and adding a mapper test for the deferred flow.
Cursor Provider Core
apps/server/src/providers/cursor/cursor-provider.ts
Session state extended with sticky-instruction commit tracking, prompt ordinal counter, stderr tail buffer, and cached model pairs; initializes new fields on spawn; replaces cursor/ask_question handling with optional auto-answering and timeline events; deduplicates model application; refactors runTurn to select instructions per settings, resolve heavy blobs, optionally retry transient prompt failures, and include enhanced error context; idle-session TTL sourced from settings.
Skill Watcher
apps/server/src/services/skill-watcher-service.ts
Added registerDebouncedInvalidateListener() to post-invalidation callback support and ensured stopAll() clears the listener reference.
Server Wiring
apps/server/src/index.ts
CursorProvider resolved and wired to skill invalidation callback; agent error events normalized using normalizeAgentProviderError before broadcast/sending.

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant Server
  participant SkillWatcher
  participant CursorProvider
  participant Normalizer

  Client->>Server: request / turn
  Server->>CursorProvider: runTurn(...)
  CursorProvider->>CursorProvider: resolveStickyInstructions / build prompt
  CursorProvider->>Server: connection.prompt -> may fail
  Server->>Normalizer: normalizeAgentProviderError(provider, error)
  Normalizer-->>Server: normalized error
  Server->>Client: broadcast enriched agent.event
  SkillWatcher->>Server: debounced invalidation
  Server->>CursorProvider: onSkillRegistryDebouncedInvalidation()
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • Mzeey-Empire/mcode#430: Modifies the same AgentService class; related at the agent/error-normalization and service-integration level.

"I nudge the prompt, the heavy lines unwind,
A hint remains when fuller thoughts are mined;
Tools once deferred now bloom with tidy lore —
The rabbit hops, content, and asks for more! 🐇"

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat(cursor): Cursor ACP reliability, tuning, and prompt hygiene' directly aligns with the main objective of improving the Cursor CLI provider with tunable behavior, reliability fixes, and prompt improvements across all key changes in the PR.
Description check ✅ Passed The PR description follows the template with all required sections: What (improvement scope), Why (clear motivation), Key Changes (detailed bullet points), and Config Changes explicitly stated. It provides comprehensive coverage of settings, provider updates, performance improvements, and bug fixes.
Docstring Coverage ✅ Passed Docstring coverage is 91.67% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
apps/server/src/providers/cursor/cursor-agent-guidance.ts (1)

38-56: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Attach TSDoc directly to exported buildCursorAgentGuidanceMarkdown.

Line 56 exports a function, but its descriptive TSDoc is no longer directly attached after introducing constants/helpers in between.

✏️ Proposed fix
-/**
- * Builds layered agent instructions for Cursor: global user rules (`~/.cursor/AGENTS.md`),
- * then workspace {`@link` mergeCursorWorkspaceAgentMarkdown}.
- *
- * `@param` cwd - Session working directory (composer branch or worktree root).
- * `@returns` Combined Markdown or `undefined` when no files are readable.
- */
 const MAX_AGENT_GUIDANCE_CHARS = 48_000;
 const MAX_SKILL_COMMAND_ROWS = 200;
 const PER_SKILL_DESC_CHARS = 400;
 
 /** Truncates stitched AGENTS content so catastrophic repo rules files cannot saturate input. */
 function capAgentMarkdown(markdown: string): string {
@@
 }
 
+/**
+ * Builds layered agent instructions for Cursor: global user rules (`~/.cursor/AGENTS.md`),
+ * then workspace {`@link` mergeCursorWorkspaceAgentMarkdown}.
+ *
+ * `@param` cwd - Session working directory (composer branch or worktree root).
+ * `@returns` Combined Markdown or `undefined` when no files are readable.
+ */
 export function buildCursorAgentGuidanceMarkdown(cwd: string): string | undefined {

As per coding guidelines, **/*.{ts,tsx,js,jsx}: Always add JSDoc/TSDoc docstrings to all exported functions, components, types, and interfaces with at minimum a one-line summary of what the symbol does.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/server/src/providers/cursor/cursor-agent-guidance.ts` around lines 38 -
56, The exported function buildCursorAgentGuidanceMarkdown no longer has its
TSDoc directly attached (constants/helpers like MAX_AGENT_GUIDANCE_CHARS,
MAX_SKILL_COMMAND_ROWS, PER_SKILL_DESC_CHARS and capAgentMarkdown were inserted
above it); add a one-line TSDoc/TSDoc-style comment immediately above the export
of buildCursorAgentGuidanceMarkdown describing its purpose (e.g., "Builds
layered agent instructions for Cursor and returns combined Markdown or
undefined") so the exported symbol has a docstring per guidelines.
apps/server/src/providers/cursor/cursor-provider.ts (1)

205-205: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Don't evict sessions while a turn is still running.

lastUsedAt is only bumped when the turn is queued, but the idle eviction path only exempts pending permissions. Any prompt/tool run that lasts longer than idleSessionTtlMinutes can be torn down mid-turn even though the session is busy. Please skip eviction while entry.activeTurnState is non-null.

Suggested guard
   for (const [id, entry] of this.sessions) {
+    if (entry.activeTurnState) continue;
     if (now - entry.lastUsedAt <= ttlMs) continue;
     if (this.sessionHasPendingPermissions(id)) continue;
     void this.teardownSessionEntry(id, entry, true);
     this.sessions.delete(id);
   }

Also applies to: 810-818

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/server/src/providers/cursor/cursor-provider.ts` at line 205, The
eviction logic currently only exempts pending permissions but can still evict
sessions that are actively running a turn because lastUsedAt is only bumped when
queued; update the idle-eviction checks in the cursor provider to also skip
eviction when entry.activeTurnState is non-null (i.e., treat entries with a
non-null activeTurnState as active/busy), and ensure any places where
entry.lastUsedAt is set (e.g., where entry.lastUsedAt = Date.now()) remain
unchanged—just add the guard into the idle eviction path that checks and
returns/continues if entry.activeTurnState !== null so active turns are never
torn down mid-run (apply same change to the other eviction block referenced
around the 810-818 region).
🧹 Nitpick comments (1)
apps/server/src/providers/cursor/cursor-provider.ts (1)

375-383: ⚡ Quick win

Scope the stderr tail to a single turn.

stderrTailLines is session-wide and never reset, so a failure on a long-lived session can log unrelated stderr from earlier turns. That makes the new failure diagnostics misleading. Clear the tail before each turn; if verboseFailureLogs is meant to be the switch for raw diagnostics, gate the per-line debug logging behind it too.

Possible cleanup
     child.stderr?.on("data", (chunk: Buffer) => {
+      const verboseFailureLogs =
+        this.settingsService.get().provider.cursor.verboseFailureLogs;
       for (const line of chunk.toString().split("\n")) {
         const trimmed = line.trim();
         if (trimmed) {
-          logger.debug("cursor-agent acp stderr", { threadId, line: trimmed });
+          if (verboseFailureLogs) {
+            logger.debug("cursor-agent acp stderr", { threadId, line: trimmed });
+          }
           const tail = entry.stderrTailLines;
           tail.push(trimmed.slice(0, 2000));
           while (tail.length > CURSOR_STDERR_TAIL_MAX) tail.shift();
         }
       }
@@
     const { message, model, resume, attachments } = opts;
     const cursorCfg = this.settingsService.get().provider.cursor;
+    entry.stderrTailLines.length = 0;
     entry.activeTurnState = createCursorAcpTurnState();

Also applies to: 659-660, 754-757

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/server/src/providers/cursor/cursor-provider.ts` around lines 375 - 383,
The stderr tail is session-scoped (entry.stderrTailLines) and never cleared,
causing old stderr to bleed into later turns; update the child.stderr "data"
handler (and the analogous handlers around lines noted) to: on turn start clear
entry.stderrTailLines, only push per-line trimmed slices up to
CURSOR_STDERR_TAIL_MAX, and wrap the per-line logger.debug call with the
verboseFailureLogs guard so raw stderr is only logged when verboseFailureLogs is
true. Ensure the reset happens at the beginning of each new turn before any
stderr lines are appended and apply the same change to the other occurrences
(the handlers referenced at the other locations).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/server/src/providers/cursor/cursor-provider.ts`:
- Around line 660-728: The current code assigns entry.activeTurnState once
(createCursorAcpTurnState()) and then reuses it across prompt retry attempts,
causing partial sessionUpdate output from a failed attempt to be mixed into the
retry; fix by creating an isolated fresh turn state for each prompt attempt and
ensuring sessionUpdate handling uses that fresh state so partial output from a
failed attempt is not appended to the retried attempt. Concretely, move the
createCursorAcpTurnState() call (or call it again) inside the prompt retry loop
(before calling entry.connection.prompt) so entry.activeTurnState is
reinitialized per attempt, and ensure any logic that consumes sessionUpdate
events references entry.activeTurnState so the failed attempt's events are
discarded rather than merged into the retry.

---

Outside diff comments:
In `@apps/server/src/providers/cursor/cursor-agent-guidance.ts`:
- Around line 38-56: The exported function buildCursorAgentGuidanceMarkdown no
longer has its TSDoc directly attached (constants/helpers like
MAX_AGENT_GUIDANCE_CHARS, MAX_SKILL_COMMAND_ROWS, PER_SKILL_DESC_CHARS and
capAgentMarkdown were inserted above it); add a one-line TSDoc/TSDoc-style
comment immediately above the export of buildCursorAgentGuidanceMarkdown
describing its purpose (e.g., "Builds layered agent instructions for Cursor and
returns combined Markdown or undefined") so the exported symbol has a docstring
per guidelines.

In `@apps/server/src/providers/cursor/cursor-provider.ts`:
- Line 205: The eviction logic currently only exempts pending permissions but
can still evict sessions that are actively running a turn because lastUsedAt is
only bumped when queued; update the idle-eviction checks in the cursor provider
to also skip eviction when entry.activeTurnState is non-null (i.e., treat
entries with a non-null activeTurnState as active/busy), and ensure any places
where entry.lastUsedAt is set (e.g., where entry.lastUsedAt = Date.now()) remain
unchanged—just add the guard into the idle eviction path that checks and
returns/continues if entry.activeTurnState !== null so active turns are never
torn down mid-run (apply same change to the other eviction block referenced
around the 810-818 region).

---

Nitpick comments:
In `@apps/server/src/providers/cursor/cursor-provider.ts`:
- Around line 375-383: The stderr tail is session-scoped (entry.stderrTailLines)
and never cleared, causing old stderr to bleed into later turns; update the
child.stderr "data" handler (and the analogous handlers around lines noted) to:
on turn start clear entry.stderrTailLines, only push per-line trimmed slices up
to CURSOR_STDERR_TAIL_MAX, and wrap the per-line logger.debug call with the
verboseFailureLogs guard so raw stderr is only logged when verboseFailureLogs is
true. Ensure the reset happens at the beginning of each new turn before any
stderr lines are appended and apply the same change to the other occurrences
(the handlers referenced at the other locations).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 994edcec-fb60-4751-bc07-ee6285f913dd

📥 Commits

Reviewing files that changed from the base of the PR and between 7e7a1b3 and 96112e7.

📒 Files selected for processing (19)
  • apps/server/src/index.ts
  • apps/server/src/providers/cursor/__tests__/cursor-acp-ask-question.test.ts
  • apps/server/src/providers/cursor/__tests__/cursor-acp-event-mapper.test.ts
  • apps/server/src/providers/cursor/__tests__/cursor-acp-sticky-instructions.test.ts
  • apps/server/src/providers/cursor/__tests__/cursor-acp-transient-retry.test.ts
  • apps/server/src/providers/cursor/__tests__/cursor-agent-guidance.test.ts
  • apps/server/src/providers/cursor/cursor-acp-ask-question.ts
  • apps/server/src/providers/cursor/cursor-acp-event-mapper.ts
  • apps/server/src/providers/cursor/cursor-acp-sticky-instructions.ts
  • apps/server/src/providers/cursor/cursor-acp-transient-retry.ts
  • apps/server/src/providers/cursor/cursor-agent-guidance.ts
  • apps/server/src/providers/cursor/cursor-provider.ts
  • apps/server/src/services/__tests__/provider-agent-error-normalize.test.ts
  • apps/server/src/services/agent-service.ts
  • apps/server/src/services/provider-agent-error-normalize.ts
  • apps/server/src/services/skill-watcher-service.ts
  • docs/settings/reference.md
  • packages/contracts/src/models/__tests__/settings.test.ts
  • packages/contracts/src/models/settings.ts

Comment thread apps/server/src/providers/cursor/cursor-provider.ts Outdated
…err)

Co-authored-by: Cursor <cursoragent@cursor.com>
@chuks-qua

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented May 9, 2026

Copy link
Copy Markdown
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@chuks-qua

Copy link
Copy Markdown
Contributor Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented May 9, 2026

Copy link
Copy Markdown
✅ Actions performed

Full review triggered.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/server/src/services/skill-watcher-service.ts`:
- Around line 226-237: The current try block groups this.skills.invalidate(),
broadcast("skills.changed", {}), and this.debouncedListener?.() so if
broadcast("skills.changed", {}) throws the debounced listener never runs; change
the control flow in SkillWatcherService so invalidate() is called first, then
run this.debouncedListener?.() in its own try/catch, and only then call
broadcast("skills.changed", {}) (or catch broadcast errors separately) so a
broadcast failure cannot prevent the debounced listener from executing; ensure
each operation logs its own errors (e.g., listenerErr and broadcast error) and
does not short-circuit the others.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 724289b6-2aa5-42c6-bd79-5b7bf0fe6f70

📥 Commits

Reviewing files that changed from the base of the PR and between 7e7a1b3 and 7df1c9b.

📒 Files selected for processing (19)
  • apps/server/src/index.ts
  • apps/server/src/providers/cursor/__tests__/cursor-acp-ask-question.test.ts
  • apps/server/src/providers/cursor/__tests__/cursor-acp-event-mapper.test.ts
  • apps/server/src/providers/cursor/__tests__/cursor-acp-sticky-instructions.test.ts
  • apps/server/src/providers/cursor/__tests__/cursor-acp-transient-retry.test.ts
  • apps/server/src/providers/cursor/__tests__/cursor-agent-guidance.test.ts
  • apps/server/src/providers/cursor/cursor-acp-ask-question.ts
  • apps/server/src/providers/cursor/cursor-acp-event-mapper.ts
  • apps/server/src/providers/cursor/cursor-acp-sticky-instructions.ts
  • apps/server/src/providers/cursor/cursor-acp-transient-retry.ts
  • apps/server/src/providers/cursor/cursor-agent-guidance.ts
  • apps/server/src/providers/cursor/cursor-provider.ts
  • apps/server/src/services/__tests__/provider-agent-error-normalize.test.ts
  • apps/server/src/services/agent-service.ts
  • apps/server/src/services/provider-agent-error-normalize.ts
  • apps/server/src/services/skill-watcher-service.ts
  • docs/settings/reference.md
  • packages/contracts/src/models/__tests__/settings.test.ts
  • packages/contracts/src/models/settings.ts

Comment thread apps/server/src/services/skill-watcher-service.ts
…ails

Co-authored-by: Cursor <cursoragent@cursor.com>
@chuks-qua

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented May 9, 2026

Copy link
Copy Markdown
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@chuks-qua
chuks-qua merged commit f832b68 into main May 9, 2026
7 checks passed
@chuks-qua
chuks-qua deleted the feat/improve-cursor-tool-calls branch May 9, 2026 01:43
@mze-bot mze-bot Bot mentioned this pull request May 9, 2026
1 task
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant