qlogicagent 2.9.0 → 2.10.0
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 +13 -13
- package/dist/cli.js +336 -264
- package/dist/index.js +307 -235
- 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/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/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/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>;
|
|
@@ -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;
|
|
@@ -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";
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pet Consistency Scorer — Vision model evaluation for character consistency (design §14.4).
|
|
3
|
+
*
|
|
4
|
+
* After generating SVGs (via skeleton or direct LLM), this module:
|
|
5
|
+
* 1. Renders each SVG state to compare against the reference/base
|
|
6
|
+
* 2. Uses Vision model to score visual consistency (0-10)
|
|
7
|
+
* 3. Retries generation if score < threshold
|
|
8
|
+
*
|
|
9
|
+
* Strategies used:
|
|
10
|
+
* - Structured Prompt: fixed character description + only vary action
|
|
11
|
+
* - Post-processing validation: Vision model scores after generation
|
|
12
|
+
* - Part presence check: verify required DOM structure exists
|
|
13
|
+
*/
|
|
14
|
+
export interface ConsistencyResult {
|
|
15
|
+
state: string;
|
|
16
|
+
score: number;
|
|
17
|
+
passed: boolean;
|
|
18
|
+
feedback?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface ConsistencyReport {
|
|
21
|
+
overallScore: number;
|
|
22
|
+
results: ConsistencyResult[];
|
|
23
|
+
passedAll: boolean;
|
|
24
|
+
retryStates: string[];
|
|
25
|
+
}
|
|
26
|
+
export interface ConsistencyOptions {
|
|
27
|
+
/** Minimum score to pass (0-10). Default: 6 */
|
|
28
|
+
threshold?: number;
|
|
29
|
+
/** Max retries per state. Default: 2 */
|
|
30
|
+
maxRetries?: number;
|
|
31
|
+
/** Reference SVG (base/idle state) to compare against */
|
|
32
|
+
referenceSvg: string;
|
|
33
|
+
/** Character description for context */
|
|
34
|
+
characterDesc: string;
|
|
35
|
+
}
|
|
36
|
+
declare const DEFAULT_THRESHOLD = 6;
|
|
37
|
+
declare const DEFAULT_MAX_RETRIES = 2;
|
|
38
|
+
/**
|
|
39
|
+
* Quick structural check: verify the SVG has consistent DOM structure.
|
|
40
|
+
* Returns a score 0-10 based on structural similarity to reference.
|
|
41
|
+
*/
|
|
42
|
+
export declare function structuralConsistencyScore(referenceSvg: string, candidateSvg: string): number;
|
|
43
|
+
/**
|
|
44
|
+
* Build the Vision model prompt for consistency scoring.
|
|
45
|
+
*/
|
|
46
|
+
export declare function buildConsistencyPrompt(characterDesc: string, stateName: string): string;
|
|
47
|
+
/**
|
|
48
|
+
* Parse Vision model response to extract score and feedback.
|
|
49
|
+
*/
|
|
50
|
+
export declare function parseConsistencyResponse(response: string): {
|
|
51
|
+
score: number;
|
|
52
|
+
feedback: string;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Run the full consistency check pipeline.
|
|
56
|
+
* Takes generated SVGs, scores each against reference, returns report.
|
|
57
|
+
*
|
|
58
|
+
* The `visionScore` callback is optional — if not provided, only structural
|
|
59
|
+
* scoring is used (faster, no LLM cost, but less accurate).
|
|
60
|
+
*/
|
|
61
|
+
export declare function evaluateConsistency(referenceSvg: string, stateSvgs: Record<string, string>, options?: {
|
|
62
|
+
threshold?: number;
|
|
63
|
+
}): ConsistencyReport;
|
|
64
|
+
/**
|
|
65
|
+
* Async consistency evaluation using Vision model for high-accuracy scoring.
|
|
66
|
+
* Falls back to structural scoring if Vision call fails.
|
|
67
|
+
*/
|
|
68
|
+
export declare function evaluateConsistencyWithVision(referenceSvg: string, stateSvgs: Record<string, string>, visionScore: (referenceSvg: string, candidateSvg: string, state: string) => Promise<{
|
|
69
|
+
score: number;
|
|
70
|
+
feedback: string;
|
|
71
|
+
}>, options?: {
|
|
72
|
+
threshold?: number;
|
|
73
|
+
}): Promise<ConsistencyReport>;
|
|
74
|
+
/**
|
|
75
|
+
* Retry strategy: regenerate failed states with enhanced prompt.
|
|
76
|
+
* Returns a prompt modifier string that emphasizes consistency.
|
|
77
|
+
*/
|
|
78
|
+
export declare function buildRetryPrompt(characterDesc: string, state: string, feedback: string, attempt: number): string;
|
|
79
|
+
export { DEFAULT_THRESHOLD, DEFAULT_MAX_RETRIES };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PetSkeleton — SVG skeleton parameterization system (design §14.3 Plan A).
|
|
3
|
+
*
|
|
4
|
+
* Core idea: generate ONE base skeleton via LLM, then render each state by
|
|
5
|
+
* only varying animation parameters (pose, expression, effects).
|
|
6
|
+
* This ensures visual consistency across states without repeated LLM calls.
|
|
7
|
+
*
|
|
8
|
+
* Pipeline:
|
|
9
|
+
* 1. LLM generates a base SVG skeleton with labeled parts
|
|
10
|
+
* 2. We parse and decompose it into movable parts
|
|
11
|
+
* 3. Each state applies different CSS @keyframes to the same skeleton
|
|
12
|
+
*/
|
|
13
|
+
export interface PetSkeleton {
|
|
14
|
+
/** Raw SVG of the base pose (idle-like neutral pose) */
|
|
15
|
+
baseSvg: string;
|
|
16
|
+
/** Extracted part IDs found in the SVG */
|
|
17
|
+
parts: SkeletonPart[];
|
|
18
|
+
/** Color palette extracted from the base SVG */
|
|
19
|
+
colors: {
|
|
20
|
+
primary: string;
|
|
21
|
+
secondary: string;
|
|
22
|
+
accent?: string;
|
|
23
|
+
};
|
|
24
|
+
/** Character description used to generate this skeleton */
|
|
25
|
+
characterDesc: string;
|
|
26
|
+
}
|
|
27
|
+
export interface SkeletonPart {
|
|
28
|
+
id: string;
|
|
29
|
+
type: "body" | "head" | "left-eye" | "right-eye" | "left-arm" | "right-arm" | "accessory" | "effect";
|
|
30
|
+
/** CSS selector for this part within the SVG */
|
|
31
|
+
selector: string;
|
|
32
|
+
}
|
|
33
|
+
export interface StateAnimationParams {
|
|
34
|
+
body: BodyAnimation;
|
|
35
|
+
eyes: EyeExpression;
|
|
36
|
+
arms: ArmPose;
|
|
37
|
+
effects?: EffectOverlay[];
|
|
38
|
+
}
|
|
39
|
+
export type BodyAnimation = "breathe" | "sway" | "lean" | "tilt" | "shrink" | "bounce" | "still" | "float";
|
|
40
|
+
export type EyeExpression = "blink" | "lookup" | "focus" | "closed" | "wide" | "sparkle" | "dizzy" | "sleepy";
|
|
41
|
+
export type ArmPose = "sway" | "still" | "hammer" | "wave" | "raised" | "covering" | "hold" | "eat";
|
|
42
|
+
export type EffectOverlay = "zzz" | "sparkle" | "sweat" | "question" | "ellipsis" | "heart" | "exclaim" | "music";
|
|
43
|
+
export declare const STATE_ANIMATION_MAP: Record<string, StateAnimationParams>;
|
|
44
|
+
/**
|
|
45
|
+
* Generate the base skeleton prompt for LLM.
|
|
46
|
+
* The LLM generates ONE SVG with labeled groups that we can animate differently per state.
|
|
47
|
+
*/
|
|
48
|
+
export declare function buildSkeletonPrompt(characterDesc: string): string;
|
|
49
|
+
/**
|
|
50
|
+
* Parse a skeleton SVG and identify parts.
|
|
51
|
+
*/
|
|
52
|
+
export declare function parseSkeleton(svgText: string): SkeletonPart[];
|
|
53
|
+
/**
|
|
54
|
+
* Render a specific state by injecting CSS animations into the skeleton SVG.
|
|
55
|
+
* The skeleton remains identical — only the <style> block changes.
|
|
56
|
+
*/
|
|
57
|
+
export declare function renderState(skeleton: PetSkeleton, state: string): string;
|
|
58
|
+
/**
|
|
59
|
+
* Extract primary/secondary colors from an SVG string.
|
|
60
|
+
* Looks for fill/stop-color attributes and picks the two most frequent.
|
|
61
|
+
*/
|
|
62
|
+
export declare function extractColors(svgText: string): {
|
|
63
|
+
primary: string;
|
|
64
|
+
secondary: string;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Validate that a skeleton SVG has the required part structure.
|
|
68
|
+
* Returns list of missing parts (empty = valid).
|
|
69
|
+
*/
|
|
70
|
+
export declare function validateSkeleton(svgText: string): string[];
|
|
@@ -116,6 +116,16 @@ export declare class LocalMemoryProvider implements MemoryProvider {
|
|
|
116
116
|
date: string;
|
|
117
117
|
}>;
|
|
118
118
|
};
|
|
119
|
+
/**
|
|
120
|
+
* List full memory records for a user (paginated). Used by the memory atlas
|
|
121
|
+
* visualization, which needs the complete record shape (confidence, importance,
|
|
122
|
+
* accessCount, timestamps, tags) to drive its 3D rendering.
|
|
123
|
+
*/
|
|
124
|
+
list(userId: string, options?: {
|
|
125
|
+
page?: number;
|
|
126
|
+
pageSize?: number;
|
|
127
|
+
activeOnly?: boolean;
|
|
128
|
+
}): import("./local-store.js").MemoryRecord[];
|
|
119
129
|
/**
|
|
120
130
|
* Find memories by event date (±tolerance). For temporal context retrieval.
|
|
121
131
|
*/
|