qlogicagent 2.11.2 → 2.11.3
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/cli.js +290 -289
- package/dist/index.js +292 -291
- package/dist/pet-contracts.js +1 -1
- package/dist/protocol.js +1 -1
- package/dist/types/cli/handlers/session-handler.d.ts +3 -3
- package/dist/types/cli/media-runtime-facade.d.ts +8 -0
- package/dist/types/cli/pet-runtime.d.ts +1 -3
- package/dist/types/cli/session-query-service.d.ts +1 -0
- package/dist/types/protocol/wire/acp-protocol.d.ts +6 -0
- package/dist/types/protocol/wire/gateway-rpc.d.ts +1 -0
- package/dist/types/protocol/wire/pet-contracts.d.ts +3 -2
- package/dist/types/runtime/infra/acp-detector.d.ts +21 -0
- package/dist/types/runtime/infra/project-store.d.ts +1 -0
- package/dist/types/runtime/pet/hatch-pet-runner.d.ts +18 -0
- package/dist/types/runtime/pet/index.d.ts +12 -5
- package/dist/types/runtime/pet/pet-file-loader.d.ts +1 -1
- package/dist/types/runtime/pet/pet-growth-engine.d.ts +2 -58
- package/dist/types/runtime/pet/pet-profile-service.d.ts +5 -7
- package/dist/types/runtime/pet/pet-reaction-engine.d.ts +11 -0
- package/dist/types/runtime/pet/pet-soul-service.d.ts +2 -2
- package/dist/types/runtime/pet/pet-types.d.ts +1 -32
- package/dist/types/runtime/pet/petdex-asset.d.ts +3 -109
- package/dist/types/runtime/pet/petdex-forge-service.d.ts +3 -94
- package/dist/types/runtime/prompt/fresh-workspace-evidence.d.ts +1 -0
- package/dist/types/runtime/session/session-locator.d.ts +2 -0
- package/dist/types/runtime/session/session-persistence.d.ts +17 -3
- package/dist/types/skills/tools/petdex-create-tool.d.ts +2 -16
- package/dist/vendor/hatch-pet/LICENSE.txt +201 -0
- package/dist/vendor/hatch-pet/NOTICE.md +25 -0
- package/dist/vendor/hatch-pet/references/animation-rows.md +29 -0
- package/dist/vendor/hatch-pet/references/codex-pet-contract.md +35 -0
- package/dist/vendor/hatch-pet/references/qa-rubric.md +66 -0
- package/dist/vendor/hatch-pet/scripts/compose_atlas.py +169 -0
- package/dist/vendor/hatch-pet/scripts/derive_running_left_from_running_right.py +150 -0
- package/dist/vendor/hatch-pet/scripts/extract_strip_frames.py +408 -0
- package/dist/vendor/hatch-pet/scripts/inspect_frames.py +256 -0
- package/dist/vendor/hatch-pet/scripts/make_contact_sheet.py +96 -0
- package/dist/vendor/hatch-pet/scripts/prepare_pet_run.py +830 -0
- package/dist/vendor/hatch-pet/scripts/render_animation_previews.py +78 -0
- package/dist/vendor/hatch-pet/scripts/validate_atlas.py +157 -0
- package/package.json +5 -3
- package/dist/types/runtime/pet/pet-reaction-service.d.ts +0 -33
package/dist/pet-contracts.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=["idle","
|
|
1
|
+
var e=["idle","running-right","running-left","waving","jumping","failed","waiting","running","review"],t="qlogic.petdex.asset.v1",i="qlogic.petdex.validation.v1",n={format:"webp",columns:8,rows:9,frameCount:72,cellWidth:192,cellHeight:208,width:1536,height:1872};export{e as PETDEX_ANIMATION_IDS,n as PETDEX_ATLAS_CONTRACT,t as PETDEX_SCHEMA,i as PETDEX_VALIDATION_SCHEMA};
|
package/dist/protocol.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var q=["idle","thinking","working","done","happy","error","attention","dragging","sleeping"];var Y="1.0.0",d={PARSE_ERROR:-32700,INVALID_REQUEST:-32600,METHOD_NOT_FOUND:-32601,INVALID_PARAMS:-32602,INTERNAL_ERROR:-32603,TURN_ABORTED:-32e3,TURN_TIMEOUT:-32001,LLM_ERROR:-32010,LLM_AUTH_ERROR:-32011,LLM_RATE_LIMIT:-32012,LLM_QUOTA_EXHAUSTED:-32013,LLM_MODEL_NOT_FOUND:-32014,TOOL_INVOKE_FAILED:-32020,TOOL_TIMEOUT:-32021,PROTOCOL_MISMATCH:-32030,REQUEST_DEADLINE_EXCEEDED:-32040,REQUEST_CANCELLED:-32041,REQUEST_DEDUPED:-32042,REQUEST_IDEMPOTENCY_REQUIRED:-32043},H={REQUEST:"tool.approval.request"};function P(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&t.method.length>0}function C(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&(typeof t.id=="string"||typeof t.id=="number")&&!("method"in t)}function I(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function G(e){let t;try{t=JSON.parse(e)}catch{return null}return C(t)||P(t)||I(t)?t:null}import{randomUUID as z}from"node:crypto";var X=["settings.list","settings.get","settings.validate","provider.list","config.get","config.tunables","tools.list","todos.list","tasks.list","agents.list","agents.get","agents.processes","agents.scan","assistants.list","assistants.resolve","session.list","session.get","session.resolve","thread.list","project.list","files.list","files.gitStatus","instructions.list","instructions.read","skills.list","skills.stats","memory.atlas","memory.activity","memory.list","memory.read","memory.search","media.listModels","media.status","pet.status","agent.health","agent.metrics"],J=new Set(["memory.dream","memory.propose","memory.consolidate","media.stt","pet.forge","pet.asset.import","solo.start","solo.evaluate","product.plan","product.create","product.message"]),Q=["memory.","pet.","usage."],$=new Set(["memory.atlas","memory.activity","memory.list","memory.read","memory.search","memory.attachment.locate","memory.attachment.adopt","pet.status"]);function f(e){return J.has(e)?{channel:"task",mutability:"write",defaultTimeoutMs:12e4}:X.some(t=>e===t||e.startsWith(`${t}.`)||e.startsWith(t))?{channel:"query",mutability:"read",defaultTimeoutMs:1e4}:{channel:"task",mutability:"write",defaultTimeoutMs:3e4}}function h(e){return $.has(e)||f(e).mutability==="read"?!1:Q.some(t=>e.startsWith(t))}function Z(e,t={}){let r=t.now??Date.now(),n=f(e),o=t.timeoutMs??n.defaultTimeoutMs;return{requestId:t.requestId??z(),createdAt:r,deadlineAt:r+o,channel:t.channel??n.channel,idempotencyKey:t.idempotencyKey,traceId:t.traceId}}function v(e,t=Date.now()){let r=e.meta;if(!r||typeof r!="object")return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta is required."}};if(typeof r.requestId!="string"||r.requestId.length===0)return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.requestId is required."}};if(r.channel!=="query"&&r.channel!=="task")return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.channel must be query or task."}};if(typeof r.createdAt!="number"||!Number.isFinite(r.createdAt))return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.createdAt is required."}};if(typeof r.deadlineAt!="number"||!Number.isFinite(r.deadlineAt))return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.deadlineAt is required."}};if(r.deadlineAt<=t)return{ok:!1,error:{code:d.REQUEST_DEADLINE_EXCEEDED,message:"RPC request deadline has already expired."}};let n=f(e.method).channel;return r.channel!==n?{ok:!1,error:{code:d.INVALID_REQUEST,message:`RPC request channel mismatch: expected ${n}, got ${r.channel}.`}}:h(e.method)&&(typeof r.idempotencyKey!="string"||r.idempotencyKey.length===0)?{ok:!1,error:{code:d.REQUEST_IDEMPOTENCY_REQUIRED,message:`RPC method ${e.method} requires meta.idempotencyKey.`}}:{ok:!0,meta:r}}var R=class{now;active=new Map;idempotency=new Map;counters={completedRequests:0,cancelledRequests:0,deadlineExceededRequests:0,dedupedRequests:0,lateResponsesDropped:0,invalidRequests:0};constructor(t={}){this.now=t.now??(()=>Date.now())}begin(t,r){let n=v({method:t,meta:r},this.now());if(!n.ok)return this.counters.invalidRequests+=1,{status:"rejected",error:n.error};if(r.idempotencyKey){let o=this.idempotency.get(r.idempotencyKey);if(o)return this.counters.dedupedRequests+=1,o.error?{status:"deduped",error:o.error}:{status:"deduped",result:o.result}}return this.active.set(r.requestId,{method:t,meta:r,cancelled:!1,startedAt:this.now()}),{status:"started"}}cancel(t,r="cancelled"){let n=this.active.get(t);return!n||n.cancelled?!1:(n.cancelled=!0,n.cancelReason=r,this.counters.cancelledRequests+=1,!0)}expire(t){return this.active.get(t)?(this.active.delete(t),this.counters.deadlineExceededRequests+=1,!0):!1}settle(t,r,n){let o=this.active.get(t);return o?(this.active.delete(t),o.cancelled?(this.counters.lateResponsesDropped+=1,{accepted:!1,reason:"cancelled"}):o.meta.deadlineAt<=this.now()?(this.counters.deadlineExceededRequests+=1,this.counters.lateResponsesDropped+=1,{accepted:!1,reason:"deadline_exceeded"}):(this.counters.completedRequests+=1,o.meta.idempotencyKey&&this.idempotency.set(o.meta.idempotencyKey,{result:r,error:n,settledAt:this.now()}),{accepted:!0})):{accepted:!1,reason:"unknown"}}metrics(){return{activeRequests:this.active.size,...this.counters}}};var ee=["agent.health","agent.metrics","agent.cancel","session.list","session.get","session.create","session.update","session.delete","session.deleteAll","session.archive","session.moveToProject","session.getState","session.switchProject","session.getMessages","project.list","project.create","project.delete","project.rename","project.archive","project.unarchive","project.update","project.archiveByGroup","project.purgeAll","instructions.list","instructions.read","instructions.write","instructions.delete","files.list","files.read","files.create","files.rename","files.delete","files.gitStatus","skills.list","assistants.list","assistants.resolve","assistants.cloneBuiltin","assistants.upsert","assistants.create","assistants.update","assistants.delete","assistants.setState","memory.list-files","memory.atlas","memory.activity","memory.observe","memory.propose","memory.consolidate","memory.update","memory.attachment.adopt","memory.attachment.locate"];var M=["turn.start","turn.delta","turn.end","turn.error","turn.recovery","turn.tool_call","turn.tool_result","turn.tool_blocked","turn.reasoning_delta","turn.approval_request","turn.skill_instruction","turn.ask_user","turn.media_result","turn.media_progress","turn.media_usage","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.asset.updated","system.activity","workflow.created","workflow.updated","workflow.deleted","workflow.runStarted","workflow.runCompleted","workflow.runFailed"],k=["solo.progress","solo.agentDelta","solo.agentUsage","solo.agentDiff","solo.evaluation","product.taskStarted","product.taskOutput","product.taskCompleted","product.taskFailed","product.budgetUpdate","product.checkpointed","product.dagTopology","plan.interrupted"],te=[...M,...k];var re=1,ne={INITIALIZE:"initialize",SESSION_NEW:"session/new",SESSION_PROMPT:"session/prompt",SESSION_CLOSE:"session/close",SESSION_SET_CONFIG:"session/set_config_option",SESSION_SET_MODEL:"session/set_model",SESSION_SET_MODE:"session/set_mode",SESSION_LOAD:"session/load",SESSION_CANCEL:"session/cancel",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"},ie={ABORT:"x/abort",DREAM:"x/dream",AGENTS_LIST:"x/agents.list",SOLO_START:"x/solo.start",SOLO_STATUS:"x/solo.status",SOLO_SELECT:"x/solo.select",SOLO_CANCEL:"x/solo.cancel",PRODUCT_CREATE:"x/product.create",PRODUCT_PLAN:"x/product.plan",PRODUCT_CONFIRM:"x/product.confirm",PRODUCT_MESSAGE:"x/product.message",PRODUCT_RESUME:"x/product.resume",PRODUCT_PAUSE:"x/product.pause",PRODUCT_CANCEL:"x/product.cancel",PRODUCT_ROLLBACK:"x/product.rollback",PRODUCT_STATUS:"x/product.status",SOLO_SUBSCRIBE:"x/solo.subscribe",SOLO_MESSAGE:"x/solo.message",SOLO_EVALUATE:"x/solo.evaluate",PRODUCT_SUBSCRIBE:"x/product.subscribe",TEAM_DELEGATE:"x/team.delegate"},x={USER_MESSAGE_CHUNK:"user_message_chunk",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",CURRENT_MODE_UPDATE:"current_mode_update"},oe={X_SKILL_INSTRUCTION:"x_skill_instruction",X_SESSION_INFO:"x_session_info",X_RELAY:"x_relay"};function O(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&"id"in t}function N(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function w(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&"id"in t&&!("method"in t)}function se(e){let t;try{t=JSON.parse(e)}catch{return null}return w(t)||O(t)||N(t)?t:null}function ae(e){return Object.values(x).includes(e)}function pe(e){return e.startsWith("x_")}var E=["gatewayVersion","toolNamespaces","workspaceIds","installedCapabilities","enabledCapabilities","features","approvalMode","toolManifests","skillManifests","pluginManifests","mcpManifests","approvalPolicy","workspaceSummaries"];function g(e){return e?e.map(t=>({...t})):void 0}function S(e){return e?e.map(t=>({...t})):void 0}function ce(e){return e?[...e]:void 0}function D(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))].sort((t,r)=>t.localeCompare(r))}function m(e){return{...e,toolNamespaces:[...e.toolNamespaces],workspaceIds:[...e.workspaceIds],...e.changedSections?{changedSections:[...e.changedSections]}:{},...e.installedCapabilities?{installedCapabilities:[...e.installedCapabilities]}:{},...e.enabledCapabilities?{enabledCapabilities:[...e.enabledCapabilities]}:{},...e.features?{features:[...e.features]}:{},...e.toolManifests?{toolManifests:g(e.toolManifests)}:{},...e.skillManifests?{skillManifests:g(e.skillManifests)}:{},...e.pluginManifests?{pluginManifests:g(e.pluginManifests)}:{},...e.mcpManifests?{mcpManifests:g(e.mcpManifests)}:{},...e.approvalPolicy?{approvalPolicy:{...e.approvalPolicy}}:{},...e.workspaceSummaries?{workspaceSummaries:S(e.workspaceSummaries)}:{}}}function le(e){let{previous:t,update:r}=e;return!(r.syncMode==="diff"&&t&&(!r.baseSnapshotVersion||t.snapshotVersion===r.baseSnapshotVersion))||!t?m(r):{...m(t),snapshotVersion:r.snapshotVersion,updatedAt:r.updatedAt,...r.gatewayVersion!==void 0?{gatewayVersion:r.gatewayVersion}:{},...r.syncMode?{syncMode:r.syncMode}:{},...r.baseSnapshotVersion?{baseSnapshotVersion:r.baseSnapshotVersion}:{},...r.changedSections?{changedSections:[...r.changedSections]}:{},...r.toolNamespaces?{toolNamespaces:[...r.toolNamespaces]}:{},...r.workspaceIds?{workspaceIds:[...r.workspaceIds]}:{},...r.installedCapabilities?{installedCapabilities:[...r.installedCapabilities]}:{},...r.enabledCapabilities?{enabledCapabilities:[...r.enabledCapabilities]}:{},...r.features?{features:[...r.features]}:{},...r.approvalMode?{approvalMode:r.approvalMode}:{},...r.toolManifests?{toolManifests:g(r.toolManifests)}:{},...r.skillManifests?{skillManifests:g(r.skillManifests)}:{},...r.pluginManifests?{pluginManifests:g(r.pluginManifests)}:{},...r.mcpManifests?{mcpManifests:g(r.mcpManifests)}:{},...r.approvalPolicy?{approvalPolicy:{...r.approvalPolicy}}:{},...r.workspaceSummaries?{workspaceSummaries:S(r.workspaceSummaries)}:{}}}function de(e){return D(e.map(t=>t.name.split(".")[0]??"").filter(Boolean))}function ue(e){return D(e.map(t=>t.id))}function ge(e){let{previous:t,current:r}=e;if(!t)return{...m(r),syncMode:"full"};if(t.snapshotVersion===r.snapshotVersion)return null;let n=E.filter(s=>JSON.stringify(t[s])!==JSON.stringify(r[s]));if(n.length===E.length)return{...m(r),syncMode:"full"};let o={snapshotVersion:r.snapshotVersion,updatedAt:r.updatedAt,syncMode:"diff",baseSnapshotVersion:t.snapshotVersion,changedSections:n,toolNamespaces:[...r.toolNamespaces],workspaceIds:[...r.workspaceIds]},c=o;for(let s of n){let i=r[s];if(i!==void 0)switch(s){case"toolNamespaces":case"workspaceIds":case"installedCapabilities":case"enabledCapabilities":case"features":c[s]=ce(i);break;case"approvalPolicy":c[s]={...i};break;case"workspaceSummaries":c[s]=S(i);break;case"toolManifests":case"skillManifests":case"pluginManifests":case"mcpManifests":c[s]=g(i);break;default:c[s]=i;break}}return o}var me=["web_search","web_fetch","deep_research","browser_execution"],ye=["web-intelligence","browser-execution"],fe=["discovery","read-url","multi-source-research","interactive-browser"],Ae=["stateless","render-backend","interactive-session"],Re=["stateless","stateless-single-step","stateful-session-required"],Ee=["required","conditional","none"],Se=["browser-read","browser-authenticated-read","browser-state-changing"];var _e=["read-page","read-authenticated-page","fill-form","submit-form","download-file","reuse-session"],be=["web_search","web_fetch","deep_research","blocked"],Te=["requires-interaction","requires-login-state","requires-rendered-dom","requires-persistent-session","requires-state-changing-action"],Pe=["none","same-capability-once","degrade-only"];var Ce=["prefetch","sync_turn","on_pre_compress","on_session_end","on_delegation","on_memory_write"],Ie=["turn","sidechain","compress","session-end","agent-remember","auto-extract","implicit-extract","profile-extraction","dream"],he=["observe-only","parent-write","deny"];var ve=2,a={gatewayImage:"gateway.image.desktop-slim",whisperModelTiny:"speech.whisper.model.tiny",ffmpegWin32X64:"runtime.ffmpeg.win32-x64",nodeWin32X64:"runtime.node.win32-x64",dockerDesktopWin32X64:"runtime.docker-desktop.win32-x64",dockerDesktopDarwinX64:"runtime.docker-desktop.darwin-x64",dockerDesktopDarwinArm64:"runtime.docker-desktop.darwin-arm64"},y={desktopDockerBridge:"desktop.docker-bridge",desktopEmbeddedWin32X64:"desktop.embedded.win32-x64"};function U(e){return{...e,artifacts:e.artifacts.map(t=>({...t}))}}function Me(e){return{...e,assetIds:[...e.assetIds]}}function W(){return{[y.desktopDockerBridge]:{id:y.desktopDockerBridge,title:"Desktop Docker Bridge",platform:"any",assetIds:[a.gatewayImage,a.dockerDesktopWin32X64,a.dockerDesktopDarwinX64,a.dockerDesktopDarwinArm64],description:"Docker bridge mode downloads the desktop slim gateway image on demand."},[y.desktopEmbeddedWin32X64]:{id:y.desktopEmbeddedWin32X64,title:"Desktop Embedded Win32 x64",platform:"win32-x64",assetIds:[a.nodeWin32X64,a.ffmpegWin32X64,a.whisperModelTiny],description:"Embedded desktop mode requires the bundled Node/FFmpeg runtimes and the whisper model asset."}}}function K(e,t){return e.assets[t]}function V(e,t){return e.profiles[t]}function ke(e,t){let r=V(e,t);return r?r.assetIds.map(n=>K(e,n)).filter(n=>!!n):[]}function xe(e,t){return e.assets[t.id]=U(t),F(e)}function _(e){if(!e)return;let t=e.artifacts[0];if(!(!t?.url||!t.sha256||typeof t.size!="number"))return{version:e.version,sha256:t.sha256,size:t.size,url:t.url}}function F(e){let t=_(e.assets[a.gatewayImage]),r=_(e.assets[a.whisperModelTiny]);return{...e,gateway:t,whisperModel:r}}function L(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 Oe(e){let t=e&&typeof e=="object"?e:{},r={},n=t.assets&&typeof t.assets=="object"?t.assets:{};for(let[i,p]of Object.entries(n)){if(!p||typeof p!="object")continue;let u=p;!u.id||!Array.isArray(u.artifacts)||(r[i]=U(u))}if(!r[a.gatewayImage]&&t.gateway&&typeof t.gateway=="object"){let i=L(t.gateway,{id:a.gatewayImage,title:"OpenClaw Gateway Image (Desktop Slim)",kind:"container-image",delivery:"remote",platform:"any",description:"Desktop Docker mode gateway image."});i&&(r[i.id]=i)}if(!r[a.whisperModelTiny]&&t.whisperModel&&typeof t.whisperModel=="object"){let i=L(t.whisperModel,{id:a.whisperModelTiny,title:"Whisper Tiny Model",kind:"model",delivery:"remote",platform:"any",description:"Shared whisper.cpp tiny model asset for embedded desktop speech recognition."});i&&(r[i.id]=i)}let c={...W()},s=t.profiles&&typeof t.profiles=="object"?t.profiles:{};for(let[i,p]of Object.entries(s)){if(!p||typeof p!="object")continue;let u=p;!u.id||!Array.isArray(u.assetIds)||(c[i]=Me(u))}return F({schemaVersion:typeof t.schemaVersion=="number"?t.schemaVersion:2,channel:typeof t.channel=="string"?t.channel:void 0,publishedAt:typeof t.publishedAt=="string"?t.publishedAt:void 0,minElectronVersion:typeof t.minElectronVersion=="string"?t.minElectronVersion:void 0,releaseNotes:typeof t.releaseNotes=="string"?t.releaseNotes:void 0,assets:r,profiles:c})}var Ne=["pending","captured","failed","restored"],we=["file","directory","missing"],De=["metadata-only","workspace-copy","shadow-git"];var Le=["api-key","oauth","token","aws-sdk"],Ue=["rate_limit","auth","server_error","timeout","network","unknown"],We=["requiresOpenAiAnthropicToolPayload"];function Ke(e,t){return!e||typeof e!="object"||Array.isArray(e)?!1:e[t]===!0}var j="openai-codex";function A(e){let t=e.trim().toLowerCase();return t==="z.ai"||t==="z-ai"?"zai":t==="opencode-zen"?"opencode":t==="kimi-code"?"kimi-coding":t==="bedrock"||t==="aws-bedrock"?"amazon-bedrock":t==="bytedance"||t==="doubao"?"volcengine":t}function B(e){let t=A(e);return t==="volcengine-plan"?"volcengine":t==="qwen-coding"?"qwen":t==="byteplus-plan"?"byteplus":t}var Ve=B,Fe={anthropicToolSchemaMode:"native",anthropicToolChoiceMode:"native",providerFamily:"default",preserveAnthropicThinkingSignatures:!0,openAiCompatTurnValidation:!0,providerThoughtSignatureSanitization:!1,transcriptToolCallIdMode:"default",transcriptToolCallIdModelHints:[],providerThoughtSignatureModelHints:[],dropThinkingBlockModelHints:[]},je={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"},[j]:{providerFamily:"openai"},openrouter:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},opencode:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},kilocode:{providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]}};function b(e,t){let r=(e??"").toLowerCase();return!!r&&t.some(n=>r.includes(n))}function l(e){let t=A(e??"");return{...Fe,...je[t]}}function Be(e){return l(e).preserveAnthropicThinkingSignatures}function qe(e){let t=l(e);return t.anthropicToolSchemaMode!=="native"||t.anthropicToolChoiceMode!=="native"}function Ye(e){return l(e).anthropicToolSchemaMode==="openai-functions"}function He(e){return l(e).anthropicToolChoiceMode==="openai-string-modes"}function Ge(e){return l(e).openAiCompatTurnValidation}function ze(e){return l(e).providerFamily==="openai"}function Xe(e){return l(e).providerFamily==="anthropic"}function Je(e){return b(e.modelId,l(e.provider).dropThinkingBlockModelHints)}function Qe(e){let t=l(e.provider);return t.providerThoughtSignatureSanitization&&b(e.modelId,t.providerThoughtSignatureModelHints)}function $e(e,t){let r=l(e),n=r.transcriptToolCallIdMode;if(n==="strict9")return n;if(b(t,r.transcriptToolCallIdModelHints))return"strict9"}var T={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"],qwen:["DASHSCOPE_API_KEY","QWEN_API_KEY"],"qwen-coding":["DASHSCOPE_API_KEY","QWEN_API_KEY"],volcengine:["VOLCANO_ENGINE_API_KEY","ARK_API_KEY","DOUBAO_API_KEY"],"volcengine-plan":["VOLCANO_ENGINE_API_KEY","ARK_API_KEY","DOUBAO_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 Ze(){return[...new Set(Object.values(T).flat())]}function et(e){let t=A(e.provider),r=e.env??process.env,n=new Set(e.appliedEnvKeys??[]),o=i=>{let p=r[i]?.trim();if(!p)return null;let u=n.has(i)?`shell env: ${i}`:`env: ${i}`;return{apiKey:p,source:u}},c=e.resolveSpecialApiKey?.(t,r,n);if(c)return c;let s=T[t];if(!s||s.length===0)return null;for(let i of s){let p=o(i);if(p)return p}return null}export{ie as ACP_EXTENDED_METHODS,oe as ACP_EXTENDED_SESSION_UPDATE_TYPES,ne as ACP_METHODS,re as ACP_PROTOCOL_VERSION,x as ACP_SESSION_UPDATE_TYPES,H as AGENT_RPC_APPROVAL_METHODS,d as AGENT_RPC_ERROR_CODES,Y as AGENT_RPC_PROTOCOL_VERSION,k as AGENT_TEAM_WS_EVENT_NAMES,M as AGENT_WS_EVENT_NAMES,te as ALL_AGENT_WS_EVENT_NAMES,E as CAPABILITY_MANIFEST_DIFF_SECTIONS,ee as GATEWAY_RPC_METHODS,R as GatewayRpcContract,Ce as MEMORY_OBSERVATION_HOOK_VALUES,Ie as MEMORY_OBSERVATION_SOURCE_VALUES,he as MEMORY_WRITE_ACCESS_VALUES,De as MUTATION_CHECKPOINT_BACKEND_VALUES,we as MUTATION_CHECKPOINT_ENTRY_KIND_VALUES,Ne as MUTATION_CHECKPOINT_PHASE_VALUES,q as PETDEX_ANIMATION_IDS,Le as PROVIDER_RUNTIME_AUTH_MODE_VALUES,We as PROVIDER_RUNTIME_COMPAT_FLAG_VALUES,T as PROVIDER_RUNTIME_ENV_API_KEY_CANDIDATES,j as PROVIDER_RUNTIME_OPENAI_CODEX_PROVIDER_ID,Ue as PROVIDER_RUNTIME_VAULT_ERROR_TYPE_VALUES,ve as RESOURCE_MANIFEST_SCHEMA_VERSION,a as RUNTIME_ASSET_IDS,y as RUNTIME_PROFILE_IDS,_e as WEB_ACTION_SCOPE_VALUES,Ee as WEB_APPROVAL_DEFAULT_VALUES,ye as WEB_CAPABILITY_FAMILY_VALUES,me as WEB_CAPABILITY_ID_VALUES,be as WEB_DEGRADATION_TARGET_VALUES,Te as WEB_ESCALATION_REASON_VALUES,Ae as WEB_EXECUTION_MODE_VALUES,Se as WEB_POLICY_RISK_CLASS_VALUES,Pe as WEB_RETRY_POLICY_VALUES,Re as WEB_STATEFULNESS_VALUES,fe as WEB_TASK_MODE_VALUES,Z as buildAgentRpcMeta,f as classifyGatewayRpcMethod,m as cloneCapabilityManifestSnapshot,ge as createCapabilityManifestDiffPayload,W as createDefaultRuntimeResourceProfiles,de as deriveCapabilityToolNamespaces,ue as deriveCapabilityWorkspaceIds,_ as getManifestShortcutEntry,K as getRuntimeResourceAsset,V as getRuntimeResourceProfile,ke as getRuntimeResourceProfileAssets,N as isAcpJsonRpcNotification,O as isAcpJsonRpcRequest,w as isAcpJsonRpcResponse,I as isAgentRpcNotification,P as isAgentRpcRequest,C as isAgentRpcResponse,Xe as isAnthropicProviderRuntimeFamily,pe as isExtendedSessionUpdateType,ze as isOpenAiProviderRuntimeFamily,ae as isStandardSessionUpdateType,Ze as listProviderRuntimeEnvApiKeyNames,le as mergeCapabilityManifestSnapshot,A as normalizeProviderRuntimeId,B as normalizeProviderRuntimeIdForAuth,Oe as normalizeRuntimeResourceManifest,se as parseAcpMessage,G as parseAgentRpcMessage,Be as preservesProviderRuntimeAnthropicThinkingSignatures,Ke as readProviderRuntimeCompatFlag,v as requireGatewayRpcMeta,h as requiresIdempotencyKey,qe as requiresOpenAiCompatibleAnthropicToolPayloadForProviderRuntime,l as resolveProviderRuntimeCapabilities,et as resolveProviderRuntimeEnvApiKey,Ve as resolveProviderRuntimeKeyFamily,$e as resolveProviderRuntimeTranscriptToolCallIdMode,Je as shouldDropThinkingBlocksForProviderRuntimeModel,Qe as shouldSanitizeProviderRuntimeThoughtSignaturesForModel,Ge as supportsOpenAiCompatTurnValidationForProviderRuntime,xe as upsertRuntimeResourceAsset,Ye as usesOpenAiFunctionAnthropicToolSchemaForProviderRuntime,He as usesOpenAiStringModeAnthropicToolChoiceForProviderRuntime};
|
|
1
|
+
var q=["idle","running-right","running-left","waving","jumping","failed","waiting","running","review"];var Y="1.0.0",d={PARSE_ERROR:-32700,INVALID_REQUEST:-32600,METHOD_NOT_FOUND:-32601,INVALID_PARAMS:-32602,INTERNAL_ERROR:-32603,TURN_ABORTED:-32e3,TURN_TIMEOUT:-32001,LLM_ERROR:-32010,LLM_AUTH_ERROR:-32011,LLM_RATE_LIMIT:-32012,LLM_QUOTA_EXHAUSTED:-32013,LLM_MODEL_NOT_FOUND:-32014,TOOL_INVOKE_FAILED:-32020,TOOL_TIMEOUT:-32021,PROTOCOL_MISMATCH:-32030,REQUEST_DEADLINE_EXCEEDED:-32040,REQUEST_CANCELLED:-32041,REQUEST_DEDUPED:-32042,REQUEST_IDEMPOTENCY_REQUIRED:-32043},H={REQUEST:"tool.approval.request"};function P(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&t.method.length>0}function C(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&(typeof t.id=="string"||typeof t.id=="number")&&!("method"in t)}function I(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function G(e){let t;try{t=JSON.parse(e)}catch{return null}return C(t)||P(t)||I(t)?t:null}import{randomUUID as z}from"node:crypto";var X=["settings.list","settings.get","settings.validate","provider.list","config.get","config.tunables","tools.list","todos.list","tasks.list","agents.list","agents.get","agents.processes","agents.scan","assistants.list","assistants.resolve","session.list","session.get","session.resolve","thread.list","project.list","files.list","files.gitStatus","instructions.list","instructions.read","skills.list","skills.stats","memory.atlas","memory.activity","memory.list","memory.read","memory.search","media.listModels","media.status","pet.status","agent.health","agent.metrics"],J=new Set(["memory.dream","memory.propose","memory.consolidate","media.stt","pet.forge","pet.asset.import","solo.start","solo.evaluate","product.plan","product.create","product.message"]),Q=["memory.","pet.","usage."],$=new Set(["memory.atlas","memory.activity","memory.list","memory.read","memory.search","memory.attachment.locate","memory.attachment.adopt","pet.status"]);function f(e){return J.has(e)?{channel:"task",mutability:"write",defaultTimeoutMs:12e4}:X.some(t=>e===t||e.startsWith(`${t}.`)||e.startsWith(t))?{channel:"query",mutability:"read",defaultTimeoutMs:1e4}:{channel:"task",mutability:"write",defaultTimeoutMs:3e4}}function h(e){return $.has(e)||f(e).mutability==="read"?!1:Q.some(t=>e.startsWith(t))}function Z(e,t={}){let r=t.now??Date.now(),n=f(e),o=t.timeoutMs??n.defaultTimeoutMs;return{requestId:t.requestId??z(),createdAt:r,deadlineAt:r+o,channel:t.channel??n.channel,idempotencyKey:t.idempotencyKey,traceId:t.traceId}}function v(e,t=Date.now()){let r=e.meta;if(!r||typeof r!="object")return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta is required."}};if(typeof r.requestId!="string"||r.requestId.length===0)return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.requestId is required."}};if(r.channel!=="query"&&r.channel!=="task")return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.channel must be query or task."}};if(typeof r.createdAt!="number"||!Number.isFinite(r.createdAt))return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.createdAt is required."}};if(typeof r.deadlineAt!="number"||!Number.isFinite(r.deadlineAt))return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.deadlineAt is required."}};if(r.deadlineAt<=t)return{ok:!1,error:{code:d.REQUEST_DEADLINE_EXCEEDED,message:"RPC request deadline has already expired."}};let n=f(e.method).channel;return r.channel!==n?{ok:!1,error:{code:d.INVALID_REQUEST,message:`RPC request channel mismatch: expected ${n}, got ${r.channel}.`}}:h(e.method)&&(typeof r.idempotencyKey!="string"||r.idempotencyKey.length===0)?{ok:!1,error:{code:d.REQUEST_IDEMPOTENCY_REQUIRED,message:`RPC method ${e.method} requires meta.idempotencyKey.`}}:{ok:!0,meta:r}}var R=class{now;active=new Map;idempotency=new Map;counters={completedRequests:0,cancelledRequests:0,deadlineExceededRequests:0,dedupedRequests:0,lateResponsesDropped:0,invalidRequests:0};constructor(t={}){this.now=t.now??(()=>Date.now())}begin(t,r){let n=v({method:t,meta:r},this.now());if(!n.ok)return this.counters.invalidRequests+=1,{status:"rejected",error:n.error};if(r.idempotencyKey){let o=this.idempotency.get(r.idempotencyKey);if(o)return this.counters.dedupedRequests+=1,o.error?{status:"deduped",error:o.error}:{status:"deduped",result:o.result}}return this.active.set(r.requestId,{method:t,meta:r,cancelled:!1,startedAt:this.now()}),{status:"started"}}cancel(t,r="cancelled"){let n=this.active.get(t);return!n||n.cancelled?!1:(n.cancelled=!0,n.cancelReason=r,this.counters.cancelledRequests+=1,!0)}expire(t){return this.active.get(t)?(this.active.delete(t),this.counters.deadlineExceededRequests+=1,!0):!1}settle(t,r,n){let o=this.active.get(t);return o?(this.active.delete(t),o.cancelled?(this.counters.lateResponsesDropped+=1,{accepted:!1,reason:"cancelled"}):o.meta.deadlineAt<=this.now()?(this.counters.deadlineExceededRequests+=1,this.counters.lateResponsesDropped+=1,{accepted:!1,reason:"deadline_exceeded"}):(this.counters.completedRequests+=1,o.meta.idempotencyKey&&this.idempotency.set(o.meta.idempotencyKey,{result:r,error:n,settledAt:this.now()}),{accepted:!0})):{accepted:!1,reason:"unknown"}}metrics(){return{activeRequests:this.active.size,...this.counters}}};var ee=["agent.health","agent.metrics","agent.cancel","session.list","session.get","session.create","session.update","session.delete","session.deleteAll","session.archive","session.moveToProject","session.getState","session.switchProject","session.getMessages","project.list","project.create","project.delete","project.rename","project.archive","project.unarchive","project.update","project.archiveByGroup","project.purgeAll","instructions.list","instructions.read","instructions.write","instructions.delete","files.list","files.read","files.create","files.rename","files.delete","files.gitStatus","skills.list","assistants.list","assistants.resolve","assistants.cloneBuiltin","assistants.upsert","assistants.create","assistants.update","assistants.delete","assistants.setState","memory.list-files","memory.atlas","memory.activity","memory.observe","memory.propose","memory.consolidate","memory.update","memory.attachment.adopt","memory.attachment.locate"];var M=["turn.start","turn.delta","turn.end","turn.error","turn.recovery","turn.tool_call","turn.tool_result","turn.tool_blocked","turn.reasoning_delta","turn.approval_request","turn.skill_instruction","turn.ask_user","turn.media_result","turn.media_progress","turn.media_usage","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.asset.updated","system.activity","workflow.created","workflow.updated","workflow.deleted","workflow.runStarted","workflow.runCompleted","workflow.runFailed"],k=["solo.progress","solo.agentDelta","solo.agentUsage","solo.agentDiff","solo.evaluation","product.taskStarted","product.taskOutput","product.taskCompleted","product.taskFailed","product.budgetUpdate","product.checkpointed","product.dagTopology","plan.interrupted"],te=[...M,...k];var re=1,ne={INITIALIZE:"initialize",SESSION_NEW:"session/new",SESSION_PROMPT:"session/prompt",SESSION_CLOSE:"session/close",SESSION_SET_CONFIG:"session/set_config_option",SESSION_SET_MODEL:"session/set_model",SESSION_SET_MODE:"session/set_mode",SESSION_LOAD:"session/load",SESSION_CANCEL:"session/cancel",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"},ie={ABORT:"x/abort",DREAM:"x/dream",AGENTS_LIST:"x/agents.list",SOLO_START:"x/solo.start",SOLO_STATUS:"x/solo.status",SOLO_SELECT:"x/solo.select",SOLO_CANCEL:"x/solo.cancel",PRODUCT_CREATE:"x/product.create",PRODUCT_PLAN:"x/product.plan",PRODUCT_CONFIRM:"x/product.confirm",PRODUCT_MESSAGE:"x/product.message",PRODUCT_RESUME:"x/product.resume",PRODUCT_PAUSE:"x/product.pause",PRODUCT_CANCEL:"x/product.cancel",PRODUCT_ROLLBACK:"x/product.rollback",PRODUCT_STATUS:"x/product.status",SOLO_SUBSCRIBE:"x/solo.subscribe",SOLO_MESSAGE:"x/solo.message",SOLO_EVALUATE:"x/solo.evaluate",PRODUCT_SUBSCRIBE:"x/product.subscribe",TEAM_DELEGATE:"x/team.delegate"},x={USER_MESSAGE_CHUNK:"user_message_chunk",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",CURRENT_MODE_UPDATE:"current_mode_update"},oe={X_SKILL_INSTRUCTION:"x_skill_instruction",X_SESSION_INFO:"x_session_info",X_RELAY:"x_relay"};function O(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&"id"in t}function N(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function w(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&"id"in t&&!("method"in t)}function se(e){let t;try{t=JSON.parse(e)}catch{return null}return w(t)||O(t)||N(t)?t:null}function ae(e){return Object.values(x).includes(e)}function pe(e){return e.startsWith("x_")}var E=["gatewayVersion","toolNamespaces","workspaceIds","installedCapabilities","enabledCapabilities","features","approvalMode","toolManifests","skillManifests","pluginManifests","mcpManifests","approvalPolicy","workspaceSummaries"];function g(e){return e?e.map(t=>({...t})):void 0}function S(e){return e?e.map(t=>({...t})):void 0}function ce(e){return e?[...e]:void 0}function D(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))].sort((t,r)=>t.localeCompare(r))}function m(e){return{...e,toolNamespaces:[...e.toolNamespaces],workspaceIds:[...e.workspaceIds],...e.changedSections?{changedSections:[...e.changedSections]}:{},...e.installedCapabilities?{installedCapabilities:[...e.installedCapabilities]}:{},...e.enabledCapabilities?{enabledCapabilities:[...e.enabledCapabilities]}:{},...e.features?{features:[...e.features]}:{},...e.toolManifests?{toolManifests:g(e.toolManifests)}:{},...e.skillManifests?{skillManifests:g(e.skillManifests)}:{},...e.pluginManifests?{pluginManifests:g(e.pluginManifests)}:{},...e.mcpManifests?{mcpManifests:g(e.mcpManifests)}:{},...e.approvalPolicy?{approvalPolicy:{...e.approvalPolicy}}:{},...e.workspaceSummaries?{workspaceSummaries:S(e.workspaceSummaries)}:{}}}function le(e){let{previous:t,update:r}=e;return!(r.syncMode==="diff"&&t&&(!r.baseSnapshotVersion||t.snapshotVersion===r.baseSnapshotVersion))||!t?m(r):{...m(t),snapshotVersion:r.snapshotVersion,updatedAt:r.updatedAt,...r.gatewayVersion!==void 0?{gatewayVersion:r.gatewayVersion}:{},...r.syncMode?{syncMode:r.syncMode}:{},...r.baseSnapshotVersion?{baseSnapshotVersion:r.baseSnapshotVersion}:{},...r.changedSections?{changedSections:[...r.changedSections]}:{},...r.toolNamespaces?{toolNamespaces:[...r.toolNamespaces]}:{},...r.workspaceIds?{workspaceIds:[...r.workspaceIds]}:{},...r.installedCapabilities?{installedCapabilities:[...r.installedCapabilities]}:{},...r.enabledCapabilities?{enabledCapabilities:[...r.enabledCapabilities]}:{},...r.features?{features:[...r.features]}:{},...r.approvalMode?{approvalMode:r.approvalMode}:{},...r.toolManifests?{toolManifests:g(r.toolManifests)}:{},...r.skillManifests?{skillManifests:g(r.skillManifests)}:{},...r.pluginManifests?{pluginManifests:g(r.pluginManifests)}:{},...r.mcpManifests?{mcpManifests:g(r.mcpManifests)}:{},...r.approvalPolicy?{approvalPolicy:{...r.approvalPolicy}}:{},...r.workspaceSummaries?{workspaceSummaries:S(r.workspaceSummaries)}:{}}}function de(e){return D(e.map(t=>t.name.split(".")[0]??"").filter(Boolean))}function ue(e){return D(e.map(t=>t.id))}function ge(e){let{previous:t,current:r}=e;if(!t)return{...m(r),syncMode:"full"};if(t.snapshotVersion===r.snapshotVersion)return null;let n=E.filter(s=>JSON.stringify(t[s])!==JSON.stringify(r[s]));if(n.length===E.length)return{...m(r),syncMode:"full"};let o={snapshotVersion:r.snapshotVersion,updatedAt:r.updatedAt,syncMode:"diff",baseSnapshotVersion:t.snapshotVersion,changedSections:n,toolNamespaces:[...r.toolNamespaces],workspaceIds:[...r.workspaceIds]},c=o;for(let s of n){let i=r[s];if(i!==void 0)switch(s){case"toolNamespaces":case"workspaceIds":case"installedCapabilities":case"enabledCapabilities":case"features":c[s]=ce(i);break;case"approvalPolicy":c[s]={...i};break;case"workspaceSummaries":c[s]=S(i);break;case"toolManifests":case"skillManifests":case"pluginManifests":case"mcpManifests":c[s]=g(i);break;default:c[s]=i;break}}return o}var me=["web_search","web_fetch","deep_research","browser_execution"],ye=["web-intelligence","browser-execution"],fe=["discovery","read-url","multi-source-research","interactive-browser"],Ae=["stateless","render-backend","interactive-session"],Re=["stateless","stateless-single-step","stateful-session-required"],Ee=["required","conditional","none"],Se=["browser-read","browser-authenticated-read","browser-state-changing"];var _e=["read-page","read-authenticated-page","fill-form","submit-form","download-file","reuse-session"],be=["web_search","web_fetch","deep_research","blocked"],Te=["requires-interaction","requires-login-state","requires-rendered-dom","requires-persistent-session","requires-state-changing-action"],Pe=["none","same-capability-once","degrade-only"];var Ce=["prefetch","sync_turn","on_pre_compress","on_session_end","on_delegation","on_memory_write"],Ie=["turn","sidechain","compress","session-end","agent-remember","auto-extract","implicit-extract","profile-extraction","dream"],he=["observe-only","parent-write","deny"];var ve=2,a={gatewayImage:"gateway.image.desktop-slim",whisperModelTiny:"speech.whisper.model.tiny",ffmpegWin32X64:"runtime.ffmpeg.win32-x64",nodeWin32X64:"runtime.node.win32-x64",dockerDesktopWin32X64:"runtime.docker-desktop.win32-x64",dockerDesktopDarwinX64:"runtime.docker-desktop.darwin-x64",dockerDesktopDarwinArm64:"runtime.docker-desktop.darwin-arm64"},y={desktopDockerBridge:"desktop.docker-bridge",desktopEmbeddedWin32X64:"desktop.embedded.win32-x64"};function U(e){return{...e,artifacts:e.artifacts.map(t=>({...t}))}}function Me(e){return{...e,assetIds:[...e.assetIds]}}function W(){return{[y.desktopDockerBridge]:{id:y.desktopDockerBridge,title:"Desktop Docker Bridge",platform:"any",assetIds:[a.gatewayImage,a.dockerDesktopWin32X64,a.dockerDesktopDarwinX64,a.dockerDesktopDarwinArm64],description:"Docker bridge mode downloads the desktop slim gateway image on demand."},[y.desktopEmbeddedWin32X64]:{id:y.desktopEmbeddedWin32X64,title:"Desktop Embedded Win32 x64",platform:"win32-x64",assetIds:[a.nodeWin32X64,a.ffmpegWin32X64,a.whisperModelTiny],description:"Embedded desktop mode requires the bundled Node/FFmpeg runtimes and the whisper model asset."}}}function K(e,t){return e.assets[t]}function V(e,t){return e.profiles[t]}function ke(e,t){let r=V(e,t);return r?r.assetIds.map(n=>K(e,n)).filter(n=>!!n):[]}function xe(e,t){return e.assets[t.id]=U(t),F(e)}function _(e){if(!e)return;let t=e.artifacts[0];if(!(!t?.url||!t.sha256||typeof t.size!="number"))return{version:e.version,sha256:t.sha256,size:t.size,url:t.url}}function F(e){let t=_(e.assets[a.gatewayImage]),r=_(e.assets[a.whisperModelTiny]);return{...e,gateway:t,whisperModel:r}}function L(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 Oe(e){let t=e&&typeof e=="object"?e:{},r={},n=t.assets&&typeof t.assets=="object"?t.assets:{};for(let[i,p]of Object.entries(n)){if(!p||typeof p!="object")continue;let u=p;!u.id||!Array.isArray(u.artifacts)||(r[i]=U(u))}if(!r[a.gatewayImage]&&t.gateway&&typeof t.gateway=="object"){let i=L(t.gateway,{id:a.gatewayImage,title:"OpenClaw Gateway Image (Desktop Slim)",kind:"container-image",delivery:"remote",platform:"any",description:"Desktop Docker mode gateway image."});i&&(r[i.id]=i)}if(!r[a.whisperModelTiny]&&t.whisperModel&&typeof t.whisperModel=="object"){let i=L(t.whisperModel,{id:a.whisperModelTiny,title:"Whisper Tiny Model",kind:"model",delivery:"remote",platform:"any",description:"Shared whisper.cpp tiny model asset for embedded desktop speech recognition."});i&&(r[i.id]=i)}let c={...W()},s=t.profiles&&typeof t.profiles=="object"?t.profiles:{};for(let[i,p]of Object.entries(s)){if(!p||typeof p!="object")continue;let u=p;!u.id||!Array.isArray(u.assetIds)||(c[i]=Me(u))}return F({schemaVersion:typeof t.schemaVersion=="number"?t.schemaVersion:2,channel:typeof t.channel=="string"?t.channel:void 0,publishedAt:typeof t.publishedAt=="string"?t.publishedAt:void 0,minElectronVersion:typeof t.minElectronVersion=="string"?t.minElectronVersion:void 0,releaseNotes:typeof t.releaseNotes=="string"?t.releaseNotes:void 0,assets:r,profiles:c})}var Ne=["pending","captured","failed","restored"],we=["file","directory","missing"],De=["metadata-only","workspace-copy","shadow-git"];var Le=["api-key","oauth","token","aws-sdk"],Ue=["rate_limit","auth","server_error","timeout","network","unknown"],We=["requiresOpenAiAnthropicToolPayload"];function Ke(e,t){return!e||typeof e!="object"||Array.isArray(e)?!1:e[t]===!0}var j="openai-codex";function A(e){let t=e.trim().toLowerCase();return t==="z.ai"||t==="z-ai"?"zai":t==="opencode-zen"?"opencode":t==="kimi-code"?"kimi-coding":t==="bedrock"||t==="aws-bedrock"?"amazon-bedrock":t==="bytedance"||t==="doubao"?"volcengine":t}function B(e){let t=A(e);return t==="volcengine-plan"?"volcengine":t==="qwen-coding"?"qwen":t==="byteplus-plan"?"byteplus":t}var Ve=B,Fe={anthropicToolSchemaMode:"native",anthropicToolChoiceMode:"native",providerFamily:"default",preserveAnthropicThinkingSignatures:!0,openAiCompatTurnValidation:!0,providerThoughtSignatureSanitization:!1,transcriptToolCallIdMode:"default",transcriptToolCallIdModelHints:[],providerThoughtSignatureModelHints:[],dropThinkingBlockModelHints:[]},je={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"},[j]:{providerFamily:"openai"},openrouter:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},opencode:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},kilocode:{providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]}};function b(e,t){let r=(e??"").toLowerCase();return!!r&&t.some(n=>r.includes(n))}function l(e){let t=A(e??"");return{...Fe,...je[t]}}function Be(e){return l(e).preserveAnthropicThinkingSignatures}function qe(e){let t=l(e);return t.anthropicToolSchemaMode!=="native"||t.anthropicToolChoiceMode!=="native"}function Ye(e){return l(e).anthropicToolSchemaMode==="openai-functions"}function He(e){return l(e).anthropicToolChoiceMode==="openai-string-modes"}function Ge(e){return l(e).openAiCompatTurnValidation}function ze(e){return l(e).providerFamily==="openai"}function Xe(e){return l(e).providerFamily==="anthropic"}function Je(e){return b(e.modelId,l(e.provider).dropThinkingBlockModelHints)}function Qe(e){let t=l(e.provider);return t.providerThoughtSignatureSanitization&&b(e.modelId,t.providerThoughtSignatureModelHints)}function $e(e,t){let r=l(e),n=r.transcriptToolCallIdMode;if(n==="strict9")return n;if(b(t,r.transcriptToolCallIdModelHints))return"strict9"}var T={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"],qwen:["DASHSCOPE_API_KEY","QWEN_API_KEY"],"qwen-coding":["DASHSCOPE_API_KEY","QWEN_API_KEY"],volcengine:["VOLCANO_ENGINE_API_KEY","ARK_API_KEY","DOUBAO_API_KEY"],"volcengine-plan":["VOLCANO_ENGINE_API_KEY","ARK_API_KEY","DOUBAO_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 Ze(){return[...new Set(Object.values(T).flat())]}function et(e){let t=A(e.provider),r=e.env??process.env,n=new Set(e.appliedEnvKeys??[]),o=i=>{let p=r[i]?.trim();if(!p)return null;let u=n.has(i)?`shell env: ${i}`:`env: ${i}`;return{apiKey:p,source:u}},c=e.resolveSpecialApiKey?.(t,r,n);if(c)return c;let s=T[t];if(!s||s.length===0)return null;for(let i of s){let p=o(i);if(p)return p}return null}export{ie as ACP_EXTENDED_METHODS,oe as ACP_EXTENDED_SESSION_UPDATE_TYPES,ne as ACP_METHODS,re as ACP_PROTOCOL_VERSION,x as ACP_SESSION_UPDATE_TYPES,H as AGENT_RPC_APPROVAL_METHODS,d as AGENT_RPC_ERROR_CODES,Y as AGENT_RPC_PROTOCOL_VERSION,k as AGENT_TEAM_WS_EVENT_NAMES,M as AGENT_WS_EVENT_NAMES,te as ALL_AGENT_WS_EVENT_NAMES,E as CAPABILITY_MANIFEST_DIFF_SECTIONS,ee as GATEWAY_RPC_METHODS,R as GatewayRpcContract,Ce as MEMORY_OBSERVATION_HOOK_VALUES,Ie as MEMORY_OBSERVATION_SOURCE_VALUES,he as MEMORY_WRITE_ACCESS_VALUES,De as MUTATION_CHECKPOINT_BACKEND_VALUES,we as MUTATION_CHECKPOINT_ENTRY_KIND_VALUES,Ne as MUTATION_CHECKPOINT_PHASE_VALUES,q as PETDEX_ANIMATION_IDS,Le as PROVIDER_RUNTIME_AUTH_MODE_VALUES,We as PROVIDER_RUNTIME_COMPAT_FLAG_VALUES,T as PROVIDER_RUNTIME_ENV_API_KEY_CANDIDATES,j as PROVIDER_RUNTIME_OPENAI_CODEX_PROVIDER_ID,Ue as PROVIDER_RUNTIME_VAULT_ERROR_TYPE_VALUES,ve as RESOURCE_MANIFEST_SCHEMA_VERSION,a as RUNTIME_ASSET_IDS,y as RUNTIME_PROFILE_IDS,_e as WEB_ACTION_SCOPE_VALUES,Ee as WEB_APPROVAL_DEFAULT_VALUES,ye as WEB_CAPABILITY_FAMILY_VALUES,me as WEB_CAPABILITY_ID_VALUES,be as WEB_DEGRADATION_TARGET_VALUES,Te as WEB_ESCALATION_REASON_VALUES,Ae as WEB_EXECUTION_MODE_VALUES,Se as WEB_POLICY_RISK_CLASS_VALUES,Pe as WEB_RETRY_POLICY_VALUES,Re as WEB_STATEFULNESS_VALUES,fe as WEB_TASK_MODE_VALUES,Z as buildAgentRpcMeta,f as classifyGatewayRpcMethod,m as cloneCapabilityManifestSnapshot,ge as createCapabilityManifestDiffPayload,W as createDefaultRuntimeResourceProfiles,de as deriveCapabilityToolNamespaces,ue as deriveCapabilityWorkspaceIds,_ as getManifestShortcutEntry,K as getRuntimeResourceAsset,V as getRuntimeResourceProfile,ke as getRuntimeResourceProfileAssets,N as isAcpJsonRpcNotification,O as isAcpJsonRpcRequest,w as isAcpJsonRpcResponse,I as isAgentRpcNotification,P as isAgentRpcRequest,C as isAgentRpcResponse,Xe as isAnthropicProviderRuntimeFamily,pe as isExtendedSessionUpdateType,ze as isOpenAiProviderRuntimeFamily,ae as isStandardSessionUpdateType,Ze as listProviderRuntimeEnvApiKeyNames,le as mergeCapabilityManifestSnapshot,A as normalizeProviderRuntimeId,B as normalizeProviderRuntimeIdForAuth,Oe as normalizeRuntimeResourceManifest,se as parseAcpMessage,G as parseAgentRpcMessage,Be as preservesProviderRuntimeAnthropicThinkingSignatures,Ke as readProviderRuntimeCompatFlag,v as requireGatewayRpcMeta,h as requiresIdempotencyKey,qe as requiresOpenAiCompatibleAnthropicToolPayloadForProviderRuntime,l as resolveProviderRuntimeCapabilities,et as resolveProviderRuntimeEnvApiKey,Ve as resolveProviderRuntimeKeyFamily,$e as resolveProviderRuntimeTranscriptToolCallIdMode,Je as shouldDropThinkingBlocksForProviderRuntimeModel,Qe as shouldSanitizeProviderRuntimeThoughtSignaturesForModel,Ge as supportsOpenAiCompatTurnValidationForProviderRuntime,xe as upsertRuntimeResourceAsset,Ye as usesOpenAiFunctionAnthropicToolSchemaForProviderRuntime,He as usesOpenAiStringModeAnthropicToolChoiceForProviderRuntime};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Session & Thread handlers
|
|
2
|
+
* Session & Thread handlers - uses SessionLocator for all path resolution.
|
|
3
3
|
*
|
|
4
4
|
* Handles: thread.create, thread.list, session.create, session.resolve,
|
|
5
5
|
* session.list, session.get, session.getMessages, session.update,
|
|
@@ -45,12 +45,12 @@ export declare function handleSessionGetInfo(this: SessionHandlerHost, msg: Agen
|
|
|
45
45
|
export declare function handleSessionSwitchProject(this: SessionHandlerHost, msg: AgentRpcRequest): void;
|
|
46
46
|
export declare function handleSessionGetState(this: SessionHandlerHost, msg: AgentRpcRequest): void;
|
|
47
47
|
/**
|
|
48
|
-
* `session.focus`
|
|
48
|
+
* `session.focus` - Desktop UI reports which session is currently focused.
|
|
49
49
|
* Agent switches active project/cwd to the session's owning project.
|
|
50
50
|
*/
|
|
51
51
|
export declare function handleSessionFocus(this: SessionHandlerHost, msg: AgentRpcRequest): Promise<void>;
|
|
52
52
|
/**
|
|
53
|
-
* `session.moveToProject`
|
|
53
|
+
* `session.moveToProject` - Move a session from one project to another.
|
|
54
54
|
* Physically copies session files, updates metadata.projectId, then removes the source.
|
|
55
55
|
* Emits session:updated notification.
|
|
56
56
|
*/
|
|
@@ -15,6 +15,14 @@ export declare function setMediaClientConfig(client: MediaClient | undefined, ap
|
|
|
15
15
|
}>>, onMediaProgress?: (taskId: string, mediaType: string, percent: number, status: string, provider?: string) => void): void;
|
|
16
16
|
export declare function getMediaRuntimeContext(): MediaFileServiceContext;
|
|
17
17
|
export declare function generateMedia(request: MediaRequest): Promise<MediaResult>;
|
|
18
|
+
/**
|
|
19
|
+
* Ensure an image size satisfies the resolved model's minimum resolution.
|
|
20
|
+
* Only applies to models with a known minimum (Volcengine Seedream); everything
|
|
21
|
+
* else is returned unchanged so providers that require small sizes (e.g. OpenAI
|
|
22
|
+
* 1024×1024) keep working. Sub-minimum "WxH" sizes are scaled up preserving
|
|
23
|
+
* aspect ratio; anything unparseable falls back to the always-valid named "2K".
|
|
24
|
+
*/
|
|
25
|
+
export declare function normalizeImageSize(size: string | undefined, providerId: string | undefined, modelId: string | undefined): string | undefined;
|
|
18
26
|
export declare function isMediaAvailable(mediaType: string): boolean;
|
|
19
27
|
export declare function isMediaOperationAvailable(mediaType: string, operation: string): boolean;
|
|
20
28
|
export declare function isMediaOperationDeclaredAvailable(mediaType: string, operation: string): boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ChatMessage } from "../agent/types.js";
|
|
2
2
|
import type { ModelPurpose } from "../runtime/infra/model-registry.js";
|
|
3
|
-
import { type PetStats, type
|
|
3
|
+
import { type PetStats, type PetdexPetAsset, type PetdexValidationReport } from "../runtime/pet/index.js";
|
|
4
4
|
import { type PetdexProductionRun } from "../runtime/pet/petdex-forge-service.js";
|
|
5
5
|
import type { LLMTransport } from "./provider-core-facade.js";
|
|
6
6
|
export type PetSoulGenerator = (rarity: string, stats: PetStats) => Promise<{
|
|
@@ -17,8 +17,6 @@ export interface PetdexForgeInput {
|
|
|
17
17
|
referenceImageUrl?: string;
|
|
18
18
|
referenceMode?: "identity" | "refine";
|
|
19
19
|
baseSpritesheet?: Buffer;
|
|
20
|
-
refineAnimationId?: PetdexAnimationId;
|
|
21
|
-
refineFrameIndexes?: number[];
|
|
22
20
|
}
|
|
23
21
|
export interface PetdexForgeOutput {
|
|
24
22
|
asset: PetdexPetAsset;
|
|
@@ -15,6 +15,7 @@ export declare class SessionQueryService {
|
|
|
15
15
|
private readonly pathService;
|
|
16
16
|
constructor(locator?: SessionLocator, pathService?: import("../runtime/ports/path-service.js").PathService);
|
|
17
17
|
getActiveProjectId(): string;
|
|
18
|
+
getDefaultProjectId(): string;
|
|
18
19
|
getProjectWorkspaceDir(projectId: string): string;
|
|
19
20
|
resolveWorkspaceDir(sessionId: string, projectId?: string): string;
|
|
20
21
|
listThreads(limit: number, projectId?: string): Promise<ThreadListItem[]>;
|
|
@@ -164,6 +164,12 @@ export interface AcpSessionPromptResult {
|
|
|
164
164
|
stopReason: AcpStopReason;
|
|
165
165
|
/** Token usage for this turn. */
|
|
166
166
|
usage?: AcpUsage;
|
|
167
|
+
/** Model that actually ran the turn (agent-resolved). Lets the host attribute
|
|
168
|
+
* usage to the real model instead of falling back to "unknown" when no host
|
|
169
|
+
* override was supplied. Rides the prompt response alongside usage. */
|
|
170
|
+
model?: string;
|
|
171
|
+
/** Provider that actually ran the turn (agent-resolved). */
|
|
172
|
+
provider?: string;
|
|
167
173
|
}
|
|
168
174
|
export interface AcpSessionCloseParams {
|
|
169
175
|
sessionId: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const PETDEX_ANIMATION_IDS: readonly ["idle", "
|
|
1
|
+
export declare const PETDEX_ANIMATION_IDS: readonly ["idle", "running-right", "running-left", "waving", "jumping", "failed", "waiting", "running", "review"];
|
|
2
2
|
export type PetdexAnimationId = typeof PETDEX_ANIMATION_IDS[number];
|
|
3
3
|
export declare const PETDEX_SCHEMA: "qlogic.petdex.asset.v1";
|
|
4
4
|
export declare const PETDEX_VALIDATION_SCHEMA: "qlogic.petdex.validation.v1";
|
|
@@ -13,8 +13,9 @@ export declare const PETDEX_ATLAS_CONTRACT: {
|
|
|
13
13
|
readonly height: 1872;
|
|
14
14
|
};
|
|
15
15
|
export interface PetdexAnimation {
|
|
16
|
+
row: number;
|
|
16
17
|
frames: number[];
|
|
17
|
-
|
|
18
|
+
durations: number[];
|
|
18
19
|
loop: boolean;
|
|
19
20
|
}
|
|
20
21
|
export type PetdexAnimationMap = Record<PetdexAnimationId, PetdexAnimation>;
|
|
@@ -13,6 +13,27 @@ export declare function normalizeWindowsAcpCommand(cliPath: string, args: string
|
|
|
13
13
|
cliPath: string;
|
|
14
14
|
acpArgs: string[];
|
|
15
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* Build the spawn env for an external ACP backend.
|
|
18
|
+
*
|
|
19
|
+
* Maps the agent-config's portable `apiKey`/`baseUrl` onto the backend-declared
|
|
20
|
+
* environment-variable names (`apiKeyEnvVar`/`baseUrlEnvVar`) so a user who only
|
|
21
|
+
* configures an API key + base URL (e.g. via agents.setConfig) actually drives the
|
|
22
|
+
* underlying CLI with a third-party OpenAI/Anthropic-compatible gateway — no official
|
|
23
|
+
* account login required. Without this mapping the backends declared the env-var names
|
|
24
|
+
* but nothing ever populated them.
|
|
25
|
+
*
|
|
26
|
+
* Precedence (lowest → highest), so explicit user input always wins:
|
|
27
|
+
* 1. backend.env (static backend defaults)
|
|
28
|
+
* 2. mapped apiKey/baseUrl (config.apiKey → backend.apiKeyEnvVar, etc.)
|
|
29
|
+
* 3. customConfig.env (raw env the user hand-entered)
|
|
30
|
+
*
|
|
31
|
+
* Injection is conditional: the apiKey/baseUrl mapping only fires when the backend
|
|
32
|
+
* actually declares the corresponding envVar name (so we never invent a var the CLI
|
|
33
|
+
* does not read). Returns undefined when there is nothing to inject, preserving the
|
|
34
|
+
* prior `env?: undefined` behavior for un-configured backends.
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildBackendEnv(backend: AcpBackendConfig | undefined, customConfig: import("../../protocol/wire/acp-agent-management.js").AgentConfig | undefined): Record<string, string> | undefined;
|
|
16
37
|
export declare class AcpDetector {
|
|
17
38
|
private cache;
|
|
18
39
|
private configStore;
|
|
@@ -16,6 +16,7 @@ export declare function createProject(params: {
|
|
|
16
16
|
}): ProjectInfo;
|
|
17
17
|
export declare function listProjects(): ProjectInfo[];
|
|
18
18
|
export declare function getActiveProject(): ProjectInfo | null;
|
|
19
|
+
export declare function getDefaultProject(): ProjectInfo | null;
|
|
19
20
|
export declare function getProjectById(projectId: string): ProjectInfo | null;
|
|
20
21
|
export declare function updateProject(projectId: string, patch: Partial<Pick<ProjectInfo, "planStatus" | "planAgents" | "planWinnerId" | "leaderSessionId">>): boolean;
|
|
21
22
|
export declare function switchProject(projectId: string): ProjectInfo | null;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface HatchPetResult {
|
|
2
|
+
ok: boolean;
|
|
3
|
+
stdout: string;
|
|
4
|
+
stderr: string;
|
|
5
|
+
code: number | null;
|
|
6
|
+
}
|
|
7
|
+
/** A python executable that can import Pillow, or null if none is available. Cached. */
|
|
8
|
+
export declare function resolveHatchPetPython(): Promise<string | null>;
|
|
9
|
+
/** The vendored hatch-pet/scripts directory, or null if missing. Cached. */
|
|
10
|
+
export declare function resolveHatchPetScriptsDir(): string | null;
|
|
11
|
+
/** True when both a Pillow-capable python and the vendored scripts are present. */
|
|
12
|
+
export declare function isHatchPetAvailable(): Promise<boolean>;
|
|
13
|
+
/** Run a vendored hatch-pet script. Throws if python/scripts are unavailable or the script is unknown. */
|
|
14
|
+
export declare function runHatchPetScript(script: string, args: string[], opts?: {
|
|
15
|
+
timeoutMs?: number;
|
|
16
|
+
}): Promise<HatchPetResult>;
|
|
17
|
+
/** Test seam: reset memoized python/scripts resolution. */
|
|
18
|
+
export declare function _resetHatchPetRunnerCache(): void;
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Pet module — barrel export.
|
|
3
|
+
* Pure domain logic (types/soul/growth/reaction/petdex contract) comes from
|
|
4
|
+
* @xiaozhiclaw/pet-core; host keeps IO services + the shared reaction engine.
|
|
5
|
+
* Forge prompts live in the vendored Hatch-Pet Python pipeline, not in TS.
|
|
3
6
|
*/
|
|
7
|
+
export type { PetStats, PetSoul, PetBreed } from "@xiaozhiclaw/pet-core";
|
|
8
|
+
export { PetGrowthEngine } from "@xiaozhiclaw/pet-core";
|
|
9
|
+
export type { GrowthEvent, MoltResult, PetDisplayTrait } from "@xiaozhiclaw/pet-core";
|
|
10
|
+
export { PETDEX_ANIMATION_IDS, petdexImageDataUrl, toPetdexAssetSummary } from "@xiaozhiclaw/pet-core";
|
|
11
|
+
export type { PetdexAnimationId, PetdexValidationReport } from "@xiaozhiclaw/pet-core";
|
|
12
|
+
export type { ReactionPool, LLMReactionContext, ReactionStyle } from "@xiaozhiclaw/pet-core";
|
|
4
13
|
export { PetSoulService } from "./pet-soul-service.js";
|
|
5
|
-
export
|
|
14
|
+
export { petReactionEngine } from "./pet-reaction-engine.js";
|
|
6
15
|
export { PetProfileService, type PetProfile, type PetPreferences, type PetdexPetAsset, type PetdexPetAssetSummary, type JourneySnapshot } from "./pet-profile-service.js";
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export { maybeGenerateReaction, generateLLMReaction, type ReactionPool, type LLMReactionContext, type ReactionStyle } from "./pet-reaction-service.js";
|
|
10
|
-
export { PetGrowthEngine, type GrowthEvent, type MoltResult, type PetDisplayTrait } from "./pet-growth-engine.js";
|
|
16
|
+
export { createPetdexAssetFromSpritesheet, listBuiltinPetdexAssetIds, listBuiltinPetdexAssets, writePetdexAssetPackage } from "./petdex-asset.js";
|
|
17
|
+
export { forgePetdexAsset, forgePetdexAssetPackage, readGeneratedPetdexImage } from "./petdex-forge-service.js";
|
|
11
18
|
export { loadPetFile, validatePetManifest, type PetManifest, type PetFileBundle } from "./pet-file-loader.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type PetdexAssetManifest, type PetdexAssetPackage, type PetdexAssetValidation } from "
|
|
1
|
+
import { type PetdexAssetManifest, type PetdexAssetPackage, type PetdexAssetValidation } from "@xiaozhiclaw/pet-core";
|
|
2
2
|
export type PetManifest = PetdexAssetManifest;
|
|
3
3
|
export type PetFileBundle = PetdexAssetPackage;
|
|
4
4
|
export declare function loadPetFile(filePath: string): Promise<PetFileBundle>;
|
|
@@ -1,58 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* Design §13: Growth system
|
|
5
|
-
* - XP curve: level * 100 (linear P0, polynomial later)
|
|
6
|
-
* - Molting: every 5 levels triggers a "molt" event with visual upgrade
|
|
7
|
-
* - Display traits: unlocked at specific levels, presentation-only
|
|
8
|
-
* - Stats growth: each level-up slightly boosts one stat
|
|
9
|
-
*/
|
|
10
|
-
import type { PetStats, PetSoul } from "./pet-types.js";
|
|
11
|
-
export interface PetDisplayTrait {
|
|
12
|
-
id: string;
|
|
13
|
-
unlockedAtLevel: number;
|
|
14
|
-
}
|
|
15
|
-
export interface GrowthEvent {
|
|
16
|
-
type: "level_up" | "molt" | "display_trait_unlock";
|
|
17
|
-
level: number;
|
|
18
|
-
displayTrait?: PetDisplayTrait;
|
|
19
|
-
moltStage?: number;
|
|
20
|
-
}
|
|
21
|
-
export interface MoltResult {
|
|
22
|
-
stage: number;
|
|
23
|
-
description: string;
|
|
24
|
-
statBoost: Partial<PetStats>;
|
|
25
|
-
}
|
|
26
|
-
export declare class PetGrowthEngine {
|
|
27
|
-
/**
|
|
28
|
-
* Calculate XP needed for next level.
|
|
29
|
-
* P0: linear 100*level
|
|
30
|
-
*/
|
|
31
|
-
static xpForLevel(level: number): number;
|
|
32
|
-
/**
|
|
33
|
-
* Process XP gain and return all triggered growth events.
|
|
34
|
-
* Does NOT mutate the soul — caller is responsible for persisting.
|
|
35
|
-
*/
|
|
36
|
-
static processXpGain(soul: PetSoul, xpGain: number): {
|
|
37
|
-
newLevel: number;
|
|
38
|
-
newXp: number;
|
|
39
|
-
events: GrowthEvent[];
|
|
40
|
-
statBoosts: Partial<PetStats>;
|
|
41
|
-
};
|
|
42
|
-
/**
|
|
43
|
-
* Get molt result for a given stage.
|
|
44
|
-
*/
|
|
45
|
-
static getMoltResult(stage: number, currentStats: PetStats): MoltResult;
|
|
46
|
-
/**
|
|
47
|
-
* Get all unlocked presentation traits for a given level.
|
|
48
|
-
*/
|
|
49
|
-
static getUnlockedDisplayTraits(level: number): PetDisplayTrait[];
|
|
50
|
-
/**
|
|
51
|
-
* Get next upcoming presentation trait.
|
|
52
|
-
*/
|
|
53
|
-
static getNextDisplayTrait(level: number): PetDisplayTrait | null;
|
|
54
|
-
/**
|
|
55
|
-
* XP gain rules for different events.
|
|
56
|
-
*/
|
|
57
|
-
static xpForEvent(event: string): number;
|
|
58
|
-
}
|
|
1
|
+
export { PetGrowthEngine } from "@xiaozhiclaw/pet-core";
|
|
2
|
+
export type { GrowthEvent, MoltResult, PetDisplayTrait } from "@xiaozhiclaw/pet-core";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { PetdexAnimation, PetdexAnimationId } from "@xiaozhiclaw/pet-core";
|
|
1
2
|
import type { PetSoul } from "./pet-types.js";
|
|
2
3
|
export interface PetPreferences {
|
|
3
4
|
enabled: boolean;
|
|
@@ -12,7 +13,7 @@ export interface PetdexPetAssetSummary {
|
|
|
12
13
|
createdAt: string;
|
|
13
14
|
updatedAt: string;
|
|
14
15
|
atlas: PetdexPetAssetSummaryAtlas;
|
|
15
|
-
animations?: Record<
|
|
16
|
+
animations?: Record<PetdexAnimationId, PetdexPetAnimation>;
|
|
16
17
|
thumbnail?: {
|
|
17
18
|
frame: number;
|
|
18
19
|
};
|
|
@@ -31,11 +32,8 @@ export interface PetdexPetAssetSummaryAtlas {
|
|
|
31
32
|
export interface PetdexPetAssetAtlas extends PetdexPetAssetSummaryAtlas {
|
|
32
33
|
image: "spritesheet.webp";
|
|
33
34
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
fps: number;
|
|
37
|
-
loop: boolean;
|
|
38
|
-
}
|
|
35
|
+
/** Re-uses the pet-core contract animation shape (row + per-frame durations, Codex-aligned). */
|
|
36
|
+
export type PetdexPetAnimation = PetdexAnimation;
|
|
39
37
|
export interface PetdexPetAsset extends Omit<PetdexPetAssetSummary, "atlas"> {
|
|
40
38
|
schema: "qlogic.petdex.asset.v1";
|
|
41
39
|
atlas: PetdexPetAssetAtlas;
|
|
@@ -43,7 +41,7 @@ export interface PetdexPetAsset extends Omit<PetdexPetAssetSummary, "atlas"> {
|
|
|
43
41
|
kind: "builtin" | "upload" | "forge";
|
|
44
42
|
prompt: string | null;
|
|
45
43
|
};
|
|
46
|
-
animations: Record<
|
|
44
|
+
animations: Record<PetdexAnimationId, PetdexPetAnimation>;
|
|
47
45
|
thumbnail: {
|
|
48
46
|
frame: number;
|
|
49
47
|
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ReactionEngine } from "@xiaozhiclaw/pet-core";
|
|
2
|
+
/**
|
|
3
|
+
* Host-side shared ReactionEngine singleton.
|
|
4
|
+
*
|
|
5
|
+
* pet-core moved the original module-level `recentReactions` dedup buffer to a
|
|
6
|
+
* ReactionEngine instance field. The original behaviour was a module singleton
|
|
7
|
+
* shared by both pet-runtime and pet-handler, so the host keeps exactly one
|
|
8
|
+
* shared instance here (seeded with defaultPetRng = Math.random) to preserve the
|
|
9
|
+
* cross-call dedup semantics byte-for-byte.
|
|
10
|
+
*/
|
|
11
|
+
export declare const petReactionEngine: ReactionEngine;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type
|
|
2
|
-
export
|
|
1
|
+
import { hasPetAgentBoundaryViolationText, type PetSoul, type PetStats } from "@xiaozhiclaw/pet-core";
|
|
2
|
+
export { hasPetAgentBoundaryViolationText };
|
|
3
3
|
export declare class PetSoulService {
|
|
4
4
|
private soul;
|
|
5
5
|
private profileService;
|
|
@@ -1,32 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
grip: number;
|
|
3
|
-
patience: number;
|
|
4
|
-
curiosity: number;
|
|
5
|
-
appetite: number;
|
|
6
|
-
humor: number;
|
|
7
|
-
}
|
|
8
|
-
export interface PetSoul {
|
|
9
|
-
name: string;
|
|
10
|
-
species: string;
|
|
11
|
-
personality: string;
|
|
12
|
-
catchphrase: string;
|
|
13
|
-
stats: PetStats;
|
|
14
|
-
rarity: string;
|
|
15
|
-
breed?: string;
|
|
16
|
-
breedColors?: {
|
|
17
|
-
primary: string;
|
|
18
|
-
secondary: string;
|
|
19
|
-
};
|
|
20
|
-
level: number;
|
|
21
|
-
experience: number;
|
|
22
|
-
hatchedAt: string;
|
|
23
|
-
}
|
|
24
|
-
export interface PetBreed {
|
|
25
|
-
id: string;
|
|
26
|
-
name: string;
|
|
27
|
-
colors: {
|
|
28
|
-
primary: string;
|
|
29
|
-
secondary: string;
|
|
30
|
-
};
|
|
31
|
-
rarity: string;
|
|
32
|
-
}
|
|
1
|
+
export type { PetStats, PetSoul, PetBreed } from "@xiaozhiclaw/pet-core";
|
|
@@ -1,111 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
readonly format: "webp";
|
|
5
|
-
readonly columns: 8;
|
|
6
|
-
readonly rows: 9;
|
|
7
|
-
readonly frameCount: 72;
|
|
8
|
-
readonly cellWidth: 192;
|
|
9
|
-
readonly cellHeight: 208;
|
|
10
|
-
readonly width: 1536;
|
|
11
|
-
readonly height: 1872;
|
|
12
|
-
};
|
|
13
|
-
export declare const PETDEX_ANIMATION_IDS: readonly ["idle", "thinking", "working", "done", "happy", "error", "attention", "dragging", "sleeping"];
|
|
14
|
-
export type PetdexAnimationId = typeof PETDEX_ANIMATION_IDS[number];
|
|
15
|
-
export interface PetdexAnimation {
|
|
16
|
-
frames: number[];
|
|
17
|
-
fps: number;
|
|
18
|
-
loop: boolean;
|
|
19
|
-
}
|
|
20
|
-
export interface PetdexAtlas {
|
|
21
|
-
image: "spritesheet.webp";
|
|
22
|
-
format: "webp";
|
|
23
|
-
columns: 8;
|
|
24
|
-
rows: 9;
|
|
25
|
-
frameCount: 72;
|
|
26
|
-
cellWidth: 192;
|
|
27
|
-
cellHeight: 208;
|
|
28
|
-
width: 1536;
|
|
29
|
-
height: 1872;
|
|
30
|
-
sha256: string;
|
|
31
|
-
imageUrl?: string;
|
|
32
|
-
}
|
|
33
|
-
export interface PetdexAssetSource {
|
|
34
|
-
kind: "builtin" | "upload" | "forge";
|
|
35
|
-
prompt: string | null;
|
|
36
|
-
}
|
|
37
|
-
export interface PetdexPetAsset {
|
|
38
|
-
schema: typeof PETDEX_SCHEMA;
|
|
39
|
-
id: string;
|
|
40
|
-
assetKind: "petdex";
|
|
41
|
-
name: string;
|
|
42
|
-
description: string;
|
|
43
|
-
createdAt: string;
|
|
44
|
-
updatedAt: string;
|
|
45
|
-
source: PetdexAssetSource;
|
|
46
|
-
atlas: PetdexAtlas;
|
|
47
|
-
animations: Record<PetdexAnimationId, PetdexAnimation>;
|
|
48
|
-
thumbnail: {
|
|
49
|
-
frame: number;
|
|
50
|
-
};
|
|
51
|
-
sourcePrompt?: string;
|
|
52
|
-
}
|
|
53
|
-
export type PetdexAssetManifest = PetdexPetAsset;
|
|
54
|
-
export interface PetdexPetAssetSummary {
|
|
55
|
-
id: string;
|
|
56
|
-
assetKind: "petdex";
|
|
57
|
-
sourceKind: PetdexAssetSource["kind"];
|
|
58
|
-
name: string;
|
|
59
|
-
description: string;
|
|
60
|
-
createdAt: string;
|
|
61
|
-
updatedAt: string;
|
|
62
|
-
atlas: Omit<PetdexAtlas, "image" | "imageUrl"> & {
|
|
63
|
-
imageUrl?: string;
|
|
64
|
-
};
|
|
65
|
-
animations?: Record<PetdexAnimationId, PetdexAnimation>;
|
|
66
|
-
thumbnail?: {
|
|
67
|
-
frame: number;
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
export interface PetdexValidationReport {
|
|
71
|
-
schema: typeof PETDEX_VALIDATION_SCHEMA;
|
|
72
|
-
assetId: string;
|
|
73
|
-
valid: boolean;
|
|
74
|
-
validatedAt: string;
|
|
75
|
-
errors: string[];
|
|
76
|
-
warnings: string[];
|
|
77
|
-
atlas: {
|
|
78
|
-
format: "webp";
|
|
79
|
-
columns: 8;
|
|
80
|
-
rows: 9;
|
|
81
|
-
frameCount: 72;
|
|
82
|
-
cellWidth: 192;
|
|
83
|
-
cellHeight: 208;
|
|
84
|
-
width: number;
|
|
85
|
-
height: number;
|
|
86
|
-
sha256: string;
|
|
87
|
-
};
|
|
88
|
-
animations: {
|
|
89
|
-
ids: PetdexAnimationId[];
|
|
90
|
-
minFrame: number;
|
|
91
|
-
maxFrame: number;
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
export interface LoadedPetdexPackage {
|
|
95
|
-
manifest: PetdexPetAsset;
|
|
96
|
-
spritesheet: Buffer;
|
|
97
|
-
validation: PetdexValidationReport;
|
|
98
|
-
}
|
|
99
|
-
export type PetdexAssetPackage = LoadedPetdexPackage;
|
|
100
|
-
export type PetdexAssetValidation = PetdexValidationReport;
|
|
101
|
-
export interface PetdexImportResult {
|
|
102
|
-
asset: PetdexPetAsset;
|
|
103
|
-
summary: PetdexPetAssetSummary;
|
|
104
|
-
validation: PetdexValidationReport;
|
|
105
|
-
}
|
|
106
|
-
export declare function createDefaultPetdexAnimations(): Record<PetdexAnimationId, PetdexAnimation>;
|
|
107
|
-
export declare function toPetdexAssetSummary(asset: PetdexPetAsset, imageUrl?: string): PetdexPetAssetSummary;
|
|
108
|
-
export declare function validatePetdexAssetManifest(manifest: unknown, spritesheet: Buffer): PetdexValidationReport;
|
|
1
|
+
import { type PetdexAssetSource, type PetdexPetAsset, type PetdexValidationReport, type LoadedPetdexPackage, type PetdexImportResult } from "@xiaozhiclaw/pet-core";
|
|
2
|
+
export { PETDEX_SCHEMA, PETDEX_VALIDATION_SCHEMA, PETDEX_ATLAS_CONTRACT, PETDEX_ANIMATION_IDS, createDefaultPetdexAnimations, toPetdexAssetSummary, validatePetdexAssetManifest, petdexImageDataUrl, } from "@xiaozhiclaw/pet-core";
|
|
3
|
+
export type { PetdexAnimationId, PetdexAnimation, PetdexAtlas, PetdexAssetSource, PetdexPetAsset, PetdexAssetManifest, PetdexPetAssetSummary, PetdexValidationReport, LoadedPetdexPackage, PetdexAssetPackage, PetdexAssetValidation, PetdexImportResult, } from "@xiaozhiclaw/pet-core";
|
|
109
4
|
export declare function loadPetdexAssetPackage(filePath: string): Promise<LoadedPetdexPackage>;
|
|
110
5
|
export declare function buildPetdexAssetImport(filePath: string, targetDir: string): Promise<PetdexImportResult>;
|
|
111
6
|
export declare function writePetdexAssetPackage(params: {
|
|
@@ -135,4 +30,3 @@ export declare function listBuiltinPetdexAssets(): Promise<Array<{
|
|
|
135
30
|
spritesheet: Buffer;
|
|
136
31
|
validation: PetdexValidationReport;
|
|
137
32
|
}>>;
|
|
138
|
-
export declare function petdexImageDataUrl(spritesheet: Buffer): string;
|