3 Commits
Author SHA1 Message Date
Duc Nguyenandntduc bb7712a9ff fix(collaboration): harden delegated task isolation (#1486)
* feat(collaboration): isolate delegated artifacts and child runs

Isolate delegated inputs and outputs behind secure artifact exchange lifecycles. Scope Agent Link tasks by tenant and root agent, and enforce delegation spawn-tree boundaries. Add process-wide child-run admission and preserve logical media paths across native, MCP, and sandbox execution.

* fix(collaboration): harden delegated task isolation

Enforce tenant and root-agent task scope across migrations and stores. Add exactly-once async completion delivery, delegated sandbox boundaries, and confined artifact and media recovery across runtime surfaces.

* fix(collaboration): recover interrupted async tasks

* fix(collaboration): normalize persisted child-run status

---------

Co-authored-by: ntduc <ntduc@cpp.ai.vn>
2026-07-30 14:17:40 +07:00
Duy /zuey/ 4de94c1d7c fix(telegram): repair voice transcription routing
Squash merge PR #102 after resolving dev changelog conflict. PR CI run 26704061639 passed release-versioning, go, and web.
2026-05-31 12:23:40 +07:00
viettranx 7ffcdf16d1 fix(tools/read_audio): route transcription models to /v1/audio/transcriptions for openai_compat; fail-fast on missing credentials
Two bugs fixed in callProvider:

1. Silent fallback when API credentials are missing for a transcription
   or gemini/openai path now returns a clear error instead of falling
   through to a generic chat-API path that explodes confusingly (or
   NPEs on a nil registry).

2. openai_compat providers (e.g. DashScope) pointed at a transcription
   endpoint never reached /v1/audio/transcriptions because only
   ptype=="openai" entered the transcription branch. Move the
   isTranscriptionModel(model) check above the ptype switch so any
   OpenAI-compatible provider that exposes the transcription endpoint
   is routed correctly.

Adds three regression tests covering the fail-fast paths.
2026-04-24 20:55:28 +07:00