Gap
The ## Workspace integrations system-prompt section (packages/opencode/src/altimate/workspace/awareness.ts) tells the model which workspace-served warehouse capabilities to route to datamate_* tools — but it projects only the three warehouse capabilities per connection type (servedInventory()). Extension-type integrations served over a live IDE bridge (the dbt project tools and sql-tools keys) never enter the section, so the model is not told those tools exist, when they are usable, or when to prefer them over guessing.
#1236 fixed the same staleness on the presentation surfaces (list-integrations, declared counts) using the read-only liveBridge() probe; this issue is the model-facing half it deliberately left out of scope.
Proposed shape
Mirror the presentation semantics in the awareness render:
- Bridge live for the project → append a compact block naming the extension-type integrations and their tool groups, "served while VS Code with the Altimate extension is open on this project". Group by integration; never enumerate all 18 keys.
- No live bridge (none, or dead sidecar pids) → render nothing extra; the section stays byte-identical to today's output.
Invariants to preserve from the original awareness design: purely additive render; byte-identical prompt for unlinked projects and every silent disabled state; MAX_SECTION_CHARS enforced with the extension block participating in the drop order; bridge state read at the same per-step snapshot point so the section can never advertise tools routing would refuse.
Gap
The
## Workspace integrationssystem-prompt section (packages/opencode/src/altimate/workspace/awareness.ts) tells the model which workspace-served warehouse capabilities to route todatamate_*tools — but it projects only the three warehouse capabilities per connection type (servedInventory()). Extension-type integrations served over a live IDE bridge (the dbt project tools and sql-tools keys) never enter the section, so the model is not told those tools exist, when they are usable, or when to prefer them over guessing.#1236 fixed the same staleness on the presentation surfaces (
list-integrations, declared counts) using the read-onlyliveBridge()probe; this issue is the model-facing half it deliberately left out of scope.Proposed shape
Mirror the presentation semantics in the awareness render:
Invariants to preserve from the original awareness design: purely additive render; byte-identical prompt for unlinked projects and every silent disabled state;
MAX_SECTION_CHARSenforced with the extension block participating in the drop order; bridge state read at the same per-step snapshot point so the section can never advertise tools routing would refuse.