Repository navigation
merge upstream - #261
Merged
Merged
merge upstream#261
Conversation
Proactive sessions were completing successfully but their results were silently dropped at the Matrix routing layer (broadcast() skipped any thread_id == "default"). Users never saw proactive check-ins. The fix threads an is_proactive flag from sub_session._report() through the LLM queue item to the broadcast closure, which then delivers to all rooms that have opted in via the new /proactive slash command. Changes: - thread_config: add proactive_enabled per-thread field (default: False) and get_proactive_thread_ids() helper - slash_commands: add /proactive [on|off] command to opt rooms in/out - sub_session: tag results from [PROACTIVE] objectives with is_proactive - llm_thread: add is_proactive to _QueueItem, forward through enqueue_system_event() and broadcast call - main: broadcast() delivers to all opted-in rooms when is_proactive=True - docs + config.yaml.example: document feature as experimental Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- slash_commands: use exact token match instead of startswith to avoid false matches like /proactiveXYZ - sub_session: add explicit is_proactive flag to TaskNode/SubSessionState instead of parsing objective string prefix (brittle coupling removed) - scheduler: pass is_proactive=True when spawning proactive sessions - main: fan-out sends now run concurrently via asyncio.gather; web SSE broadcast moved outside the loop so it fires once regardless of how many rooms are opted in - docs: clarify that proactive_target_thread_id != "default" bypasses room opt-in fan-out entirely (previous wording was misleading) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Bumps [requests](https://github.com/psf/requests) from 2.32.5 to 2.33.0. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](psf/requests@v2.32.5...v2.33.0) --- updated-dependencies: - dependency-name: requests dependency-version: 2.33.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
--- updated-dependencies: - dependency-name: aiohttp dependency-version: 3.13.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [json-repair](https://github.com/mangiucugna/json_repair) from 0.58.6 to 0.58.7. - [Release notes](https://github.com/mangiucugna/json_repair/releases) - [Commits](mangiucugna/json_repair@v0.58.6...v0.58.7) --- updated-dependencies: - dependency-name: json-repair dependency-version: 0.58.7 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.15.7 to 0.15.8. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](astral-sh/ruff@0.15.7...0.15.8) --- updated-dependencies: - dependency-name: ruff dependency-version: 0.15.8 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [openai](https://github.com/openai/openai-python) from 2.29.0 to 2.30.0. - [Release notes](https://github.com/openai/openai-python/releases) - [Changelog](https://github.com/openai/openai-python/blob/main/CHANGELOG.md) - [Commits](openai/openai-python@v2.29.0...v2.30.0) --- updated-dependencies: - dependency-name: openai dependency-version: 2.30.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [anthropic](https://github.com/anthropics/anthropic-sdk-python) from 0.86.0 to 0.87.0. - [Release notes](https://github.com/anthropics/anthropic-sdk-python/releases) - [Changelog](https://github.com/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md) - [Commits](anthropics/anthropic-sdk-python@v0.86.0...v0.87.0) --- updated-dependencies: - dependency-name: anthropic dependency-version: 0.87.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [googleapis/release-please-action](https://github.com/googleapis/release-please-action) from 4 to 5. - [Release notes](https://github.com/googleapis/release-please-action/releases) - [Changelog](https://github.com/googleapis/release-please-action/blob/main/CHANGELOG.md) - [Commits](googleapis/release-please-action@v4...v5) --- updated-dependencies: - dependency-name: googleapis/release-please-action dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.6.3 to 2.7.0. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](urllib3/urllib3@2.6.3...2.7.0) --- updated-dependencies: - dependency-name: urllib3 dependency-version: 2.7.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [idna](https://github.com/kjd/idna) from 3.11 to 3.15. - [Release notes](https://github.com/kjd/idna/releases) - [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.md) - [Commits](kjd/idna@v3.11...v3.15) --- updated-dependencies: - dependency-name: idna dependency-version: '3.15' dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
…b_ threads in proactive fan-out, clarify config comment - Remove duplicate wi.broadcast() call in proactive block; the initial broadcast at line 589 already covers the "default" web delivery - Add web_ branch in _send_to_room so opted-in web threads actually receive proactive messages (were silently skipped before) - Replace misleading "Deprecated" label on proactive_target_thread_id with accurate wording — option is still active for forced delivery Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…sionState paths, improve exception logging - Pass is_proactive into all SubSessionState(...) constructions in spawn() and _resolve_dependents() so proactive routing is consistent even when a session is skipped or queued before _start_node() runs - Include exc and exc_info=True in proactive fanout warning for actionable delivery failure diagnostics Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
_check_nested_aggregation() was calling _enqueue(text, root_tid) without is_proactive, so aggregated results from proactive sessions that spawn nested workers would arrive at thread_id="default" without the flag and be dropped by Matrix routing. Derive is_proactive from the parent sub-session's state, consistent with how the direct reporting path resolves it. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feat: deliver proactive sub-session results to opted-in rooms
deps(python): bump idna from 3.11 to 3.15
deps(python): bump urllib3 from 2.6.3 to 2.7.0
…/googleapis/release-please-action-5 deps(actions): bump googleapis/release-please-action from 4 to 5
….87.0 deps(python): bump anthropic from 0.86.0 to 0.87.0
deps(python): bump openai from 2.29.0 to 2.30.0
deps(python): bump ruff from 0.15.7 to 0.15.8
…-0.58.7 deps(python): bump json-repair from 0.58.6 to 0.58.7
deps(python): bump aiohttp from 3.13.3 to 3.13.4
…33.0 deps(python): bump requests from 2.32.5 to 2.33.0
overcuriousity
merged commit May 21, 2026
7483bcf
into
feat/remove-priority-add-web-crud
5 checks passed
Contributor
There was a problem hiding this comment.
Pull request overview
This PR brings in upstream changes that add an experimental “proactive check-in” delivery path: proactive sub-session results can be fanned out to multiple opted-in rooms via a new /proactive slash command, while also updating several dependencies and release automation.
Changes:
- Add
is_proactiveplumbing from scheduler → sub-sessions → LLMThread → broadcast, enabling proactive-specific routing. - Add
/proactive [on|off]slash command and a new per-thread config flagproactive_enabledto opt rooms in/out of proactive deliveries. - Update documentation/config examples for proactive delivery, plus bump
uv.lockdependencies and upgraderelease-pleaseGitHub Action to v5.
Reviewed changes
Copilot reviewed 9 out of 10 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| wintermute/workers/scheduler_thread.py | Marks proactive prediction sub-sessions with is_proactive=True. |
| wintermute/main.py | Extends broadcast function to fan-out proactive messages to opted-in thread IDs. |
| wintermute/interfaces/slash_commands.py | Adds /proactive command for toggling per-room proactive delivery. |
| wintermute/infra/thread_config.py | Adds proactive_enabled to thread config and a helper to list opted-in threads. |
| wintermute/core/sub_session.py | Propagates is_proactive through sub-session state and reporting back to parent thread. |
| wintermute/core/llm_thread.py | Carries is_proactive on queue items and passes it to broadcast for system-event replies. |
| uv.lock | Updates several dependency versions and bumps project version to 0.14.0a0. |
| docs/configuration.md | Documents proactive delivery behavior and interaction with proactive_target_thread_id. |
| config.yaml.example | Documents recommended proactive config and /proactive opt-in usage. |
| .github/workflows/release-please.yml | Upgrades googleapis/release-please-action from v4 to v5. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+594
to
+605
| if is_proactive and thread_id == "default": | ||
| opted_in = thread_config_mgr.get_proactive_thread_ids() | ||
| if opted_in: | ||
| async def _send_to_room(tid: str) -> None: | ||
| try: | ||
| if si and tid.startswith("sig_"): | ||
| await si.send_message(text, tid) | ||
| elif wi and tid.startswith("web_"): | ||
| await wi.broadcast(text, tid, reasoning=reasoning) | ||
| elif mx and not tid.startswith("web_") and not tid.startswith("sig_"): | ||
| await mx.send_message(text, tid) | ||
| except Exception as exc: # noqa: BLE001 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.