Skip to content

Fix no-MCP Workbench isolate hang; agents use discover then confirm - #14

Merged
ds-code-t merged 2 commits into
2.1.10from
cursor/workbench-isolate-nontty-eb12
Aug 27, 2026
Merged

Fix no-MCP Workbench isolate hang; agents use discover then confirm#14
ds-code-t merged 2 commits into
2.1.10from
cursor/workbench-isolate-nontty-eb12

Conversation

@ds-code-t

@ds-code-t ds-code-t commented Aug 27, 2026

Copy link
Copy Markdown
Owner

Summary

Ship blocker on 2.1.10: CLI isolate is not agent-completable. Maven exec from Copilot has non-TTY stdin, so System.in.read() either hangs until killed or starts a paused worker and immediately stops it. AGENT-GUIDE still told agents to isolate then workbench_execute_step even with no workbench_* tools.

This change makes the no-MCP path discover then confirm. Live isolate stays only for an already-running Workbench (pre-attached workbench_* or interactive TTY).

Functionality-change coverage

  • I reviewed AGENTS.md and the relevant feature-map entry.
  • Framework implementation is complete.
  • Focused framework tests were added or updated.
  • Maven consumer scenarios and supporting resources were added or updated when applicable.
  • README or canonical documentation was updated when behavior changed.
  • docs/agent/feature-map.md remains accurate.
  • docs/agent/repository-index.md is current.
  • Backward compatibility was preserved, or the breaking change is documented.

Behavior

  • CLI isolate: if stdin is not an interactive TTY and pickleball.workbench.isolate.once is unset, do not start a worker or block on System.in.read(). Print that live isolate needs an already-running Workbench, NEXT: confirm --tags/--name, exit 2.
  • Interactive TTY isolate still holds the worker. pickleball.workbench.isolate.once is unchanged.
  • Consumer AGENTS.md / .github/copilot-instructions.md stay identical (3 nonblank lines): export-guidance via Workbench launcher; hint / discover / confirm; isolate only if workbench_* already in session; no GUI; do not register IDE MCP.
  • AGENT-GUIDE tool chooser shows the same Maven exec wrapper as the pointer (-Dexec.mainClass=tools.dscode.launcher.PickleballWorkbenchLauncher, change -Dexec.args). It does not tell agents to Maven-exec isolate when workbench_* is absent.
  • docs/pickleball-workbench.md no longer calls mcp <project> the consumer-agent path. Gradle pickleballWorkbench example defaults to hint, not mcp.
  • @agent-pointer-eval stays maintainer-only at the bottom. Canned eval failures were not changed.
  • ParallelCountEstimator.recommendedDiscoverRunVars uses AgentBrowserLadder so a remote project browser is not overwritten with CHROME_HEADLESS.

Pointer text (maven-consumer-project/AGENTS.md and .github/copilot-instructions.md, identical)

Before any Pickleball work, run `mvn -q org.codehaus.mojo:exec-maven-plugin:3.5.0:java "-Dexec.mainClass=tools.dscode.launcher.PickleballWorkbenchLauncher" "-Dexec.classpathScope=test" "-Dexec.args=export-guidance .pickleball"` and, after a successful export, follow `.pickleball/AGENT-GUIDE.md`.

Use Workbench `hint`, `discover`, and `confirm` (narrow `--tags` / `--name`). Same launcher; only change `-Dexec.args`. Do not start the GUI. Do not register IDE MCP.

Live isolate only if `workbench_*` tools are already in this session. Do not Maven-exec `isolate` as a one-shot.

Validation

  • python3 scripts/verify_agent_contract.py
  • python3 scripts/refresh_agent_index.py --check
  • ./gradlew test
  • ./gradlew publishToMavenLocal
  • focused consumer: ./maven-consumer-project/mvnw -f maven-consumer-project/pom.xml -U test -Dpkb_runvars.pkb_browser=CHROME_HEADLESS -Dpkb_runvars.pkb_tags="@diagnostic-reporting or @diagnostic-single" (2 scenarios, 0 failures). Not @all.

No version bump. PR targets 2.1.10 only, not master.

Open in Web Open in Cursor 

cursoragent and others added 2 commits August 27, 2026 17:07
CLI isolate no longer blocks on System.in when stdin is not a TTY, so Maven one-shot isolate cannot hang or start-then-stop a worker. Pointers and AGENT-GUIDE now show the Maven exec wrapper and reserve live isolate for an already-running Workbench.

Co-authored-by: ds-code-t <ds-code-t@users.noreply.github.com>
Gradle test JVMs can have a console even when Maven exec stdin is a pipe. Isolate now takes an explicit interactive-stdin flag, treats console-null or non-tty fd 0 as non-interactive, and the unit test drives that path directly.

Co-authored-by: ds-code-t <ds-code-t@users.noreply.github.com>
@ds-code-t
ds-code-t marked this pull request as ready for review August 27, 2026 17:14
@ds-code-t
ds-code-t merged commit 858be2a into 2.1.10 Aug 27, 2026
1 check passed
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.

2 participants