跳到內容

Error Codes

Pedelec async method rejection 與 session error event 使用:

type PedelecError = {
code: string;
message: string;
details?: unknown;
};
try {
await session.sendText(text);
} catch (error) {
const value = error as PedelecError;
console.error(value.code, value.message, value.details);
}

以下是 SDK 與目前 bridge/runtime 的常見 codes。Provider adapter 可能回傳其他 code,因此一定要有 unknown fallback。

Code 意義 建議處理 Retry?
EXTENSION_UNAVAILABLE 不在支援的 page context,或無法連到 Extension 檢查 profile、installation、origin、client initialization 修復後建立 fresh client/page
EXTENSION_DISCONNECTED 既有 Extension port 關閉 Disable controls、檢查 Extension、reload/recreate state 不在同一 broken client
SDK_ORIGIN_UNAVAILABLE Extension 無法判定或傳遞 SDK caller origin 使用支援的 HTTP(S) page origin,修正 page context 後 reload 修正 origin/context 後
INVALID_ORIGIN Extension popup 收到非 HTTP(S) origin 使用支援的 HTTPS、localhost 或 127.0.0.1 改 origin 後
STORAGE_ERROR Extension 無法讀寫 approved origins 檢查 Extension/storage;持續發生時重裝 可有限度 retry

getApprovalStatus() 會將 EXTENSION_UNAVAILABLE/EXTENSION_DISCONNECTED 轉為 installed: false,不 throw。

