Skip to content

Conversation

@xpcmdshell
Copy link
Owner

Summary

  • Enforce async def run() for all skills (sync def run() now rejected)
  • Fix InProcessExecutor and SubprocessExecutor to properly await async skills
  • Add CONTAINER_DEPS env var for pre-configured dependencies in container mode

Changes

  • PythonSkill.from_source() and from_file() now validate via AST that skills use async def run()
  • SkillsNamespace.invoke() uses run_coroutine_threadsafe() for thread-safe async execution
  • SkillsProxy.invoke() in subprocess kernel uses ThreadPoolExecutor when event loop is running
  • Container server handles CONTAINER_DEPS in both file and Redis modes
  • Updated docs to show async def run() in all examples

- Skills now require async def run() instead of def run()
- PythonSkill.from_source() validates and rejects sync def run()
- InProcessExecutor.SkillsNamespace handles async via run_coroutine_threadsafe
- SubprocessExecutor.SkillsProxy handles async via ThreadPoolExecutor
- SubprocessConfig.ipc_timeout defaults to None (unlimited) for long-running skills
- All test skill definitions updated to use async def run()
…EPS env var

- Add CONTAINER_DEPS env var in to_docker_config() when config.deps is set
- Read CONTAINER_DEPS in server.py and populate deps_store on startup
- Fix typo: self._config -> self.config in get_configured_deps()
- Add async def run() validation to from_file() (was only in from_source())
- Add CONTAINER_DEPS env var handling to Redis mode in server.py
- Simplify invoke() method - remove dead sync code path since async is now enforced
@xpcmdshell xpcmdshell merged commit 8434863 into main Jan 3, 2026
2 checks passed
@xpcmdshell xpcmdshell deleted the feat/async-skills branch January 3, 2026 04:03
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