Skip to content

feat(council): surf council skill with zombie window recovery#95

Open
rlaksana wants to merge 4 commits intonicobailon:mainfrom
rlaksana:feat/council-unified
Open

feat(council): surf council skill with zombie window recovery#95
rlaksana wants to merge 4 commits intonicobailon:mainfrom
rlaksana:feat/council-unified

Conversation

@rlaksana
Copy link
Copy Markdown

@rlaksana rlaksana commented Apr 7, 2026

Summary

Add surf council skill that orchestrates multiple AI providers (ChatGPT, Gemini, AI Mode) with:

  • Parallel execution with per-provider configurable timeouts (5min/3min/2min instead of old 45-min defaults)
  • Zombie window detection and force-close recovery
  • Graceful degradation: continues with successful providers when others fail
  • Synthesized response from priority order (chatgpt > gemini > aimode)
  • Actionable error messages with recovery hints

Changes

New Files

  • skills/surf-council/SKILL.md - Skill documentation
  • skills/surf-council/council.cjs - Core orchestration
  • skills/surf-council/providers/*.cjs - Provider wrappers with timeout/zombie recovery
  • skills/surf-council/recovery/*.cjs - Socket health check and zombie detection

Modified Files

  • native/chatgpt-client.cjs - Fix silent cleanup error swallowing
  • native/aimode-client.cjs - Fix silent cleanup error swallowing
  • native/host.cjs - Add SURF_ERRORS with actionable hints
  • native/cli.cjs - Improve socket error messages
  • native/do-executor.cjs - Improve socket error messages
  • native/config.cjs - Add COUNCIL_CONFIG

Test Plan

  • Run surf-council "test query" to verify council skill works
  • Verify zombie window recovery by simulating a stuck Chrome window
  • Verify graceful degradation by killing one provider mid-flight
  • Verify error messages show actionable hints on timeout

🤖 Generated with Claude Code

rlaksana and others added 4 commits March 11, 2026 14:08
- Add AIMODE support to service worker (AIMODE_EVALUATE, AIMODE_CDP_COMMAND, AIMODE_NEW_TAB, AIMODE_CLOSE_TAB)
- Add aimode-client.cjs and claude-client.cjs
- Update CLAUDE.md with missing npm scripts and troubleshooting section
- Update .gitignore to exclude Claude/FPF/experimental configs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add AIMODE handlers to COMMANDS_WITHOUT_TAB
- Change all AI clients (ChatGPT, Claude, Gemini, Perplexity, Grok, AI Studio, AIMode) to open in new window instead of new tab
- Use focused: false to prevent focus stealing
- Also fix AIMODE_NEW_TAB message type in host.cjs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Allows --pro to be placed before or after the query argument
without causing "query required" error.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit adds the complete council skill for orchestrating multiple AI providers:

- Council skill (skills/surf-council/):
  - council.cjs: Core orchestration with parallel provider execution
  - SKILL.md: Documentation with usage examples
  - providers/: chatgpt, gemini, aimode wrappers with timeout/zombie recovery
  - recovery/: socket health check and zombie window detection

- Error handling improvements:
  - Fix silent cleanup in chatgpt-client.cjs and aimode-client.cjs
  - Add SURF_ERRORS with actionable hints in host.cjs
  - Improve socket error messages in cli.cjs and do-executor.cjs

- Configuration:
  - Add COUNCIL_CONFIG with default providers, timeouts, zombie recovery settings

Features:
- Parallel multi-provider execution (chatgpt, gemini, aimode)
- Per-provider configurable timeouts (5min/3min/2min vs old 45min defaults)
- Zombie window detection and force-close recovery
- Graceful degradation: continues with successful providers when others fail
- Synthesized response from priority order (chatgpt > gemini > aimode)
- Actionable error messages with recovery hints

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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