Code 意義 建議處理 Retry?
CREATE_SESSION_NOT_APPROVED Origin 無法驗證,或另一 origin pending 說明 conflict/origin 問題 條件解除後
APPROVAL_REJECTED 使用者拒絕或關閉 approval 回到 connect-ready 使用者明確操作後
APPROVAL_TIMEOUT 未在時限內完成 提醒保持 popup 開啟,提供 connect again 可以,user initiated
OPEN_POPUP_FAILED Extension 無法自動開 popup 請使用者手動點 Extension icon Manual action 後
THREAD_ACCESS_DENIED SDK session 屬於另一個 origin,或 caller origin invalid/missing 不要用相同 cross-origin ID 重試;回到 owner origin 或建立新 session 使用 owner origin 後
Code 意義 建議處理 Retry?
NATIVE_HOST_UNAVAILABLE Extension 無法連到 registered native host 啟動/修復 Desktop App installation 與 host registration 修復後
NATIVE_CONNECTION_CLOSED Native Messaging connection 關閉 重啟 Desktop App Recovery 後 read-only 可重試
CORE_RUNTIME_UNAVAILABLE Native host 在任何 background launch attempt 後仍無法連到 valid Core 手動開啟 Desktop,或修復 installation/launch config Core ready 後
IPC_UNAVAILABLE Local Core IPC bind/connect/parse/respond 失敗 重啟 Desktop App、查看 local logs Recovery 後
MESSAGE_TOO_LARGE Local IPC message 超過 size limit 縮小 prompt/tool/result payload 只在資料縮小後
WORKSPACE_LIST_TOO_LARGE Workspace file/folder listing 無法放入 browser transport envelope 改列較窄的 workspace path 縮小結果後
WORKSPACE_RUN_OUTPUT_TOO_LARGE Workspace script 的 stdout/stderr 無法放入 browser transport envelope 減少 script output,或寫入 workspace file 縮小 output 後
SDK_BRIDGE_TIMEOUT Extension 未在 bridgeTimeoutMs 內回應 檢查下游 layers,不要重複 write 診斷後
DIRECTORY_PICKER_FAILED 原生 directory picker 無法建立、顯示,或無法轉換成 SDK path result 請使用者重試並檢查 Desktop/native dialog 支援;取消不是 error 修復 dialog/runtime 問題後
WORKSPACE_PATH_INVALID Workspace path 不是 absolute、不是 directory、與 managed workspace root overlap,或無法解析 選擇有效的 application-managed workspace path 修正 path 後
WORKSPACE_CREATE_FAILED Pedelec 無法建立或初始化 managed workspace 或其 private runtime data 保留 application-owned workspace,查看 error details 修復 filesystem 問題後
WORKSPACE_REMOVE_FAILED Pedelec 無法移除 managed temporary workspace 保留 path 供後續 cleanup,查看 locked file 或 permission details filesystem 問題解除後
WORKSPACE_OPEN_FAILED Desktop 無法開啟已驗證的 Workspace folder 檢查 folder 與 OS opener integration 修復 opener 問題後
WORKSPACE_NOT_FOUND Workspace capability 或記錄的 directory 已不存在 重新開啟 custom Workspace 或建立新的 Session;不要只用 path 重建 handle Workspace 恢復後
WORKSPACE_ACCESS_DENIED Process 無法讀取、寫入或初始化指定 Workspace path 檢查 OS permissions、ownership、locks 與 application access grant 修正 permissions 後
SDK_TRANSPORT_ERROR Generic bridge failure 查看 message/details,驗證 Extension/native/Core 視 operation
SDK_PROTOCOL_ERROR Response/event shape 或 request type 不相容 對齊 component versions,回報 reproducible mismatch 通常修復前不可
Code Meaning Recommended response Retry?
DENO_EXECUTION_TIMEOUT Workspace TypeScript code 超過 timeout;default 是 60 秒 適當時提高 timeout,或拆分/縮短 script 修改工作後
DENO_EXECUTION_CANCELLED Workspace Runtime execution 在 shutdown 或 interruption 中被取消 Retry 前先確認 Workspace 是否有 partial writes Workspace/runtime 可用後
DENO_RUNTIME_UNAVAILABLE 受管理的 Deno runtime 找不到或無法啟動 重新啟動 Desktop,讓它再次準備 runtime。若準備持續失敗,請重新安裝 Desktop runtime 可用後
DENO_PROCESS_SPAWN_FAILED Desktop 無法 spawn Deno process 檢查 Desktop installation、executable permissions 與 runtime logs 修復 process environment 後
DENO_PROCESS_IO_FAILED Deno process 的 stdin/stdout/stderr communication 失敗 將 operation 視為失敗,查看 runtime logs 並確認 partial writes transport/runtime 恢復後
DENO_MODULE_NAME_INVALID Logical Runtime Module name 不是支援的 bare 或 scoped package-like specifier 使用 scene-tools 或 @example/scene-tools 等有效名稱 修正 declaration 後
DENO_MODULE_SETUP_INCOMPLETE Requested Workspace 或 Session Runtime Module 尚未 ready,或同一個 module identity 的 setup/upload 仍在 pending 完成或重試該 module 的 setup。其他 Workspace 活動不會阻擋它 該 module setup 完成後
DENO_MODULE_NOT_FOUND Requested module 不在 owning Workspace scope 或 Thread snapshot 的 declaration 中 將 module 加入明確的 run/setup request,或建立新的 Session snapshot 修正 request 後
DENO_MODULE_ALREADY_READY Ready module package 在目前 Core runtime scope 內不可變更 使用既有 package;新 implementation 請使用新的 logical module name 只在改用新 name 後
DENO_MODULE_ARTIFACT_TOO_LARGE Prepared runtime/declaration envelope 超過 100 MiB upload limit 減小 bundled artifact,或拆分 module artifact 縮小後
DENO_MODULE_ARTIFACT_INVALID Uploaded Runtime Module envelope 或 runtime/declaration sources 無效 使用 Vite plugin 重新 build 後重試 rebuild 後
DENO_MODULE_MATERIALIZATION_FAILED Core 無法安全 commit 或 validate private module package 檢查 filesystem/runtime health;不要把 private path 暴露給使用者 修復 filesystem/runtime 後
DENO_MODULE_UPLOAD_SERVER_UNAVAILABLE Local bounded upload endpoint 無法使用 重啟或修復 Desktop/Core runtime upload endpoint ready 後
DENO_MODULE_UPLOAD_TICKET_EXPIRED Short-lived module upload ticket 已過期 重新取得 setup/upload ticket 使用新 ticket 後
DENO_MODULE_UPLOAD_UNAUTHORIZED Upload ticket、token、owner 或 module scope 無效 不要重用 ticket;從 owning SDK origin 重新開始 setup fresh authorized setup 後
DENO_MODULE_UPLOAD_SIZE_MISMATCH Uploaded bytes 與 ticket 的 envelope size 不一致 使用完全相同的 prepared artifact body 重試 修正 body 後
DENO_MODULE_UPLOAD_FAILED Module upload 無法 transfer 或 commit 查看原因後重試 Workspace setup,或重新建立 Session recovery 後
DENO_MODULE_SETUP_FAILED Module setup 完成 transport 但沒有產生 ready package rebuild/retry setup;ready package 不會 hot-swap 修正 setup 後
Code 意義 建議處理 Retry?
DEFAULT_PROVIDER_NOT_SET Desktop 沒有 default provider 請使用者選擇,或 explicit pass provider 設定後
DEFAULT_PROVIDER_UNAVAILABLE Configured default unavailable 選擇/安裝其他 provider 設定後
PROVIDER_SCAN_FAILED initial provider availability scan 失敗 保留 error details、查看 Desktop logs,修復後重試 Recovery 後
MODEL_REQUIRED Profile mode 的 provider(特別是 Ollama)要求選中的 Desktop effort profile 有 model 到 Desktop Settings 設定 profile model,或改用 explicit createSession({ model }) mode 設定或修改 request 後
INVALID_INPUT SDK input invalid 修正 application code/input shape 不可原樣重試
PROVIDER_PROMPT_TOO_LARGE Provider prompt 超過 provider-specific launch limit;目前 Antigravity 會拒絕超過 20,000 UTF-16 code units 的 prompt 縮短 user message;若是 first turn,也要計入 Pedelec 注入的 guidance/tool metadata 所形成的完整 prompt 縮短 prompt 後
OLLAMA_API_KEY_REQUIRED Ollama agent 沒有可用 API key Desktop Settings:本機填 ollama,遠端/Cloud 填有效 key 設定後
OLLAMA_AUTH_FAILED Endpoint 拒絕 authentication 更正 endpoint credentials 設定後
OLLAMA_MODEL_NOT_FOUND 找不到 selected Ollama model 安裝/選擇有效 model 設定後
OLLAMA_CLOUD_LIMIT_EXCEEDED 已達 Ollama Cloud limit 等待或變更 plan/endpoint Service recovery 後
OLLAMA_BASE_URL_INVALID Ollama Base URL invalid 在 Desktop Settings 更正 URL 設定後
OLLAMA_UNAVAILABLE 無法連線 Ollama endpoint 啟動 local Ollama 或修復 endpoint/network Recovery 後
OLLAMA_REQUEST_FAILED 其他 endpoint request failure 保留 message,檢查 endpoint/logs 視原因
OLLAMA_RESPONSE_INVALID Endpoint response 無法使用 確認 endpoint compatibility 並回報 details Endpoint 修復後

