Skip to content

Route native asset jobs through editor chat without blocking other jobs - #246

Merged
frozaken merged 2 commits into
mainfrom
claude/editor-chat-no-job-wait
Nov 4, 2026
Merged

frozaken merged 2 commits into
mainfrom
claude/editor-chat-no-job-wait

Conversation

@frozaken

@frozaken frozaken commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

What changed

Summer's editor delivers native asset-generation results as messages in its chat. The toolkit previously encouraged the agent to start duplicate generation or poll those jobs through MCP or the CLI. With SUMMER_EDITOR_CHAT=1, this change redirects supported generation to the native summer_cloud tools while preserving completion tracking for other work.

  • Redirect only the operations with known native equivalents: 3D, image, audio and motion generation, image editing, rigging, retexturing and background removal. Makers, video, sprite sheets, SFX-choice operations and future operations remain available rather than being blocked just because they spend credits.
  • Refuse jobs.get and jobs.wait only for native aj_ asset job IDs, including gen:aj_ wrappers. The ID format matches the editor's equinox_user_events.cpp asset-job contract. Ordinary gen: IDs, legacy IDs, builds, uploads, approvals and other job families retain their tracking paths.
  • Keep job tools searchable and listed. Apply the same input-aware policy to generic calls, direct v3/v4 tools and summer tool, before invoking their handlers.
  • Preserve CLI --wait for supported operations, including builds, approvals and makers. Stop following a chain only when it hands off to a native asset delivery. Print wait instructions only where the command remains usable.
  • Update server instructions, development documentation and the changelog. No behavior changes unless the environment flag is exactly 1.

Rebased onto current main, retaining the startup guidance from #251 and the 4.9.1 changelog entries.

How I tested it

  • npm test — 3,390 passed, 10 skipped; library validation passed.
  • 75 focused policy, CLI, MCP and instruction tests, including build/approval completion, makers and video with --wait, job discovery, aliases, argument precedence, native-asset handoff, and unchanged behavior outside editor chat. The narrowed-policy regression tests failed against the original implementation before the fix.
  • npm run build
  • npm run generate:registry -- --check — no drift.
  • npm run eval:routing -- --check — no regression.
  • npm run eval:outcomes -- --dry-run
  • Nine direct checks against the built CLI in an isolated, signed-out Summer store: native polling/generation returns unsupported; builds, approvals, makers and ordinary generation jobs reach the normal not_signed_in path instead of being rejected by the editor-chat gate. No hosted work was submitted.
  • git diff --check

Successful hosted completion is exercised with test doubles, not live paid generation. A graphical editor session was not run. The explicit native-operation list and aj_ ID convention must stay aligned with the engine as its native capabilities evolve.

Rollout

Engine PRs SummerEngine/SummerEngine#1023 and #1024 are already merged. The editor sets the flag in the agent's shell; its newer chat no longer mounts Summer MCP, so the CLI path is the primary integration. The MCP handling remains for older integrations that set the flag. This requires a toolkit release and that version being used by the editor's CLI; merging alone does not release it. Outside clients that do not set the flag are unaffected.

Checklist

  • A line under ## [Unreleased] in CHANGELOG.md
  • No secrets, internal prices or private endpoints

@frozaken

Copy link
Copy Markdown
Contributor Author

Engine side update: SummerEngine/SummerEngine#1023 sets SUMMER_EDITOR_CHAT=1 in the desktop agent's runtime, its shell, and (while it still exists) the Summer MCP env. The stacked draft SummerEngine/SummerEngine#1024 removes the Summer MCP from the desktop chat entirely, so once that lands the pin bump of SUMMER_MCP_VERSION is moot and only this PR's CLI gating (the summer command in the agent's shell) matters to the editor. Outside MCP clients are unaffected either way.

frozaken and others added 2 commits November 4, 2026 04:40
The editor's chat generates assets with its own summer_cloud tools, which
return at once and post the finished job as a message in the conversation.
This package still told that agent "Long work answers with a job:
jobs.wait", let summer_call and the direct tools wait on, check and start
generation jobs, and the CLI followed jobs with --wait, so the agent waited
on jobs the chat already tracks.

With SUMMER_EDITOR_CHAT=1 (core/editor-chat.ts):
- every MCP instruction string carries the editor chat sentence in place of
  the job sentence;
- tools/call answers jobs.wait, jobs.get and the generation operations
  (summer_call by op or name, the hosted and 3.x direct tools) at once with
  an `unsupported` refusal and no hosted call, and tools/list leaves those
  direct tools out;
- summer_search / ops.search and summer ops search leave them out;
- summer <area> <action> for those operations, any --wait, and summer tool
  for those tools exit 1 at once without calling Summer's server.

Without the variable nothing changes.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@frozaken
frozaken force-pushed the claude/editor-chat-no-job-wait branch from 2df9fce to 92f89f4 Compare November 4, 2026 03:46
@frozaken frozaken changed the title Never wait on a job in the Summer editor chat (SUMMER_EDITOR_CHAT=1) Route native asset jobs through editor chat without blocking other jobs Nov 4, 2026
@frozaken
frozaken merged commit 705da93 into main Nov 4, 2026
8 checks 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.

1 participant