qlogicagent 2.9.0 → 2.10.1
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/agent.js +16 -16
- package/dist/cli.js +309 -238
- package/dist/index.js +334 -263
- package/dist/protocol.js +1 -1
- package/dist/types/cli/handlers/memory-handler.d.ts +10 -0
- package/dist/types/cli/handlers/pet-handler.d.ts +8 -1
- package/dist/types/cli/handlers/settings-handler.d.ts +3 -15
- package/dist/types/cli/handlers/settings-handler.remote-catalog.test.d.ts +1 -0
- package/dist/types/cli/stdio-server.d.ts +26 -0
- package/dist/types/protocol/wire/agent-events.d.ts +2 -2
- package/dist/types/protocol/wire/gateway-rpc.d.ts +48 -0
- package/dist/types/protocol/wire/notification-payloads.d.ts +7 -0
- package/dist/types/runtime/infra/llmrouter-catalog.d.ts +49 -0
- package/dist/types/runtime/infra/model-registry.d.ts +36 -101
- package/dist/types/runtime/pet/index.d.ts +2 -0
- package/dist/types/runtime/pet/pet-consistency.d.ts +79 -0
- package/dist/types/runtime/pet/pet-skeleton.d.ts +70 -0
- package/dist/types/skills/memory/local-memory-provider.d.ts +10 -0
- package/package.json +1 -1
- package/dist/types/runtime/infra/builtin-providers.d.ts +0 -36
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 S(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)||S(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"];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"],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 m=["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,o)=>t.localeCompare(o))}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:o}=e;return!(o.syncMode==="diff"&&t&&(!o.baseSnapshotVersion||t.snapshotVersion===o.baseSnapshotVersion))||!t?g(o):{...g(t),snapshotVersion:o.snapshotVersion,updatedAt:o.updatedAt,...o.gatewayVersion!==void 0?{gatewayVersion:o.gatewayVersion}:{},...o.syncMode?{syncMode:o.syncMode}:{},...o.baseSnapshotVersion?{baseSnapshotVersion:o.baseSnapshotVersion}:{},...o.changedSections?{changedSections:[...o.changedSections]}:{},...o.toolNamespaces?{toolNamespaces:[...o.toolNamespaces]}:{},...o.workspaceIds?{workspaceIds:[...o.workspaceIds]}:{},...o.installedCapabilities?{installedCapabilities:[...o.installedCapabilities]}:{},...o.enabledCapabilities?{enabledCapabilities:[...o.enabledCapabilities]}:{},...o.features?{features:[...o.features]}:{},...o.approvalMode?{approvalMode:o.approvalMode}:{},...o.toolManifests?{toolManifests:d(o.toolManifests)}:{},...o.skillManifests?{skillManifests:d(o.skillManifests)}:{},...o.pluginManifests?{pluginManifests:d(o.pluginManifests)}:{},...o.mcpManifests?{mcpManifests:d(o.mcpManifests)}:{},...o.approvalPolicy?{approvalPolicy:{...o.approvalPolicy}}:{},...o.workspaceSummaries?{workspaceSummaries:A(o.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 oe(e){let{previous:t,current:o}=e;if(!t)return{...g(o),syncMode:"full"};if(t.snapshotVersion===o.snapshotVersion)return null;let i=m.filter(n=>JSON.stringify(t[n])!==JSON.stringify(o[n]));if(i.length===m.length)return{...g(o),syncMode:"full"};let u={snapshotVersion:o.snapshotVersion,updatedAt:o.updatedAt,syncMode:"diff",baseSnapshotVersion:t.snapshotVersion,changedSections:i,toolNamespaces:[...o.toolNamespaces],workspaceIds:[...o.workspaceIds]},p=u;for(let n of i){let r=o[n];if(r!==void 0)switch(n){case"toolNamespaces":case"workspaceIds":case"installedCapabilities":case"enabledCapabilities":case"features":p[n]=Q(r);break;case"approvalPolicy":p[n]={...r};break;case"workspaceSummaries":p[n]=A(r);break;case"toolManifests":case"skillManifests":case"pluginManifests":case"mcpManifests":p[n]=d(r);break;default:p[n]=r;break}}return u}var re=["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"],fe=["turn","sidechain","compress","session-end","agent-remember","auto-extract","implicit-extract","profile-extraction","dream"],me=["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 o=w(e,t);return o?o.assetIds.map(i=>D(e,i)).filter(i=>!!i):[]}function _e(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]),o=R(e.assets[s.whisperModelTiny]);return{...e,gateway:t,whisperModel:o}}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 Se(e){let t=e&&typeof e=="object"?e:{},o={},i=t.assets&&typeof t.assets=="object"?t.assets:{};for(let[r,a]of Object.entries(i)){if(!a||typeof a!="object")continue;let l=a;!l.id||!Array.isArray(l.artifacts)||(o[r]=O(l))}if(!o[s.gatewayImage]&&t.gateway&&typeof t.gateway=="object"){let r=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."});r&&(o[r.id]=r)}if(!o[s.whisperModelTiny]&&t.whisperModel&&typeof t.whisperModel=="object"){let r=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."});r&&(o[r.id]=r)}let p={...N()},n=t.profiles&&typeof t.profiles=="object"?t.profiles:{};for(let[r,a]of Object.entries(n)){if(!a||typeof a!="object")continue;let l=a;!l.id||!Array.isArray(l.assetIds)||(p[r]=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:o,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 f(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=f(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 o=(e??"").toLowerCase();return!!o&&t.some(i=>o.includes(i))}function c(e){let t=f(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 o=c(e),i=o.transcriptToolCallIdMode;if(i==="strict9")return i;if(E(t,o.transcriptToolCallIdModelHints))return"strict9"}var _={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(_).flat())]}function je(e){let t=f(e.provider),o=e.env??process.env,i=new Set(e.appliedEnvKeys??[]),u=r=>{let a=o[r]?.trim();if(!a)return null;let l=i.has(r)?`shell env: ${r}`:`env: ${r}`;return{apiKey:a,source:l}},p=e.resolveSpecialApiKey?.(t,o,i);if(p)return p;let n=_[t];if(!n||n.length===0)return null;for(let r of n){let a=u(r);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,m as CAPABILITY_MANIFEST_DIFF_SECTIONS,j as GATEWAY_RPC_METHODS,ye as MEMORY_OBSERVATION_HOOK_VALUES,fe as MEMORY_OBSERVATION_SOURCE_VALUES,me 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,_ 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,re 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,oe 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,S as isAgentRpcRequest,P as isAgentRpcResponse,Ke as isAnthropicProviderRuntimeFamily,$ as isExtendedSessionUpdateType,Le as isOpenAiProviderRuntimeFamily,J as isStandardSessionUpdateType,Be as listProviderRuntimeEnvApiKeyNames,Z as mergeCapabilityManifestSnapshot,f as normalizeProviderRuntimeId,K as normalizeProviderRuntimeIdForAuth,Se 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,_e as upsertRuntimeResourceAsset,De as usesOpenAiFunctionAnthropicToolSchemaForProviderRuntime,we as usesOpenAiStringModeAnthropicToolChoiceForProviderRuntime};
|
|
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"];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};
|
|
@@ -5,6 +5,16 @@
|
|
|
5
5
|
export declare function handleMemoryList(this: any, msg: any): Promise<void>;
|
|
6
6
|
/** memory.list-files — Returns actual topic files from memdir. */
|
|
7
7
|
export declare function handleMemoryListFiles(this: any, msg: any): Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* memory.atlas — Returns full L2 vector-memory records (wire-safe, no embedding
|
|
10
|
+
* blob) plus category roll-ups, for the 3D memory atlas visualization.
|
|
11
|
+
*/
|
|
12
|
+
export declare function handleMemoryAtlas(this: any, msg: any): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* memory.activity — Daily activity counts + highlights over the recent window,
|
|
15
|
+
* powering the atlas timeline ticks and the "memory digest" panel.
|
|
16
|
+
*/
|
|
17
|
+
export declare function handleMemoryActivity(this: any, msg: any): Promise<void>;
|
|
8
18
|
export declare function handleMemoryRead(this: any, msg: any): Promise<void>;
|
|
9
19
|
export declare function handleMemoryWrite(this: any, msg: any): Promise<void>;
|
|
10
20
|
export declare function handleMemorySearch(this: any, msg: any): Promise<void>;
|
|
@@ -16,6 +16,13 @@ export declare function handlePetInteract(this: any, msg: any): Promise<void>;
|
|
|
16
16
|
export declare function handlePetStatus(this: any, msg: any): Promise<void>;
|
|
17
17
|
/**
|
|
18
18
|
* P4: Pet Forge — generate a custom .pet file from image/text description.
|
|
19
|
-
*
|
|
19
|
+
*
|
|
20
|
+
* Pipeline (design §14.3 Plan A + §14.4):
|
|
21
|
+
* 1. Analyze image (if provided) → character description
|
|
22
|
+
* 2. Generate ONE base skeleton SVG (with labeled parts)
|
|
23
|
+
* 3. Validate skeleton structure (required IDs/classes)
|
|
24
|
+
* 4. For each state: renderState() injects CSS animations + effects
|
|
25
|
+
* 5. Structural consistency check; retry skeleton if score too low
|
|
26
|
+
* 6. Package and emit pet.forged
|
|
20
27
|
*/
|
|
21
28
|
export declare function handlePetForge(this: any, msg: any): Promise<void>;
|
|
@@ -1,24 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Settings RPC handlers — model management system.
|
|
3
|
-
*
|
|
4
|
-
* All model pool operations go through ModelRegistry (single source of truth).
|
|
5
|
-
* Handles: settings.listSupportedProviders, settings.addKey, settings.removeKey,
|
|
6
|
-
* settings.toggleKey, settings.listModels, settings.setActiveModel,
|
|
7
|
-
* settings.getActiveModel, settings.getOverview, settings.refreshModels
|
|
8
|
-
*/
|
|
9
1
|
import type { AgentRpcRequest } from "../../protocol/wire/agent-rpc.js";
|
|
10
|
-
export declare function handleSettingsListProviders(this: any, msg: AgentRpcRequest): void
|
|
2
|
+
export declare function handleSettingsListProviders(this: any, msg: AgentRpcRequest): Promise<void>;
|
|
11
3
|
export declare function handleSettingsAddKey(this: any, msg: AgentRpcRequest): Promise<void>;
|
|
12
4
|
export declare function handleSettingsRemoveKey(this: any, msg: AgentRpcRequest): void;
|
|
13
5
|
export declare function handleSettingsToggleKey(this: any, msg: AgentRpcRequest): void;
|
|
14
6
|
export declare function handleSettingsToggleModel(this: any, msg: AgentRpcRequest): void;
|
|
15
|
-
export declare function handleSettingsListModels(this: any, msg: AgentRpcRequest): void
|
|
7
|
+
export declare function handleSettingsListModels(this: any, msg: AgentRpcRequest): Promise<void>;
|
|
16
8
|
export declare function handleSettingsSetActiveModel(this: any, msg: AgentRpcRequest): void;
|
|
17
9
|
export declare function handleSettingsGetActiveModel(this: any, msg: AgentRpcRequest): void;
|
|
18
|
-
export declare function handleSettingsGetOverview(this: any, msg: AgentRpcRequest): void
|
|
10
|
+
export declare function handleSettingsGetOverview(this: any, msg: AgentRpcRequest): Promise<void>;
|
|
19
11
|
export declare function handleSettingsRefreshModels(this: any, msg: AgentRpcRequest): Promise<void>;
|
|
20
|
-
/**
|
|
21
|
-
* Validate a provider API key by making a minimal /models list request.
|
|
22
|
-
* Does not store the key; just verifies connectivity + auth.
|
|
23
|
-
*/
|
|
24
12
|
export declare function handleSettingsValidateKey(this: any, msg: AgentRpcRequest): Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -148,6 +148,11 @@ export declare class StdioServer {
|
|
|
148
148
|
personality: string;
|
|
149
149
|
catchphrase: string;
|
|
150
150
|
}>) | undefined;
|
|
151
|
+
/**
|
|
152
|
+
* Create a generic small LLM call function for short generation tasks.
|
|
153
|
+
* Returns a function compatible with generateLLMReaction's signature.
|
|
154
|
+
*/
|
|
155
|
+
createSmallLLMCall(): ((prompt: string, maxTokens: number) => Promise<string | null>) | undefined;
|
|
151
156
|
/**
|
|
152
157
|
* P4 Forge: Analyze uploaded image via Vision model (design §14.3 step 1).
|
|
153
158
|
*/
|
|
@@ -156,6 +161,20 @@ export declare class StdioServer {
|
|
|
156
161
|
* P4 Forge: Generate a single state SVG via LLM code generation (design §14.3 Option C).
|
|
157
162
|
*/
|
|
158
163
|
forgeGenerateSVG(characterDesc: string, state: string): Promise<string>;
|
|
164
|
+
/**
|
|
165
|
+
* P4 Forge: Generate a base skeleton SVG via LLM (design §14.3 Plan A).
|
|
166
|
+
* One LLM call produces the entire character skeleton with labeled parts.
|
|
167
|
+
* States are then rendered by injecting CSS animations (no additional LLM calls).
|
|
168
|
+
*/
|
|
169
|
+
forgeGenerateSkeleton(characterDesc: string): Promise<string>;
|
|
170
|
+
/**
|
|
171
|
+
* P4 Forge: Score SVG consistency using Vision model (design §14.4).
|
|
172
|
+
* Compares a candidate SVG against the reference (idle) to score character consistency.
|
|
173
|
+
*/
|
|
174
|
+
forgeScoreConsistency(referenceSvg: string, candidateSvg: string, state: string, characterDesc: string): Promise<{
|
|
175
|
+
score: number;
|
|
176
|
+
feedback: string;
|
|
177
|
+
}>;
|
|
159
178
|
/**
|
|
160
179
|
* Award XP to pet on events (fire-and-forget).
|
|
161
180
|
*/
|
|
@@ -174,6 +193,13 @@ export declare class StdioServer {
|
|
|
174
193
|
* Generate pet reaction after turn (P3: LLM-enhanced, P0: template fallback).
|
|
175
194
|
*/
|
|
176
195
|
private petReactionAfterTurn;
|
|
196
|
+
/**
|
|
197
|
+
* Ensure the L2 SQLite memory provider exists for read-only RPCs
|
|
198
|
+
* (memory.atlas / memory.activity). These can be called before any turn has
|
|
199
|
+
* run, so they cannot rely on resolveAgent() having initialized the provider.
|
|
200
|
+
* Opening the DB is cheap and side-effect-free (list() does not embed).
|
|
201
|
+
*/
|
|
202
|
+
private ensureMemoryProvider;
|
|
177
203
|
private resolveAgent;
|
|
178
204
|
/**
|
|
179
205
|
* Load LLM config from ModelRegistry (textGeneration binding).
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* Turn-lifecycle events relayed to the Control UI WebSocket.
|
|
14
14
|
* These are the "chat session" events that every UI client needs.
|
|
15
15
|
*/
|
|
16
|
-
export declare const AGENT_WS_EVENT_NAMES: readonly ["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"];
|
|
16
|
+
export declare const AGENT_WS_EVENT_NAMES: readonly ["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"];
|
|
17
17
|
/**
|
|
18
18
|
* Agent Team events (Solo Mode, Product Mode, Plan lifecycle).
|
|
19
19
|
* Relayed to the UI's team/orchestration panel.
|
|
@@ -23,7 +23,7 @@ export declare const AGENT_TEAM_WS_EVENT_NAMES: readonly ["solo.progress", "solo
|
|
|
23
23
|
* All agent notifications that Gateway should relay to WS clients.
|
|
24
24
|
* Union of session events + team events.
|
|
25
25
|
*/
|
|
26
|
-
export declare const ALL_AGENT_WS_EVENT_NAMES: readonly ["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", "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"];
|
|
26
|
+
export declare const ALL_AGENT_WS_EVENT_NAMES: readonly ["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", "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"];
|
|
27
27
|
/** Type-level event name for session events. */
|
|
28
28
|
export type AgentWsEventName = (typeof AGENT_WS_EVENT_NAMES)[number];
|
|
29
29
|
/** Type-level event name for team events. */
|
|
@@ -377,6 +377,54 @@ export interface GatewayRpcMethodMap {
|
|
|
377
377
|
}>;
|
|
378
378
|
};
|
|
379
379
|
};
|
|
380
|
+
"memory.atlas": {
|
|
381
|
+
params: {
|
|
382
|
+
userId?: string;
|
|
383
|
+
pageSize?: number;
|
|
384
|
+
};
|
|
385
|
+
result: {
|
|
386
|
+
records: Array<{
|
|
387
|
+
id: string;
|
|
388
|
+
text: string;
|
|
389
|
+
category: string;
|
|
390
|
+
importance: number;
|
|
391
|
+
confidence: number;
|
|
392
|
+
source: string;
|
|
393
|
+
sessionId: string;
|
|
394
|
+
eventDate: string;
|
|
395
|
+
tags: string[];
|
|
396
|
+
createdAt: number;
|
|
397
|
+
updatedAt: number;
|
|
398
|
+
accessCount: number;
|
|
399
|
+
lastAccessedAt: number;
|
|
400
|
+
isArchived: boolean;
|
|
401
|
+
}>;
|
|
402
|
+
stats: {
|
|
403
|
+
formed: number;
|
|
404
|
+
insights: number;
|
|
405
|
+
preferences: number;
|
|
406
|
+
};
|
|
407
|
+
};
|
|
408
|
+
};
|
|
409
|
+
"memory.activity": {
|
|
410
|
+
params: {
|
|
411
|
+
userId?: string;
|
|
412
|
+
days?: number;
|
|
413
|
+
};
|
|
414
|
+
result: {
|
|
415
|
+
dailyCounts: Array<{
|
|
416
|
+
date: string;
|
|
417
|
+
count: number;
|
|
418
|
+
}>;
|
|
419
|
+
highlights: Array<{
|
|
420
|
+
id: string;
|
|
421
|
+
text: string;
|
|
422
|
+
category: string;
|
|
423
|
+
importance: number;
|
|
424
|
+
date: string;
|
|
425
|
+
}>;
|
|
426
|
+
};
|
|
427
|
+
};
|
|
380
428
|
}
|
|
381
429
|
/**
|
|
382
430
|
* Type-safe Agent RPC caller.
|
|
@@ -622,6 +622,12 @@ export interface PetForgedNotification {
|
|
|
622
622
|
name: string;
|
|
623
623
|
svgs: Record<string, string>;
|
|
624
624
|
}
|
|
625
|
+
export interface SystemActivityNotification {
|
|
626
|
+
category: "dream" | "cron" | "decay" | "system";
|
|
627
|
+
level: "info" | "warn" | "error" | "success";
|
|
628
|
+
title: string;
|
|
629
|
+
detail?: string;
|
|
630
|
+
}
|
|
625
631
|
export interface NotificationMethodMap {
|
|
626
632
|
"turn.start": TurnStartNotification;
|
|
627
633
|
"turn.delta": TurnDeltaNotification;
|
|
@@ -696,6 +702,7 @@ export interface NotificationMethodMap {
|
|
|
696
702
|
"pet.state": PetStateNotification;
|
|
697
703
|
"pet.confirm": PetConfirmNotification;
|
|
698
704
|
"pet.forged": PetForgedNotification;
|
|
705
|
+
"system.activity": SystemActivityNotification;
|
|
699
706
|
}
|
|
700
707
|
/** All known notification method names. */
|
|
701
708
|
export type NotificationMethod = keyof NotificationMethodMap;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { ModelEntry, ModelRegistry } from "./model-registry.js";
|
|
2
|
+
export declare const LLMROUTER_CATALOG_UNAVAILABLE_MESSAGE = "\u65E0\u6CD5\u8FDE\u63A5 llmrouter \u6A21\u578B\u76EE\u5F55";
|
|
3
|
+
export declare class LlmrouterCatalogUnavailableError extends Error {
|
|
4
|
+
constructor(message?: string);
|
|
5
|
+
}
|
|
6
|
+
export interface LlmrouterCatalogProvider {
|
|
7
|
+
id: string;
|
|
8
|
+
name?: string;
|
|
9
|
+
displayName?: string;
|
|
10
|
+
baseUrl?: string;
|
|
11
|
+
base_url?: string;
|
|
12
|
+
transport?: string;
|
|
13
|
+
models?: Array<{
|
|
14
|
+
id?: string;
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
17
|
+
export interface LlmrouterCatalogModel {
|
|
18
|
+
id: string;
|
|
19
|
+
public_model?: string;
|
|
20
|
+
publicModel?: string;
|
|
21
|
+
provider?: string;
|
|
22
|
+
owned_by?: string;
|
|
23
|
+
native_model_id?: string;
|
|
24
|
+
nativeModelId?: string;
|
|
25
|
+
display_name?: string;
|
|
26
|
+
displayName?: string;
|
|
27
|
+
name?: string;
|
|
28
|
+
category?: string;
|
|
29
|
+
purposes?: string[];
|
|
30
|
+
baseUrl?: string;
|
|
31
|
+
base_url?: string;
|
|
32
|
+
provider_transport?: string;
|
|
33
|
+
providerTransport?: string;
|
|
34
|
+
context_window?: number;
|
|
35
|
+
contextWindow?: number;
|
|
36
|
+
max_output?: number;
|
|
37
|
+
maxOutput?: number;
|
|
38
|
+
stream_required?: boolean;
|
|
39
|
+
streamRequired?: boolean;
|
|
40
|
+
capabilities?: string[];
|
|
41
|
+
pricing?: Record<string, unknown>;
|
|
42
|
+
}
|
|
43
|
+
export declare function listLlmrouterCatalogProviders(): Promise<LlmrouterCatalogProvider[]>;
|
|
44
|
+
export declare function listLlmrouterCatalogModels(): Promise<LlmrouterCatalogModel[]>;
|
|
45
|
+
export declare function providerDisplayName(provider: LlmrouterCatalogProvider): string;
|
|
46
|
+
export declare function providerBaseUrl(provider: LlmrouterCatalogProvider): string | undefined;
|
|
47
|
+
export declare function getLlmrouterCatalogProvider(providerId: string): Promise<LlmrouterCatalogProvider | null>;
|
|
48
|
+
export declare function refreshRegistryFromLlmrouterCatalog(registry: ModelRegistry): Promise<ModelEntry[]>;
|
|
49
|
+
export declare function toModelEntry(model: LlmrouterCatalogModel): ModelEntry | null;
|
|
@@ -1,19 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
* Model Registry — centralized model pool + per-purpose binding.
|
|
3
|
-
*
|
|
4
|
-
* Architecture: User adds Provider keys → enables models → binds each purpose to a model.
|
|
5
|
-
* Any code needing a model calls `registry.getActiveModel(purpose)`.
|
|
6
|
-
* Turn handler, media handler, STT, TTS — all go through this single source of truth.
|
|
7
|
-
*
|
|
8
|
-
* Persistence: ~/.qlogicagent/settings.json
|
|
9
|
-
* Runtime state (key health, inFlight): in-memory via KeyPool
|
|
10
|
-
*/
|
|
11
|
-
import { type ProviderPoolConfig, type KeyConfig, type LoadBalanceStrategy, type KeyHandle, type PoolStatus } from "./key-pool.js";
|
|
12
|
-
import { type ModelInfo, type ProviderDef } from "@qlogic/provider-core";
|
|
1
|
+
import { type KeyConfig, type KeyHandle, type LoadBalanceStrategy, type PoolStatus, type ProviderPoolConfig } from "./key-pool.js";
|
|
13
2
|
export type RegistryChangeCallback = () => void;
|
|
14
|
-
/** Purpose categories for model routing. */
|
|
15
3
|
export type ModelPurpose = "textGeneration" | "smallModel" | "stt" | "tts" | "imageGeneration" | "imageUnderstanding" | "videoGeneration" | "videoUnderstanding" | "threeDGeneration" | "embedding" | "voiceClone" | "musicGeneration" | "realtimeAudio" | "realtimeVideo";
|
|
16
|
-
|
|
4
|
+
export interface ModelInfo {
|
|
5
|
+
id: string;
|
|
6
|
+
name?: string;
|
|
7
|
+
contextWindow?: number;
|
|
8
|
+
maxOutput?: number;
|
|
9
|
+
streamRequired?: boolean;
|
|
10
|
+
vision?: boolean;
|
|
11
|
+
mediaType?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ProviderDef {
|
|
14
|
+
id: string;
|
|
15
|
+
name: string;
|
|
16
|
+
transport: string;
|
|
17
|
+
baseUrl: string;
|
|
18
|
+
defaultModel?: string;
|
|
19
|
+
group?: string;
|
|
20
|
+
models?: ModelInfo[];
|
|
21
|
+
}
|
|
17
22
|
export interface ModelEntry {
|
|
18
23
|
id: string;
|
|
19
24
|
provider: string;
|
|
@@ -22,17 +27,23 @@ export interface ModelEntry {
|
|
|
22
27
|
purposes: ModelPurpose[];
|
|
23
28
|
baseUrl?: string;
|
|
24
29
|
enabled: boolean;
|
|
30
|
+
transport?: string;
|
|
31
|
+
contextWindow?: number;
|
|
32
|
+
maxOutput?: number;
|
|
33
|
+
streamRequired?: boolean;
|
|
34
|
+
capabilities?: string[];
|
|
35
|
+
pricing?: Record<string, unknown>;
|
|
25
36
|
}
|
|
26
|
-
/** Per-purpose binding: maps purpose → model ID. */
|
|
27
37
|
export type PurposeBindings = Partial<Record<ModelPurpose, string>>;
|
|
28
|
-
/** Persistent settings.json schema (new architecture). */
|
|
29
38
|
export interface ModelRegistryConfig {
|
|
30
39
|
providers: ProviderPoolConfig[];
|
|
31
|
-
models:
|
|
40
|
+
models: Array<{
|
|
41
|
+
id: string;
|
|
42
|
+
enabled?: boolean;
|
|
43
|
+
}>;
|
|
32
44
|
bindings: PurposeBindings;
|
|
33
45
|
tunables?: Record<string, unknown>;
|
|
34
46
|
}
|
|
35
|
-
/** Resolved model ready for API call. */
|
|
36
47
|
export interface ResolvedModel {
|
|
37
48
|
provider: string;
|
|
38
49
|
model: string;
|
|
@@ -40,34 +51,18 @@ export interface ResolvedModel {
|
|
|
40
51
|
baseUrl?: string;
|
|
41
52
|
keyHandle: KeyHandle;
|
|
42
53
|
}
|
|
54
|
+
export declare const ALL_PURPOSES: ModelPurpose[];
|
|
43
55
|
export declare class ModelRegistry {
|
|
44
56
|
private keyPool;
|
|
45
57
|
private models;
|
|
58
|
+
private modelEnabledOverrides;
|
|
46
59
|
private bindings;
|
|
47
60
|
private settingsPath;
|
|
48
61
|
private changeListeners;
|
|
49
62
|
constructor(config?: ModelRegistryConfig);
|
|
50
|
-
/**
|
|
51
|
-
* Get the currently bound model for a purpose, with a live API key from the pool.
|
|
52
|
-
* Returns null if purpose is not bound or no key is available.
|
|
53
|
-
*
|
|
54
|
-
* IMPORTANT: Caller MUST call result.keyHandle.release({ success, tokens? }) when done.
|
|
55
|
-
*/
|
|
56
63
|
getActiveModel(purpose: ModelPurpose): ResolvedModel | null;
|
|
57
|
-
/**
|
|
58
|
-
* Peek at the bound model for a purpose WITHOUT acquiring a key.
|
|
59
|
-
* Useful for UI display, description generation, etc.
|
|
60
|
-
*/
|
|
61
64
|
peekActiveModel(purpose: ModelPurpose): ModelEntry | null;
|
|
62
|
-
/**
|
|
63
|
-
* Check if a purpose has an available model + key (without acquiring).
|
|
64
|
-
*/
|
|
65
65
|
isAvailable(purpose: ModelPurpose): boolean;
|
|
66
|
-
/**
|
|
67
|
-
* Resolve a model name for a purpose, falling back to textGeneration if not bound.
|
|
68
|
-
* Returns the raw model string (e.g. "deepseek-v4-flash") or null if nothing configured.
|
|
69
|
-
* Does NOT acquire a key — use for cases where the caller already has transport/key.
|
|
70
|
-
*/
|
|
71
66
|
resolveModelForPurpose(purpose: ModelPurpose): string | null;
|
|
72
67
|
addProvider(providerId: string, opts?: {
|
|
73
68
|
baseUrl?: string;
|
|
@@ -89,6 +84,8 @@ export declare class ModelRegistry {
|
|
|
89
84
|
addModel(entry: Omit<ModelEntry, "id"> & {
|
|
90
85
|
id?: string;
|
|
91
86
|
}): string;
|
|
87
|
+
replaceCatalogModels(entries: ModelEntry[]): void;
|
|
88
|
+
migrateModelIds(aliasToNative: Map<string, string>): void;
|
|
92
89
|
removeModel(id: string): void;
|
|
93
90
|
enableModel(id: string): void;
|
|
94
91
|
disableModel(id: string): void;
|
|
@@ -104,84 +101,22 @@ export declare class ModelRegistry {
|
|
|
104
101
|
getAllBindings(): Record<string, ModelEntry | null>;
|
|
105
102
|
getProviderStatus(providerId: string): PoolStatus | null;
|
|
106
103
|
getAllProviderStatus(): PoolStatus[];
|
|
107
|
-
/** Save current config to settings.json. Preserves non-model fields (tunables, theme, etc.). */
|
|
108
104
|
save(): void;
|
|
109
|
-
/** Load config from settings.json. Returns false if file not found or parse error. */
|
|
110
105
|
load(): boolean;
|
|
111
|
-
/** Export full config (for serialization/transfer). */
|
|
112
106
|
exportConfig(): ModelRegistryConfig;
|
|
113
|
-
/**
|
|
114
|
-
* Read a tunable value from settings.json tunables section.
|
|
115
|
-
* Returns undefined if not set. Does NOT write — read-only accessor.
|
|
116
|
-
*/
|
|
117
107
|
getTunable<T = unknown>(key: string): T | undefined;
|
|
118
|
-
private _providerRegistry;
|
|
119
|
-
private getProviderRegistry;
|
|
120
|
-
/**
|
|
121
|
-
* Get model metadata (streamRequired, contextWindow, etc.) from the merged
|
|
122
|
-
* provider-core registry. Replaces direct `this.registry.getModelInfo(...)`.
|
|
123
|
-
*/
|
|
124
108
|
getModelInfo(providerId: string, modelId: string): ModelInfo | undefined;
|
|
125
|
-
/**
|
|
126
|
-
* Get the default model id for a provider (from builtin-providers).
|
|
127
|
-
* Replaces `this.registry.getProvider(provider)?.defaultModel`.
|
|
128
|
-
*/
|
|
129
109
|
getProviderDefaultModel(providerId: string): string | undefined;
|
|
130
|
-
/**
|
|
131
|
-
* List all known provider definitions (builtin + catalog).
|
|
132
|
-
* Replaces `this.registry.listProviders()`.
|
|
133
|
-
*/
|
|
134
110
|
listProviderDefs(): ProviderDef[];
|
|
135
|
-
/**
|
|
136
|
-
* Resolve an API key for a provider via env vars (fallback when KeyPool has no key).
|
|
137
|
-
* Replaces `this.registry.resolveApiKey(providerId)`.
|
|
138
|
-
*/
|
|
139
111
|
resolveProviderApiKey(providerId: string): string | undefined;
|
|
140
|
-
/**
|
|
141
|
-
* Register a callback to be notified when registry state changes
|
|
142
|
-
* (binding change, model add/remove, key change, save/load).
|
|
143
|
-
* Returns an unsubscribe function.
|
|
144
|
-
*/
|
|
145
112
|
onChange(callback: RegistryChangeCallback): () => void;
|
|
146
|
-
private emitChange;
|
|
147
|
-
/**
|
|
148
|
-
* Snapshot one available key for a provider WITHOUT holding it (for legacy flat-map consumers).
|
|
149
|
-
* Returns null if no healthy key exists.
|
|
150
|
-
*/
|
|
151
113
|
getKeyForProvider(providerId: string): string | null;
|
|
152
|
-
/**
|
|
153
|
-
* Snapshot one key per provider (for media tools flat apiKeys map).
|
|
154
|
-
*/
|
|
155
114
|
snapshotProviderKeys(): Record<string, string>;
|
|
156
115
|
private getProviderBaseUrl;
|
|
116
|
+
private loadModelState;
|
|
117
|
+
private exportModelState;
|
|
118
|
+
private emitChange;
|
|
157
119
|
}
|
|
158
|
-
export declare const ALL_PURPOSES: ModelPurpose[];
|
|
159
|
-
/**
|
|
160
|
-
* Get the global ModelRegistry singleton.
|
|
161
|
-
* Lazily loads from settings.json on first access.
|
|
162
|
-
*/
|
|
163
120
|
export declare function getModelRegistry(): ModelRegistry;
|
|
164
|
-
/**
|
|
165
|
-
* Reset the global singleton (for testing or hot-reload).
|
|
166
|
-
*/
|
|
167
121
|
export declare function resetModelRegistry(): void;
|
|
168
|
-
/**
|
|
169
|
-
* Derive which purposes a model supports from its ModelInfo metadata.
|
|
170
|
-
* Layer 1: ModelCatalog (models.dev) modalities → purpose mapping.
|
|
171
|
-
*
|
|
172
|
-
* Priority: mediaType field → vision field → fallback to textGeneration.
|
|
173
|
-
*/
|
|
174
122
|
export declare function deriveModelPurposes(model: ModelInfo): ModelPurpose[];
|
|
175
|
-
/**
|
|
176
|
-
* Layer 3: Name-based heuristic for models not in ModelCatalog or builtin-providers.
|
|
177
|
-
*/
|
|
178
|
-
export declare function heuristicModelPurposes(modelId: string): ModelPurpose[];
|
|
179
|
-
/**
|
|
180
|
-
* Refresh models from ModelCatalog (remote models.dev + disk cache) for given providers.
|
|
181
|
-
* Merges discovered models into the registry without overwriting user-modified entries.
|
|
182
|
-
*/
|
|
183
|
-
export declare function refreshModelsFromCatalog(registry: ModelRegistry, providerIds: string[]): void;
|
|
184
|
-
/**
|
|
185
|
-
* Force refresh the ModelCatalog from remote, then merge into registry.
|
|
186
|
-
*/
|
|
187
|
-
export declare function forceRefreshCatalog(registry: ModelRegistry, providerIds: string[]): Promise<boolean>;
|
|
@@ -6,3 +6,5 @@ export { maybeGenerateReaction, generateLLMReaction, type ReactionPool, type LLM
|
|
|
6
6
|
export { petContextInjection } from "./pet-context-injection.js";
|
|
7
7
|
export { PetGrowthEngine, type GrowthEvent, type MoltResult, type PetAbility } from "./pet-growth-engine.js";
|
|
8
8
|
export { loadPetFile, validatePetManifest, sanitizeSvg, type PetManifest, type PetFileBundle } from "./pet-file-loader.js";
|
|
9
|
+
export { buildSkeletonPrompt, parseSkeleton, renderState, extractColors, validateSkeleton, STATE_ANIMATION_MAP, type PetSkeleton, type SkeletonPart, type StateAnimationParams } from "./pet-skeleton.js";
|
|
10
|
+
export { evaluateConsistency, evaluateConsistencyWithVision, structuralConsistencyScore, buildConsistencyPrompt, parseConsistencyResponse, buildRetryPrompt, DEFAULT_THRESHOLD, DEFAULT_MAX_RETRIES, type ConsistencyResult, type ConsistencyReport, type ConsistencyOptions } from "./pet-consistency.js";
|