qlogicagent 2.10.13 → 2.10.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/protocol.js CHANGED
@@ -1 +1 @@
1
- var V="1.0.0",W={PARSE_ERROR:-32700,INVALID_REQUEST:-32600,METHOD_NOT_FOUND:-32601,INVALID_PARAMS:-32602,INTERNAL_ERROR:-32603,TURN_ABORTED:-32e3,TURN_TIMEOUT:-32001,LLM_ERROR:-32010,LLM_AUTH_ERROR:-32011,LLM_RATE_LIMIT:-32012,LLM_QUOTA_EXHAUSTED:-32013,LLM_MODEL_NOT_FOUND:-32014,TOOL_INVOKE_FAILED:-32020,TOOL_TIMEOUT:-32021,PROTOCOL_MISMATCH:-32030},F={REQUEST:"tool.approval.request",RESPONSE:"tool.approval.response"};function _(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&t.method.length>0}function P(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&(typeof t.id=="string"||typeof t.id=="number")&&!("method"in t)}function T(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function B(e){let t;try{t=JSON.parse(e)}catch{return null}return P(t)||_(t)||T(t)?t:null}var j=["session.list","session.get","session.create","session.update","session.delete","session.deleteAll","session.archive","session.moveToProject","session.getState","session.switchProject","session.getMessages","project.list","project.create","project.delete","project.rename","project.archive","project.unarchive","project.update","project.archiveByGroup","project.purgeAll","instructions.list","instructions.read","instructions.write","instructions.delete","files.list","files.read","files.create","files.rename","files.delete","files.gitStatus","skills.list","memory.list-files","memory.atlas","memory.activity","memory.addManual"];var C=["turn.start","turn.delta","turn.end","turn.error","turn.recovery","turn.tool_call","turn.tool_result","turn.tool_blocked","turn.reasoning_delta","turn.approval_request","turn.skill_instruction","turn.ask_user","turn.media_result","turn.media_progress","turn.plan_update","turn.suggestions","turn.sidechain_started","turn.subagent_delta","turn.sidechain_completed","turn.task_updated","turn.todos_updated","turn.exec_progress","turn.usage_update","team.member.notification","session.info","memory.updated","skills.updated","pet.soul_ready","pet.reaction","pet.growth","pet.state","pet.confirm","pet.forged","system.activity"],b=["solo.progress","solo.agentDelta","solo.agentUsage","solo.agentDiff","solo.evaluation","product.taskStarted","product.taskOutput","product.taskCompleted","product.taskFailed","product.budgetUpdate","product.checkpointed","product.dagTopology","plan.interrupted"],Y=[...C,...b];var X=1,H={INITIALIZE:"initialize",SESSION_NEW:"session/new",SESSION_PROMPT:"session/prompt",SESSION_END:"session/end",SESSION_SET_CONFIG:"session/set_config_option",SESSION_SET_MODEL:"session/set_model",SESSION_SET_MODE:"session/set_mode",SESSION_UPDATE:"session/update",SESSION_REQUEST_PERMISSION:"session/request_permission",FS_READ_TEXT_FILE:"fs/read_text_file",FS_WRITE_TEXT_FILE:"fs/write_text_file"},G={ABORT:"x/abort",DREAM:"x/dream",AGENTS_LIST:"x/agents.list",SOLO_START:"x/solo.start",SOLO_STATUS:"x/solo.status",SOLO_SELECT:"x/solo.select",SOLO_CANCEL:"x/solo.cancel",PRODUCT_CREATE:"x/product.create",PRODUCT_PLAN:"x/product.plan",PRODUCT_CONFIRM:"x/product.confirm",PRODUCT_MESSAGE:"x/product.message",PRODUCT_RESUME:"x/product.resume",PRODUCT_PAUSE:"x/product.pause",PRODUCT_CANCEL:"x/product.cancel",PRODUCT_ROLLBACK:"x/product.rollback",PRODUCT_STATUS:"x/product.status",SOLO_SUBSCRIBE:"x/solo.subscribe",SOLO_MESSAGE:"x/solo.message",SOLO_EVALUATE:"x/solo.evaluate",PRODUCT_SUBSCRIBE:"x/product.subscribe",TEAM_DELEGATE:"x/team.delegate"},I={AGENT_MESSAGE_CHUNK:"agent_message_chunk",AGENT_THOUGHT_CHUNK:"agent_thought_chunk",TOOL_CALL:"tool_call",TOOL_CALL_UPDATE:"tool_call_update",PLAN:"plan",USAGE_UPDATE:"usage_update",CONFIG_OPTION_UPDATE:"config_option_update",SESSION_INFO_UPDATE:"session_info_update",AVAILABLE_COMMANDS_UPDATE:"available_commands_update"},q={X_SUBAGENT_STARTED:"x_subagent_started",X_SUBAGENT_DELTA:"x_subagent_delta",X_SUBAGENT_ENDED:"x_subagent_ended",X_MEDIA_RESULT:"x_media_result",X_MEDIA_PROGRESS:"x_media_progress",X_SKILL_INSTRUCTION:"x_skill_instruction",X_RECOVERY:"x_recovery",X_SIDECHAIN_STARTED:"x_sidechain_started",X_SIDECHAIN_COMPLETED:"x_sidechain_completed",X_SUGGESTIONS:"x_suggestions",X_ASK_USER:"x_ask_user",X_SESSION_INFO:"x_session_info",X_MEMORY_UPDATED:"x_memory_updated",X_TEAM_MEMBER_UPDATE:"x_team_member_update",X_SOLO_STARTED:"x_solo_started",X_SOLO_AGENT_FINISHED:"x_solo_agent_finished",X_SOLO_SELECTED:"x_solo_selected",X_PRODUCT_TASK_STARTED:"x_product_task_started",X_PRODUCT_TASK_COMPLETED:"x_product_task_completed",X_PRODUCT_CHECKPOINT:"x_product_checkpoint"};function v(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&"id"in t}function M(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function h(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&"id"in t&&!("method"in t)}function z(e){let t;try{t=JSON.parse(e)}catch{return null}return h(t)||v(t)||M(t)?t:null}function J(e){return Object.values(I).includes(e)}function $(e){return e.startsWith("x_")}var f=["gatewayVersion","toolNamespaces","workspaceIds","installedCapabilities","enabledCapabilities","features","approvalMode","toolManifests","skillManifests","pluginManifests","mcpManifests","approvalPolicy","workspaceSummaries"];function d(e){return e?e.map(t=>({...t})):void 0}function A(e){return e?e.map(t=>({...t})):void 0}function Q(e){return e?[...e]:void 0}function k(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))].sort((t,r)=>t.localeCompare(r))}function g(e){return{...e,toolNamespaces:[...e.toolNamespaces],workspaceIds:[...e.workspaceIds],...e.changedSections?{changedSections:[...e.changedSections]}:{},...e.installedCapabilities?{installedCapabilities:[...e.installedCapabilities]}:{},...e.enabledCapabilities?{enabledCapabilities:[...e.enabledCapabilities]}:{},...e.features?{features:[...e.features]}:{},...e.toolManifests?{toolManifests:d(e.toolManifests)}:{},...e.skillManifests?{skillManifests:d(e.skillManifests)}:{},...e.pluginManifests?{pluginManifests:d(e.pluginManifests)}:{},...e.mcpManifests?{mcpManifests:d(e.mcpManifests)}:{},...e.approvalPolicy?{approvalPolicy:{...e.approvalPolicy}}:{},...e.workspaceSummaries?{workspaceSummaries:A(e.workspaceSummaries)}:{}}}function Z(e){let{previous:t,update:r}=e;return!(r.syncMode==="diff"&&t&&(!r.baseSnapshotVersion||t.snapshotVersion===r.baseSnapshotVersion))||!t?g(r):{...g(t),snapshotVersion:r.snapshotVersion,updatedAt:r.updatedAt,...r.gatewayVersion!==void 0?{gatewayVersion:r.gatewayVersion}:{},...r.syncMode?{syncMode:r.syncMode}:{},...r.baseSnapshotVersion?{baseSnapshotVersion:r.baseSnapshotVersion}:{},...r.changedSections?{changedSections:[...r.changedSections]}:{},...r.toolNamespaces?{toolNamespaces:[...r.toolNamespaces]}:{},...r.workspaceIds?{workspaceIds:[...r.workspaceIds]}:{},...r.installedCapabilities?{installedCapabilities:[...r.installedCapabilities]}:{},...r.enabledCapabilities?{enabledCapabilities:[...r.enabledCapabilities]}:{},...r.features?{features:[...r.features]}:{},...r.approvalMode?{approvalMode:r.approvalMode}:{},...r.toolManifests?{toolManifests:d(r.toolManifests)}:{},...r.skillManifests?{skillManifests:d(r.skillManifests)}:{},...r.pluginManifests?{pluginManifests:d(r.pluginManifests)}:{},...r.mcpManifests?{mcpManifests:d(r.mcpManifests)}:{},...r.approvalPolicy?{approvalPolicy:{...r.approvalPolicy}}:{},...r.workspaceSummaries?{workspaceSummaries:A(r.workspaceSummaries)}:{}}}function ee(e){return k(e.map(t=>t.name.split(".")[0]??"").filter(Boolean))}function te(e){return k(e.map(t=>t.id))}function re(e){let{previous:t,current:r}=e;if(!t)return{...g(r),syncMode:"full"};if(t.snapshotVersion===r.snapshotVersion)return null;let i=f.filter(n=>JSON.stringify(t[n])!==JSON.stringify(r[n]));if(i.length===f.length)return{...g(r),syncMode:"full"};let u={snapshotVersion:r.snapshotVersion,updatedAt:r.updatedAt,syncMode:"diff",baseSnapshotVersion:t.snapshotVersion,changedSections:i,toolNamespaces:[...r.toolNamespaces],workspaceIds:[...r.workspaceIds]},p=u;for(let n of i){let o=r[n];if(o!==void 0)switch(n){case"toolNamespaces":case"workspaceIds":case"installedCapabilities":case"enabledCapabilities":case"features":p[n]=Q(o);break;case"approvalPolicy":p[n]={...o};break;case"workspaceSummaries":p[n]=A(o);break;case"toolManifests":case"skillManifests":case"pluginManifests":case"mcpManifests":p[n]=d(o);break;default:p[n]=o;break}}return u}var oe=["web_search","web_fetch","deep_research","browser_execution"],ie=["web-intelligence","browser-execution"],ne=["discovery","read-url","multi-source-research","interactive-browser"],se=["stateless","render-backend","interactive-session"],ae=["stateless","stateless-single-step","stateful-session-required"],pe=["required","conditional","none"],ce=["browser-read","browser-authenticated-read","browser-state-changing"],le=["read-page","read-authenticated-page","fill-form","submit-form","download-file","reuse-session"],de=["web_search","web_fetch","deep_research","blocked"],ue=["requires-interaction","requires-login-state","requires-rendered-dom","requires-persistent-session","requires-state-changing-action"],ge=["none","same-capability-once","degrade-only"];var ye=["prefetch","sync_turn","on_pre_compress","on_session_end","on_delegation","on_memory_write"],me=["turn","sidechain","compress","session-end","agent-remember","auto-extract","implicit-extract","profile-extraction","dream"],fe=["observe-only","parent-write","deny"];var Ae=2,s={gatewayImage:"gateway.image.desktop-slim",whisperModelTiny:"speech.whisper.model.tiny",ffmpegWin32X64:"runtime.ffmpeg.win32-x64",nodeWin32X64:"runtime.node.win32-x64",dockerDesktopWin32X64:"runtime.docker-desktop.win32-x64",dockerDesktopDarwinX64:"runtime.docker-desktop.darwin-x64",dockerDesktopDarwinArm64:"runtime.docker-desktop.darwin-arm64"},y={desktopDockerBridge:"desktop.docker-bridge",desktopEmbeddedWin32X64:"desktop.embedded.win32-x64"};function O(e){return{...e,artifacts:e.artifacts.map(t=>({...t}))}}function Re(e){return{...e,assetIds:[...e.assetIds]}}function N(){return{[y.desktopDockerBridge]:{id:y.desktopDockerBridge,title:"Desktop Docker Bridge",platform:"any",assetIds:[s.gatewayImage,s.dockerDesktopWin32X64,s.dockerDesktopDarwinX64,s.dockerDesktopDarwinArm64],description:"Docker bridge mode downloads the desktop slim gateway image on demand."},[y.desktopEmbeddedWin32X64]:{id:y.desktopEmbeddedWin32X64,title:"Desktop Embedded Win32 x64",platform:"win32-x64",assetIds:[s.nodeWin32X64,s.ffmpegWin32X64,s.whisperModelTiny],description:"Embedded desktop mode requires the bundled Node/FFmpeg runtimes and the whisper model asset."}}}function D(e,t){return e.assets[t]}function w(e,t){return e.profiles[t]}function Ee(e,t){let r=w(e,t);return r?r.assetIds.map(i=>D(e,i)).filter(i=>!!i):[]}function Se(e,t){return e.assets[t.id]=O(t),U(e)}function R(e){if(!e)return;let t=e.artifacts[0];if(!(!t?.url||!t.sha256||typeof t.size!="number"))return{version:e.version,sha256:t.sha256,size:t.size,url:t.url}}function U(e){let t=R(e.assets[s.gatewayImage]),r=R(e.assets[s.whisperModelTiny]);return{...e,gateway:t,whisperModel:r}}function x(e,t){if(!(typeof e.version!="string"||typeof e.url!="string"))return{...t,version:e.version,artifacts:[{fileName:e.url.split("/").pop()||`${t.id}.bin`,url:e.url,sha256:typeof e.sha256=="string"?e.sha256:void 0,size:typeof e.size=="number"?e.size:void 0}]}}function _e(e){let t=e&&typeof e=="object"?e:{},r={},i=t.assets&&typeof t.assets=="object"?t.assets:{};for(let[o,a]of Object.entries(i)){if(!a||typeof a!="object")continue;let l=a;!l.id||!Array.isArray(l.artifacts)||(r[o]=O(l))}if(!r[s.gatewayImage]&&t.gateway&&typeof t.gateway=="object"){let o=x(t.gateway,{id:s.gatewayImage,title:"OpenClaw Gateway Image (Desktop Slim)",kind:"container-image",delivery:"remote",platform:"any",description:"Desktop Docker mode gateway image."});o&&(r[o.id]=o)}if(!r[s.whisperModelTiny]&&t.whisperModel&&typeof t.whisperModel=="object"){let o=x(t.whisperModel,{id:s.whisperModelTiny,title:"Whisper Tiny Model",kind:"model",delivery:"remote",platform:"any",description:"Shared whisper.cpp tiny model asset for embedded desktop speech recognition."});o&&(r[o.id]=o)}let p={...N()},n=t.profiles&&typeof t.profiles=="object"?t.profiles:{};for(let[o,a]of Object.entries(n)){if(!a||typeof a!="object")continue;let l=a;!l.id||!Array.isArray(l.assetIds)||(p[o]=Re(l))}return U({schemaVersion:typeof t.schemaVersion=="number"?t.schemaVersion:2,channel:typeof t.channel=="string"?t.channel:void 0,publishedAt:typeof t.publishedAt=="string"?t.publishedAt:void 0,minElectronVersion:typeof t.minElectronVersion=="string"?t.minElectronVersion:void 0,releaseNotes:typeof t.releaseNotes=="string"?t.releaseNotes:void 0,assets:r,profiles:p})}var Pe=["pending","captured","failed","restored"],Te=["file","directory","missing"],Ce=["metadata-only","workspace-copy","shadow-git"];var be=["api-key","oauth","token","aws-sdk"],Ie=["rate_limit","auth","server_error","timeout","network","unknown"],ve=["requiresOpenAiAnthropicToolPayload"];function Me(e,t){return!e||typeof e!="object"||Array.isArray(e)?!1:e[t]===!0}var L="openai-codex";function m(e){let t=e.trim().toLowerCase();return t==="z.ai"||t==="z-ai"?"zai":t==="opencode-zen"?"opencode":t==="kimi-code"?"kimi-coding":t==="bedrock"||t==="aws-bedrock"?"amazon-bedrock":t==="bytedance"||t==="doubao"?"volcengine":t}function K(e){let t=m(e);return t==="volcengine-plan"?"volcengine":t==="byteplus-plan"?"byteplus":t}var he=K,ke={anthropicToolSchemaMode:"native",anthropicToolChoiceMode:"native",providerFamily:"default",preserveAnthropicThinkingSignatures:!0,openAiCompatTurnValidation:!0,providerThoughtSignatureSanitization:!1,transcriptToolCallIdMode:"default",transcriptToolCallIdModelHints:[],providerThoughtSignatureModelHints:[],dropThinkingBlockModelHints:[]},xe={anthropic:{providerFamily:"anthropic"},"amazon-bedrock":{providerFamily:"anthropic"},"kimi-coding":{anthropicToolSchemaMode:"openai-functions",anthropicToolChoiceMode:"openai-string-modes",preserveAnthropicThinkingSignatures:!1},mistral:{transcriptToolCallIdMode:"strict9",transcriptToolCallIdModelHints:["mistral","mixtral","codestral","pixtral","devstral","ministral","mistralai"]},openai:{providerFamily:"openai"},[L]:{providerFamily:"openai"},openrouter:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},opencode:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},kilocode:{providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]}};function E(e,t){let r=(e??"").toLowerCase();return!!r&&t.some(i=>r.includes(i))}function c(e){let t=m(e??"");return{...ke,...xe[t]}}function Oe(e){return c(e).preserveAnthropicThinkingSignatures}function Ne(e){let t=c(e);return t.anthropicToolSchemaMode!=="native"||t.anthropicToolChoiceMode!=="native"}function De(e){return c(e).anthropicToolSchemaMode==="openai-functions"}function we(e){return c(e).anthropicToolChoiceMode==="openai-string-modes"}function Ue(e){return c(e).openAiCompatTurnValidation}function Le(e){return c(e).providerFamily==="openai"}function Ke(e){return c(e).providerFamily==="anthropic"}function Ve(e){return E(e.modelId,c(e.provider).dropThinkingBlockModelHints)}function We(e){let t=c(e.provider);return t.providerThoughtSignatureSanitization&&E(e.modelId,t.providerThoughtSignatureModelHints)}function Fe(e,t){let r=c(e),i=r.transcriptToolCallIdMode;if(i==="strict9")return i;if(E(t,r.transcriptToolCallIdModelHints))return"strict9"}var S={anthropic:["ANTHROPIC_OAUTH_TOKEN","ANTHROPIC_API_KEY"],chutes:["CHUTES_OAUTH_TOKEN","CHUTES_API_KEY"],zai:["ZAI_API_KEY","Z_AI_API_KEY"],opencode:["OPENCODE_API_KEY","OPENCODE_ZEN_API_KEY"],volcengine:["VOLCANO_ENGINE_API_KEY"],"volcengine-plan":["VOLCANO_ENGINE_API_KEY"],byteplus:["BYTEPLUS_API_KEY"],"byteplus-plan":["BYTEPLUS_API_KEY"],"kimi-coding":["KIMI_API_KEY","KIMICODE_API_KEY"],huggingface:["HUGGINGFACE_HUB_TOKEN","HF_TOKEN"],openai:["OPENAI_API_KEY"],voyage:["VOYAGE_API_KEY"],groq:["GROQ_API_KEY"],deepgram:["DEEPGRAM_API_KEY"],cerebras:["CEREBRAS_API_KEY"],xai:["XAI_API_KEY"],openrouter:["OPENROUTER_API_KEY"],litellm:["LITELLM_API_KEY"],"vercel-ai-gateway":["AI_GATEWAY_API_KEY"],"cloudflare-ai-gateway":["CLOUDFLARE_AI_GATEWAY_API_KEY"],moonshot:["MOONSHOT_API_KEY"],minimax:["MINIMAX_API_KEY"],"minimax-cn":["MINIMAX_CN_API_KEY","MINIMAX_API_KEY"],nvidia:["NVIDIA_API_KEY"],xiaomi:["XIAOMI_API_KEY"],synthetic:["SYNTHETIC_API_KEY"],venice:["VENICE_API_KEY"],mistral:["MISTRAL_API_KEY"],together:["TOGETHER_API_KEY"],qianfan:["QIANFAN_API_KEY"],ollama:["OLLAMA_API_KEY"],vllm:["VLLM_API_KEY"],kilocode:["KILOCODE_API_KEY"]};function Be(){return[...new Set(Object.values(S).flat())]}function je(e){let t=m(e.provider),r=e.env??process.env,i=new Set(e.appliedEnvKeys??[]),u=o=>{let a=r[o]?.trim();if(!a)return null;let l=i.has(o)?`shell env: ${o}`:`env: ${o}`;return{apiKey:a,source:l}},p=e.resolveSpecialApiKey?.(t,r,i);if(p)return p;let n=S[t];if(!n||n.length===0)return null;for(let o of n){let a=u(o);if(a)return a}return null}export{G as ACP_EXTENDED_METHODS,q as ACP_EXTENDED_SESSION_UPDATE_TYPES,H as ACP_METHODS,X as ACP_PROTOCOL_VERSION,I as ACP_SESSION_UPDATE_TYPES,F as AGENT_RPC_APPROVAL_METHODS,W as AGENT_RPC_ERROR_CODES,V as AGENT_RPC_PROTOCOL_VERSION,b as AGENT_TEAM_WS_EVENT_NAMES,C as AGENT_WS_EVENT_NAMES,Y as ALL_AGENT_WS_EVENT_NAMES,f as CAPABILITY_MANIFEST_DIFF_SECTIONS,j as GATEWAY_RPC_METHODS,ye as MEMORY_OBSERVATION_HOOK_VALUES,me as MEMORY_OBSERVATION_SOURCE_VALUES,fe as MEMORY_WRITE_ACCESS_VALUES,Ce as MUTATION_CHECKPOINT_BACKEND_VALUES,Te as MUTATION_CHECKPOINT_ENTRY_KIND_VALUES,Pe as MUTATION_CHECKPOINT_PHASE_VALUES,be as PROVIDER_RUNTIME_AUTH_MODE_VALUES,ve as PROVIDER_RUNTIME_COMPAT_FLAG_VALUES,S as PROVIDER_RUNTIME_ENV_API_KEY_CANDIDATES,L as PROVIDER_RUNTIME_OPENAI_CODEX_PROVIDER_ID,Ie as PROVIDER_RUNTIME_VAULT_ERROR_TYPE_VALUES,Ae as RESOURCE_MANIFEST_SCHEMA_VERSION,s as RUNTIME_ASSET_IDS,y as RUNTIME_PROFILE_IDS,le as WEB_ACTION_SCOPE_VALUES,pe as WEB_APPROVAL_DEFAULT_VALUES,ie as WEB_CAPABILITY_FAMILY_VALUES,oe as WEB_CAPABILITY_ID_VALUES,de as WEB_DEGRADATION_TARGET_VALUES,ue as WEB_ESCALATION_REASON_VALUES,se as WEB_EXECUTION_MODE_VALUES,ce as WEB_POLICY_RISK_CLASS_VALUES,ge as WEB_RETRY_POLICY_VALUES,ae as WEB_STATEFULNESS_VALUES,ne as WEB_TASK_MODE_VALUES,g as cloneCapabilityManifestSnapshot,re as createCapabilityManifestDiffPayload,N as createDefaultRuntimeResourceProfiles,ee as deriveCapabilityToolNamespaces,te as deriveCapabilityWorkspaceIds,R as getManifestShortcutEntry,D as getRuntimeResourceAsset,w as getRuntimeResourceProfile,Ee as getRuntimeResourceProfileAssets,M as isAcpJsonRpcNotification,v as isAcpJsonRpcRequest,h as isAcpJsonRpcResponse,T as isAgentRpcNotification,_ as isAgentRpcRequest,P as isAgentRpcResponse,Ke as isAnthropicProviderRuntimeFamily,$ as isExtendedSessionUpdateType,Le as isOpenAiProviderRuntimeFamily,J as isStandardSessionUpdateType,Be as listProviderRuntimeEnvApiKeyNames,Z as mergeCapabilityManifestSnapshot,m as normalizeProviderRuntimeId,K as normalizeProviderRuntimeIdForAuth,_e as normalizeRuntimeResourceManifest,z as parseAcpMessage,B as parseAgentRpcMessage,Oe as preservesProviderRuntimeAnthropicThinkingSignatures,Me as readProviderRuntimeCompatFlag,Ne as requiresOpenAiCompatibleAnthropicToolPayloadForProviderRuntime,c as resolveProviderRuntimeCapabilities,je as resolveProviderRuntimeEnvApiKey,he as resolveProviderRuntimeKeyFamily,Fe as resolveProviderRuntimeTranscriptToolCallIdMode,Ve as shouldDropThinkingBlocksForProviderRuntimeModel,We as shouldSanitizeProviderRuntimeThoughtSignaturesForModel,Ue as supportsOpenAiCompatTurnValidationForProviderRuntime,Se as upsertRuntimeResourceAsset,De as usesOpenAiFunctionAnthropicToolSchemaForProviderRuntime,we as usesOpenAiStringModeAnthropicToolChoiceForProviderRuntime};
1
+ var q="1.0.0",d={PARSE_ERROR:-32700,INVALID_REQUEST:-32600,METHOD_NOT_FOUND:-32601,INVALID_PARAMS:-32602,INTERNAL_ERROR:-32603,TURN_ABORTED:-32e3,TURN_TIMEOUT:-32001,LLM_ERROR:-32010,LLM_AUTH_ERROR:-32011,LLM_RATE_LIMIT:-32012,LLM_QUOTA_EXHAUSTED:-32013,LLM_MODEL_NOT_FOUND:-32014,TOOL_INVOKE_FAILED:-32020,TOOL_TIMEOUT:-32021,PROTOCOL_MISMATCH:-32030,REQUEST_DEADLINE_EXCEEDED:-32040,REQUEST_CANCELLED:-32041,REQUEST_DEDUPED:-32042,REQUEST_IDEMPOTENCY_REQUIRED:-32043},Y={REQUEST:"tool.approval.request",RESPONSE:"tool.approval.response"};function b(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&t.method.length>0}function C(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&(typeof t.id=="string"||typeof t.id=="number")&&!("method"in t)}function I(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function X(e){let t;try{t=JSON.parse(e)}catch{return null}return C(t)||b(t)||I(t)?t:null}import{randomUUID as H}from"node:crypto";var G=["settings.list","settings.get","settings.validate","provider.list","config.get","config.tunables","tools.list","todos.list","tasks.list","agents.list","agents.get","agents.processes","agents.scan","session.list","session.get","session.resolve","thread.list","project.list","files.list","files.gitStatus","instructions.list","instructions.read","skills.list","skills.stats","memory.atlas","memory.activity","memory.list","memory.read","memory.search","media.listModels","media.status","pet.status","agent.health","agent.metrics"],z=new Set(["thread.turn","memory.dream","memory.ingest","media.stt","pet.forge","solo.start","solo.evaluate","product.plan","product.create","product.message"]),J=["memory.","pet.","usage."],Q=new Set(["memory.atlas","memory.activity","memory.list","memory.read","memory.search","pet.status"]);function f(e){return z.has(e)?{channel:"task",mutability:"write",defaultTimeoutMs:e==="thread.turn"?3e5:12e4}:G.some(t=>e===t||e.startsWith(`${t}.`)||e.startsWith(t))?{channel:"query",mutability:"read",defaultTimeoutMs:1e4}:{channel:"task",mutability:"write",defaultTimeoutMs:3e4}}function h(e){return Q.has(e)||f(e).mutability==="read"?!1:J.some(t=>e.startsWith(t))}function $(e,t={}){let r=t.now??Date.now(),o=f(e),i=t.timeoutMs??o.defaultTimeoutMs;return{requestId:t.requestId??H(),createdAt:r,deadlineAt:r+i,channel:t.channel??o.channel,idempotencyKey:t.idempotencyKey,traceId:t.traceId}}function v(e,t=Date.now()){let r=e.meta;if(!r||typeof r!="object")return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta is required."}};if(typeof r.requestId!="string"||r.requestId.length===0)return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.requestId is required."}};if(r.channel!=="query"&&r.channel!=="task")return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.channel must be query or task."}};if(typeof r.createdAt!="number"||!Number.isFinite(r.createdAt))return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.createdAt is required."}};if(typeof r.deadlineAt!="number"||!Number.isFinite(r.deadlineAt))return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.deadlineAt is required."}};if(r.deadlineAt<=t)return{ok:!1,error:{code:d.REQUEST_DEADLINE_EXCEEDED,message:"RPC request deadline has already expired."}};let o=f(e.method).channel;return r.channel!==o?{ok:!1,error:{code:d.INVALID_REQUEST,message:`RPC request channel mismatch: expected ${o}, got ${r.channel}.`}}:h(e.method)&&(typeof r.idempotencyKey!="string"||r.idempotencyKey.length===0)?{ok:!1,error:{code:d.REQUEST_IDEMPOTENCY_REQUIRED,message:`RPC method ${e.method} requires meta.idempotencyKey.`}}:{ok:!0,meta:r}}var R=class{now;active=new Map;idempotency=new Map;counters={completedRequests:0,cancelledRequests:0,deadlineExceededRequests:0,dedupedRequests:0,lateResponsesDropped:0,invalidRequests:0};constructor(t={}){this.now=t.now??(()=>Date.now())}begin(t,r){let o=v({method:t,meta:r},this.now());if(!o.ok)return this.counters.invalidRequests+=1,{status:"rejected",error:o.error};if(r.idempotencyKey){let i=this.idempotency.get(r.idempotencyKey);if(i)return this.counters.dedupedRequests+=1,i.error?{status:"deduped",error:i.error}:{status:"deduped",result:i.result}}return this.active.set(r.requestId,{method:t,meta:r,cancelled:!1,startedAt:this.now()}),{status:"started"}}cancel(t,r="cancelled"){let o=this.active.get(t);return!o||o.cancelled?!1:(o.cancelled=!0,o.cancelReason=r,this.counters.cancelledRequests+=1,!0)}expire(t){return this.active.get(t)?(this.active.delete(t),this.counters.deadlineExceededRequests+=1,!0):!1}settle(t,r,o){let i=this.active.get(t);return i?(this.active.delete(t),i.cancelled?(this.counters.lateResponsesDropped+=1,{accepted:!1,reason:"cancelled"}):i.meta.deadlineAt<=this.now()?(this.counters.deadlineExceededRequests+=1,this.counters.lateResponsesDropped+=1,{accepted:!1,reason:"deadline_exceeded"}):(this.counters.completedRequests+=1,i.meta.idempotencyKey&&this.idempotency.set(i.meta.idempotencyKey,{result:r,error:o,settledAt:this.now()}),{accepted:!0})):{accepted:!1,reason:"unknown"}}metrics(){return{activeRequests:this.active.size,...this.counters}}};var Z=["agent.health","agent.metrics","agent.cancel","session.list","session.get","session.create","session.update","session.delete","session.deleteAll","session.archive","session.moveToProject","session.getState","session.switchProject","session.getMessages","project.list","project.create","project.delete","project.rename","project.archive","project.unarchive","project.update","project.archiveByGroup","project.purgeAll","instructions.list","instructions.read","instructions.write","instructions.delete","files.list","files.read","files.create","files.rename","files.delete","files.gitStatus","skills.list","memory.list-files","memory.atlas","memory.activity","memory.ingest","memory.commit","memory.addManual","memory.update"];var M=["turn.start","turn.delta","turn.end","turn.error","turn.recovery","turn.tool_call","turn.tool_result","turn.tool_blocked","turn.reasoning_delta","turn.approval_request","turn.skill_instruction","turn.ask_user","turn.media_result","turn.media_progress","turn.plan_update","turn.suggestions","turn.sidechain_started","turn.subagent_delta","turn.sidechain_completed","turn.task_updated","turn.todos_updated","turn.exec_progress","turn.usage_update","team.member.notification","session.info","memory.updated","skills.updated","pet.soul_ready","pet.reaction","pet.growth","pet.state","pet.confirm","pet.forged","system.activity"],k=["solo.progress","solo.agentDelta","solo.agentUsage","solo.agentDiff","solo.evaluation","product.taskStarted","product.taskOutput","product.taskCompleted","product.taskFailed","product.budgetUpdate","product.checkpointed","product.dagTopology","plan.interrupted"],ee=[...M,...k];var te=1,re={INITIALIZE:"initialize",SESSION_NEW:"session/new",SESSION_PROMPT:"session/prompt",SESSION_END:"session/end",SESSION_SET_CONFIG:"session/set_config_option",SESSION_SET_MODEL:"session/set_model",SESSION_SET_MODE:"session/set_mode",SESSION_UPDATE:"session/update",SESSION_REQUEST_PERMISSION:"session/request_permission",FS_READ_TEXT_FILE:"fs/read_text_file",FS_WRITE_TEXT_FILE:"fs/write_text_file"},oe={ABORT:"x/abort",DREAM:"x/dream",AGENTS_LIST:"x/agents.list",SOLO_START:"x/solo.start",SOLO_STATUS:"x/solo.status",SOLO_SELECT:"x/solo.select",SOLO_CANCEL:"x/solo.cancel",PRODUCT_CREATE:"x/product.create",PRODUCT_PLAN:"x/product.plan",PRODUCT_CONFIRM:"x/product.confirm",PRODUCT_MESSAGE:"x/product.message",PRODUCT_RESUME:"x/product.resume",PRODUCT_PAUSE:"x/product.pause",PRODUCT_CANCEL:"x/product.cancel",PRODUCT_ROLLBACK:"x/product.rollback",PRODUCT_STATUS:"x/product.status",SOLO_SUBSCRIBE:"x/solo.subscribe",SOLO_MESSAGE:"x/solo.message",SOLO_EVALUATE:"x/solo.evaluate",PRODUCT_SUBSCRIBE:"x/product.subscribe",TEAM_DELEGATE:"x/team.delegate"},x={AGENT_MESSAGE_CHUNK:"agent_message_chunk",AGENT_THOUGHT_CHUNK:"agent_thought_chunk",TOOL_CALL:"tool_call",TOOL_CALL_UPDATE:"tool_call_update",PLAN:"plan",USAGE_UPDATE:"usage_update",CONFIG_OPTION_UPDATE:"config_option_update",SESSION_INFO_UPDATE:"session_info_update",AVAILABLE_COMMANDS_UPDATE:"available_commands_update"},ne={X_SUBAGENT_STARTED:"x_subagent_started",X_SUBAGENT_DELTA:"x_subagent_delta",X_SUBAGENT_ENDED:"x_subagent_ended",X_MEDIA_RESULT:"x_media_result",X_MEDIA_PROGRESS:"x_media_progress",X_SKILL_INSTRUCTION:"x_skill_instruction",X_RECOVERY:"x_recovery",X_SIDECHAIN_STARTED:"x_sidechain_started",X_SIDECHAIN_COMPLETED:"x_sidechain_completed",X_SUGGESTIONS:"x_suggestions",X_ASK_USER:"x_ask_user",X_SESSION_INFO:"x_session_info",X_MEMORY_UPDATED:"x_memory_updated",X_TEAM_MEMBER_UPDATE:"x_team_member_update",X_SOLO_STARTED:"x_solo_started",X_SOLO_AGENT_FINISHED:"x_solo_agent_finished",X_SOLO_SELECTED:"x_solo_selected",X_PRODUCT_TASK_STARTED:"x_product_task_started",X_PRODUCT_TASK_COMPLETED:"x_product_task_completed",X_PRODUCT_CHECKPOINT:"x_product_checkpoint"};function O(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&"id"in t}function N(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function D(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&"id"in t&&!("method"in t)}function ie(e){let t;try{t=JSON.parse(e)}catch{return null}return D(t)||O(t)||N(t)?t:null}function se(e){return Object.values(x).includes(e)}function ae(e){return e.startsWith("x_")}var E=["gatewayVersion","toolNamespaces","workspaceIds","installedCapabilities","enabledCapabilities","features","approvalMode","toolManifests","skillManifests","pluginManifests","mcpManifests","approvalPolicy","workspaceSummaries"];function g(e){return e?e.map(t=>({...t})):void 0}function _(e){return e?e.map(t=>({...t})):void 0}function pe(e){return e?[...e]:void 0}function w(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))].sort((t,r)=>t.localeCompare(r))}function y(e){return{...e,toolNamespaces:[...e.toolNamespaces],workspaceIds:[...e.workspaceIds],...e.changedSections?{changedSections:[...e.changedSections]}:{},...e.installedCapabilities?{installedCapabilities:[...e.installedCapabilities]}:{},...e.enabledCapabilities?{enabledCapabilities:[...e.enabledCapabilities]}:{},...e.features?{features:[...e.features]}:{},...e.toolManifests?{toolManifests:g(e.toolManifests)}:{},...e.skillManifests?{skillManifests:g(e.skillManifests)}:{},...e.pluginManifests?{pluginManifests:g(e.pluginManifests)}:{},...e.mcpManifests?{mcpManifests:g(e.mcpManifests)}:{},...e.approvalPolicy?{approvalPolicy:{...e.approvalPolicy}}:{},...e.workspaceSummaries?{workspaceSummaries:_(e.workspaceSummaries)}:{}}}function ce(e){let{previous:t,update:r}=e;return!(r.syncMode==="diff"&&t&&(!r.baseSnapshotVersion||t.snapshotVersion===r.baseSnapshotVersion))||!t?y(r):{...y(t),snapshotVersion:r.snapshotVersion,updatedAt:r.updatedAt,...r.gatewayVersion!==void 0?{gatewayVersion:r.gatewayVersion}:{},...r.syncMode?{syncMode:r.syncMode}:{},...r.baseSnapshotVersion?{baseSnapshotVersion:r.baseSnapshotVersion}:{},...r.changedSections?{changedSections:[...r.changedSections]}:{},...r.toolNamespaces?{toolNamespaces:[...r.toolNamespaces]}:{},...r.workspaceIds?{workspaceIds:[...r.workspaceIds]}:{},...r.installedCapabilities?{installedCapabilities:[...r.installedCapabilities]}:{},...r.enabledCapabilities?{enabledCapabilities:[...r.enabledCapabilities]}:{},...r.features?{features:[...r.features]}:{},...r.approvalMode?{approvalMode:r.approvalMode}:{},...r.toolManifests?{toolManifests:g(r.toolManifests)}:{},...r.skillManifests?{skillManifests:g(r.skillManifests)}:{},...r.pluginManifests?{pluginManifests:g(r.pluginManifests)}:{},...r.mcpManifests?{mcpManifests:g(r.mcpManifests)}:{},...r.approvalPolicy?{approvalPolicy:{...r.approvalPolicy}}:{},...r.workspaceSummaries?{workspaceSummaries:_(r.workspaceSummaries)}:{}}}function le(e){return w(e.map(t=>t.name.split(".")[0]??"").filter(Boolean))}function de(e){return w(e.map(t=>t.id))}function ue(e){let{previous:t,current:r}=e;if(!t)return{...y(r),syncMode:"full"};if(t.snapshotVersion===r.snapshotVersion)return null;let o=E.filter(s=>JSON.stringify(t[s])!==JSON.stringify(r[s]));if(o.length===E.length)return{...y(r),syncMode:"full"};let i={snapshotVersion:r.snapshotVersion,updatedAt:r.updatedAt,syncMode:"diff",baseSnapshotVersion:t.snapshotVersion,changedSections:o,toolNamespaces:[...r.toolNamespaces],workspaceIds:[...r.workspaceIds]},c=i;for(let s of o){let n=r[s];if(n!==void 0)switch(s){case"toolNamespaces":case"workspaceIds":case"installedCapabilities":case"enabledCapabilities":case"features":c[s]=pe(n);break;case"approvalPolicy":c[s]={...n};break;case"workspaceSummaries":c[s]=_(n);break;case"toolManifests":case"skillManifests":case"pluginManifests":case"mcpManifests":c[s]=g(n);break;default:c[s]=n;break}}return i}var ge=["web_search","web_fetch","deep_research","browser_execution"],ye=["web-intelligence","browser-execution"],me=["discovery","read-url","multi-source-research","interactive-browser"],fe=["stateless","render-backend","interactive-session"],Ae=["stateless","stateless-single-step","stateful-session-required"],Re=["required","conditional","none"],Ee=["browser-read","browser-authenticated-read","browser-state-changing"],_e=["read-page","read-authenticated-page","fill-form","submit-form","download-file","reuse-session"],Se=["web_search","web_fetch","deep_research","blocked"],Te=["requires-interaction","requires-login-state","requires-rendered-dom","requires-persistent-session","requires-state-changing-action"],Pe=["none","same-capability-once","degrade-only"];var be=["prefetch","sync_turn","on_pre_compress","on_session_end","on_delegation","on_memory_write"],Ce=["turn","sidechain","compress","session-end","agent-remember","auto-extract","implicit-extract","profile-extraction","dream"],Ie=["observe-only","parent-write","deny"];var he=2,a={gatewayImage:"gateway.image.desktop-slim",whisperModelTiny:"speech.whisper.model.tiny",ffmpegWin32X64:"runtime.ffmpeg.win32-x64",nodeWin32X64:"runtime.node.win32-x64",dockerDesktopWin32X64:"runtime.docker-desktop.win32-x64",dockerDesktopDarwinX64:"runtime.docker-desktop.darwin-x64",dockerDesktopDarwinArm64:"runtime.docker-desktop.darwin-arm64"},m={desktopDockerBridge:"desktop.docker-bridge",desktopEmbeddedWin32X64:"desktop.embedded.win32-x64"};function L(e){return{...e,artifacts:e.artifacts.map(t=>({...t}))}}function ve(e){return{...e,assetIds:[...e.assetIds]}}function K(){return{[m.desktopDockerBridge]:{id:m.desktopDockerBridge,title:"Desktop Docker Bridge",platform:"any",assetIds:[a.gatewayImage,a.dockerDesktopWin32X64,a.dockerDesktopDarwinX64,a.dockerDesktopDarwinArm64],description:"Docker bridge mode downloads the desktop slim gateway image on demand."},[m.desktopEmbeddedWin32X64]:{id:m.desktopEmbeddedWin32X64,title:"Desktop Embedded Win32 x64",platform:"win32-x64",assetIds:[a.nodeWin32X64,a.ffmpegWin32X64,a.whisperModelTiny],description:"Embedded desktop mode requires the bundled Node/FFmpeg runtimes and the whisper model asset."}}}function V(e,t){return e.assets[t]}function W(e,t){return e.profiles[t]}function Me(e,t){let r=W(e,t);return r?r.assetIds.map(o=>V(e,o)).filter(o=>!!o):[]}function ke(e,t){return e.assets[t.id]=L(t),F(e)}function S(e){if(!e)return;let t=e.artifacts[0];if(!(!t?.url||!t.sha256||typeof t.size!="number"))return{version:e.version,sha256:t.sha256,size:t.size,url:t.url}}function F(e){let t=S(e.assets[a.gatewayImage]),r=S(e.assets[a.whisperModelTiny]);return{...e,gateway:t,whisperModel:r}}function U(e,t){if(!(typeof e.version!="string"||typeof e.url!="string"))return{...t,version:e.version,artifacts:[{fileName:e.url.split("/").pop()||`${t.id}.bin`,url:e.url,sha256:typeof e.sha256=="string"?e.sha256:void 0,size:typeof e.size=="number"?e.size:void 0}]}}function xe(e){let t=e&&typeof e=="object"?e:{},r={},o=t.assets&&typeof t.assets=="object"?t.assets:{};for(let[n,p]of Object.entries(o)){if(!p||typeof p!="object")continue;let u=p;!u.id||!Array.isArray(u.artifacts)||(r[n]=L(u))}if(!r[a.gatewayImage]&&t.gateway&&typeof t.gateway=="object"){let n=U(t.gateway,{id:a.gatewayImage,title:"OpenClaw Gateway Image (Desktop Slim)",kind:"container-image",delivery:"remote",platform:"any",description:"Desktop Docker mode gateway image."});n&&(r[n.id]=n)}if(!r[a.whisperModelTiny]&&t.whisperModel&&typeof t.whisperModel=="object"){let n=U(t.whisperModel,{id:a.whisperModelTiny,title:"Whisper Tiny Model",kind:"model",delivery:"remote",platform:"any",description:"Shared whisper.cpp tiny model asset for embedded desktop speech recognition."});n&&(r[n.id]=n)}let c={...K()},s=t.profiles&&typeof t.profiles=="object"?t.profiles:{};for(let[n,p]of Object.entries(s)){if(!p||typeof p!="object")continue;let u=p;!u.id||!Array.isArray(u.assetIds)||(c[n]=ve(u))}return F({schemaVersion:typeof t.schemaVersion=="number"?t.schemaVersion:2,channel:typeof t.channel=="string"?t.channel:void 0,publishedAt:typeof t.publishedAt=="string"?t.publishedAt:void 0,minElectronVersion:typeof t.minElectronVersion=="string"?t.minElectronVersion:void 0,releaseNotes:typeof t.releaseNotes=="string"?t.releaseNotes:void 0,assets:r,profiles:c})}var Oe=["pending","captured","failed","restored"],Ne=["file","directory","missing"],De=["metadata-only","workspace-copy","shadow-git"];var we=["api-key","oauth","token","aws-sdk"],Ue=["rate_limit","auth","server_error","timeout","network","unknown"],Le=["requiresOpenAiAnthropicToolPayload"];function Ke(e,t){return!e||typeof e!="object"||Array.isArray(e)?!1:e[t]===!0}var B="openai-codex";function A(e){let t=e.trim().toLowerCase();return t==="z.ai"||t==="z-ai"?"zai":t==="opencode-zen"?"opencode":t==="kimi-code"?"kimi-coding":t==="bedrock"||t==="aws-bedrock"?"amazon-bedrock":t==="bytedance"||t==="doubao"?"volcengine":t}function j(e){let t=A(e);return t==="volcengine-plan"?"volcengine":t==="byteplus-plan"?"byteplus":t}var Ve=j,We={anthropicToolSchemaMode:"native",anthropicToolChoiceMode:"native",providerFamily:"default",preserveAnthropicThinkingSignatures:!0,openAiCompatTurnValidation:!0,providerThoughtSignatureSanitization:!1,transcriptToolCallIdMode:"default",transcriptToolCallIdModelHints:[],providerThoughtSignatureModelHints:[],dropThinkingBlockModelHints:[]},Fe={anthropic:{providerFamily:"anthropic"},"amazon-bedrock":{providerFamily:"anthropic"},"kimi-coding":{anthropicToolSchemaMode:"openai-functions",anthropicToolChoiceMode:"openai-string-modes",preserveAnthropicThinkingSignatures:!1},mistral:{transcriptToolCallIdMode:"strict9",transcriptToolCallIdModelHints:["mistral","mixtral","codestral","pixtral","devstral","ministral","mistralai"]},openai:{providerFamily:"openai"},[B]:{providerFamily:"openai"},openrouter:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},opencode:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},kilocode:{providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]}};function T(e,t){let r=(e??"").toLowerCase();return!!r&&t.some(o=>r.includes(o))}function l(e){let t=A(e??"");return{...We,...Fe[t]}}function Be(e){return l(e).preserveAnthropicThinkingSignatures}function je(e){let t=l(e);return t.anthropicToolSchemaMode!=="native"||t.anthropicToolChoiceMode!=="native"}function qe(e){return l(e).anthropicToolSchemaMode==="openai-functions"}function Ye(e){return l(e).anthropicToolChoiceMode==="openai-string-modes"}function Xe(e){return l(e).openAiCompatTurnValidation}function He(e){return l(e).providerFamily==="openai"}function Ge(e){return l(e).providerFamily==="anthropic"}function ze(e){return T(e.modelId,l(e.provider).dropThinkingBlockModelHints)}function Je(e){let t=l(e.provider);return t.providerThoughtSignatureSanitization&&T(e.modelId,t.providerThoughtSignatureModelHints)}function Qe(e,t){let r=l(e),o=r.transcriptToolCallIdMode;if(o==="strict9")return o;if(T(t,r.transcriptToolCallIdModelHints))return"strict9"}var P={anthropic:["ANTHROPIC_OAUTH_TOKEN","ANTHROPIC_API_KEY"],chutes:["CHUTES_OAUTH_TOKEN","CHUTES_API_KEY"],zai:["ZAI_API_KEY","Z_AI_API_KEY"],opencode:["OPENCODE_API_KEY","OPENCODE_ZEN_API_KEY"],volcengine:["VOLCANO_ENGINE_API_KEY"],"volcengine-plan":["VOLCANO_ENGINE_API_KEY"],byteplus:["BYTEPLUS_API_KEY"],"byteplus-plan":["BYTEPLUS_API_KEY"],"kimi-coding":["KIMI_API_KEY","KIMICODE_API_KEY"],huggingface:["HUGGINGFACE_HUB_TOKEN","HF_TOKEN"],openai:["OPENAI_API_KEY"],voyage:["VOYAGE_API_KEY"],groq:["GROQ_API_KEY"],deepgram:["DEEPGRAM_API_KEY"],cerebras:["CEREBRAS_API_KEY"],xai:["XAI_API_KEY"],openrouter:["OPENROUTER_API_KEY"],litellm:["LITELLM_API_KEY"],"vercel-ai-gateway":["AI_GATEWAY_API_KEY"],"cloudflare-ai-gateway":["CLOUDFLARE_AI_GATEWAY_API_KEY"],moonshot:["MOONSHOT_API_KEY"],minimax:["MINIMAX_API_KEY"],"minimax-cn":["MINIMAX_CN_API_KEY","MINIMAX_API_KEY"],nvidia:["NVIDIA_API_KEY"],xiaomi:["XIAOMI_API_KEY"],synthetic:["SYNTHETIC_API_KEY"],venice:["VENICE_API_KEY"],mistral:["MISTRAL_API_KEY"],together:["TOGETHER_API_KEY"],qianfan:["QIANFAN_API_KEY"],ollama:["OLLAMA_API_KEY"],vllm:["VLLM_API_KEY"],kilocode:["KILOCODE_API_KEY"]};function $e(){return[...new Set(Object.values(P).flat())]}function Ze(e){let t=A(e.provider),r=e.env??process.env,o=new Set(e.appliedEnvKeys??[]),i=n=>{let p=r[n]?.trim();if(!p)return null;let u=o.has(n)?`shell env: ${n}`:`env: ${n}`;return{apiKey:p,source:u}},c=e.resolveSpecialApiKey?.(t,r,o);if(c)return c;let s=P[t];if(!s||s.length===0)return null;for(let n of s){let p=i(n);if(p)return p}return null}export{oe as ACP_EXTENDED_METHODS,ne as ACP_EXTENDED_SESSION_UPDATE_TYPES,re as ACP_METHODS,te as ACP_PROTOCOL_VERSION,x as ACP_SESSION_UPDATE_TYPES,Y as AGENT_RPC_APPROVAL_METHODS,d as AGENT_RPC_ERROR_CODES,q as AGENT_RPC_PROTOCOL_VERSION,k as AGENT_TEAM_WS_EVENT_NAMES,M as AGENT_WS_EVENT_NAMES,ee as ALL_AGENT_WS_EVENT_NAMES,E as CAPABILITY_MANIFEST_DIFF_SECTIONS,Z as GATEWAY_RPC_METHODS,R as GatewayRpcContract,be as MEMORY_OBSERVATION_HOOK_VALUES,Ce as MEMORY_OBSERVATION_SOURCE_VALUES,Ie as MEMORY_WRITE_ACCESS_VALUES,De as MUTATION_CHECKPOINT_BACKEND_VALUES,Ne as MUTATION_CHECKPOINT_ENTRY_KIND_VALUES,Oe as MUTATION_CHECKPOINT_PHASE_VALUES,we as PROVIDER_RUNTIME_AUTH_MODE_VALUES,Le as PROVIDER_RUNTIME_COMPAT_FLAG_VALUES,P as PROVIDER_RUNTIME_ENV_API_KEY_CANDIDATES,B as PROVIDER_RUNTIME_OPENAI_CODEX_PROVIDER_ID,Ue as PROVIDER_RUNTIME_VAULT_ERROR_TYPE_VALUES,he as RESOURCE_MANIFEST_SCHEMA_VERSION,a as RUNTIME_ASSET_IDS,m as RUNTIME_PROFILE_IDS,_e as WEB_ACTION_SCOPE_VALUES,Re as WEB_APPROVAL_DEFAULT_VALUES,ye as WEB_CAPABILITY_FAMILY_VALUES,ge as WEB_CAPABILITY_ID_VALUES,Se as WEB_DEGRADATION_TARGET_VALUES,Te as WEB_ESCALATION_REASON_VALUES,fe as WEB_EXECUTION_MODE_VALUES,Ee as WEB_POLICY_RISK_CLASS_VALUES,Pe as WEB_RETRY_POLICY_VALUES,Ae as WEB_STATEFULNESS_VALUES,me as WEB_TASK_MODE_VALUES,$ as buildAgentRpcMeta,f as classifyGatewayRpcMethod,y as cloneCapabilityManifestSnapshot,ue as createCapabilityManifestDiffPayload,K as createDefaultRuntimeResourceProfiles,le as deriveCapabilityToolNamespaces,de as deriveCapabilityWorkspaceIds,S as getManifestShortcutEntry,V as getRuntimeResourceAsset,W as getRuntimeResourceProfile,Me as getRuntimeResourceProfileAssets,N as isAcpJsonRpcNotification,O as isAcpJsonRpcRequest,D as isAcpJsonRpcResponse,I as isAgentRpcNotification,b as isAgentRpcRequest,C as isAgentRpcResponse,Ge as isAnthropicProviderRuntimeFamily,ae as isExtendedSessionUpdateType,He as isOpenAiProviderRuntimeFamily,se as isStandardSessionUpdateType,$e as listProviderRuntimeEnvApiKeyNames,ce as mergeCapabilityManifestSnapshot,A as normalizeProviderRuntimeId,j as normalizeProviderRuntimeIdForAuth,xe as normalizeRuntimeResourceManifest,ie as parseAcpMessage,X as parseAgentRpcMessage,Be as preservesProviderRuntimeAnthropicThinkingSignatures,Ke as readProviderRuntimeCompatFlag,v as requireGatewayRpcMeta,h as requiresIdempotencyKey,je as requiresOpenAiCompatibleAnthropicToolPayloadForProviderRuntime,l as resolveProviderRuntimeCapabilities,Ze as resolveProviderRuntimeEnvApiKey,Ve as resolveProviderRuntimeKeyFamily,Qe as resolveProviderRuntimeTranscriptToolCallIdMode,ze as shouldDropThinkingBlocksForProviderRuntimeModel,Je as shouldSanitizeProviderRuntimeThoughtSignaturesForModel,Xe as supportsOpenAiCompatTurnValidationForProviderRuntime,ke as upsertRuntimeResourceAsset,qe as usesOpenAiFunctionAnthropicToolSchemaForProviderRuntime,Ye as usesOpenAiStringModeAnthropicToolChoiceForProviderRuntime};
@@ -16,7 +16,10 @@ export declare function handleMemoryAtlas(this: any, msg: any): Promise<void>;
16
16
  */
