Skip to content

feat(integrations): discover native OMP model catalogs - #848

Closed
bandzalkin wants to merge 81 commits into
band-ai:mainfrom
bandzalkin:feat/host-list-models-omp-refresh
Closed

bandzalkin wants to merge 81 commits into
band-ai:mainfrom
bandzalkin:feat/host-list-models-omp-refresh

Conversation

@bandzalkin

@bandzalkin bandzalkin commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Summary

This lets hosts discover OMP's configured models before opening a Band room or running inference. await adapter.probe_models(timeout_s=...) returns a canonical ModelCatalog from omp models --json, with temporary native RPC discovery when the CLI route is unavailable, invalid or ambiguous.

  • Preserve configured launcher prefixes, native options, overlays/extensions, working directory and provider environment. Rewrite an explicit native launch only at a known command boundary; otherwise use the original command for RPC rather than risk changing the inventory.
  • Keep provider-qualified IDs and advertised effort/default metadata. Missing metadata stays unknown, and only native state can establish the currently selected model. An advertised empty catalog succeeds; unavailable or malformed discovery raises an error.
  • Include the shared host probe contracts, provider/default model fields and retryable probe ownership. Discovery is an explicit host operation, separate from the startup list_models hook.
  • Own CLI descendants through a POSIX process group or Windows Job, even after their launcher exits. Retain concrete process identities or handles until physical exit is established; a successful signal or empty process census is not sufficient.
  • Keep failed cleanup owned for cleanup_all() retry. Whole-adapter cleanup waits for probe and room teardown before reporting failures, and retiring native sessions receive no new work.

Depends on #763. The shared host contracts are included here; #844 is not a prerequisite. Retain the adapter instance until cleanup settles. A catalog does not prove provider authentication or inference entitlement.

Validation

Regression coverage includes CLI/RPC fallback, launcher and native flag routing, metadata fidelity, installed-executable extension loading, cancellation, descendant custody and cleanup retry.

@bandzalkin bandzalkin changed the title feat(omp): discover native catalogs with retained process custody feat(integrations): discover native OMP model catalogs Oct 18, 2026
@bandzalkin
bandzalkin force-pushed the feat/host-list-models-omp-refresh branch from b55dd47 to fbcc89f Compare October 19, 2026 02:53
github-actions Bot pushed a commit to bandzalkin/band-sdk-python that referenced this pull request Oct 19, 2026
@bandzalkin
bandzalkin force-pushed the feat/host-list-models-omp-refresh branch from fbcc89f to 5d27cc3 Compare October 20, 2026 06:36
github-actions Bot pushed a commit to bandzalkin/band-sdk-python that referenced this pull request Oct 20, 2026
AlexanderZ-Band and others added 4 commits October 20, 2026 13:08
…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
The restack merge resolved src/band/runtime/tools/agent.py to this
branch's older lineage and dropped the activity observation the
producer stack added: the class decorator reporting method calls and
the model-tool wrapper around execute_tool_call. Native OMP work does
not touch that surface; restore it from the prerequisite.
bandzalkin added a commit to bandzalkin/band-sdk-python that referenced this pull request Oct 20, 2026
Select upstream band-ai#841 (activity producers, carrying band-ai#839/band-ai#840 via
forward merges), band-ai#874 after 841 (tool-name emit gate with the I-08
name clamp), the host stack ahead of band-ai#763, band-ai#763 after 874 (native OMP
with the tool/permission activity hooks and omp_acp retirement), and
band-ai#854/band-ai#795/band-ai#848 after 763. Replayed from the branches' live heads.
github-actions Bot pushed a commit to bandzalkin/band-sdk-python that referenced this pull request Oct 21, 2026
Select upstream band-ai#841 (activity producers, carrying band-ai#839/band-ai#840 via
forward merges), band-ai#874 after 841 (tool-name emit gate with the I-08
name clamp), the host stack ahead of band-ai#763, band-ai#763 after 874 (native OMP
with the tool/permission activity hooks and omp_acp retirement), and
band-ai#854/band-ai#795/band-ai#848 after 763. Replayed from the branches' live heads.
github-actions Bot pushed a commit to bandzalkin/band-sdk-python that referenced this pull request Oct 21, 2026
sim-artifacts and others added 2 commits October 21, 2026 05:42
Live capture on the platform showed the OMP hooks posting tool_call activity
details even when Emit.TOOL_CALLS was off: the activity channel is separate
from event narration, so the hook sites need the same gate the narration
already had. I-01/I-02: with tool reporting off, no tool kind or name may
reach the reporter. Tests now pin the gate directly (activity follows the
switch) instead of the incorrect independence premise.

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
Select upstream band-ai#841 (activity producers, carrying band-ai#839/band-ai#840 via
forward merges), band-ai#874 after 841 (tool-name emit gate with the I-08
name clamp), the host stack ahead of band-ai#763, band-ai#763 after 874 (native OMP
with the tool/permission activity hooks and omp_acp retirement), and
band-ai#854/band-ai#795/band-ai#848 after 763. Replayed from the branches' live heads.
github-actions Bot pushed a commit to bandzalkin/band-sdk-python that referenced this pull request Oct 21, 2026
bandzalkin and others added 3 commits October 21, 2026 08:12
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
Select upstream band-ai#841 (activity producers, carrying band-ai#839/band-ai#840 via
forward merges), band-ai#874 after 841 (tool-name emit gate with the I-08
name clamp), the host stack ahead of band-ai#763, band-ai#763 after 874 (native OMP
with the tool/permission activity hooks and omp_acp retirement), and
band-ai#854/band-ai#795/band-ai#848 after 763. Replayed from the branches' live heads.
github-actions Bot pushed a commit to bandzalkin/band-sdk-python that referenced this pull request Oct 21, 2026
F-8 closure evidence: an observer bound at turn start now reads the gate
flag at report time (d764959, covered by the flip-after-binding test), and
a stale continuation report after the next turn takes activity ownership is
fenced before it can name anything. The two guards seal R-02 for OMP
background-yield continuations; no production change is required.
@bandzalkin

