Spaces:
Sleeping
Sleeping
Commit History
-
perf(orchestrator): prefetch human-phase opinions and tighten context budget
NeonClary +1: CursorFire all LLM initial-opinion calls in parallel while waiting on the human participant, compress embedded transcript blocks when over budget, surface phase banners and inline system notes in the chat timeline, and propagate Neon vLLM error metadata for resilience. Co-authored-by: Cursor <cursoragent@cursor.com>9a51d6a
-
perf(orchestrator): parallel phases, streaming, early table summaries
NeonClary +1: Cursor- Parallel participant turns in Phases 1/2/4 via orchestrator_speed.run_roster_ai_turns_parallel - SSE token streaming on consensus + targeted follow-up turns (message_stream_start / message_delta) - Parallel ballot collection in majority / ranked-choice / Robert's Rules votes - Heuristic-first addressed_to classifier skips most LLM calls - Compact rolling transcript for orchestrator judge prompts (cached per session) - Fast orchestrator model (gemini-2.0-flash) for lightweight classifier calls - Lazy contribution summaries kicked off after Phase 4 so Table View loads instantly - Conditional Phase-3 credential refresh only when follow-ups are needed - max_tokens 4x multiplier limited to thinking models Co-authored-by: Cursor <cursoragent@cursor.com>83add3c -
feat(resilience): multi-tier participant failure recovery + Response-priority toggle
NeonClary +1: CursorWhen a participant's LLM call fails, the orchestrator now has a real recovery cascade instead of silently dropping the turn and relying solely on auto-disable-after-N-failures. The behaviour is gated on the new "Response priority" setting in the Settings menu, which mirrors the LLMChats3 toggle that used to live there: under "Prioritize model choice" (default) we preserve the user's chosen model and just note failures in chat as today, relying on the existing 2-attempt HTTP retry in openai_compat for the "always a second try" guarantee. Under "Prioritize conversation speed" we additionally race the chosen model against a fast fallback (existing logic in clients/llm_router.py) and then layer the new cascade on top. Backend - clients/openai_compat.py: classify failures as transient (5xx, 429, 408, 425, timeouts, connection errors) vs permanent (4xx auth/invalid/content-filter/404) and propagate via new error_kind / error_status fields on the result dict. - clients/llm_…cdef1a0
-
Tighten CCAI conversation flow and visual threading
NeonClary +1: CursorThe CCAI demo's first end-to-end runs surfaced several UX and prompt issues. This commit addresses them across the orchestrator, prompt templates, transport, and chat UI. Conversation flow: - Each per-speaker prompt (CRITIQUE, FINALIZATION, CONSENSUS_ALLIED, CONSENSUS_SOLO) now opens with an "Open threads directed at you since your last turn" block populated by `_pending_addressed_for`. The templates instruct participants to address those threads FIRST, then their phase-specific contribution. Dropped CONSENSUS_TARGETED_RESPONSE in favor of this unified path. - Status-assessment follow-ups use a hybrid prompt: orchestrator prefers surfacing unanswered participant-to-participant questions verbatim (attributed to the asker) and only synthesizes its own when none exist. New `asker_participant_id` field in the JSON output. - Consensus phase caps consecutive addressed-to (dyadic) routings at 2 before forcing a round-robin pick, so two participants can't monopolize the fl…a763505 -
Build CCAI Vibe Demo on top of LLMChats3 baseline
NeonClary +1: CursorMulti-participant Collaborative Conversational AI demo: the orchestrator runs a six-phase state machine (Initial Opinions, Critique x2, Status Assessment, Finalization, Consensus, Closure), produces a JSON Credential Summary keyed on credibility-for-question, and routes addressed-to messages through alliance detection. Two failsafes - 60+20 participant messages and 100+50 orchestrator calls - pause the loop until the user clicks Continue. Every LLM response is funneled through a centralized strip_thinking sanitizer before being stored, displayed, or fed back to the summarizer. Backend - New: services/{models,prompts/*,credential,consensus,context_budget, json_calls,extra_personas,orchestrator}.py, utils/sanitize.py, api/personas.py, data/demo_questions.json (10 long-context prompts). - Rewrote api/chat.py with /chat/start (N participants, summarizer + max-participants overrides), /chat/{id}/continue, table-view + csv-table exports. - Rate limit bumped to 30/day per IP; HF org …0bb4dfa -
Import LLMChats3 master as CCAI baseline
NeonClary +1: CursorCo-authored-by: Cursor <cursoragent@cursor.com>c44fab6