qlogicagent 2.10.37 → 2.10.39

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.
Files changed (52) hide show
  1. package/dist/cli.js +280 -266
  2. package/dist/index.js +278 -264
  3. package/dist/protocol.js +1 -1
  4. package/dist/types/agent/types.d.ts +2 -0
  5. package/dist/types/assistants/assistant-registry.d.ts +4 -0
  6. package/dist/types/assistants/assistant-store.d.ts +23 -0
  7. package/dist/types/assistants/assistant-turn-context.d.ts +20 -0
  8. package/dist/types/assistants/assistant-types.d.ts +38 -0
  9. package/dist/types/assistants/plugin-assistant-registry.d.ts +16 -0
  10. package/dist/types/cli/community-resource-installer.d.ts +29 -0
  11. package/dist/types/cli/dream-host-adapter.d.ts +1 -0
  12. package/dist/types/cli/handlers/assistants-handler.d.ts +13 -0
  13. package/dist/types/cli/handlers/community-handler.d.ts +1 -0
  14. package/dist/types/cli/handlers/dream-handler.d.ts +1 -0
  15. package/dist/types/cli/idle-dream-coordinator.d.ts +1 -1
  16. package/dist/types/cli/permission-runtime-service.d.ts +2 -2
  17. package/dist/types/cli/permission-settings-store.d.ts +1 -2
  18. package/dist/types/cli/plugin-bootstrap.d.ts +1 -0
  19. package/dist/types/cli/skill-meta-subturn-service.d.ts +4 -0
  20. package/dist/types/cli/turn-permission-sync.d.ts +2 -2
  21. package/dist/types/permissions.d.ts +1 -1
  22. package/dist/types/protocol/methods.d.ts +47 -7
  23. package/dist/types/protocol/wire/agent-rpc.d.ts +0 -7
  24. package/dist/types/protocol/wire/gateway-rpc.d.ts +112 -0
  25. package/dist/types/runtime/community/community-consent-client.d.ts +1 -0
  26. package/dist/types/runtime/community/community-discovery-cache.d.ts +24 -0
  27. package/dist/types/runtime/community/community-discovery-coordinator.d.ts +33 -0
  28. package/dist/types/runtime/community/community-pet-publisher.d.ts +30 -0
  29. package/dist/types/runtime/community/community-signal-reporter.d.ts +33 -0
  30. package/dist/types/runtime/execution/dream-agent.d.ts +1 -0
  31. package/dist/types/runtime/hooks/skill-recall-hooks.d.ts +3 -0
  32. package/dist/types/runtime/infra/agent-paths.d.ts +2 -0
  33. package/dist/types/runtime/infra/default-path-service.d.ts +2 -0
  34. package/dist/types/runtime/infra/index.d.ts +1 -1
  35. package/dist/types/runtime/infra/llmrouter-catalog.d.ts +2 -0
  36. package/dist/types/runtime/pet/pet-community-assets.d.ts +13 -0
  37. package/dist/types/runtime/ports/index.d.ts +1 -1
  38. package/dist/types/runtime/ports/path-service.d.ts +2 -0
  39. package/dist/types/runtime/ports/permission-contracts.d.ts +2 -9
  40. package/dist/types/runtime/sandbox/index.d.ts +2 -0
  41. package/dist/types/runtime/sandbox/skill-sandbox.d.ts +53 -0
  42. package/dist/types/runtime/sandbox/windows-skill-sandbox.d.ts +78 -0
  43. package/dist/types/runtime/session/session-persistence.d.ts +8 -0
  44. package/dist/types/skills/permissions/community-sandbox-red-team.d.ts +2 -0
  45. package/dist/types/skills/permissions/hook-runner.d.ts +2 -4
  46. package/dist/types/skills/permissions/index.d.ts +1 -1
  47. package/dist/types/skills/permissions/rule-engine.d.ts +5 -9
  48. package/dist/types/skills/permissions/types.d.ts +1 -1
  49. package/dist/types/skills/plugins/plugin-api.d.ts +1 -0
  50. package/dist/types/skills/plugins/plugin-loader.d.ts +4 -0
  51. package/dist/types/skills/skill-system/skill-lifecycle.d.ts +7 -0
  52. package/package.json +1 -1
