Repository navigation
feat(integrations): discover hosted Copilot model catalogs - #850
Closed
bandzalkin wants to merge 70 commits into
Closed
bandzalkin wants to merge 70 commits into
bandzalkin wants to merge 70 commits into
Conversation
Give the repeated tool-completion and privacy checks one helper, and name the ACP call record so activity identity is not a bare tuple. Co-authored-by: Cursor <cursoragent@cursor.com>
7 tasks done
github-actions Bot
pushed a commit
to bandzalkin/band-sdk-python
that referenced
this pull request
Oct 19, 2026
Source-Base: ec23a22 Source-Head: 0f04da7 Upstream-PR: band-ai#850
bandzalkin
force-pushed
the
feat/host-list-models-copilot-refresh
branch
from
October 20, 2026 06:36
0f04da7 to
077f616
Compare
bandzalkin
requested review from
AlexanderZ-Band and
amit-gazal-band
as code owners
October 20, 2026 06:36
github-actions Bot
pushed a commit
to bandzalkin/band-sdk-python
that referenced
this pull request
Oct 20, 2026
Source-Base: 07e093a Source-Head: 077f616 Upstream-PR: band-ai#850
…t-activity-detail-to-the-platform-INT-1744 Keep main's BackendTurns ownership of OpenCode cancellation and register the watcher as a turn worker so activity reporting outlives the handler. Reporter unit tests move to tests/runtime/workingreporter; main's workingstate package keeps the execution-level tests. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AgnNR4uiqD787Bg3yKdZpL
…detail-to-the-platform-INT-1744' into feat/python-sdk-report-activity-detail-to-the-platform-delivery-INT-1744 Port the startup-backlog claim-failure test edit to the split tests/runtime/execution package. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AgnNR4uiqD787Bg3yKdZpL
…detail-to-the-platform-delivery-INT-1744' into feat/python-sdk-report-activity-detail-to-the-platform-producers-INT-1744 Adopt main's agno and tool test layouts and carry the producer edits into them; keep the split CrewAI/Parlant coverage guards with main's new paths. Letta streams provider events through main's BackendTurns run, and the CrewAI flow tool activity wraps main's turn-owned tool execution. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AgnNR4uiqD787Bg3yKdZpL
It runs three collect-only subprocesses, which exceeded the default per-test timeout on Windows runners. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AgnNR4uiqD787Bg3yKdZpL
…t-activity-detail-to-the-platform-INT-1744
…detail-to-the-platform-INT-1744' into feat/python-sdk-report-activity-detail-to-the-platform-delivery-INT-1744
…detail-to-the-platform-delivery-INT-1744' into feat/python-sdk-report-activity-detail-to-the-platform-producers-INT-1744
Adapters that do not report tool calls must not leak tool names through the live room indicator. The decision is taken once per turn in SimpleAdapter from the negotiated emit set and enforced at the single observer every activity reporter funnels through, so no adapter can bypass it. Permission and memory detail name no content and always report. Guards: tests/runtime/activity/test_namegate.py pins that a tool_call frame reaches the wire with Emit.TOOL_CALLS and degrades to nameless reasoning without it; fails if the wrapper is removed.
…sion and ControlLink fixes)
…ontrolLink fix
…them A name longer than 1024 characters is a 422 on the activity endpoint, and the compatibility path reads a detail-bearing 422 as an old platform: one oversized tool name would latch activity detail off for the whole process. Clip at the serialization chokepoint instead, one constant, so a long name costs characters and nothing else. Guarded by tests/platform/activity/test_truncation.py (over-limit clipped, exact-limit untouched).
The lifecycle peer rejects narration posts with the stopped-execution answer, so the first reported tool call read as a platform stop and tore down the turn machinery around a parked approval. A running room echoes 201 like the posting peer before it; stopped peers keep rejecting.
github-actions Bot
pushed a commit
to bandzalkin/band-sdk-python
that referenced
this pull request
Oct 21, 2026
Source-Base: b470206 Source-Head: 0704bb0 Upstream-PR: band-ai#850
github-actions Bot
pushed a commit
to bandzalkin/band-sdk-python
that referenced
this pull request
Oct 21, 2026
Source-Base: b470206 Source-Head: 0704bb0 Upstream-PR: band-ai#850
The mask wrapper was attached only when the flag was already off, so an adapter that binds its observer before the emit sync (codex's item/started path) kept reporting named tool_calls after the choice was turned off. The observer now always wraps and reads the live flag on every report; the hook site gates on the OMP branch remain as the second guard. Red-first test: observer bound with names on, choice flipped off mid-turn, tool report must arrive nameless. Co-Authored-By: Claude <noreply@anthropic.com>
github-actions Bot
pushed a commit
to bandzalkin/band-sdk-python
that referenced
this pull request
Oct 21, 2026
Source-Base: 5f3910a Source-Head: c516014 Upstream-PR: band-ai#850
Contributor
Author
|
Closing: band-agent does not consume this; may be re-proposed per feature. |
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.
Summary
This lets hosts discover the configured Copilot account's hosted models without a Band connection, room workspace, ACP session, or model turn.
await adapter.probe_models(timeout_s=...)uses the Copilot SDK and returns the canonicalModelCatalog.cleanup_all()retries. A narrow version/type-checked teardown bridge retains the SDK'sPopenhandles before publicstop()can erase them and confirms physical exit before releasing custody. Startup uses the public SDK API.Discovery requires the optional
copilot_sdkextra with releasedgithub-copilot-sdk>=1.0.5,<2; ordinary ACP operation does not. This lists hosted-account models, not BYOK catalogs, and does not establish inference entitlement or validate MCP/tools. Band sanitizes public discovery errors, but the upstream SDK may emit its own traceback.Prerequisite
Depends on the shared probe contracts in #844.
Validation
Tests cover catalog metadata, credential precedence, configured executable/interpreter resolution, physical process custody, cancellation, late startup, and cleanup retry.