17
17
  export declare function handleMemoryActivity(this: any, msg: any): Promise<void>;
18
18
  export declare function handleMemoryAddManual(this: any, msg: any): Promise<void>;
19
+ export declare function handleMemoryIngest(this: any, msg: any): Promise<void>;
20
+ export declare function handleMemoryCommit(this: any, msg: any): Promise<void>;
19
21
  export declare function handleMemoryRead(this: any, msg: any): Promise<void>;
20
22
  export declare function handleMemoryWrite(this: any, msg: any): Promise<void>;
21
23
  export declare function handleMemorySearch(this: any, msg: any): Promise<void>;
22
24
  export declare function handleMemoryDelete(this: any, msg: any): Promise<void>;
25
+ export declare function handleMemoryUpdate(this: any, msg: any): Promise<void>;
@@ -0,0 +1 @@
1
+ export {};
@@ -16,6 +16,10 @@ export interface StdioServerConfig {
16
16
  }
17
17
  export declare class StdioServer {
18
18
  private running;
19
+ private readonly startedAt;
20
+ private readonly rpcContract;
21
+ private readonly rpcIds;
22
+ private readonly rpcDeadlineTimers;
19
23
  private activeTurn;
20
24
  /** Resolves when the active turn fully completes (including post-abort flush). */
21
25
  private turnDone;
@@ -127,6 +131,9 @@ export declare class StdioServer {
127
131
  * If not found, create a new session and return it.
128
132
  */
129
133
  private handlePing;
134
+ private handleHealth;
135
+ private handleMetrics;
136
+ private handleCancel;
130
137
  private static readonly SUGGESTION_PROMPT;
131
138
  /**
132
139
  * Atomically resolve transport + model + apiKey for a given ModelPurpose.
@@ -319,6 +326,10 @@ export declare class StdioServer {
319
326
  /** `product.cancel` — Cancel a running product. */
320
327
  /** `product.rollback` — Rollback a product to a checkpoint. */
321
328
  private sendResponse;
329
+ private sendContractError;
330
+ private sendContractErrorOrResult;
331
+ private scheduleRpcDeadline;
332
+ private clearRpcLifecycle;
322
333
  private sendNotification;
323
334
  private writeStdout;
324
335
  private log;
@@ -19,6 +19,10 @@ export declare const AGENT_RPC_ERROR_CODES: {
19
19
  readonly TOOL_INVOKE_FAILED: -32020;
20
20
  readonly TOOL_TIMEOUT: -32021;
21
21
  readonly PROTOCOL_MISMATCH: -32030;
22
+ readonly REQUEST_DEADLINE_EXCEEDED: -32040;
23
+ readonly REQUEST_CANCELLED: -32041;
24
+ readonly REQUEST_DEDUPED: -32042;
25
+ readonly REQUEST_IDEMPOTENCY_REQUIRED: -32043;
22
26
  };
23
27
  export type AgentRpcErrorCode = (typeof AGENT_RPC_ERROR_CODES)[keyof typeof AGENT_RPC_ERROR_CODES];
24
28
  export interface AgentRpcRequest {
@@ -26,6 +30,16 @@ export interface AgentRpcRequest {
26
30
  method: string;
27
31
  params?: Record<string, unknown>;
28
32
  id?: string | number;
33
+ meta?: AgentRpcMeta;
34
+ }
35
+ export type AgentRpcChannel = "query" | "task";
36
+ export interface AgentRpcMeta {
37
+ requestId: string;
38
+ deadlineAt: number;
39
+ createdAt: number;
40
+ channel: AgentRpcChannel;
41
+ idempotencyKey?: string;
42
+ traceId?: string;
29
43
  }
30
44
  export interface AgentRpcError {
31
45
  code: AgentRpcErrorCode | number;
@@ -0,0 +1,61 @@
1
+ import { type AgentRpcError, type AgentRpcMeta, type AgentRpcRequest, type AgentRpcChannel } from "./agent-rpc.js";
2
+ export type GatewayRpcMutability = "read" | "write";
3
+ export interface GatewayRpcClassification {
4
+ channel: AgentRpcChannel;
5
+ mutability: GatewayRpcMutability;
6
+ defaultTimeoutMs: number;
7
+ }
8
+ export interface GatewayRpcMetrics {
9
+ activeRequests: number;
10
+ completedRequests: number;
11
+ cancelledRequests: number;
12
+ deadlineExceededRequests: number;
13
+ dedupedRequests: number;
14
+ lateResponsesDropped: number;
15
+ invalidRequests: number;
16
+ }
17
+ export declare function classifyGatewayRpcMethod(method: string): GatewayRpcClassification;
18
+ export declare function requiresIdempotencyKey(method: string): boolean;
19
+ export declare function buildAgentRpcMeta(method: string, options?: {
20
+ now?: number;
21
+ timeoutMs?: number;
22
+ requestId?: string;
23
+ idempotencyKey?: string;
24
+ traceId?: string;
25
+ channel?: AgentRpcChannel;
26
+ }): AgentRpcMeta;
27
+ export declare function requireGatewayRpcMeta(request: Pick<AgentRpcRequest, "method" | "meta">, now?: number): {
28
+ ok: true;
29
+ meta: AgentRpcMeta;
30
+ } | {
31
+ ok: false;
32
+ error: AgentRpcError;
33
+ };
34
+ export declare class GatewayRpcContract {
35
+ private readonly now;
36
+ private readonly active;
37
+ private readonly idempotency;
38
+ private readonly counters;
39
+ constructor(options?: {
40
+ now?: () => number;
41
+ });
42
+ begin(method: string, meta: AgentRpcMeta): {
43
+ status: "started";
44
+ } | {
45
+ status: "deduped";
46
+ result?: unknown;
47
+ error?: AgentRpcError;
48
+ } | {
49
+ status: "rejected";
50
+ error: AgentRpcError;
51
+ };
52
+ cancel(requestId: string, reason?: string): boolean;
53
+ expire(requestId: string): boolean;
54
+ settle(requestId: string, result?: unknown, error?: AgentRpcError): {
55
+ accepted: true;
56
+ } | {
57
+ accepted: false;
58
+ reason: "unknown" | "cancelled" | "deadline_exceeded";
59
+ };
60
+ metrics(): GatewayRpcMetrics;
61
+ }
@@ -27,6 +27,40 @@ export interface ProjectInfo {
27
27
  leaderSessionId?: string;
28
28
  }
29
29
  export interface GatewayRpcMethodMap {
30
+ "agent.health": {
31
+ params: {};
32
+ result: {
33
+ ok: boolean;
34
+ status: "healthy" | "degraded" | "stopping";
35
+ uptimeMs: number;
36
+ protocolVersion: string;
37
+ version: string;
38
+ };
39
+ };
40
+ "agent.metrics": {
41
+ params: {};
42
+ result: {
43
+ rpc: {
44
+ activeRequests: number;
45
+ completedRequests: number;
46
+ cancelledRequests: number;
47
+ deadlineExceededRequests: number;
48
+ dedupedRequests: number;
49
+ lateResponsesDropped: number;
50
+ invalidRequests: number;
51
+ };
52
+ };
53
+ };
54
+ "agent.cancel": {
55
+ params: {
56
+ requestId: string;
57
+ reason?: string;
58
+ };
59
+ result: {
60
+ ok: boolean;
61
+ cancelled: boolean;
62
+ };
63
+ };
30
64
  "session.list": {
31
65
  params: {
32
66
  limit?: number;
@@ -381,8 +415,14 @@ export interface GatewayRpcMethodMap {
381
415
  params: {
382
416
  userId?: string;
383
417
  pageSize?: number;
418
+ windowStartAt?: number;
419
+ windowEndAt?: number;
420
+ windowCenterAt?: number;
421
+ bucketCount?: number;
422
+ clusterLimit?: number;
384
423
  };
385
424
  result: {
425
+ totalCount: number;
386
426
  records: Array<{
387
427
  id: string;
388
428
  text: string;
@@ -399,6 +439,38 @@ export interface GatewayRpcMethodMap {
399
439
  lastAccessedAt: number;
400
440
  isArchived: boolean;
401
441
  }>;
442
+ buckets: Array<{
443
+ id: string;
444
+ startAt: number;
445
+ endAt: number;
446
+ count: number;
447
+ avgImportance: number;
448
+ avgConfidence: number;
449
+ topCategory: string;
450
+ }>;
451
+ clusters: Array<{
452
+ id: string;
453
+ label: string;
454
+ kind: "source" | "category" | "tag";
455
+ count: number;
456
+ startAt: number;
457
+ endAt: number;
458
+ avgImportance: number;
459
+ avgConfidence: number;
460
+ topCategory: string;
461
+ }>;
462
+ windowCursor: {
463
+ startAt: number;
464
+ endAt: number;
465
+ centerAt: number;
466
+ pageSize: number;
467
+ hasBefore: boolean;
468
+ hasAfter: boolean;
469
+ } | null;
470
+ timeRange: {
471
+ startAt: number;
472
+ endAt: number;
473
+ } | null;
402
474
  stats: {
403
475
  formed: number;
404
476
  insights: number;
@@ -433,17 +505,113 @@ export interface GatewayRpcMethodMap {
433
505
  importance?: number;
434
506
  source?: string;
435
507
  tags?: string[];
508
+ attachments?: Array<{
509
+ type: "image" | "audio" | "video" | "file" | string;
510
+ filename: string;
511
+ mimeType?: string;
512
+ size?: number;
513
+ text?: string;
514
+ url?: string;
515
+ path?: string;
516
+ }>;
517
+ autoExtract?: boolean;
436
518
  };
437
519
  result: {
438
520
  ok: boolean;
439
521
  memoriesAdded: number;
440
522
  };
441
523
  };
524
+ "memory.ingest": {
525
+ params: {
526
+ userId?: string;
527
+ text?: string;
528
+ category?: string;
529
+ importance?: number;
530
+ source?: string;
531
+ tags?: string[];
532
+ autoExtract?: boolean;
533
+ attachments?: Array<{
534
+ type: "image" | "audio" | "video" | "file" | string;
535
+ filename: string;
536
+ mimeType?: string;
537
+ size?: number;
538
+ text?: string;
539
+ url?: string;
540
+ path?: string;
541
+ }>;
542
+ };
543
+ result: {
544
+ ok: boolean;
545
+ extractor: "llm" | "deterministic";
546
+ candidates: Array<{
547
+ id: string;
548
+ text: string;
549
+ category: string;
550
+ importance: number;
551
+ confidence: number;
552
+ source: string;
553
+ eventDate?: string;
554
+ tags: string[];
555
+ relatedMemoryIds: string[];
556
+ evidence: Array<Record<string, unknown>>;
557
+ requiresConfirmation: boolean;
558
+ reason?: string;
559
+ }>;
560
+ relatedMemories: Array<{
561
+ id: string;
562
+ text: string;
563
+ score: number;
564
+ category?: string;
565
+ }>;
566
+ };
567
+ };
568
+ "memory.commit": {
569
+ params: {
570
+ userId?: string;
571
+ candidates: Array<{
572
+ id?: string;
573
+ text: string;
574
+ category?: string;
575
+ importance?: number;
576
+ confidence?: number;
577
+ source?: string;
578
+ eventDate?: string;
579
+ tags?: string[];
580
+ relatedMemoryIds?: string[];
581
+ }>;
582
+ };
583
+ result: {
584
+ ok: boolean;
585
+ memoriesAdded: number;
586
+ };
587
+ };
588
+ "memory.update": {
589
+ params: {
590
+ userId?: string;
591
+ id: string;
592
+ text?: string;
593
+ category?: string;
594
+ importance?: number;
595
+ source?: string;
596
+ eventDate?: string;
597
+ tags?: string[];
598
+ };
599
+ result: {
600
+ ok: boolean;
601
+ updated: number;
602
+ };
603
+ };
442
604
  }
443
605
  /**
444
606
  * Type-safe Agent RPC caller.
445
607
  * Gateway passes this around instead of `(string, Record<string, unknown>) => Promise<unknown>`.
446
608
  */
447
- export type AgentCall = <M extends keyof GatewayRpcMethodMap>(method: M, params: GatewayRpcMethodMap[M]["params"]) => Promise<GatewayRpcMethodMap[M]["result"]>;
609
+ export interface AgentCallOptions {
610
+ timeoutMs?: number;
611
+ requestId?: string;
612
+ idempotencyKey?: string;
613
+ traceId?: string;
614
+ }
615
+ export type AgentCall = <M extends keyof GatewayRpcMethodMap>(method: M, params: GatewayRpcMethodMap[M]["params"], options?: AgentCallOptions) => Promise<GatewayRpcMethodMap[M]["result"]>;
448
616
  /** All gateway-facing RPC method names (runtime array). */
449
617
  export declare const GATEWAY_RPC_METHODS: (keyof GatewayRpcMethodMap)[];
@@ -1,5 +1,6 @@
1
- export { AGENT_RPC_APPROVAL_METHODS, AGENT_RPC_ERROR_CODES, AGENT_RPC_PROTOCOL_VERSION, isAgentRpcNotification, isAgentRpcRequest, isAgentRpcResponse, parseAgentRpcMessage, type AgentHelloParams, type AgentHelloResult, type AgentRpcError, type AgentRpcErrorCode, type AgentRpcMessage, type AgentRpcNotification, type AgentRpcRequest, type AgentRpcResponse, type ToolApprovalRequestParams, type ToolApprovalResponseParams, } from "./agent-rpc.js";
2
- export { GATEWAY_RPC_METHODS, type AgentCall, type GatewayRpcMethodMap, type ProjectInfo as RpcProjectInfo, type ProjectStatus as RpcProjectStatus, type ProjectType as RpcProjectType, } from "./gateway-rpc.js";
1
+ export { AGENT_RPC_APPROVAL_METHODS, AGENT_RPC_ERROR_CODES, AGENT_RPC_PROTOCOL_VERSION, isAgentRpcNotification, isAgentRpcRequest, isAgentRpcResponse, parseAgentRpcMessage, type AgentHelloParams, type AgentHelloResult, type AgentRpcError, type AgentRpcErrorCode, type AgentRpcMeta, type AgentRpcChannel, type AgentRpcMessage, type AgentRpcNotification, type AgentRpcRequest, type AgentRpcResponse, type ToolApprovalRequestParams, type ToolApprovalResponseParams, } from "./agent-rpc.js";
2
+ export { GatewayRpcContract, buildAgentRpcMeta, classifyGatewayRpcMethod, requireGatewayRpcMeta, requiresIdempotencyKey, type GatewayRpcClassification, type GatewayRpcMetrics, type GatewayRpcMutability, } from "./gateway-contract.js";
3
+ export { GATEWAY_RPC_METHODS, type AgentCall, type AgentCallOptions, type GatewayRpcMethodMap, type ProjectInfo as RpcProjectInfo, type ProjectStatus as RpcProjectStatus, type ProjectType as RpcProjectType, } from "./gateway-rpc.js";
3
4
  export { type ChatMessage, type ChatMessageRole, type ThinkingBlock, type ToolCallMessage, type ToolDefinition, } from "./chat-types.js";
4
5
  export { type AgentCapabilities, type AgentCategory, type AgentConfig, type AgentDescriptor, type AgentProtocol, type AgentRpcMethodMap, type AgentStatus, type CustomAgentDef, type ProductInstanceDef, type ProductPhase, type ProductStatus, type ProductSummary, type ProductTaskDef, type ProductTaskStatus, type SoloAgentResult, type SoloAgentState, type SoloState, type SoloStatus, } from "./agent-methods.js";
5
6
  export { AGENT_TEAM_WS_EVENT_NAMES, AGENT_WS_EVENT_NAMES, ALL_AGENT_WS_EVENT_NAMES, type AgentTeamWsEventName, type AgentWsEventName, type AllAgentWsEventName, } from "./agent-events.js";
@@ -61,7 +61,7 @@ export interface MemorySearchOptions {
61
61
  }
62
62
  export interface MemoryIngestOptions {
63
63
  llmConfig?: MemoryLlmConfig;
64
- source?: MemoryObservationSource;
64
+ source?: string;
65
65
  sessionId?: string;
66
66
  }
67
67
  export interface MemoryProvider {
@@ -3,7 +3,6 @@
3
3
  */
4
4
  export { PetSoulService, type PetSoul, type PetStats, type PetBreed } from "./pet-soul-service.js";
5
5
  export { maybeGenerateReaction, generateLLMReaction, type ReactionPool, type LLMReactionContext, type ReactionStyle } from "./pet-reaction-service.js";
6
- export { petContextInjection } from "./pet-context-injection.js";
7
6
  export { PetGrowthEngine, type GrowthEvent, type MoltResult, type PetAbility } from "./pet-growth-engine.js";
8
7
  export { loadPetFile, validatePetManifest, sanitizeSvg, type PetManifest, type PetFileBundle } from "./pet-file-loader.js";
9
8
  export { buildSkeletonPrompt, parseSkeleton, renderState, extractColors, validateSkeleton, STATE_ANIMATION_MAP, type PetSkeleton, type SkeletonPart, type StateAnimationParams } from "./pet-skeleton.js";
@@ -2,10 +2,7 @@
2
2
  * Local Embedding — Pluggable embedding interface for local memory.
3
3
  *
4
4
  * Provides a unified interface for text → vector embedding.
5
- * Strategies:
6
- * 1. "api" — calls an external embedding API (OpenAI-compatible)
7
- * 2. "onnx" — @xenova/transformers for fully offline embedding
8
- * 3. "none" — no embeddings, FTS-only search (zero-dep fallback)
5
+ * If no API config is provided, memory search falls back to FTS-only.
9
6
  */
10
7
  export interface EmbeddingProvider {
11
8
  readonly dimensions: number;
@@ -38,29 +35,6 @@ export declare class NullEmbeddingProvider implements EmbeddingProvider {
38
35
  embed(_text: string): Promise<Float32Array>;
39
36
  embedBatch(_texts: string[]): Promise<Float32Array[]>;
40
37
  }
41
- /**
42
- * Wraps a primary EmbeddingProvider with automatic fallback to a local provider.
43
- * When the primary fails (timeout, network error, 5xx), transparently retries with local.
44
- *
45
- * IMPORTANT: primary and fallback MUST have the same dimensions.
46
- * If they differ, vectors in the same index will be incomparable.
47
- * Use this only when both produce the same dimensionality (e.g. hub TEI bge-m3 1024d
48
- * + local ONNX bge-m3-small 1024d).
49
- */
50
- export declare class FallbackEmbeddingProvider implements EmbeddingProvider {
51
- readonly dimensions: number;
52
- readonly model: string;
53
- private primary;
54
- private fallback;
55
- private onFallback?;
56
- constructor(opts: {
57
- primary: EmbeddingProvider;
58
- fallback: EmbeddingProvider;
59
- onFallback?: (error: Error) => void;
60
- });
61
- embed(text: string): Promise<Float32Array>;
62
- embedBatch(texts: string[]): Promise<Float32Array[]>;
63
- }
64
38
  export declare class ApiEmbeddingProvider implements EmbeddingProvider {
65
39
  readonly dimensions: number;
66
40
  readonly model: string;
@@ -75,89 +49,19 @@ export declare class ApiEmbeddingProvider implements EmbeddingProvider {
75
49
  private parseResponse;
76
50
  }
77
51
  export interface LocalEmbeddingConfig {
78
- strategy: "api" | "onnx" | "none";
79
52
  api?: EmbeddingApiConfig;
80
- onnx?: OnnxEmbeddingConfig;
81
- /**
82
- * When strategy=api, if the API fails (timeout/error), fallback to this.
83
- * - "onnx": use local ONNX model (download on first use, ~23MB)
84
- * - "none": give up embedding (FTS-only)
85
- * Requires same dimensions for vector compatibility. Default ONNX model
86
- * (bge-small-zh-v1.5, 512d) differs from bge-m3 (1024d).
87
- * Accept dimension mismatch for degraded recall in fallback mode.
88
- */
89
- fallbackStrategy?: "onnx" | "none";
90
- fallbackOnnx?: OnnxEmbeddingConfig;
91
- }
92
- export interface OnnxEmbeddingConfig {
93
- /** Model ID for @xenova/transformers (default: "Xenova/bge-small-zh-v1.5") */
94
- modelId?: string;
95
- /** Expected dimensions (default: 512 for bge-small-zh-v1.5) */
96
- dimensions?: number;
97
- /** Max sequence length before truncation (default: 256) */
98
- maxLength?: number;
99
- /** Override local model path (for testing). */
100
- localModelPath?: string;
101
53
  }
102
- /**
103
- * Offline embedding provider using ONNX Runtime via @xenova/transformers.
104
- *
105
- * Model is lazily downloaded on first use (~24MB for bge-small-zh-v1.5 quantized).
106
- * Subsequent loads are instant from local cache (~/.qlogicagent/models/).
107
- *
108
- * For China network: set ONNX_MODEL_MIRROR to OSS URL or HF_MIRROR=https://hf-mirror.com
109
- */
110
- export declare class OnnxEmbeddingProvider implements EmbeddingProvider {
111
- readonly dimensions: number;
112
- readonly model: string;
113
- private maxLength;
114
- private localModelPath;
115
- private pipeline;
116
- private loading;
117
- constructor(config?: OnnxEmbeddingConfig);
118
- private getPipeline;
119
- embed(text: string): Promise<Float32Array>;
120
- embedBatch(texts: string[]): Promise<Float32Array[]>;
121
- /**
122
- * Pre-download and load the ONNX model without blocking.
123
- * Call this at process startup for instant readiness on first real embed().
124
- */
125
- warmup(): Promise<void>;
126
- }
127
- export interface WarmupResult {
128
- onnxAvailable: boolean;
129
- modelCached: boolean;
130
- modelDownloaded: boolean;
131
- dimensions: number;
132
- error?: string;
133
- }
134
- /**
135
- * Run at process startup to verify environment and pre-download ONNX model.
136
- *
137
- * - Checks if @xenova/transformers is installed
138
- * - Checks if model already in local cache
139
- * - If not cached, downloads from OSS CDN in background
140
- * - Returns status for diagnostics logging
141
- *
142
- * Fire-and-forget: never throws, never blocks critical path.
143
- */
144
- export declare function warmupEmbeddingModel(config?: OnnxEmbeddingConfig): Promise<WarmupResult>;
145
54
  /**
146
55
  * Create an embedding provider based on configuration.
147
56
  *
148
57
  * Resolution order:
149
- * 1. Explicit config (api/onnx/none)
150
- * 2. Auto-detect: @xenova/transformers availableuse ONNX (lazy download)
151
- * 3. Fallback to NullEmbeddingProvider (FTS-only)
152
- *
153
- * When config.fallbackStrategy is set and strategy=api, wraps primary in
154
- * FallbackEmbeddingProvider for automatic local retry on API failure.
58
+ * 1. API config → ApiEmbeddingProvider
59
+ * 2. No API configNullEmbeddingProvider (FTS-only)
155
60
  */
156
61
  export declare function createEmbeddingProvider(config?: LocalEmbeddingConfig): EmbeddingProvider;
157
62
  /**
158
63
  * Known provider → format mapping.
159
- * Used by auto-cascade to build the correct EmbeddingApiConfig
160
- * when the user's LLM provider also has an embedding API.
64
+ * Used only for the explicit ModelRegistry embedding binding.
161
65
  */
162
66
  export declare const PROVIDER_EMBEDDING_REGISTRY: Record<string, {
163
67
  format: "openai" | "minimax" | "volcengine";