package/dist/protocol.js CHANGED
@@ -1 +1 @@
1
- var q="1.0.0",d={PARSE_ERROR:-32700,INVALID_REQUEST:-32600,METHOD_NOT_FOUND:-32601,INVALID_PARAMS:-32602,INTERNAL_ERROR:-32603,TURN_ABORTED:-32e3,TURN_TIMEOUT:-32001,LLM_ERROR:-32010,LLM_AUTH_ERROR:-32011,LLM_RATE_LIMIT:-32012,LLM_QUOTA_EXHAUSTED:-32013,LLM_MODEL_NOT_FOUND:-32014,TOOL_INVOKE_FAILED:-32020,TOOL_TIMEOUT:-32021,PROTOCOL_MISMATCH:-32030,REQUEST_DEADLINE_EXCEEDED:-32040,REQUEST_CANCELLED:-32041,REQUEST_DEDUPED:-32042,REQUEST_IDEMPOTENCY_REQUIRED:-32043},Y={REQUEST:"tool.approval.request",RESPONSE:"tool.approval.response"};function b(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&t.method.length>0}function C(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&(typeof t.id=="string"||typeof t.id=="number")&&!("method"in t)}function I(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function X(e){let t;try{t=JSON.parse(e)}catch{return null}return C(t)||b(t)||I(t)?t:null}import{randomUUID as H}from"node:crypto";var G=["settings.list","settings.get","settings.validate","provider.list","config.get","config.tunables","tools.list","todos.list","tasks.list","agents.list","agents.get","agents.processes","agents.scan","session.list","session.get","session.resolve","thread.list","project.list","files.list","files.gitStatus","instructions.list","instructions.read","skills.list","skills.stats","memory.atlas","memory.activity","memory.list","memory.read","memory.search","media.listModels","media.status","pet.status","agent.health","agent.metrics"],z=new Set(["thread.turn","memory.dream","memory.propose","memory.consolidate","media.stt","pet.forge","solo.start","solo.evaluate","product.plan","product.create","product.message"]),J=["memory.","pet.","usage."],Q=new Set(["memory.atlas","memory.activity","memory.list","memory.read","memory.search","pet.status"]);function f(e){return z.has(e)?{channel:"task",mutability:"write",defaultTimeoutMs:e==="thread.turn"?3e5:12e4}:G.some(t=>e===t||e.startsWith(`${t}.`)||e.startsWith(t))?{channel:"query",mutability:"read",defaultTimeoutMs:1e4}:{channel:"task",mutability:"write",defaultTimeoutMs:3e4}}function h(e){return Q.has(e)||f(e).mutability==="read"?!1:J.some(t=>e.startsWith(t))}function $(e,t={}){let r=t.now??Date.now(),o=f(e),i=t.timeoutMs??o.defaultTimeoutMs;return{requestId:t.requestId??H(),createdAt:r,deadlineAt:r+i,channel:t.channel??o.channel,idempotencyKey:t.idempotencyKey,traceId:t.traceId}}function v(e,t=Date.now()){let r=e.meta;if(!r||typeof r!="object")return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta is required."}};if(typeof r.requestId!="string"||r.requestId.length===0)return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.requestId is required."}};if(r.channel!=="query"&&r.channel!=="task")return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.channel must be query or task."}};if(typeof r.createdAt!="number"||!Number.isFinite(r.createdAt))return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.createdAt is required."}};if(typeof r.deadlineAt!="number"||!Number.isFinite(r.deadlineAt))return{ok:!1,error:{code:d.INVALID_REQUEST,message:"RPC request meta.deadlineAt is required."}};if(r.deadlineAt<=t)return{ok:!1,error:{code:d.REQUEST_DEADLINE_EXCEEDED,message:"RPC request deadline has already expired."}};let o=f(e.method).channel;return r.channel!==o?{ok:!1,error:{code:d.INVALID_REQUEST,message:`RPC request channel mismatch: expected ${o}, got ${r.channel}.`}}:h(e.method)&&(typeof r.idempotencyKey!="string"||r.idempotencyKey.length===0)?{ok:!1,error:{code:d.REQUEST_IDEMPOTENCY_REQUIRED,message:`RPC method ${e.method} requires meta.idempotencyKey.`}}:{ok:!0,meta:r}}var R=class{now;active=new Map;idempotency=new Map;counters={completedRequests:0,cancelledRequests:0,deadlineExceededRequests:0,dedupedRequests:0,lateResponsesDropped:0,invalidRequests:0};constructor(t={}){this.now=t.now??(()=>Date.now())}begin(t,r){let o=v({method:t,meta:r},this.now());if(!o.ok)return this.counters.invalidRequests+=1,{status:"rejected",error:o.error};if(r.idempotencyKey){let i=this.idempotency.get(r.idempotencyKey);if(i)return this.counters.dedupedRequests+=1,i.error?{status:"deduped",error:i.error}:{status:"deduped",result:i.result}}return this.active.set(r.requestId,{method:t,meta:r,cancelled:!1,startedAt:this.now()}),{status:"started"}}cancel(t,r="cancelled"){let o=this.active.get(t);return!o||o.cancelled?!1:(o.cancelled=!0,o.cancelReason=r,this.counters.cancelledRequests+=1,!0)}expire(t){return this.active.get(t)?(this.active.delete(t),this.counters.deadlineExceededRequests+=1,!0):!1}settle(t,r,o){let i=this.active.get(t);return i?(this.active.delete(t),i.cancelled?(this.counters.lateResponsesDropped+=1,{accepted:!1,reason:"cancelled"}):i.meta.deadlineAt<=this.now()?(this.counters.deadlineExceededRequests+=1,this.counters.lateResponsesDropped+=1,{accepted:!1,reason:"deadline_exceeded"}):(this.counters.completedRequests+=1,i.meta.idempotencyKey&&this.idempotency.set(i.meta.idempotencyKey,{result:r,error:o,settledAt:this.now()}),{accepted:!0})):{accepted:!1,reason:"unknown"}}metrics(){return{activeRequests:this.active.size,...this.counters}}};var Z=["agent.health","agent.metrics","agent.cancel","session.list","session.get","session.create","session.update","session.delete","session.deleteAll","session.archive","session.moveToProject","session.getState","session.switchProject","session.getMessages","project.list","project.create","project.delete","project.rename","project.archive","project.unarchive","project.update","project.archiveByGroup","project.purgeAll","instructions.list","instructions.read","instructions.write","instructions.delete","files.list","files.read","files.create","files.rename","files.delete","files.gitStatus","skills.list","memory.list-files","memory.atlas","memory.activity","memory.observe","memory.propose","memory.consolidate","memory.update"];var M=["turn.start","turn.delta","turn.end","turn.error","turn.recovery","turn.tool_call","turn.tool_result","turn.tool_blocked","turn.reasoning_delta","turn.approval_request","turn.skill_instruction","turn.ask_user","turn.media_result","turn.media_progress","turn.plan_update","turn.suggestions","turn.sidechain_started","turn.subagent_delta","turn.sidechain_completed","turn.task_updated","turn.todos_updated","turn.exec_progress","turn.usage_update","team.member.notification","session.info","memory.updated","skills.updated","pet.soul_ready","pet.reaction","pet.growth","pet.state","pet.confirm","pet.forged","system.activity","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"],ee=[...M,...k];var te=1,re={INITIALIZE:"initialize",SESSION_NEW:"session/new",SESSION_PROMPT:"session/prompt",SESSION_END:"session/end",SESSION_SET_CONFIG:"session/set_config_option",SESSION_SET_MODEL:"session/set_model",SESSION_SET_MODE:"session/set_mode",SESSION_UPDATE:"session/update",SESSION_REQUEST_PERMISSION:"session/request_permission",FS_READ_TEXT_FILE:"fs/read_text_file",FS_WRITE_TEXT_FILE:"fs/write_text_file"},oe={ABORT:"x/abort",DREAM:"x/dream",AGENTS_LIST:"x/agents.list",SOLO_START:"x/solo.start",SOLO_STATUS:"x/solo.status",SOLO_SELECT:"x/solo.select",SOLO_CANCEL:"x/solo.cancel",PRODUCT_CREATE:"x/product.create",PRODUCT_PLAN:"x/product.plan",PRODUCT_CONFIRM:"x/product.confirm",PRODUCT_MESSAGE:"x/product.message",PRODUCT_RESUME:"x/product.resume",PRODUCT_PAUSE:"x/product.pause",PRODUCT_CANCEL:"x/product.cancel",PRODUCT_ROLLBACK:"x/product.rollback",PRODUCT_STATUS:"x/product.status",SOLO_SUBSCRIBE:"x/solo.subscribe",SOLO_MESSAGE:"x/solo.message",SOLO_EVALUATE:"x/solo.evaluate",PRODUCT_SUBSCRIBE:"x/product.subscribe",TEAM_DELEGATE:"x/team.delegate"},x={AGENT_MESSAGE_CHUNK:"agent_message_chunk",AGENT_THOUGHT_CHUNK:"agent_thought_chunk",TOOL_CALL:"tool_call",TOOL_CALL_UPDATE:"tool_call_update",PLAN:"plan",USAGE_UPDATE:"usage_update",CONFIG_OPTION_UPDATE:"config_option_update",SESSION_INFO_UPDATE:"session_info_update",AVAILABLE_COMMANDS_UPDATE:"available_commands_update"},ne={X_SUBAGENT_STARTED:"x_subagent_started",X_SUBAGENT_DELTA:"x_subagent_delta",X_SUBAGENT_ENDED:"x_subagent_ended",X_MEDIA_RESULT:"x_media_result",X_MEDIA_PROGRESS:"x_media_progress",X_SKILL_INSTRUCTION:"x_skill_instruction",X_RECOVERY:"x_recovery",X_SIDECHAIN_STARTED:"x_sidechain_started",X_SIDECHAIN_COMPLETED:"x_sidechain_completed",X_SUGGESTIONS:"x_suggestions",X_ASK_USER:"x_ask_user",X_SESSION_INFO:"x_session_info",X_MEMORY_UPDATED:"x_memory_updated",X_TEAM_MEMBER_UPDATE:"x_team_member_update",X_SOLO_STARTED:"x_solo_started",X_SOLO_AGENT_FINISHED:"x_solo_agent_finished",X_SOLO_SELECTED:"x_solo_selected",X_PRODUCT_TASK_STARTED:"x_product_task_started",X_PRODUCT_TASK_COMPLETED:"x_product_task_completed",X_PRODUCT_CHECKPOINT:"x_product_checkpoint"};function O(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&"id"in t}function N(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function D(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&"id"in t&&!("method"in t)}function ie(e){let t;try{t=JSON.parse(e)}catch{return null}return D(t)||O(t)||N(t)?t:null}function se(e){return Object.values(x).includes(e)}function ae(e){return e.startsWith("x_")}var E=["gatewayVersion","toolNamespaces","workspaceIds","installedCapabilities","enabledCapabilities","features","approvalMode","toolManifests","skillManifests","pluginManifests","mcpManifests","approvalPolicy","workspaceSummaries"];function g(e){return e?e.map(t=>({...t})):void 0}function _(e){return e?e.map(t=>({...t})):void 0}function pe(e){return e?[...e]:void 0}function w(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))].sort((t,r)=>t.localeCompare(r))}function y(e){return{...e,toolNamespaces:[...e.toolNamespaces],workspaceIds:[...e.workspaceIds],...e.changedSections?{changedSections:[...e.changedSections]}:{},...e.installedCapabilities?{installedCapabilities:[...e.installedCapabilities]}:{},...e.enabledCapabilities?{enabledCapabilities:[...e.enabledCapabilities]}:{},...e.features?{features:[...e.features]}:{},...e.toolManifests?{toolManifests:g(e.toolManifests)}:{},...e.skillManifests?{skillManifests:g(e.skillManifests)}:{},...e.pluginManifests?{pluginManifests:g(e.pluginManifests)}:{},...e.mcpManifests?{mcpManifests:g(e.mcpManifests)}:{},...e.approvalPolicy?{approvalPolicy:{...e.approvalPolicy}}:{},...e.workspaceSummaries?{workspaceSummaries:_(e.workspaceSummaries)}:{}}}function ce(e){let{previous:t,update:r}=e;return!(r.syncMode==="diff"&&t&&(!r.baseSnapshotVersion||t.snapshotVersion===r.baseSnapshotVersion))||!t?y(r):{...y(t),snapshotVersion:r.snapshotVersion,updatedAt:r.updatedAt,...r.gatewayVersion!==void 0?{gatewayVersion:r.gatewayVersion}:{},...r.syncMode?{syncMode:r.syncMode}:{},...r.baseSnapshotVersion?{baseSnapshotVersion:r.baseSnapshotVersion}:{},...r.changedSections?{changedSections:[...r.changedSections]}:{},...r.toolNamespaces?{toolNamespaces:[...r.toolNamespaces]}:{},...r.workspaceIds?{workspaceIds:[...r.workspaceIds]}:{},...r.installedCapabilities?{installedCapabilities:[...r.installedCapabilities]}:{},...r.enabledCapabilities?{enabledCapabilities:[...r.enabledCapabilities]}:{},...r.features?{features:[...r.features]}:{},...r.approvalMode?{approvalMode:r.approvalMode}:{},...r.toolManifests?{toolManifests:g(r.toolManifests)}:{},...r.skillManifests?{skillManifests:g(r.skillManifests)}:{},...r.pluginManifests?{pluginManifests:g(r.pluginManifests)}:{},...r.mcpManifests?{mcpManifests:g(r.mcpManifests)}:{},...r.approvalPolicy?{approvalPolicy:{...r.approvalPolicy}}:{},...r.workspaceSummaries?{workspaceSummaries:_(r.workspaceSummaries)}:{}}}function le(e){return w(e.map(t=>t.name.split(".")[0]??"").filter(Boolean))}function de(e){return w(e.map(t=>t.id))}function ue(e){let{previous:t,current:r}=e;if(!t)return{...y(r),syncMode:"full"};if(t.snapshotVersion===r.snapshotVersion)return null;let o=E.filter(s=>JSON.stringify(t[s])!==JSON.stringify(r[s]));if(o.length===E.length)return{...y(r),syncMode:"full"};let i={snapshotVersion:r.snapshotVersion,updatedAt:r.updatedAt,syncMode:"diff",baseSnapshotVersion:t.snapshotVersion,changedSections:o,toolNamespaces:[...r.toolNamespaces],workspaceIds:[...r.workspaceIds]},c=i;for(let s of o){let n=r[s];if(n!==void 0)switch(s){case"toolNamespaces":case"workspaceIds":case"installedCapabilities":case"enabledCapabilities":case"features":c[s]=pe(n);break;case"approvalPolicy":c[s]={...n};break;case"workspaceSummaries":c[s]=_(n);break;case"toolManifests":case"skillManifests":case"pluginManifests":case"mcpManifests":c[s]=g(n);break;default:c[s]=n;break}}return i}var ge=["web_search","web_fetch","deep_research","browser_execution"],ye=["web-intelligence","browser-execution"],me=["discovery","read-url","multi-source-research","interactive-browser"],fe=["stateless","render-backend","interactive-session"],Ae=["stateless","stateless-single-step","stateful-session-required"],Re=["required","conditional","none"],Ee=["browser-read","browser-authenticated-read","browser-state-changing"];var _e=["read-page","read-authenticated-page","fill-form","submit-form","download-file","reuse-session"],Se=["web_search","web_fetch","deep_research","blocked"],Te=["requires-interaction","requires-login-state","requires-rendered-dom","requires-persistent-session","requires-state-changing-action"],Pe=["none","same-capability-once","degrade-only"];var be=["prefetch","sync_turn","on_pre_compress","on_session_end","on_delegation","on_memory_write"],Ce=["turn","sidechain","compress","session-end","agent-remember","auto-extract","implicit-extract","profile-extraction","dream"],Ie=["observe-only","parent-write","deny"];var he=2,a={gatewayImage:"gateway.image.desktop-slim",whisperModelTiny:"speech.whisper.model.tiny",ffmpegWin32X64:"runtime.ffmpeg.win32-x64",nodeWin32X64:"runtime.node.win32-x64",dockerDesktopWin32X64:"runtime.docker-desktop.win32-x64",dockerDesktopDarwinX64:"runtime.docker-desktop.darwin-x64",dockerDesktopDarwinArm64:"runtime.docker-desktop.darwin-arm64"},m={desktopDockerBridge:"desktop.docker-bridge",desktopEmbeddedWin32X64:"desktop.embedded.win32-x64"};function L(e){return{...e,artifacts:e.artifacts.map(t=>({...t}))}}function ve(e){return{...e,assetIds:[...e.assetIds]}}function K(){return{[m.desktopDockerBridge]:{id:m.desktopDockerBridge,title:"Desktop Docker Bridge",platform:"any",assetIds:[a.gatewayImage,a.dockerDesktopWin32X64,a.dockerDesktopDarwinX64,a.dockerDesktopDarwinArm64],description:"Docker bridge mode downloads the desktop slim gateway image on demand."},[m.desktopEmbeddedWin32X64]:{id:m.desktopEmbeddedWin32X64,title:"Desktop Embedded Win32 x64",platform:"win32-x64",assetIds:[a.nodeWin32X64,a.ffmpegWin32X64,a.whisperModelTiny],description:"Embedded desktop mode requires the bundled Node/FFmpeg runtimes and the whisper model asset."}}}function W(e,t){return e.assets[t]}function V(e,t){return e.profiles[t]}function Me(e,t){let r=V(e,t);return r?r.assetIds.map(o=>W(e,o)).filter(o=>!!o):[]}function ke(e,t){return e.assets[t.id]=L(t),F(e)}function S(e){if(!e)return;let t=e.artifacts[0];if(!(!t?.url||!t.sha256||typeof t.size!="number"))return{version:e.version,sha256:t.sha256,size:t.size,url:t.url}}function F(e){let t=S(e.assets[a.gatewayImage]),r=S(e.assets[a.whisperModelTiny]);return{...e,gateway:t,whisperModel:r}}function U(e,t){if(!(typeof e.version!="string"||typeof e.url!="string"))return{...t,version:e.version,artifacts:[{fileName:e.url.split("/").pop()||`${t.id}.bin`,url:e.url,sha256:typeof e.sha256=="string"?e.sha256:void 0,size:typeof e.size=="number"?e.size:void 0}]}}function xe(e){let t=e&&typeof e=="object"?e:{},r={},o=t.assets&&typeof t.assets=="object"?t.assets:{};for(let[n,p]of Object.entries(o)){if(!p||typeof p!="object")continue;let u=p;!u.id||!Array.isArray(u.artifacts)||(r[n]=L(u))}if(!r[a.gatewayImage]&&t.gateway&&typeof t.gateway=="object"){let n=U(t.gateway,{id:a.gatewayImage,title:"OpenClaw Gateway Image (Desktop Slim)",kind:"container-image",delivery:"remote",platform:"any",description:"Desktop Docker mode gateway image."});n&&(r[n.id]=n)}if(!r[a.whisperModelTiny]&&t.whisperModel&&typeof t.whisperModel=="object"){let n=U(t.whisperModel,{id:a.whisperModelTiny,title:"Whisper Tiny Model",kind:"model",delivery:"remote",platform:"any",description:"Shared whisper.cpp tiny model asset for embedded desktop speech recognition."});n&&(r[n.id]=n)}let c={...K()},s=t.profiles&&typeof t.profiles=="object"?t.profiles:{};for(let[n,p]of Object.entries(s)){if(!p||typeof p!="object")continue;let u=p;!u.id||!Array.isArray(u.assetIds)||(c[n]=ve(u))}return F({schemaVersion:typeof t.schemaVersion=="number"?t.schemaVersion:2,channel:typeof t.channel=="string"?t.channel:void 0,publishedAt:typeof t.publishedAt=="string"?t.publishedAt:void 0,minElectronVersion:typeof t.minElectronVersion=="string"?t.minElectronVersion:void 0,releaseNotes:typeof t.releaseNotes=="string"?t.releaseNotes:void 0,assets:r,profiles:c})}var Oe=["pending","captured","failed","restored"],Ne=["file","directory","missing"],De=["metadata-only","workspace-copy","shadow-git"];var we=["api-key","oauth","token","aws-sdk"],Ue=["rate_limit","auth","server_error","timeout","network","unknown"],Le=["requiresOpenAiAnthropicToolPayload"];function Ke(e,t){return!e||typeof e!="object"||Array.isArray(e)?!1:e[t]===!0}var 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==="byteplus-plan"?"byteplus":t}var We=B,Ve={anthropicToolSchemaMode:"native",anthropicToolChoiceMode:"native",providerFamily:"default",preserveAnthropicThinkingSignatures:!0,openAiCompatTurnValidation:!0,providerThoughtSignatureSanitization:!1,transcriptToolCallIdMode:"default",transcriptToolCallIdModelHints:[],providerThoughtSignatureModelHints:[],dropThinkingBlockModelHints:[]},Fe={anthropic:{providerFamily:"anthropic"},"amazon-bedrock":{providerFamily:"anthropic"},"kimi-coding":{anthropicToolSchemaMode:"openai-functions",anthropicToolChoiceMode:"openai-string-modes",preserveAnthropicThinkingSignatures:!1},mistral:{transcriptToolCallIdMode:"strict9",transcriptToolCallIdModelHints:["mistral","mixtral","codestral","pixtral","devstral","ministral","mistralai"]},openai:{providerFamily:"openai"},[j]:{providerFamily:"openai"},openrouter:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},opencode:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},kilocode:{providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]}};function T(e,t){let r=(e??"").toLowerCase();return!!r&&t.some(o=>r.includes(o))}function l(e){let t=A(e??"");return{...Ve,...Fe[t]}}function je(e){return l(e).preserveAnthropicThinkingSignatures}function Be(e){let t=l(e);return t.anthropicToolSchemaMode!=="native"||t.anthropicToolChoiceMode!=="native"}function qe(e){return l(e).anthropicToolSchemaMode==="openai-functions"}function Ye(e){return l(e).anthropicToolChoiceMode==="openai-string-modes"}function Xe(e){return l(e).openAiCompatTurnValidation}function He(e){return l(e).providerFamily==="openai"}function Ge(e){return l(e).providerFamily==="anthropic"}function ze(e){return T(e.modelId,l(e.provider).dropThinkingBlockModelHints)}function Je(e){let t=l(e.provider);return t.providerThoughtSignatureSanitization&&T(e.modelId,t.providerThoughtSignatureModelHints)}function Qe(e,t){let r=l(e),o=r.transcriptToolCallIdMode;if(o==="strict9")return o;if(T(t,r.transcriptToolCallIdModelHints))return"strict9"}var P={anthropic:["ANTHROPIC_OAUTH_TOKEN","ANTHROPIC_API_KEY"],chutes:["CHUTES_OAUTH_TOKEN","CHUTES_API_KEY"],zai:["ZAI_API_KEY","Z_AI_API_KEY"],opencode:["OPENCODE_API_KEY","OPENCODE_ZEN_API_KEY"],volcengine:["VOLCANO_ENGINE_API_KEY"],"volcengine-plan":["VOLCANO_ENGINE_API_KEY"],byteplus:["BYTEPLUS_API_KEY"],"byteplus-plan":["BYTEPLUS_API_KEY"],"kimi-coding":["KIMI_API_KEY","KIMICODE_API_KEY"],huggingface:["HUGGINGFACE_HUB_TOKEN","HF_TOKEN"],openai:["OPENAI_API_KEY"],voyage:["VOYAGE_API_KEY"],groq:["GROQ_API_KEY"],deepgram:["DEEPGRAM_API_KEY"],cerebras:["CEREBRAS_API_KEY"],xai:["XAI_API_KEY"],openrouter:["OPENROUTER_API_KEY"],litellm:["LITELLM_API_KEY"],"vercel-ai-gateway":["AI_GATEWAY_API_KEY"],"cloudflare-ai-gateway":["CLOUDFLARE_AI_GATEWAY_API_KEY"],moonshot:["MOONSHOT_API_KEY"],minimax:["MINIMAX_API_KEY"],"minimax-cn":["MINIMAX_CN_API_KEY","MINIMAX_API_KEY"],nvidia:["NVIDIA_API_KEY"],xiaomi:["XIAOMI_API_KEY"],synthetic:["SYNTHETIC_API_KEY"],venice:["VENICE_API_KEY"],mistral:["MISTRAL_API_KEY"],together:["TOGETHER_API_KEY"],qianfan:["QIANFAN_API_KEY"],ollama:["OLLAMA_API_KEY"],vllm:["VLLM_API_KEY"],kilocode:["KILOCODE_API_KEY"]};function $e(){return[...new Set(Object.values(P).flat())]}function Ze(e){let t=A(e.provider),r=e.env??process.env,o=new Set(e.appliedEnvKeys??[]),i=n=>{let p=r[n]?.trim();if(!p)return null;let u=o.has(n)?`shell env: ${n}`:`env: ${n}`;return{apiKey:p,source:u}},c=e.resolveSpecialApiKey?.(t,r,o);if(c)return c;let s=P[t];if(!s||s.length===0)return null;for(let n of s){let p=i(n);if(p)return p}return null}export{oe as ACP_EXTENDED_METHODS,ne as ACP_EXTENDED_SESSION_UPDATE_TYPES,re as ACP_METHODS,te as ACP_PROTOCOL_VERSION,x as ACP_SESSION_UPDATE_TYPES,Y as AGENT_RPC_APPROVAL_METHODS,d as AGENT_RPC_ERROR_CODES,q as AGENT_RPC_PROTOCOL_VERSION,k as AGENT_TEAM_WS_EVENT_NAMES,M as AGENT_WS_EVENT_NAMES,ee as ALL_AGENT_WS_EVENT_NAMES,E as CAPABILITY_MANIFEST_DIFF_SECTIONS,Z as GATEWAY_RPC_METHODS,R as GatewayRpcContract,be as MEMORY_OBSERVATION_HOOK_VALUES,Ce as MEMORY_OBSERVATION_SOURCE_VALUES,Ie as MEMORY_WRITE_ACCESS_VALUES,De as MUTATION_CHECKPOINT_BACKEND_VALUES,Ne as MUTATION_CHECKPOINT_ENTRY_KIND_VALUES,Oe as MUTATION_CHECKPOINT_PHASE_VALUES,we as PROVIDER_RUNTIME_AUTH_MODE_VALUES,Le as PROVIDER_RUNTIME_COMPAT_FLAG_VALUES,P as PROVIDER_RUNTIME_ENV_API_KEY_CANDIDATES,j as PROVIDER_RUNTIME_OPENAI_CODEX_PROVIDER_ID,Ue as PROVIDER_RUNTIME_VAULT_ERROR_TYPE_VALUES,he as RESOURCE_MANIFEST_SCHEMA_VERSION,a as RUNTIME_ASSET_IDS,m as RUNTIME_PROFILE_IDS,_e as WEB_ACTION_SCOPE_VALUES,Re as WEB_APPROVAL_DEFAULT_VALUES,ye as WEB_CAPABILITY_FAMILY_VALUES,ge as WEB_CAPABILITY_ID_VALUES,Se as WEB_DEGRADATION_TARGET_VALUES,Te as WEB_ESCALATION_REASON_VALUES,fe as WEB_EXECUTION_MODE_VALUES,Ee as WEB_POLICY_RISK_CLASS_VALUES,Pe as WEB_RETRY_POLICY_VALUES,Ae as WEB_STATEFULNESS_VALUES,me as WEB_TASK_MODE_VALUES,$ as buildAgentRpcMeta,f as classifyGatewayRpcMethod,y as cloneCapabilityManifestSnapshot,ue as createCapabilityManifestDiffPayload,K as createDefaultRuntimeResourceProfiles,le as deriveCapabilityToolNamespaces,de as deriveCapabilityWorkspaceIds,S as getManifestShortcutEntry,W as getRuntimeResourceAsset,V as getRuntimeResourceProfile,Me as getRuntimeResourceProfileAssets,N as isAcpJsonRpcNotification,O as isAcpJsonRpcRequest,D as isAcpJsonRpcResponse,I as isAgentRpcNotification,b as isAgentRpcRequest,C as isAgentRpcResponse,Ge as isAnthropicProviderRuntimeFamily,ae as isExtendedSessionUpdateType,He as isOpenAiProviderRuntimeFamily,se as isStandardSessionUpdateType,$e as listProviderRuntimeEnvApiKeyNames,ce as mergeCapabilityManifestSnapshot,A as normalizeProviderRuntimeId,B as normalizeProviderRuntimeIdForAuth,xe as normalizeRuntimeResourceManifest,ie as parseAcpMessage,X as parseAgentRpcMessage,je as preservesProviderRuntimeAnthropicThinkingSignatures,Ke as readProviderRuntimeCompatFlag,v as requireGatewayRpcMeta,h as requiresIdempotencyKey,Be as requiresOpenAiCompatibleAnthropicToolPayloadForProviderRuntime,l as resolveProviderRuntimeCapabilities,Ze as resolveProviderRuntimeEnvApiKey,We as resolveProviderRuntimeKeyFamily,Qe as resolveProviderRuntimeTranscriptToolCallIdMode,ze as shouldDropThinkingBlocksForProviderRuntimeModel,Je as shouldSanitizeProviderRuntimeThoughtSignaturesForModel,Xe as supportsOpenAiCompatTurnValidationForProviderRuntime,ke as upsertRuntimeResourceAsset,qe as usesOpenAiFunctionAnthropicToolSchemaForProviderRuntime,Ye as usesOpenAiStringModeAnthropicToolChoiceForProviderRuntime};
1
+ var q="1.0.0",d={PARSE_ERROR:-32700,INVALID_REQUEST:-32600,METHOD_NOT_FOUND:-32601,INVALID_PARAMS:-32602,INTERNAL_ERROR:-32603,TURN_ABORTED:-32e3,TURN_TIMEOUT:-32001,LLM_ERROR:-32010,LLM_AUTH_ERROR:-32011,LLM_RATE_LIMIT:-32012,LLM_QUOTA_EXHAUSTED:-32013,LLM_MODEL_NOT_FOUND:-32014,TOOL_INVOKE_FAILED:-32020,TOOL_TIMEOUT:-32021,PROTOCOL_MISMATCH:-32030,REQUEST_DEADLINE_EXCEEDED:-32040,REQUEST_CANCELLED:-32041,REQUEST_DEDUPED:-32042,REQUEST_IDEMPOTENCY_REQUIRED:-32043},Y={REQUEST:"tool.approval.request",RESPONSE:"tool.approval.response"};function b(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&t.method.length>0}function C(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&(typeof t.id=="string"||typeof t.id=="number")&&!("method"in t)}function I(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function X(e){let t;try{t=JSON.parse(e)}catch{return null}return C(t)||b(t)||I(t)?t:null}import{randomUUID as H}from"node:crypto";var G=["settings.list","settings.get","settings.validate","provider.list","config.get","config.tunables","tools.list","todos.list","tasks.list","agents.list","agents.get","agents.processes","agents.scan","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"],z=new Set(["thread.turn","memory.dream","memory.propose","memory.consolidate","media.stt","pet.forge","solo.start","solo.evaluate","product.plan","product.create","product.message"]),J=["memory.","pet.","usage."],Q=new Set(["memory.atlas","memory.activity","memory.list","memory.read","memory.search","pet.status"]);function f(e){return z.has(e)?{channel:"task",mutability:"write",defaultTimeoutMs:e==="thread.turn"?3e5:12e4}:G.some(t=>e===t||e.startsWith(`${t}.`)||e.startsWith(t))?{channel:"query",mutability:"read",defaultTimeoutMs:1e4}:{channel:"task",mutability:"write",defaultTimeoutMs:3e4}}function v(e){return Q.has(e)||f(e).mutability==="read"?!1:J.some(t=>e.startsWith(t))}function $(e,t={}){let r=t.now??Date.now(),n=f(e),i=t.timeoutMs??n.defaultTimeoutMs;return{requestId:t.requestId??H(),createdAt:r,deadlineAt:r+i,channel:t.channel??n.channel,idempotencyKey:t.idempotencyKey,traceId:t.traceId}}function h(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}.`}}:v(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=h({method:t,meta:r},this.now());if(!n.ok)return this.counters.invalidRequests+=1,{status:"rejected",error:n.error};if(r.idempotencyKey){let i=this.idempotency.get(r.idempotencyKey);if(i)return this.counters.dedupedRequests+=1,i.error?{status:"deduped",error:i.error}:{status:"deduped",result:i.result}}return this.active.set(r.requestId,{method:t,meta:r,cancelled:!1,startedAt:this.now()}),{status:"started"}}cancel(t,r="cancelled"){let 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 i=this.active.get(t);return i?(this.active.delete(t),i.cancelled?(this.counters.lateResponsesDropped+=1,{accepted:!1,reason:"cancelled"}):i.meta.deadlineAt<=this.now()?(this.counters.deadlineExceededRequests+=1,this.counters.lateResponsesDropped+=1,{accepted:!1,reason:"deadline_exceeded"}):(this.counters.completedRequests+=1,i.meta.idempotencyKey&&this.idempotency.set(i.meta.idempotencyKey,{result:r,error:n,settledAt:this.now()}),{accepted:!0})):{accepted:!1,reason:"unknown"}}metrics(){return{activeRequests:this.active.size,...this.counters}}};var Z=["agent.health","agent.metrics","agent.cancel","session.list","session.get","session.create","session.update","session.delete","session.deleteAll","session.archive","session.moveToProject","session.getState","session.switchProject","session.getMessages","project.list","project.create","project.delete","project.rename","project.archive","project.unarchive","project.update","project.archiveByGroup","project.purgeAll","instructions.list","instructions.read","instructions.write","instructions.delete","files.list","files.read","files.create","files.rename","files.delete","files.gitStatus","skills.list","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"];var M=["turn.start","turn.delta","turn.end","turn.error","turn.recovery","turn.tool_call","turn.tool_result","turn.tool_blocked","turn.reasoning_delta","turn.approval_request","turn.skill_instruction","turn.ask_user","turn.media_result","turn.media_progress","turn.plan_update","turn.suggestions","turn.sidechain_started","turn.subagent_delta","turn.sidechain_completed","turn.task_updated","turn.todos_updated","turn.exec_progress","turn.usage_update","team.member.notification","session.info","memory.updated","skills.updated","pet.soul_ready","pet.reaction","pet.growth","pet.state","pet.confirm","pet.forged","system.activity","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"],ee=[...M,...k];var te=1,re={INITIALIZE:"initialize",SESSION_NEW:"session/new",SESSION_PROMPT:"session/prompt",SESSION_END:"session/end",SESSION_SET_CONFIG:"session/set_config_option",SESSION_SET_MODEL:"session/set_model",SESSION_SET_MODE:"session/set_mode",SESSION_UPDATE:"session/update",SESSION_REQUEST_PERMISSION:"session/request_permission",FS_READ_TEXT_FILE:"fs/read_text_file",FS_WRITE_TEXT_FILE:"fs/write_text_file"},ne={ABORT:"x/abort",DREAM:"x/dream",AGENTS_LIST:"x/agents.list",SOLO_START:"x/solo.start",SOLO_STATUS:"x/solo.status",SOLO_SELECT:"x/solo.select",SOLO_CANCEL:"x/solo.cancel",PRODUCT_CREATE:"x/product.create",PRODUCT_PLAN:"x/product.plan",PRODUCT_CONFIRM:"x/product.confirm",PRODUCT_MESSAGE:"x/product.message",PRODUCT_RESUME:"x/product.resume",PRODUCT_PAUSE:"x/product.pause",PRODUCT_CANCEL:"x/product.cancel",PRODUCT_ROLLBACK:"x/product.rollback",PRODUCT_STATUS:"x/product.status",SOLO_SUBSCRIBE:"x/solo.subscribe",SOLO_MESSAGE:"x/solo.message",SOLO_EVALUATE:"x/solo.evaluate",PRODUCT_SUBSCRIBE:"x/product.subscribe",TEAM_DELEGATE:"x/team.delegate"},x={AGENT_MESSAGE_CHUNK:"agent_message_chunk",AGENT_THOUGHT_CHUNK:"agent_thought_chunk",TOOL_CALL:"tool_call",TOOL_CALL_UPDATE:"tool_call_update",PLAN:"plan",USAGE_UPDATE:"usage_update",CONFIG_OPTION_UPDATE:"config_option_update",SESSION_INFO_UPDATE:"session_info_update",AVAILABLE_COMMANDS_UPDATE:"available_commands_update"},oe={X_SUBAGENT_STARTED:"x_subagent_started",X_SUBAGENT_DELTA:"x_subagent_delta",X_SUBAGENT_ENDED:"x_subagent_ended",X_MEDIA_RESULT:"x_media_result",X_MEDIA_PROGRESS:"x_media_progress",X_SKILL_INSTRUCTION:"x_skill_instruction",X_RECOVERY:"x_recovery",X_SIDECHAIN_STARTED:"x_sidechain_started",X_SIDECHAIN_COMPLETED:"x_sidechain_completed",X_SUGGESTIONS:"x_suggestions",X_ASK_USER:"x_ask_user",X_SESSION_INFO:"x_session_info",X_MEMORY_UPDATED:"x_memory_updated",X_TEAM_MEMBER_UPDATE:"x_team_member_update",X_SOLO_STARTED:"x_solo_started",X_SOLO_AGENT_FINISHED:"x_solo_agent_finished",X_SOLO_SELECTED:"x_solo_selected",X_PRODUCT_TASK_STARTED:"x_product_task_started",X_PRODUCT_TASK_COMPLETED:"x_product_task_completed",X_PRODUCT_CHECKPOINT:"x_product_checkpoint"};function O(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&"id"in t}function N(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&typeof t.method=="string"&&!("id"in t)}function D(e){if(!e||typeof e!="object")return!1;let t=e;return t.jsonrpc==="2.0"&&"id"in t&&!("method"in t)}function ie(e){let t;try{t=JSON.parse(e)}catch{return null}return D(t)||O(t)||N(t)?t:null}function se(e){return Object.values(x).includes(e)}function ae(e){return e.startsWith("x_")}var E=["gatewayVersion","toolNamespaces","workspaceIds","installedCapabilities","enabledCapabilities","features","approvalMode","toolManifests","skillManifests","pluginManifests","mcpManifests","approvalPolicy","workspaceSummaries"];function g(e){return e?e.map(t=>({...t})):void 0}function _(e){return e?e.map(t=>({...t})):void 0}function pe(e){return e?[...e]:void 0}function w(e){return[...new Set(e.map(t=>t.trim()).filter(Boolean))].sort((t,r)=>t.localeCompare(r))}function 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:_(e.workspaceSummaries)}:{}}}function ce(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:_(r.workspaceSummaries)}:{}}}function le(e){return w(e.map(t=>t.name.split(".")[0]??"").filter(Boolean))}function de(e){return w(e.map(t=>t.id))}function ue(e){let{previous:t,current:r}=e;if(!t)return{...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 i={snapshotVersion:r.snapshotVersion,updatedAt:r.updatedAt,syncMode:"diff",baseSnapshotVersion:t.snapshotVersion,changedSections:n,toolNamespaces:[...r.toolNamespaces],workspaceIds:[...r.workspaceIds]},c=i;for(let s of n){let o=r[s];if(o!==void 0)switch(s){case"toolNamespaces":case"workspaceIds":case"installedCapabilities":case"enabledCapabilities":case"features":c[s]=pe(o);break;case"approvalPolicy":c[s]={...o};break;case"workspaceSummaries":c[s]=_(o);break;case"toolManifests":case"skillManifests":case"pluginManifests":case"mcpManifests":c[s]=g(o);break;default:c[s]=o;break}}return i}var ge=["web_search","web_fetch","deep_research","browser_execution"],me=["web-intelligence","browser-execution"],ye=["discovery","read-url","multi-source-research","interactive-browser"],fe=["stateless","render-backend","interactive-session"],Ae=["stateless","stateless-single-step","stateful-session-required"],Re=["required","conditional","none"],Ee=["browser-read","browser-authenticated-read","browser-state-changing"];var _e=["read-page","read-authenticated-page","fill-form","submit-form","download-file","reuse-session"],Se=["web_search","web_fetch","deep_research","blocked"],Pe=["requires-interaction","requires-login-state","requires-rendered-dom","requires-persistent-session","requires-state-changing-action"],Te=["none","same-capability-once","degrade-only"];var be=["prefetch","sync_turn","on_pre_compress","on_session_end","on_delegation","on_memory_write"],Ce=["turn","sidechain","compress","session-end","agent-remember","auto-extract","implicit-extract","profile-extraction","dream"],Ie=["observe-only","parent-write","deny"];var 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 L(e){return{...e,artifacts:e.artifacts.map(t=>({...t}))}}function he(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 Me(e,t){let r=V(e,t);return r?r.assetIds.map(n=>K(e,n)).filter(n=>!!n):[]}function ke(e,t){return e.assets[t.id]=L(t),F(e)}function S(e){if(!e)return;let t=e.artifacts[0];if(!(!t?.url||!t.sha256||typeof t.size!="number"))return{version:e.version,sha256:t.sha256,size:t.size,url:t.url}}function F(e){let t=S(e.assets[a.gatewayImage]),r=S(e.assets[a.whisperModelTiny]);return{...e,gateway:t,whisperModel:r}}function U(e,t){if(!(typeof e.version!="string"||typeof e.url!="string"))return{...t,version:e.version,artifacts:[{fileName:e.url.split("/").pop()||`${t.id}.bin`,url:e.url,sha256:typeof e.sha256=="string"?e.sha256:void 0,size:typeof e.size=="number"?e.size:void 0}]}}function xe(e){let t=e&&typeof e=="object"?e:{},r={},n=t.assets&&typeof t.assets=="object"?t.assets:{};for(let[o,p]of Object.entries(n)){if(!p||typeof p!="object")continue;let u=p;!u.id||!Array.isArray(u.artifacts)||(r[o]=L(u))}if(!r[a.gatewayImage]&&t.gateway&&typeof t.gateway=="object"){let o=U(t.gateway,{id:a.gatewayImage,title:"OpenClaw Gateway Image (Desktop Slim)",kind:"container-image",delivery:"remote",platform:"any",description:"Desktop Docker mode gateway image."});o&&(r[o.id]=o)}if(!r[a.whisperModelTiny]&&t.whisperModel&&typeof t.whisperModel=="object"){let o=U(t.whisperModel,{id:a.whisperModelTiny,title:"Whisper Tiny Model",kind:"model",delivery:"remote",platform:"any",description:"Shared whisper.cpp tiny model asset for embedded desktop speech recognition."});o&&(r[o.id]=o)}let c={...W()},s=t.profiles&&typeof t.profiles=="object"?t.profiles:{};for(let[o,p]of Object.entries(s)){if(!p||typeof p!="object")continue;let u=p;!u.id||!Array.isArray(u.assetIds)||(c[o]=he(u))}return F({schemaVersion:typeof t.schemaVersion=="number"?t.schemaVersion:2,channel:typeof t.channel=="string"?t.channel:void 0,publishedAt:typeof t.publishedAt=="string"?t.publishedAt:void 0,minElectronVersion:typeof t.minElectronVersion=="string"?t.minElectronVersion:void 0,releaseNotes:typeof t.releaseNotes=="string"?t.releaseNotes:void 0,assets:r,profiles:c})}var Oe=["pending","captured","failed","restored"],Ne=["file","directory","missing"],De=["metadata-only","workspace-copy","shadow-git"];var we=["api-key","oauth","token","aws-sdk"],Ue=["rate_limit","auth","server_error","timeout","network","unknown"],Le=["requiresOpenAiAnthropicToolPayload"];function We(e,t){return!e||typeof e!="object"||Array.isArray(e)?!1:e[t]===!0}var B="openai-codex";function A(e){let t=e.trim().toLowerCase();return t==="z.ai"||t==="z-ai"?"zai":t==="opencode-zen"?"opencode":t==="kimi-code"?"kimi-coding":t==="bedrock"||t==="aws-bedrock"?"amazon-bedrock":t==="bytedance"||t==="doubao"?"volcengine":t}function j(e){let t=A(e);return t==="volcengine-plan"?"volcengine":t==="byteplus-plan"?"byteplus":t}var Ke=j,Ve={anthropicToolSchemaMode:"native",anthropicToolChoiceMode:"native",providerFamily:"default",preserveAnthropicThinkingSignatures:!0,openAiCompatTurnValidation:!0,providerThoughtSignatureSanitization:!1,transcriptToolCallIdMode:"default",transcriptToolCallIdModelHints:[],providerThoughtSignatureModelHints:[],dropThinkingBlockModelHints:[]},Fe={anthropic:{providerFamily:"anthropic"},"amazon-bedrock":{providerFamily:"anthropic"},"kimi-coding":{anthropicToolSchemaMode:"openai-functions",anthropicToolChoiceMode:"openai-string-modes",preserveAnthropicThinkingSignatures:!1},mistral:{transcriptToolCallIdMode:"strict9",transcriptToolCallIdModelHints:["mistral","mixtral","codestral","pixtral","devstral","ministral","mistralai"]},openai:{providerFamily:"openai"},[B]:{providerFamily:"openai"},openrouter:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},opencode:{openAiCompatTurnValidation:!1,providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]},kilocode:{providerThoughtSignatureSanitization:!0,providerThoughtSignatureModelHints:["gemini"]}};function P(e,t){let r=(e??"").toLowerCase();return!!r&&t.some(n=>r.includes(n))}function l(e){let t=A(e??"");return{...Ve,...Fe[t]}}function Be(e){return l(e).preserveAnthropicThinkingSignatures}function je(e){let t=l(e);return t.anthropicToolSchemaMode!=="native"||t.anthropicToolChoiceMode!=="native"}function qe(e){return l(e).anthropicToolSchemaMode==="openai-functions"}function Ye(e){return l(e).anthropicToolChoiceMode==="openai-string-modes"}function Xe(e){return l(e).openAiCompatTurnValidation}function He(e){return l(e).providerFamily==="openai"}function Ge(e){return l(e).providerFamily==="anthropic"}function ze(e){return P(e.modelId,l(e.provider).dropThinkingBlockModelHints)}function Je(e){let t=l(e.provider);return t.providerThoughtSignatureSanitization&&P(e.modelId,t.providerThoughtSignatureModelHints)}function Qe(e,t){let r=l(e),n=r.transcriptToolCallIdMode;if(n==="strict9")return n;if(P(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"],volcengine:["VOLCANO_ENGINE_API_KEY"],"volcengine-plan":["VOLCANO_ENGINE_API_KEY"],byteplus:["BYTEPLUS_API_KEY"],"byteplus-plan":["BYTEPLUS_API_KEY"],"kimi-coding":["KIMI_API_KEY","KIMICODE_API_KEY"],huggingface:["HUGGINGFACE_HUB_TOKEN","HF_TOKEN"],openai:["OPENAI_API_KEY"],voyage:["VOYAGE_API_KEY"],groq:["GROQ_API_KEY"],deepgram:["DEEPGRAM_API_KEY"],cerebras:["CEREBRAS_API_KEY"],xai:["XAI_API_KEY"],openrouter:["OPENROUTER_API_KEY"],litellm:["LITELLM_API_KEY"],"vercel-ai-gateway":["AI_GATEWAY_API_KEY"],"cloudflare-ai-gateway":["CLOUDFLARE_AI_GATEWAY_API_KEY"],moonshot:["MOONSHOT_API_KEY"],minimax:["MINIMAX_API_KEY"],"minimax-cn":["MINIMAX_CN_API_KEY","MINIMAX_API_KEY"],nvidia:["NVIDIA_API_KEY"],xiaomi:["XIAOMI_API_KEY"],synthetic:["SYNTHETIC_API_KEY"],venice:["VENICE_API_KEY"],mistral:["MISTRAL_API_KEY"],together:["TOGETHER_API_KEY"],qianfan:["QIANFAN_API_KEY"],ollama:["OLLAMA_API_KEY"],vllm:["VLLM_API_KEY"],kilocode:["KILOCODE_API_KEY"]};function $e(){return[...new Set(Object.values(T).flat())]}function Ze(e){let t=A(e.provider),r=e.env??process.env,n=new Set(e.appliedEnvKeys??[]),i=o=>{let p=r[o]?.trim();if(!p)return null;let u=n.has(o)?`shell env: ${o}`:`env: ${o}`;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 o of s){let p=i(o);if(p)return p}return null}export{ne as ACP_EXTENDED_METHODS,oe as ACP_EXTENDED_SESSION_UPDATE_TYPES,re as ACP_METHODS,te as ACP_PROTOCOL_VERSION,x as ACP_SESSION_UPDATE_TYPES,Y as AGENT_RPC_APPROVAL_METHODS,d as AGENT_RPC_ERROR_CODES,q as AGENT_RPC_PROTOCOL_VERSION,k as AGENT_TEAM_WS_EVENT_NAMES,M as AGENT_WS_EVENT_NAMES,ee as ALL_AGENT_WS_EVENT_NAMES,E as CAPABILITY_MANIFEST_DIFF_SECTIONS,Z as GATEWAY_RPC_METHODS,R as GatewayRpcContract,be as MEMORY_OBSERVATION_HOOK_VALUES,Ce as MEMORY_OBSERVATION_SOURCE_VALUES,Ie as MEMORY_WRITE_ACCESS_VALUES,De as MUTATION_CHECKPOINT_BACKEND_VALUES,Ne as MUTATION_CHECKPOINT_ENTRY_KIND_VALUES,Oe as MUTATION_CHECKPOINT_PHASE_VALUES,we as PROVIDER_RUNTIME_AUTH_MODE_VALUES,Le as PROVIDER_RUNTIME_COMPAT_FLAG_VALUES,T as PROVIDER_RUNTIME_ENV_API_KEY_CANDIDATES,B 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,Re as WEB_APPROVAL_DEFAULT_VALUES,me as WEB_CAPABILITY_FAMILY_VALUES,ge as WEB_CAPABILITY_ID_VALUES,Se as WEB_DEGRADATION_TARGET_VALUES,Pe as WEB_ESCALATION_REASON_VALUES,fe as WEB_EXECUTION_MODE_VALUES,Ee as WEB_POLICY_RISK_CLASS_VALUES,Te as WEB_RETRY_POLICY_VALUES,Ae as WEB_STATEFULNESS_VALUES,ye as WEB_TASK_MODE_VALUES,$ as buildAgentRpcMeta,f as classifyGatewayRpcMethod,m as cloneCapabilityManifestSnapshot,ue as createCapabilityManifestDiffPayload,W as createDefaultRuntimeResourceProfiles,le as deriveCapabilityToolNamespaces,de as deriveCapabilityWorkspaceIds,S as getManifestShortcutEntry,K as getRuntimeResourceAsset,V as getRuntimeResourceProfile,Me as getRuntimeResourceProfileAssets,N as isAcpJsonRpcNotification,O as isAcpJsonRpcRequest,D as isAcpJsonRpcResponse,I as isAgentRpcNotification,b as isAgentRpcRequest,C as isAgentRpcResponse,Ge as isAnthropicProviderRuntimeFamily,ae as isExtendedSessionUpdateType,He as isOpenAiProviderRuntimeFamily,se as isStandardSessionUpdateType,$e as listProviderRuntimeEnvApiKeyNames,ce as mergeCapabilityManifestSnapshot,A as normalizeProviderRuntimeId,j as normalizeProviderRuntimeIdForAuth,xe as normalizeRuntimeResourceManifest,ie as parseAcpMessage,X as parseAgentRpcMessage,Be as preservesProviderRuntimeAnthropicThinkingSignatures,We as readProviderRuntimeCompatFlag,h as requireGatewayRpcMeta,v as requiresIdempotencyKey,je as requiresOpenAiCompatibleAnthropicToolPayloadForProviderRuntime,l as resolveProviderRuntimeCapabilities,Ze as resolveProviderRuntimeEnvApiKey,Ke as resolveProviderRuntimeKeyFamily,Qe as resolveProviderRuntimeTranscriptToolCallIdMode,ze as shouldDropThinkingBlocksForProviderRuntimeModel,Je as shouldSanitizeProviderRuntimeThoughtSignaturesForModel,Xe as supportsOpenAiCompatTurnValidationForProviderRuntime,ke as upsertRuntimeResourceAsset,qe as usesOpenAiFunctionAnthropicToolSchemaForProviderRuntime,Ye as usesOpenAiStringModeAnthropicToolChoiceForProviderRuntime};
@@ -104,6 +104,8 @@ export interface TurnConfig {
104
104
  modelMaxOutputTokens?: number;
105
105
  /** Tool choice strategy: "auto" (default), "none", "required" */
106
106
  toolChoice?: "auto" | "none" | "required";
107
+ /** Declarative assistant preset id. Does not change model, tools, or permissions. */
108
+ assistantId?: string;
107
109
  /** Parent fork depth (0 = top-level, default 0). CC: depth tracking for fork recursion limit. */
108
110
  parentDepth?: number;
109
111
  /** Per-turn token budget (prompt + completion). 0 or undefined = unlimited. */
@@ -0,0 +1,4 @@
1
+ import type { AssistantPreset, AssistantRuntimeContext } from "./assistant-types.js";
2
+ export declare const BUILTIN_ASSISTANT_PRESETS: AssistantPreset[];
3
+ export declare function listAssistantPresets(): AssistantPreset[];
4
+ export declare function resolveAssistantPreset(id: string): AssistantRuntimeContext;
@@ -0,0 +1,23 @@
1
+ import type { AssistantPreset, AssistantPromptTemplate, AssistantRuntimeContext } from "./assistant-types.js";
2
+ import { type PluginAssistantDiagnostic } from "./plugin-assistant-registry.js";
3
+ export type UserAssistantPresetInput = Partial<AssistantPreset> & {
4
+ name: string;
5
+ prompts: AssistantPromptTemplate[];
6
+ };
7
+ export interface AssistantPresetStateOverride {
8
+ enabled?: boolean;
9
+ sortOrder?: number;
10
+ modelHints?: string[];
11
+ }
12
+ export interface AssistantPresetListOptions {
13
+ pluginManifestDirectories?: string[];
14
+ }
15
+ export declare function listAssistantPresets(options?: AssistantPresetListOptions): Promise<AssistantPreset[]>;
16
+ export declare function listAssistantDiagnostics(): PluginAssistantDiagnostic[];
17
+ export declare function resolveAssistantPreset(assistantId: string): Promise<AssistantRuntimeContext>;
18
+ export declare function upsertUserAssistantPreset(input: UserAssistantPresetInput): Promise<AssistantPreset>;
19
+ export declare function createUserAssistantPreset(input: UserAssistantPresetInput): Promise<AssistantPreset>;
20
+ export declare function updateUserAssistantPreset(input: UserAssistantPresetInput): Promise<AssistantPreset>;
21
+ export declare function deleteUserAssistantPreset(assistantId: string): Promise<void>;
22
+ export declare function setAssistantPresetState(assistantId: string, override: AssistantPresetStateOverride): Promise<AssistantPreset>;
23
+ export declare function cloneBuiltinAssistantPreset(assistantId: string): Promise<AssistantPreset>;
@@ -0,0 +1,20 @@
1
+ import type { ChatMessage } from "../protocol/wire/index.js";
2
+ import type { AssistantRuntimeContext, AssistantPresetSource } from "./assistant-types.js";
3
+ export interface AssistantSessionSnapshotInput {
4
+ id: string;
5
+ name: string;
6
+ source: AssistantPresetSource;
7
+ context?: string;
8
+ enabledSkills: string[];
9
+ disabledBuiltinSkills: string[];
10
+ }
11
+ export interface AssistantSessionSnapshot {
12
+ id: string;
13
+ name: string;
14
+ source: AssistantPresetSource;
15
+ contextHash: string;
16
+ enabledSkills: string[];
17
+ disabledBuiltinSkills: string[];
18
+ }
19
+ export declare function applyAssistantRuntimeContext<T extends ChatMessage>(messages: T[], context: AssistantRuntimeContext | null | undefined): Array<T | ChatMessage>;
20
+ export declare function createAssistantSessionSnapshot(input: AssistantSessionSnapshotInput): AssistantSessionSnapshot;
@@ -0,0 +1,38 @@
1
+ export type AssistantPresetSource = "builtin" | "user" | "plugin";
2
+ export interface AssistantPromptTemplate {
3
+ id: string;
4
+ title: string;
5
+ titleI18n?: Record<string, string>;
6
+ description?: string;
7
+ descriptionI18n?: Record<string, string>;
8
+ prompt: string;
9
+ promptI18n?: Record<string, string>;
10
+ icon?: string;
11
+ }
12
+ export interface AssistantPreset {
13
+ kind: "assistant-preset";
14
+ id: string;
15
+ source: AssistantPresetSource;
16
+ name: string;
17
+ nameI18n?: Record<string, string>;
18
+ description?: string;
19
+ descriptionI18n?: Record<string, string>;
20
+ avatar?: string;
21
+ enabled: boolean;
22
+ sortOrder: number;
23
+ enabledSkills: string[];
24
+ disabledBuiltinSkills: string[];
25
+ context?: string;
26
+ prompts: AssistantPromptTemplate[];
27
+ modelHints: string[];
28
+ pluginId?: string;
29
+ readonly?: boolean;
30
+ }
31
+ export interface AssistantRuntimeContext {
32
+ assistantId: string;
33
+ context?: string;
34
+ enabledSkillNames: string[];
35
+ disabledBuiltinSkillNames: string[];
36
+ modelHints: string[];
37
+ prompts: AssistantPromptTemplate[];
38
+ }
@@ -0,0 +1,16 @@
1
+ import type { AssistantPreset } from "./assistant-types.js";
2
+ export type PluginAssistantDiagnosticSeverity = "error" | "warning";
3
+ export interface PluginAssistantDiagnostic {
4
+ pluginId: string;
5
+ manifestPath?: string;
6
+ severity: PluginAssistantDiagnosticSeverity;
7
+ message: string;
8
+ assistantId?: string;
9
+ }
10
+ export declare function registerPluginAssistantManifest(pluginId: string, manifestPath: string, manifest: unknown): AssistantPreset[];
11
+ export declare function syncPluginAssistantManifestDirectory(directory: string): void;
12
+ export declare function clearPluginAssistantPresetsForTests(): void;
13
+ export declare function unregisterPluginAssistantManifest(pluginId: string): void;
14
+ export declare function listPluginAssistantPresets(): AssistantPreset[];
15
+ export declare function listPluginAssistantDiagnostics(): PluginAssistantDiagnostic[];
16
+ export declare function parseAssistantManifestText(text: string): unknown;
@@ -0,0 +1,29 @@
1
+ import type { CommunityInstallResolution } from "../runtime/community/community-consent-client.js";
2
+ import { type InstalledCommunityPetResource } from "../runtime/pet/pet-community-assets.js";
3
+ import { type CommunityInstalledResource, type InstallCommunitySkillOptions } from "./community-skill-installer.js";
4
+ export type CommunityInstalledAnyResource = CommunityInstalledResource | InstalledCommunityPetResource;
5
+ export interface CommunityMcpInstallPreview {
6
+ kind: "mcp";
7
+ mode: "preview";
8
+ resourceId: string;
9
+ version: string;
10
+ sourceTier: string;
11
+ perUseConsentRequired: true;
12
+ declaredPermissions: string[];
13
+ manifest: unknown;
14
+ }
15
+ export interface CommunityExecutableLauncherGate {
16
+ kind: "executable";
17
+ mode: "launcher-required" | "manual-review-required";
18
+ resourceId: string;
19
+ version: string;
20
+ resourceType: string;
21
+ sourceTier: string;
22
+ riskTier: string;
23
+ artifactDigest: string;
24
+ launcherRequired: true;
25
+ manualReviewRequired: boolean;
26
+ autoRunBlocked: true;
27
+ manifest: unknown;
28
+ }
29
+ export declare function installCommunityResource(install: CommunityInstallResolution, options?: InstallCommunitySkillOptions): Promise<CommunityInstalledAnyResource | CommunityMcpInstallPreview | CommunityExecutableLauncherGate>;
@@ -14,6 +14,7 @@ export interface DreamHostAdapterDeps {
14
14
  getVerbose(): boolean;
15
15
  log(message: string): void;
16
16
  resolveMemoryRoot(): string;
17
+ resolveTranscriptDir(): string;
17
18
  resolveAgent(config: TurnConfig): unknown | null;
18
19
  sendNotification(method: string, params: Record<string, unknown>): void;
19
20
  sendResponse(id: string | number, result?: unknown, error?: AgentRpcError): void;
@@ -0,0 +1,13 @@
1
+ import { type AgentRpcError, type AgentRpcRequest } from "../../protocol/wire/index.js";
2
+ export interface AssistantsHandlerHost {
3
+ getActiveProjectRoot?(): string;
4
+ sendResponse(id: string | number, result?: unknown, error?: AgentRpcError): void;
5
+ }
6
+ export declare function handleAssistantsList(this: AssistantsHandlerHost, msg: AgentRpcRequest): Promise<void>;
7
+ export declare function handleAssistantsResolve(this: AssistantsHandlerHost, msg: AgentRpcRequest): Promise<void>;
8
+ export declare function handleAssistantsCloneBuiltin(this: AssistantsHandlerHost, msg: AgentRpcRequest): Promise<void>;
9
+ export declare function handleAssistantsUpsert(this: AssistantsHandlerHost, msg: AgentRpcRequest): Promise<void>;
10
+ export declare function handleAssistantsCreate(this: AssistantsHandlerHost, msg: AgentRpcRequest): Promise<void>;
11
+ export declare function handleAssistantsUpdate(this: AssistantsHandlerHost, msg: AgentRpcRequest): Promise<void>;
12
+ export declare function handleAssistantsSetState(this: AssistantsHandlerHost, msg: AgentRpcRequest): Promise<void>;
13
+ export declare function handleAssistantsDelete(this: AssistantsHandlerHost, msg: AgentRpcRequest): Promise<void>;
@@ -18,6 +18,7 @@ export declare function handleCommunityMatchRegistry(this: CommunityHandlerHost,
18
18
  export declare function handleCommunityResolveInstall(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
19
19
  export declare function handleCommunityInstallResource(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
20
20
  export declare function handleCommunityPublishSkill(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
21
+ export declare function handleCommunityPublishPet(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
21
22
  export declare function handleCommunityRecordSignal(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
22
23
  export declare function handleCommunityRecordTelemetry(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
23
24
  export declare function handleCommunityListPublishAudit(this: CommunityHandlerHost, msg: AgentRpcRequest): Promise<void>;
@@ -20,6 +20,7 @@ export interface DreamHandlerHost {
20
20
  verbose?: boolean;
21
21
  log(message: string): void;
22
22
  resolveMemoryRoot?(): string;
23
+ resolveTranscriptDir?(): string;
23
24
  resolveAgent(config: TurnConfig): unknown | null;
24
25
  sendNotification(method: string, params: Record<string, unknown>): void;
25
26
  sendResponse(id: string | number, result?: unknown, error?: AgentRpcError): void;
@@ -22,8 +22,8 @@ export interface IdleDreamCoordinatorOptions {
22
22
  getCurrentTurnCount(): number;
23
23
  getActiveTurn(): AbortController | null;
24
24
  resolveDreamClient(): IdleDreamClient | null;
25
- getAgentHome(): string;
26
25
  resolveMemoryRoot(): string;
26
+ resolveTranscriptDir(): string;
27
27
  listRecentSessions(): Promise<Array<{
28
28
  sessionId: string;
29
29
  }>>;
@@ -1,9 +1,9 @@
1
1
  import { PermissionChecker } from "../skills/permissions/hook-runner.js";
2
2
  import { PermissionRuleEngine } from "../skills/permissions/rule-engine.js";
3
- import type { PermissionConfig } from "../runtime/ports/index.js";
3
+ import type { PermissionEngineConfig } from "../runtime/ports/index.js";
4
4
  import type { PermissionCheckerDeps } from "../skills/permissions/hook-runner.js";
5
5
  export type RuntimePermissionChecker = PermissionChecker;
6
6
  export type RuntimePermissionRuleEngine = PermissionRuleEngine;
7
- export declare function parseRuntimePermissionConfig(raw: unknown): PermissionConfig;
7
+ export declare function parseRuntimePermissionConfig(raw: unknown): PermissionEngineConfig;
8
8
  export declare function createRuntimePermissionRuleEngine(raw: unknown): PermissionRuleEngine;
9
9
  export declare function createRuntimePermissionChecker(deps: PermissionCheckerDeps): PermissionChecker;
@@ -1,2 +1 @@
1
- import type { PermissionUpdate } from "../runtime/ports/index.js";
2
- export declare function persistPermissionUpdateToSettings(update: PermissionUpdate, settingsPath?: string): void;
1
+ export declare function persistPermissionUpdateToSettings(_update: unknown, _settingsPath?: string): void;
@@ -12,3 +12,4 @@ export interface PluginBootstrapDeps {
12
12
  }
13
13
  export declare const pluginToolRegistrationModule: import("../runtime/ports/tool-contracts.js").ToolRegistrationModule<PluginBootstrapDeps>;
14
14
  export declare function configurePluginBootstrap(deps: PluginBootstrapDeps): void;
15
+ export declare function resolvePluginDirsFromConfig(config: Record<string, unknown>, pathService: PathService): string[];
@@ -1,6 +1,8 @@
1
1
  import type { TurnEvent, TurnRequest } from "../agent/types.js";
2
2
  import type { HookRegistry } from "../contracts/hooks.js";
3
3
  import type { ToolCatalog } from "../runtime/ports/index.js";
4
+ import { type CommunitySignalReporter } from "../runtime/community/community-signal-reporter.js";
5
+ import { type SkillSandbox } from "../runtime/sandbox/skill-sandbox.js";
4
6
  import { type SkillLifecycleRecord } from "../skills/skill-system/skill-lifecycle.js";
5
7
  export interface SkillSubturnAgent {
6
8
  run(request: TurnRequest, signal?: AbortSignal): AsyncGenerator<TurnEvent>;
@@ -17,6 +19,8 @@ export interface ExecuteSkillSubturnParams {
17
19
  skillContent: string;
18
20
  userArgs?: string;
19
21
  signal?: AbortSignal;
22
+ communitySignalReporter?: CommunitySignalReporter | null;
23
+ skillSandbox?: SkillSandbox | null;
20
24
  }
21
25
  export declare function executeSkillSubturn(params: ExecuteSkillSubturnParams): Promise<string>;
22
26
  export declare function resolveSkillSubagentTypeForLifecycle(skillName: string, record: SkillLifecycleRecord | undefined): string;
@@ -1,7 +1,7 @@
1
- import type { PermissionBehavior, PermissionConfig, PermissionMode, PermissionRuleEntry } from "../runtime/ports/index.js";
1
+ import type { PermissionBehavior, PermissionEngineConfig, PermissionMode, PermissionRuleEntry } from "../runtime/ports/index.js";
2
2
  export interface TurnPermissionRuleEngine {
3
3
  setMode(mode: PermissionMode): void;
4
4
  replaceRules(rules: PermissionRuleEntry[]): void;
5
5
  setDefaultBehavior(behavior: PermissionBehavior): void;
6
6
  }
7
- export declare function syncTurnPermissionConfig(ruleEngine: TurnPermissionRuleEngine, rawPermissions: unknown): PermissionConfig;
7
+ export declare function syncTurnPermissionConfig(ruleEngine: TurnPermissionRuleEngine, rawPermissions: unknown): PermissionEngineConfig;
@@ -1,2 +1,2 @@
1
1
  export { PERMISSION_MODES, } from "./runtime/ports/permission-contracts.js";
2
- export type { ApprovalRequest, ApprovalResponse, PermissionAllowResult, PermissionApprovalResolver, PermissionAskResult, PermissionBehavior, PermissionConfig, PermissionDecisionReason, PermissionDenyResult, PermissionMetadataResolver, PermissionMode, PermissionResult, PermissionRuleEnginePort, PermissionRuleEntry, PermissionUpdate, ToolPermissionCheckInput, } from "./runtime/ports/permission-contracts.js";
2
+ export type { ApprovalRequest, ApprovalResponse, PermissionAllowResult, PermissionApprovalResolver, PermissionAskResult, PermissionBehavior, PermissionConfig, PermissionDecisionReason, PermissionDenyResult, PermissionMetadataResolver, PermissionMode, PermissionResult, PermissionRuleEnginePort, PermissionRuleEntry, ToolPermissionCheckInput, } from "./runtime/ports/permission-contracts.js";
@@ -445,6 +445,24 @@ export interface CommunityPublishSkillResult {
445
445
  resource: CommunitySharedResource;
446
446
  version?: CommunityPublishedVersion;
447
447
  }
448
+ export interface CommunityPublishPetParams {
449
+ id: string;
450
+ name: string;
451
+ summary: string;
452
+ persona: string;
453
+ visibility?: "public" | "private";
454
+ tags?: string[];
455
+ traits?: string[];
456
+ assets?: Array<{
457
+ kind: string;
458
+ path: string;
459
+ }>;
460
+ }
461
+ export interface CommunityPublishPetResult {
462
+ ok: boolean;
463
+ resource: CommunitySharedResource;
464
+ version?: CommunityPublishedVersion;
465
+ }
448
466
  export type CommunitySignalEvent = "installed" | "success" | "fail" | "neutral" | "kept" | "uninstalled" | "endorse" | "error";
449
467
  export interface CommunityRecordSignalParams {
450
468
  resourceId: string;
@@ -523,9 +541,33 @@ export interface CommunityInstalledResource {
523
541
  installDir: string;
524
542
  checksum: string;
525
543
  }
544
+ export type CommunityInstallResourcePreview = {
545
+ kind: "mcp";
546
+ mode: "preview";
547
+ resourceId: string;
548
+ version: string;
549
+ sourceTier: CommunityInstallSourceTier;
550
+ perUseConsentRequired: true;
551
+ declaredPermissions: string[];
552
+ manifest: unknown;
553
+ } | {
554
+ kind: "executable";
555
+ mode: "launcher-required" | "manual-review-required";
556
+ resourceId: string;
557
+ version: string;
558
+ resourceType: string;
559
+ sourceTier: CommunityInstallSourceTier;
560
+ riskTier: CommunityInstallRiskTier;
561
+ artifactDigest: string;
562
+ launcherRequired: true;
563
+ manualReviewRequired: boolean;
564
+ autoRunBlocked: true;
565
+ manifest: unknown;
566
+ };
526
567
  export interface CommunityInstallResourceResult {
527
568
  ok: boolean;
528
- installed: CommunityInstalledResource;
569
+ installed?: CommunityInstalledResource;
570
+ preview?: CommunityInstallResourcePreview;
529
571
  signalWarning?: string;
530
572
  }
531
573
  export interface TodosListParams {
@@ -564,12 +606,6 @@ export interface ToolApprovalResponseParams {
564
606
  decision: "allow" | "deny";
565
607
  toolName?: string;
566
608
  updatedInput?: Record<string, unknown>;
567
- permissionUpdate?: {
568
- pattern: string;
569
- behavior: "allow" | "ask" | "deny";
570
- scope?: "session" | "persistent";
571
- description?: string;
572
- };
573
609
  }
574
610
  export interface MemorySearchParams {
575
611
  query: string;
@@ -791,6 +827,10 @@ export interface RpcMethodMap {
791
827
  params: CommunityPublishSkillParams;
792
828
  result: CommunityPublishSkillResult;
793
829
  };
830
+ "community.publishPet": {
831
+ params: CommunityPublishPetParams;
832
+ result: CommunityPublishPetResult;
833
+ };
794
834
  "community.recordSignal": {
795
835
  params: CommunityRecordSignalParams;
796
836
  result: CommunityRecordSignalResult;
@@ -103,13 +103,6 @@ export interface ToolApprovalResponseParams {
103
103
  toolName?: string;
104
104
  /** Optional corrected tool input after user review. */
105
105
  updatedInput?: Record<string, unknown>;
106
- /** Optional rule update to save after an allow decision. Scope is metadata, not a decision value. */
107
- permissionUpdate?: {
108
- pattern: string;
109
- behavior: "allow" | "ask" | "deny";
110
- scope?: "session" | "persistent";
111
- description?: string;
112
- };
113
106
  }
114
107
  /** Well-known method names for the approval protocol. */
115
108
  export declare const AGENT_RPC_APPROVAL_METHODS: {
@@ -75,6 +75,54 @@ export interface MemoryConsolidationResult {
75
75
  claimIds?: string[];
76
76
  conflictIds?: string[];
77
77
  }
78
+ export interface AssistantPromptTemplateWire {
79
+ id: string;
80
+ title: string;
81
+ titleI18n?: Record<string, string>;
82
+ description?: string;
83
+ descriptionI18n?: Record<string, string>;
84
+ prompt: string;
85
+ promptI18n?: Record<string, string>;
86
+ icon?: string;
87
+ }
88
+ export interface AssistantPresetWire {
89
+ kind: "assistant-preset";
90
+ id: string;
91
+ source: "builtin" | "user" | "plugin";
92
+ name: string;
93
+ nameI18n?: Record<string, string>;
94
+ description?: string;
95
+ descriptionI18n?: Record<string, string>;
96
+ avatar?: string;
97
+ enabled: boolean;
98
+ sortOrder: number;
99
+ enabledSkills: string[];
100
+ disabledBuiltinSkills: string[];
101
+ context?: string;
102
+ prompts: AssistantPromptTemplateWire[];
103
+ modelHints: string[];
104
+ pluginId?: string;
105
+ readonly?: boolean;
106
+ }
107
+ export interface PluginAssistantDiagnosticWire {
108
+ pluginId: string;
109
+ manifestPath?: string;
110
+ severity: "error" | "warning";
111
+ message: string;
112
+ assistantId?: string;
113
+ }
114
+ export interface AssistantRuntimeContextWire {
115
+ assistantId: string;
116
+ context?: string;
117
+ enabledSkillNames: string[];
118
+ disabledBuiltinSkillNames: string[];
119
+ modelHints: string[];
120
+ prompts: AssistantPromptTemplateWire[];
121
+ }
122
+ export type AssistantPresetInputWire = Partial<AssistantPresetWire> & {
123
+ name: string;
124
+ prompts: AssistantPromptTemplateWire[];
125
+ };
78
126
  export interface GatewayRpcMethodMap {
79
127
  "agent.health": {
80
128
  params: {};
@@ -455,6 +503,70 @@ export interface GatewayRpcMethodMap {
455
503
  }>;
456
504
  };
457
505
  };
506
+ "assistants.list": {
507
+ params: {};
508
+ result: {
509
+ assistants: AssistantPresetWire[];
510
+ diagnostics?: PluginAssistantDiagnosticWire[];
511
+ };
512
+ };
513
+ "assistants.resolve": {
514
+ params: {
515
+ assistantId: string;
516
+ };
517
+ result: AssistantRuntimeContextWire;
518
+ };
519
+ "assistants.cloneBuiltin": {
520
+ params: {
521
+ assistantId: string;
522
+ };
523
+ result: {
524
+ assistant: AssistantPresetWire;
525
+ };
526
+ };
527
+ "assistants.upsert": {
528
+ params: {
529
+ assistant: AssistantPresetInputWire;
530
+ };
531
+ result: {
532
+ assistant: AssistantPresetWire;
533
+ };
534
+ };
535
+ "assistants.create": {
536
+ params: {
537
+ assistant: AssistantPresetInputWire;
538
+ };
539
+ result: {
540
+ assistant: AssistantPresetWire;
541
+ };
542
+ };
543
+ "assistants.update": {
544
+ params: {
545
+ assistant: AssistantPresetInputWire;
546
+ };
547
+ result: {
548
+ assistant: AssistantPresetWire;
549
+ };
550
+ };
551
+ "assistants.delete": {
552
+ params: {
553
+ assistantId: string;
554
+ };
555
+ result: {
556
+ ok: boolean;
557
+ };
558
+ };
559
+ "assistants.setState": {
560
+ params: {
561
+ assistantId: string;
562
+ enabled?: boolean;
563
+ sortOrder?: number;
564
+ modelHints?: string[];
565
+ };
566
+ result: {
567
+ assistant: AssistantPresetWire;
568
+ };
569
+ };
458
570
  "memory.list-files": {
459
571
  params: {
460
572
  projectId?: string;
@@ -18,6 +18,7 @@ export interface CommunityConsentClient {
18
18
  setConsent(input: SetCommunityConsentInput): Promise<CommunityConsentView>;
19
19
  matchRegistry(input: CommunityRegistryMatchInput): Promise<CommunityRegistryMatchResult[]>;
20
20
  publishSkill(input: CommunityPublishSkillInput): Promise<CommunityPublishSkillResult>;
21
+ publishPet(input: CommunityPublishSkillInput): Promise<CommunityPublishSkillResult>;
21
22
  recordSignal(input: CommunityRecordSignalInput): Promise<CommunityRecordSignalResult>;
22
23
  recordTelemetry(input: CommunityRecordTelemetryInput): Promise<CommunityRecordTelemetryResult>;
23
24
  resolveInstall(resourceId: string, version?: string): Promise<CommunityInstallResolution>;