Copy link
Copy Markdown
Contributor Author

Closing: band-agent does not consume this; may be re-proposed per feature.

@bandzalkin bandzalkin closed this Oct 21, 2026
bandzalkin added a commit to bandzalkin/band-sdk-python that referenced this pull request Oct 21, 2026
Select upstream band-ai#841 (activity producers, carrying band-ai#839/band-ai#840 via
forward merges), band-ai#874 after 841 (tool-name emit gate with the I-08
name clamp), the host stack ahead of band-ai#763, band-ai#763 after 874 (native OMP
with the tool/permission activity hooks and omp_acp retirement), and
band-ai#854/band-ai#795/band-ai#848 after 763. Replayed from the branches' live heads.
bandzalkin added a commit to bandzalkin/band-sdk-python that referenced this pull request Oct 21, 2026
Select upstream band-ai#841 (activity producers, carrying band-ai#839/band-ai#840 via
forward merges), band-ai#874 after 841 (tool-name emit gate with the I-08
name clamp), the host stack ahead of band-ai#763, band-ai#763 after 874 (native OMP
with the tool/permission activity hooks and omp_acp retirement), and
band-ai#854/band-ai#795/band-ai#848 after 763. Replayed from the branches' live heads.
github-actions Bot pushed a commit to bandzalkin/band-sdk-python that referenced this pull request Oct 21, 2026
Select upstream band-ai#841 (activity producers, carrying band-ai#839/band-ai#840 via
forward merges), band-ai#874 after 841 (tool-name emit gate with the I-08
name clamp), the host stack ahead of band-ai#763, band-ai#763 after 874 (native OMP
with the tool/permission activity hooks and omp_acp retirement), and
band-ai#854/band-ai#795/band-ai#848 after 763. Replayed from the branches' live heads.
github-actions Bot pushed a commit to bandzalkin/band-sdk-python that referenced this pull request Oct 21, 2026
Select upstream band-ai#841 (activity producers, carrying band-ai#839/band-ai#840 via
forward merges), band-ai#874 after 841 (tool-name emit gate with the I-08
name clamp), the host stack ahead of band-ai#763, band-ai#763 after 874 (native OMP
with the tool/permission activity hooks and omp_acp retirement), and
band-ai#854/band-ai#795/band-ai#848 after 763. Replayed from the branches' live heads.
github-actions Bot pushed a commit to bandzalkin/band-sdk-python that referenced this pull request Oct 21, 2026
Select upstream band-ai#841 (activity producers, carrying band-ai#839/band-ai#840 via
forward merges), band-ai#874 after 841 (tool-name emit gate with the I-08
name clamp), the host stack ahead of band-ai#763, band-ai#763 after 874 (native OMP
with the tool/permission activity hooks and omp_acp retirement), and
band-ai#854/band-ai#795/band-ai#848 after 763. Replayed from the branches' live heads.
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