只有在 Tavily API key 啟用 bundled Ollama agent 的 internal web_search tool 時,才可能出現以下 errors。

Code 意義 建議處理 Retry?
TAVILY_UNAVAILABLE Web search 無法初始化或連到 Tavily 檢查 network/service availability Recovery 後
TAVILY_REQUEST_INVALID Tavily 拒絕 model 產生的 search request 保留 details,回報可重現 query 修改 request 後
TAVILY_AUTH_FAILED Tavily 拒絕設定的 API key 在 Desktop Settings 更正 Tavily key 設定後
TAVILY_RATE_LIMITED Tavily 暫時 rate limit 等待後再試 稍後可以
TAVILY_USAGE_LIMIT_EXCEEDED Tavily account usage limit 已用完 等待 quota reset,或更換 account/plan Quota recovery 後
TAVILY_REQUEST_FAILED Tavily 回傳其他 request failure 保留 message/details,檢查 service status 視原因
TAVILY_RESPONSE_INVALID Tavily 回傳無法使用的 result shape 回報 response incompatibility Service/runtime 修復後
TAVILY_MODEL_ROUND_LIMIT_EXCEEDED Model 在單一 model round 嘗試超過 10 次搜尋 讓 agent 在沒有更多搜尋的情況下繼續,或等待下一個 turn 後續 model round

