Patch Changes
- db37b6e: Sandbox skills: unify git and registry mounts onto
.tfy-desired-skills.json(SkillMounter + skill_downloader), and always attach a mounter so existing skills are cleaned up. - 762ecc0: TrueFoundry skills catalog: proxy GET /skills and /skills/versions from ServiceFoundry; settings skill writes return 424. SkillManifest is a type-discriminated oneOf of GitSkill | TrueFoundryRegistrySkill (
type: truefoundry; name is FQN, display_name is short). AvailableSkill exposes optional metadata (display_name, repository_name, version). AgentSpec skill refs allow opaque FQN names, optional preload (registry), and max 50. UI draft skill mounts map catalogidto AgentSpecname. - fc38f74: AgentSpec skills: TrueFoundry save/turn resolve via SFY; standalone git validate/resolve on the skill store.
- 4111287: Add POST
/api/internal/list-permissionsviaAuthorizer.getPermissions(owner grants for schedules/sessions; agents includeUSE, with TrueFoundry agents mapped from SFYUSE_AGENT/MANAGE_AGENT/DELETE_AGENT). - a36ffaf: Namespace all Redis keys and pub/sub channels under
tfg:so TrueForge can share a Redis instance without colliding with other apps. - 44f9cbe: TrueFoundry mode: env-backed Daytona | truefoundry sandbox via TRUEFOUNDRY_SANDBOX_* (static SETTINGS JSON). Settings OpenAPI stays Daytona-only (
SandboxProviderManifest); truefoundry is store-internal (StoredSandboxProviderManifest). - afe816e: Default
cache_controlto{ type: 'ephemeral' }fortruefoundryprovider model calls (overridable via request body). - a5f220f: Dedupe LLM resolve within a turn so parent and sub-agents sharing a model name call deps.llm once.