Follow-up from the #225 review (PR #226).
The provider loads the driver via a repo-relative filesystem path-walk + exec_module (providers/interactive_tmux/__init__.py _get_driver()), with $AGENTIC_INTERACTIVE_TMUX_DRIVER as an override. #226 made this load lazy, which fixes import-time breakage, but the path-walk is still the primary mechanism.
Problem: a pip-installed consumer without the repo tree (e.g. the syn-api production Docker image, which copies only lib/python/agentic_isolation/) still cannot use the interactive provider. The ImportError just moved from import time to the first create() at runtime.
Fix: package the driver tree into the installable agentic_isolation distribution (or vendor the driver module under the package) and import it as a normal module, keeping the env override as an escape hatch. This was Phase 1 of the #225 spec ("retire the repo-relative exec_module path walk as the primary mechanism").
Deferred from #226 because it does not block dev/selfhost e2e (which runs from the repo checkout) and is a larger, self-contained change deserving its own PR. Refs #225.
Follow-up from the #225 review (PR #226).
The provider loads the driver via a repo-relative filesystem path-walk +
exec_module(providers/interactive_tmux/__init__.py_get_driver()), with$AGENTIC_INTERACTIVE_TMUX_DRIVERas an override. #226 made this load lazy, which fixes import-time breakage, but the path-walk is still the primary mechanism.Problem: a pip-installed consumer without the repo tree (e.g. the syn-api production Docker image, which copies only
lib/python/agentic_isolation/) still cannot use the interactive provider. The ImportError just moved from import time to the firstcreate()at runtime.Fix: package the driver tree into the installable
agentic_isolationdistribution (or vendor the driver module under the package) and import it as a normal module, keeping the env override as an escape hatch. This was Phase 1 of the #225 spec ("retire the repo-relative exec_module path walk as the primary mechanism").Deferred from #226 because it does not block dev/selfhost e2e (which runs from the repo checkout) and is a larger, self-contained change deserving its own PR. Refs #225.