Provider-specific errors 可能描述 authentication、executable startup、model support、server connectivity、web search 或 output parsing。請顯示 provider 並保留原始 message。

Code 意義 建議處理 Retry?
SESSION_BUSY 已有 active prepare/turn 等待 idle,阻止 duplicate submit Idle 後
SESSION_ENDED Session 不再接受工作 建立或 resume 另一個 valid session 同 handle 不可
THREAD_NOT_FOUND Core 已找不到 requested session ID 移除 stale persistence,或建立另一個 session 相同 missing ID 不可
SESSION_ERROR Runtime 回報 error state 顯示失敗,查看 provider/runtime detail 需 deliberate recovery
PREPARE_FAILED Preparation request 的 SDK fallback code 視情況繼續 normal send 可 deliberate retry
PREPARE_ACK_INVALID Provider preparation output trim 後不完全等於 PEDELEC_PREPARED 保留 normal sendText() flow;preparation 只是 optimization 檢查 provider/runtime state 後可重試
PREPARE_SESSION_ID_MISSING Provider 完成 preparation 但沒有可 resume 的 session ID 保留 normal sendText() flow;preparation 只是 optimization Provider recovery 後可重試
SEND_TEXT_FAILED Send request 的 SDK fallback code 保留 prompt,檢查 transport/runtime 確認 state 後
END_SESSION_FAILED End request 失敗,Core state 不確定 UI 保持明確,retry 或 verify runtime 謹慎
AUTO_END_SESSION_FAILED Extension 無法清理 disconnected auto-end session 記錄 cleanup warning,檢查 Desktop 謹慎/manual cleanup

Underlying structured error 存在時會保留,所以 fallback code 可能被更具體的 transport/runtime code 取代。

Code 意義 出現位置 處理
TOOL_HANDLER_NOT_FOUND 沒有 named/inline/generic match 送給 agent 的 error result Restore/register handler,修正 name/lifecycle
TOOL_NOT_FOUND Core ToolRegistry 沒有 agent 要求的 tool Core/runtime error 驗證 tool manifest 與 agent request
TOOL_ARGS_INVALID Agent args 不是 object 或不符合 schema Core/runtime error 修正 tool call/schema
TOOL_TIMEOUT Core 等待 tool result 已到達 App Tool 的正式 timeout Core/runtime error 已收到 structured error 代表 invocation 已結束;先 reconcile 可能的 side effect,不要把它當成 in-flight retry
TOOL_HANDLER_ERROR Handler throw/reject 送給 agent 的 error result Log unexpected exception;expected failure 回 domain error
SUBMIT_TOOL_RESULT_FAILED SDK 無法 delivery result session.onError() SDK event Reconcile side effect,檢查 disconnect/timeout/serialization
WEBMCP_REGISTRATION_FAILED 綁定 App Tools 時 document.modelContext.registerTool 失敗 rejected webmcp() promise 修正頁面註冊失敗。該次呼叫不回傳 binding,並 abort 同一批先前已註冊的 tools

Core tool timeout 也可能導致 session/runtime error 或後續 SUBMIT_TOOL_RESULT_FAILED。Browser handler 不會被強制 cancel。

Asset failure 可能發生在 SDK request、loopback upload PUT、download GET、asset listing,或 SDK 執行 UTF-8 decode 與 JSON parsing 時。因此 uploadAsset()、listAssets() 與 readAsset() 會從不同階段回傳錯誤。

