Skip to content

merge upstream - #261

Merged
overcuriousity merged 25 commits into
feat/remove-priority-add-web-crudfrom
main
May 21, 2026
Merged

overcuriousity merged 25 commits into
feat/remove-priority-add-web-crudfrom
main

Conversation

@overcuriousity

Copy link
Copy Markdown
Owner

No description provided.

overcuriousity and others added 25 commits March 25, 2026 09:06
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
Copilot AI review requested due to automatic review settings May 21, 2026 10:31
@overcuriousity
overcuriousity merged commit 7483bcf into feat/remove-priority-add-web-crud May 21, 2026
5 checks passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_proactive plumbing from scheduler → sub-sessions → LLMThread → broadcast, enabling proactive-specific routing.
  • Add /proactive [on|off] slash command and a new per-thread config flag proactive_enabled to opt rooms in/out of proactive deliveries.
  • Update documentation/config examples for proactive delivery, plus bump uv.lock dependencies and upgrade release-please GitHub 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 thread wintermute/main.py
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
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