Code 意義 建議處理
ASSET_TOO_LARGE File 超過 100 MiB 選擇較小檔案
ASSET_UPLOAD_SERVER_UNAVAILABLE Desktop loopback upload server unavailable 檢查 Desktop/Core,recovery 後 retry
ASSET_UPLOAD_TICKET_EXPIRED Internal upload ticket 已過期 建立 fresh upload
ASSET_UPLOAD_UNAUTHORIZED Upload ticket/token 被拒絕 建立 fresh upload;持續發生時修復 Desktop
ASSET_UPLOAD_SIZE_MISMATCH Upload byte count 和選擇的 file 不同 使用相同檔案 retry;持續發生時檢查問題
ASSET_UPLOAD_FAILED 其他 transport/runtime upload failure 保留 details,診斷後再 retry
ASSET_LIST_FAILED 無法列出 completed assets Session/Desktop recovery 後 retry read
ASSET_PATH_INVALID Path 不在隱含的 assets/ 根目錄或含不安全 segment 使用有效的 /... path
ASSET_NOT_FOUND / ASSET_NOT_FILE Asset 不存在或不是一般檔案 等待寫入完成或選擇正確檔案
ASSET_READ_TOO_LARGE Read target 超過 100 MiB 選擇較小 asset
ASSET_DOWNLOAD_TICKET_EXPIRED / ASSET_DOWNLOAD_UNAUTHORIZED Loopback download ticket 被拒絕 重新開始 read
ASSET_READ_FAILED Download 或 filesystem read 失敗 診斷 session/filesystem 後 retry
ASSET_TEXT_DECODE_FAILED / ASSET_INVALID_JSON SDK 無法 UTF-8 decode 或 parse JSON 改用 file 或修正檔案內容

workspace.uploadFile() 與 workspace.readFile() 使用 Workspace path 與 file error。它們不會回報 THREAD_* 或 SESSION_*。Session asset methods 仍使用上面的 asset codes。

Code 意義 建議處理
WORKSPACE_FILE_TOO_LARGE / WORKSPACE_FILE_READ_TOO_LARGE 上傳或讀取超過 100 MiB 改用較小的檔案
WORKSPACE_FILE_TRANSFER_UNAVAILABLE 本機 transfer server 無法使用 確認 Desktop/Core 後再重試
WORKSPACE_FILE_UPLOAD_TICKET_EXPIRED / WORKSPACE_FILE_DOWNLOAD_TICKET_EXPIRED 一次性 ticket 已過期 重新開始傳輸
WORKSPACE_FILE_UPLOAD_UNAUTHORIZED / WORKSPACE_FILE_DOWNLOAD_UNAUTHORIZED Ticket 或 token 被拒絕 重新開始傳輸
WORKSPACE_FILE_UPLOAD_SIZE_MISMATCH 上傳位元組數與檔案不符 以未變更的檔案重試
WORKSPACE_FILE_UPLOAD_FAILED / WORKSPACE_FILE_READ_FAILED 傳輸或 filesystem 操作失敗 保留細節,診斷後再重試
WORKSPACE_FILE_NOT_FOUND 目標檔案不存在 檢查 Workspace-relative path
WORKSPACE_FILE_NOT_REGULAR 目標是 directory、symlink、junction 或其他非 regular file 改選 regular file
WORKSPACE_PATH_INVALID path 是 absolute、含 ..,或不是合法的 Workspace-relative path 使用沒有前導 slash 的相對 path,分隔字元為 /
WORKSPACE_FILE_TEXT_DECODE_FAILED / WORKSPACE_FILE_INVALID_JSON SDK 無法 decode UTF-8 或 parse JSON 改用 file 或修正內容
Code 含義 處理方式
INVALID_INPUT Session Full Access 缺少 Instance opt-in、flag 型別錯誤,或同時帶兩種 module 欄位 修正輸入
RUNTIME_FULL_ACCESS_NOT_APPROVED 舊版 SDK 的 Instance 授權預先檢查錯誤 新版會開啟核准流程;只核准 Agent Sessions 時回報 CREATE_SESSION_NOT_APPROVED
CREATE_SESSION_NOT_APPROVED Extension 拒絕授權或缺少 Native mode 確認 檢查權限及 Extension/Desktop 版本
SDK_PROTOCOL_ERROR SDK 未收到 runtimeFullAccessApplied: true 更新 Extension/Desktop,不可靜默降級
RUNTIME_FULL_ACCESS_UNSUPPORTED Native 未確認撤銷 更新 Desktop;撤銷持續排隊重試

既有 DENO_* 錯誤碼字面值保留當前引擎與相容契約的含義。